Assembly Diffs
linux arm64
Diffs are based on 1,536,730 contexts (368,644 MinOpts, 1,168,086 FullOpts).
MISSED contexts: base: 316 (0.02%), diff: 76,964 (4.77%)
Overall (+1,183,860 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
10,759,020 |
+80,844 |
benchmarks.run_pgo.linux.arm64.checked.mch |
63,686,268 |
-21,392 |
benchmarks.run_tiered.linux.arm64.checked.mch |
19,798,224 |
+33,608 |
coreclr_tests.run.linux.arm64.checked.mch |
295,682,080 |
+13,688 |
libraries.crossgen2.linux.arm64.checked.mch |
54,686,356 |
+183,380 |
libraries.pmi.linux.arm64.checked.mch |
61,288,276 |
+311,268 |
libraries_tests.run.linux.arm64.Release.mch |
37,104,084 |
+40,840 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
126,685,772 |
+433,340 |
realworld.run.linux.arm64.checked.mch |
12,403,860 |
+93,016 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
2,535,652 |
+15,268 |
MinOpts (-16 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.arm64.checked.mch |
21,282,624 |
-8 |
benchmarks.run_tiered.linux.arm64.checked.mch |
15,778,624 |
-8 |
coreclr_tests.run.linux.arm64.checked.mch |
160,793,764 |
+0 |
libraries.pmi.linux.arm64.checked.mch |
119,984 |
+0 |
libraries_tests.run.linux.arm64.Release.mch |
23,895,476 |
+0 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
13,402,832 |
+0 |
FullOpts (+1,183,876 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
10,625,704 |
+80,844 |
benchmarks.run_pgo.linux.arm64.checked.mch |
42,403,644 |
-21,384 |
benchmarks.run_tiered.linux.arm64.checked.mch |
4,019,600 |
+33,616 |
coreclr_tests.run.linux.arm64.checked.mch |
134,888,316 |
+13,688 |
libraries.crossgen2.linux.arm64.checked.mch |
54,684,720 |
+183,380 |
libraries.pmi.linux.arm64.checked.mch |
61,168,292 |
+311,268 |
libraries_tests.run.linux.arm64.Release.mch |
13,208,608 |
+40,840 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
113,282,940 |
+433,340 |
realworld.run.linux.arm64.checked.mch |
11,821,656 |
+93,016 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
2,534,664 |
+15,268 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
-48 (-21.05%) : 25037.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:ClearRevocationUnknown():this (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 48 single block inlinees; 9 inlinees without PGO data
+; 0 inlinees with PGO data; 50 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 6 ) byref -> x19 this single-def
+; V00 this [V00,T01] ( 5, 5 ) byref -> x0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Interop+Crypto+X509VerifyStatusCode>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Interop+Crypto+X509VerifyStatusCode>
@@ -21,158 +23,140 @@
;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Interop+Crypto+X509VerifyStatusCode>
;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Interop+Crypto+X509VerifyStatusCode>
;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V13 tmp12 [V13,T14] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V13 tmp12 [V13,T13] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V15 tmp14 [V15,T02] ( 3, 6 ) byref -> x0 single-def "dup spill"
+; V15 tmp14 [V15,T02] ( 3, 6 ) byref -> x2 single-def "dup spill"
;* V16 tmp15 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V19 tmp18 [V19,T15] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V19 tmp18 [V19,T14] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V21 tmp20 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V22 tmp21 [V22,T16] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V22 tmp21 [V22,T15] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp23 [V24,T03] ( 3, 6 ) byref -> x0 single-def "dup spill"
+; V24 tmp23 [V24,T03] ( 3, 6 ) byref -> x2 single-def "dup spill"
;* V25 tmp24 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V27 tmp26 [V27 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V28 tmp27 [V28,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V28 tmp27 [V28,T16] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp29 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V31 tmp30 [V31,T18] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V31 tmp30 [V31,T17] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V33 tmp32 [V33,T04] ( 3, 6 ) byref -> x0 single-def "dup spill"
+; V33 tmp32 [V33,T04] ( 3, 6 ) byref -> x2 single-def "dup spill"
;* V34 tmp33 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V37 tmp36 [V37,T19] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V37 tmp36 [V37,T18] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V38 tmp37 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V39 tmp38 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V40 tmp39 [V40,T20] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V40 tmp39 [V40,T19] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V42 tmp41 [V42,T05] ( 3, 6 ) byref -> x0 single-def "dup spill"
+; V42 tmp41 [V42,T05] ( 3, 6 ) byref -> x2 single-def "dup spill"
;* V43 tmp42 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V46 tmp45 [V46,T21] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V46 tmp45 [V46,T20] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V47 tmp46 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V48 tmp47 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V49 tmp48 [V49,T22] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V49 tmp48 [V49,T21] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V50 tmp49 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V51 tmp50 [V51,T06] ( 3, 6 ) byref -> x0 single-def "dup spill"
+; V51 tmp50 [V51,T06] ( 3, 6 ) byref -> x2 single-def "dup spill"
;* V52 tmp51 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V53 tmp52 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp53 [V54 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V55 tmp54 [V55,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V55 tmp54 [V55,T22] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V58 tmp57 [V58,T24] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V58 tmp57 [V58,T23] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V59 tmp58 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V60 tmp59 [V60,T07] ( 3, 6 ) byref -> x2 single-def "dup spill"
;* V61 tmp60 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V62 tmp61 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V63 tmp62 [V63 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V64 tmp63 [V64,T25] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V64 tmp63 [V64,T24] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V65 tmp64 [V65 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V66 tmp65 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V67 tmp66 [V67,T26] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V67 tmp66 [V67,T25] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V68 tmp67 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V69 tmp68 [V69,T08] ( 3, 6 ) byref -> x2 single-def "dup spill"
;* V70 tmp69 [V70 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V71 tmp70 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V72 tmp71 [V72 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V73 tmp72 [V73,T27] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V73 tmp72 [V73,T26] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V74 tmp73 [V74 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V75 tmp74 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V76 tmp75 [V76,T28] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V76 tmp75 [V76,T27] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V77 tmp76 [V77 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V78 tmp77 [V78,T09] ( 3, 6 ) byref -> x1 single-def "dup spill"
;* V79 tmp78 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V80 tmp79 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V81 tmp80 [V81 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V82 tmp81 [V82,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V82 tmp81 [V82,T28] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V83 tmp82 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V84 tmp83 [V84 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V85 tmp84 [V85,T30] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V85 tmp84 [V85,T29] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V86 tmp85 [V86 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V87 tmp86 [V87,T10] ( 3, 6 ) byref -> x0 single-def "dup spill"
+; V87 tmp86 [V87,T10] ( 3, 6 ) byref -> x1 single-def "dup spill"
;* V88 tmp87 [V88 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V89 tmp88 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V90 tmp89 [V90 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V91 tmp90 [V91,T31] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V91 tmp90 [V91,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V92 tmp91 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V93 tmp92 [V93 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-; V94 tmp93 [V94 ] ( 2, 2 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V95 tmp94 [V95,T13] ( 2, 2 ) int -> x0 "Inline stloc first use temp"
+;* V94 tmp93 [V94,T31] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V95 tmp94 [V95 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V96 tmp95 [V96,T11] ( 3, 6 ) byref -> x0 single-def "dup spill"
-;* V97 tmp96 [V97 ] ( 0, 0 ) int -> zero-ref "field V02.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V98 tmp97 [V98 ] ( 0, 0 ) int -> zero-ref "field V03.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V99 tmp98 [V99 ] ( 0, 0 ) int -> zero-ref "field V04.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V100 tmp99 [V100 ] ( 0, 0 ) int -> zero-ref "field V05.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V101 tmp100 [V101 ] ( 0, 0 ) int -> zero-ref "field V06.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V102 tmp101 [V102 ] ( 0, 0 ) int -> zero-ref "field V07.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V103 tmp102 [V103 ] ( 0, 0 ) int -> zero-ref "field V08.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V104 tmp103 [V104 ] ( 0, 0 ) int -> zero-ref "field V09.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V105 tmp104 [V105 ] ( 0, 0 ) int -> zero-ref "field V10.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V106 tmp105 [V106 ] ( 0, 0 ) int -> zero-ref "field V11.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V107 tmp106 [V107 ] ( 0, 0 ) int -> zero-ref "field V12.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V108 tmp107 [V108 ] ( 0, 0 ) int -> zero-ref "field V16.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V109 tmp108 [V109 ] ( 0, 0 ) int -> zero-ref "field V21.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V110 tmp109 [V110 ] ( 0, 0 ) int -> zero-ref "field V25.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V111 tmp110 [V111 ] ( 0, 0 ) int -> zero-ref "field V30.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V112 tmp111 [V112 ] ( 0, 0 ) int -> zero-ref "field V34.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V113 tmp112 [V113 ] ( 0, 0 ) int -> zero-ref "field V39.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V114 tmp113 [V114 ] ( 0, 0 ) int -> zero-ref "field V43.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V115 tmp114 [V115 ] ( 0, 0 ) int -> zero-ref "field V48.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V116 tmp115 [V116 ] ( 0, 0 ) int -> zero-ref "field V52.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V117 tmp116 [V117 ] ( 0, 0 ) int -> zero-ref "field V57.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V118 tmp117 [V118 ] ( 0, 0 ) int -> zero-ref "field V61.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V119 tmp118 [V119 ] ( 0, 0 ) int -> zero-ref "field V66.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V120 tmp119 [V120 ] ( 0, 0 ) int -> zero-ref "field V70.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V121 tmp120 [V121 ] ( 0, 0 ) int -> zero-ref "field V75.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V122 tmp121 [V122 ] ( 0, 0 ) int -> zero-ref "field V79.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V123 tmp122 [V123 ] ( 0, 0 ) int -> zero-ref "field V84.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V124 tmp123 [V124 ] ( 0, 0 ) int -> zero-ref "field V88.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V125 tmp124 [V125,T32] ( 0, 0 ) int -> zero-ref "field V93.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-; V126 cse0 [V126,T00] ( 8, 8 ) byref -> x1 "CSE - aggressive"
-; V127 cse1 [V127,T12] ( 3, 3 ) byref -> x0 "CSE - aggressive"
+;* V97 tmp96 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
+;* V98 tmp97 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V99 tmp98 [V99 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V100 tmp99 [V100,T32] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V101 tmp100 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V102 tmp101 [V102 ] ( 0, 0 ) int -> zero-ref "field V02.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V103 tmp102 [V103 ] ( 0, 0 ) int -> zero-ref "field V03.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V104 tmp103 [V104 ] ( 0, 0 ) int -> zero-ref "field V04.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V105 tmp104 [V105 ] ( 0, 0 ) int -> zero-ref "field V05.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V106 tmp105 [V106 ] ( 0, 0 ) int -> zero-ref "field V06.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V107 tmp106 [V107 ] ( 0, 0 ) int -> zero-ref "field V07.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V108 tmp107 [V108 ] ( 0, 0 ) int -> zero-ref "field V08.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V109 tmp108 [V109 ] ( 0, 0 ) int -> zero-ref "field V09.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V110 tmp109 [V110 ] ( 0, 0 ) int -> zero-ref "field V10.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V111 tmp110 [V111 ] ( 0, 0 ) int -> zero-ref "field V11.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V112 tmp111 [V112 ] ( 0, 0 ) int -> zero-ref "field V12.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V113 tmp112 [V113 ] ( 0, 0 ) int -> zero-ref "field V16.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V114 tmp113 [V114 ] ( 0, 0 ) int -> zero-ref "field V21.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V115 tmp114 [V115 ] ( 0, 0 ) int -> zero-ref "field V25.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V116 tmp115 [V116 ] ( 0, 0 ) int -> zero-ref "field V30.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V117 tmp116 [V117 ] ( 0, 0 ) int -> zero-ref "field V34.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V118 tmp117 [V118 ] ( 0, 0 ) int -> zero-ref "field V39.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V119 tmp118 [V119 ] ( 0, 0 ) int -> zero-ref "field V43.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V120 tmp119 [V120 ] ( 0, 0 ) int -> zero-ref "field V48.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V121 tmp120 [V121 ] ( 0, 0 ) int -> zero-ref "field V52.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V122 tmp121 [V122 ] ( 0, 0 ) int -> zero-ref "field V57.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V123 tmp122 [V123 ] ( 0, 0 ) int -> zero-ref "field V61.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V124 tmp123 [V124 ] ( 0, 0 ) int -> zero-ref "field V66.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V125 tmp124 [V125 ] ( 0, 0 ) int -> zero-ref "field V70.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V126 tmp125 [V126 ] ( 0, 0 ) int -> zero-ref "field V75.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V127 tmp126 [V127 ] ( 0, 0 ) int -> zero-ref "field V79.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V128 tmp127 [V128 ] ( 0, 0 ) int -> zero-ref "field V84.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V129 tmp128 [V129 ] ( 0, 0 ) int -> zero-ref "field V88.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V130 tmp129 [V130 ] ( 0, 0 ) int -> zero-ref "field V93.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V131 tmp130 [V131 ] ( 0, 0 ) int -> zero-ref "field V97.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+; V132 cse0 [V132,T00] ( 8, 8 ) byref -> x1 "CSE - aggressive"
+; V133 cse1 [V133,T12] ( 4, 4 ) byref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46425_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x0
- ; byrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M46425_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
- ldrsb wzr, [x19]
- mov x1, x19
- ; byrRegs +[x1]
- mov x0, x1
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M46425_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
- ldr w2, [x0]
- and w2, w2, #0xD1FFAB1E
- str w2, [x0]
- mov x0, x1
- ldr w2, [x0]
- and w2, w2, #0xD1FFAB1E
- str w2, [x0]
- mov x0, x1
- ldr w2, [x0]
- and w2, w2, #0xD1FFAB1E
- str w2, [x0]
- mov x0, x1
- ldr w2, [x0]
- and w2, w2, #0xD1FFAB1E
- str w2, [x0]
- mov x0, x1
- ldr w2, [x0]
- and w2, w2, #0xD1FFAB1E
- str w2, [x0]
- add x0, x19, #4
- mov x2, x0
+ ldrsb wzr, [x0]
+ mov x1, x0
+ ; byrRegs +[x1]
+ mov x2, x1
; byrRegs +[x2]
ldr w3, [x2]
and w3, w3, #0xD1FFAB1E
@@ -181,48 +165,57 @@ G_M46425_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
ldr w3, [x2]
...
-32 (-15.38%) : 23922.dasm - System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
@@ -2,20 +2,22 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Formats.Cbor.Tests.Perf_CborReader>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Formats.Cbor.Tests.ECDsaCosePublicKey>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Formats.Cbor.CborReader>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 10, 20 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborReader>
+; V04 tmp1 [V04,T00] ( 10, 20 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborReader>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
; V06 tmp3 [V06,T05] ( 1, 2 ) struct (144) [fp+0x18] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[System.Security.Cryptography.ECParameters,System.Nullable`1[System.Security.Cryptography.HashAlgorithmName]]>
-; V07 tmp4 [V07,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V07 tmp4 [V07,T02] ( 3, 4.96) ref -> x19 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
@@ -24,7 +26,7 @@
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._object (fldOffset=0x0)" P-INDEP
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref single-def "field V05._index (fldOffset=0x8)" P-INDEP
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0xc)" P-INDEP
-; V16 tmp13 [V16,T03] ( 4, 2.50) ref -> x20 "field V08._object (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T03] ( 4, 2.48) ref -> x20 "field V08._object (fldOffset=0x0)" P-INDEP
;* V17 tmp14 [V17,T06] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
; V18 tmp15 [V18,T04] ( 3, 2 ) int -> x21 "field V08._length (fldOffset=0xc)" P-INDEP
;* V19 tmp16 [V19,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
@@ -51,71 +53,59 @@ G_M26905_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
; gcrRegs +[x1]
ldr x19, [x1, #0x10]
; gcrRegs +[x19]
- cbnz x19, G_M26905_IG04
+ cbnz x19, G_M26905_IG06
;; size=8 bbWeight=1 PerfScore 4.00
-G_M26905_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26905_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x19]
mov x20, xzr
; gcrRegs +[x20]
mov w21, wzr
- b G_M26905_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M26905_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20] +[x19]
- mov x20, x19
- ; gcrRegs +[x20]
- ldr w21, [x20, #0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M26905_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M26905_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w0, #1
- ; gcrRegs -[x0]
- strb w0, [x19, #0x45]
- mov w0, #3
- movz x1, #0xD1FFAB1E // code for System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- add x14, x19, #72
+ mov w14, #1
+ strb w14, [x0, #0x45]
+ add x14, x0, #72
; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
- stp wzr, w21, [x19, #0x50]
+ stp wzr, w21, [x0, #0x50]
mov w8, #3
- str w8, [x19, #0x40]
- strb wzr, [x19, #0x46]
+ str w8, [x0, #0x40]
+ strb wzr, [x0, #0x46]
mov w8, #1
- strb w8, [x19, #0x5C]
- str w8, [x19, #0x60]
+ strb w8, [x0, #0x5C]
+ str w8, [x0, #0x60]
add x8, fp, #24 // [V06 tmp3]
- mov x0, x19
- ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x0 x19]
- ;; size=120 bbWeight=1 PerfScore 25.00
-G_M26905_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[x0]
+ ;; size=88 bbWeight=1 PerfScore 18.00
+G_M26905_IG05: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0xB8]
ldp x19, x20, [sp, #0xA8]
ldp fp, lr, [sp], #0xC0
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
+G_M26905_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ ldr w21, [x20, #0x08]
+ b G_M26905_IG04
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
-; Total bytes of code 208, prolog size 44, PerfScore 46.25, instruction count 52, allocated bytes for code 208 (MethodHash=d59396e6) for method System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
+; Total bytes of code 176, prolog size 44, PerfScore 39.18, instruction count 44, allocated bytes for code 176 (MethodHash=d59396e6) for method System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
; ============================================================
Unwind Info:
@@ -126,7 +116,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-15.00%) : 7086.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.Canon,System.Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
@@ -2,67 +2,73 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 7, 7 ) ref -> x19 this class-hnd single-def <ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T03] ( 3, 3 ) int -> x1 single-def
-; V02 arg2 [V02,T04] ( 3, 3 ) int -> x2 single-def
-; V03 arg3 [V03,T05] ( 3, 3 ) int -> x3 single-def
-; V04 arg4 [V04,T01] ( 4, 4 ) int -> x20 single-def
-; V05 arg5 [V05,T02] ( 3, 3 ) ref -> x5 class-hnd single-def <ProtoBuf.Serializers.RepeatedSerializerStub>
+; V00 this [V00,T00] ( 7, 7 ) ref -> x0 this class-hnd single-def <ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T04] ( 3, 3 ) int -> x1 single-def
+; V02 arg2 [V02,T05] ( 3, 3 ) int -> x2 single-def
+; V03 arg3 [V03,T02] ( 4, 3.20) int -> x3 single-def
+; V04 arg4 [V04,T01] ( 4, 3.80) int -> x4 single-def
+; V05 arg5 [V05,T03] ( 3, 3 ) ref -> x5 class-hnd single-def <ProtoBuf.Serializers.RepeatedSerializerStub>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V07 tmp1 [V07,T06] ( 3, 2 ) int -> x1 "Inline return value spill temp"
+; V08 tmp2 [V08,T07] ( 2, 1.60) int -> x1 "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M3147_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x0
- ; gcrRegs +[x19]
- mov w20, w4
- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M3147_IG02: ; bbWeight=1, gcrefRegs=80020 {x5 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x5]
- add x14, x19, #8
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M3147_IG02: ; bbWeight=1, gcrefRegs=0021 {x0 x5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0 x5]
+ add x14, x0, #8
; byrRegs +[x14]
mov x15, x5
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x5 x15]
; byrRegs -[x14]
- stp w1, w2, [x19, #0x10]
- mov w0, w3
- mov w1, w20
- movz x2, #0xD1FFAB1E // code for ProtoBuf.Meta.ValueMember:GetEffectiveCompatibilityLevel(int,int):int
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- stp w0, w20, [x19, #0x18]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M3147_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ stp w1, w2, [x0, #0x10]
+ cmp w3, #200
+ bgt G_M3147_IG06
+ ;; size=24 bbWeight=1 PerfScore 4.50
+G_M3147_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ mov w3, #200
+ mov w1, #240
+ cmp w4, #5
+ csel w1, w3, w1, ne
+ ;; size=16 bbWeight=0.80 PerfScore 1.60
+G_M3147_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ stp w1, w4, [x0, #0x18]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M3147_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M3147_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ sxtw w1, w3
+ b G_M3147_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.30
-; Total bytes of code 80, prolog size 12, PerfScore 17.00, instruction count 20, allocated bytes for code 80 (MethodHash=15a2f3b4) for method ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 10.90, instruction count 17, allocated bytes for code 68 (MethodHash=15a2f3b4) for method ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):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 : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -70,10 +76,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+44 (+22.00%) : 12823.dasm - SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
@@ -2,48 +2,58 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T01] ( 4, 7 ) int -> x19 single-def
+; V00 arg0 [V00,T02] ( 4, 75.00) int -> x19 single-def
; V01 arg1 [V01,T04] ( 3, 3 ) int -> x20 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) float -> zero-ref single-def
;* V03 loc1 [V03 ] ( 0, 0 ) float -> zero-ref single-def
;* V04 loc2 [V04 ] ( 0, 0 ) float -> zero-ref single-def
-;* V05 loc3 [V05,T07] ( 0, 0 ) float -> zero-ref single-def
-;* V06 loc4 [V06,T08] ( 0, 0 ) float -> zero-ref single-def
-;* V07 loc5 [V07,T09] ( 0, 0 ) float -> zero-ref single-def
-;* V08 loc6 [V08,T10] ( 0, 0 ) float -> zero-ref single-def
-;* V09 loc7 [V09,T11] ( 0, 0 ) float -> zero-ref single-def
-; V10 loc8 [V10,T02] ( 3, 9 ) ref -> x20 class-hnd exact single-def <Algorithms.FractalRenderer+Render>
-; V11 loc9 [V11,T00] ( 4, 13 ) int -> x21
+; V05 loc3 [V05,T07] ( 2, 73.00) float -> d8 single-def
+; V06 loc4 [V06,T08] ( 2, 73.00) float -> d9 single-def
+; V07 loc5 [V07,T09] ( 2, 73.00) float -> d10 single-def
+; V08 loc6 [V08,T10] ( 2, 73.00) float -> d11 single-def
+; V09 loc7 [V09,T11] ( 2, 73.00) float -> d12 single-def
+; V10 loc8 [V10,T01] ( 3,145.00) ref -> x20 class-hnd exact single-def <Algorithms.FractalRenderer+Render>
+; V11 loc9 [V11,T00] ( 4,217.00) int -> x21
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T05] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Action`3[int,int,int]>
-; V14 tmp2 [V14,T06] ( 4, 3.50) ref -> x0
-; V15 tmp3 [V15,T03] ( 6, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Action`3[int,int,int]>
+; V14 tmp2 [V14,T06] ( 4, 3.52) ref -> x0
+; V15 tmp3 [V15,T03] ( 6, 6.24) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Action`3[int,int,int]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M35314_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x50]!
+ stp d8, d9, [sp, #0x10]
+ stp d10, d11, [sp, #0x20]
+ str d12, [sp, #0x30]
+ stp x19, x20, [sp, #0x38]
+ str x21, [sp, #0x48]
mov fp, sp
mov w19, w0
mov w20, w1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M35314_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr s8, [@RWD00]
+ ldr s9, [@RWD04]
+ ldr s10, [@RWD08]
+ ldr s11, [@RWD12]
+ ldr s12, [@RWD16]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
cbnz x0, G_M35314_IG04
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M35314_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -57,7 +67,7 @@ G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr q16, [@RWD00]
+ ldr q16, [@RWD32]
str q16, [x0, #0x18]
movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x14, #0xD1FFAB1E LSL #16
@@ -66,7 +76,7 @@ G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=56 bbWeight=0.50 PerfScore 5.25
+ ;; size=56 bbWeight=0.52 PerfScore 5.46
G_M35314_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w1, w20
movz x2, #0xD1FFAB1E // code for SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render
@@ -80,13 +90,13 @@ G_M35314_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cmp w19, #0
ble G_M35314_IG06
;; size=40 bbWeight=1 PerfScore 8.50
-G_M35314_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M35314_IG05: ; bbWeight=72.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr s0, [@RWD16]
- ldr s1, [@RWD20]
- ldr s2, [@RWD24]
- ldr s3, [@RWD28]
- ldr s4, [@RWD32]
+ fmov s0, s8
+ fmov s1, s9
+ fmov s2, s10
+ fmov s3, s11
+ fmov s4, s12
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
ldr x1, [x20, #0x18]
@@ -95,34 +105,38 @@ G_M35314_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
add w21, w21, #1
cmp w21, w19
blt G_M35314_IG05
- ;; size=44 bbWeight=4 PerfScore 76.00
+ ;; size=44 bbWeight=72.00 PerfScore 828.00
G_M35314_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x20]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldr x21, [sp, #0x48]
+ ldp x19, x20, [sp, #0x38]
+ ldr d12, [sp, #0x30]
+ ldp d10, d11, [sp, #0x20]
+ ldp d8, d9, [sp, #0x10]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-RWD00 dq 0000FFFF672DD7A8h, 0000FFFF697531C8h
-RWD16 dd BF9FDF3Ch ; -1.249
-RWD20 dd BF9F9DB2h ; -1.247
-RWD24 dd BD185F07h ; -0.0372
-RWD28 dd BD102DE1h ; -0.0352
-RWD32 dd 3727C5ADh ; 1e-05
+ ;; size=28 bbWeight=1 PerfScore 9.00
+RWD00 dd BF9FDF3Ch ; -1.249
+RWD04 dd BF9F9DB2h ; -1.247
+RWD08 dd BD185F07h ; -0.0372
+RWD12 dd BD102DE1h ; -0.0352
+RWD16 dd 3727C5ADh ; 1e-05
+RWD20 dd 00000000h, 00000000h, 00000000h
+RWD32 dq 0000FFFF672DD7A8h, 0000FFFF697531C8h
-; Total bytes of code 200, prolog size 16, PerfScore 104.75, instruction count 50, allocated bytes for code 200 (MethodHash=e9d8760d) for method SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
+; Total bytes of code 244, prolog size 28, PerfScore 873.96, instruction count 61, allocated bytes for code 244 (MethodHash=e9d8760d) for method SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -130,9 +144,11 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
+ D0 89 save_reg X#2 Z#9 (0x09); str x21, [sp, #72]
+ C8 07 save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56]
+ DD 06 save_freg X#4 Z#6 (0x06); str d12, [sp, #48]
+ E6 save_next
+ D8 02 save_fregp X#0 Z#2 (0x02); stp d8, d9, [sp, #16]
+ 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
E4 end
+28 (+28.00%) : 8667.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory
1[System.__Canon]:this (FullOpts)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T01] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02 ] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[System.__Canon]>
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V04 tmp3 [V04,T00] ( 6, 6.96) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V05 tmp4 [V05,T04] ( 2, 3 ) ref -> [fp+0x10] do-not-enreg[] single-def "field V02._object (fldOffset=0x0)" P-DEP
; V06 tmp5 [V06,T05] ( 2, 3 ) int -> [fp+0x18] do-not-enreg[] "field V02._index (fldOffset=0x8)" P-DEP
; V07 tmp6 [V07,T06] ( 2, 3 ) int -> [fp+0x1C] do-not-enreg[] "field V02._length (fldOffset=0xc)" P-DEP
-;* V08 rat0 [V08,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V08 rat0 [V08,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
@@ -32,12 +34,23 @@ G_M44448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=24 bbWeight=1 PerfScore 5.00
G_M44448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldp xzr, x0, [x19]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x28]
+ cbz x0, G_M44448_IG07
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M44448_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M44448_IG04
+ cbz x0, G_M44448_IG08
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M44448_IG04: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
cmp w1, #10
- blo G_M44448_IG04
+ blo G_M44448_IG08
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
+G_M44448_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
str x0, [fp, #0x10] // [V05 tmp4]
str wzr, [fp, #0x18] // [V06 tmp5]
mov w0, #10
@@ -45,13 +58,19 @@ G_M44448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
str w0, [fp, #0x1C] // [V07 tmp6]
ldp x0, x1, [fp, #0x10] // [V02 tmp1], [V02 tmp1+0x08]
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M44448_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=20 bbWeight=1 PerfScore 6.50
+G_M44448_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x28]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M44448_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M44448_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x0]
+ ldr x0, [x19, #0x08]
+ ; gcrRegs +[x0]
+ cbnz x0, G_M44448_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.80
+G_M44448_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
@@ -61,7 +80,7 @@ G_M44448_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 20, PerfScore 25.00, instruction count 25, allocated bytes for code 100 (MethodHash=a215525f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 128, prolog size 20, PerfScore 34.66, instruction count 32, allocated bytes for code 128 (MethodHash=a215525f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+33.33%) : 16840.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan
1[System.__Canon]:this (FullOpts)
@@ -2,22 +2,24 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T01] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]>
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V04 tmp3 [V04,T00] ( 6, 6.96) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V05 tmp4 [V05,T04] ( 2, 2 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V06 tmp5 [V06,T05] ( 2, 2 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
-;* V07 rat0 [V07,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
;* V08 rat1 [V08,T06] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,24 +32,41 @@ G_M3040_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M3040_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldp xzr, x0, [x19]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x30]
+ cbz x0, G_M3040_IG07
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M3040_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M3040_IG04
+ cbz x0, G_M3040_IG08
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M3040_IG04: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
cmp w1, #10
- blo G_M3040_IG04
+ blo G_M3040_IG08
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
+G_M3040_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
mov w1, #10
- ;; size=28 bbWeight=1 PerfScore 10.50
-G_M3040_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=8 bbWeight=1 PerfScore 1.00
+G_M3040_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M3040_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M3040_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0]
+ ldr x0, [x19, #0x08]
+ ; gcrRegs +[x0]
+ cbnz x0, G_M3040_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.80
+G_M3040_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -56,7 +75,7 @@ G_M3040_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 16, PerfScore 18.50, instruction count 21, allocated bytes for code 84 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 112, prolog size 16, PerfScore 28.16, instruction count 28, allocated bytes for code 112 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -67,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.linux.arm64.checked.mch
-20 (-14.71%) : 22137.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,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; fully 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
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T06] ( 3, 3 ) int -> x1 single-def
; V02 arg2 [V02,T00] ( 3, 6 ) byref -> x2 single-def
-; V03 arg3 [V03,T01] ( 5, 4 ) ref -> x3 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V03 arg3 [V03,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
; V04 arg4 [V04,T04] ( 3, 3 ) byref -> x4 single-def
; V05 arg5 [V05,T05] ( 3, 3 ) byref -> x5 single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 rat0 [V08,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T03] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -33,16 +35,8 @@ G_M55135_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M55135_IG02: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref, isz
; gcrRegs +[x3]
; byrRegs +[x2 x4-x5]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbz x0, G_M55135_IG06
- ;; size=20 bbWeight=1 PerfScore 13.00
-G_M55135_IG03: ; bbWeight=0.80, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref, isz
- cbz x3, G_M55135_IG07
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M55135_IG04: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref
+ ldr xzr, [x19]
+ cbz x3, G_M55135_IG04
mov x0, x19
; gcrRegs +[x0]
mov x6, x5
@@ -54,21 +48,16 @@ G_M55135_IG04: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M55135_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=40 bbWeight=1 PerfScore 10.50
+G_M55135_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
br x7
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00
-G_M55135_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, gcvars, byref, isz
- ; gcrRegs -[x0]
- ; byrRegs -[x6] +[x4]
- cbnz x3, G_M55135_IG04
- ;; size=4 bbWeight=0.20 PerfScore 0.20
-G_M55135_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x2 x4-x5]
+G_M55135_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x3]
+ ; byrRegs -[x2 x5-x6]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -86,7 +75,7 @@ G_M55135_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (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 116, prolog size 20, PerfScore 18.50, instruction count 29, allocated bytes for code 116 (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)
; ============================================================
Unwind Info:
@@ -97,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 23494.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M53339_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M53339_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M53339_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M53339_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M53339_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x30]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M53339_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 66991.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M25960_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M25960_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M25960_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25960_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M25960_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrb w0, [x19, #0x20]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M25960_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+9.35%) : 40668.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
@@ -9,31 +9,30 @@
; 2 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 7 ) ref -> x19 class-hnd single-def <System.IFormatProvider>
+; V00 arg0 [V00,T05] ( 7, 69.95) ref -> x19 class-hnd single-def <System.IFormatProvider>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T14] ( 3, 3 ) ref -> x19 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V03 tmp2 [V03,T03] ( 6, 6 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V04 tmp3 [V04,T09] ( 2, 4 ) ref -> x2 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V05 tmp4 [V05,T04] ( 6, 6 ) ref -> x2
-; V06 tmp5 [V06,T10] ( 2, 4 ) ref -> x0 single-def "CASTCLASS eval op1"
-; V07 tmp6 [V07,T01] ( 6, 9 ) ref -> x2 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V08 tmp7 [V08,T05] ( 3, 6 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+; V02 tmp1 [V02,T17] ( 3, 20.59) ref -> x19 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V03 tmp2 [V03,T03] ( 6, 80.58) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
+; V04 tmp3 [V04,T04] ( 3, 72.96) ref -> x20 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V05 tmp4 [V05,T01] ( 6, 95.58) ref -> x20
+; V06 tmp5 [V06,T08] ( 2, 58.37) ref -> x0 single-def "CASTCLASS eval op1"
+; V07 tmp6 [V07,T00] ( 5,109.44) ref -> x20 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V08 tmp7 [V08,T15] ( 3, 29.74) ref -> x19 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp9 [V10,T18] ( 3, 2 ) ref -> x2 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V10 tmp9 [V10,T16] ( 3, 23.35) ref -> x20 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V12 tmp11 [V12,T20] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
-; V13 tmp12 [V13,T21] ( 3, 0 ) long -> x20 "fgMakeTemp is creating a new local variable"
-; V14 tmp13 [V14,T19] ( 4, 0 ) ref -> x2 class-hnd single-def "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V15 tmp14 [V15,T15] ( 3, 3 ) ref -> x2 class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.NumberFormatInfo>
-; V16 tmp15 [V16,T11] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V17 tmp16 [V17,T02] ( 12, 8 ) ref -> x0
-; V18 tmp17 [V18,T12] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V19 tmp18 [V19,T13] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V20 cse0 [V20,T16] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V21 cse1 [V21,T17] ( 4, 2.50) long -> x20 "CSE - aggressive"
-; V22 rat0 [V22,T08] ( 3, 4 ) byref -> x19 "TLS field access"
-; V23 rat1 [V23,T06] ( 3, 6 ) long -> x2 "TLS access"
-; V24 rat2 [V24,T07] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V12 tmp11 [V12,T19] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V13 tmp12 [V13,T20] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V14 tmp13 [V14,T18] ( 4, 0 ) ref -> x20 class-hnd single-def "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V15 tmp14 [V15,T13] ( 3, 35.02) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.NumberFormatInfo>
+; V16 tmp15 [V16,T10] ( 2, 46.69) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V17 tmp16 [V17,T02] ( 12, 93.39) ref -> x0
+; V18 tmp17 [V18,T11] ( 2, 46.69) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V19 tmp18 [V19,T12] ( 2, 46.69) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V20 cse0 [V20,T14] ( 3, 35.02) long -> x1 "CSE - aggressive"
+; V21 rat0 [V21,T09] ( 3, 46.69) byref -> x19 "TLS field access"
+; V22 rat1 [V22,T06] ( 3, 70.04) long -> x0 "TLS access"
+; V23 rat2 [V23,T07] ( 3, 70.04) long -> x0 "ThreadStaticBlockBase access"
;
; Lcl frame size = 0
@@ -45,7 +44,9 @@ G_M22436_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=16 bbWeight=1 PerfScore 3.00
G_M22436_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M22436_IG14
+ cbz x19, G_M22436_IG26
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M22436_IG03: ; bbWeight=25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -54,34 +55,54 @@ G_M22436_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M22436_IG05
+ cbz x0, G_M22436_IG08
+ ;; size=24 bbWeight=25 PerfScore 100.00
+G_M22436_IG04: ; bbWeight=13, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x61]
- cbnz w1, G_M22436_IG05
+ cbnz w1, G_M22436_IG08
+ ;; size=8 bbWeight=13 PerfScore 52.00
+G_M22436_IG05: ; bbWeight=6.76, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
ldr x19, [x0, #0x18]
- cbnz x19, G_M22436_IG04
+ ; gcrRegs +[x19]
+ cbnz x19, G_M22436_IG25
+ ;; size=8 bbWeight=6.76 PerfScore 27.04
+G_M22436_IG06: ; bbWeight=5.41, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x10]
- ;; size=56 bbWeight=1 PerfScore 22.00
-G_M22436_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=5.41 PerfScore 48.67
+G_M22436_IG07: ; bbWeight=5.41, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M22436_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- b G_M22436_IG12
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M22436_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=5.41 PerfScore 16.22
+G_M22436_IG08: ; bbWeight=18.24, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x0] +[x19]
ldr x0, [x19]
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- cmp x0, x20
- csel x2, x19, xzr, eq
- ; gcrRegs +[x2]
- cbnz x2, G_M22436_IG11
+ movz x11, #0xD1FFAB1E
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ beq G_M22436_IG10
+ ;; size=24 bbWeight=18.24 PerfScore 109.44
+G_M22436_IG09: ; bbWeight=9.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ b G_M22436_IG11
+ ;; size=8 bbWeight=9.12 PerfScore 13.68
+G_M22436_IG10: ; bbWeight=9.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=9.12 PerfScore 4.56
+G_M22436_IG11: ; bbWeight=18.24, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M22436_IG22
+ ;; size=4 bbWeight=18.24 PerfScore 18.24
+G_M22436_IG12: ; bbWeight=14.59, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
mov x0, x19
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -91,99 +112,118 @@ G_M22436_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x2, [x11]
- ; gcrRegs -[x2]
blr x2
; gcrRegs -[x19]
; gcr arg pop 0
- mov x2, x0
- ; gcrRegs +[x2]
- cbz x2, G_M22436_IG07
- ;; size=72 bbWeight=1 PerfScore 15.50
-G_M22436_IG06: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ mov x20, x0
+ ; gcrRegs +[x20]
+ cbz x20, G_M22436_IG15
+ ;; size=44 bbWeight=14.59 PerfScore 131.33
+G_M22436_IG13: ; bbWeight=7.30, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x2]
- cmp x0, x20
- csel x2, x2, xzr, eq
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M22436_IG07: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M22436_IG11
- mrs x2, tpidr_el0
- ; gcrRegs -[x2]
- ldr w0, [x2, #0xD1FFAB1E]
- cmp w0, #2
- blt G_M22436_IG16
- ldr x0, [x2, #0xD1FFAB1E]
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M22436_IG15
+ ;; size=24 bbWeight=7.30 PerfScore 43.78
+G_M22436_IG14: ; bbWeight=3.65, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=3.65 PerfScore 1.82
+G_M22436_IG15: ; bbWeight=14.59, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M22436_IG22
+ ;; size=4 bbWeight=14.59 PerfScore 14.59
+G_M22436_IG16: ; bbWeight=11.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ mrs x0, tpidr_el0
+ ldr w1, [x0, #0xD1FFAB1E]
+ cmp w1, #2
+ blt G_M22436_IG28
+ ;; size=16 bbWeight=11.67 PerfScore 64.20
+G_M22436_IG17: ; bbWeight=11.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0, #0xD1FFAB1E]
ldr x0, [x0, #0x10]
- cbz x0, G_M22436_IG16
+ cbz x0, G_M22436_IG28
ldr x0, [x0]
; byrRegs +[x0]
add x19, x0, #16
; byrRegs +[x19]
- ;; size=40 bbWeight=1 PerfScore 17.00
-G_M22436_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ;; size=20 bbWeight=11.67 PerfScore 122.57
+G_M22436_IG18: ; bbWeight=11.67, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0]
ldr x0, [x19, #0x10]
; gcrRegs +[x0]
- cbnz x0, G_M22436_IG09
+ cbnz x0, G_M22436_IG20
+ ;; size=8 bbWeight=11.67 PerfScore 46.69
+G_M22436_IG19: ; bbWeight=11.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldapr x0, [x1]
- cbnz x0, G_M22436_IG09
+ ; gcrRegs +[x0]
+ cbnz x0, G_M22436_IG20
sub x0, x1, #32
; gcrRegs -[x0]
ldapr x0, [x0]
; gcrRegs +[x0]
- cbz x0, G_M22436_IG17
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M22436_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
+ cbz x0, G_M22436_IG29
+ ;; size=32 bbWeight=11.67 PerfScore 116.74
+G_M22436_IG20: ; bbWeight=11.67, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x61]
- cbnz w1, G_M22436_IG18
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M22436_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0, #0x18]
- ; gcrRegs +[x2]
- cbz x2, G_M22436_IG18
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M22436_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ cbnz w1, G_M22436_IG30
+ ;; size=8 bbWeight=11.67 PerfScore 46.69
+G_M22436_IG21: ; bbWeight=11.67, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x20, [x0, #0x18]
+ ; gcrRegs +[x20]
+ cbz x20, G_M22436_IG30
+ ;; size=8 bbWeight=11.67 PerfScore 46.69
+G_M22436_IG22: ; bbWeight=18.24, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x19, x2
+ mov x19, x20
...
+40 (+13.70%) : 113296.dasm - System.Text.RegularExpressions.Regex:Count(System.String):int:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 722
-; 1 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T02] ( 4, 4 ) ref -> x20 this class-hnd single-def <System.Text.RegularExpressions.Regex>
@@ -18,44 +18,43 @@
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
; V08 tmp5 [V08,T07] ( 3, 2 ) int -> x21
-; V09 tmp6 [V09,T04] ( 2, 4 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.MatchCallback`1[int]>
+; V09 tmp6 [V09,T04] ( 2, 4 ) ref -> x22 class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.MatchCallback`1[int]>
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 tmp10 [V13,T08] ( 2, 2 ) byref -> x22 single-def
-; V14 tmp11 [V14,T03] ( 4, 4 ) ref -> x6
-; V15 tmp12 [V15,T01] ( 4, 8 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.MatchCallback`1[int]>
+; V13 tmp10 [V13,T08] ( 2, 2 ) byref -> x23 single-def
+; V14 tmp11 [V14,T03] ( 4, 4 ) ref -> x22
+; V15 tmp12 [V15,T01] ( 4, 8 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.MatchCallback`1[int]>
;* V16 tmp13 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp14 [V17 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp15 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp17 [V20,T06] ( 2, 4 ) int -> x3 "Inlining Arg"
-; V21 tmp18 [V21,T05] ( 2, 4 ) byref -> x2 single-def "Inlining Arg"
-;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V24 tmp21 [V24 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V26 tmp23 [V26,T09] ( 2, 2 ) byref -> x2 "field V17._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T11] ( 2, 2 ) int -> x3 "field V17._length (fldOffset=0x8)" P-INDEP
-; V28 tmp25 [V28,T10] ( 2, 2 ) byref -> x2 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp26 [V29,T12] ( 2, 2 ) int -> x3 "field V18._length (fldOffset=0x8)" P-INDEP
-;* V30 tmp27 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
+; V20 tmp17 [V20,T06] ( 2, 4 ) int -> x25 "Inlining Arg"
+; V21 tmp18 [V21,T05] ( 2, 4 ) byref -> x24 single-def "Inlining Arg"
+;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
+;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
+; V24 tmp21 [V24,T09] ( 2, 2 ) byref -> x2 "field V17._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp22 [V25,T11] ( 2, 2 ) int -> x3 "field V17._length (fldOffset=0x8)" P-INDEP
+; V26 tmp23 [V26,T10] ( 2, 2 ) byref -> x2 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp24 [V27,T12] ( 2, 2 ) int -> x3 "field V18._length (fldOffset=0x8)" P-INDEP
+;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M62633_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #80
+ sub sp, sp, #96
stp fp, lr, [sp, #0x08]
stp x19, x20, [sp, #0x28]
stp x21, x22, [sp, #0x38]
- str x23, [sp, #0x48]
+ stp x23, x24, [sp, #0x48]
+ str x25, [sp, #0x58]
add fp, sp, #8
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M62633_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M62633_IG06
str wzr, [fp, #0x1C] // [V02 loc0]
@@ -67,24 +66,24 @@ G_M62633_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x6, [x0]
- ; gcrRegs +[x6]
- add x22, fp, #28 // [V02 loc0]
- ; byrRegs +[x22]
- cbnz x6, G_M62633_IG04
+ ldr x22, [x0]
+ ; gcrRegs +[x22]
+ add x23, fp, #28 // [V02 loc0]
+ ; byrRegs +[x23]
+ cbnz x22, G_M62633_IG04
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x6] +[x0]
- mov x23, x0
- ; gcrRegs +[x23]
+ ; gcrRegs -[x22] +[x0]
+ mov x22, x0
+ ; gcrRegs +[x22]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
; gcrRegs +[x1]
- mov x0, x23
+ mov x0, x22
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -97,18 +96,24 @@ G_M62633_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- mov x15, x23
+ mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- mov x6, x23
- ; gcrRegs +[x6]
- ;; size=120 bbWeight=1 PerfScore 24.50
-G_M62633_IG04: ; bbWeight=1, gcrefRegs=180040 {x6 x19 x20}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x23]
- add x2, x19, #12
+ ;; size=116 bbWeight=1 PerfScore 24.00
+G_M62633_IG04: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=800000 {x23}, byref
+ add x24, x19, #12
+ ; byrRegs +[x24]
+ ldr w25, [x19, #0x08]
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ mov x2, x24
; byrRegs +[x2]
- ldr w3, [x19, #0x08]
+ sxtw w3, w25
mov w0, #1
str w0, [sp] // [V03 OutArgs]
mov x0, x20
@@ -116,26 +121,29 @@ G_M62633_IG04: ; bbWeight=1, gcrefRegs=180040 {x6 x19 x20}, byrefRegs=400
mov x1, x19
; gcrRegs +[x1]
mov w4, w21
- mov x5, x22
+ mov x5, x23
; byrRegs +[x5]
+ mov x6, x22
+ ; gcrRegs +[x6]
mov w7, #1
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x0-x1 x6 x19-x20]
- ; byrRegs -[x2 x5 x22]
+ ; gcrRegs -[x0-x1 x6 x19-x20 x22]
+ ; byrRegs -[x2 x5 x23-x24]
ldr w0, [fp, #0x1C] // [V02 loc0]
- ;; size=60 bbWeight=1 PerfScore 15.00
+ ;; size=96 bbWeight=1 PerfScore 22.50
G_M62633_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x23, [sp, #0x48]
+ ldr x25, [sp, #0x58]
+ ldp x23, x24, [sp, #0x48]
ldp x21, x22, [sp, #0x38]
ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp, #0x08]
- add sp, sp, #80
+ add sp, sp, #96
ret lr
- ;; size=24 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 7.50
G_M62633_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #7
movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.ThrowHelper:ThrowArgumentNullException(int)
@@ -151,7 +159,7 @@ G_M62633_IG07: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
b G_M62633_IG03
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 292, prolog size 24, PerfScore 58.50, instruction count 73, allocated bytes for code 292 (MethodHash=41cc0b56) for method System.Text.RegularExpressions.Regex:Count(System.String):int:this (Tier1)
+; Total bytes of code 332, prolog size 28, PerfScore 67.50, instruction count 83, allocated bytes for code 332 (MethodHash=41cc0b56) for method System.Text.RegularExpressions.Regex:Count(System.String):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -162,7 +170,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 73 (0x00049) Actual length = 292 (0x000124)
+ Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -170,12 +178,12 @@ Unwind Info:
---- Unwind codes ----
E2 01 add_fp 1 (0x01); add fp, sp, #8
---- Epilog start at index 2 ----
- D1 09 save_reg X#4 Z#9 (0x09); str x23, [sp, #72]
+ D1 8B save_reg X#6 Z#11 (0x0B); str x25, [sp, #88]
+ E6 save_next
E6 save_next
C8 05 save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
41 save_fplr #1 (0x01); stp fp, lr, [sp, #8]
- 05 alloc_s #5 (0x05); sub sp, sp, #80 (0x050)
- E4 end
+ 06 alloc_s #6 (0x06); sub sp, sp, #96 (0x060)
E4 end
E4 end
+36 (+52.94%) : 93608.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
@@ -5,8 +5,8 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 9074
-; 2 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 9074
+; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
@@ -15,71 +15,78 @@
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp5 [V06,T02] ( 2, 4 ) int -> x0 "Inlining Arg"
-; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
-;* V08 tmp7 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp9 [V10,T03] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
-;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp13 [V14,T04] ( 2, 2 ) byref -> x1 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp14 [V15,T06] ( 2, 2 ) int -> x0 "field V03._length (fldOffset=0x8)" P-INDEP
-; V16 tmp15 [V16,T05] ( 2, 2 ) byref -> x1 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T07] ( 2, 2 ) int -> x0 "field V04._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+; V06 tmp5 [V06,T02] ( 2, 4 ) int -> x20 "Inlining Arg"
+; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp11 [V12,T04] ( 2, 2 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp12 [V13,T06] ( 2, 2 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V14 tmp13 [V14,T05] ( 2, 2 ) byref -> x19 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T07] ( 2, 2 ) int -> x20 "field V04._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M54468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M54468_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
cbz x0, G_M54468_IG04
- add x1, x0, #12
- ; byrRegs +[x1]
- ldr w0, [x0, #0x08]
+ add x19, x0, #12
+ ; byrRegs +[x19]
+ ldr w20, [x0, #0x08]
+ mov w0, #1
; gcrRegs -[x0]
- cmp w0, #0
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ cmp w20, #0
ble G_M54468_IG06
- ldrh w0, [x1]
+ ldrh w0, [x19]
cmp w0, #47
cset x0, eq
- ;; size=32 bbWeight=1 PerfScore 10.00
+ ;; size=56 bbWeight=1 PerfScore 16.00
G_M54468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x1]
- ldp fp, lr, [sp], #0x10
+ ; byrRegs -[x19]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 3.00
G_M54468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M54468_IG05: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M54468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
b G_M54468_IG03
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 13.50, instruction count 17, allocated bytes for code 68 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
+; Total bytes of code 104, prolog size 12, PerfScore 21.50, instruction count 26, allocated bytes for code 104 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -90,7 +97,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
benchmarks.run_tiered.linux.arm64.checked.mch
-28 (-17.50%) : 28739.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
@@ -2,60 +2,73 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 2, 2 ) int -> x0 "Span.get_Item index"
-; V03 tmp2 [V03,T02] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
-;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V07 tmp6 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V08 tmp7 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V09 tmp8 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V10 tmp9 [V10,T01] ( 4, 2.50) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp10 [V11,T00] ( 4, 3 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-;* V14 tmp13 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V02 tmp1 [V02,T05] ( 2, 4 ) int -> x2 "Span.get_Item index"
+;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp3 [V04,T00] ( 4, 6.43) ushort -> x2 "Inlining Arg"
+;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp5 [V06,T01] ( 4, 6.43) ushort -> x2 "Inlining Arg"
+; V07 tmp6 [V07,T04] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
+;* V08 tmp7 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V11 tmp10 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V13 tmp12 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V14 tmp13 [V14,T02] ( 4, 4 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T03] ( 4, 4 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M21002_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0
- ; byrRegs +[x20]
- mov w19, w1
- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M21002_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- cbz w19, G_M21002_IG05
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M21002_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- ldrh w0, [x20]
- movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X500NameEncoder:IsQuotableWhitespace(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M21002_IG05
- sub w0, w19, #1
- ldrh w0, [x20, w0, UXTW #2]
- movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X500NameEncoder:IsQuotableWhitespace(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M21002_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M21002_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ ; byrRegs +[x0]
+ cbz w1, G_M21002_IG10
+ ldrh w2, [x0]
+ cmp w2, #32
+ beq G_M21002_IG10
+ ;; size=16 bbWeight=1 PerfScore 5.50
+G_M21002_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, #9
+ blt G_M21002_IG05
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M21002_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, #13
+ ble G_M21002_IG10
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M21002_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ sub w2, w1, #1
+ ldrh w2, [x0, w2, UXTW #2]
+ cmp w2, #32
+ beq G_M21002_IG10
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M21002_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, #9
+ blt G_M21002_IG08
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M21002_IG07: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, #13
+ ble G_M21002_IG10
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M21002_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -64,42 +77,37 @@ G_M21002_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}
add x2, x2, #8
; gcrRegs -[x2]
; byrRegs +[x2]
- mov x0, x20
- ; byrRegs +[x0]
- mov w1, w19
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; byrRegs -[x0 x2 x20]
- ;; size=108 bbWeight=0.50 PerfScore 15.50
-G_M21002_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ; byrRegs -[x0 x2]
+ ;; size=40 bbWeight=1 PerfScore 10.50
+G_M21002_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M21002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M21002_IG10: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M21002_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=0.80 PerfScore 0.40
+G_M21002_IG11: ; bbWeight=0.80, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.80 PerfScore 1.60
-; Total bytes of code 160, prolog size 12, PerfScore 23.25, instruction count 40, allocated bytes for code 160 (MethodHash=028fadf5) for method System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
+; Total bytes of code 132, prolog size 8, PerfScore 30.15, instruction count 33, allocated bytes for code 132 (MethodHash=028fadf5) for method System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -110,10 +118,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-12 (-13.04%) : 16073.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M3216_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
cmp x1, x0
beq G_M3216_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M3216_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3216_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M3216_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -52,7 +52,7 @@ G_M3216_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -63,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 16074.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M53339_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M53339_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M53339_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M53339_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M53339_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x30]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M53339_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+15.38%) : 7686.dasm - System.MemoryExtensions:AsSpanubyte:System.Span`1ubyte
@@ -2,54 +2,59 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 5, 4 ) ref -> x0 class-hnd single-def <ubyte[]>
+; V00 arg0 [V00,T00] ( 5, 4.60) ref -> x0 class-hnd single-def <ubyte[]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> registers "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> registers "field V02._length (fldOffset=0x8)" P-INDEP
+; V04 tmp3 [V04,T02] ( 3, 2 ) int -> [fp+0x1C] "field V02._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M38314_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M38314_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbnz x0, G_M38314_IG04
+ cbz x0, G_M38314_IG06
;; size=4 bbWeight=1 PerfScore 1.00
-G_M38314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ; byrRegs +[x0]
- mov w1, wzr
- b G_M38314_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M38314_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
+G_M38314_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x1, x0, #16
; byrRegs +[x1]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
- mov w2, w0
+ str w0, [fp, #0x1C] // [V04 tmp3]
+ ;; size=12 bbWeight=0.80 PerfScore 3.60
+G_M38314_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
mov x0, x1
; byrRegs +[x0]
- mov w1, w2
+ ldr w1, [fp, #0x1C] // [V04 tmp3]
; byrRegs -[x1]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M38314_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=1 PerfScore 2.50
+G_M38314_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M38314_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x0]
+ mov x0, xzr
+ ; byrRegs +[x0]
+ mov w1, wzr
+ str w1, [fp, #0x1C] // [V04 tmp3]
+ mov x1, x0
+ ; byrRegs +[x1]
+ b G_M38314_IG04
+ ;; size=20 bbWeight=0.20 PerfScore 0.70
-; Total bytes of code 52, prolog size 8, PerfScore 8.00, instruction count 13, allocated bytes for code 52 (MethodHash=39b36a55) for method System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 11.30, instruction count 15, allocated bytes for code 60 (MethodHash=39b36a55) for method System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (Tier1)
; ============================================================
Unwind Info:
@@ -60,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -68,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+28 (+17.07%) : 41545.dasm - System.Version:CompareTo(System.Version):int:this (Tier1)
@@ -2,94 +2,119 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) ref -> x0 this class-hnd single-def <System.Version>
-; V01 arg1 [V01,T00] ( 8, 5.50) ref -> x1 class-hnd single-def <System.Version>
+; V00 this [V00,T01] ( 11, 4.86) ref -> x0 this class-hnd single-def <System.Version>
+; V01 arg1 [V01,T00] ( 12, 5.66) ref -> x1 class-hnd single-def <System.Version>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V04 cse1 [V04,T03] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V05 cse2 [V05,T04] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V06 cse3 [V06,T05] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V07 cse4 [V07,T06] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V08 cse5 [V08,T07] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V09 cse6 [V09,T08] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V10 cse7 [V10,T09] ( 3, 1.50) int -> x3 "CSE - moderate"
;
; Lcl frame size = 0
-G_M64264_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M64264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M64264_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp x1, x0
- beq G_M64264_IG11
+ beq G_M64264_IG15
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64264_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cbz x1, G_M64264_IG09
+G_M64264_IG03: ; bbWeight=0.80, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M64264_IG18
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M64264_IG04: ; bbWeight=0.64, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
ldr w3, [x1, #0x08]
cmp w2, w3
- bne G_M64264_IG06
+ bne G_M64264_IG12
+ ;; size=16 bbWeight=0.64 PerfScore 4.80
+G_M64264_IG05: ; bbWeight=0.33, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x0C]
ldr w3, [x1, #0x0C]
cmp w2, w3
- bne G_M64264_IG05
+ bne G_M64264_IG10
+ ;; size=16 bbWeight=0.33 PerfScore 2.50
+G_M64264_IG06: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x10]
ldr w3, [x1, #0x10]
cmp w2, w3
- bne G_M64264_IG04
+ bne G_M64264_IG17
+ ;; size=16 bbWeight=0.17 PerfScore 1.30
+G_M64264_IG07: ; bbWeight=0.09, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x14]
ldr w3, [x1, #0x14]
cmp w2, w3
- beq G_M64264_IG11
- cmp w2, w3
- bgt G_M64264_IG09
- b G_M64264_IG07
- ;; size=80 bbWeight=0.50 PerfScore 16.75
-G_M64264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0-x1]
- cmp w2, w3
- bgt G_M64264_IG09
- b G_M64264_IG07
- ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M64264_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w2, w3
- bgt G_M64264_IG09
- b G_M64264_IG07
- ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M64264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w2, w3
- bgt G_M64264_IG09
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M64264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M64264_IG15
+ ;; size=16 bbWeight=0.09 PerfScore 0.67
+G_M64264_IG08: ; bbWeight=0.07, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x0, #0x14]
+ ; gcrRegs -[x0]
+ ldr w1, [x1, #0x14]
+ ; gcrRegs -[x1]
+ cmp w0, w1
+ bgt G_M64264_IG18
+ ;; size=16 bbWeight=0.07 PerfScore 0.54
+G_M64264_IG09: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M64264_IG13
+ ;; size=4 bbWeight=0.04 PerfScore 0.04
+G_M64264_IG10: ; bbWeight=0.16, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0-x1]
+ ldr w0, [x0, #0x0C]
+ ; gcrRegs -[x0]
+ ldr w1, [x1, #0x0C]
+ ; gcrRegs -[x1]
+ cmp w0, w1
+ bgt G_M64264_IG18
+ ;; size=16 bbWeight=0.16 PerfScore 1.20
+G_M64264_IG11: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M64264_IG13
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M64264_IG12: ; bbWeight=0.31, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0-x1]
+ ldr w0, [x0, #0x08]
+ ; gcrRegs -[x0]
+ ldr w1, [x1, #0x08]
+ ; gcrRegs -[x1]
+ cmp w0, w1
+ bgt G_M64264_IG18
+ ;; size=16 bbWeight=0.31 PerfScore 2.30
+G_M64264_IG13: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M64264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.32 PerfScore 0.16
+G_M64264_IG14: ; bbWeight=0.32, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M64264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M64264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M64264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.32 PerfScore 0.65
+G_M64264_IG15: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M64264_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.22 PerfScore 0.11
+G_M64264_IG16: ; bbWeight=0.22, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.22 PerfScore 0.44
+G_M64264_IG17: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0-x1]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr w1, [x1, #0x10]
+ ; gcrRegs -[x1]
+ cmp w0, w1
+ ble G_M64264_IG13
+ ;; size=16 bbWeight=0.08 PerfScore 0.62
+G_M64264_IG18: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.46 PerfScore 0.23
+G_M64264_IG19: ; bbWeight=0.46, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.46 PerfScore 0.92
-; Total bytes of code 164, prolog size 8, PerfScore 26.75, instruction count 41, allocated bytes for code 164 (MethodHash=a1da04f7) for method System.Version:CompareTo(System.Version):int:this (Tier1)
+; Total bytes of code 192, prolog size 8, PerfScore 20.35, instruction count 48, allocated bytes for code 192 (MethodHash=a1da04f7) for method System.Version:CompareTo(System.Version):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -100,7 +125,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+17.65%) : 25985.dasm - System.Collections.Generic.Stack1[System.ValueTuple
3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
@@ -2,65 +2,56 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> [fp+0x18] 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 -> [fp+0x10] this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x1 single-def
-; V02 loc0 [V02,T02] ( 4, 3 ) int -> x13
-; V03 loc1 [V03,T04] ( 3, 2.50) ref -> x14 class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 4, 3.60) int -> x13
+; V03 loc1 [V03,T05] ( 3, 2.80) ref -> x14 class-hnd exact single-def <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) 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 ) long -> 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=0x8)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x10)" P-INDEP
-; V10 cse0 [V10,T06] ( 3, 1.50) byref -> x2 "CSE - moderate"
-;* V11 rat0 [V11,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V10 cse0 [V10,T06] ( 3, 2.40) byref -> x2 "CSE - aggressive"
+; V11 rat0 [V11,T04] ( 2, 3.20) long -> x1 "Spilling to split statement for tree"
;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V13 rat2 [V13,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V13 rat2 [V13,T02] ( 2, 3.20) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
G_M60687_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ str x0, [fp, #0x18]
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0002 {x1}, byref, isz
; gcrRegs +[x0]
; byrRegs +[x1]
ldr w13, [x0, #0x10]
sub w13, w13, #1
- str x0, [fp, #0x18] // [V00 this]
+ str x0, [fp, #0x10] // [V00 this]
; GC ptr vars +{V00}
ldr x14, [x0, #0x08]
; gcrRegs +[x14]
ldr w12, [x14, #0x08]
cmp w12, w13
- bhi G_M60687_IG05
+ bls G_M60687_IG05
;; size=28 bbWeight=1 PerfScore 12.00
-G_M60687_IG03: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, gcvars, byref
- ; gcrRegs -[x0 x14]
- stp xzr, xzr, [x1]
- str xzr, [x1, #0x10]
- mov w0, wzr
- ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M60687_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M60687_IG05: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=4000 {x14}, byrefRegs=0002 {x1}, gcvars, byref
- ; gcrRegs +[x14]
- ldr x0, [fp, #0x18] // [V00 this]
+G_M60687_IG03: ; bbWeight=0.80, gcVars=0000000000000001 {V00}, gcrefRegs=4000 {x14}, byrefRegs=0002 {x1}, gcvars, byref, isz
+ ; gcrRegs -[x0]
+ ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0]
ldr w12, [x0, #0x14]
add w12, w12, #1
- str w12, [x0, #0x14]
- str x0, [fp, #0x18] // [V00 this]
- str w13, [x0, #0x10]
+ stp w13, w12, [x0, #0x10]
mov w12, #24
mov x15, #16
umaddl x13, w13, w12, x15
@@ -71,21 +62,46 @@ G_M60687_IG05: ; bbWeight=0.50, gcVars=0000000000000001 {V00}, gcrefRegs=
; byrRegs +[x14]
mov x13, x2
; byrRegs +[x13]
+ ; GC ptr vars -{V00}
bl CORINFO_HELP_ASSIGN_BYREF
- ; gcrRegs -[x0]
; byrRegs -[x1]
bl CORINFO_HELP_ASSIGN_BYREF
bl CORINFO_HELP_ASSIGN_BYREF
+ str x0, [fp, #0x10] // [V00 this]
+ ; GC ptr vars +{V00}
+ ldr x1, [x0]
+ ldr x1, [x1, #0x38]
+ ldr x1, [x1]
+ ldr x1, [x1, #0x20]
+ cbnz x1, G_M60687_IG07
+ ;; size=76 bbWeight=0.80 PerfScore 24.80
+G_M60687_IG04: ; bbWeight=0.16, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x13-x14]
+ b G_M60687_IG07
+ ;; size=4 bbWeight=0.16 PerfScore 0.16
+G_M60687_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ ; byrRegs -[x2] +[x1]
+ stp xzr, xzr, [x1]
+ str xzr, [x1, #0x10]
+ mov w0, wzr
+ ;; size=12 bbWeight=0.20 PerfScore 0.50
+G_M60687_IG06: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
+G_M60687_IG07: ; bbWeight=0.80, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, gcvars, byref
+ ; byrRegs -[x1] +[x2]
stp xzr, xzr, [x2]
str xzr, [x2, #0x10]
mov w0, #1
- ;; size=72 bbWeight=0.50 PerfScore 10.75
-G_M60687_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=12 bbWeight=0.80 PerfScore 2.00
+G_M60687_IG08: ; bbWeight=0.80, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.80 PerfScore 1.60
-; Total bytes of code 136, prolog size 8, PerfScore 27.50, instruction count 34, allocated bytes for code 136 (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 160, prolog size 12, PerfScore 43.96, instruction count 40, allocated bytes for code 160 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -96,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.linux.arm64.checked.mch
-44 (-55.00%) : 242626.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 5, 4 ) float -> d0 single-def
+; V00 loc0 [V00,T01] ( 2, 2 ) float -> d0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> d0 "Single return block return value"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> d0 "Single return block return value"
;
; Lcl frame size = 0
@@ -18,34 +20,19 @@ G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- ble G_M53791_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M53791_IG05
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- blo G_M53791_IG03
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53791_IG03
- b G_M53791_IG03
- ;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +43,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 242574.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -17,28 +19,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 238460.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) float -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -19,28 +21,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -51,7 +44,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+33.33%) : 183496.dasm - BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
@@ -2,21 +2,23 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 3, 3 ) long -> x0 single-def
+; V00 loc0 [V00,T00] ( 3, 27.00) long -> x0 single-def
;* V01 loc1 [V01,T01] ( 0, 0 ) int -> zero-ref ptr
;* V02 loc2 [V02,T02] ( 0, 0 ) int -> zero-ref ptr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V04 tmp1 [V04 ] ( 1, 9.00) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
; V05 GsCookie [V05 ] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "GSSecurityCookie"
;
; Lcl frame size = 16
-G_M8788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M8788_IG01: ; bbWeight=9.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str xzr, [fp, #0x10] // [V04 tmp1]
@@ -25,8 +27,8 @@ G_M8788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #32
movk x0, #0xD1FFAB1E LSL #48
str x0, [fp, #0x18] // [V05 GsCookie]
- ;; size=32 bbWeight=1 PerfScore 5.50
-G_M8788_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=9.00 PerfScore 49.50
+G_M8788_IG02: ; bbWeight=9.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x0, fp, #16 // [V04 tmp1]
strb wzr, [x0]
ldrb w0, [x0]
@@ -36,39 +38,58 @@ G_M8788_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- movn w1, #0
- cmp w0, #0
- cinc w0, w1, eq
+ cbz w0, G_M8788_IG05
+ ;; size=40 bbWeight=9.00 PerfScore 103.50
+G_M8788_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movn w0, #0
movz xip0, #0xD1FFAB1E
movk xip0, #0xD1FFAB1E LSL #16
movk xip0, #0xD1FFAB1E LSL #32
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x18] // [V05 GsCookie]
cmp xip0, xip1
- beq G_M8788_IG03
+ beq G_M8788_IG04
bl CORINFO_HELP_FAIL_FAST
- ;; size=80 bbWeight=1 PerfScore 18.50
-G_M8788_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=2.89 PerfScore 20.26
+G_M8788_IG04: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M8788_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov w0, wzr
+ movz xip0, #0xD1FFAB1E
+ movk xip0, #0xD1FFAB1E LSL #16
+ movk xip0, #0xD1FFAB1E LSL #32
+ movk xip0, #0xD1FFAB1E LSL #48
+ ldr xip1, [fp, #0x18] // [V05 GsCookie]
+ cmp xip0, xip1
+ beq G_M8788_IG06
+ bl CORINFO_HELP_FAIL_FAST
+ ;; size=36 bbWeight=0.47 PerfScore 3.32
+G_M8788_IG06: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 120, prolog size 32, PerfScore 26.00, instruction count 30, allocated bytes for code 120 (MethodHash=d502ddab) for method BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
+; Total bytes of code 160, prolog size 32, PerfScore 183.32, instruction count 40, allocated bytes for code 160 (MethodHash=d502ddab) for method BringUpTest_LocallocCnstB1:LocallocCnstB1():int (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+50.00%) : 150446.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
@@ -2,49 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte>
-; V01 arg1 [V01 ] ( 3, 3 ) ubyte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) ubyte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M9227_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M9227_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M9227_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M9227_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
cmp w0, #255
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M9227_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M9227_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 16.58
+G_M9227_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=2.89 PerfScore 1.45
+G_M9227_IG04: ; bbWeight=2.89, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M9227_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M9227_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=8d4ddbf4) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 36.84, instruction count 12, allocated bytes for code 48 (MethodHash=8d4ddbf4) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+50.00%) : 150470.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
@@ -2,49 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte>
-; V01 arg1 [V01 ] ( 3, 3 ) byte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) byte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M12269_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M12269_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M12269_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M12269_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
cmp w0, #255
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M12269_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M12269_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 16.58
+G_M12269_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=2.89 PerfScore 1.45
+G_M12269_IG04: ; bbWeight=2.89, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M12269_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M12269_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=b297d012) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 36.84, instruction count 12, allocated bytes for code 48 (MethodHash=b297d012) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.linux.arm64.checked.mch
-48 (-32.43%) : 111130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-1(ushort):ubyte:this (FullOpts)
@@ -3,80 +3,77 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) ushort -> x1 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 -> x19 "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, 3 ) ushort -> x0 "Inline stloc first use temp"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V11 cse0 [V11,T00] ( 7, 7 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M44010_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M44010_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w19, w1
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M44010_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, #82
- cmp w19, #81
- ccmp w19, w0, z, ne
- beq G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M44010_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M44010_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44010_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ uxth w0, w1
+ sub w1, w0, #79
+ cmp w1, #1
+ bls G_M44010_IG04
+ mov w1, #82
+ cmp w0, #81
+ ccmp w0, w1, z, ne
+ beq G_M44010_IG04
+ sub w1, w0, #83
+ cmp w1, #4
+ bls G_M44010_IG04
+ sub w1, w0, #0xD1FFAB1E
+ cmp w1, #1
+ bls G_M44010_IG04
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ cinc w0, wzr, eq
+ ;; size=72 bbWeight=1 PerfScore 11.00
+G_M44010_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44010_IG04: ; bbWeight=0.79, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.79 PerfScore 0.39
+G_M44010_IG05: ; bbWeight=0.79, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.79 PerfScore 1.57
-; Total bytes of code 148, prolog size 12, PerfScore 23.75, instruction count 37, allocated bytes for code 148 (MethodHash=f0a25415) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
+; Total bytes of code 100, prolog size 8, PerfScore 16.47, instruction count 25, allocated bytes for code 100 (MethodHash=f0a25415) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte: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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -87,10 +84,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-28 (-28.00%) : 111129.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-0(ushort):ubyte:this (FullOpts)
@@ -3,68 +3,66 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 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 -> x1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) ushort -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 5, 3.50) int -> x19 "CSE - aggressive"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
+;* V04 tmp2 [V04,T03] ( 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,T02] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V07 cse0 [V07,T00] ( 5, 5 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M51339_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w19, w1
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M51339_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M51339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, #82
- cmp w19, #81
- ccmp w19, w0, z, ne
- beq G_M51339_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M51339_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M51339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M51339_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ uxth w0, w1
+ sub w1, w0, #79
+ cmp w1, #1
+ bls G_M51339_IG04
+ mov w1, #82
+ cmp w0, #81
+ ccmp w0, w1, z, ne
+ beq G_M51339_IG04
+ sub w0, w0, #83
+ cmp w0, #4
+ cset x0, ls
+ ;; size=44 bbWeight=1 PerfScore 6.50
+G_M51339_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M51339_IG04: ; bbWeight=0.67, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.67 PerfScore 0.33
+G_M51339_IG05: ; bbWeight=0.67, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.67 PerfScore 1.33
-; Total bytes of code 100, prolog size 12, PerfScore 17.25, instruction count 25, allocated bytes for code 100 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 11.67, instruction count 18, allocated bytes for code 72 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte: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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -75,10 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-40 (-25.00%) : 223457.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
; fp 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 -> x19 class-hnd single-def <System.String>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 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 -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V03 tmp1 [V03,T00] ( 6, 12 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
;
; Lcl frame size = 8
@@ -50,25 +52,12 @@ G_M8139_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1 x20]
- adrp x2, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x2]
- ldr x2, [x2]
- ; gcrRegs +[x2]
- mov x0, x21
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, #1
- ldr x3, [x11]
- blr x3
- ; gcrRegs -[x0 x2]
mov w0, #1
str w0, [x21, #0x88]
strb w0, [x21, #0xA7]
mov x0, x21
; gcrRegs +[x0]
- ;; size=120 bbWeight=1 PerfScore 33.00
+ ;; size=80 bbWeight=1 PerfScore 20.00
G_M8139_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -76,7 +65,7 @@ G_M8139_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 160, prolog size 16, PerfScore 42.50, instruction count 40, allocated bytes for code 160 (MethodHash=07e2e034) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
+; Total bytes of code 120, prolog size 16, PerfScore 29.50, instruction count 30, allocated bytes for code 120 (MethodHash=07e2e034) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
; ============================================================
Unwind Info:
@@ -87,7 +76,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+35.71%) : 99346.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -3,16 +3,19 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser>
-; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> x1 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,T01] ( 2, 4 ) int -> x0 "argument with side effect"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -20,7 +23,7 @@ G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrsb wzr, [x1]
mov x0, x1
@@ -32,16 +35,25 @@ G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
uxth w0, w0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=40 bbWeight=1 PerfScore 13.00
-G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M28613_IG04
+ ;; size=44 bbWeight=1 PerfScore 11.50
+G_M28613_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M28613_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M28613_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M28613_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 16.50, instruction count 14, allocated bytes for code 56 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 16.12, instruction count 19, allocated bytes for code 76 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -52,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+35.71%) : 99352.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -3,16 +3,19 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 4 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> x1 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,T01] ( 2, 4 ) int -> x0 "argument with side effect"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -20,7 +23,7 @@ G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrsb wzr, [x1]
mov x0, x1
@@ -32,16 +35,25 @@ G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
uxth w0, w0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=40 bbWeight=1 PerfScore 13.00
-G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M39608_IG04
+ ;; size=44 bbWeight=1 PerfScore 11.50
+G_M39608_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M39608_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M39608_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M39608_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 16.50, instruction count 14, allocated bytes for code 56 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 16.12, instruction count 19, allocated bytes for code 76 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -52,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 225439.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
@@ -3,28 +3,29 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 3.96) byref -> x0 this single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Text.Json.JsonElement>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-; V05 tmp3 [V05,T03] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V06 tmp4 [V06,T04] ( 2, 1 ) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T06] ( 2, 1 ) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
-; V08 tmp6 [V08,T05] ( 2, 1 ) ref -> x0 single-def "field V03._parent (fldOffset=0x0)" P-INDEP
-; V09 tmp7 [V09,T07] ( 2, 1 ) int -> x1 "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T01] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V04 tmp2 [V04,T01] ( 2, 1.92) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V05 tmp3 [V05,T02] ( 2, 1.92) int -> x0 "Inlining Arg"
+; V06 tmp4 [V06,T03] ( 2, 1.04) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1.04) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
+; V08 tmp6 [V08,T05] ( 2, 0.96) ref -> registers single-def "field V03._parent (fldOffset=0x0)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 0.96) int -> [fp+0x1C] spill-single-def "field V03._idx (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M36569_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
@@ -32,29 +33,35 @@ G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
ldr w1, [x0]
tbz w1, #31, G_M36569_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M36569_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36569_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, xzr
; gcrRegs +[x0]
mov w1, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M36569_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M36569_IG04: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M36569_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M36569_IG05: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x0, [x0, #0x08]
- ; gcrRegs +[x0]
+ ldr x1, [x0, #0x08]
+ ; gcrRegs +[x1]
+ ldr w0, [x0]
; byrRegs -[x0]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M36569_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ str w0, [fp, #0x1C] // [V09 tmp7]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ldr w1, [fp, #0x1C] // [V09 tmp7]
+ ; gcrRegs -[x1]
+ ;; size=20 bbWeight=0.48 PerfScore 4.56
+G_M36569_IG06: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 44, prolog size 8, PerfScore 9.50, instruction count 11, allocated bytes for code 44 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 12.58, instruction count 15, allocated bytes for code 60 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -76,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
libraries.pmi.linux.arm64.checked.mch
-28 (-30.43%) : 144806.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
@@ -2,64 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
-; partially interruptible
+; fully 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.50) int -> x19 single-def
+; V00 arg0 [V00,T00] ( 6, 4.94) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M20897_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov w19, w0
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M20897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, w19
- movz x1, #0xD1FFAB1E // code for System.Data.ExpressionNode:IsFloat(int):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M20897_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M20897_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, w19
+ cmp w0, #13
+ ccmp w0, #14, z, ne
+ beq G_M20897_IG06
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M20897_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #15
+ beq G_M20897_IG06
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M20897_IG04: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionNode:IsInteger(int):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M20897_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=16 bbWeight=0.52 PerfScore 2.34
+G_M20897_IG05: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M20897_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M20897_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M20897_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=0.48 PerfScore 0.24
+G_M20897_IG07: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 92, prolog size 12, PerfScore 16.75, instruction count 23, allocated bytes for code 92 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 8.70, instruction count 16, allocated bytes for code 64 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -70,10 +70,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-20 (-23.81%) : 105908.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
@@ -2,62 +2,66 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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.50) ushort -> x19 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V03 cse0 [V03,T01] ( 5, 3.74) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M26802_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov w19, w0
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M26802_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w0, w19
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M26802_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M26802_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxth w0, w19
+ uxth w0, w0
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M26802_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M26802_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M26802_IG05: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0xD1FFAB1E
cset x0, ne
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M26802_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M26802_IG06: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M26802_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M26802_IG07: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M26802_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=0.48 PerfScore 0.24
+G_M26802_IG08: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 84, prolog size 12, PerfScore 15.00, instruction count 21, allocated bytes for code 84 (MethodHash=e9e6974d) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 8.08, instruction count 16, allocated bytes for code 64 (MethodHash=e9e6974d) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -68,10 +72,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-44 (-23.40%) : 76502.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
@@ -2,115 +2,94 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 8, 5.25) ref -> x19 class-hnd single-def <System.Object>
-; V01 loc0 [V01,T08] ( 2, 1 ) long -> x20 ld-addr-op single-def
-; V02 loc1 [V02,T09] ( 2, 1 ) long -> x19 ld-addr-op single-def
+; V00 arg0 [V00,T00] ( 7, 5 ) ref -> x0 class-hnd single-def <System.Object>
+; V01 loc0 [V01,T06] ( 2, 0.96) long -> x19 ld-addr-op single-def
+; V02 loc1 [V02,T07] ( 2, 0.83) long -> x19 ld-addr-op single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.IntPtr>
-; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.IntPtr>
+; V05 tmp2 [V05,T04] ( 3, 2.88) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <System.UIntPtr>
-; V08 tmp5 [V08,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V07 tmp4 [V07,T02] ( 3, 4.52) ref -> x1 class-hnd "spilling QMark2" <System.UIntPtr>
+; V08 tmp5 [V08,T05] ( 3, 2.50) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V10 tmp7 [V10,T01] ( 4, 5 ) ref -> x0 "Single return block return value"
-; V11 cse0 [V11,T07] ( 4, 1.25) long -> x0 "CSE - moderate"
-; V12 cse1 [V12,T06] ( 5, 1.50) long -> x20 multi-def "CSE - moderate"
+; V10 tmp7 [V10,T03] ( 4, 4 ) ref -> x0 "Single return block return value"
+; V11 cse0 [V11,T08] ( 2, 0.52) long -> x2 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M30013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M30013_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M30013_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M30013_IG04
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M30013_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x20, x0
- beq G_M30013_IG08
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
- ; gcrRegs +[x0]
- cbz x0, G_M30013_IG11
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30013_IG05: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x20, x0
- bne G_M30013_IG11
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M30013_IG10
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30013_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M30013_IG09
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M30013_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr x20, [x19, #0x08]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x19] +[x0]
- str x20, [x0, #0x08]
- b G_M30013_IG12
- ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M30013_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x1, x19
+ mov x1, x0
; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
+ cbz x1, G_M30013_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M30013_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x1]
+ ; gcrRegs -[x1]
+ movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
+ cmp x1, x2
+ beq G_M30013_IG07
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M30013_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ mov x1, x0
+ ; gcrRegs +[x1]
+ cbz x1, G_M30013_IG09
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M30013_IG05: ; bbWeight=0.26, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x1]
; gcrRegs -[x1]
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr x19, [x19, #0x08]
- ; gcrRegs -[x19]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
+ bne G_M30013_IG09
+ ;; size=24 bbWeight=0.26 PerfScore 1.56
+G_M30013_IG06: ; bbWeight=0.42, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x08]
movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
str x19, [x0, #0x08]
- b G_M30013_IG12
- ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M30013_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
+ b G_M30013_IG08
+ ;; size=28 bbWeight=0.42 PerfScore 3.12
+G_M30013_IG07: ; bbWeight=0.48, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x08]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M30013_IG12: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x19]
- ldp x19, x20, [sp, #0x10]
+ str x19, [x0, #0x08]
+ ;; size=24 bbWeight=0.48 PerfScore 3.12
+G_M30013_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M30013_IG09: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ b G_M30013_IG08
+ ;; size=4 bbWeight=0.10 PerfScore 0.10
-; Total bytes of code 188, prolog size 12, PerfScore 21.50, instruction count 47, allocated bytes for code 188 (MethodHash=edbc8ac2) for method Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 20.40, instruction count 36, allocated bytes for code 144 (MethodHash=edbc8ac2) for method Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +108,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+20 (+38.46%) : 94228.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
@@ -2,15 +2,21 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol>
-; V01 loc0 [V01,T02] ( 2, 2 ) int -> x0
-; V02 loc1 [V02,T01] ( 3, 3 ) int -> x0 single-def
+; V01 loc0 [V01,T03] ( 2, 2 ) int -> x0
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V04 tmp1 [V04,T02] ( 4, 3 ) int -> x0 "Inline return value spill temp"
+;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V06 tmp3 [V06,T01] ( 4, 3.60) int -> x0 single-def "Inline stloc first use temp"
;
; Lcl frame size = 0
@@ -18,25 +24,36 @@ G_M28291_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M28291_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M28291_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr w0, [x0, #0xA0]
; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.TypeAttributesExtensions:ToCharSet(int):int
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
+ and w0, w0, #0xD1FFAB1E
+ cbz w0, G_M28291_IG04
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M28291_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w1, #3
+ mov w2, #4
+ cmp w0, #32, LSL #12
+ csel w2, wzr, w2, ne
+ cmp w0, #16, LSL #12
+ csel w0, w1, w2, eq
+ b G_M28291_IG05
+ ;; size=28 bbWeight=0.80 PerfScore 3.20
+G_M28291_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #2
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M28291_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w1, #2
cmp w0, #0
csel w0, w0, w1, ne
- ;; size=36 bbWeight=1 PerfScore 10.00
-G_M28291_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 1.50
+G_M28291_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 13.50, instruction count 13, allocated bytes for code 52 (MethodHash=2e7b917c) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 12.80, instruction count 18, allocated bytes for code 72 (MethodHash=2e7b917c) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -47,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+44.44%) : 105889.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,15 +2,19 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 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 -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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 -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -18,22 +22,29 @@ G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrh w0, [x1, #0x0C]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
+ mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 7.50
-G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M39608_IG04
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M39608_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M39608_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M39608_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M39608_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
- ; gcr arg pop 0
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 11.00, instruction count 9, allocated bytes for code 36 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 10.12, instruction count 13, allocated bytes for code 52 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -44,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+44.44%) : 105883.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,15 +2,19 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 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 -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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 -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -18,22 +22,29 @@ G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrh w0, [x1, #0x0C]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
+ mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 7.50
-G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M28613_IG04
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M28613_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M28613_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M28613_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M28613_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
- ; gcr arg pop 0
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 11.00, instruction count 9, allocated bytes for code 36 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 10.12, instruction count 13, allocated bytes for code 52 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -44,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.linux.arm64.Release.mch
-28 (-12.73%) : 56133.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
@@ -2,28 +2,29 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
-; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 7, 6.50) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
+; V02 arg2 [V02,T01] ( 6, 4.72) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
-; V05 tmp2 [V05,T02] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V09 cse0 [V09,T03] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V10 cse1 [V10,T05] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V11 cse2 [V11,T08] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V04 tmp1 [V04,T07] ( 0, 0 ) int -> zero-ref
+; V05 tmp2 [V05,T02] ( 3, 5 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V06 tmp3 [V06,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T04] ( 2, 2 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T05] ( 3, 3 ) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V09 cse0 [V09,T08] ( 2, 2 ) long -> x1 "CSE - moderate"
+; V10 cse1 [V10,T06] ( 2, 1.04) long -> x1 "CSE - moderate"
;
; Lcl frame size = 0
-G_M62011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M62011_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
@@ -33,59 +34,40 @@ G_M62011_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=20 bbWeight=1 PerfScore 3.50
G_M62011_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M62011_IG07
+ cbz x20, G_M62011_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M62011_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- bne G_M62011_IG07
- cmp x1, x0
- beq G_M62011_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M62011_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M62011_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldrsb w0, [x20, #0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M62011_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M62011_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M62011_IG03: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M62011_IG09
+ ;; size=24 bbWeight=0.52 PerfScore 3.12
+G_M62011_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M62011_IG09
+ cbz w0, G_M62011_IG07
+ ;; size=12 bbWeight=1 PerfScore 5.00
+G_M62011_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
mov w0, wzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M62011_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M62011_IG06: ; bbWeight=0.42, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M62011_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.42 PerfScore 1.25
+G_M62011_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
beq G_M62011_IG11
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M62011_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M62011_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -96,9 +78,19 @@ G_M62011_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M62011_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ b G_M62011_IG11
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M62011_IG09: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ ldrsb w0, [x20, #0x08]
+ ;; size=4 bbWeight=0.20 PerfScore 0.60
+G_M62011_IG10: ; bbWeight=0.20, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.60
+G_M62011_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -112,15 +104,15 @@ G_M62011_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M62011_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 11.50
+G_M62011_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 220, prolog size 20, PerfScore 28.88, instruction count 55, allocated bytes for code 220 (MethodHash=768c0dc4) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
+; Total bytes of code 192, prolog size 20, PerfScore 39.53, instruction count 48, allocated bytes for code 192 (MethodHash=768c0dc4) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
; ============================================================
Unwind Info:
@@ -131,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-12.73%) : 56138.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
@@ -2,28 +2,29 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
-; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 7, 6.50) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
+; V02 arg2 [V02,T01] ( 6, 4.72) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
-; V05 tmp2 [V05,T02] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V09 cse0 [V09,T03] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V10 cse1 [V10,T05] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V11 cse2 [V11,T08] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V04 tmp1 [V04,T07] ( 0, 0 ) int -> zero-ref
+; V05 tmp2 [V05,T02] ( 3, 5 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V06 tmp3 [V06,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T04] ( 2, 2 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T05] ( 3, 3 ) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V09 cse0 [V09,T08] ( 2, 2 ) long -> x1 "CSE - moderate"
+; V10 cse1 [V10,T06] ( 2, 1.04) long -> x1 "CSE - moderate"
;
; Lcl frame size = 0
-G_M39939_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M39939_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
@@ -33,59 +34,40 @@ G_M39939_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=20 bbWeight=1 PerfScore 3.50
G_M39939_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M39939_IG07
+ cbz x20, G_M39939_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M39939_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- bne G_M39939_IG07
- cmp x1, x0
- beq G_M39939_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M39939_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M39939_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldrsh w0, [x20, #0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M39939_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M39939_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M39939_IG03: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M39939_IG09
+ ;; size=24 bbWeight=0.52 PerfScore 3.12
+G_M39939_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M39939_IG09
+ cbz w0, G_M39939_IG07
+ ;; size=12 bbWeight=1 PerfScore 5.00
+G_M39939_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
mov w0, wzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M39939_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M39939_IG06: ; bbWeight=0.42, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M39939_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.42 PerfScore 1.25
+G_M39939_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
beq G_M39939_IG11
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M39939_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M39939_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -96,9 +78,19 @@ G_M39939_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M39939_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ b G_M39939_IG11
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M39939_IG09: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ ldrsh w0, [x20, #0x08]
+ ;; size=4 bbWeight=0.20 PerfScore 0.60
+G_M39939_IG10: ; bbWeight=0.20, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.60
+G_M39939_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -112,15 +104,15 @@ G_M39939_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M39939_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 11.50
+G_M39939_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 220, prolog size 20, PerfScore 28.88, instruction count 55, allocated bytes for code 220 (MethodHash=491663fc) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
+; Total bytes of code 192, prolog size 20, PerfScore 39.53, instruction count 48, allocated bytes for code 192 (MethodHash=491663fc) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
; ============================================================
Unwind Info:
@@ -131,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-12.73%) : 56178.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ulong (FullOpts)
@@ -2,28 +2,29 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
-; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 7, 6.50) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
+; V02 arg2 [V02,T01] ( 6, 4.72) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T09] ( 0, 0 ) int -> zero-ref
-; V05 tmp2 [V05,T02] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T06] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T07] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V08 tmp5 [V08,T04] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V09 cse0 [V09,T03] ( 4, 1.75) long -> x0 "CSE - moderate"
-; V10 cse1 [V10,T05] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V11 cse2 [V11,T08] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V04 tmp1 [V04,T07] ( 0, 0 ) int -> zero-ref
+; V05 tmp2 [V05,T02] ( 3, 5 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V06 tmp3 [V06,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T04] ( 2, 2 ) ubyte -> x0 single-def "Inline stloc first use temp"
+; V08 tmp5 [V08,T05] ( 3, 3 ) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V09 cse0 [V09,T08] ( 2, 2 ) long -> x1 "CSE - moderate"
+; V10 cse1 [V10,T06] ( 2, 1.04) long -> x1 "CSE - moderate"
;
; Lcl frame size = 0
-G_M27022_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M27022_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
@@ -33,59 +34,40 @@ G_M27022_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x20]
;; size=20 bbWeight=1 PerfScore 3.50
G_M27022_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M27022_IG07
+ cbz x20, G_M27022_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M27022_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x1, x0
- bne G_M27022_IG07
- cmp x1, x0
- beq G_M27022_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M27022_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M27022_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldrsw x0, [x20, #0x08]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M27022_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M27022_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M27022_IG03: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M27022_IG09
+ ;; size=24 bbWeight=0.52 PerfScore 3.12
+G_M27022_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M27022_IG09
+ cbz w0, G_M27022_IG07
+ ;; size=12 bbWeight=1 PerfScore 5.00
+G_M27022_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27022_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M27022_IG06: ; bbWeight=0.42, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M27022_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.42 PerfScore 1.25
+G_M27022_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
beq G_M27022_IG11
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M27022_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M27022_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -96,9 +78,19 @@ G_M27022_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27022_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ b G_M27022_IG11
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M27022_IG09: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ ldrsw x0, [x20, #0x08]
+ ;; size=4 bbWeight=0.20 PerfScore 0.60
+G_M27022_IG10: ; bbWeight=0.20, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.60
+G_M27022_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -112,15 +104,15 @@ G_M27022_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M27022_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 11.50
+G_M27022_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 220, prolog size 20, PerfScore 28.88, instruction count 55, allocated bytes for code 220 (MethodHash=493a9671) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ulong (FullOpts)
+; Total bytes of code 192, prolog size 20, PerfScore 39.53, instruction count 48, allocated bytes for code 192 (MethodHash=493a9671) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ulong (FullOpts)
; ============================================================
Unwind Info:
@@ -131,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+44 (+23.40%) : 87188.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2352
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T02] ( 5, 4.35) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T06] ( 3, 2.68) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T00] ( 5, 6.75) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T00] ( 5, 6.75) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T05] ( 3, 2.70) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T03] ( 3, 3.78) long -> x0 "spilling expr"
-; V13 rat2 [V13,T04] ( 3, 3.02) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T09] ( 3, 1.30) long -> x0 "runtime lookup"
-; V15 rat4 [V15,T07] ( 3, 1.82) long -> x0 "spilling expr"
-; V16 rat5 [V16,T08] ( 3, 1.46) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T05] ( 3, 2.70) long -> x0 "runtime lookup"
+; V10 rat1 [V10,T03] ( 3, 3.78) long -> x0 "spilling expr"
+; V11 rat2 [V11,T04] ( 3, 3.02) long -> x0 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T09] ( 3, 1.30) long -> x0 "runtime lookup"
+; V13 rat4 [V13,T07] ( 3, 1.82) long -> x0 "spilling expr"
+; V14 rat5 [V14,T08] ( 3, 1.46) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x2, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbz w20, G_M34955_IG09
@@ -65,24 +64,36 @@ G_M34955_IG06: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M34955_IG07: ; bbWeight=0.68, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=28 bbWeight=0.68 PerfScore 5.06
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=60 bbWeight=0.68 PerfScore 9.79
G_M34955_IG08: ; bbWeight=0.68, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.68 PerfScore 2.03
+ ;; size=16 bbWeight=0.68 PerfScore 3.38
G_M34955_IG09: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
ldr x0, [x2, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #24
@@ -110,12 +121,13 @@ G_M34955_IG13: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=8 bbWeight=0.32 PerfScore 1.30
G_M34955_IG14: ; bbWeight=0.32, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.32 PerfScore 0.97
+ ;; size=16 bbWeight=0.32 PerfScore 1.62
-; Total bytes of code 188, prolog size 16, PerfScore 30.28, instruction count 47, allocated bytes for code 188 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 232, prolog size 20, PerfScore 38.01, instruction count 58, allocated bytes for code 232 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -126,7 +138,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -137,10 +149,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
+44 (+23.40%) : 87496.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6729
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T01] ( 5, 3.55) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T06] ( 3, 2.27) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T05] ( 5, 2.74) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T05] ( 5, 2.74) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T09] ( 3, 1.09) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T07] ( 3, 1.53) long -> x0 "spilling expr"
-; V13 rat2 [V13,T08] ( 3, 1.23) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T04] ( 3, 2.91) long -> x0 "runtime lookup"
-; V15 rat4 [V15,T02] ( 3, 4.07) long -> x0 "spilling expr"
-; V16 rat5 [V16,T03] ( 3, 3.25) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T09] ( 3, 1.09) long -> x0 "runtime lookup"
+; V10 rat1 [V10,T07] ( 3, 1.53) long -> x0 "spilling expr"
+; V11 rat2 [V11,T08] ( 3, 1.23) long -> x0 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T04] ( 3, 2.91) long -> x0 "runtime lookup"
+; V13 rat4 [V13,T02] ( 3, 4.07) long -> x0 "spilling expr"
+; V14 rat5 [V14,T03] ( 3, 3.25) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x2, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbnz w20, G_M34955_IG06
@@ -80,24 +79,36 @@ G_M34955_IG09: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M34955_IG10: ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=28 bbWeight=0.27 PerfScore 2.05
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=60 bbWeight=0.27 PerfScore 3.97
G_M34955_IG11: ; bbWeight=0.27, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.27 PerfScore 0.82
+ ;; size=16 bbWeight=0.27 PerfScore 1.37
G_M34955_IG12: ; bbWeight=0.26, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
mov x0, x2
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -112,12 +123,13 @@ G_M34955_IG13: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=8 bbWeight=0.73 PerfScore 2.91
G_M34955_IG14: ; bbWeight=0.73, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.73 PerfScore 2.18
+ ;; size=16 bbWeight=0.73 PerfScore 3.63
-; Total bytes of code 188, prolog size 16, PerfScore 28.88, instruction count 47, allocated bytes for code 188 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 232, prolog size 20, PerfScore 33.79, instruction count 58, allocated bytes for code 232 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -128,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -139,10 +151,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
+44 (+23.40%) : 87876.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1362
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T01] ( 5, 4.15) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T05] ( 3, 2.57) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T02] ( 5, 5.75) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T02] ( 5, 5.75) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T07] ( 3, 2.30) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T03] ( 3, 3.22) long -> x0 "spilling expr"
-; V13 rat2 [V13,T04] ( 3, 2.58) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T09] ( 3, 1.70) long -> x0 "runtime lookup"
-; V15 rat4 [V15,T06] ( 3, 2.38) long -> x0 "spilling expr"
-; V16 rat5 [V16,T08] ( 3, 1.90) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T07] ( 3, 2.30) long -> x0 "runtime lookup"
+; V10 rat1 [V10,T03] ( 3, 3.22) long -> x0 "spilling expr"
+; V11 rat2 [V11,T04] ( 3, 2.58) long -> x0 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T09] ( 3, 1.70) long -> x0 "runtime lookup"
+; V13 rat4 [V13,T06] ( 3, 2.38) long -> x0 "spilling expr"
+; V14 rat5 [V14,T08] ( 3, 1.90) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x2, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbz w20, G_M34955_IG09
@@ -65,24 +64,36 @@ G_M34955_IG06: ; bbWeight=0.21, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M34955_IG07: ; bbWeight=0.57, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=28 bbWeight=0.57 PerfScore 4.31
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=60 bbWeight=0.57 PerfScore 8.34
G_M34955_IG08: ; bbWeight=0.57, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.57 PerfScore 1.72
+ ;; size=16 bbWeight=0.57 PerfScore 2.87
G_M34955_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
ldr x0, [x2, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #24
@@ -110,12 +121,13 @@ G_M34955_IG13: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=8 bbWeight=0.43 PerfScore 1.70
G_M34955_IG14: ; bbWeight=0.43, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.43 PerfScore 1.28
+ ;; size=16 bbWeight=0.43 PerfScore 2.13
-; Total bytes of code 188, prolog size 16, PerfScore 29.93, instruction count 47, allocated bytes for code 188 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 232, prolog size 20, PerfScore 36.96, instruction count 58, allocated bytes for code 232 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -126,7 +138,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -137,10 +149,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-40 (-71.43%) : 188339.dasm - System.Runtime.InteropServices.RuntimeInformationTests.CheckPlatformTests:CheckLinux():this (FullOpts)
@@ -2,10 +2,12 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 31 inlinees with PGO data; 111 single block inlinees; 12 inlinees without PGO data
+; 31 inlinees with PGO data; 113 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Runtime.InteropServices.RuntimeInformationTests.CheckPlatformTests>
@@ -26,7 +28,7 @@
;* V15 tmp14 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V16 tmp15 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V17 tmp16 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V18 tmp17 [V18,T01] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V18 tmp17 [V18,T00] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V19 tmp18 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp19 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V21 tmp20 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -36,7 +38,7 @@
;* V25 tmp24 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V26 tmp25 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V27 tmp26 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V28 tmp27 [V28,T02] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V28 tmp27 [V28,T01] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V29 tmp28 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp29 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V31 tmp30 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -46,7 +48,7 @@
;* V35 tmp34 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V36 tmp35 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V37 tmp36 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V38 tmp37 [V38,T03] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V38 tmp37 [V38,T02] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V39 tmp38 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp39 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V41 tmp40 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -56,7 +58,7 @@
;* V45 tmp44 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V46 tmp45 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V47 tmp46 [V47 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V48 tmp47 [V48,T04] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V48 tmp47 [V48,T03] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V49 tmp48 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp49 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V51 tmp50 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -66,7 +68,7 @@
;* V55 tmp54 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V56 tmp55 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V57 tmp56 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V58 tmp57 [V58,T05] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V58 tmp57 [V58,T04] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V59 tmp58 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V60 tmp59 [V60 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V61 tmp60 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -76,7 +78,7 @@
;* V65 tmp64 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V66 tmp65 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V67 tmp66 [V67 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V68 tmp67 [V68,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V68 tmp67 [V68,T05] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V69 tmp68 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V70 tmp69 [V70 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V71 tmp70 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -86,7 +88,7 @@
;* V75 tmp74 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V76 tmp75 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V77 tmp76 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V78 tmp77 [V78,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V78 tmp77 [V78,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V79 tmp78 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V80 tmp79 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V81 tmp80 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -96,7 +98,7 @@
;* V85 tmp84 [V85 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V86 tmp85 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V87 tmp86 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V88 tmp87 [V88,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V88 tmp87 [V88,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V89 tmp88 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V90 tmp89 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V91 tmp90 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -106,7 +108,7 @@
;* V95 tmp94 [V95 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V96 tmp95 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V97 tmp96 [V97 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V98 tmp97 [V98,T09] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V98 tmp97 [V98,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V99 tmp98 [V99 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V100 tmp99 [V100 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V101 tmp100 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -116,7 +118,7 @@
;* V105 tmp104 [V105 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V106 tmp105 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V107 tmp106 [V107 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V108 tmp107 [V108,T10] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V108 tmp107 [V108,T09] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V109 tmp108 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V110 tmp109 [V110 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V111 tmp110 [V111 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -124,7 +126,7 @@
;* V113 tmp112 [V113 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V114 tmp113 [V114 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V115 tmp114 [V115 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V116 tmp115 [V116,T11] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V116 tmp115 [V116,T10] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V117 tmp116 [V117 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V118 tmp117 [V118 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V119 tmp118 [V119 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -132,7 +134,7 @@
;* V121 tmp120 [V121 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V122 tmp121 [V122 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V123 tmp122 [V123 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V124 tmp123 [V124,T12] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V124 tmp123 [V124,T11] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V125 tmp124 [V125 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V126 tmp125 [V126 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V127 tmp126 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -140,98 +142,98 @@
;* V129 tmp128 [V129 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V130 tmp129 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V131 tmp130 [V131 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V132 tmp131 [V132,T13] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V132 tmp131 [V132,T12] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V133 tmp132 [V133 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V134 tmp133 [V134 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V135 tmp134 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V136 tmp135 [V136 ] ( 0, 0 ) ref -> zero-ref "field V02.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V137 tmp136 [V137 ] ( 0, 0 ) ref -> zero-ref "field V03.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V138 tmp137 [V138 ] ( 0, 0 ) ref -> zero-ref "field V04.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V139 tmp138 [V139 ] ( 0, 0 ) ref -> zero-ref "field V05.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V140 tmp139 [V140 ] ( 0, 0 ) ref -> zero-ref "field V06.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V141 tmp140 [V141 ] ( 0, 0 ) ref -> zero-ref "field V07.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V142 tmp141 [V142 ] ( 0, 0 ) ref -> zero-ref "field V08.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V143 tmp142 [V143 ] ( 0, 0 ) ref -> zero-ref "field V09.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V144 tmp143 [V144 ] ( 0, 0 ) ref -> zero-ref "field V10.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V145 tmp144 [V145 ] ( 0, 0 ) ref -> zero-ref "field V11.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V146 tmp145 [V146 ] ( 0, 0 ) ref -> zero-ref "field V12.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V147 tmp146 [V147 ] ( 0, 0 ) ref -> zero-ref "field V13.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V148 tmp147 [V148 ] ( 0, 0 ) ref -> zero-ref "field V14.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V149 tmp148 [V149,T14] ( 0, 0 ) ref -> zero-ref single-def "field V15.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V150 tmp149 [V150,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.hasValue (fldOffset=0x0)" P-INDEP
-;* V151 tmp150 [V151,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.value (fldOffset=0x1)" P-INDEP
-;* V152 tmp151 [V152 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V22.hasValue (fldOffset=0x0)" P-INDEP
-;* V153 tmp152 [V153 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V22.value (fldOffset=0x1)" P-INDEP
-;* V154 tmp153 [V154 ] ( 0, 0 ) ref -> zero-ref single-def "field V23.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V155 tmp154 [V155 ] ( 0, 0 ) ref -> zero-ref single-def "field V25.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V156 tmp155 [V156,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V30.hasValue (fldOffset=0x0)" P-INDEP
-;* V157 tmp156 [V157,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V30.value (fldOffset=0x1)" P-INDEP
-;* V158 tmp157 [V158 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V32.hasValue (fldOffset=0x0)" P-INDEP
-;* V159 tmp158 [V159 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V32.value (fldOffset=0x1)" P-INDEP
-;* V160 tmp159 [V160 ] ( 0, 0 ) ref -> zero-ref single-def "field V33.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V161 tmp160 [V161 ] ( 0, 0 ) ref -> zero-ref single-def "field V35.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V162 tmp161 [V162,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V40.hasValue (fldOffset=0x0)" P-INDEP
-;* V163 tmp162 [V163,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V40.value (fldOffset=0x1)" P-INDEP
-;* V164 tmp163 [V164 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.hasValue (fldOffset=0x0)" P-INDEP
-;* V165 tmp164 [V165 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.value (fldOffset=0x1)" P-INDEP
-;* V166 tmp165 [V166 ] ( 0, 0 ) ref -> zero-ref single-def "field V43.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V167 tmp166 [V167 ] ( 0, 0 ) ref -> zero-ref single-def "field V45.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V168 tmp167 [V168,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.hasValue (fldOffset=0x0)" P-INDEP
-;* V169 tmp168 [V169,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.value (fldOffset=0x1)" P-INDEP
-;* V170 tmp169 [V170 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V52.hasValue (fldOffset=0x0)" P-INDEP
-;* V171 tmp170 [V171 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V52.value (fldOffset=0x1)" P-INDEP
-;* V172 tmp171 [V172 ] ( 0, 0 ) ref -> zero-ref single-def "field V53.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V173 tmp172 [V173 ] ( 0, 0 ) ref -> zero-ref single-def "field V55.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V174 tmp173 [V174,T26] ( 0, 0 ) ubyte -> zero-ref single-def "field V60.hasValue (fldOffset=0x0)" P-INDEP
-;* V175 tmp174 [V175,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V60.value (fldOffset=0x1)" P-INDEP
-;* V176 tmp175 [V176 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V62.hasValue (fldOffset=0x0)" P-INDEP
-;* V177 tmp176 [V177 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V62.value (fldOffset=0x1)" P-INDEP
-;* V178 tmp177 [V178 ] ( 0, 0 ) ref -> zero-ref single-def "field V63.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V179 tmp178 [V179 ] ( 0, 0 ) ref -> zero-ref single-def "field V65.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V180 tmp179 [V180,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP
-;* V181 tmp180 [V181,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.value (fldOffset=0x1)" P-INDEP
-;* V182 tmp181 [V182 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V72.hasValue (fldOffset=0x0)" P-INDEP
-;* V183 tmp182 [V183 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V72.value (fldOffset=0x1)" P-INDEP
-;* V184 tmp183 [V184 ] ( 0, 0 ) ref -> zero-ref single-def "field V73.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V185 tmp184 [V185 ] ( 0, 0 ) ref -> zero-ref single-def "field V75.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V186 tmp185 [V186,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V80.hasValue (fldOffset=0x0)" P-INDEP
-;* V187 tmp186 [V187,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V80.value (fldOffset=0x1)" P-INDEP
-;* V188 tmp187 [V188 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V82.hasValue (fldOffset=0x0)" P-INDEP
-;* V189 tmp188 [V189 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V82.value (fldOffset=0x1)" P-INDEP
-;* V190 tmp189 [V190 ] ( 0, 0 ) ref -> zero-ref single-def "field V83.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V191 tmp190 [V191 ] ( 0, 0 ) ref -> zero-ref single-def "field V85.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V192 tmp191 [V192,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V90.hasValue (fldOffset=0x0)" P-INDEP
-;* V193 tmp192 [V193,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V90.value (fldOffset=0x1)" P-INDEP
-;* V194 tmp193 [V194 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V92.hasValue (fldOffset=0x0)" P-INDEP
-;* V195 tmp194 [V195 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V92.value (fldOffset=0x1)" P-INDEP
-;* V196 tmp195 [V196 ] ( 0, 0 ) ref -> zero-ref single-def "field V93.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V197 tmp196 [V197 ] ( 0, 0 ) ref -> zero-ref single-def "field V95.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V198 tmp197 [V198,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V100.hasValue (fldOffset=0x0)" P-INDEP
-;* V199 tmp198 [V199,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V100.value (fldOffset=0x1)" P-INDEP
-;* V200 tmp199 [V200 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V102.hasValue (fldOffset=0x0)" P-INDEP
-;* V201 tmp200 [V201 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V102.value (fldOffset=0x1)" P-INDEP
-;* V202 tmp201 [V202 ] ( 0, 0 ) ref -> zero-ref single-def "field V103.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V203 tmp202 [V203 ] ( 0, 0 ) ref -> zero-ref single-def "field V105.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V204 tmp203 [V204,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V110.hasValue (fldOffset=0x0)" P-INDEP
-;* V205 tmp204 [V205,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V110.value (fldOffset=0x1)" P-INDEP
-;* V206 tmp205 [V206 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.hasValue (fldOffset=0x0)" P-INDEP
-;* V207 tmp206 [V207 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.value (fldOffset=0x1)" P-INDEP
-;* V208 tmp207 [V208,T15] ( 0, 0 ) ref -> zero-ref single-def "field V113.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V209 tmp208 [V209,T38] ( 0, 0 ) ubyte -> zero-ref single-def "field V118.hasValue (fldOffset=0x0)" P-INDEP
-;* V210 tmp209 [V210,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V118.value (fldOffset=0x1)" P-INDEP
-;* V211 tmp210 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V120.hasValue (fldOffset=0x0)" P-INDEP
-;* V212 tmp211 [V212 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V120.value (fldOffset=0x1)" P-INDEP
-;* V213 tmp212 [V213,T16] ( 0, 0 ) ref -> zero-ref single-def "field V121.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V214 tmp213 [V214,T40] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.hasValue (fldOffset=0x0)" P-INDEP
-;* V215 tmp214 [V215,T41] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.value (fldOffset=0x1)" P-INDEP
-;* V216 tmp215 [V216 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V128.hasValue (fldOffset=0x0)" P-INDEP
-;* V217 tmp216 [V217 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V128.value (fldOffset=0x1)" P-INDEP
-;* V218 tmp217 [V218,T17] ( 0, 0 ) ref -> zero-ref single-def "field V129.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V219 tmp218 [V219,T42] ( 0, 0 ) ubyte -> zero-ref single-def "field V134.hasValue (fldOffset=0x0)" P-INDEP
-;* V220 tmp219 [V220,T43] ( 0, 0 ) ubyte -> zero-ref single-def "field V134.value (fldOffset=0x1)" P-INDEP
-;* V221 tmp220 [V221 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V222 tmp221 [V222 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V223 tmp222 [V223 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V136 tmp135 [V136 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
+;* V137 tmp136 [V137 ] ( 0, 0 ) ref -> zero-ref "field V02.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V138 tmp137 [V138 ] ( 0, 0 ) ref -> zero-ref "field V03.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V139 tmp138 [V139 ] ( 0, 0 ) ref -> zero-ref "field V04.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V140 tmp139 [V140 ] ( 0, 0 ) ref -> zero-ref "field V05.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V141 tmp140 [V141 ] ( 0, 0 ) ref -> zero-ref "field V06.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V142 tmp141 [V142 ] ( 0, 0 ) ref -> zero-ref "field V07.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V143 tmp142 [V143 ] ( 0, 0 ) ref -> zero-ref "field V08.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V144 tmp143 [V144 ] ( 0, 0 ) ref -> zero-ref "field V09.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V145 tmp144 [V145 ] ( 0, 0 ) ref -> zero-ref "field V10.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V146 tmp145 [V146 ] ( 0, 0 ) ref -> zero-ref "field V11.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V147 tmp146 [V147 ] ( 0, 0 ) ref -> zero-ref "field V12.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V148 tmp147 [V148 ] ( 0, 0 ) ref -> zero-ref "field V13.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V149 tmp148 [V149 ] ( 0, 0 ) ref -> zero-ref "field V14.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V150 tmp149 [V150,T13] ( 0, 0 ) ref -> zero-ref single-def "field V15.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V151 tmp150 [V151,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.hasValue (fldOffset=0x0)" P-INDEP
+;* V152 tmp151 [V152,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.value (fldOffset=0x1)" P-INDEP
+;* V153 tmp152 [V153 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V22.hasValue (fldOffset=0x0)" P-INDEP
+;* V154 tmp153 [V154 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V22.value (fldOffset=0x1)" P-INDEP
+;* V155 tmp154 [V155 ] ( 0, 0 ) ref -> zero-ref single-def "field V23.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V156 tmp155 [V156 ] ( 0, 0 ) ref -> zero-ref single-def "field V25.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V157 tmp156 [V157,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V30.hasValue (fldOffset=0x0)" P-INDEP
+;* V158 tmp157 [V158,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V30.value (fldOffset=0x1)" P-INDEP
+;* V159 tmp158 [V159 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V32.hasValue (fldOffset=0x0)" P-INDEP
+;* V160 tmp159 [V160 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V32.value (fldOffset=0x1)" P-INDEP
+;* V161 tmp160 [V161 ] ( 0, 0 ) ref -> zero-ref single-def "field V33.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V162 tmp161 [V162 ] ( 0, 0 ) ref -> zero-ref single-def "field V35.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V163 tmp162 [V163,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V40.hasValue (fldOffset=0x0)" P-INDEP
+;* V164 tmp163 [V164,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V40.value (fldOffset=0x1)" P-INDEP
+;* V165 tmp164 [V165 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.hasValue (fldOffset=0x0)" P-INDEP
+;* V166 tmp165 [V166 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V42.value (fldOffset=0x1)" P-INDEP
...
-36 (-34.62%) : 116531.dasm - System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodingsDefaultValueShouldEqualFalse() (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Formats.Cbor.CborWriter>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 6, 12 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
+; V02 tmp1 [V02,T00] ( 6, 12 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref
@@ -29,56 +31,45 @@
;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.value (fldOffset=0x1)" P-INDEP
;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M43591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M43591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w0, #1
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E // code for System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
+ mov w1, #1
+ str w1, [x0, #0x54]
+ strh wzr, [x0, #0x5A]
+ strb w1, [x0, #0x60]
+ str w1, [x0, #0x64]
+ movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- mov w0, #1
- str w0, [x19, #0x54]
- strh wzr, [x19, #0x5A]
- strb w0, [x19, #0x60]
- str w0, [x19, #0x64]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- str x0, [x19, #0x28]
- ;; size=80 bbWeight=1 PerfScore 16.00
+ str x1, [x0, #0x28]
+ ;; size=52 bbWeight=1 PerfScore 9.50
G_M43591_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 12, PerfScore 22.50, instruction count 26, allocated bytes for code 104 (MethodHash=367955b8) for method System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodings_DefaultValue_ShouldEqualFalse() (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 13.00, instruction count 17, allocated bytes for code 68 (MethodHash=367955b8) for method System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodings_DefaultValue_ShouldEqualFalse() (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 : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -86,10 +77,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-40 (-22.22%) : 297908.dasm - System.Threading.Tasks.Tests.ValueTaskTests:GenericEqualsValueTask():this (FullOpts)
@@ -2,10 +2,12 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 19 inlinees with PGO data; 91 single block inlinees; 35 inlinees without PGO data
+; 19 inlinees with PGO data; 93 single block inlinees; 36 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.Tests.ValueTaskTests>
@@ -30,26 +32,26 @@
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V21 tmp18 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
-;* V22 tmp19 [V22,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V22 tmp19 [V22,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V24 tmp21 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V27 tmp24 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V28 tmp25 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V29 tmp26 [V29,T11] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V29 tmp26 [V29,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V30 tmp27 [V30 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V31 tmp28 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp31 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V35 tmp32 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V36 tmp33 [V36,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V36 tmp33 [V36,T11] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V37 tmp34 [V37 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V38 tmp35 [V38,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V38 tmp35 [V38,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V40 tmp37 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
-;* V41 tmp38 [V41,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V41 tmp38 [V41,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V43 tmp40 [V43 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V44 tmp41 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -59,9 +61,9 @@
;* V48 tmp45 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V49 tmp46 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V50 tmp47 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V51 tmp48 [V51,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V51 tmp48 [V51,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V52 tmp49 [V52 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V53 tmp50 [V53,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V53 tmp50 [V53,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V54 tmp51 [V54 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V55 tmp52 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V56 tmp53 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -74,9 +76,9 @@
;* V63 tmp60 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V64 tmp61 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V65 tmp62 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V66 tmp63 [V66,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V66 tmp63 [V66,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V67 tmp64 [V67 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V68 tmp65 [V68,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V68 tmp65 [V68,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V69 tmp66 [V69 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V70 tmp67 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V71 tmp68 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -89,9 +91,9 @@
;* V78 tmp75 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V79 tmp76 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V80 tmp77 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V81 tmp78 [V81,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V81 tmp78 [V81,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V82 tmp79 [V82 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V83 tmp80 [V83,T20] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V83 tmp80 [V83,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V84 tmp81 [V84 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V85 tmp82 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V86 tmp83 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -104,7 +106,7 @@
;* V93 tmp90 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V94 tmp91 [V94 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V95 tmp92 [V95 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V96 tmp93 [V96,T06] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
+;* V96 tmp93 [V96,T05] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V98 tmp95 [V98 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V99 tmp96 [V99,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[int]>
@@ -112,14 +114,14 @@
;* V101 tmp98 [V101 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V102 tmp99 [V102 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V103 tmp100 [V103 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V104 tmp101 [V104,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V104 tmp101 [V104,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V105 tmp102 [V105 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V106 tmp103 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V107 tmp104 [V107 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V108 tmp105 [V108 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V109 tmp106 [V109 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V110 tmp107 [V110 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V111 tmp108 [V111,T07] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
+;* V111 tmp108 [V111,T06] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
;* V112 tmp109 [V112 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V114 tmp111 [V114,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[int]>
@@ -127,7 +129,7 @@
;* V116 tmp113 [V116 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V117 tmp114 [V117 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V118 tmp115 [V118 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V119 tmp116 [V119,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V119 tmp116 [V119,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V120 tmp117 [V120 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V121 tmp118 [V121 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V122 tmp119 [V122 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
@@ -136,170 +138,173 @@
;* V125 tmp122 [V125 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
;* V127 tmp124 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
-; V128 tmp125 [V128,T05] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
+; V128 tmp125 [V128,T04] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
; V129 tmp126 [V129,T02] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
-;* V130 tmp127 [V130,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V130 tmp127 [V130,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V131 tmp128 [V131 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V132 tmp129 [V132 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V133 tmp130 [V133 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V134 tmp131 [V134 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V135 tmp132 [V135 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V136 tmp133 [V136,T08] ( 0, 0 ) ref -> zero-ref "field V01._obj (fldOffset=0x0)" P-INDEP
-;* V137 tmp134 [V137,T24] ( 0, 0 ) int -> zero-ref "field V01._result (fldOffset=0x8)" P-INDEP
-;* V138 tmp135 [V138,T25] ( 0, 0 ) short -> zero-ref "field V01._token (fldOffset=0xc)" P-INDEP
-;* V139 tmp136 [V139 ] ( 0, 0 ) ubyte -> zero-ref "field V01._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V140 tmp137 [V140 ] ( 0, 0 ) ref -> zero-ref "field V02._obj (fldOffset=0x0)" P-INDEP
-;* V141 tmp138 [V141 ] ( 0, 0 ) ref -> zero-ref "field V02._result (fldOffset=0x8)" P-INDEP
-;* V142 tmp139 [V142 ] ( 0, 0 ) short -> zero-ref "field V02._token (fldOffset=0x10)" P-INDEP
-;* V143 tmp140 [V143 ] ( 0, 0 ) ubyte -> zero-ref "field V02._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V144 tmp141 [V144 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._obj (fldOffset=0x0)" P-INDEP
-;* V145 tmp142 [V145 ] ( 0, 0 ) int -> zero-ref single-def "field V04._result (fldOffset=0x8)" P-INDEP
-;* V146 tmp143 [V146 ] ( 0, 0 ) short -> zero-ref single-def "field V04._token (fldOffset=0xc)" P-INDEP
-;* V147 tmp144 [V147 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V148 tmp145 [V148 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._obj (fldOffset=0x0)" P-INDEP
-;* V149 tmp146 [V149 ] ( 0, 0 ) int -> zero-ref single-def "field V05._result (fldOffset=0x8)" P-INDEP
-;* V150 tmp147 [V150 ] ( 0, 0 ) short -> zero-ref single-def "field V05._token (fldOffset=0xc)" P-INDEP
-;* V151 tmp148 [V151 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V05._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V152 tmp149 [V152 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._obj (fldOffset=0x0)" P-INDEP
-;* V153 tmp150 [V153 ] ( 0, 0 ) int -> zero-ref single-def "field V06._result (fldOffset=0x8)" P-INDEP
-;* V154 tmp151 [V154 ] ( 0, 0 ) short -> zero-ref single-def "field V06._token (fldOffset=0xc)" P-INDEP
-;* V155 tmp152 [V155 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V156 tmp153 [V156 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._obj (fldOffset=0x0)" P-INDEP
-;* V157 tmp154 [V157 ] ( 0, 0 ) int -> zero-ref single-def "field V07._result (fldOffset=0x8)" P-INDEP
-;* V158 tmp155 [V158 ] ( 0, 0 ) short -> zero-ref single-def "field V07._token (fldOffset=0xc)" P-INDEP
-;* V159 tmp156 [V159 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V160 tmp157 [V160 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._obj (fldOffset=0x0)" P-INDEP
-;* V161 tmp158 [V161 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._result (fldOffset=0x8)" P-INDEP
-;* V162 tmp159 [V162 ] ( 0, 0 ) short -> zero-ref single-def "field V08._token (fldOffset=0x10)" P-INDEP
-;* V163 tmp160 [V163 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V164 tmp161 [V164 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._obj (fldOffset=0x0)" P-INDEP
-;* V165 tmp162 [V165 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._result (fldOffset=0x8)" P-INDEP
-;* V166 tmp163 [V166 ] ( 0, 0 ) short -> zero-ref single-def "field V09._token (fldOffset=0x10)" P-INDEP
-;* V167 tmp164 [V167 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V09._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V168 tmp165 [V168 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._obj (fldOffset=0x0)" P-INDEP
-;* V169 tmp166 [V169 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._result (fldOffset=0x8)" P-INDEP
-;* V170 tmp167 [V170 ] ( 0, 0 ) short -> zero-ref single-def "field V10._token (fldOffset=0x10)" P-INDEP
-;* V171 tmp168 [V171 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V172 tmp169 [V172 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._obj (fldOffset=0x0)" P-INDEP
-;* V173 tmp170 [V173 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._result (fldOffset=0x8)" P-INDEP
-;* V174 tmp171 [V174 ] ( 0, 0 ) short -> zero-ref single-def "field V11._token (fldOffset=0x10)" P-INDEP
-;* V175 tmp172 [V175 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V11._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V176 tmp173 [V176 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._obj (fldOffset=0x0)" P-INDEP
-;* V177 tmp174 [V177 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._result (fldOffset=0x8)" P-INDEP
-;* V178 tmp175 [V178 ] ( 0, 0 ) short -> zero-ref single-def "field V12._token (fldOffset=0x10)" P-INDEP
-;* V179 tmp176 [V179 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V12._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V180 tmp177 [V180 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._obj (fldOffset=0x0)" P-INDEP
-;* V181 tmp178 [V181 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._result (fldOffset=0x8)" P-INDEP
-;* V182 tmp179 [V182 ] ( 0, 0 ) short -> zero-ref single-def "field V13._token (fldOffset=0x10)" P-INDEP
-;* V183 tmp180 [V183 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V184 tmp181 [V184 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._obj (fldOffset=0x0)" P-INDEP
-;* V185 tmp182 [V185 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._result (fldOffset=0x8)" P-INDEP
-;* V186 tmp183 [V186 ] ( 0, 0 ) short -> zero-ref single-def "field V14._token (fldOffset=0x10)" P-INDEP
-;* V187 tmp184 [V187 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V188 tmp185 [V188 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._obj (fldOffset=0x0)" P-INDEP
-;* V189 tmp186 [V189 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._result (fldOffset=0x8)" P-INDEP
-;* V190 tmp187 [V190 ] ( 0, 0 ) short -> zero-ref single-def "field V15._token (fldOffset=0x10)" P-INDEP
-;* V191 tmp188 [V191 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V192 tmp189 [V192,T09] ( 0, 0 ) ref -> zero-ref single-def "field V16._obj (fldOffset=0x0)" P-INDEP
-;* V193 tmp190 [V193,T26] ( 0, 0 ) int -> zero-ref single-def "field V16._result (fldOffset=0x8)" P-INDEP
-;* V194 tmp191 [V194,T27] ( 0, 0 ) short -> zero-ref single-def "field V16._token (fldOffset=0xc)" P-INDEP
-;* V195 tmp192 [V195 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V196 tmp193 [V196 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._obj (fldOffset=0x0)" P-INDEP
-;* V197 tmp194 [V197 ] ( 0, 0 ) int -> zero-ref single-def "field V17._result (fldOffset=0x8)" P-INDEP
-;* V198 tmp195 [V198 ] ( 0, 0 ) short -> zero-ref single-def "field V17._token (fldOffset=0xc)" P-INDEP
-;* V199 tmp196 [V199 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V200 tmp197 [V200 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._obj (fldOffset=0x0)" P-INDEP
-;* V201 tmp198 [V201 ] ( 0, 0 ) int -> zero-ref single-def "field V18._result (fldOffset=0x8)" P-INDEP
-;* V202 tmp199 [V202 ] ( 0, 0 ) short -> zero-ref single-def "field V18._token (fldOffset=0xc)" P-INDEP
-;* V203 tmp200 [V203 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V204 tmp201 [V204 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._obj (fldOffset=0x0)" P-INDEP
-;* V205 tmp202 [V205 ] ( 0, 0 ) int -> zero-ref single-def "field V19._result (fldOffset=0x8)" P-INDEP
-;* V206 tmp203 [V206 ] ( 0, 0 ) short -> zero-ref single-def "field V19._token (fldOffset=0xc)" P-INDEP
-;* V207 tmp204 [V207 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V208 tmp205 [V208 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._obj (fldOffset=0x0)" P-INDEP
-;* V209 tmp206 [V209 ] ( 0, 0 ) int -> zero-ref single-def "field V20._result (fldOffset=0x8)" P-INDEP
-;* V210 tmp207 [V210 ] ( 0, 0 ) short -> zero-ref single-def "field V20._token (fldOffset=0xc)" P-INDEP
-;* V211 tmp208 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V212 tmp209 [V212 ] ( 0, 0 ) ref -> zero-ref single-def "field V21._obj (fldOffset=0x0)" P-INDEP
-;* V213 tmp210 [V213 ] ( 0, 0 ) int -> zero-ref single-def "field V21._result (fldOffset=0x8)" P-INDEP
-;* V214 tmp211 [V214 ] ( 0, 0 ) short -> zero-ref single-def "field V21._token (fldOffset=0xc)" P-INDEP
-;* V215 tmp212 [V215 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V21._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V216 tmp213 [V216 ] ( 0, 0 ) ref -> zero-ref single-def "field V23._obj (fldOffset=0x0)" P-INDEP
-;* V217 tmp214 [V217 ] ( 0, 0 ) int -> zero-ref single-def "field V23._result (fldOffset=0x8)" P-INDEP
-;* V218 tmp215 [V218 ] ( 0, 0 ) short -> zero-ref single-def "field V23._token (fldOffset=0xc)" P-INDEP
-;* V219 tmp216 [V219 ] ( 0, 0 ) ubyte -> zero-ref "field V23._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V220 tmp217 [V220,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V27.hasValue (fldOffset=0x0)" P-INDEP
-;* V221 tmp218 [V221,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V27.value (fldOffset=0x1)" P-INDEP
-;* V222 tmp219 [V222 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.hasValue (fldOffset=0x0)" P-INDEP
-;* V223 tmp220 [V223 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.value (fldOffset=0x1)" P-INDEP
-;* V224 tmp221 [V224 ] ( 0, 0 ) ref -> zero-ref single-def "field V30._obj (fldOffset=0x0)" P-INDEP
-;* V225 tmp222 [V225 ] ( 0, 0 ) int -> zero-ref single-def "field V30._result (fldOffset=0x8)" P-INDEP
-;* V226 tmp223 [V226 ] ( 0, 0 ) short -> zero-ref single-def "field V30._token (fldOffset=0xc)" P-INDEP
-;* V227 tmp224 [V227 ] ( 0, 0 ) ubyte -> zero-ref "field V30._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V228 tmp225 [V228,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V34.hasValue (fldOffset=0x0)" P-INDEP
-;* V229 tmp226 [V229,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V34.value (fldOffset=0x1)" P-INDEP
-;* V230 tmp227 [V230 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.hasValue (fldOffset=0x0)" P-INDEP
-;* V231 tmp228 [V231 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.value (fldOffset=0x1)" P-INDEP
-;* V232 tmp229 [V232 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._obj (fldOffset=0x0)" P-INDEP
-;* V233 tmp230 [V233 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._result (fldOffset=0x8)" P-INDEP
-;* V234 tmp231 [V234 ] ( 0, 0 ) short -> zero-ref single-def "field V37._token (fldOffset=0x10)" P-INDEP
-;* V235 tmp232 [V235 ] ( 0, 0 ) ubyte -> zero-ref "field V37._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V236 tmp233 [V236,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V237 tmp234 [V237,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.value (fldOffset=0x1)" P-INDEP
-;* V238 tmp235 [V238 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.hasValue (fldOffset=0x0)" P-INDEP
-;* V239 tmp236 [V239 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.value (fldOffset=0x1)" P-INDEP
-;* V240 tmp237 [V240 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._obj (fldOffset=0x0)" P-INDEP
-;* V241 tmp238 [V241 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._result (fldOffset=0x8)" P-INDEP
-;* V242 tmp239 [V242 ] ( 0, 0 ) short -> zero-ref single-def "field V52._token (fldOffset=0x10)" P-INDEP
-;* V243 tmp240 [V243 ] ( 0, 0 ) ubyte -> zero-ref "field V52._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V244 tmp241 [V244,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.hasValue (fldOffset=0x0)" P-INDEP
-;* V245 tmp242 [V245,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.value (fldOffset=0x1)" P-INDEP
-;* V246 tmp243 [V246 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V65.hasValue (fldOffset=0x0)" P-INDEP
-;* V247 tmp244 [V247 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V65.value (fldOffset=0x1)" P-INDEP
-;* V248 tmp245 [V248 ] ( 0, 0 ) ref -> zero-ref single-def "field V67._obj (fldOffset=0x0)" P-INDEP
-;* V249 tmp246 [V249 ] ( 0, 0 ) ref -> zero-ref single-def "field V67._result (fldOffset=0x8)" P-INDEP
-;* V250 tmp247 [V250 ] ( 0, 0 ) short -> zero-ref single-def "field V67._token (fldOffset=0x10)" P-INDEP
-;* V251 tmp248 [V251 ] ( 0, 0 ) ubyte -> zero-ref "field V67._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V252 tmp249 [V252,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V79.hasValue (fldOffset=0x0)" P-INDEP
-;* V253 tmp250 [V253,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V79.value (fldOffset=0x1)" P-INDEP
-;* V254 tmp251 [V254 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V80.hasValue (fldOffset=0x0)" P-INDEP
...
+16 (+26.67%) : 34827.dasm - LamarCodeGeneration.Util.ImHashMap2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap
2+Entry[System.Canon,System.Canon]:this (FullOpts)
@@ -2,16 +2,16 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 3.50) ref -> x0 this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.50) int -> x1 single-def
+; V00 this [V00,T00] ( 6, 4.38) ref -> x0 this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 4, 3.80) int -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T03] ( 3, 1.50) ref -> x0 "CSE - moderate"
-; V04 cse1 [V04,T02] ( 3, 2.50) ref -> x2 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,43 +23,55 @@ G_M5528_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
- ldr w3, [x2, #0x08]
- cmp w3, w1
- beq G_M5528_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M5528_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr w2, [x2, #0x08]
; gcrRegs -[x2]
- ldr x0, [x0, #0x10]
- ldr w2, [x0, #0x08]
cmp w2, w1
- csel x0, x0, xzr, eq
- ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M5528_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M5528_IG08
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M5528_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x2, [x0, #0x10]
+ ; gcrRegs +[x2]
+ ldr w2, [x2, #0x08]
+ ; gcrRegs -[x2]
+ cmp w2, w1
+ beq G_M5528_IG06
+ ;; size=16 bbWeight=0.80 PerfScore 6.00
+G_M5528_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M5528_IG05: ; bbWeight=0.42, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M5528_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x2]
- mov x0, x2
+ ;; size=8 bbWeight=0.42 PerfScore 0.83
+G_M5528_IG06: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M5528_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x0, [x0, #0x10]
+ ;; size=4 bbWeight=0.38 PerfScore 1.15
+G_M5528_IG07: ; bbWeight=0.38, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.38 PerfScore 0.77
+G_M5528_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ldr x0, [x0, #0x08]
+ ;; size=4 bbWeight=0.20 PerfScore 0.60
+G_M5528_IG09: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
-; Total bytes of code 60, prolog size 8, PerfScore 14.75, instruction count 15, allocated bytes for code 60 (MethodHash=4203ea67) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 18.96, instruction count 19, allocated bytes for code 76 (MethodHash=4203ea67) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -67,6 +79,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+36 (+28.12%) : 170282.dasm - System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
@@ -2,20 +2,20 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 10, 13.50) ref -> x0 this class-hnd single-def <System.Xml.Xsl.Xslt.OutputScopeManager>
-; V01 loc0 [V01,T02] ( 4, 16 ) int -> x3
+; V00 this [V00,T02] ( 12,135.31) ref -> x0 this class-hnd single-def <System.Xml.Xsl.Xslt.OutputScopeManager>
+; V01 loc0 [V01,T01] ( 4,256.00) int -> x3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> x2 class-hnd exact "impAppendStmt" <<unknown class>>
-;* V04 tmp2 [V04,T06] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V05 tmp3 [V05,T07] ( 0, 0 ) int -> zero-ref "index expr"
-; V06 cse0 [V06,T03] ( 3, 8.50) byref -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T04] ( 2, 4.50) ref -> x1 hoist "CSE - aggressive"
-; V08 cse2 [V08,T05] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 3,384.00) ref -> x2 class-hnd exact "impAppendStmt" <<unknown class>>
+; V04 tmp2 [V04,T04] ( 3, 4.80) ref -> x1 single-def "arr expr"
+; V05 tmp3 [V05,T05] ( 3, 4.80) int -> x2 "index expr"
+; V06 cse0 [V06,T03] ( 3, 65.51) ref -> x1 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -27,21 +27,13 @@ G_M50390_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x14]
cmp w1, #0
- ble G_M50390_IG05
+ bgt G_M50390_IG07
;; size=12 bbWeight=1 PerfScore 4.50
-G_M50390_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- sub w1, w1, #1
- str w1, [x0, #0x14]
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M50390_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50390_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M50390_IG03: ; bbWeight=0.71, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M50390_IG06: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.71 PerfScore 2.14
+G_M50390_IG04: ; bbWeight=64.00, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
mov x2, x1
; gcrRegs +[x2]
ldr w3, [x0, #0x10]
@@ -56,30 +48,49 @@ G_M50390_IG06: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
add x2, x2, x3
; gcrRegs -[x2]
; byrRegs +[x2]
- ldr w3, [x2, #0x10]
- cbz w3, G_M50390_IG06
- ;; size=52 bbWeight=4 PerfScore 80.00
-G_M50390_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
+ ldr w2, [x2, #0x10]
+ ; byrRegs -[x2]
+ cbz w2, G_M50390_IG04
+ ;; size=52 bbWeight=64.00 PerfScore 1280.00
+G_M50390_IG05: ; bbWeight=0.80, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x0, #0x10]
+ ldr w3, [x1, #0x08]
+ cmp w2, w3
+ bhs G_M50390_IG09
+ mov w3, #24
+ mov x4, #16
+ umaddl x2, w2, w3, x4
+ add x1, x1, x2
; gcrRegs -[x1]
- ldr w1, [x2, #0x10]
+ ; byrRegs +[x1]
+ ldr w1, [x1, #0x10]
+ ; byrRegs -[x1]
str w1, [x0, #0x14]
ldr w1, [x0, #0x14]
sub w1, w1, #1
str w1, [x0, #0x14]
- ;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M50390_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=52 bbWeight=0.80 PerfScore 18.00
+G_M50390_IG06: ; bbWeight=0.80, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.80 PerfScore 1.60
+G_M50390_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ldr w1, [x0, #0x14]
+ sub w1, w1, #1
+ str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.20 PerfScore 0.90
+G_M50390_IG08: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
G_M50390_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; byrRegs -[x2]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 8, PerfScore 94.50, instruction count 32, allocated bytes for code 128 (MethodHash=e69e3b29) for method System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
+; Total bytes of code 164, prolog size 8, PerfScore 1309.04, instruction count 41, allocated bytes for code 164 (MethodHash=e69e3b29) for method System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
; ============================================================
Unwind Info:
@@ -90,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 252429.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
@@ -2,28 +2,29 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 3.96) byref -> x0 this single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Text.Json.JsonElement>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-; V05 tmp3 [V05,T03] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V06 tmp4 [V06,T04] ( 2, 1 ) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T06] ( 2, 1 ) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
-; V08 tmp6 [V08,T05] ( 2, 1 ) ref -> x0 single-def "field V03._parent (fldOffset=0x0)" P-INDEP
-; V09 tmp7 [V09,T07] ( 2, 1 ) int -> x1 "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T01] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V04 tmp2 [V04,T01] ( 2, 1.92) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V05 tmp3 [V05,T02] ( 2, 1.92) int -> x0 "Inlining Arg"
+; V06 tmp4 [V06,T03] ( 2, 1.04) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1.04) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
+; V08 tmp6 [V08,T05] ( 2, 0.96) ref -> registers single-def "field V03._parent (fldOffset=0x0)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 0.96) int -> [fp+0x1C] spill-single-def "field V03._idx (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M36569_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
@@ -31,29 +32,35 @@ G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
ldr w1, [x0]
tbz w1, #31, G_M36569_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M36569_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36569_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, xzr
; gcrRegs +[x0]
mov w1, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M36569_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M36569_IG04: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M36569_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M36569_IG05: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x0, [x0, #0x08]
- ; gcrRegs +[x0]
+ ldr x1, [x0, #0x08]
+ ; gcrRegs +[x1]
+ ldr w0, [x0]
; byrRegs -[x0]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M36569_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ str w0, [fp, #0x1C] // [V09 tmp7]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ldr w1, [fp, #0x1C] // [V09 tmp7]
+ ; gcrRegs -[x1]
+ ;; size=20 bbWeight=0.48 PerfScore 4.56
+G_M36569_IG06: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 44, prolog size 8, PerfScore 9.50, instruction count 11, allocated bytes for code 44 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 12.58, instruction count 15, allocated bytes for code 60 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -75,7 +82,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
realworld.run.linux.arm64.checked.mch
-8 (-16.67%) : 31615.dasm - System.Management.Automation.LocationGlobber:IsSingleFileSystemAbsolutePath(System.String):ubyte (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 inlinees without PGO data
; Final local variable assignments
@@ -12,56 +14,45 @@
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 cse0 [V04,T01] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V04 cse0 [V04,T01] ( 3, 3 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M5098_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5098_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M5098_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M5098_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldrh w0, [x0, #0x0C]
; gcrRegs -[x0]
- cmp w0, #47
- beq G_M5098_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M5098_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w1, #1
cmp w0, #92
- cset x0, eq
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M5098_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ cset x2, eq
+ cmp w0, #47
+ csel w0, w1, w2, eq
+ ;; size=24 bbWeight=1 PerfScore 5.50
+G_M5098_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M5098_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M5098_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 8.75, instruction count 12, allocated bytes for code 48 (MethodHash=edc9ec15) for method System.Management.Automation.LocationGlobber:IsSingleFileSystemAbsolutePath(System.String):ubyte (FullOpts)
+; Total bytes of code 40, prolog size 8, PerfScore 9.00, instruction count 10, allocated bytes for code 40 (MethodHash=edc9ec15) for method System.Management.Automation.LocationGlobber:IsSingleFileSystemAbsolutePath(System.String):ubyte (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-32 (-14.04%) : 23593.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]>
+; V00 this [V00,T08] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V02 loc1 [V02 ] ( 2, 4 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
+; V02 loc1 [V02 ] ( 2, 37.89) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <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 ) long -> zero-ref "spilling helperCall"
@@ -18,21 +20,22 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 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 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp7 [V11,T04] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp"
+;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp7 [V11,T03] ( 3, 56.84) ubyte -> x0 "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref 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,T02] ( 3, 11 ) ref -> x20 "field V01._builder (fldOffset=0x0)" P-INDEP
-; V16 tmp12 [V16,T00] ( 5, 27 ) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
+; V15 tmp11 [V15,T04] ( 2, 43.11) ref -> x20 "field V01._builder (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T00] ( 5,146.26) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
-;* V18 cse0 [V18,T11] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V20 rat0 [V20,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V21 rat1 [V21,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T05] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V24 rat4 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V18 cse0 [V18,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
+; V19 cse1 [V19,T02] ( 3,103.16) ref -> x0 "CSE - aggressive"
+; V20 cse2 [V20,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V21 rat0 [V21,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V22 rat1 [V22,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V25 rat4 [V25,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -50,7 +53,7 @@ G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
mov x19, x0
; gcrRegs +[x19]
;; size=44 bbWeight=1 PerfScore 9.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -63,24 +66,23 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M864_IG03: ; bbWeight=42.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M864_IG04
- b G_M864_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add w21, w21, #1
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
+ ldr w8, [x0, #0x10]
+ cmp w21, w8
+ bge G_M864_IG07
+ ;; size=20 bbWeight=42.11 PerfScore 336.84
+G_M864_IG04: ; bbWeight=18.95, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
add x8, fp, #24 // [V02 loc1]
mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
- ldr wzr, [x0]
blr x2
; gcrRegs -[x0]
ldrb w0, [fp, #0x34] // [V02 loc1+0x1c]
@@ -88,38 +90,29 @@ G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {},
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi
- bls G_M864_IG07
- ;; size=60 bbWeight=2 PerfScore 35.00
-G_M864_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- add w21, w21, #1
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
- ldr w0, [x0, #0x10]
- ; gcrRegs -[x0]
- cmp w21, w0
- blt G_M864_IG03
- ;; size=20 bbWeight=8 PerfScore 64.00
-G_M864_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bhi G_M864_IG03
+ ;; size=52 bbWeight=18.95 PerfScore 217.89
+G_M864_IG05: ; bbWeight=2.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M864_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x80]
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x90
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M864_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=2.46 PerfScore 1.23
+G_M864_IG06: ; bbWeight=2.46, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=2.46 PerfScore 9.86
+G_M864_IG07: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.53 PerfScore 0.26
+G_M864_IG08: ; bbWeight=0.53, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x80]
+ ldp x19, x20, [sp, #0x70]
+ ldp fp, lr, [sp], #0x90
+ ret lr
+ ;; size=16 bbWeight=0.53 PerfScore 2.11
-; Total bytes of code 228, prolog size 40, PerfScore 139.50, instruction count 57, allocated bytes for code 228 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+; Total bytes of code 196, prolog size 40, PerfScore 592.69, instruction count 49, allocated bytes for code 196 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -130,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-12.50%) : 16677.dasm - System.Text.RegularExpressions.RegexNode:g_CanJoinLengthCheck|600(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x0 class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T03] ( 3, 2 ) ubyte -> x0
-; V02 loc1 [V02,T02] ( 3, 2.50) ubyte -> x1
+; V00 arg0 [V00,T00] ( 5, 4.18) ref -> x0 class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T03] ( 3, 1.60) ubyte -> x0
+; V02 loc1 [V02,T02] ( 3, 2.09) ubyte -> x1
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 rat0 [V05,T01] ( 3, 6 ) int -> x2 "ReplaceWithLclVar is creating a new local variable"
@@ -26,52 +28,40 @@ G_M17774_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldrb w1, [x0, #0x2E]
sub w2, w1, #3
cmp w2, #9
- bhi G_M17774_IG03
- mov w1, w2
- adr x2, [@RWD00]
- ldr w2, [x2, x1, LSL #2]
- adr x3, [G_M17774_IG02]
- add x2, x2, x3
- br x2
- ;; size=40 bbWeight=1 PerfScore 11.00
-G_M17774_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- sub w2, w1, #43
- cmp w2, #2
- bls G_M17774_IG05
- b G_M17774_IG06
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M17774_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov w0, #1
- b G_M17774_IG07
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M17774_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
+ bhi G_M17774_IG07
+ mov w1, #63
+ lsr w1, w1, w2
+ tbz w1, #0, G_M17774_IG06
+ ;; size=28 bbWeight=1 PerfScore 7.00
+G_M17774_IG03: ; bbWeight=0.59, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldp w1, w0, [x0, #0x20]
; gcrRegs -[x0]
cmp w1, w0
- beq G_M17774_IG04
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M17774_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M17774_IG06
+ ;; size=12 bbWeight=0.59 PerfScore 2.65
+G_M17774_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17774_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=4 bbWeight=0.33 PerfScore 0.17
+G_M17774_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-RWD00 dd G_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
+G_M17774_IG06: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ b G_M17774_IG05
+ ;; size=8 bbWeight=0.27 PerfScore 0.41
+G_M17774_IG07: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
+ sub w2, w1, #43
+ cmp w2, #2
+ bls G_M17774_IG03
+ ;; size=12 bbWeight=0.09 PerfScore 0.18
+G_M17774_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M17774_IG04
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
-
-; Total bytes of code 96, prolog size 8, PerfScore 19.25, instruction count 24, allocated bytes for code 96 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 13.95, instruction count 21, allocated bytes for code 84 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+20.59%) : 16683.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x1 single-def
-; V02 loc0 [V02,T02] ( 6, 4 ) int -> x2
-; V03 loc1 [V03,T03] ( 4, 3 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 7.20) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) byref -> x1 single-def
+; V02 loc0 [V02,T01] ( 6, 5.20) int -> x2
+; V03 loc1 [V03,T04] ( 4, 3.60) ref -> x3 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 ) long -> zero-ref "spilling helperCall"
-; V07 cse0 [V07,T05] ( 3, 2.50) int -> x4 "CSE - aggressive"
-;* V08 rat0 [V08,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 cse0 [V07,T06] ( 3, 2.80) int -> x4 "CSE - aggressive"
+; V08 rat0 [V08,T05] ( 2, 3.20) long -> x0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T03] ( 2, 3.20) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -26,9 +28,10 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -37,20 +40,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bhi G_M49890_IG05
+ bls G_M49890_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
- ; gcrRegs -[x3]
- str xzr, [x1]
- mov w0, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M49890_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, gcvars, byref, isz
- ; gcrRegs +[x3]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -62,28 +54,51 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x10]
+ cbnz x0, G_M49890_IG07
+ ;; size=48 bbWeight=0.80 PerfScore 18.00
+G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
+ b G_M49890_IG07
+ ;; size=4 bbWeight=0.16 PerfScore 0.16
+G_M49890_IG05: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ ; gcrRegs -[x3]
+ ; byrRegs +[x1]
+ str xzr, [x1]
+ mov w0, wzr
+ ;; size=8 bbWeight=0.20 PerfScore 0.30
+G_M49890_IG06: ; bbWeight=0.20, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
+G_M49890_IG07: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x3]
+ ; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG07
+ bhs G_M49890_IG09
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
- ;; size=56 bbWeight=0.50 PerfScore 7.00
-G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.80 PerfScore 3.60
+G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49890_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.80 PerfScore 3.20
+G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 12, PerfScore 25.75, instruction count 34, allocated bytes for code 136 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
+; Total bytes of code 164, prolog size 16, PerfScore 41.06, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+20.69%) : 18988.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:IsValid(System.Version):ubyte (FullOpts)
@@ -2,19 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 5 ) ref -> x0 class-hnd single-def <System.Version>
+; V00 arg0 [V00,T00] ( 11, 6.27) ref -> x0 class-hnd single-def <System.Version>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V03 cse0 [V03,T01] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V04 cse1 [V04,T02] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V05 cse2 [V05,T03] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V06 cse3 [V06,T04] ( 3, 1.50) int -> x0 "CSE - moderate"
;
; Lcl frame size = 0
@@ -24,49 +22,69 @@ G_M58362_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=8 bbWeight=1 PerfScore 1.50
G_M58362_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M58362_IG07
+ cbz x0, G_M58362_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M58362_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M58362_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
- tbnz w1, #31, G_M58362_IG05
- ldr w2, [x0, #0x0C]
- tbnz w2, #31, G_M58362_IG05
- ldr w3, [x0, #0x10]
- tbnz w3, #31, G_M58362_IG05
+ tbnz w1, #31, G_M58362_IG12
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M58362_IG04: ; bbWeight=0.64, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x0C]
+ tbnz w1, #31, G_M58362_IG12
+ ;; size=8 bbWeight=0.64 PerfScore 2.56
+G_M58362_IG05: ; bbWeight=0.51, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x10]
+ tbnz w1, #31, G_M58362_IG12
+ ;; size=8 bbWeight=0.51 PerfScore 2.05
+G_M58362_IG06: ; bbWeight=0.41, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x14]
+ tbnz w1, #31, G_M58362_IG12
+ ;; size=8 bbWeight=0.41 PerfScore 1.64
+G_M58362_IG07: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x08]
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ bgt G_M58362_IG12
+ ;; size=16 bbWeight=0.33 PerfScore 1.64
+G_M58362_IG08: ; bbWeight=0.26, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x0C]
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ bgt G_M58362_IG12
+ ;; size=16 bbWeight=0.26 PerfScore 1.31
+G_M58362_IG09: ; bbWeight=0.21, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x10]
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ bgt G_M58362_IG12
+ ;; size=16 bbWeight=0.21 PerfScore 1.05
+G_M58362_IG10: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w0, [x0, #0x14]
; gcrRegs -[x0]
- tbnz w0, #31, G_M58362_IG05
- mov w4, #0xD1FFAB1E
- mov w5, #0xD1FFAB1E
- mov w6, #0xD1FFAB1E
- cmp w1, w4
- ccmp w2, w5, 0, le
- ccmp w3, w6, 0, le
- bgt G_M58362_IG05
mov w1, #0xD1FFAB1E
cmp w0, w1
cset x0, le
- ;; size=72 bbWeight=0.50 PerfScore 10.75
-G_M58362_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=16 bbWeight=0.11 PerfScore 0.49
+G_M58362_IG11: ; bbWeight=0.11, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M58362_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.11 PerfScore 0.22
+G_M58362_IG12: ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M58362_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.69 PerfScore 0.35
+G_M58362_IG13: ; bbWeight=0.69, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M58362_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.69 PerfScore 1.38
+G_M58362_IG14: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M58362_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M58362_IG15: ; bbWeight=0.20, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
-; Total bytes of code 116, prolog size 8, PerfScore 16.75, instruction count 29, allocated bytes for code 116 (MethodHash=e9e91c05) for method Microsoft.CodeAnalysis.AssemblyIdentity:IsValid(System.Version):ubyte (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 18.88, instruction count 35, allocated bytes for code 140 (MethodHash=e9e91c05) for method Microsoft.CodeAnalysis.AssemblyIdentity:IsValid(System.Version):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -77,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+20.83%) : 31855.dasm - System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
@@ -2,30 +2,35 @@
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x20 this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
-; V02 loc0 [V02,T02] ( 5, 3.50) int -> x2
+; V00 this [V00,T01] ( 6, 4.60) ref -> x20 this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst>
+; V01 arg1 [V01,T00] ( 7, 6.64) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
+; V02 loc0 [V02,T04] ( 5, 4.44) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V04 tmp1 [V04,T02] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
+; V06 tmp3 [V06,T03] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M63420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M63420_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -36,11 +41,9 @@ G_M63420_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- cmp w2, #1
+ sxtw w21, w0
+ cmp w21, #1
bne G_M63420_IG06
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -49,6 +52,8 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1 x19] +[x0]
cbz x0, G_M63420_IG04
+ ;; size=60 bbWeight=1 PerfScore 17.00
+G_M63420_IG03: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -57,18 +62,21 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1 x20]
- ;; size=48 bbWeight=0.50 PerfScore 5.00
-G_M63420_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M63420_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M63420_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M63420_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M63420_IG06: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- cbnz w2, G_M63420_IG07
+ cbnz w21, G_M63420_IG08
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M63420_IG07: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
@@ -79,25 +87,39 @@ G_M63420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- ;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M63420_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
+ sxtw w21, w0
+ ;; size=32 bbWeight=0.64 PerfScore 4.48
+G_M63420_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1 x19] +[x0]
+ cbz x0, G_M63420_IG10
+ ;; size=24 bbWeight=1 PerfScore 4.00
+G_M63420_IG09: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ;; size=24 bbWeight=0.50 PerfScore 2.75
-G_M63420_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- br x3
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ movz x11, #0xD1FFAB1E // code for <unknown method>
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ ldr x2, [x11]
+ blr x2
+ ; gcrRegs -[x0-x1 x20]
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M63420_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w21
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M63420_IG11: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 192, prolog size 12, PerfScore 31.50, instruction count 48, allocated bytes for code 192 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 232, prolog size 16, PerfScore 47.54, instruction count 58, allocated bytes for code 232 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,10 +141,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
smoke_tests.nativeaot.linux.arm64.checked.mch
-8 (-18.18%) : 7416.dasm - System.Number:ThrowOverflowOrFormatExceptionushort,ulong (FullOpts)
@@ -5,45 +5,46 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 3, 2 ) int -> x0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) int -> x0 single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 2, 1 ) byref -> [fp+0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T02] ( 2, 1 ) int -> [fp+0x1C] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V03 tmp1 [V03,T01] ( 2, 1.80) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 1.80) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 16
+; Lcl frame size = 0
-G_M54166_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
+G_M54166_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- str x1, [fp, #0x10] // [V03 tmp1]
- ; GC ptr vars +{V03}
- str w2, [fp, #0x1C] // [V04 tmp2]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M54166_IG02: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M54166_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
+ ; byrRegs +[x1]
cmp w0, #1
- bne G_M54166_IG03
- ldr x0, [fp, #0x10] // [V03 tmp1]
+ bne G_M54166_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M54166_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x0, x1
; byrRegs +[x0]
- ldr w1, [fp, #0x1C] // [V04 tmp2]
- ; GC ptr vars -{V03}
+ mov w1, w2
+ ; byrRegs -[x1]
bl <unknown method>
; byrRegs -[x0]
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M54166_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=0.80 PerfScore 1.60
+G_M54166_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl System.Number:ThrowOverflowException[ulong]()
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 0.00, instruction count 11, allocated bytes for code 44 (MethodHash=1a022c69) for method System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 4.60, instruction count 9, allocated bytes for code 36 (MethodHash=1a022c69) for method System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
; ============================================================
Cfi Info:
>> Start offset : 0x000000
>> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x10
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
CodeOffset: 0x08 Op: DefCfaRegister DwarfReg:0x1D
-32 (-14.55%) : 4677.dasm - System.StringComparer:Equals(System.Object,System.Object):ubyte:this (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; fp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 this [V00,T02] ( 6, 3.16) ref -> x0 this class-hnd single-def <System.StringComparer>
-; V01 arg1 [V01,T00] ( 7, 5 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T01] ( 7, 5 ) ref -> x2 class-hnd single-def <System.Object>
-; V03 loc0 [V03,T04] ( 4, 1 ) ref -> x3 class-hnd exact <System.String>
-; V04 loc1 [V04,T05] ( 4, 1 ) ref -> x2 class-hnd exact <System.String>
+; V00 this [V00,T02] ( 5, 2.55) ref -> x0 this class-hnd single-def <System.StringComparer>
+; V01 arg1 [V01,T00] ( 8, 5.42) ref -> x3 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 7, 4.86) ref -> x2 class-hnd single-def <System.Object>
+; V03 loc0 [V03,T03] ( 4, 0.72) ref -> x1 class-hnd exact <System.String>
+; V04 loc1 [V04,T05] ( 4, 0.62) ref -> x2 class-hnd exact <System.String>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.String>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.String>
@@ -19,129 +20,120 @@
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.OrdinalCaseSensitiveComparer>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.OrdinalComparer>
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.OrdinalIgnoreCaseComparer>
-; V12 cse0 [V12,T03] ( 3, 1.50) long -> x19 "CSE - moderate"
+; V12 cse0 [V12,T04] ( 3, 0.96) long -> x3 "CSE - conservative"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M62400_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M62400_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0-x2]
- cmp x1, x2
- bne G_M62400_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M62400_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x2]
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M62400_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M62400_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x2]
- cbz x1, G_M62400_IG06
- cbnz x2, G_M62400_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M62400_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x2]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M62400_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M62400_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x2]
- ldr x19, [x1]
- adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.String
- add x3, x3, [LOW RELOC #0xD1FFAB1E]
- cmp x19, x3
- bne G_M62400_IG16
mov x3, x1
; gcrRegs +[x3]
- ldr x4, [x2]
- adrp x5, [HIGH RELOC #0xD1FFAB1E] // System.String
- add x5, x5, [LOW RELOC #0xD1FFAB1E]
- cmp x4, x5
- bne G_M62400_IG16
- ldr x1, [x0]
- ; gcrRegs -[x1]
- adrp x4, [HIGH RELOC #0xD1FFAB1E]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M62400_IG02: ; bbWeight=1, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0 x2]
+ cmp x3, x2
+ beq G_M62400_IG14
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M62400_IG03: ; bbWeight=0.80, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbz x3, G_M62400_IG05
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M62400_IG04: ; bbWeight=0.64, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbnz x2, G_M62400_IG07
+ ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M62400_IG05: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2-x3]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.29 PerfScore 0.14
+G_M62400_IG06: ; bbWeight=0.29, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.29 PerfScore 0.58
+G_M62400_IG07: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0 x2-x3]
+ ldr x1, [x3]
+ adrp x4, [HIGH RELOC #0xD1FFAB1E] // System.String
add x4, x4, [LOW RELOC #0xD1FFAB1E]
cmp x1, x4
- bne G_M62400_IG11
- ;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M62400_IG09: ; bbWeight=0.17, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
+ beq G_M62400_IG10
+ ;; size=20 bbWeight=0.51 PerfScore 2.82
+G_M62400_IG08: ; bbWeight=0.30, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x3
; gcrRegs +[x0]
mov x1, x2
; gcrRegs +[x1]
- ;; size=8 bbWeight=0.17 PerfScore 0.17
-G_M62400_IG10: ; bbWeight=0.17, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- b System.String:Equals(System.String,System.String):ubyte
+ ldr x2, [x3]
+ ; gcrRegs -[x2]
+ ldr x2, [x2, #0x20]
+ ;; size=16 bbWeight=0.30 PerfScore 2.09
+G_M62400_IG09: ; bbWeight=0.30, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.17 PerfScore 0.68
-G_M62400_IG11: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ldr x1, [x0]
+ ;; size=8 bbWeight=0.30 PerfScore 0.60
+G_M62400_IG10: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1] +[x2]
+ mov x1, x3
+ ; gcrRegs +[x1]
+ ldr x4, [x2]
+ adrp x5, [HIGH RELOC #0xD1FFAB1E] // System.String
+ add x5, x5, [LOW RELOC #0xD1FFAB1E]
+ cmp x4, x5
+ bne G_M62400_IG08
+ ;; size=24 bbWeight=0.51 PerfScore 3.07
+G_M62400_IG11: ; bbWeight=0.41, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x3]
+ ldr x3, [x0]
adrp x4, [HIGH RELOC #0xD1FFAB1E]
add x4, x4, [LOW RELOC #0xD1FFAB1E]
- cmp x1, x4
- bne G_M62400_IG14
- ;; size=20 bbWeight=0.33 PerfScore 1.82
-G_M62400_IG12: ; bbWeight=0.17, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, byref
- mov x1, x3
- ; gcrRegs +[x1]
- ;; size=4 bbWeight=0.17 PerfScore 0.08
-G_M62400_IG13: ; bbWeight=0.17, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- b System.OrdinalComparer:Equals(System.String,System.String):ubyte:this
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.17 PerfScore 0.66
-G_M62400_IG14: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x1]
- mov x1, x3
- ; gcrRegs +[x1]
- ;; size=4 bbWeight=0.17 PerfScore 0.08
-G_M62400_IG15: ; bbWeight=0.17, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- b System.OrdinalIgnoreCaseComparer:Equals(System.String,System.String):ubyte:this
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.17 PerfScore 0.66
-G_M62400_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x3]
+ cmp x3, x4
+ bne G_M62400_IG16
+ ;; size=20 bbWeight=0.41 PerfScore 2.25
+G_M62400_IG12: ; bbWeight=0.07, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
mov x0, x1
; gcrRegs +[x0]
mov x1, x2
- ldr x2, [x19, #0x20]
- ; gcrRegs -[x2]
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M62400_IG17: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x2
+ ;; size=8 bbWeight=0.07 PerfScore 0.07
+G_M62400_IG13: ; bbWeight=0.07, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ b System.String:Equals(System.String,System.String):ubyte
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.07 PerfScore 0.14
+G_M62400_IG14: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0-x2]
+ mov w0, #1
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M62400_IG15: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
+G_M62400_IG16: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0-x2]
+ adrp x4, [HIGH RELOC #0xD1FFAB1E]
+ add x4, x4, [LOW RELOC #0xD1FFAB1E]
+ cmp x3, x4
+ bne G_M62400_IG18
+ ;; size=16 bbWeight=0.14 PerfScore 0.35
+G_M62400_IG17: ; bbWeight=0.07, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ b System.OrdinalComparer:Equals(System.String,System.String):ubyte:this
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.07 PerfScore 0.14
+G_M62400_IG18: ; bbWeight=0.07, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ b System.OrdinalIgnoreCaseComparer:Equals(System.String,System.String):ubyte:this
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.07 PerfScore 0.14
-; Total bytes of code 220, prolog size 12, PerfScore 26.15, instruction count 55, allocated bytes for code 220 (MethodHash=30ae0c3f) for method System.StringComparer:Equals(System.Object,System.Object):ubyte:this (FullOpts)
+; Total bytes of code 188, prolog size 12, PerfScore 17.84, instruction count 47, allocated bytes for code 188 (MethodHash=30ae0c3f) for method System.StringComparer:Equals(System.Object,System.Object):ubyte:this (FullOpts)
; ============================================================
Cfi Info:
>> Start offset : 0x000000
>> End offset : 0xd1ffab1e
- CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x20
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x10
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1d Offset:0x0
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x1e Offset:0x8
- CodeOffset: 0x08 Op: RelOffset DwarfReg:0x13 Offset:0x18
- CodeOffset: 0x0C Op: DefCfaRegister DwarfReg:0x1D
+ CodeOffset: 0x08 Op: DefCfaRegister DwarfReg:0x1D
-12 (-14.29%) : 16789.dasm - System.Threading.Tasks.Task:MarkExceptionsAsHandled():this (FullOpts)
@@ -5,14 +5,16 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Threading.Tasks.Task>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Threading.Tasks.Task>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 5 ) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
+; V02 tmp1 [V02,T01] ( 3, 5.60) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
-; V04 tmp3 [V04,T00] ( 5, 5 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Threading.Tasks.TaskExceptionHolder>
+; V04 tmp3 [V04,T00] ( 4, 7.20) ref -> x0 class-hnd exact single-def "dup spill" <System.Threading.Tasks.TaskExceptionHolder>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
+; V06 cse0 [V06,T03] ( 3, 3 ) byref -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,38 +31,35 @@ G_M12742_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldar x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbnz x0, G_M12742_IG04
+ cbz x0, G_M12742_IG05
;; size=12 bbWeight=1 PerfScore 4.50
-G_M12742_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0]
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M12742_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0]
+G_M12742_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add x0, x0, #24
; gcrRegs -[x0]
; byrRegs +[x0]
- ldar x19, [x0]
- ; gcrRegs +[x19]
- cbz x19, G_M12742_IG03
- add x0, x19, #32
- ldarb w0, [x0]
- ; byrRegs -[x0]
- cbnz w0, G_M12742_IG03
- mov x0, x19
+ ldar x0, [x0]
; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ cbz x0, G_M12742_IG05
+ ;; size=12 bbWeight=0.80 PerfScore 3.60
+G_M12742_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ add x19, x0, #32
+ ; byrRegs +[x19]
+ ldarb w1, [x19]
+ cbnz w1, G_M12742_IG05
bl System.GC:SuppressFinalize(System.Object)
; gcrRegs -[x0]
- add x0, x19, #32
- ; byrRegs +[x0]
- mov w1, #1
- stlrb w1, [x0]
- b G_M12742_IG03
- ;; size=48 bbWeight=0.50 PerfScore 6.75
+ mov w0, #1
+ stlrb w0, [x19]
+ ;; size=24 bbWeight=1 PerfScore 7.00
+G_M12742_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[x19]
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
-; Total bytes of code 84, prolog size 12, PerfScore 17.75, instruction count 21, allocated bytes for code 84 (MethodHash=59a4ce39) for method System.Threading.Tasks.Task:MarkExceptionsAsHandled():this (FullOpts)
+; Total bytes of code 72, prolog size 12, PerfScore 18.40, instruction count 18, allocated bytes for code 72 (MethodHash=59a4ce39) for method System.Threading.Tasks.Task:MarkExceptionsAsHandled():this (FullOpts)
; ============================================================
Cfi Info:
+16 (+50.00%) : 10854.dasm - System.Runtime.Intrinsics.Vector641[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64
1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 3, 3 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
-; V01 arg1 [V01 ] ( 3, 3 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V00 arg0 [V00 ] ( 3, 6.74) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V01 arg1 [V01 ] ( 3, 6.74) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
;* V02 loc0 [V02,T01] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 4 ) long -> x0 "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 2, 18.95) long -> x0 "impAppendStmt"
;* V05 tmp2 [V05,T02] ( 0, 0 ) int -> zero-ref
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -24,22 +25,32 @@
;
; Lcl frame size = 16
-G_M57231_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M57231_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
stp d1, d0, [fp, #0x10] // [V01 arg1], [V00 arg0]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M57231_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M57231_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldp x1, x0, [fp, #0x10] // [V01 arg1], [V00 arg0]
cmp x1, x0
- cset x0, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M57231_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M57231_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 21.32
+G_M57231_IG03: ; bbWeight=5.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=5.26 PerfScore 2.63
+G_M57231_IG04: ; bbWeight=5.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=5.26 PerfScore 10.53
+G_M57231_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M57231_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 8.50, instruction count 8, allocated bytes for code 32 (MethodHash=25882070) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 47.50, instruction count 12, allocated bytes for code 48 (MethodHash=25882070) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
; ============================================================
Cfi Info:
+16 (+50.00%) : 10771.dasm - System.Runtime.Intrinsics.Vector641[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64
1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 3, 3 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
-; V01 arg1 [V01 ] ( 3, 3 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V00 arg0 [V00 ] ( 3, 6.74) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V01 arg1 [V01 ] ( 3, 6.74) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
;* V02 loc0 [V02,T01] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 4 ) long -> x0 "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 2, 18.95) long -> x0 "impAppendStmt"
;* V05 tmp2 [V05,T02] ( 0, 0 ) int -> zero-ref
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -24,22 +25,32 @@
;
; Lcl frame size = 16
-G_M21576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21576_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
stp d1, d0, [fp, #0x10] // [V01 arg1], [V00 arg0]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M21576_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M21576_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldp x1, x0, [fp, #0x10] // [V01 arg1], [V00 arg0]
cmp x1, x0
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M21576_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M21576_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 21.32
+G_M21576_IG03: ; bbWeight=5.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=5.26 PerfScore 2.63
+G_M21576_IG04: ; bbWeight=5.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=5.26 PerfScore 10.53
+G_M21576_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M21576_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 8.50, instruction count 8, allocated bytes for code 32 (MethodHash=ae40abb7) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 47.50, instruction count 12, allocated bytes for code 48 (MethodHash=ae40abb7) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
; ============================================================
Cfi Info:
+16 (+50.00%) : 6896.dasm - System.Runtime.Intrinsics.Vector64:EqualsAnylong:ubyte (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 3, 3 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[long]>
-; V01 arg1 [V01 ] ( 3, 3 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[long]>
+; V00 arg0 [V00 ] ( 3, 6.74) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[long]>
+; V01 arg1 [V01 ] ( 3, 6.74) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[long]>
;* V02 loc0 [V02,T01] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 4 ) long -> x0 "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 2, 18.95) long -> x0 "impAppendStmt"
;* V05 tmp2 [V05,T02] ( 0, 0 ) int -> zero-ref
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -24,22 +25,32 @@
;
; Lcl frame size = 16
-G_M32717_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M32717_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
stp d1, d0, [fp, #0x10] // [V01 arg1], [V00 arg0]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M32717_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M32717_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldp x1, x0, [fp, #0x10] // [V01 arg1], [V00 arg0]
cmp x1, x0
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M32717_IG03: ; bbWeight=1, epilog, nogc, extend
+ beq G_M32717_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 21.32
+G_M32717_IG03: ; bbWeight=5.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=5.26 PerfScore 2.63
+G_M32717_IG04: ; bbWeight=5.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=5.26 PerfScore 10.53
+G_M32717_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M32717_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 8.50, instruction count 8, allocated bytes for code 32 (MethodHash=3ead8032) for method System.Runtime.Intrinsics.Vector64:EqualsAny[long](System.Runtime.Intrinsics.Vector64`1[long],System.Runtime.Intrinsics.Vector64`1[long]):ubyte (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 47.50, instruction count 12, allocated bytes for code 48 (MethodHash=3ead8032) for method System.Runtime.Intrinsics.Vector64:EqualsAny[long](System.Runtime.Intrinsics.Vector64`1[long],System.Runtime.Intrinsics.Vector64`1[long]):ubyte (FullOpts)
; ============================================================
Cfi Info:
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm64.checked.mch |
9,837 |
1,061 |
4,274 |
4,502 |
-14,584 |
+95,428 |
benchmarks.run_pgo.linux.arm64.checked.mch |
22,269 |
11,661 |
5,024 |
5,584 |
-84,296 |
+62,904 |
benchmarks.run_tiered.linux.arm64.checked.mch |
7,198 |
411 |
1,764 |
5,023 |
-5,912 |
+39,520 |
coreclr_tests.run.linux.arm64.checked.mch |
66,218 |
16,238 |
19,242 |
30,738 |
-220,152 |
+233,840 |
libraries.crossgen2.linux.arm64.checked.mch |
48,953 |
5,792 |
14,018 |
29,143 |
-50,396 |
+233,776 |
libraries.pmi.linux.arm64.checked.mch |
63,722 |
9,060 |
20,614 |
34,048 |
-103,404 |
+414,672 |
libraries_tests.run.linux.arm64.Release.mch |
14,408 |
1,882 |
5,654 |
6,872 |
-32,536 |
+73,376 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
77,408 |
22,080 |
28,191 |
27,137 |
-375,640 |
+808,980 |
realworld.run.linux.arm64.checked.mch |
10,908 |
1,471 |
4,329 |
5,108 |
-18,608 |
+111,624 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
6,163 |
1,004 |
1,428 |
3,731 |
-6,692 |
+21,960 |
|
327,084 |
70,660 |
104,538 |
151,886 |
-912,220 |
+2,096,080 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm64.checked.mch |
26,807 |
1,210 |
25,597 |
9 (0.03%) |
2,085 (7.22%) |
benchmarks.run_pgo.linux.arm64.checked.mch |
124,893 |
51,761 |
73,132 |
11 (0.01%) |
1,106 (0.88%) |
benchmarks.run_tiered.linux.arm64.checked.mch |
57,208 |
43,144 |
14,064 |
9 (0.02%) |
818 (1.41%) |
coreclr_tests.run.linux.arm64.checked.mch |
390,172 |
185,167 |
205,005 |
88 (0.02%) |
3,699 (0.94%) |
libraries.crossgen2.linux.arm64.checked.mch |
249,056 |
15 |
249,041 |
1 (0.00%) |
15,852 (5.98%) |
libraries.pmi.linux.arm64.checked.mch |
279,329 |
6 |
279,323 |
45 (0.02%) |
16,543 (5.59%) |
libraries_tests.run.linux.arm64.Release.mch |
87,777 |
65,551 |
22,226 |
3 (0.00%) |
618 (0.70%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
272,851 |
21,620 |
251,231 |
148 (0.05%) |
32,408 (10.62%) |
realworld.run.linux.arm64.checked.mch |
30,522 |
163 |
30,359 |
2 (0.01%) |
2,896 (8.67%) |
smoke_tests.nativeaot.linux.arm64.checked.mch |
18,115 |
7 |
18,108 |
0 (0.00%) |
939 (4.93%) |
|
1,536,730 |
368,644 |
1,168,086 |
316 (0.02%) |
76,964 (4.77%) |
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10759020 (overridden on cmd)
Total bytes of diff: 10839864 (overridden on cmd)
Total bytes of delta: 80844 (0.75 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
5248 : 10798.dasm (17.19 % of base)
1264 : 16074.dasm (23.85 % of base)
1248 : 12182.dasm (25.57 % of base)
1100 : 12455.dasm (343.75 % of base)
888 : 21283.dasm (2.36 % of base)
884 : 16616.dasm (12.75 % of base)
764 : 5113.dasm (10.43 % of base)
760 : 10392.dasm (10.14 % of base)
712 : 18864.dasm (10.61 % of base)
596 : 11938.dasm (12.87 % of base)
592 : 16502.dasm (12.98 % of base)
568 : 11217.dasm (4.33 % of base)
412 : 2687.dasm (19.22 % of base)
388 : 13382.dasm (6.94 % of base)
388 : 12163.dasm (4.79 % of base)
372 : 18841.dasm (6.82 % of base)
360 : 4463.dasm (13.37 % of base)
352 : 10009.dasm (3.91 % of base)
352 : 18993.dasm (33.08 % of base)
320 : 14997.dasm (5.88 % of base)
Top file improvements (bytes):
-692 : 12010.dasm (-2.13 % of base)
-200 : 4828.dasm (-3.55 % of base)
-200 : 12645.dasm (-22.94 % of base)
-176 : 12412.dasm (-36.36 % of base)
-172 : 7313.dasm (-4.59 % of base)
-152 : 12410.dasm (-38.38 % of base)
-136 : 890.dasm (-7.74 % of base)
-132 : 25552.dasm (-13.92 % of base)
-124 : 18855.dasm (-6.49 % of base)
-124 : 8700.dasm (-10.30 % of base)
-120 : 3177.dasm (-13.89 % of base)
-120 : 5908.dasm (-3.18 % of base)
-116 : 2080.dasm (-1.05 % of base)
-112 : 18105.dasm (-5.61 % of base)
-108 : 6395.dasm (-10.23 % of base)
-104 : 19064.dasm (-6.55 % of base)
-104 : 12235.dasm (-12.50 % of base)
-100 : 12117.dasm (-4.39 % of base)
-100 : 12208.dasm (-6.14 % of base)
-100 : 14633.dasm (-26.32 % of base)
77 total files with Code Size differences (38 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
5248 (17.19 % of base) : 10798.dasm - Jil.JSON:GetWriterAction[System.__Canon](Jil.Options):System.Action`3[System.__Canon,System.__Canon,int] (FullOpts)
1264 (23.85 % of base) : 16074.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1248 (25.57 % of base) : 12182.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1100 (343.75 % of base) : 12455.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
888 (2.36 % of base) : 21283.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
884 (12.75 % of base) : 16616.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
764 (10.43 % of base) : 5113.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
760 (10.14 % of base) : 10392.dasm - MessagePack.Internal.BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
712 (10.61 % of base) : 18864.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
596 (12.87 % of base) : 11938.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:.ctor():this (FullOpts)
592 (12.98 % of base) : 16502.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_LocationFormatter1:.ctor():this (FullOpts)
568 (4.33 % of base) : 11217.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
412 (19.22 % of base) : 2687.dasm - System.IO.Pipes.PipeStream:GetPipePath(System.String,System.String):System.String (FullOpts)
388 (4.79 % of base) : 12163.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
388 (6.94 % of base) : 13382.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
372 (6.82 % of base) : 18841.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindReturn(Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
360 (13.37 % of base) : 4463.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetDefaultSimpleConverters():System.Collections.Generic.Dictionary`2[System.Type,System.Text.Json.Serialization.JsonConverter] (FullOpts)
352 (33.08 % of base) : 18993.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
352 (3.91 % of base) : 10009.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
320 (5.88 % of base) : 14997.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
Top method improvements (bytes):
-692 (-2.13 % of base) : 12010.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
-200 (-3.55 % of base) : 4828.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:.cctor() (FullOpts)
-200 (-22.94 % of base) : 12645.dasm - System.Formats.Tar.Tests.Perf_TarFile:.cctor() (FullOpts)
-176 (-36.36 % of base) : 12412.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-172 (-4.59 % of base) : 7313.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_9(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel) (FullOpts)
-152 (-38.38 % of base) : 12410.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-136 (-7.74 % of base) : 890.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-132 (-13.92 % of base) : 25552.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-124 (-6.49 % of base) : 18855.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
-124 (-10.30 % of base) : 8700.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsImmutableEnumerableType(System.Type):ubyte (FullOpts)
-120 (-13.89 % of base) : 3177.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-120 (-3.18 % of base) : 5908.dasm - System.Reflection.Emit.CustomAttributeBuilder:EmitValue(System.IO.BinaryWriter,System.Type,System.Object) (FullOpts)
-116 (-1.05 % of base) : 2080.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-112 (-5.61 % of base) : 18105.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,byref):this (FullOpts)
-108 (-10.23 % of base) : 6395.dasm - System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this (FullOpts)
-104 (-6.55 % of base) : 19064.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitBinaryOperatorChildren(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator]):this (FullOpts)
-104 (-12.50 % of base) : 12235.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (FullOpts)
-100 (-4.39 % of base) : 12117.dasm - Jil.Common.Utils:LoadConstantOfType(Sigil.NonGeneric.Emit,System.Object,System.Type):ubyte (FullOpts)
-100 (-6.14 % of base) : 12208.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryRemoveInternal(System.Text.RegularExpressions.RegexCache+Key,byref,ubyte,System.__Canon):ubyte:this (FullOpts)
-100 (-26.32 % of base) : 14633.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
Top method regressions (percentages):
1100 (343.75 % of base) : 12455.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
148 (41.57 % of base) : 3261.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
148 (38.14 % of base) : 13894.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
216 (34.62 % of base) : 755.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
28 (33.33 % of base) : 16840.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
160 (33.33 % of base) : 915.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
352 (33.08 % of base) : 18993.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
300 (29.41 % of base) : 19715.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
28 (28.00 % of base) : 8667.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
1248 (25.57 % of base) : 12182.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1264 (23.85 % of base) : 16074.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
44 (22.00 % of base) : 12823.dasm - SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
72 (19.35 % of base) : 15316.dasm - System.Numerics.Quaternion:CreateFromRotationMatrix(System.Numerics.Matrix4x4):System.Numerics.Quaternion (FullOpts)
184 (19.25 % of base) : 19323.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
412 (19.22 % of base) : 2687.dasm - System.IO.Pipes.PipeStream:GetPipePath(System.String,System.String):System.String (FullOpts)
96 (18.75 % of base) : 20520.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (FullOpts)
164 (18.30 % of base) : 14326.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts)
196 (18.22 % of base) : 12044.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (FullOpts)
176 (17.67 % of base) : 18404.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:HasYieldOperations(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
24 (17.65 % of base) : 4035.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-152 (-38.38 % of base) : 12410.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-176 (-36.36 % of base) : 12412.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-100 (-26.32 % of base) : 14633.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
-200 (-22.94 % of base) : 12645.dasm - System.Formats.Tar.Tests.Perf_TarFile:.cctor() (FullOpts)
-48 (-21.05 % of base) : 25037.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:ClearRevocationUnknown():this (FullOpts)
-92 (-19.33 % of base) : 1634.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-96 (-19.20 % of base) : 13804.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
-72 (-16.82 % of base) : 11317.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:SetupDataContractJsonSerializer_():this (FullOpts)
-32 (-15.38 % of base) : 23922.dasm - System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
-12 (-15.00 % of base) : 7086.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
-24 (-14.63 % of base) : 24180.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_Array():int:this (FullOpts)
-24 (-14.63 % of base) : 23992.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
-72 (-13.95 % of base) : 9437.dasm - MicroBenchmarks.Serializers.Json_ToStream`1[System.__Canon]:Setup():this (FullOpts)
-132 (-13.92 % of base) : 25552.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-120 (-13.89 % of base) : 3177.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-12 (-13.04 % of base) : 4717.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
-12 (-13.04 % of base) : 11817.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_0(System.Object):System.String:this (FullOpts)
-12 (-13.04 % of base) : 11825.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_16(System.Object):int:this (FullOpts)
-12 (-13.04 % of base) : 11821.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_8(System.Object):System.String:this (FullOpts)
-12 (-13.04 % of base) : 13545.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<SimpleStructWithPropertiesPropInit>b__101_0(System.Object):int:this (FullOpts)
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 63686268 (overridden on cmd)
Total bytes of diff: 63664876 (overridden on cmd)
Total bytes of delta: -21392 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1220 : 60812.dasm (22.71 % of base)
888 : 85377.dasm (2.36 % of base)
668 : 24647.dasm (5.10 % of base)
416 : 27990.dasm (5.14 % of base)
372 : 79392.dasm (8.20 % of base)
356 : 84700.dasm (11.62 % of base)
304 : 80522.dasm (6.82 % of base)
256 : 41199.dasm (18.88 % of base)
220 : 55410.dasm (16.03 % of base)
216 : 69590.dasm (13.43 % of base)
208 : 27504.dasm (17.93 % of base)
208 : 47051.dasm (22.41 % of base)
196 : 113016.dasm (4.08 % of base)
196 : 103702.dasm (3.85 % of base)
180 : 84698.dasm (4.99 % of base)
180 : 2422.dasm (9.57 % of base)
176 : 63327.dasm (10.89 % of base)
176 : 64141.dasm (18.64 % of base)
176 : 9238.dasm (1.61 % of base)
152 : 84841.dasm (1.61 % of base)
Top file improvements (bytes):
-1500 : 116072.dasm (-35.11 % of base)
-912 : 114601.dasm (-47.50 % of base)
-908 : 109912.dasm (-46.71 % of base)
-908 : 38409.dasm (-82.85 % of base)
-900 : 114598.dasm (-47.07 % of base)
-896 : 109908.dasm (-45.90 % of base)
-864 : 124265.dasm (-55.67 % of base)
-852 : 99413.dasm (-54.48 % of base)
-824 : 93657.dasm (-47.69 % of base)
-728 : 9991.dasm (-43.23 % of base)
-692 : 27318.dasm (-2.13 % of base)
-672 : 10987.dasm (-43.52 % of base)
-648 : 28129.dasm (-42.19 % of base)
-616 : 19718.dasm (-39.59 % of base)
-616 : 28210.dasm (-39.59 % of base)
-600 : 81785.dasm (-60.24 % of base)
-592 : 99409.dasm (-38.14 % of base)
-544 : 108788.dasm (-74.73 % of base)
-536 : 9992.dasm (-9.69 % of base)
-528 : 73514.dasm (-74.16 % of base)
69 total files with Code Size differences (29 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
1220 (22.71 % of base) : 60812.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
888 (2.36 % of base) : 85377.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
668 (5.10 % of base) : 24647.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
416 (5.14 % of base) : 27990.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
372 (8.20 % of base) : 79392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
356 (11.62 % of base) : 84700.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
304 (6.82 % of base) : 80522.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
256 (18.88 % of base) : 41199.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
220 (16.03 % of base) : 55410.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
216 (13.43 % of base) : 69590.dasm - Microsoft.CodeAnalysis.AssemblyMetadata:GetOrCreateData():Microsoft.CodeAnalysis.AssemblyMetadata+Data:this (Tier0-FullOpts)
208 (22.41 % of base) : 47051.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
208 (17.93 % of base) : 27504.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
196 (4.08 % of base) : 113016.dasm - (dynamicClass):_DynamicMethod4(System.IO.TextReader):int (FullOpts)
196 (3.85 % of base) : 103702.dasm - MicroBenchmarks.Serializers.Location:proto_1(byref,MicroBenchmarks.Serializers.Location) (FullOpts)
180 (9.57 % of base) : 2422.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
180 (4.99 % of base) : 84698.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
176 (10.89 % of base) : 63327.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
176 (18.64 % of base) : 64141.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
176 (1.61 % of base) : 9238.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
152 (1.61 % of base) : 84841.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.Location (FullOpts)
Top method improvements (bytes):
-1500 (-35.11 % of base) : 116072.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[System.__Canon]:MoveNext():this (Tier1-OSR)
-912 (-47.50 % of base) : 114601.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-908 (-82.85 % of base) : 38409.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:Array[double](int):double[] (Tier1-OSR)
-908 (-46.71 % of base) : 109912.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-900 (-47.07 % of base) : 114598.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-896 (-45.90 % of base) : 109908.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-864 (-55.67 % of base) : 124265.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-852 (-54.48 % of base) : 99413.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-824 (-47.69 % of base) : 93657.dasm - System.IO.FileSystem:RemoveDirectoryRecursive(System.String) (Tier1-OSR)
-728 (-43.23 % of base) : 9991.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeModule,int,int,System.RuntimeType):System.Object[] (Tier1)
-692 (-2.13 % of base) : 27318.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
-672 (-43.52 % of base) : 10987.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-648 (-42.19 % of base) : 28129.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-616 (-39.59 % of base) : 19718.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:QuickSelect(int[],int,int):int:this (Tier1)
-616 (-39.59 % of base) : 28210.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:QuickSelect(int[],int,int):int:this (Tier1)
-600 (-60.24 % of base) : 81785.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(ulong,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
-592 (-38.14 % of base) : 99409.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-544 (-74.73 % of base) : 108788.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
-536 (-9.69 % of base) : 9992.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
-528 (-74.16 % of base) : 73514.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
Top method regressions (percentages):
36 (52.94 % of base) : 93608.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
1220 (22.71 % of base) : 60812.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
208 (22.41 % of base) : 47051.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
96 (21.82 % of base) : 60813.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
96 (21.82 % of base) : 84851.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
96 (21.82 % of base) : 116951.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
96 (21.82 % of base) : 87794.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
96 (21.43 % of base) : 121963.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 30315.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 83956.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 104837.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 25387.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 73704.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 92665.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 95267.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 117333.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 88154.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.00 % of base) : 34241.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (19.13 % of base) : 31643.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (19.13 % of base) : 38640.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
Top method improvements (percentages):
-908 (-82.85 % of base) : 38409.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:Array[double](int):double[] (Tier1-OSR)
-544 (-74.73 % of base) : 108788.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
-528 (-74.16 % of base) : 73514.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
-484 (-72.46 % of base) : 79338.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
-484 (-72.46 % of base) : 121841.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:Equals(System.__Canon,System.__Canon):ubyte:this (Tier1)
-600 (-60.24 % of base) : 81785.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(ulong,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
-864 (-55.67 % of base) : 124265.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-852 (-54.48 % of base) : 99413.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-340 (-49.71 % of base) : 28194.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareAnyKeys(int,int):int:this (Tier1)
-340 (-49.71 % of base) : 19714.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareAnyKeys(int,int):int:this (Tier1)
-332 (-48.82 % of base) : 19713.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareKeys(int,int):int:this (Tier1)
-332 (-48.82 % of base) : 28193.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareKeys(int,int):int:this (Tier1)
-824 (-47.69 % of base) : 93657.dasm - System.IO.FileSystem:RemoveDirectoryRecursive(System.String) (Tier1-OSR)
-912 (-47.50 % of base) : 114601.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-900 (-47.07 % of base) : 114598.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-908 (-46.71 % of base) : 109912.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-896 (-45.90 % of base) : 109908.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-672 (-43.52 % of base) : 10987.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-728 (-43.23 % of base) : 9991.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeModule,int,int,System.RuntimeType):System.Object[] (Tier1)
-648 (-42.19 % of base) : 28129.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
benchmarks.run_tiered.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 19798224 (overridden on cmd)
Total bytes of diff: 19831832 (overridden on cmd)
Total bytes of delta: 33608 (0.17 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1264 : 30357.dasm (23.85 % of base)
1248 : 21950.dasm (25.57 % of base)
888 : 43872.dasm (2.36 % of base)
712 : 40444.dasm (10.61 % of base)
668 : 22129.dasm (5.10 % of base)
388 : 21821.dasm (4.79 % of base)
388 : 23109.dasm (7.96 % of base)
352 : 22565.dasm (3.91 % of base)
320 : 29317.dasm (8.11 % of base)
320 : 26962.dasm (6.67 % of base)
300 : 48598.dasm (5.66 % of base)
292 : 9129.dasm (2.70 % of base)
288 : 30392.dasm (5.81 % of base)
284 : 39970.dasm (55.04 % of base)
272 : 20349.dasm (3.81 % of base)
272 : 55142.dasm (3.57 % of base)
268 : 26973.dasm (7.78 % of base)
268 : 34706.dasm (4.57 % of base)
240 : 42237.dasm (6.95 % of base)
236 : 41176.dasm (5.44 % of base)
Top file improvements (bytes):
-692 : 21558.dasm (-2.13 % of base)
-176 : 55347.dasm (-30.14 % of base)
-172 : 15902.dasm (-4.59 % of base)
-136 : 20709.dasm (-7.74 % of base)
-124 : 39340.dasm (-7.73 % of base)
-120 : 30117.dasm (-17.05 % of base)
-116 : 28565.dasm (-1.05 % of base)
-112 : 38729.dasm (-5.81 % of base)
-108 : 41426.dasm (-5.28 % of base)
-104 : 26225.dasm (-12.50 % of base)
-100 : 26227.dasm (-26.32 % of base)
-96 : 26226.dasm (-19.20 % of base)
-92 : 28395.dasm (-19.33 % of base)
-92 : 57683.dasm (-1.85 % of base)
-92 : 57688.dasm (-1.81 % of base)
-84 : 17829.dasm (-8.05 % of base)
-72 : 53257.dasm (-6.69 % of base)
-68 : 15601.dasm (-1.85 % of base)
-60 : 41431.dasm (-2.85 % of base)
-60 : 18372.dasm (-3.36 % of base)
79 total files with Code Size differences (38 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
1264 (23.85 % of base) : 30357.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1248 (25.57 % of base) : 21950.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
888 (2.36 % of base) : 43872.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
712 (10.61 % of base) : 40444.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
668 (5.10 % of base) : 22129.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
388 (4.79 % of base) : 21821.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
388 (7.96 % of base) : 23109.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
352 (3.91 % of base) : 22565.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier1)
320 (6.67 % of base) : 26962.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
320 (8.11 % of base) : 29317.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
300 (5.66 % of base) : 48598.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
292 (2.70 % of base) : 9129.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
288 (5.81 % of base) : 30392.dasm - (dynamicClass):ReadMyEventsListerItemFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
284 (55.04 % of base) : 39970.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (Tier1)
272 (3.81 % of base) : 20349.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
272 (3.57 % of base) : 55142.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
268 (7.78 % of base) : 26973.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
268 (4.57 % of base) : 34706.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
240 (6.95 % of base) : 42237.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (Tier1)
236 (5.44 % of base) : 41176.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-692 (-2.13 % of base) : 21558.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
-176 (-30.14 % of base) : 55347.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-172 (-4.59 % of base) : 15902.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_9(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel) (FullOpts)
-136 (-7.74 % of base) : 20709.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
-124 (-7.73 % of base) : 39340.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
-120 (-17.05 % of base) : 30117.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (Tier1)
-116 (-1.05 % of base) : 28565.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
-112 (-5.81 % of base) : 38729.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,byref):this (Tier1)
-108 (-5.28 % of base) : 41426.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-104 (-12.50 % of base) : 26225.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (Tier1)
-100 (-26.32 % of base) : 26227.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-96 (-19.20 % of base) : 26226.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-92 (-1.81 % of base) : 57688.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (Tier1)
-92 (-1.85 % of base) : 57683.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (Tier1-OSR)
-92 (-19.33 % of base) : 28395.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-84 (-8.05 % of base) : 17829.dasm - Interop+Sys:GetCwd():System.String (Tier0-FullOpts)
-72 (-6.69 % of base) : 53257.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1)
-68 (-1.85 % of base) : 15601.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-60 (-2.85 % of base) : 41431.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-60 (-3.36 % of base) : 18372.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
Top method regressions (percentages):
284 (55.04 % of base) : 39970.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (Tier1)
216 (34.62 % of base) : 6662.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
160 (33.33 % of base) : 6467.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
1248 (25.57 % of base) : 21950.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1264 (23.85 % of base) : 30357.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
96 (18.75 % of base) : 42875.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (Tier1)
164 (18.30 % of base) : 26224.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
196 (18.22 % of base) : 21609.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
24 (17.65 % of base) : 25985.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
28 (17.07 % of base) : 41545.dasm - System.Version:CompareTo(System.Version):int:this (Tier1)
64 (16.84 % of base) : 4050.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
8 (15.38 % of base) : 7686.dasm - System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (Tier1)
8 (15.38 % of base) : 2633.dasm - System.Span`1[ubyte]:op_Implicit(ubyte[]):System.Span`1[ubyte] (Tier1)
24 (15.00 % of base) : 29030.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Net.Sockets.SocketAsyncEngine+SocketIOEvent]:TryEnqueue(System.Net.Sockets.SocketAsyncEngine+SocketIOEvent):ubyte:this (Tier1)
12 (13.04 % of base) : 28967.dasm - System.LocalAppContextSwitches:get_EnableUnsafeUTF7Encoding():ubyte (Tier1)
12 (13.04 % of base) : 4895.dasm - System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
12 (13.04 % of base) : 4885.dasm - System.LocalAppContextSwitches:get_ForceInterpretedInvoke():ubyte (Tier1)
136 (12.19 % of base) : 48699.dasm - System.Environment:ExpandEnvironmentVariablesCore(System.String):System.String (Tier0-FullOpts)
184 (12.07 % of base) : 31180.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (10.94 % of base) : 42304.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleAwaitUsing():ubyte:this (Tier1)
Top method improvements (percentages):
-176 (-30.14 % of base) : 55347.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-100 (-26.32 % of base) : 26227.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-92 (-19.33 % of base) : 28395.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-96 (-19.20 % of base) : 26226.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-28 (-17.50 % of base) : 28739.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
-120 (-17.05 % of base) : 30117.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (Tier1)
-12 (-13.04 % of base) : 16074.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
-12 (-13.04 % of base) : 31287.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
-12 (-13.04 % of base) : 16073.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
-12 (-12.50 % of base) : 16091.dasm - (dynamicClass):Int1Setter(System.Object,int) (FullOpts)
-12 (-12.50 % of base) : 41271.dasm - (dynamicClass):Param2Setter(System.Object,ubyte) (FullOpts)
-12 (-12.50 % of base) : 44951.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject:GetValue[int](BenchmarkDotNet.Characteristics.Characteristic`1[int]):int:this (Tier1)
-104 (-12.50 % of base) : 26225.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (Tier1)
-12 (-12.50 % of base) : 30993.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
-12 (-11.54 % of base) : 16090.dasm - (dynamicClass):String1Setter(System.Object,System.String) (FullOpts)
-12 (-10.71 % of base) : 44952.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[int]:get_Item(BenchmarkDotNet.Characteristics.CharacteristicObject):int:this (Tier1)
-32 (-10.00 % of base) : 16719.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-48 (-9.76 % of base) : 29930.dasm - System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte (Tier1)
-8 (-9.09 % of base) : 39462.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:HasErrors[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier1)
-24 (-8.57 % of base) : 13120.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
coreclr_tests.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 295682080 (overridden on cmd)
Total bytes of diff: 295695768 (overridden on cmd)
Total bytes of delta: 13688 (0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1452 : 251417.dasm (59.41 % of base)
1300 : 177679.dasm (20.11 % of base)
1076 : 302756.dasm (4.02 % of base)
1004 : 313795.dasm (7.93 % of base)
828 : 292520.dasm (35.14 % of base)
712 : 199827.dasm (10.61 % of base)
640 : 252815.dasm (15.66 % of base)
600 : 186857.dasm (7.92 % of base)
568 : 281709.dasm (7.47 % of base)
560 : 255910.dasm (9.45 % of base)
560 : 25594.dasm (9.46 % of base)
516 : 239584.dasm (0.51 % of base)
516 : 238931.dasm (0.51 % of base)
480 : 265650.dasm (3.10 % of base)
480 : 259109.dasm (3.87 % of base)
468 : 292590.dasm (19.76 % of base)
468 : 291617.dasm (3.79 % of base)
436 : 293943.dasm (26.59 % of base)
428 : 255227.dasm (4.19 % of base)
420 : 242404.dasm (14.21 % of base)
Top file improvements (bytes):
-8616 : 238938.dasm (-6.55 % of base)
-6564 : 239589.dasm (-5.12 % of base)
-6308 : 239599.dasm (-5.13 % of base)
-5872 : 238952.dasm (-4.60 % of base)
-4516 : 239494.dasm (-27.70 % of base)
-4508 : 238744.dasm (-2.51 % of base)
-4472 : 238749.dasm (-2.49 % of base)
-2076 : 240055.dasm (-6.05 % of base)
-1336 : 195948.dasm (-1.05 % of base)
-1252 : 343804.dasm (-51.31 % of base)
-1136 : 343846.dasm (-49.39 % of base)
-1000 : 239159.dasm (-0.94 % of base)
-968 : 381613.dasm (-57.89 % of base)
-876 : 291562.dasm (-3.85 % of base)
-716 : 118745.dasm (-7.19 % of base)
-668 : 118741.dasm (-6.15 % of base)
-560 : 290939.dasm (-3.17 % of base)
-552 : 296359.dasm (-14.65 % of base)
-540 : 296405.dasm (-15.05 % of base)
-540 : 296357.dasm (-15.05 % of base)
82 total files with Code Size differences (42 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
1452 (59.41 % of base) : 251417.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1300 (20.11 % of base) : 177679.dasm - div_r4._div:main():int (FullOpts)
1076 (4.02 % of base) : 302756.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
1004 (7.93 % of base) : 313795.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
828 (35.14 % of base) : 292520.dasm - ManagedPointers:Validate_IntrinsicMethodsWithByRef_NullByRef() (FullOpts)
712 (10.61 % of base) : 199827.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
640 (15.66 % of base) : 252815.dasm - GitHub_16377:Test() (FullOpts)
600 (7.92 % of base) : 186857.dasm - ArrBoundUnsigned:TestEntryPoint():int (FullOpts)
568 (7.47 % of base) : 281709.dasm - Generated639:MethodCallingTest() (FullOpts)
560 (9.45 % of base) : 255910.dasm - System.Net.Sockets.SocketErrorPal:.cctor() (FullOpts)
560 (9.46 % of base) : 25594.dasm - System.Net.Sockets.SocketErrorPal:.cctor() (FullOpts)
516 (0.51 % of base) : 238931.dasm - i4div:TestEntryPoint():int (FullOpts)
516 (0.51 % of base) : 239584.dasm - u4div:TestEntryPoint():int (FullOpts)
480 (3.87 % of base) : 259109.dasm - Generated1003:MethodCallingTest() (FullOpts)
480 (3.10 % of base) : 265650.dasm - Generated1169:MethodCallingTest() (FullOpts)
468 (3.79 % of base) : 291617.dasm - Generated966:MethodCallingTest() (FullOpts)
468 (19.76 % of base) : 292590.dasm - UnsafeAccessorsTests:Verify_InvalidUseUnsafeAccessor() (FullOpts)
436 (26.59 % of base) : 293943.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
428 (4.19 % of base) : 255227.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,long,ushort,double,long,ulong):int (FullOpts)
420 (14.21 % of base) : 242404.dasm - JitTest_types_ldtoken_il.Test:Main():int (FullOpts)
Top method improvements (bytes):
-8616 (-6.55 % of base) : 238938.dasm - i4rem:TestEntryPoint():int (FullOpts)
-6564 (-5.12 % of base) : 239589.dasm - u4rem:TestEntryPoint():int (FullOpts)
-6308 (-5.13 % of base) : 239599.dasm - u8rem:TestEntryPoint():int (FullOpts)
-5872 (-4.60 % of base) : 238952.dasm - i8rem:TestEntryPoint():int (FullOpts)
-4516 (-27.70 % of base) : 239494.dasm - Test_throwinfinally_50_cs.Class1:foo(int) (FullOpts)
-4508 (-2.51 % of base) : 238744.dasm - decimaldiv:TestEntryPoint():int (FullOpts)
-4472 (-2.49 % of base) : 238749.dasm - decimalrem:TestEntryPoint():int (FullOpts)
-2076 (-6.05 % of base) : 240055.dasm - LongMulOn32BitTest:Main():int (FullOpts)
-1336 (-1.05 % of base) : 195948.dasm - Program:TestEntryPoint():int (FullOpts)
-1252 (-51.31 % of base) : 343804.dasm - BenchmarksGame.KNucleotide_9:countEnding(int,long,ubyte):System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper] (Tier1-OSR)
-1136 (-49.39 % of base) : 343846.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-1000 (-0.94 % of base) : 239159.dasm - overldrem:TestEntryPoint():int (FullOpts)
-968 (-57.89 % of base) : 381613.dasm - System.IO.Enumeration.FileSystemEntry:ToSpecifiedFullPath():System.String:this (Tier1)
-876 (-3.85 % of base) : 291562.dasm - Generated963:CalliTest() (FullOpts)
-716 (-7.19 % of base) : 118745.dasm - GitHub_47236.Program:TestVector128() (FullOpts)
-668 (-6.15 % of base) : 118741.dasm - GitHub_47236.Program:TestVector256() (FullOpts)
-560 (-3.17 % of base) : 290939.dasm - Generated944:CalliTest() (FullOpts)
-552 (-14.65 % of base) : 296359.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-540 (-15.05 % of base) : 296405.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-540 (-15.05 % of base) : 296357.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
Top method regressions (percentages):
1452 (59.41 % of base) : 251417.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
160 (55.56 % of base) : 190583.dasm - MainApp:TestEntryPoint():int (FullOpts)
16 (50.00 % of base) : 150446.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
16 (50.00 % of base) : 150470.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
68 (40.48 % of base) : 312495.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
148 (38.14 % of base) : 202727.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
72 (35.29 % of base) : 381330.dasm - System.Globalization.CompareInfo:IsPrefix(System.String,System.String,int):ubyte:this (Instrumented Tier1)
828 (35.14 % of base) : 292520.dasm - ManagedPointers:Validate_IntrinsicMethodsWithByRef_NullByRef() (FullOpts)
40 (33.33 % of base) : 183496.dasm - BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
128 (33.33 % of base) : 203557.dasm - System.Xml.XmlConverter:ToChars(double,ubyte[],int):int (FullOpts)
352 (33.08 % of base) : 199955.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
220 (31.61 % of base) : 177370.dasm - beq_r4:main():int (FullOpts)
220 (31.61 % of base) : 177373.dasm - beq_r8:main():int (FullOpts)
104 (30.59 % of base) : 381465.dasm - System.IO.Enumeration.FileSystemEnumerableFactory+<>c__DisplayClass2_0:<UserFiles>b__1(byref):ubyte:this (Tier1)
300 (29.41 % of base) : 200690.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
436 (26.59 % of base) : 293943.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
180 (25.86 % of base) : 177397.dasm - bge_un_r4:main():int (FullOpts)
180 (25.86 % of base) : 177399.dasm - bge_un_r8:main():int (FullOpts)
32 (25.81 % of base) : 251664.dasm - System.Xml.Xsl.Xslt.CompilerScopeManager`1[System.__Canon]:ExitScope():this (FullOpts)
196 (25.79 % of base) : 177383.dasm - bge_r4:main():int (FullOpts)
Top method improvements (percentages):
-968 (-57.89 % of base) : 381613.dasm - System.IO.Enumeration.FileSystemEntry:ToSpecifiedFullPath():System.String:this (Tier1)
-44 (-55.00 % of base) : 242626.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)
-1252 (-51.31 % of base) : 343804.dasm - BenchmarksGame.KNucleotide_9:countEnding(int,long,ubyte):System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper] (Tier1-OSR)
-308 (-50.66 % of base) : 138033.dasm - System.Runtime.Intrinsics.Vector512:Dot[long](System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):long (FullOpts)
-308 (-50.66 % of base) : 138053.dasm - System.Runtime.Intrinsics.Vector512:Dot[ulong](System.Runtime.Intrinsics.Vector512`1[ulong],System.Runtime.Intrinsics.Vector512`1[ulong]):ulong (FullOpts)
-364 (-49.46 % of base) : 331916.dasm - System.Number:FormatInt32(int,int,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
-1136 (-49.39 % of base) : 343846.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-28 (-43.75 % of base) : 238460.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)
-28 (-43.75 % of base) : 242574.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)
-12 (-37.50 % of base) : 247980.dasm - Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
-12 (-37.50 % of base) : 247984.dasm - Runtime_40607.Program:SignExtendsWrittenValue(short):int (FullOpts)
-12 (-37.50 % of base) : 247983.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
-12 (-37.50 % of base) : 247987.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
-208 (-36.11 % of base) : 255521.dasm - ILGEN_0x1bd95bae:Method_0x40637edd(int,byte,short,short,double,float,ubyte,float):short (FullOpts)
-64 (-34.78 % of base) : 132298.dasm - System.Runtime.Intrinsics.Vector256:Dot[long](System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector256`1[long]):long (FullOpts)
-64 (-34.78 % of base) : 132318.dasm - System.Runtime.Intrinsics.Vector256:Dot[ulong](System.Runtime.Intrinsics.Vector256`1[ulong],System.Runtime.Intrinsics.Vector256`1[ulong]):ulong (FullOpts)
-240 (-34.09 % of base) : 392283.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)
-12 (-33.33 % of base) : 247982.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ubyte):int (FullOpts)
-12 (-33.33 % of base) : 247986.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ushort):int (FullOpts)
-12 (-33.33 % of base) : 247981.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(byte):int (FullOpts)
libraries.crossgen2.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 54686356 (overridden on cmd)
Total bytes of diff: 54869736 (overridden on cmd)
Total bytes of delta: 183380 (0.34 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2180 : 143689.dasm (33.60 % of base)
1208 : 128949.dasm (56.55 % of base)
1208 : 68267.dasm (56.55 % of base)
908 : 39511.dasm (1.15 % of base)
688 : 129034.dasm (73.50 % of base)
688 : 205156.dasm (27.04 % of base)
688 : 68352.dasm (73.50 % of base)
688 : 204640.dasm (25.56 % of base)
612 : 68529.dasm (39.13 % of base)
612 : 129206.dasm (39.13 % of base)
604 : 223350.dasm (2.25 % of base)
596 : 128928.dasm (42.45 % of base)
596 : 68246.dasm (42.45 % of base)
560 : 35287.dasm (103.70 % of base)
500 : 204070.dasm (5.94 % of base)
460 : 129057.dasm (8.46 % of base)
460 : 68379.dasm (8.41 % of base)
440 : 68276.dasm (30.39 % of base)
440 : 128958.dasm (31.98 % of base)
424 : 128957.dasm (23.19 % of base)
Top file improvements (bytes):
-276 : 113373.dasm (-14.11 % of base)
-276 : 51197.dasm (-14.11 % of base)
-156 : 165687.dasm (-12.00 % of base)
-152 : 232176.dasm (-8.09 % of base)
-144 : 50418.dasm (-4.96 % of base)
-128 : 254824.dasm (-5.56 % of base)
-128 : 250100.dasm (-5.55 % of base)
-128 : 38604.dasm (-0.71 % of base)
-124 : 36620.dasm (-16.49 % of base)
-120 : 86816.dasm (-9.38 % of base)
-112 : 36354.dasm (-7.43 % of base)
-108 : 35965.dasm (-7.38 % of base)
-108 : 35563.dasm (-7.38 % of base)
-104 : 47775.dasm (-5.80 % of base)
-104 : 224956.dasm (-3.89 % of base)
-104 : 251604.dasm (-4.72 % of base)
-96 : 22251.dasm (-4.30 % of base)
-92 : 165955.dasm (-11.00 % of base)
-92 : 172094.dasm (-1.81 % of base)
-88 : 228137.dasm (-7.86 % of base)
68 total files with Code Size differences (37 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
2180 (33.60 % of base) : 143689.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
1208 (56.55 % of base) : 128949.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
1208 (56.55 % of base) : 68267.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
908 (1.15 % of base) : 39511.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
688 (73.50 % of base) : 129034.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (73.50 % of base) : 68352.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (25.56 % of base) : 204640.dasm - System.Xml.Schema.Preprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (FullOpts)
688 (27.04 % of base) : 205156.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (FullOpts)
612 (39.13 % of base) : 68529.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
612 (39.13 % of base) : 129206.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|211_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
604 (2.25 % of base) : 223350.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)
596 (42.45 % of base) : 128928.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
596 (42.45 % of base) : 68246.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
560 (103.70 % of base) : 35287.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
500 (5.94 % of base) : 204070.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:Preprocess(System.Xml.Schema.XmlSchema,System.String,int):this (FullOpts)
460 (8.46 % of base) : 129057.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
460 (8.41 % of base) : 68379.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
440 (30.39 % of base) : 68276.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
440 (31.98 % of base) : 128958.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
424 (23.19 % of base) : 128957.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseArrayRankSpecifier(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ArrayRankSpecifierSyntax:this (FullOpts)
Top method improvements (bytes):
-276 (-14.11 % of base) : 113373.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-276 (-14.11 % of base) : 51197.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-156 (-12.00 % of base) : 165687.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-152 (-8.09 % of base) : 232176.dasm - Microsoft.Extensions.Logging.Console.JsonConsoleFormatter:WriteItem(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]) (FullOpts)
-144 (-4.96 % of base) : 50418.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(byref,System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
-128 (-0.71 % of base) : 38604.dasm - Microsoft.FSharp.Quotations.FSharpExpr:GetLayout(ubyte):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
-128 (-5.55 % of base) : 250100.dasm - System.Resources.Extensions.PreserializedResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
-128 (-5.56 % of base) : 254824.dasm - System.Resources.ResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
-124 (-16.49 % of base) : 36620.dasm - System.DateTimeParse:ProcessTerminalState(int,byref,byref,byref,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-120 (-9.38 % of base) : 86816.dasm - Microsoft.CodeAnalysis.VisualBasic.MemberSemanticModel:GetBoundNodes(Microsoft.CodeAnalysis.SyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundNode]:this (FullOpts)
-112 (-7.43 % of base) : 36354.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask[System.__Canon]:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-108 (-7.38 % of base) : 35965.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask[ubyte]:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-108 (-7.38 % of base) : 35563.dasm - System.Threading.Tasks.ValueTask+ValueTaskSourceAsTask:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-104 (-3.89 % of base) : 224956.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:GetStandardAndLiftedBinopSignatures(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):ubyte:this (FullOpts)
-104 (-4.72 % of base) : 251604.dasm - System.Diagnostics.TagList:Insert(int,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (FullOpts)
-104 (-5.80 % of base) : 47775.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-96 (-4.30 % of base) : 22251.dasm - System.Text.TranscodingStream+<<WriteAsync>g__WriteAsyncCore|50_0>d:MoveNext():this (FullOpts)
-92 (-1.81 % of base) : 172094.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
-92 (-11.00 % of base) : 165955.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-88 (-7.86 % of base) : 228137.dasm - System.Configuration.ClientConfigurationHost:VerifyDefinitionAllowed(System.String,int,int,System.Configuration.Internal.IConfigErrorInfo):this (FullOpts)
Top method regressions (percentages):
560 (103.70 % of base) : 35287.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
688 (73.50 % of base) : 129034.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (73.50 % of base) : 68352.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
1208 (56.55 % of base) : 128949.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
1208 (56.55 % of base) : 68267.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
296 (46.54 % of base) : 36590.dasm - System.Array+SorterObjectArray:PickPivotAndPartition(int,int):int:this (FullOpts)
596 (42.45 % of base) : 128928.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
596 (42.45 % of base) : 68246.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
148 (40.22 % of base) : 175961.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
304 (39.18 % of base) : 49731.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
612 (39.13 % of base) : 68529.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
612 (39.13 % of base) : 129206.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|211_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
148 (37.00 % of base) : 175960.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
16 (36.36 % of base) : 225439.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
20 (35.71 % of base) : 99346.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
20 (35.71 % of base) : 99352.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
2180 (33.60 % of base) : 143689.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
440 (31.98 % of base) : 128958.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
80 (31.75 % of base) : 168840.dasm - System.Net.Security.AuthenticatedStream:DisposeAsync():System.Threading.Tasks.ValueTask:this (FullOpts)
440 (30.39 % of base) : 68276.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
Top method improvements (percentages):
-52 (-33.33 % of base) : 251853.dasm - System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
-48 (-32.43 % of base) : 111130.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
-28 (-28.00 % of base) : 111129.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
-40 (-25.00 % of base) : 223457.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
-40 (-25.00 % of base) : 223456.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
-16 (-20.00 % of base) : 99364.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
-16 (-19.05 % of base) : 60076.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-16 (-19.05 % of base) : 121160.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-20 (-17.86 % of base) : 68095.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-20 (-17.86 % of base) : 128780.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-124 (-16.49 % of base) : 36620.dasm - System.DateTimeParse:ProcessTerminalState(int,byref,byref,byref,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-32 (-16.33 % of base) : 28373.dasm - System.Runtime.Intrinsics.Vector64`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
-60 (-15.00 % of base) : 245012.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)
-36 (-14.29 % of base) : 262389.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-12 (-14.29 % of base) : 219465.dasm - System.Xml.XmlConverter:IsWhitespace(ushort):ubyte (FullOpts)
-276 (-14.11 % of base) : 113373.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-276 (-14.11 % of base) : 51197.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-16 (-12.90 % of base) : 227735.dasm - System.Text.Json.Utf8JsonReader:ThrowInvalidLiteral(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
-72 (-12.86 % of base) : 12577.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationAnalysisValueProvider`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
-72 (-12.86 % of base) : 190001.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationAnalysisValueProvider`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61288276 (overridden on cmd)
Total bytes of diff: 61599544 (overridden on cmd)
Total bytes of delta: 311268 (0.51 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
3448 : 96475.dasm (87.78 % of base)
1840 : 276047.dasm (41.14 % of base)
1748 : 105581.dasm (31.15 % of base)
1744 : 193777.dasm (8.26 % of base)
1708 : 95957.dasm (18.37 % of base)
1452 : 163106.dasm (59.41 % of base)
1412 : 265879.dasm (50.50 % of base)
1388 : 38365.dasm (28.61 % of base)
1224 : 113784.dasm (21.55 % of base)
1144 : 275902.dasm (24.57 % of base)
1112 : 190496.dasm (334.94 % of base)
1112 : 190634.dasm (334.94 % of base)
968 : 200378.dasm (49.79 % of base)
968 : 289607.dasm (7.52 % of base)
964 : 217626.dasm (24.54 % of base)
884 : 86305.dasm (12.67 % of base)
876 : 31627.dasm (12.28 % of base)
832 : 199572.dasm (30.59 % of base)
812 : 294232.dasm (3.84 % of base)
796 : 66355.dasm (16.06 % of base)
Top file improvements (bytes):
-924 : 35325.dasm (-6.27 % of base)
-916 : 35321.dasm (-6.21 % of base)
-784 : 91663.dasm (-14.50 % of base)
-712 : 98577.dasm (-5.92 % of base)
-704 : 98573.dasm (-5.86 % of base)
-516 : 91881.dasm (-2.17 % of base)
-504 : 62424.dasm (-8.28 % of base)
-436 : 257487.dasm (-21.29 % of base)
-376 : 30091.dasm (-51.09 % of base)
-376 : 223656.dasm (-51.09 % of base)
-300 : 99158.dasm (-0.75 % of base)
-292 : 249345.dasm (-34.27 % of base)
-288 : 32060.dasm (-12.27 % of base)
-276 : 117731.dasm (-10.94 % of base)
-252 : 31727.dasm (-8.92 % of base)
-236 : 91807.dasm (-10.05 % of base)
-232 : 229051.dasm (-21.89 % of base)
-216 : 137268.dasm (-5.99 % of base)
-216 : 279510.dasm (-4.11 % of base)
-204 : 223657.dasm (-20.90 % of base)
75 total files with Code Size differences (37 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
3448 (87.78 % of base) : 96475.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)
1840 (41.14 % of base) : 276047.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
1748 (31.15 % of base) : 105581.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DeclarationContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
1744 (8.26 % of base) : 193777.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1708 (18.37 % of base) : 95957.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateVarianceDiagnosticsForTypeRecursively(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,short,int,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+VarianceDiagnosticsTargetTypeParameter,int,byref):this (FullOpts)
1452 (59.41 % of base) : 163106.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1412 (50.50 % of base) : 265879.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1388 (28.61 % of base) : 38365.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1224 (21.55 % of base) : 113784.dasm - Microsoft.CodeAnalysis.VisualBasic.IteratorRewriter:EnsureAllSymbolsAndSignature():ubyte:this (FullOpts)
1144 (24.57 % of base) : 275902.dasm - ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall:ToString():System.String:this (FullOpts)
1112 (334.94 % of base) : 190634.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1112 (334.94 % of base) : 190496.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
968 (49.79 % of base) : 200378.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
968 (7.52 % of base) : 289607.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
964 (24.54 % of base) : 217626.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)
884 (12.67 % of base) : 86305.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
876 (12.28 % of base) : 31627.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
832 (30.59 % of base) : 199572.dasm - Microsoft.Build.Construction.SolutionProjectGenerator:AddReferencesBuildTask(Microsoft.Build.Execution.ProjectTargetInstance,System.String,System.String) (FullOpts)
812 (3.84 % of base) : 294232.dasm - Interop+Sys:GetDriveType(System.String):int (FullOpts)
796 (16.06 % of base) : 66355.dasm - Microsoft.CodeAnalysis.CSharp.AsyncRewriter+AsyncIteratorRewriter:VerifyPresenceOfRequiredAPIs(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
Top method improvements (bytes):
-924 (-6.27 % of base) : 35325.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Numerics.Vector`1[float]):System.Nullable`1[int]:this (FullOpts)
-916 (-6.21 % of base) : 35321.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
-784 (-14.50 % of base) : 91663.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)
-712 (-5.92 % of base) : 98577.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,System.Numerics.Vector`1[float]):System.Nullable`1[int]:this (FullOpts)
-704 (-5.86 % of base) : 98573.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
-516 (-2.17 % of base) : 91881.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
-504 (-8.28 % of base) : 62424.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-436 (-21.29 % of base) : 257487.dasm - System.Net.NetworkInformation.NetworkChange+<ReadEventsAsync>d__29:MoveNext():this (FullOpts)
-376 (-51.09 % of base) : 30091.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-376 (-51.09 % of base) : 223656.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-300 (-0.75 % of base) : 99158.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
-292 (-34.27 % of base) : 249345.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-288 (-12.27 % of base) : 32060.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-276 (-10.94 % of base) : 117731.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)
-252 (-8.92 % of base) : 31727.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-236 (-10.05 % of base) : 91807.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CheckSharedSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref,int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
-232 (-21.89 % of base) : 229051.dasm - Internal.JitInterface.InstructionSetFlags:Set64BitInstructionSetVariants(int):this (FullOpts)
-216 (-5.99 % of base) : 137268.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrRundownTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
-216 (-4.11 % of base) : 279510.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
-204 (-20.90 % of base) : 223657.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToEquivalent(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
Top method regressions (percentages):
1112 (334.94 % of base) : 190634.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1112 (334.94 % of base) : 190496.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
3448 (87.78 % of base) : 96475.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)
1452 (59.41 % of base) : 163106.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
284 (55.04 % of base) : 58414.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (FullOpts)
444 (52.11 % of base) : 190217.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
364 (50.56 % of base) : 28444.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder:GetPredecessors(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder]):this (FullOpts)
364 (50.56 % of base) : 222032.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder:GetPredecessors(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder]):this (FullOpts)
1412 (50.50 % of base) : 265879.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
968 (49.79 % of base) : 200378.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
128 (48.48 % of base) : 198224.dasm - Microsoft.VisualBasic.CompilerServices.Operators:MultiplyUInt64(ulong,ulong):System.Object (FullOpts)
344 (46.49 % of base) : 220026.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
344 (46.49 % of base) : 26349.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
16 (44.44 % of base) : 105883.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
16 (44.44 % of base) : 105889.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
352 (43.35 % of base) : 32470.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CollectTupleFieldMemberName(System.String,int,int,byref) (FullOpts)
352 (43.35 % of base) : 91726.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CollectTupleFieldMemberName(System.String,int,int,byref) (FullOpts)
128 (43.24 % of base) : 106200.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:StartsXmlDoc(int):ubyte:this (FullOpts)
148 (41.57 % of base) : 150835.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
1840 (41.14 % of base) : 276047.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
Top method improvements (percentages):
-376 (-51.09 % of base) : 30091.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-376 (-51.09 % of base) : 223656.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-72 (-42.86 % of base) : 186992.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
-72 (-41.86 % of base) : 186989.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
-104 (-38.81 % of base) : 287943.dasm - System.Numerics.BigInteger:Parse(System.ReadOnlySpan`1[ushort],System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-292 (-34.27 % of base) : 249345.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-28 (-30.43 % of base) : 144806.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
-56 (-27.45 % of base) : 287944.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
-104 (-27.08 % of base) : 287732.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (FullOpts)
-56 (-25.45 % of base) : 287739.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-100 (-24.27 % of base) : 287734.dasm - System.Numerics.BigInteger:Parse(System.String,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-20 (-23.81 % of base) : 105908.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
-44 (-23.40 % of base) : 76502.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
-104 (-23.01 % of base) : 150201.dasm - Newtonsoft.Json.JsonTextReader:BigIntegerParse(System.String,System.Globalization.CultureInfo):System.Object (FullOpts)
-104 (-22.22 % of base) : 146172.dasm - System.Data.Common.BigIntegerStorage:ConvertXmlToObject(System.String):System.Object:this (FullOpts)
-8 (-22.22 % of base) : 287262.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
-232 (-21.89 % of base) : 229051.dasm - Internal.JitInterface.InstructionSetFlags:Set64BitInstructionSetVariants(int):this (FullOpts)
-436 (-21.29 % of base) : 257487.dasm - System.Net.NetworkInformation.NetworkChange+<ReadEventsAsync>d__29:MoveNext():this (FullOpts)
-48 (-21.05 % of base) : 89400.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:ClearRevocationUnknown():this (FullOpts)
-108 (-20.93 % of base) : 16929.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 37104084 (overridden on cmd)
Total bytes of diff: 37144924 (overridden on cmd)
Total bytes of delta: 40840 (0.11 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
212 : 60646.dasm (8.33 % of base)
208 : 39433.dasm (8.20 % of base)
208 : 26460.dasm (8.20 % of base)
180 : 12740.dasm (7.10 % of base)
172 : 72431.dasm (4.41 % of base)
152 : 68528.dasm (3.91 % of base)
148 : 42770.dasm (5.84 % of base)
144 : 75191.dasm (3.88 % of base)
136 : 35789.dasm (4.76 % of base)
136 : 35951.dasm (4.77 % of base)
128 : 68515.dasm (3.86 % of base)
124 : 3697.dasm (6.75 % of base)
96 : 81865.dasm (6.80 % of base)
96 : 1123.dasm (2.26 % of base)
92 : 68507.dasm (3.34 % of base)
92 : 373.dasm (2.31 % of base)
80 : 78673.dasm (2.81 % of base)
76 : 3257.dasm (12.42 % of base)
76 : 2767.dasm (27.54 % of base)
76 : 32837.dasm (3.68 % of base)
Top file improvements (bytes):
-852 : 38668.dasm (-58.20 % of base)
-828 : 10750.dasm (-57.50 % of base)
-524 : 21582.dasm (-59.82 % of base)
-500 : 33077.dasm (-44.48 % of base)
-496 : 37183.dasm (-45.09 % of base)
-392 : 55089.dasm (-10.97 % of base)
-360 : 21651.dasm (-10.08 % of base)
-356 : 43383.dasm (-9.97 % of base)
-348 : 54998.dasm (-49.71 % of base)
-336 : 21440.dasm (-13.75 % of base)
-332 : 11426.dasm (-9.29 % of base)
-332 : 19833.dasm (-9.29 % of base)
-332 : 14663.dasm (-9.29 % of base)
-332 : 22067.dasm (-9.29 % of base)
-332 : 34226.dasm (-9.29 % of base)
-332 : 37174.dasm (-9.29 % of base)
-332 : 43318.dasm (-9.29 % of base)
-332 : 4187.dasm (-9.29 % of base)
-332 : 20691.dasm (-9.29 % of base)
-332 : 39573.dasm (-9.29 % of base)
76 total files with Code Size differences (37 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
212 (8.33 % of base) : 60646.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (Tier1-OSR)
208 (8.20 % of base) : 39433.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
208 (8.20 % of base) : 26460.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
180 (7.10 % of base) : 12740.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
172 (4.41 % of base) : 72431.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameDecode(ubyte[],ubyte,ubyte,ubyte,System.String,System.String,ubyte):System.String (Tier0-FullOpts)
152 (3.91 % of base) : 68528.dasm - (dynamicClass):ReadTupleOfintintintintintintFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
148 (5.84 % of base) : 42770.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
144 (3.88 % of base) : 75191.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
136 (4.76 % of base) : 35789.dasm - (dynamicClass):ReadRectangleFFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
136 (4.77 % of base) : 35951.dasm - (dynamicClass):ReadRectangleFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
128 (3.86 % of base) : 68515.dasm - (dynamicClass):ReadTupleOfintintintintintFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
124 (6.75 % of base) : 3697.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Intrinsified(ulong,ulong):ulong (Instrumented Tier1)
96 (6.80 % of base) : 81865.dasm - System.Threading.Tasks.Dataflow.Internal.TargetCore`1[int]:ProcessMessagesLoopCore():this (Tier1-OSR)
96 (2.26 % of base) : 1123.dasm - Xunit.ConsoleClient.ConsoleRunner:ExecuteAssembly(System.Object,Xunit.XunitProjectAssembly,ubyte,ubyte,System.Nullable`1[ubyte],System.Nullable`1[int],ubyte,ubyte,System.Nullable`1[int],ubyte,ubyte,Xunit.XunitFilters,ubyte):System.Xml.Linq.XElement:this (Tier0-FullOpts)
92 (3.34 % of base) : 68507.dasm - (dynamicClass):ReadTupleOfintintintintFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
92 (2.31 % of base) : 373.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Instrumented Tier1)
80 (2.81 % of base) : 78673.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:FindLiteralFollowingLeadingLoop(System.Text.RegularExpressions.RegexNode):System.Nullable`1[System.ValueTuple`2[System.Text.RegularExpressions.RegexNode,System.ValueTuple`4[ushort,System.String,int,ushort[]]]] (Tier0-FullOpts)
76 (3.68 % of base) : 32837.dasm - System.Diagnostics.Process:GetUntruncatedProcessName(byref):System.String (Tier0-FullOpts)
76 (27.54 % of base) : 2767.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
76 (12.42 % of base) : 3257.dasm - System.IO.Path:GetDirectoryName(System.String):System.String (Instrumented Tier1)
Top method improvements (bytes):
-852 (-58.20 % of base) : 38668.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-828 (-57.50 % of base) : 10750.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-524 (-59.82 % of base) : 21582.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-500 (-44.48 % of base) : 33077.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-496 (-45.09 % of base) : 37183.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-392 (-10.97 % of base) : 55089.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-360 (-10.08 % of base) : 21651.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-356 (-9.97 % of base) : 43383.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-348 (-49.71 % of base) : 54998.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-336 (-13.75 % of base) : 21440.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Init(System.String,int,int,int,int,long,byref,byref):ubyte:this (Tier1)
-332 (-9.29 % of base) : 11426.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 19833.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 14663.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 22067.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 34226.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 37174.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 43318.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 4187.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 20691.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 39573.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
Top method regressions (percentages):
76 (27.54 % of base) : 2767.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
44 (23.40 % of base) : 52564.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 64340.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 68220.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 75532.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 76000.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 82632.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 87876.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 53644.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 62608.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 87188.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 87496.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 52132.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 52408.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 59736.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 60452.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 49584.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 51756.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 53404.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 63416.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
-524 (-59.82 % of base) : 21582.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-852 (-58.20 % of base) : 38668.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-828 (-57.50 % of base) : 10750.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-348 (-49.71 % of base) : 54998.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-496 (-45.09 % of base) : 37183.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-500 (-44.48 % of base) : 33077.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-96 (-43.64 % of base) : 12685.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-96 (-43.64 % of base) : 43336.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-96 (-43.64 % of base) : 78495.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-96 (-43.64 % of base) : 14685.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-96 (-43.64 % of base) : 19781.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-96 (-43.64 % of base) : 22085.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-96 (-43.64 % of base) : 12612.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-96 (-43.64 % of base) : 3969.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-96 (-43.64 % of base) : 5901.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-240 (-29.56 % of base) : 3101.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Instrumented Tier1)
-196 (-22.07 % of base) : 72344.dasm - Test.Cryptography.ByteUtils:HexToByteArray(System.String):ubyte[] (Tier1-OSR)
-188 (-20.89 % of base) : 73199.dasm - Test.Cryptography.ByteUtils:HexToByteArray(System.String):ubyte[] (Tier1-OSR)
-92 (-19.83 % of base) : 43331.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-92 (-19.83 % of base) : 39520.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 126685772 (overridden on cmd)
Total bytes of diff: 127119112 (overridden on cmd)
Total bytes of delta: 433340 (0.34 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
3008 : 175089.dasm (15.76 % of base)
2924 : 60736.dasm (3.33 % of base)
2892 : 259285.dasm (51.10 % of base)
2796 : 182576.dasm (36.07 % of base)
2676 : 60915.dasm (3.10 % of base)
2628 : 60574.dasm (3.05 % of base)
1744 : 32454.dasm (8.26 % of base)
1716 : 236383.dasm (73.84 % of base)
1536 : 198108.dasm (33.95 % of base)
1488 : 95850.dasm (46.04 % of base)
1468 : 63461.dasm (1.13 % of base)
1452 : 169616.dasm (59.41 % of base)
1388 : 54822.dasm (29.26 % of base)
1308 : 155429.dasm (42.63 % of base)
1284 : 188033.dasm (27.00 % of base)
1252 : 226769.dasm (45.83 % of base)
1232 : 187945.dasm (34.61 % of base)
1156 : 63836.dasm (0.89 % of base)
1112 : 145191.dasm (334.94 % of base)
1112 : 233986.dasm (334.94 % of base)
Top file improvements (bytes):
-1328 : 212336.dasm (-4.09 % of base)
-1316 : 3915.dasm (-16.21 % of base)
-1072 : 200362.dasm (-11.05 % of base)
-916 : 207031.dasm (-5.16 % of base)
-872 : 19212.dasm (-1.73 % of base)
-748 : 120536.dasm (-1.68 % of base)
-744 : 94796.dasm (-2.45 % of base)
-720 : 94623.dasm (-3.85 % of base)
-676 : 147776.dasm (-6.32 % of base)
-664 : 212499.dasm (-4.29 % of base)
-636 : 212282.dasm (-2.55 % of base)
-616 : 191733.dasm (-84.62 % of base)
-572 : 212445.dasm (-7.61 % of base)
-564 : 93874.dasm (-4.95 % of base)
-524 : 177028.dasm (-35.79 % of base)
-524 : 191736.dasm (-51.98 % of base)
-512 : 92840.dasm (-3.80 % of base)
-508 : 212391.dasm (-2.74 % of base)
-500 : 191675.dasm (-51.44 % of base)
-492 : 294241.dasm (-25.62 % of base)
78 total files with Code Size differences (41 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
3008 (15.76 % of base) : 175089.dasm - XmlCoreTest.Common.FilePathUtil+<GetDataFiles>d__19:MoveNext():ubyte:this (FullOpts)
2924 (3.33 % of base) : 60736.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<OrObject_TestData>d__90:MoveNext():ubyte:this (FullOpts)
2892 (51.10 % of base) : 259285.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
2796 (36.07 % of base) : 182576.dasm - System.Reflection.Metadata.Tests.BlobUtilitiesTests:GetUTF8ByteCount():this (FullOpts)
2676 (3.10 % of base) : 60915.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<XorObject_TestData>d__116:MoveNext():ubyte:this (FullOpts)
2628 (3.05 % of base) : 60574.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<AndObject_TestData>d__13:MoveNext():ubyte:this (FullOpts)
1744 (8.26 % of base) : 32454.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1716 (73.84 % of base) : 236383.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
1536 (33.95 % of base) : 198108.dasm - System.Runtime.Serialization.Xml.XsdDataContractExporterTests.SurrogateTests+<>c__DisplayClass3_0:<SurrogateProvider_MemberData>b__0(System.String,System.Xml.Schema.XmlSchemaSet):this (FullOpts)
1488 (46.04 % of base) : 95850.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
1468 (1.13 % of base) : 63461.dasm - System.CodeDom.Compiler.Tests.CodeValidatorTests+<ValidateIdentifiers_Invalid_TestData>d__2:MoveNext():ubyte:this (FullOpts)
1452 (59.41 % of base) : 169616.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1388 (29.26 % of base) : 54822.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1308 (42.63 % of base) : 155429.dasm - Kerberos.NET.Entities.KrbEncKdcRepPart:Encode(System.Security.Cryptography.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Asn1Tag):this (FullOpts)
1284 (27.00 % of base) : 188033.dasm - System.Tests.BitConverterTests:StartIndexBeyondLength() (FullOpts)
1252 (45.83 % of base) : 226769.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1232 (34.61 % of base) : 187945.dasm - System.Tests.BitConverterTests:ValueArgumentNull() (FullOpts)
1156 (0.89 % of base) : 63836.dasm - System.CodeDom.Compiler.Tests.CSharpCodeGeneratorTests+<GenerateCodeFromType_TestData>d__25:MoveNext():ubyte:this (FullOpts)
1112 (334.94 % of base) : 145191.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1112 (334.94 % of base) : 233986.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
Top method improvements (bytes):
-1328 (-4.09 % of base) : 212336.dasm - System.Tests.ArrayTests+<Sort_SZArray_TestData>d__159:MoveNext():ubyte:this (FullOpts)
-1316 (-16.21 % of base) : 3915.dasm - NuGet.Frameworks.FrameworkConstants+CommonFrameworks:.cctor() (FullOpts)
-1072 (-11.05 % of base) : 200362.dasm - System.Tests.EnumTests:ToString_TryFormat(ubyte,ubyte) (FullOpts)
-916 (-5.16 % of base) : 207031.dasm - System.Tests.DecimalTests+<Divide_Valid_TestData>d__35:MoveNext():ubyte:this (FullOpts)
-872 (-1.73 % of base) : 19212.dasm - LibraryImportGenerator.UnitTests.CompileFails+<CodeSnippetsToCompile>d__1:MoveNext():ubyte:this (FullOpts)
-748 (-1.68 % of base) : 120536.dasm - System.Globalization.Tests.CultureInfoConstructor+<Ctor_String_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-744 (-2.45 % of base) : 94796.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_True():this (FullOpts)
-720 (-3.85 % of base) : 94623.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_False():this (FullOpts)
-676 (-6.32 % of base) : 147776.dasm - System.Net.Http.Tests.HttpRuleParserTest:GetHostLength_SetOfValidHostStrings_MatchExpectation():this (FullOpts)
-664 (-4.29 % of base) : 212499.dasm - System.Tests.ArrayTests+<Copy_SZArray_Reliable_TestData>d__56:MoveNext():ubyte:this (FullOpts)
-636 (-2.55 % of base) : 212282.dasm - System.Tests.ArrayTests+<Sort_Array_Array_Generic_TestData>d__173:MoveNext():ubyte:this (FullOpts)
-616 (-84.62 % of base) : 191733.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
-572 (-7.61 % of base) : 212445.dasm - System.Tests.ArrayTests+<Sort_Array_Array_NonGeneric_TestData>d__172:MoveNext():ubyte:this (FullOpts)
-564 (-4.95 % of base) : 93874.dasm - System.Data.Tests.DataColumnCollectionTest:Add():this (FullOpts)
-524 (-51.98 % of base) : 191736.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
-524 (-35.79 % of base) : 177028.dasm - System.Xml.ReaderSettingsTests.TCMaxSettings:v3():int:this (FullOpts)
-512 (-3.80 % of base) : 92840.dasm - System.Data.Tests.DataTableTest4:XmlTest10():this (FullOpts)
-508 (-2.74 % of base) : 212391.dasm - System.Tests.ArrayTests+<Reverse_TestData>d__149:MoveNext():ubyte:this (FullOpts)
-500 (-51.44 % of base) : 191675.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
-492 (-25.62 % of base) : 294241.dasm - System.Threading.Channels.Tests.ChannelTests+<DefaultWriteAsync_UsesWaitToWriteAsyncAndTryWrite>d__7:MoveNext():this (FullOpts)
Top method regressions (percentages):
1112 (334.94 % of base) : 145191.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1112 (334.94 % of base) : 233986.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
436 (76.76 % of base) : 145677.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetLatinTextInput(int,int):Xunit.TheoryData (FullOpts)
1716 (73.84 % of base) : 236383.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
1452 (59.41 % of base) : 169616.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
896 (58.33 % of base) : 171229.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
68 (53.12 % of base) : 39344.dasm - Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider:DoesConsoleSupportAnsi():ubyte (FullOpts)
856 (53.10 % of base) : 14467.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.QueryExpressionFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
444 (52.11 % of base) : 231629.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
2892 (51.10 % of base) : 259285.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
420 (50.48 % of base) : 145708.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetUnicodeText(int):Xunit.TheoryData (FullOpts)
892 (49.01 % of base) : 170841.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
128 (48.48 % of base) : 60411.dasm - Microsoft.VisualBasic.CompilerServices.Operators:MultiplyUInt64(ulong,ulong):System.Object (FullOpts)
344 (46.49 % of base) : 56137.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
1488 (46.04 % of base) : 95850.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
1252 (45.83 % of base) : 226769.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
268 (43.23 % of base) : 150272.dasm - System.Net.NameResolution.Tests.GetHostAddressesTest:get_IPAndIncorrectFamily_Data():Xunit.TheoryData`3[ubyte,System.Net.IPAddress,int] (FullOpts)
1308 (42.63 % of base) : 155429.dasm - Kerberos.NET.Entities.KrbEncKdcRepPart:Encode(System.Security.Cryptography.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Asn1Tag):this (FullOpts)
180 (42.06 % of base) : 122839.dasm - System.IO.Tests.FileSystemTest:get_TrailingSeparators():Xunit.TheoryData`1[System.String] (FullOpts)
148 (41.57 % of base) : 21381.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
Top method improvements (percentages):
-616 (-84.62 % of base) : 191733.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
-80 (-83.33 % of base) : 88255.dasm - System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
-72 (-81.82 % of base) : 187457.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
-68 (-80.95 % of base) : 182579.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
-68 (-80.95 % of base) : 182580.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
-432 (-72.48 % of base) : 213139.dasm - System.Tests.SingleTests_GenericMath:IsPow2Test() (FullOpts)
-40 (-71.43 % of base) : 188339.dasm - System.Runtime.InteropServices.RuntimeInformationTests.CheckPlatformTests:CheckLinux():this (FullOpts)
-524 (-51.98 % of base) : 191736.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
-500 (-51.44 % of base) : 191675.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
-356 (-49.44 % of base) : 213986.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Equality():this (FullOpts)
-376 (-48.45 % of base) : 213983.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Inequality():this (FullOpts)
-296 (-44.05 % of base) : 126600.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-412 (-38.15 % of base) : 191683.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeTest() (FullOpts)
-412 (-37.32 % of base) : 191685.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsRealNumberTest() (FullOpts)
-384 (-36.36 % of base) : 191772.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsImaginaryNumberTest() (FullOpts)
-364 (-36.11 % of base) : 191760.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeInfinityTest() (FullOpts)
-364 (-36.11 % of base) : 191746.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsPositiveInfinityTest() (FullOpts)
-524 (-35.79 % of base) : 177028.dasm - System.Xml.ReaderSettingsTests.TCMaxSettings:v3():int:this (FullOpts)
-72 (-35.29 % of base) : 195001.dasm - DataContractJsonSerializerTests+<>c:<DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract>b__179_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
-72 (-35.29 % of base) : 194133.dasm - DataContractJsonSerializerTests+<>c:<DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract>b__181_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
realworld.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12403860 (overridden on cmd)
Total bytes of diff: 12496876 (overridden on cmd)
Total bytes of delta: 93016 (0.75 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1876 : 24083.dasm (57.55 % of base)
1388 : 24021.dasm (29.26 % of base)
1072 : 9046.dasm (20.66 % of base)
936 : 31219.dasm (4.39 % of base)
924 : 1628.dasm (21.33 % of base)
908 : 1590.dasm (31.75 % of base)
812 : 1926.dasm (5.45 % of base)
744 : 5077.dasm (10.81 % of base)
712 : 19618.dasm (10.56 % of base)
708 : 10710.dasm (7.13 % of base)
704 : 31336.dasm (31.83 % of base)
672 : 9784.dasm (2.66 % of base)
604 : 23813.dasm (20.83 % of base)
552 : 1818.dasm (7.68 % of base)
552 : 31279.dasm (27.94 % of base)
552 : 30901.dasm (25.32 % of base)
520 : 22514.dasm (24.53 % of base)
504 : 26032.dasm (26.25 % of base)
492 : 24080.dasm (14.73 % of base)
480 : 17056.dasm (18.02 % of base)
Top file improvements (bytes):
-520 : 1621.dasm (-4.34 % of base)
-496 : 7753.dasm (-4.99 % of base)
-428 : 1810.dasm (-3.81 % of base)
-268 : 23604.dasm (-12.16 % of base)
-236 : 12015.dasm (-15.25 % of base)
-208 : 19477.dasm (-9.85 % of base)
-196 : 2160.dasm (-6.47 % of base)
-156 : 1918.dasm (-2.01 % of base)
-148 : 12413.dasm (-6.12 % of base)
-144 : 8682.dasm (-1.22 % of base)
-144 : 27381.dasm (-1.13 % of base)
-140 : 24883.dasm (-7.74 % of base)
-136 : 24525.dasm (-12.14 % of base)
-136 : 890.dasm (-7.74 % of base)
-136 : 25801.dasm (-8.59 % of base)
-132 : 30975.dasm (-13.92 % of base)
-132 : 25519.dasm (-7.50 % of base)
-128 : 21843.dasm (-5.84 % of base)
-124 : 19607.dasm (-6.20 % of base)
-120 : 25781.dasm (-7.94 % of base)
78 total files with Code Size differences (40 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
1876 (57.55 % of base) : 24083.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
1388 (29.26 % of base) : 24021.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1072 (20.66 % of base) : 9046.dasm - FSharp.Compiler.CheckExpressions:TcConst(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Syntax.SynConst):FSharp.Compiler.TypedTree+Const (FullOpts)
936 (4.39 % of base) : 31219.dasm - Interop+Sys:GetDriveType(System.String):int (FullOpts)
924 (21.33 % of base) : 1628.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref):this (FullOpts)
908 (31.75 % of base) : 1590.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
812 (5.45 % of base) : 1926.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
744 (10.81 % of base) : 5077.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:rulesForBothSoftWhiteAndHardWhite(FSharp.Compiler.LexFilter+TokenTup):ubyte:this (FullOpts)
712 (10.56 % of base) : 19618.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
708 (7.13 % of base) : 10710.dasm - FSharp.Compiler.AugmentWithHashCompare:CheckAugmentationAttribs(ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.TypedTree+Entity) (FullOpts)
704 (31.83 % of base) : 31336.dasm - System.Management.Automation.Runspaces.HelpV3_Format_Ps1Xml+<ViewsOf_ExtendedCmdletHelpInfo_ExamplesView>d__4:MoveNext():ubyte:this (FullOpts)
672 (2.66 % of base) : 9784.dasm - FSharp.Compiler.ConstraintSolver+SolveMemberConstraint@1402-8:Invoke(Microsoft.FSharp.Core.Unit):FSharp.Compiler.ErrorLogger+OperationResult`1[FSharp.Compiler.ConstraintSolver+TraitConstraintSolution]:this (FullOpts)
604 (20.83 % of base) : 23813.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeIsPatternExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundPattern,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
552 (7.68 % of base) : 1818.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CylinderPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
552 (25.32 % of base) : 30901.dasm - System.Management.Automation.LogProvider:LogContextToString(System.Management.Automation.LogContext):System.String (FullOpts)
552 (27.94 % of base) : 31279.dasm - System.Management.Automation.Runspaces.Help_Format_Ps1Xml+<ViewsOf_MamlCommandHelpInfo_Example>d__13:MoveNext():ubyte:this (FullOpts)
520 (24.53 % of base) : 22514.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
504 (26.25 % of base) : 26032.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBinaryPattern(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryPatternSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (FullOpts)
492 (14.73 % of base) : 24080.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNode|449_5(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte,byref):this (FullOpts)
480 (18.02 % of base) : 17056.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexXmlDocCommentLeadingTrivia(byref):this (FullOpts)
Top method improvements (bytes):
-520 (-4.34 % of base) : 1621.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-496 (-4.99 % of base) : 7753.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)
-428 (-3.81 % of base) : 1810.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-268 (-12.16 % of base) : 23604.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-236 (-15.25 % of base) : 12015.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-208 (-9.85 % of base) : 19477.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckReceiverAndRuntimeSupportForSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-196 (-6.47 % of base) : 2160.dasm - BepuPhysics.CollisionDetection.CollisionTasks.MeshPairOverlapFinder`2[BepuPhysics.Collidables.Mesh,BepuPhysics.Collidables.Mesh]:FindLocalOverlaps(byref,int,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,float,byref):this (FullOpts)
-156 (-2.01 % of base) : 1918.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-148 (-6.12 % of base) : 12413.dasm - System.RuntimeType:IsEnumDefined(System.Object):ubyte:this (FullOpts)
-144 (-1.22 % of base) : 8682.dasm - FSharp.Compiler.CheckExpressions:TcExprUndelayed(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynExpr):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-144 (-1.13 % of base) : 27381.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
-140 (-7.74 % of base) : 24883.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSuppressNullableWarningExpression(Microsoft.CodeAnalysis.CSharp.Syntax.PostfixUnaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-136 (-12.14 % of base) : 24525.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)
-136 (-8.59 % of base) : 25801.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetGetResultMethod(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):ubyte:this (FullOpts)
-136 (-7.74 % of base) : 890.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-132 (-7.50 % of base) : 25519.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindPointerElementAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-132 (-13.92 % of base) : 30975.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-128 (-5.84 % of base) : 21843.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-124 (-6.20 % of base) : 19607.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
-120 (-7.94 % of base) : 25781.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetGetAwaiterMethod(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):ubyte:this (FullOpts)
Top method regressions (percentages):
1876 (57.55 % of base) : 24083.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
320 (43.96 % of base) : 27455.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
216 (34.62 % of base) : 756.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
328 (33.33 % of base) : 22667.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
160 (33.33 % of base) : 915.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
704 (31.83 % of base) : 31336.dasm - System.Management.Automation.Runspaces.HelpV3_Format_Ps1Xml+<ViewsOf_ExtendedCmdletHelpInfo_ExamplesView>d__4:MoveNext():ubyte:this (FullOpts)
908 (31.75 % of base) : 1590.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
300 (29.41 % of base) : 29120.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
1388 (29.26 % of base) : 24021.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
552 (27.94 % of base) : 31279.dasm - System.Management.Automation.Runspaces.Help_Format_Ps1Xml+<ViewsOf_MamlCommandHelpInfo_Example>d__13:MoveNext():ubyte:this (FullOpts)
504 (26.25 % of base) : 26032.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBinaryPattern(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryPatternSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (FullOpts)
552 (25.32 % of base) : 30901.dasm - System.Management.Automation.LogProvider:LogContextToString(System.Management.Automation.LogContext):System.String (FullOpts)
520 (24.53 % of base) : 22514.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
124 (24.41 % of base) : 25475.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)
180 (22.28 % of base) : 23393.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
156 (22.03 % of base) : 28707.dasm - Microsoft.CodeAnalysis.CodeGen.ArrayMethods+ArraySet:MakeParameters():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ArrayMethodParameterInfo]:this (FullOpts)
188 (21.76 % of base) : 27360.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
924 (21.33 % of base) : 1628.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref):this (FullOpts)
196 (21.30 % of base) : 13297.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn:MakeSchemaColumn():Microsoft.ML.DataViewSchema+DetachedColumn:this (FullOpts)
436 (21.21 % of base) : 22553.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:HasInstanceData(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):ubyte (FullOpts)
Top method improvements (percentages):
-92 (-16.91 % of base) : 18243.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
-8 (-16.67 % of base) : 31615.dasm - System.Management.Automation.LocationGlobber:IsSingleFileSystemAbsolutePath(System.String):ubyte (FullOpts)
-88 (-15.94 % of base) : 30713.dasm - System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
-72 (-15.52 % of base) : 17440.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseTypeCore>g__canBeNullableType|202_0(byref):ubyte:this (FullOpts)
-236 (-15.25 % of base) : 12015.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-32 (-14.04 % of base) : 23593.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-132 (-13.92 % of base) : 30975.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-8 (-12.50 % of base) : 19703.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
-12 (-12.50 % of base) : 16677.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
-268 (-12.16 % of base) : 23604.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-104 (-12.15 % of base) : 13702.dasm - Microsoft.ML.Numeric.VectorUtils:DotProduct(byref,byref):float (FullOpts)
-136 (-12.14 % of base) : 24525.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)
-12 (-10.71 % of base) : 7525.dasm - FSharp.Compiler.TypedTree:loop@4500-39(Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+ArgReprInfo]],int):int (FullOpts)
-36 (-10.71 % of base) : 14670.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Options:set_StopWordsRemoverOptions(Microsoft.ML.Transforms.Text.IStopWordsRemoverOptions):this (FullOpts)
-108 (-10.23 % of base) : 14927.dasm - System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this (FullOpts)
-208 (-9.85 % of base) : 19477.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckReceiverAndRuntimeSupportForSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-48 (-9.76 % of base) : 14719.dasm - System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte (FullOpts)
-56 (-9.52 % of base) : 30155.dasm - System.Management.Automation.Remoting.RemoteSessionNamedPipeServer:CreateIPCNamedPipeServerSingleton() (FullOpts)
-8 (-9.09 % of base) : 19859.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:HasErrors[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (FullOpts)
-32 (-9.09 % of base) : 31051.dasm - System.Management.Automation.LanguagePrimitives:TypeConverterPossiblyExists(System.Type):ubyte (FullOpts)
smoke_tests.nativeaot.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2535652 (overridden on cmd)
Total bytes of diff: 2550920 (overridden on cmd)
Total bytes of delta: 15268 (0.60 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
540 : 4465.dasm (126.17 % of base)
412 : 3354.dasm (18.76 % of base)
280 : 6454.dasm (21.28 % of base)
280 : 18141.dasm (21.08 % of base)
244 : 13401.dasm (20.00 % of base)
236 : 8281.dasm (5.18 % of base)
232 : 13407.dasm (20.07 % of base)
232 : 13403.dasm (22.05 % of base)
220 : 9938.dasm (10.60 % of base)
156 : 10367.dasm (9.87 % of base)
144 : 12427.dasm (4.29 % of base)
144 : 15586.dasm (5.25 % of base)
144 : 12430.dasm (7.05 % of base)
124 : 11701.dasm (7.00 % of base)
120 : 12431.dasm (8.00 % of base)
120 : 17547.dasm (4.30 % of base)
120 : 2262.dasm (5.80 % of base)
116 : 14755.dasm (6.61 % of base)
116 : 779.dasm (6.87 % of base)
116 : 8114.dasm (3.54 % of base)
Top file improvements (bytes):
-156 : 13469.dasm (-19.60 % of base)
-92 : 14084.dasm (-16.43 % of base)
-92 : 15616.dasm (-11.00 % of base)
-88 : 15226.dasm (-17.60 % of base)
-80 : 14686.dasm (-5.88 % of base)
-80 : 3750.dasm (-7.87 % of base)
-80 : 3735.dasm (-10.05 % of base)
-72 : 12734.dasm (-2.06 % of base)
-72 : 18612.dasm (-2.06 % of base)
-64 : 3698.dasm (-8.42 % of base)
-60 : 3398.dasm (-44.12 % of base)
-52 : 14628.dasm (-4.89 % of base)
-48 : 15196.dasm (-8.33 % of base)
-48 : 15194.dasm (-8.33 % of base)
-48 : 5975.dasm (-6.15 % of base)
-36 : 11088.dasm (-6.98 % of base)
-36 : 19052.dasm (-5.92 % of base)
-36 : 4845.dasm (-5.88 % of base)
-36 : 11178.dasm (-7.38 % of base)
-36 : 17694.dasm (-6.92 % of base)
66 total files with Code Size differences (31 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
540 (126.17 % of base) : 4465.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
412 (18.76 % of base) : 3354.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
280 (21.28 % of base) : 6454.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
280 (21.08 % of base) : 18141.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
244 (20.00 % of base) : 13401.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
236 (5.18 % of base) : 8281.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
232 (20.07 % of base) : 13407.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[int](System.Linq.Expressions.SwitchExpression):this (FullOpts)
232 (22.05 % of base) : 13403.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.__Canon](System.Linq.Expressions.SwitchExpression):this (FullOpts)
220 (10.60 % of base) : 9938.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
156 (9.87 % of base) : 10367.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:Wait(int,ubyte,ubyte,byref):int:this (FullOpts)
144 (5.25 % of base) : 15586.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
144 (7.05 % of base) : 12430.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
144 (4.29 % of base) : 12427.dasm - WaitSubsystemTests:MutexTest() (FullOpts)
124 (7.00 % of base) : 11701.dasm - System.Globalization.TimeSpanFormat+FormatLiterals:Init(System.ReadOnlySpan`1[ushort],ubyte):this (FullOpts)
120 (5.80 % of base) : 2262.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:TryParseConstantArray(Internal.Metadata.NativeFormat.Handle,Internal.Metadata.NativeFormat.MetadataReader,byref):System.Array (FullOpts)
120 (4.30 % of base) : 17547.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
120 (8.00 % of base) : 12431.dasm - WaitSubsystemTests:ManualResetEventTest() (FullOpts)
116 (3.54 % of base) : 8114.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
116 (6.87 % of base) : 779.dasm - System.Reflection.CustomAttributeData:ToString():System.String:this (FullOpts)
116 (6.61 % of base) : 14755.dasm - System.Threading.AsyncLocalValueMap+MultiElementAsyncLocalValueMap:Set(System.Threading.IAsyncLocal,System.Object,ubyte):System.Threading.IAsyncLocalValueMap:this (FullOpts)
Top method improvements (bytes):
-156 (-19.60 % of base) : 13469.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-92 (-11.00 % of base) : 15616.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[long,System.Net.Sockets.SocketAsyncEngine+SocketAsyncContextWrapper]:TryRemoveInternal(long,byref,ubyte,System.Net.Sockets.SocketAsyncEngine+SocketAsyncContextWrapper):ubyte:this (FullOpts)
-92 (-16.43 % of base) : 14084.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-88 (-17.60 % of base) : 15226.dasm - System.IO.FileStream:Seek(long,int):long:this (FullOpts)
-80 (-7.87 % of base) : 3750.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (FullOpts)
-80 (-10.05 % of base) : 3735.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
-80 (-5.88 % of base) : 14686.dasm - System.Threading.AsyncLocalValueMap+FourElementAsyncLocalValueMap:Set(System.Threading.IAsyncLocal,System.Object,ubyte):System.Threading.IAsyncLocalValueMap:this (FullOpts)
-72 (-2.06 % of base) : 12734.dasm - Generics+TestFieldAccess:TestStaticFields() (FullOpts)
-72 (-2.06 % of base) : 18612.dasm - Generics+TestFieldAccess:TestStaticFields() (FullOpts)
-64 (-8.42 % of base) : 3698.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
-60 (-44.12 % of base) : 3398.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-52 (-4.89 % of base) : 14628.dasm - System.Reflection.TypeNameParser:GetType(System.String,System.ReadOnlySpan`1[System.String],System.String):System.Type:this (FullOpts)
-48 (-6.15 % of base) : 5975.dasm - System.Globalization.InvariantModeCasing:ToLower(System.String):System.String (FullOpts)
-48 (-8.33 % of base) : 15196.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Read(ubyte[],int,int):int:this (FullOpts)
-48 (-8.33 % of base) : 15194.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Write(ubyte[],int,int):this (FullOpts)
-36 (-5.88 % of base) : 4845.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-36 (-6.98 % of base) : 11088.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:EnsureClassConstructorRun(ulong) (FullOpts)
-36 (-6.92 % of base) : 17694.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:EnsureClassConstructorRun(ulong) (FullOpts)
-36 (-7.38 % of base) : 11178.dasm - System.Runtime.EH:FindFirstPassHandler(System.Object,uint,byref,byref,byref):ubyte (FullOpts)
-36 (-5.92 % of base) : 19052.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)
Top method regressions (percentages):
540 (126.17 % of base) : 4465.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
16 (50.00 % of base) : 6896.dasm - System.Runtime.Intrinsics.Vector64:EqualsAny[long](System.Runtime.Intrinsics.Vector64`1[long],System.Runtime.Intrinsics.Vector64`1[long]):ubyte (FullOpts)
16 (50.00 % of base) : 10771.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
16 (50.00 % of base) : 10854.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
12 (30.00 % of base) : 10761.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:<Equals>g__SoftwareFallback|34_0(byref,System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
232 (22.05 % of base) : 13403.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.__Canon](System.Linq.Expressions.SwitchExpression):this (FullOpts)
96 (21.62 % of base) : 17685.dasm - Internal.Runtime.TypeLoaderExceptionHelper:GetFormatString(int):System.String (FullOpts)
280 (21.28 % of base) : 6454.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
280 (21.08 % of base) : 18141.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
232 (20.07 % of base) : 13407.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[int](System.Linq.Expressions.SwitchExpression):this (FullOpts)
16 (20.00 % of base) : 1413.dasm - Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
244 (20.00 % of base) : 13401.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
412 (18.76 % of base) : 3354.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
68 (18.28 % of base) : 15037.dasm - System.Net.Sockets.SocketAsyncEngine:EventLoop():this (FullOpts)
8 (18.18 % of base) : 5662.dasm - System.Runtime.Intrinsics.Vector64:LessThanOrEqual[ulong](System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):System.Runtime.Intrinsics.Vector64`1[ulong] (FullOpts)
28 (17.07 % of base) : 3846.dasm - System.Version:CompareTo(System.Version):int:this (FullOpts)
8 (15.38 % of base) : 11323.dasm - System.Span`1[long]:op_Implicit(long[]):System.Span`1[long] (FullOpts)
72 (15.25 % of base) : 8280.dasm - System.Globalization.CultureData:StripSecondsFromPattern(System.String):System.String (FullOpts)
24 (15.00 % of base) : 15235.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Net.Sockets.SocketAsyncEngine+SocketIOEvent]:TryEnqueue(System.Net.Sockets.SocketAsyncEngine+SocketIOEvent):ubyte:this (FullOpts)
24 (15.00 % of base) : 203.dasm - System.Globalization.TimeSpanParse:ParseExactDigits(byref,int,int,byref,byref):ubyte (FullOpts)
Top method improvements (percentages):
-60 (-44.12 % of base) : 3398.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-156 (-19.60 % of base) : 13469.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-8 (-18.18 % of base) : 7416.dasm - System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
-88 (-17.60 % of base) : 15226.dasm - System.IO.FileStream:Seek(long,int):long:this (FullOpts)
-92 (-16.43 % of base) : 14084.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-32 (-14.55 % of base) : 4677.dasm - System.StringComparer:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-12 (-14.29 % of base) : 16789.dasm - System.Threading.Tasks.Task:MarkExceptionsAsHandled():this (FullOpts)
-12 (-12.00 % of base) : 7406.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:LookupHashCode():int:this (FullOpts)
-92 (-11.00 % of base) : 15616.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[long,System.Net.Sockets.SocketAsyncEngine+SocketAsyncContextWrapper]:TryRemoveInternal(long,byref,ubyte,System.Net.Sockets.SocketAsyncEngine+SocketAsyncContextWrapper):ubyte:this (FullOpts)
-80 (-10.05 % of base) : 3735.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
-8 (-10.00 % of base) : 3072.dasm - System.Reflection.Runtime.FieldInfos.RuntimeFieldInfo:get_FieldType():System.Type:this (FullOpts)
-12 (-9.09 % of base) : 6006.dasm - System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-4 (-9.09 % of base) : 2894.dasm - System.TimeZoneInfo:GetLocalTimeZone(System.TimeZoneInfo+CachedData):System.TimeZoneInfo (FullOpts)
-24 (-8.96 % of base) : 2466.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions+<AsEnumerable>d__24:MoveNext():ubyte:this (FullOpts)
-64 (-8.42 % of base) : 3698.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
-4 (-8.33 % of base) : 11291.dasm - System.Diagnostics.Debug:Assert(ubyte) (FullOpts)
-48 (-8.33 % of base) : 15196.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Read(ubyte[],int,int):int:this (FullOpts)
-48 (-8.33 % of base) : 15194.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Write(ubyte[],int,int):this (FullOpts)
-4 (-8.33 % of base) : 9792.dasm - System.Threading.LowLevelLock:VerifyIsNotLockedByAnyThread():this (FullOpts)
-4 (-8.33 % of base) : 9814.dasm - System.Threading.LowLevelMonitor:VerifyIsNotLockedByAnyThread():this (FullOpts)
linux x64
Diffs are based on 1,546,466 contexts (360,162 MinOpts, 1,186,304 FullOpts).
MISSED contexts: base: 265 (0.02%), diff: 77,380 (4.77%)
Overall (+2,454,719 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
10,099,690 |
+115,641 |
benchmarks.run_pgo.linux.x64.checked.mch |
55,943,861 |
+9,830 |
benchmarks.run_tiered.linux.x64.checked.mch |
18,062,441 |
+42,452 |
coreclr_tests.run.linux.x64.checked.mch |
242,934,718 |
+252,275 |
libraries.crossgen2.linux.x64.checked.mch |
37,887,110 |
+288,753 |
libraries.pmi.linux.x64.checked.mch |
48,565,136 |
+576,517 |
libraries_tests.run.linux.x64.Release.mch |
30,459,618 |
+234,014 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
102,474,514 |
+695,729 |
realworld.run.linux.x64.checked.mch |
10,222,975 |
+188,047 |
smoke_tests.nativeaot.linux.x64.checked.mch |
3,611,585 |
+51,461 |
MinOpts (-11 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.linux.x64.checked.mch |
17,746,512 |
-2 |
benchmarks.run_tiered.linux.x64.checked.mch |
15,055,746 |
-2 |
coreclr_tests.run.linux.x64.checked.mch |
140,366,881 |
+0 |
libraries.crossgen2.linux.x64.checked.mch |
1,198 |
+0 |
libraries.pmi.linux.x64.checked.mch |
112,857 |
+0 |
libraries_tests.run.linux.x64.Release.mch |
15,927,817 |
-7 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
10,583,855 |
+0 |
FullOpts (+2,454,730 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
9,929,988 |
+115,641 |
benchmarks.run_pgo.linux.x64.checked.mch |
38,197,349 |
+9,832 |
benchmarks.run_tiered.linux.x64.checked.mch |
3,006,695 |
+42,454 |
coreclr_tests.run.linux.x64.checked.mch |
102,567,837 |
+252,275 |
libraries.crossgen2.linux.x64.checked.mch |
37,885,912 |
+288,753 |
libraries.pmi.linux.x64.checked.mch |
48,452,279 |
+576,517 |
libraries_tests.run.linux.x64.Release.mch |
14,531,801 |
+234,021 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
91,890,659 |
+695,729 |
realworld.run.linux.x64.checked.mch |
9,834,439 |
+188,047 |
smoke_tests.nativeaot.linux.x64.checked.mch |
3,610,636 |
+51,461 |
Example diffs
benchmarks.run.linux.x64.checked.mch
-33 (-27.97%) : 3359.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:ClearRevocationUnknown():this (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 48 single block inlinees; 9 inlinees without PGO data
+; 0 inlinees with PGO data; 50 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 6 ) byref -> rbx this single-def
+; V00 this [V00,T01] ( 5, 5 ) byref -> rdi this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Interop+Crypto+X509VerifyStatusCode>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Interop+Crypto+X509VerifyStatusCode>
@@ -21,176 +23,166 @@
;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Interop+Crypto+X509VerifyStatusCode>
;* V11 tmp10 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Interop+Crypto+X509VerifyStatusCode>
;* V12 tmp11 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V13 tmp12 [V13,T14] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V13 tmp12 [V13,T13] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V15 tmp14 [V15,T02] ( 3, 6 ) byref -> rdi single-def "dup spill"
+; V15 tmp14 [V15,T02] ( 3, 6 ) byref -> rcx single-def "dup spill"
;* V16 tmp15 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V19 tmp18 [V19,T15] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V19 tmp18 [V19,T14] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V20 tmp19 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V21 tmp20 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V22 tmp21 [V22,T16] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V22 tmp21 [V22,T15] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V23 tmp22 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V24 tmp23 [V24,T03] ( 3, 6 ) byref -> rdi single-def "dup spill"
+; V24 tmp23 [V24,T03] ( 3, 6 ) byref -> rcx single-def "dup spill"
;* V25 tmp24 [V25 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V27 tmp26 [V27 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V28 tmp27 [V28,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V28 tmp27 [V28,T16] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V29 tmp28 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp29 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V31 tmp30 [V31,T18] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V31 tmp30 [V31,T17] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V32 tmp31 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V33 tmp32 [V33,T04] ( 3, 6 ) byref -> rdi single-def "dup spill"
+; V33 tmp32 [V33,T04] ( 3, 6 ) byref -> rcx single-def "dup spill"
;* V34 tmp33 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V35 tmp34 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V36 tmp35 [V36 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V37 tmp36 [V37,T19] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V37 tmp36 [V37,T18] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V38 tmp37 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V39 tmp38 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V40 tmp39 [V40,T20] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V40 tmp39 [V40,T19] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V41 tmp40 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V42 tmp41 [V42,T05] ( 3, 6 ) byref -> rdi single-def "dup spill"
+; V42 tmp41 [V42,T05] ( 3, 6 ) byref -> rcx single-def "dup spill"
;* V43 tmp42 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V44 tmp43 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V45 tmp44 [V45 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V46 tmp45 [V46,T21] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V46 tmp45 [V46,T20] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V47 tmp46 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V48 tmp47 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V49 tmp48 [V49,T22] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V49 tmp48 [V49,T21] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V50 tmp49 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V51 tmp50 [V51,T06] ( 3, 6 ) byref -> rdi single-def "dup spill"
+; V51 tmp50 [V51,T06] ( 3, 6 ) byref -> rcx single-def "dup spill"
;* V52 tmp51 [V52 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V53 tmp52 [V53 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V54 tmp53 [V54 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V55 tmp54 [V55,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V55 tmp54 [V55,T22] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V56 tmp55 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V58 tmp57 [V58,T24] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V58 tmp57 [V58,T23] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V59 tmp58 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V60 tmp59 [V60,T07] ( 3, 6 ) byref -> rax single-def "dup spill"
+; V60 tmp59 [V60,T07] ( 3, 6 ) byref -> rcx single-def "dup spill"
;* V61 tmp60 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V62 tmp61 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V63 tmp62 [V63 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V64 tmp63 [V64,T25] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V64 tmp63 [V64,T24] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V65 tmp64 [V65 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V66 tmp65 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V67 tmp66 [V67,T26] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V67 tmp66 [V67,T25] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V68 tmp67 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V69 tmp68 [V69,T08] ( 3, 6 ) byref -> rax single-def "dup spill"
+; V69 tmp68 [V69,T08] ( 3, 6 ) byref -> rcx single-def "dup spill"
;* V70 tmp69 [V70 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V71 tmp70 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V72 tmp71 [V72 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V73 tmp72 [V73,T27] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V73 tmp72 [V73,T26] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V74 tmp73 [V74 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V75 tmp74 [V75 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V76 tmp75 [V76,T28] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V76 tmp75 [V76,T27] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V77 tmp76 [V77 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V78 tmp77 [V78,T09] ( 3, 6 ) byref -> rsi single-def "dup spill"
+; V78 tmp77 [V78,T09] ( 3, 6 ) byref -> rax single-def "dup spill"
;* V79 tmp78 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V80 tmp79 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V81 tmp80 [V81 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V82 tmp81 [V82,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V82 tmp81 [V82,T28] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V83 tmp82 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V84 tmp83 [V84 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-;* V85 tmp84 [V85,T30] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V85 tmp84 [V85,T29] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
;* V86 tmp85 [V86 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V87 tmp86 [V87,T10] ( 3, 6 ) byref -> rdi single-def "dup spill"
+; V87 tmp86 [V87,T10] ( 3, 6 ) byref -> rax single-def "dup spill"
;* V88 tmp87 [V88 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
;* V89 tmp88 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V90 tmp89 [V90 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
-;* V91 tmp90 [V91,T31] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V91 tmp90 [V91,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V92 tmp91 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V93 tmp92 [V93 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+Crypto+X509VerifyStatusCode>
-; V94 tmp93 [V94 ] ( 2, 2 ) int -> [rbp-0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V95 tmp94 [V95,T13] ( 2, 2 ) int -> rax "Inline stloc first use temp"
-; V96 tmp95 [V96,T11] ( 3, 6 ) byref -> rax single-def "dup spill"
-;* V97 tmp96 [V97 ] ( 0, 0 ) int -> zero-ref "field V02.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V98 tmp97 [V98 ] ( 0, 0 ) int -> zero-ref "field V03.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V99 tmp98 [V99 ] ( 0, 0 ) int -> zero-ref "field V04.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V100 tmp99 [V100 ] ( 0, 0 ) int -> zero-ref "field V05.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V101 tmp100 [V101 ] ( 0, 0 ) int -> zero-ref "field V06.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V102 tmp101 [V102 ] ( 0, 0 ) int -> zero-ref "field V07.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V103 tmp102 [V103 ] ( 0, 0 ) int -> zero-ref "field V08.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V104 tmp103 [V104 ] ( 0, 0 ) int -> zero-ref "field V09.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V105 tmp104 [V105 ] ( 0, 0 ) int -> zero-ref "field V10.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V106 tmp105 [V106 ] ( 0, 0 ) int -> zero-ref "field V11.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V107 tmp106 [V107 ] ( 0, 0 ) int -> zero-ref "field V12.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V108 tmp107 [V108 ] ( 0, 0 ) int -> zero-ref "field V16.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V109 tmp108 [V109 ] ( 0, 0 ) int -> zero-ref "field V21.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V110 tmp109 [V110 ] ( 0, 0 ) int -> zero-ref "field V25.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V111 tmp110 [V111 ] ( 0, 0 ) int -> zero-ref "field V30.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V112 tmp111 [V112 ] ( 0, 0 ) int -> zero-ref "field V34.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V113 tmp112 [V113 ] ( 0, 0 ) int -> zero-ref "field V39.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V114 tmp113 [V114 ] ( 0, 0 ) int -> zero-ref "field V43.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V115 tmp114 [V115 ] ( 0, 0 ) int -> zero-ref "field V48.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V116 tmp115 [V116 ] ( 0, 0 ) int -> zero-ref "field V52.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V117 tmp116 [V117 ] ( 0, 0 ) int -> zero-ref "field V57.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V118 tmp117 [V118 ] ( 0, 0 ) int -> zero-ref "field V61.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V119 tmp118 [V119 ] ( 0, 0 ) int -> zero-ref "field V66.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V120 tmp119 [V120 ] ( 0, 0 ) int -> zero-ref "field V70.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V121 tmp120 [V121 ] ( 0, 0 ) int -> zero-ref "field V75.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V122 tmp121 [V122 ] ( 0, 0 ) int -> zero-ref "field V79.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V123 tmp122 [V123 ] ( 0, 0 ) int -> zero-ref "field V84.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V124 tmp123 [V124 ] ( 0, 0 ) int -> zero-ref "field V88.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V125 tmp124 [V125,T32] ( 0, 0 ) int -> zero-ref "field V93.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
-; V126 cse0 [V126,T00] ( 8, 8 ) byref -> rsi "CSE - aggressive"
-; V127 cse1 [V127,T12] ( 3, 3 ) byref -> rdi "CSE - moderate"
+;* V94 tmp93 [V94,T31] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V95 tmp94 [V95 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V96 tmp95 [V96,T11] ( 3, 6 ) byref -> rdi single-def "dup spill"
+;* V97 tmp96 [V97 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <Interop+Crypto+X509VerifyStatusCode>
+;* V98 tmp97 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V99 tmp98 [V99 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
+;* V100 tmp99 [V100,T32] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V101 tmp100 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V102 tmp101 [V102 ] ( 0, 0 ) int -> zero-ref "field V02.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V103 tmp102 [V103 ] ( 0, 0 ) int -> zero-ref "field V03.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V104 tmp103 [V104 ] ( 0, 0 ) int -> zero-ref "field V04.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V105 tmp104 [V105 ] ( 0, 0 ) int -> zero-ref "field V05.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V106 tmp105 [V106 ] ( 0, 0 ) int -> zero-ref "field V06.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V107 tmp106 [V107 ] ( 0, 0 ) int -> zero-ref "field V07.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V108 tmp107 [V108 ] ( 0, 0 ) int -> zero-ref "field V08.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V109 tmp108 [V109 ] ( 0, 0 ) int -> zero-ref "field V09.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V110 tmp109 [V110 ] ( 0, 0 ) int -> zero-ref "field V10.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V111 tmp110 [V111 ] ( 0, 0 ) int -> zero-ref "field V11.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V112 tmp111 [V112 ] ( 0, 0 ) int -> zero-ref "field V12.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V113 tmp112 [V113 ] ( 0, 0 ) int -> zero-ref "field V16.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V114 tmp113 [V114 ] ( 0, 0 ) int -> zero-ref "field V21.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V115 tmp114 [V115 ] ( 0, 0 ) int -> zero-ref "field V25.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V116 tmp115 [V116 ] ( 0, 0 ) int -> zero-ref "field V30.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V117 tmp116 [V117 ] ( 0, 0 ) int -> zero-ref "field V34.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V118 tmp117 [V118 ] ( 0, 0 ) int -> zero-ref "field V39.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V119 tmp118 [V119 ] ( 0, 0 ) int -> zero-ref "field V43.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V120 tmp119 [V120 ] ( 0, 0 ) int -> zero-ref "field V48.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V121 tmp120 [V121 ] ( 0, 0 ) int -> zero-ref "field V52.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V122 tmp121 [V122 ] ( 0, 0 ) int -> zero-ref "field V57.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V123 tmp122 [V123 ] ( 0, 0 ) int -> zero-ref "field V61.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V124 tmp123 [V124 ] ( 0, 0 ) int -> zero-ref "field V66.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V125 tmp124 [V125 ] ( 0, 0 ) int -> zero-ref "field V70.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V126 tmp125 [V126 ] ( 0, 0 ) int -> zero-ref "field V75.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V127 tmp126 [V127 ] ( 0, 0 ) int -> zero-ref "field V79.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V128 tmp127 [V128 ] ( 0, 0 ) int -> zero-ref "field V84.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V129 tmp128 [V129 ] ( 0, 0 ) int -> zero-ref "field V88.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V130 tmp129 [V130 ] ( 0, 0 ) int -> zero-ref "field V93.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V131 tmp130 [V131 ] ( 0, 0 ) int -> zero-ref "field V97.<Code>k__BackingField (fldOffset=0x0)" P-INDEP
+; V132 cse0 [V132,T00] ( 8, 8 ) byref -> rax "CSE - aggressive"
+; V133 cse1 [V133,T12] ( 4, 4 ) byref -> rdi "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46425_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov rbx, rdi
- ; byrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M46425_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- cmp byte ptr [rbx], bl
- mov rsi, rbx
- ; byrRegs +[rsi]
- mov rdi, rsi
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M46425_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; byrRegs +[rdi]
- and dword ptr [rdi], -0x1001
- mov rdi, rsi
- and dword ptr [rdi], -0x801
- mov rdi, rsi
- and dword ptr [rdi], -257
- mov rdi, rsi
- and dword ptr [rdi], -0x8001
- mov rdi, rsi
- and dword ptr [rdi], -0x10001
- lea rdi, bword ptr [rbx+0x04]
+ cmp byte ptr [rdi], dil
mov rax, rdi
; byrRegs +[rax]
+ mov rcx, rax
+ ; byrRegs +[rcx]
+ and dword ptr [rcx], -0x1001
+ mov rcx, rax
+ and dword ptr [rcx], -0x801
+ mov rcx, rax
+ and dword ptr [rcx], -257
+ mov rcx, rax
+ and dword ptr [rcx], -0x8001
+ mov rcx, rax
+ and dword ptr [rcx], -0x10001
+ add rdi, 4
...
-31 (-26.05%) : 13489.dasm - System.Xml.XmlTextReaderImpl+NodeData:CopyTo(int,System.Text.StringBuilder):this (FullOpts)
@@ -2,60 +2,43 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; partially 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,T01] ( 6, 4.50) ref -> rdi this class-hnd single-def <System.Xml.XmlTextReaderImpl+NodeData>
-; V01 arg1 [V01,T00] ( 7, 4.50) int -> [rbp-0x04] single-def
-; V02 arg2 [V02,T02] ( 6, 4 ) ref -> rax class-hnd single-def <System.Text.StringBuilder>
+; V00 this [V00,T03] ( 6, 3.60) ref -> rdi this class-hnd single-def <System.Xml.XmlTextReaderImpl+NodeData>
+; V01 arg1 [V01,T02] ( 7, 3.97) int -> rdx single-def
+; V02 arg2 [V02,T00] ( 6, 4.58) ref -> rax class-hnd single-def <System.Text.StringBuilder>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 3 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
-; V05 cse0 [V05,T03] ( 5, 3.50) ref -> r8 "CSE - aggressive"
+; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
+; V05 cse0 [V05,T04] ( 5, 3.77) ref -> rsi "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M65326_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
+ mov rbp, rsp
mov rax, rdx
; gcrRegs +[rax]
- ;; size=13 bbWeight=1 PerfScore 2.00
+ mov edx, esi
+ ;; size=9 bbWeight=1 PerfScore 1.75
G_M65326_IG02: ; bbWeight=1, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- mov r8, gword ptr [rdi+0x28]
- ; gcrRegs +[r8]
- test r8, r8
- jne SHORT G_M65326_IG05
+ mov rsi, gword ptr [rdi+0x28]
+ ; gcrRegs +[rsi]
+ test rsi, rsi
+ je SHORT G_M65326_IG08
;; size=9 bbWeight=1 PerfScore 3.25
-G_M65326_IG03: ; bbWeight=0.50, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
- mov ecx, dword ptr [rdi+0x58]
- sub ecx, esi
- mov edx, esi
- add edx, dword ptr [rdi+0x54]
- mov rsi, gword ptr [rdi+0x30]
- ; gcrRegs +[rsi]
- mov rdi, rax
- cmp dword ptr [rdi], edi
- call [System.Text.StringBuilder:Append(ushort[],int,int):System.Text.StringBuilder:this]
- ; gcrRegs -[rsi rdi]
- nop
- ;; size=26 bbWeight=0.50 PerfScore 7.00
-G_M65326_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
- pop rbp
- ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M65326_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[r8]
- test esi, esi
- jg SHORT G_M65326_IG07
- mov rsi, r8
- ; gcrRegs +[rsi]
+G_M65326_IG03: ; bbWeight=0.80, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ test edx, edx
+ jg SHORT G_M65326_IG06
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M65326_IG04: ; bbWeight=1, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
cmp byte ptr [rax], al
mov edx, dword ptr [rsi+0x08]
add rsi, 12
@@ -64,37 +47,48 @@ G_M65326_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=010
mov rdi, rax
; gcrRegs +[rdi]
call [System.Text.StringBuilder:Append(byref,int):this]
- ; gcrRegs -[rax rdi r8]
+ ; gcrRegs -[rax rdi]
; byrRegs -[rsi]
nop
- ;; size=26 bbWeight=0.50 PerfScore 5.12
-G_M65326_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ ;; size=19 bbWeight=1 PerfScore 8.75
+G_M65326_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M65326_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0101 {rax r8}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rax r8]
- mov ecx, dword ptr [r8+0x08]
- mov dword ptr [rbp-0x04], esi
- sub ecx, esi
- mov rsi, r8
- ; gcrRegs +[rsi]
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M65326_IG06: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax rsi]
+ mov ecx, dword ptr [rsi+0x08]
+ sub ecx, edx
mov rdi, rax
; gcrRegs +[rdi]
- mov edx, dword ptr [rbp-0x04]
cmp dword ptr [rdi], edi
call [System.Text.StringBuilder:Append(System.String,int,int):System.Text.StringBuilder:this]
- ; gcrRegs -[rsi rdi r8]
+ ; gcrRegs -[rsi rdi]
nop
- ;; size=27 bbWeight=0.50 PerfScore 5.50
-G_M65326_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
+ ;; size=17 bbWeight=0.38 PerfScore 3.36
+G_M65326_IG07: ; bbWeight=0.38, epilog, nogc, extend
pop rbp
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=2 bbWeight=0.38 PerfScore 0.58
+G_M65326_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rdi]
+ mov ecx, dword ptr [rdi+0x58]
+ sub ecx, edx
+ add edx, dword ptr [rdi+0x54]
+ mov rsi, gword ptr [rdi+0x30]
+ ; gcrRegs +[rsi]
+ mov rdi, rax
+ cmp dword ptr [rdi], edi
+ call [System.Text.StringBuilder:Append(ushort[],int,int):System.Text.StringBuilder:this]
+ ; gcrRegs -[rsi rdi]
+ nop
+ ;; size=24 bbWeight=0.20 PerfScore 2.75
+G_M65326_IG09: ; bbWeight=0.20, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.20 PerfScore 0.30
-; Total bytes of code 119, prolog size 10, PerfScore 25.50, instruction count 43, allocated bytes for code 119 (MethodHash=886300d1) for method System.Xml.XmlTextReaderImpl+NodeData:CopyTo(int,System.Text.StringBuilder):this (FullOpts)
+; Total bytes of code 88, prolog size 4, PerfScore 23.24, instruction count 35, allocated bytes for code 88 (MethodHash=886300d1) for method System.Xml.XmlTextReaderImpl+NodeData:CopyTo(int,System.Text.StringBuilder):this (FullOpts)
; ============================================================
Unwind Info:
@@ -102,10 +96,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-10 (-23.26%) : 8749.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:b_6012(System.Object):int:this (FullOpts)
@@ -2,17 +2,20 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c>
-; V01 arg1 [V01,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (64) zero-ref do-not-enreg[SF] ld-addr-op <MicroBenchmarks.Serializers.LargeStructWithProperties>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "V02.[044..048)"
+; V05 cse0 [V05,T01] ( 3, 2.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -22,18 +25,17 @@ G_M24240_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M24240_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
- cmp qword ptr [rbx], rsi
+ mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
+ cmp qword ptr [rbx], rdi
je SHORT G_M24240_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M24240_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M24240_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M24240_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x34]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -42,7 +44,7 @@ G_M24240_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 1, PerfScore 9.88, instruction count 11, allocated bytes for code 43 (MethodHash=852ea14f) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_12(System.Object):int:this (FullOpts)
+; Total bytes of code 33, prolog size 1, PerfScore 10.62, instruction count 10, allocated bytes for code 33 (MethodHash=852ea14f) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_12(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
+18 (+51.43%) : 26890.dasm - System.Memory.Constructors1[ubyte]:SpanImplicitCastFromArray():System.Span
1[ubyte]:this (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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; 1 inlinees without PGO data
; Final local variable assignments
@@ -11,52 +13,58 @@
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Memory.Constructors`1[ubyte]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
-; V03 tmp2 [V03,T00] ( 4, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
+; V03 tmp2 [V03,T00] ( 4, 7.20) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-DEP
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-DEP
; V07 tmp6 [V07,T02] ( 3, 2 ) byref -> registers "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp7 [V08,T03] ( 3, 2 ) int -> registers "field V04._length (fldOffset=0x8)" P-INDEP
+; V08 tmp7 [V08,T03] ( 3, 2 ) int -> [rbp-0x04] "field V04._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M37974_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ sub rsp, 16
+ lea rbp, [rsp+0x10]
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M37974_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
test rax, rax
- jne SHORT G_M37974_IG04
+ je SHORT G_M37974_IG06
;; size=9 bbWeight=1 PerfScore 3.25
-G_M37974_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdi]
- xor rax, rax
- ; byrRegs +[rax]
- xor edx, edx
- jmp SHORT G_M37974_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M37974_IG04: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rax]
- ; byrRegs -[rax]
+G_M37974_IG03: ; bbWeight=0.80, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
lea rdx, bword ptr [rax+0x10]
; byrRegs +[rdx]
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
- mov ecx, eax
+ mov dword ptr [rbp-0x04], eax
+ ;; size=10 bbWeight=0.80 PerfScore 2.80
+G_M37974_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
mov rax, rdx
; byrRegs +[rax]
- mov edx, ecx
+ mov edx, dword ptr [rbp-0x04]
; byrRegs -[rdx]
- ;; size=14 bbWeight=0.50 PerfScore 1.62
-G_M37974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, epilog, nogc
+ ;; size=6 bbWeight=1 PerfScore 1.25
+G_M37974_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=6 bbWeight=1 PerfScore 1.75
+G_M37974_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[rax]
+ xor rax, rax
+ ; byrRegs +[rax]
+ xor edx, edx
+ mov dword ptr [rbp-0x04], edx
+ mov rdx, rax
+ ; byrRegs +[rdx]
+ jmp SHORT G_M37974_IG04
+ ;; size=12 bbWeight=0.20 PerfScore 0.75
-; Total bytes of code 35, prolog size 4, PerfScore 8.88, instruction count 15, allocated bytes for code 35 (MethodHash=e78d6ba9) for method System.Memory.Constructors`1[ubyte]:SpanImplicitCastFromArray():System.Span`1[ubyte]:this (FullOpts)
+; Total bytes of code 53, prolog size 10, PerfScore 11.55, instruction count 19, allocated bytes for code 53 (MethodHash=e78d6ba9) for method System.Memory.Constructors`1[ubyte]:SpanImplicitCastFromArray():System.Span`1[ubyte]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,9 +72,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+18 (+51.43%) : 12903.dasm - System.Memory.Constructors1[ubyte]:ArrayAsSpan():System.Span
1[ubyte]:this (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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; 1 inlinees without PGO data
; Final local variable assignments
@@ -11,52 +13,58 @@
; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Memory.Constructors`1[ubyte]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
-; V03 tmp2 [V03,T00] ( 4, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
+; V03 tmp2 [V03,T00] ( 4, 7.20) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-DEP
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-DEP
; V07 tmp6 [V07,T02] ( 3, 2 ) byref -> registers "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp7 [V08,T03] ( 3, 2 ) int -> registers "field V04._length (fldOffset=0x8)" P-INDEP
+; V08 tmp7 [V08,T03] ( 3, 2 ) int -> [rbp-0x04] "field V04._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M65528_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ sub rsp, 16
+ lea rbp, [rsp+0x10]
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M65528_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
test rax, rax
- jne SHORT G_M65528_IG04
+ je SHORT G_M65528_IG06
;; size=9 bbWeight=1 PerfScore 3.25
-G_M65528_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdi]
- xor rax, rax
- ; byrRegs +[rax]
- xor edx, edx
- jmp SHORT G_M65528_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M65528_IG04: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rax]
- ; byrRegs -[rax]
+G_M65528_IG03: ; bbWeight=0.80, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
lea rdx, bword ptr [rax+0x10]
; byrRegs +[rdx]
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
- mov ecx, eax
+ mov dword ptr [rbp-0x04], eax
+ ;; size=10 bbWeight=0.80 PerfScore 2.80
+G_M65528_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
mov rax, rdx
; byrRegs +[rax]
- mov edx, ecx
+ mov edx, dword ptr [rbp-0x04]
; byrRegs -[rdx]
- ;; size=14 bbWeight=0.50 PerfScore 1.62
-G_M65528_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, epilog, nogc
+ ;; size=6 bbWeight=1 PerfScore 1.25
+G_M65528_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=6 bbWeight=1 PerfScore 1.75
+G_M65528_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[rax]
+ xor rax, rax
+ ; byrRegs +[rax]
+ xor edx, edx
+ mov dword ptr [rbp-0x04], edx
+ mov rdx, rax
+ ; byrRegs +[rdx]
+ jmp SHORT G_M65528_IG04
+ ;; size=12 bbWeight=0.20 PerfScore 0.75
-; Total bytes of code 35, prolog size 4, PerfScore 8.88, instruction count 15, allocated bytes for code 35 (MethodHash=53e10007) for method System.Memory.Constructors`1[ubyte]:ArrayAsSpan():System.Span`1[ubyte]:this (FullOpts)
+; Total bytes of code 53, prolog size 10, PerfScore 11.55, instruction count 19, allocated bytes for code 53 (MethodHash=53e10007) for method System.Memory.Constructors`1[ubyte]:ArrayAsSpan():System.Span`1[ubyte]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,9 +72,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+20 (+57.14%) : 13631.dasm - System.Memory.MemoryMarshal1[ubyte]:AsBytes():System.Span
1[ubyte]:this (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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; 3 inlinees without PGO data
; Final local variable assignments
@@ -12,12 +14,12 @@
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
-; V04 tmp3 [V04,T00] ( 4, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
+; V04 tmp3 [V04,T00] ( 4, 7.20) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V07 tmp6 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V08 tmp7 [V08,T03] ( 2, 4 ) int -> rdx "Inlining Arg"
-; V09 tmp8 [V09,T02] ( 2, 4 ) byref -> rax single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 2, 4 ) int -> rax "Inlining Arg"
+; V09 tmp8 [V09,T02] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
;* V10 tmp9 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp10 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V12 tmp11 [V12,T04] ( 3, 2 ) byref -> registers "field V02._reference (fldOffset=0x0)" P-INDEP
@@ -26,50 +28,59 @@
;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-DEP
;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V18 tmp17 [V18,T06] ( 2, 2 ) byref -> rax single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp18 [V19,T07] ( 2, 2 ) int -> rdx "field V06._length (fldOffset=0x8)" P-INDEP
+; V18 tmp17 [V18,T06] ( 2, 2 ) byref -> registers single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp18 [V19,T07] ( 2, 2 ) int -> [rbp-0x04] spill-single-def "field V06._length (fldOffset=0x8)" P-INDEP
;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M20742_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ sub rsp, 16
+ lea rbp, [rsp+0x10]
+ ;; size=10 bbWeight=1 PerfScore 1.75
G_M20742_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
test rax, rax
- jne SHORT G_M20742_IG04
+ je SHORT G_M20742_IG06
;; size=9 bbWeight=1 PerfScore 3.25
-G_M20742_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdi]
- xor rax, rax
- ; byrRegs +[rax]
- xor edx, edx
- jmp SHORT G_M20742_IG05
- ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M20742_IG04: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rax]
- ; byrRegs -[rax]
+G_M20742_IG03: ; bbWeight=0.80, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
lea rdx, bword ptr [rax+0x10]
; byrRegs +[rdx]
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
- mov ecx, eax
+ ;; size=7 bbWeight=0.80 PerfScore 2.00
+G_M20742_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
+ mov dword ptr [rbp-0x04], eax
mov rax, rdx
; byrRegs +[rax]
- mov edx, ecx
+ mov edx, dword ptr [rbp-0x04]
; byrRegs -[rdx]
- ;; size=14 bbWeight=0.50 PerfScore 1.62
-G_M20742_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, epilog, nogc
+ ;; size=9 bbWeight=1 PerfScore 2.25
+G_M20742_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 16
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=6 bbWeight=1 PerfScore 1.75
+G_M20742_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; byrRegs -[rax]
+ xor rax, rax
+ ; byrRegs +[rax]
+ xor edx, edx
+ mov rcx, rax
+ ; byrRegs +[rcx]
+ mov eax, edx
+ ; byrRegs -[rax]
+ mov rdx, rcx
+ ; byrRegs +[rdx]
+ jmp SHORT G_M20742_IG04
+ ;; size=14 bbWeight=0.20 PerfScore 0.65
-; Total bytes of code 35, prolog size 4, PerfScore 8.88, instruction count 15, allocated bytes for code 35 (MethodHash=fd8eaef9) for method System.Memory.MemoryMarshal`1[ubyte]:AsBytes():System.Span`1[ubyte]:this (FullOpts)
+; Total bytes of code 55, prolog size 10, PerfScore 11.65, instruction count 20, allocated bytes for code 55 (MethodHash=fd8eaef9) for method System.Memory.MemoryMarshal`1[ubyte]:AsBytes():System.Span`1[ubyte]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -77,9 +88,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
benchmarks.run_pgo.linux.x64.checked.mch
-10 (-23.26%) : 10347.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,18 +23,17 @@ G_M53339_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M53339_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
- cmp qword ptr [rbx], rsi
+ mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
+ cmp qword ptr [rbx], rdi
je SHORT G_M53339_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M53339_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M53339_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M53339_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x30]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -40,7 +42,7 @@ G_M53339_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 1, PerfScore 9.88, instruction count 11, allocated bytes for code 43 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
+; Total bytes of code 33, prolog size 1, PerfScore 10.62, instruction count 10, allocated bytes for code 33 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
-10 (-22.73%) : 79101.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,18 +23,17 @@ G_M25960_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M25960_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
- cmp qword ptr [rbx], rsi
+ mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
+ cmp qword ptr [rbx], rdi
je SHORT G_M25960_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M25960_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M25960_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M25960_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x20]
;; size=4 bbWeight=1 PerfScore 2.00
@@ -40,7 +42,7 @@ G_M25960_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 44, prolog size 1, PerfScore 9.88, instruction count 11, allocated bytes for code 44 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
+; Total bytes of code 34, prolog size 1, PerfScore 10.62, instruction count 10, allocated bytes for code 34 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
; ============================================================
Unwind Info:
-10 (-22.73%) : 10346.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,18 +23,17 @@ G_M3216_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M3216_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
- cmp qword ptr [rbx], rsi
+ mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
+ cmp qword ptr [rbx], rdi
je SHORT G_M3216_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M3216_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M3216_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M3216_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
@@ -41,7 +43,7 @@ G_M3216_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 44, prolog size 1, PerfScore 9.88, instruction count 11, allocated bytes for code 44 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
+; Total bytes of code 34, prolog size 1, PerfScore 10.62, instruction count 10, allocated bytes for code 34 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
; ============================================================
Unwind Info:
+10 (+12.66%) : 103582.dasm - System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T00] ( 7, 3.26) ref -> rdi class-hnd single-def <System.Reflection.MethodInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 0.25) int -> rbx "guarded devirt return temp"
+; V03 tmp1 [V03,T02] ( 4, 0.25) int -> rbx "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 8
@@ -44,24 +44,30 @@ G_M32196_IG05: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
cmp qword ptr [rdi], rax
- jne SHORT G_M32196_IG07
+ jne SHORT G_M32196_IG08
;; size=15 bbWeight=0.12 PerfScore 0.53
G_M32196_IG06: ; bbWeight=0.12, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov ebx, dword ptr [rdi+0x5C]
- jmp SHORT G_M32196_IG08
- ;; size=5 bbWeight=0.12 PerfScore 0.47
-G_M32196_IG07: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ and ebx, 7
+ cmp ebx, 6
+ jne SHORT G_M32196_IG09
+ ;; size=11 bbWeight=0.12 PerfScore 0.41
+G_M32196_IG07: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ jmp SHORT G_M32196_IG03
+ ;; size=2 bbWeight=0.12 PerfScore 0.24
+G_M32196_IG08: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x58]
call [rax+0x20]<unknown method>
; gcrRegs -[rdi]
mov ebx, eax
- ;; size=12 bbWeight=0.01 PerfScore 0.05
-G_M32196_IG08: ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- and ebx, 7
- cmp ebx, 6
+ mov eax, ebx
+ and eax, 7
+ cmp eax, 6
je SHORT G_M32196_IG03
- ;; size=8 bbWeight=0.12 PerfScore 0.19
+ ;; size=22 bbWeight=0.01 PerfScore 0.07
G_M32196_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
@@ -72,7 +78,7 @@ G_M32196_IG10: ; bbWeight=0, epilog, nogc, extend
ret
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 79, prolog size 8, PerfScore 9.43, instruction count 30, allocated bytes for code 79 (MethodHash=a0e9823b) for method System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
+; Total bytes of code 89, prolog size 8, PerfScore 9.44, instruction count 34, allocated bytes for code 89 (MethodHash=a0e9823b) for method System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
; ============================================================
Unwind Info:
+10 (+12.66%) : 7891.dasm - System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T00] ( 7, 4.05) ref -> rdi class-hnd single-def <System.Reflection.MethodInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 1 ) int -> rbx "guarded devirt return temp"
+; V03 tmp1 [V03,T02] ( 4, 1 ) int -> rbx "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 8
@@ -44,24 +44,30 @@ G_M32196_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
cmp qword ptr [rdi], rax
- jne SHORT G_M32196_IG07
+ jne SHORT G_M32196_IG08
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M32196_IG06: ; bbWeight=0.45, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov ebx, dword ptr [rdi+0x5C]
- jmp SHORT G_M32196_IG08
- ;; size=5 bbWeight=0.45 PerfScore 1.80
-G_M32196_IG07: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ and ebx, 7
+ cmp ebx, 6
+ jne SHORT G_M32196_IG09
+ ;; size=11 bbWeight=0.45 PerfScore 1.57
+G_M32196_IG07: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ jmp SHORT G_M32196_IG03
+ ;; size=2 bbWeight=0.47 PerfScore 0.95
+G_M32196_IG08: ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x58]
call [rax+0x20]<unknown method>
; gcrRegs -[rdi]
mov ebx, eax
- ;; size=12 bbWeight=0.05 PerfScore 0.36
-G_M32196_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- and ebx, 7
- cmp ebx, 6
+ mov eax, ebx
+ and eax, 7
+ cmp eax, 6
je SHORT G_M32196_IG03
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=22 bbWeight=0.05 PerfScore 0.45
G_M32196_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
@@ -72,7 +78,7 @@ G_M32196_IG10: ; bbWeight=0, epilog, nogc, extend
ret
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 79, prolog size 8, PerfScore 12.29, instruction count 30, allocated bytes for code 79 (MethodHash=a0e9823b) for method System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
+; Total bytes of code 89, prolog size 8, PerfScore 12.35, instruction count 34, allocated bytes for code 89 (MethodHash=a0e9823b) for method System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
; ============================================================
Unwind Info:
+29 (+72.50%) : 95417.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
@@ -5,8 +5,8 @@
; optimized using Dynamic PGO
; rbp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8766
-; 2 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8766
+; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rdi class-hnd single-def <System.String>
@@ -15,61 +15,68 @@
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp5 [V06,T02] ( 2, 4 ) int -> rcx "Inlining Arg"
-; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> rax single-def "Inlining Arg"
-;* V08 tmp7 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp9 [V10,T03] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
-;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp13 [V14,T04] ( 2, 2 ) byref -> rax single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp14 [V15,T06] ( 2, 2 ) int -> rcx "field V03._length (fldOffset=0x8)" P-INDEP
-; V16 tmp15 [V16,T05] ( 2, 2 ) byref -> rax single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T07] ( 2, 2 ) int -> rcx "field V04._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+; V06 tmp5 [V06,T02] ( 2, 4 ) int -> r15 "Inlining Arg"
+; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> rbx single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp11 [V12,T04] ( 2, 2 ) byref -> rbx single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp12 [V13,T06] ( 2, 2 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
+; V14 tmp13 [V14,T05] ( 2, 2 ) byref -> rbx single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T07] ( 2, 2 ) int -> r15 "field V04._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M54468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
+ push r15
+ push rbx
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=1 PerfScore 3.50
G_M54468_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
test rdi, rdi
je SHORT G_M54468_IG04
- lea rax, bword ptr [rdi+0x0C]
- ; byrRegs +[rax]
- mov ecx, dword ptr [rdi+0x08]
- test ecx, ecx
- jle SHORT G_M54468_IG06
- cmp word ptr [rax], 47
- sete al
- ; byrRegs -[rax]
- movzx rax, al
- ;; size=26 bbWeight=1 PerfScore 9.25
-G_M54468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ lea rbx, bword ptr [rdi+0x0C]
+ ; byrRegs +[rbx]
+ mov r15d, dword ptr [rdi+0x08]
+ mov edi, 1
; gcrRegs -[rdi]
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Debug:Assert(ubyte)
+ call [rax]System.Diagnostics.Debug:Assert(ubyte)
+ test r15d, r15d
+ jle SHORT G_M54468_IG06
+ xor eax, eax
+ cmp word ptr [rbx], 47
+ sete al
+ ;; size=44 bbWeight=1 PerfScore 12.75
+G_M54468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[rbx]
+ pop rbx
+ pop r15
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=5 bbWeight=1 PerfScore 2.50
G_M54468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
G_M54468_IG05: ; bbWeight=0, epilog, nogc, extend
+ pop rbx
+ pop r15
pop rbp
ret
- ;; size=2 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M54468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
xor eax, eax
jmp SHORT G_M54468_IG03
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 40, prolog size 4, PerfScore 12.00, instruction count 18, allocated bytes for code 40 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
+; Total bytes of code 69, prolog size 9, PerfScore 18.75, instruction count 27, allocated bytes for code 69 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -77,9 +84,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
benchmarks.run_tiered.linux.x64.checked.mch
-10 (-23.26%) : 9798.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,18 +23,17 @@ G_M53339_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M53339_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
- cmp qword ptr [rbx], rsi
+ mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
+ cmp qword ptr [rbx], rdi
je SHORT G_M53339_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M53339_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M53339_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M53339_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x30]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -40,7 +42,7 @@ G_M53339_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 43, prolog size 1, PerfScore 9.88, instruction count 11, allocated bytes for code 43 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
+; Total bytes of code 33, prolog size 1, PerfScore 10.62, instruction count 10, allocated bytes for code 33 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
-10 (-22.73%) : 38353.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,18 +23,17 @@ G_M25960_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M25960_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
- cmp qword ptr [rbx], rsi
+ mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
+ cmp qword ptr [rbx], rdi
je SHORT G_M25960_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M25960_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M25960_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M25960_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x20]
;; size=4 bbWeight=1 PerfScore 2.00
@@ -40,7 +42,7 @@ G_M25960_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 44, prolog size 1, PerfScore 9.88, instruction count 11, allocated bytes for code 44 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
+; Total bytes of code 34, prolog size 1, PerfScore 10.62, instruction count 10, allocated bytes for code 34 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
; ============================================================
Unwind Info:
-10 (-22.73%) : 9788.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -20,18 +23,17 @@ G_M3216_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M3216_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
- cmp qword ptr [rbx], rsi
+ mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
+ cmp qword ptr [rbx], rdi
je SHORT G_M3216_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M3216_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M3216_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M3216_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
@@ -41,7 +43,7 @@ G_M3216_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 44, prolog size 1, PerfScore 9.88, instruction count 11, allocated bytes for code 44 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
+; Total bytes of code 34, prolog size 1, PerfScore 10.62, instruction count 10, allocated bytes for code 34 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
; ============================================================
Unwind Info:
+10 (+19.23%) : 3056.dasm - System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
@@ -2,58 +2,62 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; fully 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 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T02] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-; V02 cse0 [V02,T01] ( 3, 2.50) int -> rdi "CSE - aggressive"
-; V03 cse1 [V03,T00] ( 3, 2.50) byref -> rsi "CSE - aggressive"
+; V01 tmp1 [V01,T01] ( 3, 1.23) ubyte -> rax "Inline return value spill temp"
+; V02 cse0 [V02,T00] ( 3, 2.80) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
-G_M63529_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M63529_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
G_M63529_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; static handle
- ; byrRegs +[rsi]
- mov edi, dword ptr [rsi]
+ mov rdi, 0xD1FFAB1E ; static handle
+ ; byrRegs +[rdi]
+ mov edi, dword ptr [rdi]
+ ; byrRegs -[rdi]
test edi, edi
- jge SHORT G_M63529_IG04
+ jl SHORT G_M63529_IG08
;; size=16 bbWeight=1 PerfScore 3.50
-G_M63529_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rsi]
- xor eax, eax
- jmp SHORT G_M63529_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M63529_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- ; byrRegs +[rsi]
+G_M63529_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test edi, edi
jle SHORT G_M63529_IG06
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M63529_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
- ;; size=9 bbWeight=0.50 PerfScore 0.75
-G_M63529_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rsi]
+ ;; size=5 bbWeight=0.42 PerfScore 0.10
+G_M63529_IG05: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M63529_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref
- ; byrRegs +[rsi]
+ ;; size=2 bbWeight=0.62 PerfScore 0.92
+G_M63529_IG06: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
- ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M63529_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ mov rsi, 0xD1FFAB1E ; static handle
+ ; byrRegs +[rsi]
+ ;; size=20 bbWeight=0.38 PerfScore 0.19
+G_M63529_IG07: ; bbWeight=0.38, epilog, nogc, extend
pop rbp
tail.jmp [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte]
; gcr arg pop 0
- ;; size=7 bbWeight=0.50 PerfScore 1.25
+ ;; size=7 bbWeight=0.38 PerfScore 0.96
+G_M63529_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rsi]
+ xor eax, eax
+ jmp SHORT G_M63529_IG05
+ ;; size=4 bbWeight=0.20 PerfScore 0.45
-; Total bytes of code 52, prolog size 4, PerfScore 8.75, instruction count 16, allocated bytes for code 52 (MethodHash=9cfc07d6) for method System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
+; Total bytes of code 62, prolog size 4, PerfScore 8.38, instruction count 17, allocated bytes for code 62 (MethodHash=9cfc07d6) for method System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
; ============================================================
Unwind Info:
+34 (+31.48%) : 25627.dasm - System.Collections.Generic.Stack1[System.ValueTuple
3[System.Canon,System.Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
@@ -2,64 +2,51 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
-; rsp based frame
+; optimized using Synthesized PGO
+; rbp 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 -> rbx 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 -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T01] ( 4, 3 ) byref -> registers single-def
-; V02 loc0 [V02,T02] ( 4, 3 ) int -> rdi
-; V03 loc1 [V03,T04] ( 3, 2.50) ref -> rcx class-hnd exact single-def <<unknown class>>
+; V02 loc0 [V02,T03] ( 4, 3.60) int -> rdi
+; V03 loc1 [V03,T05] ( 3, 2.80) ref -> rcx class-hnd exact single-def <<unknown class>>
;* V04 loc2 [V04 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V07 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=0x8)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.Item3 (fldOffset=0x10)" P-INDEP
-; V10 cse0 [V10,T07] ( 3, 1.50) byref -> r15 "CSE - moderate"
-; V11 cse1 [V11,T06] ( 2, 2 ) int -> rax "CSE - aggressive"
-;* V12 rat0 [V12,T05] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V13 rat1 [V13,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 cse0 [V10,T06] ( 3, 2.40) byref -> r15 "CSE - aggressive"
+; V11 rat0 [V11,T04] ( 2, 3.20) long -> rax "Spilling to split statement for tree"
+;* V12 rat1 [V12,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V13 rat2 [V13,T02] ( 2, 3.20) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M60687_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ push rbp
push r15
push rbx
- push rax
+ sub rsp, 16
+ lea rbp, [rsp+0x20]
+ mov qword ptr [rbp-0x18], rdi
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=7 bbWeight=1 PerfScore 3.25
+ ;; size=20 bbWeight=1 PerfScore 5.00
G_M60687_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; byrRegs +[rsi]
mov edi, dword ptr [rbx+0x10]
dec edi
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
- mov eax, dword ptr [rcx+0x08]
- cmp eax, edi
- ja SHORT G_M60687_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M60687_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- ; gcrRegs -[rcx]
- xor eax, eax
- mov qword ptr [rsi], rax
- mov qword ptr [rsi+0x08], rax
- mov qword ptr [rsi+0x10], rax
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M60687_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rsi]
- add rsp, 8
- pop rbx
- pop r15
- ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M60687_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, gcvars, byref
- ; gcrRegs +[rcx]
- ; byrRegs +[rsi]
+ cmp dword ptr [rcx+0x08], edi
+ jbe SHORT G_M60687_IG05
+ ;; size=14 bbWeight=1 PerfScore 8.25
+G_M60687_IG03: ; bbWeight=0.80, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, byref, isz
inc dword ptr [rbx+0x14]
mov dword ptr [rbx+0x10], edi
mov edi, edi
@@ -73,20 +60,49 @@ G_M60687_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs -[rcx]
call CORINFO_HELP_ASSIGN_BYREF
call CORINFO_HELP_ASSIGN_BYREF
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x38]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x20]
+ test rax, rax
+ jne SHORT G_M60687_IG07
+ ;; size=57 bbWeight=0.80 PerfScore 14.80
+G_M60687_IG04: ; bbWeight=0.16, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ ; byrRegs -[rsi rdi]
+ jmp SHORT G_M60687_IG07
+ ;; size=2 bbWeight=0.16 PerfScore 0.32
+G_M60687_IG05: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+ ; byrRegs -[r15] +[rsi]
+ xor eax, eax
+ mov qword ptr [rsi], rax
+ mov qword ptr [rsi+0x08], rax
+ mov qword ptr [rsi+0x10], rax
+ ;; size=13 bbWeight=0.20 PerfScore 0.65
+G_M60687_IG06: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[rsi]
+ add rsp, 16
+ pop rbx
+ pop r15
+ pop rbp
+ ret
+ ;; size=9 bbWeight=0.20 PerfScore 0.55
+G_M60687_IG07: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
+ ; byrRegs +[r15]
xor eax, eax
mov qword ptr [r15], rax
mov qword ptr [r15+0x08], rax
mov qword ptr [r15+0x10], rax
mov eax, 1
- ;; size=56 bbWeight=0.50 PerfScore 6.38
-G_M60687_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=18 bbWeight=0.80 PerfScore 2.80
+G_M60687_IG08: ; bbWeight=0.80, epilog, nogc, extend
+ add rsp, 16
pop rbx
pop r15
+ pop rbp
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
+ ;; size=9 bbWeight=0.80 PerfScore 2.20
-; Total bytes of code 108, prolog size 4, PerfScore 21.00, instruction count 37, allocated bytes for code 108 (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 142, prolog size 17, PerfScore 34.57, instruction count 48, allocated bytes for code 142 (MethodHash=056e12f0) for method System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -94,11 +110,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x08
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+37 (+33.33%) : 9168.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Canon]:TryEnqueue(System.Canon):ubyte:this (Tier1)
@@ -2,104 +2,112 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 23 ) ref -> rdi this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 3, 2.50) ref -> rsi class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T05] ( 3, 17 ) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 7, 36.50) int -> rbx
-; V04 loc2 [V04,T02] ( 3, 24 ) int -> rax
+; V00 this [V00,T02] ( 6,204.60) ref -> rdi this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
+; V01 arg1 [V01,T05] ( 3, 2.52) ref -> rsi class-hnd single-def <System.__Canon>
+; V02 loc0 [V02,T04] ( 5,162.04) ref -> rbx class-hnd exact single-def <<unknown class>>
+; V03 loc1 [V03,T00] ( 7,365.32) int -> r15
+; V04 loc2 [V04,T01] ( 5,241.04) int -> r14
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc4 [V06,T03] ( 3, 20 ) int -> rdx
+; V06 loc4 [V06,T03] ( 3,198.40) int -> rcx
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 cse0 [V08,T04] ( 4, 17 ) byref -> r15 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56054_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ push rax
+ lea rbp, [rsp+0x20]
+ ;; size=12 bbWeight=1 PerfScore 5.50
G_M56054_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi rdi]
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
+ mov rbx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M56054_IG03: ; bbWeight=8, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov ebx, dword ptr [rdi+0xA0]
- mov eax, ebx
- and eax, dword ptr [rdi+0x18]
- cmp eax, dword ptr [rcx+0x08]
+G_M56054_IG03: ; bbWeight=80.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov r15d, dword ptr [rdi+0xA0]
+ mov r14d, r15d
+ and r14d, dword ptr [rdi+0x18]
+ cmp r14d, dword ptr [rbx+0x08]
jae SHORT G_M56054_IG11
+ mov eax, r14d
shl rax, 4
- lea r15, bword ptr [rcx+rax+0x10]
- ; byrRegs +[r15]
- mov edx, dword ptr [r15+0x08]
- sub edx, ebx
+ mov ecx, dword ptr [rbx+rax+0x18]
+ sub ecx, r15d
jne SHORT G_M56054_IG06
- ;; size=33 bbWeight=8 PerfScore 112.00
-G_M56054_IG04: ; bbWeight=4, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=8000 {r15}, byref, isz
- lea rdx, bword ptr [rdi+0xA0]
- ; byrRegs +[rdx]
- lea r8d, [rbx+0x01]
- mov eax, ebx
+ ;; size=36 bbWeight=80.00 PerfScore 1060.00
+G_M56054_IG04: ; bbWeight=41.60, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ lea rcx, bword ptr [rdi+0xA0]
+ ; byrRegs +[rcx]
+ lea edx, [r15+0x01]
+ mov eax, r15d
lock
- cmpxchg dword ptr [rdx], r8d
- cmp eax, ebx
+ cmpxchg dword ptr [rcx], edx
+ cmp eax, r15d
jne SHORT G_M56054_IG03
- ;; size=22 bbWeight=4 PerfScore 82.00
-G_M56054_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
- ; gcrRegs -[rcx rdi]
- ; byrRegs -[rdx]
+ ;; size=23 bbWeight=41.60 PerfScore 852.80
+G_M56054_IG05: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rcx]
jmp SHORT G_M56054_IG09
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M56054_IG06: ; bbWeight=4, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx rdi]
- ; byrRegs -[r15]
- test edx, edx
+ ;; size=2 bbWeight=0.52 PerfScore 1.04
+G_M56054_IG06: ; bbWeight=38.40, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi]
+ test ecx, ecx
jge SHORT G_M56054_IG03
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M56054_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rsi rdi]
+ ;; size=4 bbWeight=38.40 PerfScore 48.00
+G_M56054_IG07: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi rdi]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M56054_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=0.48 PerfScore 0.12
+G_M56054_IG08: ; bbWeight=0.48, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M56054_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, gcvars, byref
- ; gcrRegs +[rsi]
- ; byrRegs +[r15]
- mov rdi, r15
+ ;; size=11 bbWeight=0.48 PerfScore 1.56
+G_M56054_IG09: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx rsi]
+ mov edi, r14d
+ shl rdi, 4
+ lea rdi, bword ptr [rbx+rdi+0x10]
; byrRegs +[rdi]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
; byrRegs -[rdi]
- inc ebx
- mov dword ptr [r15+0x08], ebx
+ mov eax, r14d
+ shl rax, 4
+ inc r15d
+ mov dword ptr [rbx+rax+0x18], r15d
mov eax, 1
- ;; size=19 bbWeight=0.50 PerfScore 1.38
-G_M56054_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=37 bbWeight=0.52 PerfScore 2.60
+G_M56054_IG10: ; bbWeight=0.52, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=11 bbWeight=0.52 PerfScore 1.69
G_M56054_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[r15]
+ ; gcrRegs -[rbx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 111, prolog size 9, PerfScore 209.50, instruction count 41, allocated bytes for code 111 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
+; Total bytes of code 148, prolog size 12, PerfScore 1975.31, instruction count 51, allocated bytes for code 148 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -107,11 +115,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
coreclr_tests.run.linux.x64.checked.mch
-11 (-73.33%) : 324352.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; optimized using Synthesized PGO
+; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
@@ -15,25 +17,15 @@
; Lcl frame size = 0
G_M59608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M59608_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M59608_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M59608_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M59608_IG05
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M59608_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00
+G_M59608_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, di
- jmp SHORT G_M59608_IG03
- ;; size=5 bbWeight=1 PerfScore 2.25
-G_M59608_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbp
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M59608_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 15, prolog size 4, PerfScore 9.00, instruction count 8, allocated bytes for code 15 (MethodHash=11ea1727) for method Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
+; Total bytes of code 4, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 4 (MethodHash=11ea1727) for method Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
; ============================================================
Unwind Info:
@@ -41,9 +33,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-37 (-69.81%) : 318222.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)
@@ -2,51 +2,36 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; optimized using Synthesized PGO
+; rsp 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
+; V00 loc0 [V00,T01] ( 2, 2 ) float -> mm0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> mm0 "Single return block return value"
-; V03 cse0 [V03,T02] ( 5, 3.50) float -> mm1 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> mm0 "Single return block return value"
+;* V03 cse0 [V03,T02] ( 0, 0 ) float -> zero-ref "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
+ push rax
vzeroupper
- mov rbp, rsp
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.00
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm0, xmm1
- jbe SHORT G_M53791_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M53791_IG05
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vucomiss xmm1, xmm0
- ja SHORT G_M53791_IG03
- vucomiss xmm0, xmm1
- jp SHORT G_M53791_IG03
- jne SHORT G_M53791_IG03
- vucomiss xmm1, xmm0
- jbe SHORT G_M53791_IG03
- jmp SHORT G_M53791_IG03
- ;; size=22 bbWeight=0.50 PerfScore 6.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbp
+ ; gcr arg pop 0
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-RWD00 dd 41200000h ; 10
+ ;; size=5 bbWeight=1 PerfScore 1.25
-
-; Total bytes of code 53, prolog size 7, PerfScore 20.75, instruction count 18, allocated bytes for code 53 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 16, prolog size 4, PerfScore 6.50, instruction count 6, allocated bytes for code 16 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -59,4 +44,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-11 (-68.75%) : 324345.dasm - Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; optimized using Synthesized PGO
+; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
@@ -15,25 +17,15 @@
; Lcl frame size = 0
G_M52516_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M52516_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M52516_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M52516_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M52516_IG05
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M52516_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=0 bbWeight=1 PerfScore 0.00
+G_M52516_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movsx rax, dil
- jmp SHORT G_M52516_IG03
- ;; size=6 bbWeight=1 PerfScore 2.25
-G_M52516_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbp
+ ;; size=4 bbWeight=1 PerfScore 0.25
+G_M52516_IG03: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 4, PerfScore 9.00, instruction count 8, allocated bytes for code 16 (MethodHash=f23e32db) for method Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
+; Total bytes of code 5, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 5 (MethodHash=f23e32db) for method Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
; ============================================================
Unwind Info:
@@ -41,9 +33,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+10 (+35.71%) : 159623.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
@@ -2,36 +2,48 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte>
-; V01 arg1 [V01 ] ( 3, 3 ) ubyte -> [rbp-0x04] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) ubyte -> [rbp-0x04] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M9227_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M9227_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
sub rsp, 16
lea rbp, [rsp+0x10]
mov dword ptr [rbp-0x04], esi
- ;; size=13 bbWeight=1 PerfScore 2.75
-G_M9227_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
+ ;; size=13 bbWeight=4.74 PerfScore 13.03
+G_M9227_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x04], 255
- sete al
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M9227_IG03: ; bbWeight=1, epilog, nogc, extend
+ jne SHORT G_M9227_IG05
+ ;; size=6 bbWeight=4.74 PerfScore 14.21
+G_M9227_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=2.89 PerfScore 0.72
+G_M9227_IG04: ; bbWeight=2.89, epilog, nogc, extend
add rsp, 16
pop rbp
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=6 bbWeight=2.89 PerfScore 5.07
+G_M9227_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.47 PerfScore 0.12
+G_M9227_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ add rsp, 16
+ pop rbp
+ ret
+ ;; size=6 bbWeight=0.47 PerfScore 0.83
-; Total bytes of code 28, prolog size 10, PerfScore 7.75, instruction count 10, allocated bytes for code 28 (MethodHash=8d4ddbf4) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 33.97, instruction count 14, allocated bytes for code 38 (MethodHash=8d4ddbf4) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+10 (+35.71%) : 159647.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
@@ -2,36 +2,48 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte>
-; V01 arg1 [V01 ] ( 3, 3 ) byte -> [rbp-0x04] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) byte -> [rbp-0x04] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M12269_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M12269_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
sub rsp, 16
lea rbp, [rsp+0x10]
mov dword ptr [rbp-0x04], esi
- ;; size=13 bbWeight=1 PerfScore 2.75
-G_M12269_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
+ ;; size=13 bbWeight=4.74 PerfScore 13.03
+G_M12269_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x04], 255
- sete al
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M12269_IG03: ; bbWeight=1, epilog, nogc, extend
+ jne SHORT G_M12269_IG05
+ ;; size=6 bbWeight=4.74 PerfScore 14.21
+G_M12269_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=2.89 PerfScore 0.72
+G_M12269_IG04: ; bbWeight=2.89, epilog, nogc, extend
add rsp, 16
pop rbp
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=6 bbWeight=2.89 PerfScore 5.07
+G_M12269_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.47 PerfScore 0.12
+G_M12269_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ add rsp, 16
+ pop rbp
+ ret
+ ;; size=6 bbWeight=0.47 PerfScore 0.83
-; Total bytes of code 28, prolog size 10, PerfScore 7.75, instruction count 10, allocated bytes for code 28 (MethodHash=b297d012) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
+; Total bytes of code 38, prolog size 10, PerfScore 33.97, instruction count 14, allocated bytes for code 38 (MethodHash=b297d012) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+43 (+42.16%) : 387067.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
@@ -2,18 +2,24 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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 -> rbx this class-hnd single-def <Internal.IL.Stubs.ILCodeStream>
+; V00 this [V00,T00] ( 14, 13.60) ref -> rbx this class-hnd single-def <Internal.IL.Stubs.ILCodeStream>
; V01 arg1 [V01,T01] ( 4, 4 ) int -> r15 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 4, 2 ) int -> rdi "Inline stloc first use temp"
-; V04 tmp2 [V04,T02] ( 3, 3 ) ref -> rsi class-hnd single-def "impAppendStmt" <<unknown class>>
-; V05 cse0 [V05,T04] ( 3, 1.50) ref -> rsi "CSE - moderate"
+; V03 tmp1 [V03,T04] ( 4, 4 ) int -> rdi "Inline stloc first use temp"
+; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rsi class-hnd single-def "impAppendStmt" <<unknown class>>
+; V05 tmp3 [V05,T05] ( 4, 4 ) int -> rcx "Inline stloc first use temp"
+; V06 tmp4 [V06,T03] ( 3, 6 ) ref -> rax 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 -> rsi "CSE - aggressive"
+; V09 cse1 [V09,T07] ( 3, 2.80) ref -> rsi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -29,13 +35,13 @@ G_M192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M192_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r15d, 256
jle SHORT G_M192_IG05
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M192_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
mov edi, dword ptr [rsi+0x08]
cmp edi, dword ptr [rbx+0x18]
jne SHORT G_M192_IG04
+ ;; size=21 bbWeight=1 PerfScore 9.25
+G_M192_IG03: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov esi, dword ptr [rsi+0x08]
; gcrRegs -[rsi]
lea esi, [2*rsi+0x0A]
@@ -43,39 +49,57 @@ G_M192_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by
; byrRegs +[rdi]
call [System.Array:Resize[ubyte](byref,int)]
; byrRegs -[rdi]
- ; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 7.00
-G_M192_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.80 PerfScore 4.80
+G_M192_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
mov edi, dword ptr [rbx+0x18]
lea eax, [rdi+0x01]
mov dword ptr [rbx+0x18], eax
cmp edi, dword ptr [rsi+0x08]
- jae SHORT G_M192_IG07
+ jae SHORT G_M192_IG09
mov byte ptr [rsi+rdi+0x10], 254
- ;; size=23 bbWeight=0.50 PerfScore 5.25
-G_M192_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=23 bbWeight=1 PerfScore 10.50
+G_M192_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- movzx rsi, r15b
- mov rdi, rbx
- ; gcrRegs +[rdi]
- ;; size=7 bbWeight=1 PerfScore 0.50
-G_M192_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rsi, gword ptr [rbx+0x08]
+ ; gcrRegs +[rsi]
+ mov edi, dword ptr [rsi+0x08]
+ cmp edi, dword ptr [rbx+0x18]
+ jne SHORT G_M192_IG07
+ ;; size=12 bbWeight=1 PerfScore 8.00
+G_M192_IG06: ; bbWeight=0.80, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ mov esi, dword ptr [rsi+0x08]
+ ; gcrRegs -[rsi]
+ lea esi, [2*rsi+0x0A]
+ lea rdi, bword ptr [rbx+0x08]
+ ; byrRegs +[rdi]
+ call [System.Array:Resize[ubyte](byref,int)]
+ ; byrRegs -[rdi]
+ ;; size=20 bbWeight=0.80 PerfScore 4.80
+G_M192_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rax, gword ptr [rbx+0x08]
+ ; gcrRegs +[rax]
+ mov ecx, dword ptr [rbx+0x18]
+ lea edx, [rcx+0x01]
+ mov dword ptr [rbx+0x18], edx
+ cmp ecx, dword ptr [rax+0x08]
+ jae SHORT G_M192_IG09
+ mov byte ptr [rax+rcx+0x10], r15b
+ ;; size=23 bbWeight=1 PerfScore 10.50
+G_M192_IG08: ; bbWeight=1, epilog, nogc, extend
pop rbx
pop r15
pop rbp
- tail.jmp [Internal.IL.Stubs.ILCodeStream:EmitByte(ubyte):this]
- ; gcr arg pop 0
- ;; size=10 bbWeight=1 PerfScore 3.50
-G_M192_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx rdi]
+ ret
+ ;; size=5 bbWeight=1 PerfScore 2.50
+G_M192_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 102, prolog size 15, PerfScore 21.50, instruction count 31, allocated bytes for code 102 (MethodHash=f1f1ff3f) for method Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
+; Total bytes of code 145, prolog size 9, PerfScore 54.35, instruction count 44, allocated bytes for code 145 (MethodHash=f1f1ff3f) for method Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
; ============================================================
Unwind Info:
libraries.crossgen2.linux.x64.checked.mch
-17 (-26.98%) : 121642.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-0(ushort):ubyte:this (FullOpts)
@@ -3,56 +3,60 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rbp 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; 2 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 -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 5, 3.50) int -> rbx "CSE - aggressive"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
+;* V04 tmp2 [V04,T03] ( 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,T02] ( 2, 2 ) ubyte -> rax "Inline stloc first use temp"
+; V07 cse0 [V07,T01] ( 5, 4.64) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M51339_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rbx, si
- mov edi, ebx
- call [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodBlock(ushort):ubyte]
- test eax, eax
- jne SHORT G_M51339_IG05
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M51339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 81
- je SHORT G_M51339_IG05
- cmp ebx, 82
- je SHORT G_M51339_IG05
- mov edi, ebx
- lea rax, [(reloc)] ; function address
- ;; size=19 bbWeight=0.50 PerfScore 1.62
-G_M51339_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop rbp
- tail.jmp [rax]Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsAccessorBlock(ushort):ubyte
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M51339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M51339_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
+ movzx rax, si
+ lea ecx, [rax-0x4F]
+ cmp ecx, 1
+ jbe SHORT G_M51339_IG06
+ cmp eax, 81
+ je SHORT G_M51339_IG06
+ ;; size=16 bbWeight=1 PerfScore 3.25
+G_M51339_IG03: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 82
+ je SHORT G_M51339_IG06
+ ;; size=5 bbWeight=0.64 PerfScore 0.80
+G_M51339_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add eax, -83
+ cmp eax, 4
+ setbe al
+ movzx rax, al
+ ;; size=12 bbWeight=1 PerfScore 1.75
+G_M51339_IG05: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M51339_IG06: ; bbWeight=0.67, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.67 PerfScore 0.17
+G_M51339_IG07: ; bbWeight=0.67, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.67 PerfScore 1.00
-; Total bytes of code 63, prolog size 8, PerfScore 12.75, instruction count 24, allocated bytes for code 63 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
+; Total bytes of code 46, prolog size 4, PerfScore 9.72, instruction count 19, allocated bytes for code 46 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -60,11 +64,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-32 (-26.89%) : 247715.dasm - System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
@@ -3,66 +3,62 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rbp 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
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 13 ) ref -> rbx this class-hnd single-def <System.Diagnostics.RandomNumberGenerator>
-; V01 loc0 [V01,T05] ( 2, 2 ) long -> r15
-; V02 loc1 [V02,T06] ( 2, 2 ) long -> rsi
+; V00 this [V00,T00] ( 12, 12 ) ref -> rdi this class-hnd single-def <System.Diagnostics.RandomNumberGenerator>
+; V01 loc0 [V01,T07] ( 2, 2 ) long -> rcx
+; V02 loc1 [V02,T08] ( 2, 2 ) long -> rdx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T01] ( 4, 4 ) long -> rax "CSE - aggressive"
-; V05 cse1 [V05,T02] ( 4, 4 ) long -> rdx "CSE - aggressive"
-; V06 cse2 [V06,T03] ( 4, 4 ) long -> rdi "CSE - aggressive"
-; V07 cse3 [V07,T04] ( 3, 3 ) long -> rcx "CSE - aggressive"
+; V04 tmp1 [V04,T04] ( 2, 4 ) long -> rcx "Inlining Arg"
+; V05 tmp2 [V05,T05] ( 2, 4 ) long -> r9 "Inlining Arg"
+; V06 cse0 [V06,T02] ( 4, 4 ) long -> rsi "CSE - aggressive"
+; V07 cse1 [V07,T03] ( 4, 4 ) long -> r9 "CSE - aggressive"
+; V08 cse2 [V08,T01] ( 5, 5 ) long -> rax "CSE - aggressive"
+; V09 cse3 [V09,T06] ( 3, 3 ) long -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
G_M21456_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push rbx
- lea rbp, [rsp+0x10]
- mov rbx, rdi
- ; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 3.75
-G_M21456_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdi, qword ptr [rbx+0x10]
- lea rdi, [rdi+4*rdi]
- mov esi, 7
- call [System.Diagnostics.RandomNumberGenerator:Rol64(ulong,int):ulong]
- lea r15, [rax+8*rax]
- mov rdi, qword ptr [rbx+0x10]
- mov rsi, rdi
- shl rsi, 17
- mov rax, qword ptr [rbx+0x18]
- mov rcx, qword ptr [rbx+0x08]
- xor rax, rcx
- mov qword ptr [rbx+0x18], rax
- mov rdx, rdi
- xor rdx, qword ptr [rbx+0x20]
- mov qword ptr [rbx+0x20], rdx
- xor rdi, rax
- mov qword ptr [rbx+0x10], rdi
- xor rcx, rdx
- mov qword ptr [rbx+0x08], rcx
- xor rsi, rax
- mov qword ptr [rbx+0x18], rsi
- mov rdi, rdx
- mov esi, 45
- call [System.Diagnostics.RandomNumberGenerator:Rol64(ulong,int):ulong]
- mov qword ptr [rbx+0x20], rax
- mov rax, r15
- ;; size=102 bbWeight=1 PerfScore 27.00
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M21456_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdi]
+ mov rax, qword ptr [rdi+0x10]
+ lea rcx, [rax+4*rax]
+ rol rcx, 7
+ lea rcx, [rcx+8*rcx]
+ mov rdx, rax
+ shl rdx, 17
+ mov rsi, qword ptr [rdi+0x18]
+ mov r8, qword ptr [rdi+0x08]
+ xor rsi, r8
+ mov qword ptr [rdi+0x18], rsi
+ mov r9, rax
+ xor r9, qword ptr [rdi+0x20]
+ mov qword ptr [rdi+0x20], r9
+ xor rax, rsi
+ mov qword ptr [rdi+0x10], rax
+ xor r8, r9
+ mov qword ptr [rdi+0x08], r8
+ xor rdx, rsi
+ mov qword ptr [rdi+0x18], rdx
+ rol r9, 45
+ mov qword ptr [rdi+0x20], r9
+ mov rax, rcx
+ ;; size=81 bbWeight=1 PerfScore 19.25
G_M21456_IG03: ; bbWeight=1, epilog, nogc, extend
- pop rbx
- pop r15
pop rbp
ret
- ;; size=5 bbWeight=1 PerfScore 2.50
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 119, prolog size 9, PerfScore 33.25, instruction count 35, allocated bytes for code 119 (MethodHash=0360ac2f) for method System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
+; Total bytes of code 87, prolog size 4, PerfScore 22.00, instruction count 26, allocated bytes for code 87 (MethodHash=0360ac2f) for method System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,11 +66,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-13 (-24.07%) : 49262.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
@@ -3,50 +3,50 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
-; partially interruptible
+; fully 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.50) ushort -> rbx single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V03 cse0 [V03,T01] ( 4, 3.52) int -> rdi "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M52764_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov ebx, edi
- ;; size=10 bbWeight=1 PerfScore 3.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M52764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rdi, bx
- call [Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsReservedKeyword(ushort):ubyte]
- test eax, eax
- jne SHORT G_M52764_IG05
- ;; size=13 bbWeight=1 PerfScore 4.50
-G_M52764_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rdi, bx
- lea rax, [(reloc)] ; function address
- ;; size=10 bbWeight=0.50 PerfScore 0.38
-G_M52764_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop rbp
- tail.jmp [rax]<unknown method>
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M52764_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movzx rdi, di
+ cmp edi, 0x2070
+ jl SHORT G_M52764_IG06
+ ;; size=11 bbWeight=1 PerfScore 1.50
+G_M52764_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp edi, 0x20C0
+ jg SHORT G_M52764_IG06
+ ;; size=8 bbWeight=0.52 PerfScore 0.65
+G_M52764_IG04: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M52764_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
+ ;; size=5 bbWeight=0.48 PerfScore 0.12
+G_M52764_IG05: ; bbWeight=0.48, epilog, nogc, extend
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.48 PerfScore 0.72
+G_M52764_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rax, [(reloc)] ; function address
+ ;; size=7 bbWeight=1 PerfScore 0.50
+G_M52764_IG07: ; bbWeight=1, epilog, nogc, extend
+ pop rbp
+ tail.jmp [rax]<unknown method>
+ ;; size=4 bbWeight=1 PerfScore 2.50
-; Total bytes of code 54, prolog size 8, PerfScore 11.50, instruction count 20, allocated bytes for code 54 (MethodHash=adac31e3) for method Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
+; Total bytes of code 41, prolog size 4, PerfScore 7.24, instruction count 13, allocated bytes for code 41 (MethodHash=adac31e3) for method Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -54,11 +54,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+19 (+146.15%) : 115454.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
@@ -3,27 +3,47 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; rsp based frame
-; fully interruptible
+; optimized using Synthesized PGO
+; rbp 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 -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> rax "Inline stloc first use temp"
+; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M64956_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M64956_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rdi, di
- lea rax, [(reloc)] ; function address
- ;; size=10 bbWeight=1 PerfScore 0.75
-G_M64956_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [rax]Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementSubOrFunctionKeyword(ushort):ubyte
- ;; size=3 bbWeight=1 PerfScore 2.00
+ push rbp
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M64956_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, di
+ cmp eax, 478
+ je SHORT G_M64956_IG04
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M64956_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
+G_M64956_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M64956_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor eax, eax
+ jmp SHORT G_M64956_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 13, prolog size 0, PerfScore 2.75, instruction count 3, allocated bytes for code 13 (MethodHash=cd320243) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 4, PerfScore 5.65, instruction count 12, allocated bytes for code 32 (MethodHash=cd320243) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -31,8 +51,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+19 (+146.15%) : 115455.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
@@ -3,27 +3,47 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; rsp based frame
-; fully interruptible
+; optimized using Synthesized PGO
+; rbp 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 -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> rax "Inline stloc first use temp"
+; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M11355_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M11355_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rdi, di
- lea rax, [(reloc)] ; function address
- ;; size=10 bbWeight=1 PerfScore 0.75
-G_M11355_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [rax]Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementSubOrFunctionKeyword(ushort):ubyte
- ;; size=3 bbWeight=1 PerfScore 2.00
+ push rbp
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M11355_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, di
+ cmp eax, 478
+ je SHORT G_M11355_IG04
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M11355_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
+G_M11355_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M11355_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor eax, eax
+ jmp SHORT G_M11355_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 13, prolog size 0, PerfScore 2.75, instruction count 3, allocated bytes for code 13 (MethodHash=e166d3a4) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 4, PerfScore 5.65, instruction count 12, allocated bytes for code 32 (MethodHash=e166d3a4) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -31,8 +51,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+19 (+146.15%) : 115456.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
@@ -3,27 +3,47 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
-; rsp based frame
-; fully interruptible
+; optimized using Synthesized PGO
+; rbp 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 -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> rax "Inline stloc first use temp"
+; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M24505_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M24505_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rdi, di
- lea rax, [(reloc)] ; function address
- ;; size=10 bbWeight=1 PerfScore 0.75
-G_M24505_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [rax]Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderSubOrFunctionKeyword(ushort):ubyte
- ;; size=3 bbWeight=1 PerfScore 2.00
+ push rbp
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M24505_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, di
+ cmp eax, 478
+ je SHORT G_M24505_IG04
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M24505_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
+G_M24505_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M24505_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor eax, eax
+ jmp SHORT G_M24505_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 13, prolog size 0, PerfScore 2.75, instruction count 3, allocated bytes for code 13 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 4, PerfScore 5.65, instruction count 12, allocated bytes for code 32 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -31,8 +51,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries.pmi.linux.x64.checked.mch
-36 (-35.64%) : 160925.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
@@ -2,20 +2,23 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 6 ) ref -> rbx this class-hnd single-def <System.Runtime.Serialization.Json.DataContractJsonSerializer>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Runtime.Serialization.Json.DataContractJsonSerializer>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Type>
; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Type]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V06 tmp3 [V06,T04] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
-; V07 tmp4 [V07,T03] ( 3, 5 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Xml.XmlDictionaryString>
+;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Xml.XmlDictionaryString>
+;* V07 tmp4 [V07,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp5 [V08,T03] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Xml.XmlDictionaryString>
;
; Lcl frame size = 24
@@ -35,7 +38,7 @@ G_M25835_IG02: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000
G_M25835_IG03: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
mov gword ptr [rsp+0x08], rdi
;; size=5 bbWeight=1 PerfScore 1.00
-G_M25835_IG04: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M25835_IG04: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x10], edi
mov rdi, rbx
; gcrRegs +[rdi]
@@ -44,42 +47,19 @@ G_M25835_IG04: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000
xor r9d, r9d
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
- xor rdi, rdi
- ; gcrRegs +[rdi]
- call [System.Runtime.Serialization.Json.DataContractJsonSerializer:ConvertXmlNameToJsonName(System.Xml.XmlDictionaryString):System.Xml.XmlDictionaryString]
- ; gcrRegs -[rdi] +[rax]
- lea rdi, bword ptr [rbx+0x30]
- ; byrRegs +[rdi]
- mov rsi, rax
- ; gcrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi]
- ; byrRegs -[rdi]
- mov rdi, gword ptr [rbx+0x30]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M25835_IG06
- ;; size=53 bbWeight=1 PerfScore 13.25
-G_M25835_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rdi+0x10]
- call [System.Runtime.Serialization.Json.DataContractJsonSerializer:CheckIfJsonNameRequiresMapping(System.String):ubyte]
- ; gcrRegs -[rdi]
- jmp SHORT G_M25835_IG07
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M25835_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25835_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov byte ptr [rbx+0x53], al
- ;; size=3 bbWeight=1 PerfScore 1.00
-G_M25835_IG08: ; bbWeight=1, epilog, nogc, extend
+ xor rax, rax
+ ; gcrRegs +[rax]
+ mov gword ptr [rbx+0x30], rax
+ mov byte ptr [rbx+0x53], 0
+ ;; size=34 bbWeight=1 PerfScore 7.25
+G_M25835_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 24
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 101, prolog size 11, PerfScore 25.38, instruction count 31, allocated bytes for code 101 (MethodHash=a1789b14) for method System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
+; Total bytes of code 65, prolog size 11, PerfScore 14.75, instruction count 21, allocated bytes for code 65 (MethodHash=a1789b14) for method System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
; ============================================================
Unwind Info:
-36 (-34.95%) : 160922.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
@@ -2,19 +2,22 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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 -> rbx this class-hnd single-def <System.Runtime.Serialization.Json.DataContractJsonSerializer>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Runtime.Serialization.Json.DataContractJsonSerializer>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Type>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref
;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V05 tmp3 [V05,T03] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
-; V06 tmp4 [V06,T02] ( 3, 5 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Xml.XmlDictionaryString>
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Xml.XmlDictionaryString>
+;* V06 tmp4 [V06,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp5 [V07,T02] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Xml.XmlDictionaryString>
;
; Lcl frame size = 24
@@ -34,7 +37,7 @@ G_M61883_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
G_M61883_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov gword ptr [rsp+0x08], rdi
;; size=5 bbWeight=1 PerfScore 1.00
-G_M61883_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M61883_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x10], edi
mov rdi, rbx
; gcrRegs +[rdi]
@@ -45,42 +48,19 @@ G_M61883_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor r9d, r9d
call [<unknown method>]
; gcrRegs -[rdx rsi rdi]
- xor rdi, rdi
- ; gcrRegs +[rdi]
- call [System.Runtime.Serialization.Json.DataContractJsonSerializer:ConvertXmlNameToJsonName(System.Xml.XmlDictionaryString):System.Xml.XmlDictionaryString]
- ; gcrRegs -[rdi] +[rax]
- lea rdi, bword ptr [rbx+0x30]
- ; byrRegs +[rdi]
- mov rsi, rax
- ; gcrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi]
- ; byrRegs -[rdi]
- mov rdi, gword ptr [rbx+0x30]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M61883_IG06
- ;; size=55 bbWeight=1 PerfScore 13.50
-G_M61883_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rdi+0x10]
- call [System.Runtime.Serialization.Json.DataContractJsonSerializer:CheckIfJsonNameRequiresMapping(System.String):ubyte]
- ; gcrRegs -[rdi]
- jmp SHORT G_M61883_IG07
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M61883_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M61883_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov byte ptr [rbx+0x53], al
- ;; size=3 bbWeight=1 PerfScore 1.00
-G_M61883_IG08: ; bbWeight=1, epilog, nogc, extend
+ xor rax, rax
+ ; gcrRegs +[rax]
+ mov gword ptr [rbx+0x30], rax
+ mov byte ptr [rbx+0x53], 0
+ ;; size=36 bbWeight=1 PerfScore 7.50
+G_M61883_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 24
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 103, prolog size 11, PerfScore 25.62, instruction count 32, allocated bytes for code 103 (MethodHash=cc760e44) for method System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
+; Total bytes of code 67, prolog size 11, PerfScore 15.00, instruction count 22, allocated bytes for code 67 (MethodHash=cc760e44) for method System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
; ============================================================
Unwind Info:
-15 (-31.25%) : 32594.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
@@ -2,49 +2,50 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
-; partially interruptible
+; fully 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.50) int -> rbx single-def
+; V00 arg0 [V00,T00] ( 6, 4.74) int -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M20897_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- mov ebx, edi
- ;; size=10 bbWeight=1 PerfScore 3.75
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M20897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov edi, ebx
- call [System.Data.ExpressionNode:IsFloat(int):ubyte]
- test eax, eax
- jne SHORT G_M20897_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M20897_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov edi, ebx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M20897_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
+ cmp edi, 13
+ je SHORT G_M20897_IG06
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M20897_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp edi, 14
+ je SHORT G_M20897_IG06
+ ;; size=5 bbWeight=0.80 PerfScore 1.00
+G_M20897_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp edi, 15
+ je SHORT G_M20897_IG06
+ ;; size=5 bbWeight=0.42 PerfScore 0.52
+G_M20897_IG05: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
tail.jmp [System.Data.ExpressionNode:IsInteger(int):ubyte]
- ;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M20897_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcr arg pop 0
+ ;; size=7 bbWeight=0.52 PerfScore 1.30
+G_M20897_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M20897_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
+ ;; size=5 bbWeight=0.48 PerfScore 0.12
+G_M20897_IG07: ; bbWeight=0.48, epilog, nogc, extend
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.48 PerfScore 0.72
-; Total bytes of code 48, prolog size 8, PerfScore 11.25, instruction count 19, allocated bytes for code 48 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
+; Total bytes of code 33, prolog size 4, PerfScore 6.16, instruction count 13, allocated bytes for code 33 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -52,11 +53,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+23 (+255.56%) : 125124.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
@@ -2,27 +2,47 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
-; fully interruptible
+; optimized using Synthesized PGO
+; rbp 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 -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> rax "Inline stloc first use temp"
+; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M24505_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M24505_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rdi, di
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M24505_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderSubOrFunctionKeyword(ushort):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=1 PerfScore 2.00
+ push rbp
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M24505_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, di
+ cmp eax, 478
+ je SHORT G_M24505_IG04
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M24505_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
+G_M24505_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+G_M24505_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor eax, eax
+ jmp SHORT G_M24505_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 9, prolog size 0, PerfScore 2.25, instruction count 2, allocated bytes for code 9 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 32, prolog size 4, PerfScore 5.65, instruction count 12, allocated bytes for code 32 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -30,8 +50,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+32 (+320.00%) : 117674.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,30 +2,52 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
-; fully interruptible
+; optimized using Synthesized PGO
+; rbp 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 -> rsi class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.43) ushort -> rax "Inlining Arg"
;
; Lcl frame size = 0
G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M28613_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ push rbp
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M28613_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- movzx rdi, word ptr [rsi+0x0C]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=1 PerfScore 2.00
+ movzx rax, word ptr [rsi+0x0C]
+ cmp eax, 677
+ je SHORT G_M28613_IG05
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M28613_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ cmp eax, 652
+ je SHORT G_M28613_IG05
+ ;; size=7 bbWeight=0.80 PerfScore 1.00
+G_M28613_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 678
+ sete al
+ movzx rax, al
+ jmp SHORT G_M28613_IG06
+ ;; size=13 bbWeight=0.42 PerfScore 1.46
+G_M28613_IG05: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.58 PerfScore 0.15
+G_M28613_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 10, prolog size 0, PerfScore 4.00, instruction count 2, allocated bytes for code 10 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 42, prolog size 4, PerfScore 8.60, instruction count 14, allocated bytes for code 42 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -33,8 +55,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+32 (+320.00%) : 117680.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,30 +2,52 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
-; fully interruptible
+; optimized using Synthesized PGO
+; rbp 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 -> rsi class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.43) ushort -> rax "Inlining Arg"
;
; Lcl frame size = 0
G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
-G_M39608_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ push rbp
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M39608_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- movzx rdi, word ptr [rsi+0x0C]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=1 PerfScore 2.00
+ movzx rax, word ptr [rsi+0x0C]
+ cmp eax, 677
+ je SHORT G_M39608_IG05
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M39608_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ cmp eax, 652
+ je SHORT G_M39608_IG05
+ ;; size=7 bbWeight=0.80 PerfScore 1.00
+G_M39608_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 678
+ sete al
+ movzx rax, al
+ jmp SHORT G_M39608_IG06
+ ;; size=13 bbWeight=0.42 PerfScore 1.46
+G_M39608_IG05: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.58 PerfScore 0.15
+G_M39608_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 10, prolog size 0, PerfScore 4.00, instruction count 2, allocated bytes for code 10 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 42, prolog size 4, PerfScore 8.60, instruction count 14, allocated bytes for code 42 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -33,8 +55,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
libraries_tests.run.linux.x64.Release.mch
-10 (-16.39%) : 54879.dasm - (dynamicClass):InvokeStub_ValueTypeWithoutOverrides.GetId(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
@@ -16,6 +18,7 @@
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06,T01] ( 3, 6 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V08 cse0 [V08,T02] ( 3, 2.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -25,18 +28,17 @@ G_M43347_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 1.25
G_M43347_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rsi, 0xD1FFAB1E ; System.Reflection.Tests.ValueTypeWithoutOverrides
- cmp qword ptr [rbx], rsi
+ mov rdi, 0xD1FFAB1E ; System.Reflection.Tests.ValueTypeWithoutOverrides
+ cmp qword ptr [rbx], rdi
je SHORT G_M43347_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M43347_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M43347_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; System.Reflection.Tests.ValueTypeWithoutOverrides
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M43347_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
@@ -50,7 +52,7 @@ G_M43347_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 61, prolog size 1, PerfScore 12.12, instruction count 14, allocated bytes for code 61 (MethodHash=622856ac) for method (dynamicClass):InvokeStub_ValueTypeWithoutOverrides.GetId(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
+; Total bytes of code 51, prolog size 1, PerfScore 12.88, instruction count 13, allocated bytes for code 51 (MethodHash=622856ac) for method (dynamicClass):InvokeStub_ValueTypeWithoutOverrides.GetId(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
-7 (-14.00%) : 54924.dasm - (dynamicClass):InvokeStub_ValueTypeWithOverrides.ToString(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
@@ -2,18 +2,21 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 4, 3.25) ref -> rdi class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 4, 3.50) ref -> rdi class-hnd single-def <System.Object>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
;* V03 arg3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Object>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V06 cse0 [V06,T01] ( 3, 2.50) long -> rax "CSE - aggressive"
;
; Lcl frame size = 8
@@ -22,19 +25,19 @@ G_M21640_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=1 bbWeight=1 PerfScore 1.00
G_M21640_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E ; System.Reflection.Tests.ValueTypeWithOverrides
- cmp qword ptr [rdi], rsi
+ mov rax, 0xD1FFAB1E ; System.Reflection.Tests.ValueTypeWithOverrides
+ cmp qword ptr [rdi], rax
je SHORT G_M21640_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M21640_IG03: ; bbWeight=0.25, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M21640_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rsi, rdi
; gcrRegs +[rsi]
- mov rdi, 0xD1FFAB1E ; System.Reflection.Tests.ValueTypeWithOverrides
+ mov rdi, rax
; gcrRegs -[rdi]
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rsi]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=12 bbWeight=0.50 PerfScore 1.75
G_M21640_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
@@ -44,7 +47,7 @@ G_M21640_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 50, prolog size 1, PerfScore 7.62, instruction count 10, allocated bytes for code 50 (MethodHash=b7baab77) for method (dynamicClass):InvokeStub_ValueTypeWithOverrides.ToString(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
+; Total bytes of code 43, prolog size 1, PerfScore 8.50, instruction count 10, allocated bytes for code 43 (MethodHash=b7baab77) for method (dynamicClass):InvokeStub_ValueTypeWithOverrides.ToString(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
-45 (-12.26%) : 15201.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
@@ -9,93 +9,85 @@
; 5 inlinees with PGO data; 10 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 5.94) ref -> rbx class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 8, 4.31) ref -> r15 class-hnd single-def <System.String>
-; V02 loc0 [V02,T09] ( 4, 1.26) int -> r13
-; V03 loc1 [V03,T17] ( 3, 0.94) int -> rdi
-; V04 loc2 [V04,T05] ( 5, 1.57) ref -> r12 class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T00] ( 9, 6.71) ref -> rbx class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 11, 6.03) ref -> r15 class-hnd single-def <System.String>
+; V02 loc0 [V02,T12] ( 4, 1.77) int -> r14
+; V03 loc1 [V03,T13] ( 3, 1.20) int -> rdi
+; V04 loc2 [V04,T03] ( 7, 4.00) ref -> r13 class-hnd exact single-def <System.String>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp2 [V07,T19] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
+; V07 tmp2 [V07,T16] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
;* V08 tmp3 [V08,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp9 [V14,T06] ( 3, 1.57) byref -> rdi single-def "Inlining Arg"
-; V15 tmp10 [V15,T07] ( 3, 1.57) byref -> rsi single-def "Inlining Arg"
-; V16 tmp11 [V16,T12] ( 2, 1.26) long -> rdx "Inlining Arg"
-; V17 tmp12 [V17,T04] ( 3, 1.89) long -> rdx "spilling arg"
+; V14 tmp9 [V14,T05] ( 3, 2.86) byref -> rdi single-def "Inlining Arg"
+; V15 tmp10 [V15,T06] ( 3, 2.86) byref -> rsi single-def "Inlining Arg"
+; V16 tmp11 [V16,T10] ( 2, 2.29) long -> rdx "Inlining Arg"
+; V17 tmp12 [V17,T04] ( 3, 3.43) long -> rdx "spilling arg"
;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp14 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V23 tmp18 [V23,T10] ( 3, 1.26) byref -> rdi single-def "Inlining Arg"
-; V24 tmp19 [V24,T11] ( 3, 1.26) byref -> rsi single-def "Inlining Arg"
-; V25 tmp20 [V25,T13] ( 2, 1.26) long -> rdx "Inlining Arg"
-; V26 tmp21 [V26,T08] ( 3, 1.57) long -> rdx "spilling arg"
-; V27 cse0 [V27,T18] ( 3, 0.94) int -> [rbp-0x2C] spill-single-def "CSE - conservative"
-; V28 cse1 [V28,T16] ( 3, 0.94) byref -> [rbp-0x38] spill-single-def "CSE - conservative"
-; V29 cse2 [V29,T03] ( 11, 2.83) ref -> rsi multi-def "CSE - aggressive"
-; V30 cse3 [V30,T02] ( 7, 2.94) int -> r14 multi-def "CSE - aggressive"
+; V23 tmp18 [V23,T08] ( 3, 2.29) byref -> rdi single-def "Inlining Arg"
+; V24 tmp19 [V24,T09] ( 3, 2.29) byref -> rsi single-def "Inlining Arg"
+; V25 tmp20 [V25,T11] ( 2, 2.29) long -> rdx "Inlining Arg"
+; V26 tmp21 [V26,T07] ( 3, 2.86) long -> rdx "spilling arg"
+; V27 cse0 [V27,T02] ( 11, 4.46) ref -> rsi multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 0
G_M34819_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
- push r12
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x40]
+ lea rbp, [rsp+0x20]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=25 bbWeight=1 PerfScore 7.25
+ ;; size=19 bbWeight=1 PerfScore 6.00
G_M34819_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test rbx, rbx
- je G_M34819_IG21
+ je G_M34819_IG23
;; size=9 bbWeight=1 PerfScore 1.25
G_M34819_IG03: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x08], 0
- je G_M34819_IG21
+ je G_M34819_IG23
;; size=10 bbWeight=1.00 PerfScore 3.99
G_M34819_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
je SHORT G_M34819_IG06
;; size=5 bbWeight=1 PerfScore 1.25
G_M34819_IG05: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov r14d, dword ptr [r15+0x08]
- test r14d, r14d
- jne SHORT G_M34819_IG12
- ;; size=9 bbWeight=1.00 PerfScore 3.24
+ cmp dword ptr [r15+0x08], 0
+ jne SHORT G_M34819_IG11
+ ;; size=7 bbWeight=1.00 PerfScore 3.99
G_M34819_IG06: ; bbWeight=0.69, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
mov rax, rbx
; gcrRegs +[rax]
;; size=3 bbWeight=0.69 PerfScore 0.17
G_M34819_IG07: ; bbWeight=0.69, epilog, nogc, extend
- add rsp, 24
pop rbx
- pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.69 PerfScore 2.91
-G_M34819_IG08: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=9 bbWeight=0.69 PerfScore 2.40
+G_M34819_IG08: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[r15]
call <unknown method>
; gcrRegs +[rax]
- mov r12, rax
- ; gcrRegs +[r12]
- test r12, r12
+ mov r13, rax
+ ; gcrRegs +[r13]
+ test r13, r13
jne SHORT G_M34819_IG09
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -103,162 +95,145 @@ G_M34819_IG08: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=800
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
- ;; size=32 bbWeight=0.31 PerfScore 1.89
-G_M34819_IG09: ; bbWeight=0.31, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.57 PerfScore 3.43
+G_M34819_IG09: ; bbWeight=0.57, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbx+0x08]
- mov eax, dword ptr [r12+0x08]
- mov dword ptr [rbp-0x2C], eax
- cmp edi, eax
- jle SHORT G_M34819_IG10
+ cmp edi, dword ptr [r13+0x08]
+ jle SHORT G_M34819_IG13
+ ;; size=9 bbWeight=0.57 PerfScore 3.43
+G_M34819_IG10: ; bbWeight=0.46, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M34819_IG12
+ ;; size=2 bbWeight=0.46 PerfScore 0.91
+G_M34819_IG11: ; bbWeight=0.31, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r13]
+ mov r14d, dword ptr [rbx+0x08]
+ mov edi, r14d
+ add edi, dword ptr [r15+0x08]
+ js G_M34819_IG28
+ jmp SHORT G_M34819_IG08
+ ;; size=19 bbWeight=0.31 PerfScore 2.59
+G_M34819_IG12: ; bbWeight=0.46, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r13]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- ;; size=34 bbWeight=0.31 PerfScore 3.06
-G_M34819_IG10: ; bbWeight=0.31, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [r12+0x0C]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x38], rcx
- ; GC ptr vars +{V28}
- mov rdi, rcx
+ ;; size=19 bbWeight=0.46 PerfScore 1.60
+G_M34819_IG13: ; bbWeight=0.57, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ lea rdi, bword ptr [r13+0x0C]
; byrRegs +[rdi]
lea rsi, bword ptr [rbx+0x0C]
; byrRegs +[rsi]
mov edx, dword ptr [rbx+0x08]
add rdx, rdx
cmp rdx, 2
- jne SHORT G_M34819_IG14
- ;; size=28 bbWeight=0.31 PerfScore 1.81
-G_M34819_IG11: ; bbWeight=0.16, gcVars=0000000000010000 {V28}, gcrefRegs=9000 {r12 r15}, byrefRegs=00C0 {rsi rdi}, gcvars, byref, isz
+ jne SHORT G_M34819_IG15
+ ;; size=20 bbWeight=0.57 PerfScore 2.57
+G_M34819_IG14: ; bbWeight=0.29, gcrefRegs=A000 {r13 r15}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[rbx]
- ; byrRegs -[rcx]
- jmp SHORT G_M34819_IG13
- ;; size=2 bbWeight=0.16 PerfScore 0.31
-G_M34819_IG12: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r12] +[rbx]
- ; byrRegs -[rsi rdi]
- ; GC ptr vars -{V28}
- mov r13d, dword ptr [rbx+0x08]
- lea edi, [r14+r13]
- test edi, edi
- jl G_M34819_IG26
- jmp SHORT G_M34819_IG08
- ;; size=18 bbWeight=0.31 PerfScore 1.81
-G_M34819_IG13: ; bbWeight=0.16, gcVars=0000000000010000 {V28}, gcrefRegs=9000 {r12 r15}, byrefRegs=00C0 {rsi rdi}, gcvars, byref, isz
- ; gcrRegs -[rbx] +[r12]
- ; byrRegs +[rsi rdi]
- ; GC ptr vars +{V16 V28}
movzx rdx, word ptr [rsi]
mov word ptr [rdi], dx
- jmp SHORT G_M34819_IG15
- ;; size=8 bbWeight=0.16 PerfScore 0.79
-G_M34819_IG14: ; bbWeight=0.31, gcrefRegs=9000 {r12 r15}, byrefRegs=00C0 {rsi rdi}, byref
+ jmp SHORT G_M34819_IG16
+ ;; size=8 bbWeight=0.29 PerfScore 1.43
+G_M34819_IG15: ; bbWeight=0.57, gcrefRegs=A000 {r13 r15}, byrefRegs=00C0 {rsi rdi}, byref
call [<unknown method>]
; byrRegs -[rsi rdi]
- ;; size=6 bbWeight=0.31 PerfScore 0.94
-G_M34819_IG15: ; bbWeight=0.31, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
- mov ebx, dword ptr [rbp-0x2C]
- sub ebx, r13d
- cmp ebx, r14d
- jge SHORT G_M34819_IG16
+ ;; size=6 bbWeight=0.57 PerfScore 1.71
+G_M34819_IG16: ; bbWeight=0.57, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [r15+0x08]
+ mov esi, dword ptr [r13+0x08]
+ sub esi, r14d
+ cmp edi, esi
+ jle SHORT G_M34819_IG18
+ ;; size=15 bbWeight=0.57 PerfScore 3.14
+G_M34819_IG17: ; bbWeight=0.46, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- ;; size=30 bbWeight=0.31 PerfScore 1.89
-G_M34819_IG16: ; bbWeight=0.31, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref, isz
- movsxd rdi, r13d
- mov rbx, bword ptr [rbp-0x38]
- ; byrRegs +[rbx]
- lea rdi, bword ptr [rbx+2*rdi]
+ ;; size=19 bbWeight=0.46 PerfScore 1.60
+G_M34819_IG18: ; bbWeight=0.57, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
+ movsxd rdi, r14d
+ lea rdi, bword ptr [r13+2*rdi+0x0C]
; byrRegs +[rdi]
lea rsi, bword ptr [r15+0x0C]
; byrRegs +[rsi]
- mov edx, r14d
+ mov edx, dword ptr [r15+0x08]
add rdx, rdx
cmp rdx, 2
- jne SHORT G_M34819_IG18
- ;; size=27 bbWeight=0.31 PerfScore 1.26
-G_M34819_IG17: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=1000 {r12}, byrefRegs=00C0 {rsi rdi}, gcvars, byref, isz
+ jne SHORT G_M34819_IG20
+ ;; size=25 bbWeight=0.57 PerfScore 3.57
...
+37 (+15.88%) : 776.dasm - System.IO.PathInternal:RemoveRelativeSegments(System.String,int):System.String (Instrumented Tier1)
@@ -6,94 +6,88 @@
; rbp based frame
; partially interruptible
; with Static PGO: edge weights are invalid, and fgCalledCount is 50121
-; 2 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
+; 2 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 6.03) ref -> rbx class-hnd <System.String>
-; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx single-def
-; V02 loc0 [V02 ] ( 7, 6.03) struct (32) [rbp-0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
+; V00 arg0 [V00,T00] ( 7, 4.03) ref -> rbx class-hnd <System.String>
+; V01 arg1 [V01,T01] ( 3, 3 ) int -> r15 single-def
+; V02 loc0 [V02 ] ( 7, 6.03) struct (32) [rbp-0x40] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp3 [V07,T03] ( 2, 4 ) long -> rdi "Inlining Arg"
+; V07 tmp3 [V07,T02] ( 2, 4 ) long -> rdi "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp6 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp7 [V11,T04] ( 2, 4 ) int -> rsi "Inlining Arg"
-; V12 tmp8 [V12,T02] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
-;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V14 tmp10 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp11 [V15,T07] ( 3, 2.04) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling ret_expr" <System.Buffers.SharedArrayPool`1[ushort]>
-;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V19 tmp15 [V19,T08] ( 2, 2 ) byref -> rdi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V20 tmp16 [V20,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V23 tmp19 [V23,T05] ( 3, 3 ) byref -> rdi "field V08._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp20 [V24,T06] ( 3, 3 ) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
-; V25 tmp21 [V25,T09] ( 2, 2 ) byref -> rdi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-; V26 tmp22 [V26,T10] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
-;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V28 tmp24 [V28 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V29 GsCookie [V29 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V11 tmp7 [V11,T09] ( 2, 0.00) int -> r13 "Inlining Arg"
+; V12 tmp8 [V12,T08] ( 2, 0.00) byref -> r14 single-def "Inlining Arg"
+; V13 tmp9 [V13,T03] ( 3, 2.04) ref -> rsi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling ret_expr" <System.Buffers.SharedArrayPool`1[ushort]>
+;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
+; V17 tmp13 [V17,T04] ( 2, 2 ) byref -> rdi single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V18 tmp14 [V18,T07] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V21 tmp17 [V21,T05] ( 3, 1.00) byref -> rdi "field V08._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp18 [V22,T06] ( 3, 1.00) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
+; V23 tmp19 [V23,T10] ( 2, 0.00) byref -> rdi single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp20 [V24,T11] ( 2, 0.00) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
+; V27 GsCookie [V27 ] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "GSSecurityCookie"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M22543_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push r15
+ push r14
+ push r13
push rbx
- sub rsp, 40
+ sub rsp, 48
vzeroupper
- lea rbp, [rsp+0x30]
- xor eax, eax
- mov qword ptr [rbp-0x28], rax
+ lea rbp, [rsp+0x50]
vxorps xmm8, xmm8, xmm8
- vmovdqa xmmword ptr [rbp-0x20], xmm8
- mov qword ptr [rbp-0x10], rax
+ vmovdqu ymmword ptr [rbp-0x40], ymm8
mov rax, 0xD1FFAB1E
- mov qword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x48], rax
mov rbx, rdi
; gcrRegs +[rbx]
- mov edx, esi
- ;; size=53 bbWeight=1 PerfScore 10.08
-G_M22543_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov r15d, esi
+ ;; size=50 bbWeight=1 PerfScore 10.83
+G_M22543_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test dword ptr [rsp], esp
sub rsp, 528
lea rdi, [rsp]
- mov bword ptr [rbp-0x18], rdi
- mov dword ptr [rbp-0x10], 260
+ mov bword ptr [rbp-0x30], rdi
+ mov dword ptr [rbp-0x28], 260
xor edi, edi
- mov dword ptr [rbp-0x20], edi
+ mov dword ptr [rbp-0x38], edi
test rbx, rbx
- jne SHORT G_M22543_IG03
+ jne G_M22543_IG11
+ ;; size=39 bbWeight=1 PerfScore 8.25
+G_M22543_IG03: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
xor rdi, rdi
; byrRegs +[rdi]
xor esi, esi
- jmp SHORT G_M22543_IG04
- ;; size=41 bbWeight=1 PerfScore 10.75
-G_M22543_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
- lea rdi, bword ptr [rbx+0x0C]
- ; byrRegs +[rdi]
- mov esi, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=1 PerfScore 2.50
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
G_M22543_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
- lea rcx, [rbp-0x28]
+ lea rcx, [rbp-0x40]
+ mov edx, r15d
call [<unknown method>]
; byrRegs -[rdi]
test eax, eax
jne SHORT G_M22543_IG10
- ;; size=14 bbWeight=1 PerfScore 4.75
+ ;; size=17 bbWeight=1 PerfScore 5.00
G_M22543_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- mov rsi, gword ptr [rbp-0x28]
+ mov rsi, gword ptr [rbp-0x40]
; gcrRegs +[rsi]
vxorps ymm0, ymm0, ymm0
- vmovdqu ymmword ptr [rbp-0x28], ymm0
+ vmovdqu ymmword ptr [rbp-0x40], ymm0
test rsi, rsi
jne SHORT G_M22543_IG09
;; size=33 bbWeight=1 PerfScore 4.83
@@ -102,7 +96,7 @@ G_M22543_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov rax, rbx
; gcrRegs +[rax]
mov rdi, 0xD1FFAB1E
- cmp qword ptr [rbp-0x30], rdi
+ cmp qword ptr [rbp-0x48], rdi
je SHORT G_M22543_IG07
call CORINFO_HELP_FAIL_FAST
; gcrRegs -[rax rbx]
@@ -112,11 +106,14 @@ G_M22543_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M22543_IG08: ; bbWeight=1, epilog, nogc, extend
- lea rsp, [rbp-0x08]
+ lea rsp, [rbp-0x20]
pop rbx
+ pop r13
+ pop r14
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.50
+ ;; size=13 bbWeight=1 PerfScore 4.00
G_M22543_IG09: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx rsi]
mov rdi, 0xD1FFAB1E ; const ptr
@@ -131,15 +128,28 @@ G_M22543_IG10: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rbx]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- lea rdi, [rbp-0x28]
+ lea rdi, [rbp-0x40]
call [System.Text.ValueStringBuilder:ToString():System.String:this]
; gcrRegs +[rax]
mov rbx, rax
; gcrRegs +[rbx]
jmp SHORT G_M22543_IG05
;; size=30 bbWeight=0.03 PerfScore 0.18
+G_M22543_IG11: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ lea r14, bword ptr [rbx+0x0C]
+ ; byrRegs +[r14]
+ mov r13d, dword ptr [rbx+0x08]
+ mov edi, 1
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Debug:Assert(ubyte)
+ call [rax]System.Diagnostics.Debug:Assert(ubyte)
+ mov rdi, r14
+ ; byrRegs +[rdi]
+ mov esi, r13d
+ jmp G_M22543_IG04
+ ;; size=36 bbWeight=0.00 PerfScore 0.01
-; Total bytes of code 233, prolog size 48, PerfScore 40.68, instruction count 60, allocated bytes for code 233 (MethodHash=075ba7f0) for method System.IO.PathInternal:RemoveRelativeSegments(System.String,int):System.String (Instrumented Tier1)
+; Total bytes of code 270, prolog size 44, PerfScore 38.19, instruction count 69, allocated bytes for code 270 (MethodHash=075ba7f0) for method System.IO.PathInternal:RemoveRelativeSegments(System.String,int):System.String (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -147,12 +157,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0E
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x14
+ CountOfUnwindCodes: 7
FrameRegister : rbp (5)
- FrameOffset : 3 * 16 = 0x30
+ FrameOffset : 5 * 16 = 0x50
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_SET_FPREG (3) OpInfo: Unused (0)
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x14 UnwindOp: UWOP_SET_FPREG (3) OpInfo: Unused (0)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+14 (+16.09%) : 43197.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Instrumented Tier1)
@@ -5,8 +5,8 @@
; optimized using Static PGO
; rbp based frame
; partially interruptible
-; with Static PGO: edge weights are valid, and fgCalledCount is 66684
-; 1 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
+; with Static PGO: edge weights are invalid, and fgCalledCount is 66684
+; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 5 ) ref -> rbx class-hnd single-def <System.String>
@@ -15,72 +15,73 @@
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp5 [V06,T02] ( 2, 4 ) int -> rdi "Inlining Arg"
-; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> rax single-def "Inlining Arg"
-;* V08 tmp7 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp9 [V10,T03] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
-;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp13 [V14,T04] ( 2, 2 ) byref -> rax single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp14 [V15,T06] ( 2, 2 ) int -> rdi "field V03._length (fldOffset=0x8)" P-INDEP
-; V16 tmp15 [V16,T05] ( 2, 2 ) byref -> rax single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T07] ( 2, 2 ) int -> rdi "field V04._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+; V06 tmp5 [V06,T02] ( 2, 4 ) int -> rbx "Inlining Arg"
+; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> r15 single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp11 [V12,T04] ( 2, 2 ) byref -> r15 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp12 [V13,T06] ( 2, 2 ) int -> rbx "field V03._length (fldOffset=0x8)" P-INDEP
+; V14 tmp13 [V14,T05] ( 2, 2 ) byref -> r15 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T07] ( 2, 2 ) int -> rbx "field V04._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M54468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push r15
push rbx
- push rax
lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M54468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
je SHORT G_M54468_IG04
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- lea rax, bword ptr [rbx+0x0C]
- ; byrRegs +[rax]
- mov edi, dword ptr [rbx+0x08]
- test edi, edi
- jle SHORT G_M54468_IG06
- cmp word ptr [rax], 47
- sete al
- ; byrRegs -[rax]
- movzx rax, al
- ;; size=41 bbWeight=1 PerfScore 10.50
-G_M54468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ lea r15, bword ptr [rbx+0x0C]
+ ; byrRegs +[r15]
+ mov ebx, dword ptr [rbx+0x08]
; gcrRegs -[rbx]
- add rsp, 8
+ mov edi, 1
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Debug:Assert(ubyte)
+ call [rax]System.Diagnostics.Debug:Assert(ubyte)
+ test ebx, ebx
+ jle SHORT G_M54468_IG06
+ xor eax, eax
+ cmp word ptr [r15], 47
+ sete al
+ ;; size=58 bbWeight=1 PerfScore 14.00
+G_M54468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[r15]
pop rbx
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=5 bbWeight=1 PerfScore 2.50
G_M54468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
xor eax, eax
;; size=17 bbWeight=0 PerfScore 0.00
G_M54468_IG05: ; bbWeight=0, epilog, nogc, extend
- add rsp, 8
pop rbx
+ pop r15
pop rbp
ret
- ;; size=7 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0 PerfScore 0.00
G_M54468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
xor eax, eax
jmp SHORT G_M54468_IG03
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 87, prolog size 8, PerfScore 16.50, instruction count 29, allocated bytes for code 87 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Instrumented Tier1)
+; Total bytes of code 101, prolog size 9, PerfScore 20.25, instruction count 32, allocated bytes for code 101 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -88,11 +89,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x03
+ SizeOfProlog : 0x04
CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+43 (+16.54%) : 76370.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
@@ -9,55 +9,58 @@
; 4 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 5.40) ref -> rbx class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 9, 4.26) ref -> r15 class-hnd single-def <System.String>
-; V02 loc0 [V02,T10] ( 3, 0.40) int -> r14
-; V03 loc1 [V03,T11] ( 3, 0.40) int -> rdi
-; V04 loc2 [V04,T05] ( 6, 0.80) ref -> r13 class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T00] ( 6, 5.08) ref -> rbx class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 9, 4.35) ref -> r15 class-hnd single-def <System.String>
+; V02 loc0 [V02,T10] ( 3, 0.48) int -> r13
+; V03 loc1 [V03,T11] ( 3, 0.48) int -> rdi
+; V04 loc2 [V04,T03] ( 6, 1.31) ref -> r12 class-hnd exact single-def <System.String>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V06 tmp1 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V07 tmp2 [V07,T12] ( 2, 0 ) ubyte -> rax "Inline return value spill temp"
-;* V08 tmp3 [V08,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp3 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp9 [V14,T07] ( 3, 0.53) byref -> rdi single-def "Inlining Arg"
-; V15 tmp10 [V15,T08] ( 3, 0.53) byref -> rsi single-def "Inlining Arg"
-; V16 tmp11 [V16,T09] ( 2, 0.53) long -> rdx "Inlining Arg"
-; V17 tmp12 [V17,T06] ( 3, 0.66) long -> rdx "spilling arg"
-; V18 cse0 [V18,T04] ( 8, 0.80) ref -> rsi multi-def "CSE - conservative"
+; V14 tmp9 [V14,T07] ( 3, 0.87) byref -> rdi single-def "Inlining Arg"
+; V15 tmp10 [V15,T08] ( 3, 0.87) byref -> rsi single-def "Inlining Arg"
+; V16 tmp11 [V16,T09] ( 2, 0.87) long -> rdx "Inlining Arg"
+; V17 tmp12 [V17,T04] ( 3, 1.09) long -> rdx "spilling arg"
+; V18 cse0 [V18,T02] ( 5, 2.56) int -> r14 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M34819_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- lea rbp, [rsp+0x20]
+ push rax
+ lea rbp, [rsp+0x30]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=19 bbWeight=1 PerfScore 6.00
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M34819_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test rbx, rbx
- je G_M34819_IG15
+ je G_M34819_IG18
;; size=9 bbWeight=1 PerfScore 1.25
G_M34819_IG03: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- cmp dword ptr [rbx+0x08], 0
- je G_M34819_IG15
- ;; size=10 bbWeight=1.00 PerfScore 3.99
+ mov r14d, dword ptr [rbx+0x08]
+ test r14d, r14d
+ je G_M34819_IG18
+ ;; size=13 bbWeight=1.00 PerfScore 3.24
G_M34819_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
je SHORT G_M34819_IG06
;; size=5 bbWeight=1 PerfScore 1.25
G_M34819_IG05: ; bbWeight=1.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r15+0x08], 0
- jne SHORT G_M34819_IG08
+ jne SHORT G_M34819_IG11
;; size=7 bbWeight=1.00 PerfScore 3.99
G_M34819_IG06: ; bbWeight=0.87, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
@@ -65,127 +68,142 @@ G_M34819_IG06: ; bbWeight=0.87, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcrRegs +[rax]
;; size=3 bbWeight=0.87 PerfScore 0.22
G_M34819_IG07: ; bbWeight=0.87, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.87 PerfScore 3.03
-G_M34819_IG08: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=15 bbWeight=0.87 PerfScore 3.69
+G_M34819_IG08: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[r15]
- mov r14d, dword ptr [rbx+0x08]
- mov edi, r14d
- add edi, dword ptr [r15+0x08]
- js G_M34819_IG20
call <unknown method>
; gcrRegs +[rax]
- mov r13, rax
- ; gcrRegs +[r13]
- test r13, r13
+ mov r12, rax
+ ; gcrRegs +[r12]
+ test r12, r12
jne SHORT G_M34819_IG09
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
- ;; size=49 bbWeight=0.13 PerfScore 1.63
-G_M34819_IG09: ; bbWeight=0.13, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rbx+0x08]
- cmp edi, dword ptr [r13+0x08]
- jle SHORT G_M34819_IG10
+ ;; size=39 bbWeight=0.22 PerfScore 1.31
+G_M34819_IG09: ; bbWeight=0.22, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [r12+0x08], r14d
+ jge SHORT G_M34819_IG13
+ ;; size=7 bbWeight=0.22 PerfScore 0.87
+G_M34819_IG10: ; bbWeight=0.17, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M34819_IG12
+ ;; size=2 bbWeight=0.17 PerfScore 0.35
+G_M34819_IG11: ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r12]
+ mov r13d, r14d
+ mov edi, r13d
+ add edi, dword ptr [r15+0x08]
+ js G_M34819_IG23
+ jmp SHORT G_M34819_IG08
+ ;; size=18 bbWeight=0.13 PerfScore 0.86
+G_M34819_IG12: ; bbWeight=0.17, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r12]
+ mov rdi, 0xD1FFAB1E
+ ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
- ;; size=28 bbWeight=0.13 PerfScore 1.26
-G_M34819_IG10: ; bbWeight=0.13, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [r13+0x0C]
+ ;; size=26 bbWeight=0.17 PerfScore 0.61
+G_M34819_IG13: ; bbWeight=0.22, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
+ lea rdi, bword ptr [r12+0x0C]
; byrRegs +[rdi]
lea rsi, bword ptr [rbx+0x0C]
; byrRegs +[rsi]
- mov edx, dword ptr [rbx+0x08]
+ mov edx, r14d
add rdx, rdx
cmp rdx, 2
- jne SHORT G_M34819_IG12
- ;; size=20 bbWeight=0.13 PerfScore 0.60
-G_M34819_IG11: ; bbWeight=0.07, gcrefRegs=A000 {r13 r15}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ jne SHORT G_M34819_IG15
+ ;; size=21 bbWeight=0.22 PerfScore 0.60
+G_M34819_IG14: ; bbWeight=0.11, gcrefRegs=9000 {r12 r15}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs -[rbx]
movzx rdx, word ptr [rsi]
mov word ptr [rdi], dx
- jmp SHORT G_M34819_IG13
- ;; size=8 bbWeight=0.07 PerfScore 0.33
-G_M34819_IG12: ; bbWeight=0.07, gcrefRegs=A000 {r13 r15}, byrefRegs=00C0 {rsi rdi}, byref
+ jmp SHORT G_M34819_IG16
+ ;; size=8 bbWeight=0.11 PerfScore 0.54
+G_M34819_IG15: ; bbWeight=0.11, gcrefRegs=9000 {r12 r15}, byrefRegs=00C0 {rsi rdi}, byref
call [<unknown method>]
; byrRegs -[rsi rdi]
- ;; size=6 bbWeight=0.07 PerfScore 0.20
-G_M34819_IG13: ; bbWeight=0.13, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
- mov rdi, r13
+ ;; size=6 bbWeight=0.11 PerfScore 0.33
+G_M34819_IG16: ; bbWeight=0.22, gcrefRegs=9000 {r12 r15}, byrefRegs=0000 {}, byref
+ mov rdi, r12
; gcrRegs +[rdi]
- mov esi, r14d
+ mov esi, r13d
mov rdx, r15
; gcrRegs +[rdx]
call [System.String:CopyStringContent(System.String,int,System.String)]
; gcrRegs -[rdx rdi r15]
- mov rax, r13
+ mov rax, r12
; gcrRegs +[rax]
- ;; size=18 bbWeight=0.13 PerfScore 0.53
-G_M34819_IG14: ; bbWeight=0.13, epilog, nogc, extend
+ ;; size=18 bbWeight=0.22 PerfScore 0.87
+G_M34819_IG17: ; bbWeight=0.22, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.13 PerfScore 0.47
-G_M34819_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax r13] +[r15]
+ ;; size=15 bbWeight=0.22 PerfScore 0.93
+G_M34819_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax r12] +[r15]
test r15, r15
- je SHORT G_M34819_IG16
+ je SHORT G_M34819_IG19
xor eax, eax
cmp dword ptr [r15+0x08], 0
sete al
test eax, eax
- je SHORT G_M34819_IG18
+ je SHORT G_M34819_IG21
;; size=19 bbWeight=0 PerfScore 0.00
-G_M34819_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M34819_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- mov rax, rsi
+ mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M34819_IG17: ; bbWeight=0, epilog, nogc, extend
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M34819_IG20: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M34819_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax rsi] +[r15]
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M34819_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[r15]
mov rax, r15
; gcrRegs +[rax]
...
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-48 (-88.89%) : 91542.dasm - System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
@@ -2,62 +2,35 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rbp based frame
+; optimized using Synthesized PGO
+; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 3 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
+; 4 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.ConfigurationTests.UrlPathTests>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 2, 4 ) ref -> rsi class-hnd exact single-def "dup spill" <System.String>
-; V04 tmp2 [V04,T01] ( 5, 3.50) ref -> rsi
-;* V05 tmp3 [V05,T02] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
-;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
+;* V06 tmp4 [V06,T00] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M24905_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbp
- mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M24905_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- xor rdi, rdi
- ; gcrRegs +[rdi]
- call [System.IO.Path:GetDirectoryName(System.String):System.String]
- ; gcrRegs -[rdi] +[rax]
- mov rsi, rax
- ; gcrRegs +[rsi]
- test rsi, rsi
- jne SHORT G_M24905_IG04
- ;; size=16 bbWeight=1 PerfScore 4.75
-G_M24905_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi]
- xor rsi, rsi
- ; gcrRegs +[rsi]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M24905_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test rsi, rsi
- jne SHORT G_M24905_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M24905_IG05: ; bbWeight=1, epilog, nogc, extend
- pop rbp
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M24905_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ add rsp, 8
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
-G_M24905_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
- mov rdi, 0xD1FFAB1E ; <unknown method>
- call [<unknown method>]
- ; gcrRegs -[rsi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rax rdi]
- int3
- ;; size=25 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 54, prolog size 4, PerfScore 8.88, instruction count 17, allocated bytes for code 54 (MethodHash=38fc9eb6) for method System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
+; Total bytes of code 6, prolog size 1, PerfScore 2.25, instruction count 3, allocated bytes for code 6 (MethodHash=38fc9eb6) for method System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,4 +43,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-43 (-87.76%) : 182427.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
@@ -2,10 +2,12 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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,295 +56,284 @@
;* 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V50 tmp49 [V50 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V64 tmp63 [V64 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V71 tmp70 [V71 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V78 tmp77 [V78 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V85 tmp84 [V85 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V92 tmp91 [V92 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V99 tmp98 [V99 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V106 tmp105 [V106 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V113 tmp112 [V113 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V120 tmp119 [V120 ] ( 0, 0 ) struct ( 8) 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 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 ) long -> zero-ref "Inlining Arg"
;* V125 tmp124 [V125 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V126 tmp125 [V126 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V127 tmp126 [V127 ] ( 0, 0 ) struct ( 8) 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 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 ) long -> zero-ref "Inlining Arg"
;* V132 tmp131 [V132 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V133 tmp132 [V133 ] ( 0, 0 ) struct ( 8) 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 ( 8) 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 ] ( 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 ] ( 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,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V227 tmp226 [V227,T16] ( 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,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP
-;* V233 tmp232 [V233,T18] ( 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,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP
-;* V239 tmp238 [V239,T20] ( 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,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP
-;* V245 tmp244 [V245,T22] ( 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,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP
-;* V251 tmp250 [V251,T24] ( 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,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP
-;* V257 tmp256 [V257,T26] ( 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,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.hasValue (fldOffset=0x0)" P-INDEP
-;* V263 tmp262 [V263,T28] ( 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
...
-43 (-87.76%) : 182424.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
@@ -2,10 +2,12 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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,253 +56,242 @@
;* V43 tmp42 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Reflection.Metadata.EntityHandle>
;* V44 tmp43 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V45 tmp44 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V48 tmp47 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V49 tmp48 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V50 tmp49 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V51 tmp50 [V51 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V52 tmp51 [V52 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V55 tmp54 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp55 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V58 tmp57 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V59 tmp58 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V62 tmp61 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V63 tmp62 [V63 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V64 tmp63 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V65 tmp64 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V66 tmp65 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V69 tmp68 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V70 tmp69 [V70 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V71 tmp70 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V72 tmp71 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V73 tmp72 [V73 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V76 tmp75 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V77 tmp76 [V77 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V78 tmp77 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V79 tmp78 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V80 tmp79 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V83 tmp82 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V84 tmp83 [V84 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V85 tmp84 [V85 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V86 tmp85 [V86 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V87 tmp86 [V87 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V90 tmp89 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V91 tmp90 [V91 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V92 tmp91 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V93 tmp92 [V93 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V94 tmp93 [V94 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V97 tmp96 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V98 tmp97 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V99 tmp98 [V99 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V100 tmp99 [V100 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V101 tmp100 [V101 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V104 tmp103 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V105 tmp104 [V105 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V106 tmp105 [V106 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V107 tmp106 [V107 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V108 tmp107 [V108 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V113 tmp112 [V113 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V114 tmp113 [V114 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V115 tmp114 [V115 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V120 tmp119 [V120 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V121 tmp120 [V121 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V122 tmp121 [V122 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V127 tmp126 [V127 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V128 tmp127 [V128 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V129 tmp128 [V129 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V134 tmp133 [V134 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V135 tmp134 [V135 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V140 tmp139 [V140 ] ( 0, 0 ) int -> zero-ref single-def "field V02._vToken (fldOffset=0x0)" P-INDEP
-;* V141 tmp140 [V141 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V05._vToken (fldOffset=0x0)" P-INDEP
-;* V144 tmp143 [V144 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V08._vToken (fldOffset=0x0)" P-INDEP
-;* V147 tmp146 [V147 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V11._vToken (fldOffset=0x0)" P-INDEP
-;* V150 tmp149 [V150 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V14._vToken (fldOffset=0x0)" P-INDEP
-;* V153 tmp152 [V153 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V17._vToken (fldOffset=0x0)" P-INDEP
-;* V156 tmp155 [V156 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V20._vToken (fldOffset=0x0)" P-INDEP
-;* V159 tmp158 [V159 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V23._vToken (fldOffset=0x0)" P-INDEP
-;* V162 tmp161 [V162 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V26._vToken (fldOffset=0x0)" P-INDEP
-;* V165 tmp164 [V165 ] ( 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,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V185 tmp184 [V185,T16] ( 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,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP
-;* V191 tmp190 [V191,T18] ( 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,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP
-;* V197 tmp196 [V197,T20] ( 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,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP
-;* V203 tmp202 [V203,T22] ( 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,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP
-;* V209 tmp208 [V209,T24] ( 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,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP
-;* V215 tmp214 [V215,T26] ( 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,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.hasValue (fldOffset=0x0)" P-INDEP
-;* V221 tmp220 [V221,T28] ( 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,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.hasValue (fldOffset=0x0)" P-INDEP
-;* V227 tmp226 [V227,T30] ( 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,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.hasValue (fldOffset=0x0)" P-INDEP
-;* V233 tmp232 [V233,T32] ( 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,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.hasValue (fldOffset=0x0)" P-INDEP
-;* V239 tmp238 [V239,T34] ( 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,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.hasValue (fldOffset=0x0)" P-INDEP
-;* V245 tmp244 [V245,T36] ( 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,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.hasValue (fldOffset=0x0)" P-INDEP
-;* V251 tmp250 [V251,T38] ( 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,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V133.hasValue (fldOffset=0x0)" P-INDEP
-;* V257 tmp256 [V257,T40] ( 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,T41] ( 0, 0 ) ubyte -> zero-ref single-def "field V139.hasValue (fldOffset=0x0)" P-INDEP
-;* V261 tmp260 [V261,T42] ( 0, 0 ) ubyte -> zero-ref single-def "field V139.value (fldOffset=0x1)" P-INDEP
-; V262 tmp261 [V262,T00] ( 4, 8 ) struct ( 8) [rbp-0x08] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;* V134 tmp133 [V134 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
+;* V135 tmp134 [V135 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
...
+47 (+51.09%) : 39292.dasm - Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider:DoesConsoleSupportAnsi():ubyte (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; 2 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 3, 2.50) ref -> rax class-hnd exact single-def <System.String>
+; V00 loc0 [V00,T00] ( 6, 3.27) ref -> rax class-hnd exact single-def <System.String>
;* V01 loc1 [V01 ] ( 0, 0 ) long -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref do-not-enreg[X] addr-exposed ld-addr-op
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -16,18 +18,17 @@
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V06 tmp3 [V06,T03] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V08 tmp5 [V08,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V08 tmp5 [V08,T05] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Runtime.InteropServices.OSPlatform>
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
-;* V12 tmp9 [V12,T04] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-;* V13 tmp10 [V13,T05] ( 0, 0 ) int -> zero-ref "Single return block return value"
+;* V12 tmp9 [V12,T02] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V13 tmp10 [V13,T06] ( 0, 0 ) int -> zero-ref "Single return block return value"
; V14 FramesRoot [V14,T01] ( 1, 1 ) long -> [rbp-0x30] "Pinvoke FrameListRoot"
; V15 PInvokeFrame [V15 ] ( 4, 4 ) struct (72) [rbp-0x78] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref "field V04.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
-;* V17 tmp14 [V17,T06] ( 0, 0 ) ref -> zero-ref single-def "field V09.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
+;* V17 tmp14 [V17,T04] ( 0, 0 ) ref -> zero-ref single-def "field V09.<Name>k__BackingField (fldOffset=0x0)" P-INDEP
;* V18 tmp15 [V18 ] ( 0, 0 ) long -> zero-ref "argument with side effect"
-;* V19 cse0 [V19,T02] ( 0, 0 ) int -> zero-ref "CSE - moderate"
;
; Lcl frame size = 88
@@ -54,16 +55,35 @@ G_M65116_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [System.Environment:GetEnvironmentVariableCore(System.String):System.String]
; gcrRegs -[rdi] +[rax]
test rax, rax
- je SHORT G_M65116_IG04
+ je SHORT G_M65116_IG07
;; size=47 bbWeight=1 PerfScore 8.75
-G_M65116_IG03: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- mov eax, dword ptr [rax+0x08]
+G_M65116_IG03: ; bbWeight=0.52, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rax+0x08], 1
+ je SHORT G_M65116_IG06
+ ;; size=6 bbWeight=0.52 PerfScore 2.08
+G_M65116_IG04: ; bbWeight=0.42, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rax+0x08], 4
+ jne SHORT G_M65116_IG07
+ ;; size=6 bbWeight=0.42 PerfScore 1.66
+G_M65116_IG05: ; bbWeight=0.21, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ or rcx, qword ptr [rax+0x0C]
+ mov rax, 0xD1FFAB1E
+ ; gcrRegs -[rax]
+ cmp rcx, rax
+ jne SHORT G_M65116_IG07
+ jmp SHORT G_M65116_IG07
+ ;; size=31 bbWeight=0.21 PerfScore 1.40
+G_M65116_IG06: ; bbWeight=0.13, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax]
+ cmp word ptr [rax+0x0C], 49
+ jne SHORT G_M65116_IG04
+ ;; size=7 bbWeight=0.13 PerfScore 0.52
+G_M65116_IG07: ; bbWeight=0.84, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M65116_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
- ;; size=5 bbWeight=1 PerfScore 0.25
-G_M65116_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=5 bbWeight=0.84 PerfScore 0.21
+G_M65116_IG08: ; bbWeight=0.84, epilog, nogc, extend
add rsp, 88
pop rbx
pop r12
@@ -72,9 +92,9 @@ G_M65116_IG05: ; bbWeight=1, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
+ ;; size=15 bbWeight=0.84 PerfScore 3.56
-; Total bytes of code 92, prolog size 22, PerfScore 21.00, instruction count 29, allocated bytes for code 92 (MethodHash=3f3601a3) for method Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider:DoesConsoleSupportAnsi():ubyte (FullOpts)
+; Total bytes of code 139, prolog size 22, PerfScore 24.94, instruction count 40, allocated bytes for code 139 (MethodHash=3f3601a3) for method Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider:DoesConsoleSupportAnsi():ubyte (FullOpts)
; ============================================================
Unwind Info:
+14 (+58.33%) : 34930.dasm - LamarCodeGeneration.Util.ImHashMap2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap
2+Entry[System.Canon,System.Canon]:this (FullOpts)
@@ -2,46 +2,66 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
-; rsp based frame
+; optimized using Synthesized PGO
+; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 3.50) ref -> rdi this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.50) int -> rsi single-def
+; V00 this [V00,T00] ( 6, 4.38) ref -> rdi this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 4, 3.80) int -> rsi single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T03] ( 3, 1.50) ref -> rax "CSE - moderate"
-; V04 cse1 [V04,T02] ( 3, 2.50) ref -> rax "CSE - aggressive"
;
; Lcl frame size = 0
G_M5528_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbp
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M5528_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rax, gword ptr [rdi+0x08]
; gcrRegs +[rax]
cmp dword ptr [rax+0x08], esi
- je SHORT G_M5528_IG05
+ je SHORT G_M5528_IG08
;; size=9 bbWeight=1 PerfScore 6.00
-G_M5528_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M5528_IG03: ; bbWeight=0.80, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rax, gword ptr [rdi+0x10]
; gcrRegs +[rax]
- xor rcx, rcx
- ; gcrRegs +[rcx]
cmp dword ptr [rax+0x08], esi
- cmovne rax, rcx
- ;; size=13 bbWeight=0.50 PerfScore 2.75
-G_M5528_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ je SHORT G_M5528_IG06
+ ;; size=9 bbWeight=0.80 PerfScore 4.80
+G_M5528_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.42 PerfScore 0.10
+G_M5528_IG05: ; bbWeight=0.42, epilog, nogc, extend
+ pop rbp
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M5528_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx rdi]
+ ;; size=2 bbWeight=0.42 PerfScore 0.62
+G_M5528_IG06: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rdi]
+ mov rax, gword ptr [rdi+0x10]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0.38 PerfScore 0.77
+G_M5528_IG07: ; bbWeight=0.38, epilog, nogc, extend
+ pop rbp
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=0.38 PerfScore 0.58
+G_M5528_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0.20 PerfScore 0.40
+G_M5528_IG09: ; bbWeight=0.20, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.20 PerfScore 0.30
-; Total bytes of code 24, prolog size 0, PerfScore 9.75, instruction count 9, allocated bytes for code 24 (MethodHash=4203ea67) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
+; Total bytes of code 38, prolog size 4, PerfScore 14.82, instruction count 17, allocated bytes for code 38 (MethodHash=4203ea67) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -49,8 +69,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+20 (+60.61%) : 92850.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
@@ -2,13 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
-; fully interruptible
+; 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 -> rdi single-def
+; V00 arg0 [V00,T00] ( 7, 6.22) int -> rdi single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 1.27) ubyte -> rax "Inline return value spill temp"
;
; Lcl frame size = 0
@@ -21,22 +25,38 @@ G_M19192_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ja SHORT G_M19192_IG03
mov eax, 0x55F
bt eax, edi
- jae SHORT G_M19192_IG04
+ jae SHORT G_M19192_IG08
;; size=15 bbWeight=1 PerfScore 3.00
-G_M19192_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbp
- tail.jmp [System.Data.ExpressionNode:IsFloat(int):ubyte]
- ; gcr arg pop 0
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M19192_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19192_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp edi, 13
+ je SHORT G_M19192_IG06
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M19192_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp edi, 14
+ je SHORT G_M19192_IG06
+ ;; size=5 bbWeight=0.80 PerfScore 1.00
+G_M19192_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ xor eax, eax
+ cmp edi, 15
+ sete al
+ jmp SHORT G_M19192_IG07
+ ;; size=10 bbWeight=0.42 PerfScore 1.46
+G_M19192_IG06: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M19192_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=5 bbWeight=0.58 PerfScore 0.15
+G_M19192_IG07: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=2 bbWeight=0.27 PerfScore 0.40
+G_M19192_IG08: ; bbWeight=0.73, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.73 PerfScore 0.18
+G_M19192_IG09: ; bbWeight=0.73, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.73 PerfScore 1.10
-; Total bytes of code 33, prolog size 4, PerfScore 6.38, instruction count 12, allocated bytes for code 33 (MethodHash=62adb507) for method System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
+; Total bytes of code 53, prolog size 4, PerfScore 9.79, instruction count 21, allocated bytes for code 53 (MethodHash=62adb507) for method System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
realworld.run.linux.x64.checked.mch
-14 (-20.29%) : 18849.dasm - System.Text.RegularExpressions.RegexNode:g_CanJoinLengthCheck|600(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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 -> rdi class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T03] ( 3, 2 ) ubyte -> rax
-; V02 loc1 [V02,T02] ( 3, 2.50) ubyte -> rax
+; V00 arg0 [V00,T00] ( 5, 4.18) ref -> rdi class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T03] ( 3, 1.60) ubyte -> rax
+; V02 loc1 [V02,T02] ( 3, 2.09) ubyte -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 rat0 [V05,T01] ( 3, 6 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
@@ -26,52 +28,40 @@ G_M17774_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
movzx rax, byte ptr [rdi+0x2E]
lea ecx, [rax-0x03]
cmp ecx, 9
- ja SHORT G_M17774_IG03
- mov eax, ecx
- lea rcx, [reloc @RWD00]
- mov ecx, dword ptr [rcx+4*rax]
- lea rdx, G_M17774_IG02
- add rcx, rdx
- jmp rcx
- ;; size=36 bbWeight=1 PerfScore 9.75
-G_M17774_IG03: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- mov eax, 1
- jmp SHORT G_M17774_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M17774_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdi]
+ ja SHORT G_M17774_IG07
+ mov eax, 63
+ bt eax, ecx
+ jae SHORT G_M17774_IG06
+ ;; size=22 bbWeight=1 PerfScore 5.50
+G_M17774_IG03: ; bbWeight=0.59, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rdi+0x20]
cmp eax, dword ptr [rdi+0x24]
- je SHORT G_M17774_IG04
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M17774_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M17774_IG06
+ ;; size=8 bbWeight=0.59 PerfScore 3.53
+G_M17774_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17774_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.33 PerfScore 0.08
+G_M17774_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-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
+G_M17774_IG06: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi]
+ 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=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ jmp SHORT G_M17774_IG04
+ ;; size=2 bbWeight=0.05 PerfScore 0.09
-
-; Total bytes of code 69, prolog size 4, PerfScore 18.50, instruction count 24, allocated bytes for code 69 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 12.71, instruction count 21, allocated bytes for code 55 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
; ============================================================
Unwind Info:
-32 (-18.93%) : 23944.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsTransitivelyOn(int,int):ubyte:this (FullOpts)
@@ -2,38 +2,33 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; fully 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,T12] ( 4, 3.50) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer>
-; V01 arg1 [V01,T08] ( 3, 6 ) int -> rsi single-def
-; V02 arg2 [V02,T11] ( 3, 4 ) int -> rdx single-def
-; V03 loc0 [V03,T03] ( 6, 19 ) int -> rax
+; V00 this [V00,T09] ( 4, 3.59) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer>
+; V01 arg1 [V01,T07] ( 3, 51.05) int -> rsi single-def
+; V02 arg2 [V02,T08] ( 3, 14.75) int -> rdx single-def
+; V03 loc0 [V03,T03] ( 6,226.29) int -> rax
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V06 tmp2 [V06,T00] ( 8, 56 ) ref -> r8 "MD array shared temp"
-; V07 tmp3 [V07,T01] ( 6, 36 ) int -> r10 "MD array shared temp"
-; V08 tmp4 [V08,T02] ( 6, 36 ) int -> r14 "MD array shared temp"
-; V09 cse0 [V09,T09] ( 3, 6.50) ref -> rdi hoist "CSE - aggressive"
-; V10 cse1 [V10,T10] ( 3, 6 ) ref -> rcx "CSE - aggressive"
-; V11 cse2 [V11,T04] ( 5, 16 ) int -> rbx "CSE - aggressive"
-; V12 cse3 [V12,T05] ( 3, 10 ) int -> r9 "CSE - aggressive"
-; V13 cse4 [V13,T06] ( 3, 10 ) int -> r11 "CSE - aggressive"
-; V14 cse5 [V14,T07] ( 3, 10 ) int -> r15 "CSE - aggressive"
+; V06 tmp2 [V06,T00] ( 11,716.08) ref -> r8 "MD array shared temp"
+; V07 tmp3 [V07,T01] ( 6,370.79) int -> r9 "MD array shared temp"
+; V08 tmp4 [V08,T02] ( 6,370.79) int -> r11 "MD array shared temp"
+; V09 cse0 [V09,T05] ( 3, 62.39) ref -> rdi hoist "CSE - aggressive"
+; V10 cse1 [V10,T06] ( 3, 56.50) ref -> rcx "CSE - aggressive"
+; V11 cse2 [V11,T04] ( 5,172.64) int -> r10 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M32314_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push r14
- push rbx
- push rax
- lea rbp, [rsp+0x20]
- ;; size=12 bbWeight=1 PerfScore 5.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M32314_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
xor eax, eax
@@ -42,83 +37,72 @@ G_M32314_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
cmp dword ptr [rcx+0x08], 0
jle SHORT G_M32314_IG07
;; size=12 bbWeight=1 PerfScore 6.25
-G_M32314_IG03: ; bbWeight=0.50, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
+G_M32314_IG03: ; bbWeight=0.59, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rdi+0x50]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M32314_IG04: ; bbWeight=4, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.59 PerfScore 1.19
+G_M32314_IG04: ; bbWeight=49.05, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
mov r8, rdi
; gcrRegs +[r8]
- mov r9d, dword ptr [r8+0x18]
- mov r10d, esi
- sub r10d, r9d
- mov r11d, dword ptr [r8+0x10]
- cmp r10d, r11d
+ mov r9d, esi
+ sub r9d, dword ptr [r8+0x18]
+ cmp r9d, dword ptr [r8+0x10]
jae SHORT G_M32314_IG11
- mov ebx, dword ptr [r8+0x14]
- imul r10d, ebx
- mov r15d, dword ptr [r8+0x1C]
- mov r14d, eax
- sub r14d, r15d
- cmp r14d, ebx
+ mov r10d, dword ptr [r8+0x14]
+ imul r9d, r10d
+ mov r11d, eax
+ sub r11d, dword ptr [r8+0x1C]
+ cmp r11d, r10d
jae SHORT G_M32314_IG11
- add r10d, r14d
- test byte ptr [r8+4*r10+0x20], 16
+ add r11d, r9d
+ mov r9d, r11d
+ test byte ptr [r8+4*r9+0x20], 16
je SHORT G_M32314_IG06
- ;; size=56 bbWeight=4 PerfScore 72.00
-G_M32314_IG05: ; bbWeight=2, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=50 bbWeight=49.05 PerfScore 1005.45
+G_M32314_IG05: ; bbWeight=12.75, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
mov r8, rdi
; gcrRegs +[r8]
- mov r10d, eax
- sub r10d, r9d
- cmp r10d, r11d
+ mov r9d, eax
+ sub r9d, dword ptr [r8+0x18]
+ cmp r9d, dword ptr [r8+0x10]
jae SHORT G_M32314_IG11
- mov r9d, r10d
- imul r9d, ebx
- mov r14d, edx
- sub r14d, r15d
- cmp r14d, ebx
+ imul r9d, r10d
+ mov r11d, edx
+ sub r11d, dword ptr [r8+0x1C]
+ cmp r11d, r10d
jae SHORT G_M32314_IG11
- add r9d, r14d
+ add r9d, r11d
test byte ptr [r8+4*r9+0x20], 16
jne SHORT G_M32314_IG09
- ;; size=43 bbWeight=2 PerfScore 20.50
-G_M32314_IG06: ; bbWeight=4, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=43 bbWeight=12.75 PerfScore 232.72
+G_M32314_IG06: ; bbWeight=54.50, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
inc eax
cmp dword ptr [rcx+0x08], eax
jg SHORT G_M32314_IG04
- ;; size=7 bbWeight=4 PerfScore 17.00
-G_M32314_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=7 bbWeight=54.50 PerfScore 231.61
+G_M32314_IG07: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rdi]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M32314_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
+ ;; size=2 bbWeight=0.68 PerfScore 0.17
+G_M32314_IG08: ; bbWeight=0.68, epilog, nogc, extend
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M32314_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=2 bbWeight=0.68 PerfScore 1.02
+G_M32314_IG09: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M32314_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
+ ;; size=5 bbWeight=0.32 PerfScore 0.08
+G_M32314_IG10: ; bbWeight=0.32, epilog, nogc, extend
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=2 bbWeight=0.32 PerfScore 0.48
G_M32314_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 169, prolog size 12, PerfScore 125.75, instruction count 61, allocated bytes for code 169 (MethodHash=4a3a81c5) for method Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsTransitivelyOn(int,int):ubyte:this (FullOpts)
+; Total bytes of code 137, prolog size 4, PerfScore 1480.22, instruction count 46, allocated bytes for code 137 (MethodHash=4a3a81c5) for method Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsTransitivelyOn(int,int):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -126,13 +110,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-34 (-17.00%) : 824.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
@@ -2,145 +2,147 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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,T05] ( 10, 7.50) byref -> rbx single-def
-; V01 arg1 [V01,T02] ( 5, 11.50) int -> rsi single-def
-; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> rcx single-def
-; V03 loc0 [V03,T01] ( 8, 15.50) long -> r15
-; V04 loc1 [V04,T00] ( 16, 41 ) int -> r14
+; V00 arg0 [V00,T03] ( 9, 7.15) byref -> rdi single-def
+; V01 arg1 [V01,T02] ( 5, 46.11) int -> rsi single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> rdx single-def
+; V03 loc0 [V03,T01] ( 8, 79.06) long -> rax
+; V04 loc1 [V04,T00] ( 19,233.48) int -> rcx
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 3, 3 ) byref -> rdi single-def "dup spill"
-; V07 tmp2 [V07,T11] ( 2, 2 ) long -> rdi "dup spill"
+; V06 tmp1 [V06,T09] ( 3, 0.78) byref -> rcx single-def "dup spill"
+; V07 tmp2 [V07,T08] ( 3, 0.84) long -> rdx "dup spill"
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V09 tmp4 [V09,T10] ( 2, 2 ) byref -> r15 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V11 tmp6 [V11,T08] ( 2, 4 ) long -> r15 "Cast away GC"
-; V12 cse0 [V12,T06] ( 3, 8.50) int -> rax "CSE - aggressive"
-; V13 cse1 [V13,T03] ( 4, 10.50) int -> rdi "CSE - aggressive"
-; V14 cse2 [V14,T04] ( 3, 10 ) int -> rdi "CSE - aggressive"
+;* V09 tmp4 [V09,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V10 tmp5 [V10,T06] ( 3, 2.52) ubyte -> rsi "Inline stloc first use temp"
+; V11 tmp6 [V11,T07] ( 2, 2 ) byref -> rax single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T05] ( 2, 4 ) long -> rax "Cast away GC"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M4398_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push r15
- push r14
- push rbx
- push rax
- lea rbp, [rsp+0x20]
- mov rbx, rdi
- ; byrRegs +[rbx]
- mov ecx, edx
- ;; size=17 bbWeight=1 PerfScore 6.00
-G_M4398_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov r15, bword ptr [rbx+0x10]
- ; byrRegs +[r15]
- xor r14d, r14d
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M4398_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ ; byrRegs +[rdi]
+ mov rax, bword ptr [rdi+0x10]
+ ; byrRegs +[rax]
+ xor ecx, ecx
jmp SHORT G_M4398_IG04
- ;; size=9 bbWeight=1 PerfScore 4.25
-G_M4398_IG03: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[r15]
- inc r14d
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M4398_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp r14d, esi
+ ;; size=8 bbWeight=1 PerfScore 4.25
+G_M4398_IG03: ; bbWeight=17.05, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ ; byrRegs -[rax]
+ inc ecx
+ ;; size=2 bbWeight=17.05 PerfScore 4.26
+G_M4398_IG04: ; bbWeight=42.11, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ cmp ecx, esi
jge SHORT G_M4398_IG06
- ;; size=5 bbWeight=8 PerfScore 10.00
-G_M4398_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- movsxd rdx, r14d
- cmp byte ptr [r15+rdx], 0
+ ;; size=4 bbWeight=42.11 PerfScore 52.63
+G_M4398_IG05: ; bbWeight=37.89, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ movsxd r8, ecx
+ cmp byte ptr [rax+r8], 0
jne SHORT G_M4398_IG03
- ;; size=10 bbWeight=4 PerfScore 17.00
-G_M4398_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp r14d, esi
- jne SHORT G_M4398_IG13
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M4398_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- movzx rdx, byte ptr [rbx+0x0A]
- movzx rcx, cl
- mov rdi, r15
- call [System.Number:<RoundNumber>g__ShouldRoundUp|121_0(ulong,int,ubyte,ubyte):ubyte]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M4398_IG13
- jmp SHORT G_M4398_IG09
- ;; size=22 bbWeight=0.50 PerfScore 4.38
-G_M4398_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- mov r14d, edi
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M4398_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- test r14d, r14d
- jle SHORT G_M4398_IG11
- lea edi, [r14-0x01]
- movsxd rax, edi
- movzx rax, byte ptr [r15+rax]
- cmp eax, 57
- je SHORT G_M4398_IG08
- ;; size=22 bbWeight=4 PerfScore 21.00
-G_M4398_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- movsxd rdi, edi
- add rdi, r15
- inc eax
- mov byte ptr [rdi], al
- jmp SHORT G_M4398_IG14
- ;; size=12 bbWeight=0.50 PerfScore 1.88
-G_M4398_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- lea rdi, bword ptr [rbx+0x04]
- ; byrRegs +[rdi]
- inc dword ptr [rdi]
- mov byte ptr [r15], 49
- mov r14d, 1
+ ;; size=10 bbWeight=37.89 PerfScore 161.05
+G_M4398_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ cmp ecx, esi
+ jne SHORT G_M4398_IG14
+ movsxd rsi, esi
+ movzx rsi, byte ptr [rax+rsi]
+ xor r8d, r8d
+ test esi, esi
+ sete r8b
+ movzx rdx, dl
+ or edx, r8d
+ jne SHORT G_M4398_IG14
+ ;; size=29 bbWeight=1 PerfScore 6.50
+G_M4398_IG07: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ cmp esi, 53
+ jl SHORT G_M4398_IG14
+ ;; size=5 bbWeight=0.52 PerfScore 0.65
+G_M4398_IG08: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ jmp SHORT G_M4398_IG10
+ ;; size=2 bbWeight=0.79 PerfScore 1.58
+G_M4398_IG09: ; bbWeight=4.61, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ dec ecx
+ ;; size=2 bbWeight=4.61 PerfScore 1.15
+G_M4398_IG10: ; bbWeight=11.39, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ test ecx, ecx
+ jle SHORT G_M4398_IG22
+ ;; size=4 bbWeight=11.39 PerfScore 14.23
+G_M4398_IG11: ; bbWeight=10.25, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ lea edx, [rcx-0x01]
+ movsxd rdx, edx
+ cmp byte ptr [rax+rdx], 57
+ je SHORT G_M4398_IG09
+ ;; size=12 bbWeight=10.25 PerfScore 48.67
+G_M4398_IG12: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ lea edx, [rcx-0x01]
+ movsxd rdx, edx
+ add rdx, rax
+ inc byte ptr [rdx]
jmp SHORT G_M4398_IG16
- ;; size=18 bbWeight=0.50 PerfScore 3.38
-G_M4398_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rdi]
- mov r14d, edi
- ;; size=3 bbWeight=2 PerfScore 0.50
-G_M4398_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- test r14d, r14d
- jle SHORT G_M4398_IG14
- lea edi, [r14-0x01]
- movsxd rax, edi
- cmp byte ptr [r15+rax], 48
- je SHORT G_M4398_IG12
- ;; size=19 bbWeight=4 PerfScore 24.00
-G_M4398_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- test r14d, r14d
- jne SHORT G_M4398_IG16
- cmp byte ptr [rbx+0x0A], 3
- je SHORT G_M4398_IG15
- mov byte ptr [rbx+0x08], 0
- ;; size=15 bbWeight=0.50 PerfScore 3.12
-G_M4398_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- xor edi, edi
- mov dword ptr [rbx+0x04], edi
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M4398_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- movsxd rdi, r14d
- mov byte ptr [r15+rdi], 0
- mov dword ptr [rbx], r14d
- mov rdi, rbx
- ; byrRegs +[rdi]
+ ;; size=13 bbWeight=0.14 PerfScore 0.84
+G_M4398_IG13: ; bbWeight=12.44, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ dec ecx
+ ;; size=2 bbWeight=12.44 PerfScore 3.11
+G_M4398_IG14: ; bbWeight=30.72, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ test ecx, ecx
+ jle SHORT G_M4398_IG16
+ ;; size=4 bbWeight=30.72 PerfScore 38.40
+G_M4398_IG15: ; bbWeight=27.65, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ lea edx, [rcx-0x01]
+ movsxd rdx, edx
+ cmp byte ptr [rax+rdx], 48
+ je SHORT G_M4398_IG13
+ ;; size=12 bbWeight=27.65 PerfScore 131.33
+G_M4398_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ test ecx, ecx
+ jne SHORT G_M4398_IG20
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M4398_IG17: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ cmp byte ptr [rdi+0x0A], 3
+ je SHORT G_M4398_IG19
+ ;; size=6 bbWeight=0.80 PerfScore 3.20
+G_M4398_IG18: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov byte ptr [rdi+0x08], 0
+ ;; size=4 bbWeight=0.42 PerfScore 0.42
+G_M4398_IG19: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ xor edx, edx
+ mov dword ptr [rdi+0x04], edx
+ ;; size=5 bbWeight=0.80 PerfScore 1.00
+G_M4398_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ movsxd rdx, ecx
+ mov byte ptr [rax+rdx], 0
+ mov dword ptr [rdi], ecx
call [<unknown method>]
- ; byrRegs -[rbx rdi]
+ ; byrRegs -[rdi]
; gcr arg pop 0
nop
- ;; size=21 bbWeight=1 PerfScore 5.75
-G_M4398_IG17: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
- pop rbx
- pop r14
- pop r15
+ ;; size=16 bbWeight=1 PerfScore 5.50
+G_M4398_IG21: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=2 bbWeight=1 PerfScore 1.50
...
+44 (+23.53%) : 19747.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:GetLValueAnnotations(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (FullOpts)
@@ -2,28 +2,32 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
-; 0 inlinees with PGO data; 8 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
-; V01 arg1 [V01,T00] ( 6, 4 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 loc0 [V02,T04] ( 4, 1.75) ref -> rdi class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundPropertyAccess>
-; V03 loc1 [V03,T05] ( 4, 1.75) ref -> rax class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess>
-; V04 loc2 [V04,T06] ( 4, 1.75) ref -> rcx class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
-; V05 loc3 [V05,T03] ( 4, 2 ) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
-; V06 loc4 [V06,T02] ( 6, 3 ) int -> rax
-; V07 loc5 [V07,T07] ( 4, 1.75) ref -> rsi class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundParameter>
+; V00 this [V00,T03] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
+; V01 arg1 [V01,T01] ( 6, 4.23) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 loc0 [V02,T04] ( 4, 2.38) ref -> rdi class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundPropertyAccess>
+; V03 loc1 [V03,T07] ( 4, 2.01) ref -> rax class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess>
+; V04 loc2 [V04,T09] ( 4, 1.04) ref -> rcx class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
+; V05 loc3 [V05,T06] ( 4, 2.12) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
+; V06 loc4 [V06,T05] ( 6, 2.57) int -> rax
+; V07 loc5 [V07,T10] ( 4, 0.55) ref -> rsi class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundParameter>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundPropertyAccess>
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess>
;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundParameter>
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V14 tmp6 [V14,T08] ( 2, 1 ) int -> rdi "Inline return value spill temp"
+; V14 tmp6 [V14,T08] ( 2, 2 ) int -> rax "Inline return value spill temp"
;* V15 tmp7 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V16 tmp8 [V16,T00] ( 7, 7 ) int -> rcx "Inline stloc first use temp"
+; V17 tmp9 [V17,T02] ( 3, 6 ) int -> rax "Inlining Arg"
;
; Lcl frame size = 0
@@ -31,120 +35,132 @@ G_M51654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
-G_M51654_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51654_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi rdi]
mov rax, gword ptr [rdi+0x20]
; gcrRegs +[rax]
cmp byte ptr [rax+0x12], 161
- jne SHORT G_M51654_IG05
- ;; size=10 bbWeight=1 PerfScore 6.00
-G_M51654_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rsi rdi]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51654_IG04: ; bbWeight=0.50, epilog, nogc, extend
- pop rbp
- ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M51654_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rsi]
+ je G_M51654_IG20
+ ;; size=14 bbWeight=1 PerfScore 6.00
+G_M51654_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rdi]
mov rdi, rsi
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M51654_IG07
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M51654_IG06: ; bbWeight=0.25, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M51654_IG05
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M51654_IG04: ; bbWeight=0.40, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundPropertyAccess
cmp qword ptr [rdi], rax
- je SHORT G_M51654_IG14
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M51654_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M51654_IG16
+ ;; size=19 bbWeight=0.40 PerfScore 1.70
+G_M51654_IG05: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
mov rax, rsi
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M51654_IG09
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M51654_IG08: ; bbWeight=0.25, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess
- cmp qword ptr [rax], rdi
- je SHORT G_M51654_IG15
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M51654_IG09: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M51654_IG17
+ ;; size=12 bbWeight=0.80 PerfScore 1.20
+G_M51654_IG06: ; bbWeight=0.42, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rcx, rsi
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M51654_IG11
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M51654_IG10: ; bbWeight=0.25, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundFieldAccess
- cmp qword ptr [rcx], rdi
- je SHORT G_M51654_IG16
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M51654_IG11: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M51654_IG11
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M51654_IG07: ; bbWeight=0.22, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
test rsi, rsi
- je SHORT G_M51654_IG18
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M51654_IG12: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M51654_IG19
+ ;; size=9 bbWeight=0.22 PerfScore 0.27
+G_M51654_IG08: ; bbWeight=0.06, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundParameter
cmp qword ptr [rsi], rdi
- jne SHORT G_M51654_IG18
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M51654_IG13: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne G_M51654_IG19
+ ;; size=19 bbWeight=0.06 PerfScore 0.24
+G_M51654_IG09: ; bbWeight=0.06, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rsi+0x20]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M51654_IG18
- jmp SHORT G_M51654_IG17
- ;; size=11 bbWeight=0.50 PerfScore 2.62
-G_M51654_IG14: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M51654_IG19
+ ;; size=9 bbWeight=0.06 PerfScore 0.19
+G_M51654_IG10: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M51654_IG13
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M51654_IG11: ; bbWeight=0.11, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi] +[rcx rsi]
+ mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundFieldAccess
+ cmp qword ptr [rcx], rdi
+ jne SHORT G_M51654_IG07
+ ;; size=15 bbWeight=0.11 PerfScore 0.46
+G_M51654_IG12: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- mov rdi, gword ptr [rdi+0x28]
- call [Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int]
- ; gcrRegs -[rdi]
- jmp SHORT G_M51654_IG19
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M51654_IG15: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
- mov rdi, gword ptr [rax+0x28]
- ; gcrRegs +[rdi]
- call [Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int]
- ; gcrRegs -[rax rdi]
- jmp SHORT G_M51654_IG19
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M51654_IG16: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
mov rdi, gword ptr [rcx+0x28]
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.NullableWalker:GetFieldAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):int]
; gcrRegs -[rcx rdi]
- jmp SHORT G_M51654_IG19
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M51654_IG17: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M51654_IG14
+ ;; size=12 bbWeight=0.10 PerfScore 0.73
+G_M51654_IG13: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0xC0]
call [rax+0x10]<unknown method>
; gcrRegs -[rdi]
- mov edi, eax
- and edi, -49
- call [Microsoft.CodeAnalysis.CSharp.NullableWalker:ToInwardAnnotations(int):int]
- jmp SHORT G_M51654_IG19
- ;; size=26 bbWeight=0.50 PerfScore 6.25
-G_M51654_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M51654_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ and eax, -49
+ xor ecx, ecx
+ mov edx, 1
+ test al, 12
+ cmovne ecx, edx
+ and eax, 48
+ mov edx, ecx
+ or edx, 2
+ cmp eax, 48
+ cmove ecx, edx
+ mov eax, ecx
+ ;; size=44 bbWeight=1 PerfScore 9.75
+G_M51654_IG14: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
and eax, 3
- ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M51654_IG20: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=3 bbWeight=0.80 PerfScore 0.20
+G_M51654_IG15: ; bbWeight=0.80, epilog, nogc, extend
pop rbp
ret
- ;; size=2 bbWeight=0.50 PerfScore 0.75
+ ;; size=2 bbWeight=0.80 PerfScore 1.20
+G_M51654_IG16: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rdi]
+ mov rdi, gword ptr [rdi+0x28]
+ call [Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int]
+ ; gcrRegs -[rdi]
+ jmp SHORT G_M51654_IG14
+ ;; size=12 bbWeight=0.38 PerfScore 2.69
+G_M51654_IG17: ; bbWeight=0.21, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rax rsi]
+ mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess
+ cmp qword ptr [rax], rdi
+ jne G_M51654_IG06
+ ;; size=19 bbWeight=0.21 PerfScore 0.88
+G_M51654_IG18: ; bbWeight=0.20, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ mov rdi, gword ptr [rax+0x28]
+ ; gcrRegs +[rdi]
+ call [Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetFlowAnalysisAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol):int]
+ ; gcrRegs -[rax rdi]
+ jmp SHORT G_M51654_IG14
+ ;; size=12 bbWeight=0.20 PerfScore 1.40
+G_M51654_IG19: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ xor eax, eax
+ jmp SHORT G_M51654_IG14
+ ;; size=4 bbWeight=0.08 PerfScore 0.19
+G_M51654_IG20: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.20 PerfScore 0.05
+G_M51654_IG21: ; bbWeight=0.20, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.20 PerfScore 0.30
-; Total bytes of code 187, prolog size 4, PerfScore 35.62, instruction count 55, allocated bytes for code 187 (MethodHash=ffb53639) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:GetLValueAnnotations(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (FullOpts)
+; Total bytes of code 231, prolog size 4, PerfScore 32.52, instruction count 63, allocated bytes for code 231 (MethodHash=ffb53639) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:GetLValueAnnotations(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (FullOpts)
; ============================================================
...
+41 (+25.47%) : 31839.dasm - System.Management.Automation.Interpreter.HybridReferenceDictionary`2[System.Canon,System.Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
@@ -2,53 +2,55 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 4, 3.50) ref -> r15 this class-hnd single-def <System.Management.Automation.Interpreter.HybridReferenceDictionary`2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T03] ( 4, 6.50) ref -> rsi class-hnd single-def <System.__Canon>
-; V02 arg2 [V02,T04] ( 6, 4 ) byref -> rbx single-def
-; V03 loc0 [V03,T01] ( 8, 21.50) int -> rcx
+; V00 this [V00,T04] ( 5, 4.23) ref -> rbx this class-hnd single-def <System.Management.Automation.Interpreter.HybridReferenceDictionary`2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T03] ( 4, 27.25) ref -> rsi class-hnd single-def <System.__Canon>
+; V02 arg2 [V02,T06] ( 6, 3.80) byref -> r15 single-def
+; V03 loc0 [V03,T01] ( 8,130.59) int -> rcx
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 tmp3 [V07,T10] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-; V08 tmp4 [V08,T06] ( 3, 3 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
-; V09 tmp5 [V09,T09] ( 3, 1.50) byref -> rax single-def "Inline stloc first use temp"
+; V07 tmp3 [V07,T13] ( 3, 1.20) ubyte -> rax "Inline return value spill temp"
+; V08 tmp4 [V08,T05] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
+; V09 tmp5 [V09,T08] ( 3, 2.52) byref -> rax single-def "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V12 tmp8 [V12,T00] ( 3, 24 ) ref -> rax "arr expr"
-; V13 tmp9 [V13,T07] ( 3, 3 ) ref -> rdi single-def "arr expr"
+; V12 tmp8 [V12,T00] ( 3,145.52) ref -> rax "arr expr"
+; V13 tmp9 [V13,T11] ( 3, 1.82) ref -> rdi single-def "arr expr"
;* V14 cse0 [V14,T14] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V15 cse1 [V15,T02] ( 6, 10 ) ref -> rdi "CSE - aggressive"
-; V16 cse2 [V16,T08] ( 3, 2.50) ref -> rdi "CSE - aggressive"
-;* V17 rat0 [V17,T12] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
-;* V18 rat1 [V18,T13] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V19 rat2 [V19,T11] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V15 cse1 [V15,T02] ( 6, 53.74) ref -> rdi "CSE - aggressive"
+; V16 cse2 [V16,T07] ( 3, 3 ) ref -> rdi "CSE - aggressive"
+; V17 rat0 [V17,T10] ( 2, 1.71) long -> rax "Spilling to split statement for tree"
+;* V18 rat1 [V18,T12] ( 0, 0 ) long -> zero-ref "runtime lookup"
+; V19 rat2 [V19,T09] ( 2, 1.71) long -> rax "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M25652_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push rbx
- lea rbp, [rsp+0x10]
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rdx
- ; byrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 4.00
-G_M25652_IG02: ; bbWeight=1, gcrefRegs=8040 {rsi r15}, byrefRegs=0008 {rbx}, byref, isz
+ sub rsp, 16
+ lea rbp, [rsp+0x20]
+ mov qword ptr [rbp-0x18], rdi
+ mov rbx, rdi
+ ; gcrRegs +[rbx]
+ mov r15, rdx
+ ; byrRegs +[r15]
+ ;; size=23 bbWeight=1 PerfScore 5.25
+G_M25652_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs +[rsi]
- mov rdi, gword ptr [r15+0x10]
+ mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M25652_IG06
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M25652_IG03: ; bbWeight=0.50, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ je SHORT G_M25652_IG10
cmp byte ptr [rdi], dil
call [<unknown method>]
; gcrRegs -[rsi rdi]
@@ -56,98 +58,120 @@ G_M25652_IG03: ; bbWeight=0.50, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
test rax, rax
je SHORT G_M25652_IG04
+ ;; size=23 bbWeight=1 PerfScore 10.50
+G_M25652_IG03: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=8001 {rax r15}, byref, isz
mov rsi, gword ptr [rax]
; gcrRegs +[rsi]
- mov rdi, rbx
+ mov rdi, r15
; byrRegs +[rdi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rsi]
- ; byrRegs -[rax rbx rdi]
+ ; byrRegs -[rax rdi r15]
mov eax, 1
jmp SHORT G_M25652_IG05
- ;; size=32 bbWeight=0.50 PerfScore 6.38
-G_M25652_IG04: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- ; byrRegs +[rbx]
+ ;; size=18 bbWeight=0.52 PerfScore 2.86
+G_M25652_IG04: ; bbWeight=0.48, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+ ; byrRegs +[r15]
xor rax, rax
; gcrRegs +[rax]
- mov gword ptr [rbx], rax
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M25652_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov gword ptr [r15], rax
+ ;; size=5 bbWeight=0.48 PerfScore 0.60
+G_M25652_IG05: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- ; byrRegs -[rbx]
+ ; byrRegs -[r15]
+ add rsp, 16
pop rbx
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M25652_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8040 {rsi r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; gcrRegs +[rsi]
- ; byrRegs +[rbx]
- mov rdi, gword ptr [r15+0x08]
- ; gcrRegs +[rdi]
- test rdi, rdi
- je SHORT G_M25652_IG08
- xor ecx, ecx
- cmp dword ptr [rdi+0x08], 0
- jle SHORT G_M25652_IG08
- ;; size=17 bbWeight=0.50 PerfScore 3.75
-G_M25652_IG07: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=9 bbWeight=0.20 PerfScore 0.55
+G_M25652_IG06: ; bbWeight=24.25, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ; gcrRegs +[rsi rdi]
+ ; byrRegs +[r15]
mov rax, rdi
; gcrRegs +[rax]
cmp ecx, dword ptr [rax+0x08]
- jae SHORT G_M25652_IG12
+ jae SHORT G_M25652_IG16
mov edx, ecx
shl rdx, 4
cmp gword ptr [rax+rdx+0x10], rsi
- je SHORT G_M25652_IG10
+ je SHORT G_M25652_IG14
+ ;; size=21 bbWeight=24.25 PerfScore 218.27
+G_M25652_IG07: ; bbWeight=26.95, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=8000 {r15}, byref, isz
+ ; gcrRegs -[rax]
inc ecx
cmp dword ptr [rdi+0x08], ecx
- jg SHORT G_M25652_IG07
- ;; size=28 bbWeight=4 PerfScore 53.00
-G_M25652_IG08: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax rsi rdi]
+ jg SHORT G_M25652_IG06
+ ;; size=7 bbWeight=26.95 PerfScore 114.53
+G_M25652_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+ ; gcrRegs -[rsi rdi]
xor rax, rax
; gcrRegs +[rax]
- mov gword ptr [rbx], rax
+ mov gword ptr [r15], rax
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M25652_IG09: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M25652_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- ; byrRegs -[rbx]
+ ; byrRegs -[r15]
+ add rsp, 16
pop rbx
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M25652_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ;; size=9 bbWeight=0.50 PerfScore 1.37
+G_M25652_IG10: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ; gcrRegs +[rsi]
+ ; byrRegs +[r15]
+ mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
- ; byrRegs +[rbx]
+ test rdi, rdi
+ je SHORT G_M25652_IG08
+ ;; size=9 bbWeight=0.80 PerfScore 2.60
+G_M25652_IG11: ; bbWeight=0.64, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=8000 {r15}, byref, isz
+ xor ecx, ecx
+ cmp dword ptr [rdi+0x08], 0
+ jle SHORT G_M25652_IG08
+ ;; size=8 bbWeight=0.64 PerfScore 2.72
+G_M25652_IG12: ; bbWeight=0.43, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=8000 {r15}, byref, isz
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x38]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x18]
+ test rax, rax
+ je SHORT G_M25652_IG06
+ ;; size=19 bbWeight=0.43 PerfScore 3.95
+G_M25652_IG13: ; bbWeight=0.34, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=8000 {r15}, byref, isz
+ jmp SHORT G_M25652_IG06
+ ;; size=2 bbWeight=0.34 PerfScore 0.68
+G_M25652_IG14: ; bbWeight=0.30, gcrefRegs=0088 {rbx rdi}, byrefRegs=8000 {r15}, byref, isz
+ ; gcrRegs -[rsi]
cmp ecx, dword ptr [rdi+0x08]
- jae SHORT G_M25652_IG12
+ jae SHORT G_M25652_IG16
mov esi, ecx
shl rsi, 4
mov rsi, gword ptr [rdi+rsi+0x18]
; gcrRegs +[rsi]
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs -[rdi]
; byrRegs +[rdi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rsi]
- ; byrRegs -[rbx rdi]
+ ; byrRegs -[rdi r15]
mov eax, 1
- ;; size=29 bbWeight=0.50 PerfScore 4.12
-G_M25652_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=29 bbWeight=0.30 PerfScore 2.50
+G_M25652_IG15: ; bbWeight=0.30, epilog, nogc, extend
+ add rsp, 16
pop rbx
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M25652_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.30 PerfScore 0.83
+G_M25652_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 161, prolog size 15, PerfScore 79.50, instruction count 60, allocated bytes for code 161 (MethodHash=46d59bcb) for method System.Management.Automation.Interpreter.HybridReferenceDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
+; Total bytes of code 202, prolog size 23, PerfScore 367.84, instruction count 72, allocated bytes for code 202 (MethodHash=46d59bcb) for method System.Management.Automation.Interpreter.HybridReferenceDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -155,11 +179,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
...
+37 (+33.33%) : 2323.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Canon]:TryEnqueue(System.Canon):ubyte:this (FullOpts)
@@ -2,104 +2,112 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 23 ) ref -> rdi this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
-; V01 arg1 [V01,T06] ( 3, 2.50) ref -> rsi class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T05] ( 3, 17 ) ref -> rcx class-hnd exact single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 7, 36.50) int -> rbx
-; V04 loc2 [V04,T02] ( 3, 24 ) int -> rax
+; V00 this [V00,T02] ( 6,204.60) ref -> rdi this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
+; V01 arg1 [V01,T05] ( 3, 2.52) ref -> rsi class-hnd single-def <System.__Canon>
+; V02 loc0 [V02,T04] ( 5,162.04) ref -> rbx class-hnd exact single-def <<unknown class>>
+; V03 loc1 [V03,T00] ( 7,365.32) int -> r15
+; V04 loc2 [V04,T01] ( 5,241.04) int -> r14
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref
-; V06 loc4 [V06,T03] ( 3, 20 ) int -> rdx
+; V06 loc4 [V06,T03] ( 3,198.40) int -> rcx
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 cse0 [V08,T04] ( 4, 17 ) byref -> r15 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M56054_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
+ push r14
push rbx
- lea rbp, [rsp+0x10]
- ;; size=9 bbWeight=1 PerfScore 3.50
+ push rax
+ lea rbp, [rsp+0x20]
+ ;; size=12 bbWeight=1 PerfScore 5.50
G_M56054_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi rdi]
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
+ mov rbx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rbx]
;; size=4 bbWeight=1 PerfScore 2.00
-G_M56054_IG03: ; bbWeight=8, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov ebx, dword ptr [rdi+0xA0]
- mov eax, ebx
- and eax, dword ptr [rdi+0x18]
- cmp eax, dword ptr [rcx+0x08]
+G_M56054_IG03: ; bbWeight=80.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov r15d, dword ptr [rdi+0xA0]
+ mov r14d, r15d
+ and r14d, dword ptr [rdi+0x18]
+ cmp r14d, dword ptr [rbx+0x08]
jae SHORT G_M56054_IG11
+ mov eax, r14d
shl rax, 4
- lea r15, bword ptr [rcx+rax+0x10]
- ; byrRegs +[r15]
- mov edx, dword ptr [r15+0x08]
- sub edx, ebx
+ mov ecx, dword ptr [rbx+rax+0x18]
+ sub ecx, r15d
jne SHORT G_M56054_IG06
- ;; size=33 bbWeight=8 PerfScore 112.00
-G_M56054_IG04: ; bbWeight=4, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=8000 {r15}, byref, isz
- lea rdx, bword ptr [rdi+0xA0]
- ; byrRegs +[rdx]
- lea r8d, [rbx+0x01]
- mov eax, ebx
+ ;; size=36 bbWeight=80.00 PerfScore 1060.00
+G_M56054_IG04: ; bbWeight=41.60, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ lea rcx, bword ptr [rdi+0xA0]
+ ; byrRegs +[rcx]
+ lea edx, [r15+0x01]
+ mov eax, r15d
lock
- cmpxchg dword ptr [rdx], r8d
- cmp eax, ebx
+ cmpxchg dword ptr [rcx], edx
+ cmp eax, r15d
jne SHORT G_M56054_IG03
- ;; size=22 bbWeight=4 PerfScore 82.00
-G_M56054_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
- ; gcrRegs -[rcx rdi]
- ; byrRegs -[rdx]
+ ;; size=23 bbWeight=41.60 PerfScore 852.80
+G_M56054_IG05: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdi]
+ ; byrRegs -[rcx]
jmp SHORT G_M56054_IG09
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M56054_IG06: ; bbWeight=4, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx rdi]
- ; byrRegs -[r15]
- test edx, edx
+ ;; size=2 bbWeight=0.52 PerfScore 1.04
+G_M56054_IG06: ; bbWeight=38.40, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi]
+ test ecx, ecx
jge SHORT G_M56054_IG03
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M56054_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rsi rdi]
+ ;; size=4 bbWeight=38.40 PerfScore 48.00
+G_M56054_IG07: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi rdi]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M56054_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=0.48 PerfScore 0.12
+G_M56054_IG08: ; bbWeight=0.48, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M56054_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, gcvars, byref
- ; gcrRegs +[rsi]
- ; byrRegs +[r15]
- mov rdi, r15
+ ;; size=11 bbWeight=0.48 PerfScore 1.56
+G_M56054_IG09: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx rsi]
+ mov edi, r14d
+ shl rdi, 4
+ lea rdi, bword ptr [rbx+rdi+0x10]
; byrRegs +[rdi]
- call CORINFO_HELP_CHECKED_ASSIGN_REF
+ call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rsi]
; byrRegs -[rdi]
- inc ebx
- mov dword ptr [r15+0x08], ebx
+ mov eax, r14d
+ shl rax, 4
+ inc r15d
+ mov dword ptr [rbx+rax+0x18], r15d
mov eax, 1
- ;; size=19 bbWeight=0.50 PerfScore 1.38
-G_M56054_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=37 bbWeight=0.52 PerfScore 2.60
+G_M56054_IG10: ; bbWeight=0.52, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r14
pop r15
pop rbp
ret
- ;; size=5 bbWeight=0.50 PerfScore 1.25
+ ;; size=11 bbWeight=0.52 PerfScore 1.69
G_M56054_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[r15]
+ ; gcrRegs -[rbx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 111, prolog size 9, PerfScore 209.50, instruction count 41, allocated bytes for code 111 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (FullOpts)
+; Total bytes of code 148, prolog size 12, PerfScore 1975.31, instruction count 51, allocated bytes for code 148 (MethodHash=e0572509) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -107,11 +115,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 5
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
smoke_tests.nativeaot.linux.x64.checked.mch
-15 (-37.50%) : 12512.dasm - System.Number:ThrowOverflowOrFormatExceptionushort,ulong (FullOpts)
@@ -5,40 +5,40 @@
; optimized code
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 3, 2 ) int -> rdi single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) int -> rdi single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 2, 1 ) byref -> [rbp-0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T02] ( 2, 1 ) int -> [rbp-0x04] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V03 tmp1 [V03,T01] ( 2, 1.80) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 1.80) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 16
+; Lcl frame size = 0
-G_M54166_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M54166_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- mov bword ptr [rbp-0x10], rsi
- ; GC ptr vars +{V03}
- mov dword ptr [rbp-0x04], edx
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M54166_IG02: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M54166_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ ; byrRegs +[rsi]
cmp edi, 1
- jne SHORT G_M54166_IG03
- mov rdi, bword ptr [rbp-0x10]
+ jne SHORT G_M54166_IG04
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M54166_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ mov rdi, rsi
; byrRegs +[rdi]
- mov esi, dword ptr [rbp-0x04]
- ; GC ptr vars -{V03}
+ mov esi, edx
+ ; byrRegs -[rsi]
call <unknown method>
; byrRegs -[rdi]
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M54166_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=0.80 PerfScore 1.20
+G_M54166_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call System.Number:ThrowOverflowException[ulong]()
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 40, prolog size 10, PerfScore 0.00, instruction count 12, allocated bytes for code 40 (MethodHash=1a022c69) for method System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
+; Total bytes of code 25, prolog size 4, PerfScore 3.70, instruction count 9, allocated bytes for code 25 (MethodHash=1a022c69) for method System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
; ============================================================
Cfi Info:
@@ -46,4 +46,3 @@ Cfi Info:
>> End offset : 0xd1ffab1e
CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x10
-16 (-21.62%) : 3213.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:LookupHashCode():int:this (FullOpts)
@@ -5,55 +5,45 @@
; optimized code
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+; V00 this [V00,T00] ( 6, 5 ) byref -> rdi this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <<unknown class>>
+; V02 tmp1 [V02,T02] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <<unknown class>>
;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref
;* V04 tmp3 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V05 tmp4 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V06 tmp5 [V06,T06] ( 3, 1.50) int -> rax "Inline return value spill temp"
-; V07 tmp6 [V07,T04] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
+; V06 tmp5 [V06,T05] ( 3, 1.52) int -> rax "Inline return value spill temp"
+; V07 tmp6 [V07,T01] ( 3, 4.96) byref -> rsi single-def "Inlining Arg"
;* V08 tmp7 [V08 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V09 tmp8 [V09 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V10 tmp9 [V10,T05] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
-; V11 tmp10 [V11,T02] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V12 cse0 [V12,T07] ( 3, 1.50) long -> rsi "CSE - moderate"
-; V13 cse1 [V13,T03] ( 3, 2.50) ref -> rbx "CSE - aggressive"
+; V10 tmp9 [V10,T04] ( 2, 1.92) byref -> rax single-def "Inlining Arg"
+; V11 tmp10 [V11,T03] ( 3, 2.88) ref -> rdi single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M28953_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M28953_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- push rax
- lea rbp, [rsp+0x10]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M28953_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
; byrRegs +[rdi]
- mov rbx, gword ptr [rdi]
- ; gcrRegs +[rbx]
- mov rsi, rbx
+ mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
test rsi, rsi
jne SHORT G_M28953_IG07
- ;; size=11 bbWeight=1 PerfScore 3.50
-G_M28953_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- ; gcrRegs -[rbx rsi]
lea rsi, bword ptr [rdi+0x10]
+ ; gcrRegs -[rsi]
; byrRegs +[rsi]
- mov rsi, qword ptr [rsi]
+ cmp qword ptr [rsi], 0
+ jne SHORT G_M28953_IG06
+ ;; size=18 bbWeight=1 PerfScore 7.75
+G_M28953_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
; byrRegs -[rsi]
- test rsi, rsi
- jne SHORT G_M28953_IG04
xor eax, eax
- jmp SHORT G_M28953_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.00
-G_M28953_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
- mov eax, dword ptr [rsi+0x14]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M28953_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ ;; size=2 bbWeight=0.52 PerfScore 0.13
+G_M28953_IG04: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
mov rsi, gword ptr [rdi+0x08]
; gcrRegs +[rsi]
mov edi, eax
@@ -61,30 +51,33 @@ G_M28953_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi},
call Internal.NativeFormat.TypeHashingAlgorithms:ComputeGenericInstanceHashCode[System.RuntimeTypeHandle](int,System.RuntimeTypeHandle[]):int
; gcrRegs -[rsi]
nop
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M28953_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
+ ;; size=12 bbWeight=0.52 PerfScore 1.82
+G_M28953_IG05: ; bbWeight=0.52, epilog, nogc, extend
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M28953_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
- mov rdi, rbx
+ ;; size=2 bbWeight=0.52 PerfScore 0.78
+G_M28953_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=00C0 {rsi rdi}, gcvars, byref, isz
+ ; byrRegs +[rsi rdi]
+ mov rax, qword ptr [rsi]
+ mov eax, dword ptr [rax+0x14]
+ jmp SHORT G_M28953_IG04
+ ;; size=8 bbWeight=0.48 PerfScore 2.88
+G_M28953_IG07: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ ; byrRegs -[rsi]
+ mov rdi, gword ptr [rdi]
; gcrRegs +[rdi]
+ ; byrRegs -[rdi]
mov rax, qword ptr [rdi]
call [rax+0x28]<unknown method>
- ; gcrRegs -[rbx rdi]
+ ; gcrRegs -[rdi]
nop
- ;; size=10 bbWeight=0.50 PerfScore 2.75
-G_M28953_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
- pop rbx
+ ;; size=10 bbWeight=0.48 PerfScore 3.48
+G_M28953_IG08: ; bbWeight=0.48, epilog, nogc, extend
pop rbp
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=2 bbWeight=0.48 PerfScore 0.72
-; Total bytes of code 74, prolog size 8, PerfScore 17.75, instruction count 31, allocated bytes for code 74 (MethodHash=bb4d8ee6) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:LookupHashCode():int:this (FullOpts)
+; Total bytes of code 58, prolog size 4, PerfScore 18.81, instruction count 24, allocated bytes for code 58 (MethodHash=bb4d8ee6) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:LookupHashCode():int:this (FullOpts)
; ============================================================
Cfi Info:
@@ -92,6 +85,3 @@ Cfi Info:
>> End offset : 0xd1ffab1e
CodeOffset: 0x01 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
- CodeOffset: 0x02 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x02 Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
-21 (-15.44%) : 8293.dasm - System.Linq.Expressions.Expression:ApplyTypeArgs(System.Reflection.MethodInfo,System.Type[]):System.Reflection.MethodInfo (FullOpts)
@@ -5,101 +5,100 @@
; optimized code
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 9, 5.50) ref -> rbx class-hnd single-def <System.Reflection.MethodInfo>
-; V01 arg1 [V01,T01] ( 6, 4.50) ref -> r15 class-hnd single-def <System.Type[]>
+; V00 arg0 [V00,T00] ( 11, 5.00) ref -> rbx class-hnd single-def <System.Reflection.MethodInfo>
+; V01 arg1 [V01,T01] ( 6, 3.82) ref -> r15 class-hnd single-def <System.Type[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 6, 3 ) long -> r14 multi-def "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M23979_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rdi
; gcrRegs +[rbx]
mov r15, rsi
; gcrRegs +[r15]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M23979_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test r15, r15
je SHORT G_M23979_IG04
;; size=5 bbWeight=1 PerfScore 1.25
-G_M23979_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M23979_IG03: ; bbWeight=0.52, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r15+0x08], 0
- jne SHORT G_M23979_IG06
- ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M23979_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M23979_IG07
+ ;; size=7 bbWeight=0.52 PerfScore 2.08
+G_M23979_IG04: ; bbWeight=0.75, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
mov rdi, rbx
; gcrRegs +[rdi]
- mov r14, qword ptr [rbx]
- call [r14+0xB8]<unknown method>
+ mov rax, qword ptr [rbx]
+ call [rax+0xB8]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- jne SHORT G_M23979_IG08
+ jne SHORT G_M23979_IG11
+ ;; size=16 bbWeight=0.75 PerfScore 4.88
+G_M23979_IG05: ; bbWeight=0.39, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, rbx
; gcrRegs +[rax]
- ;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M23979_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=3 bbWeight=0.39 PerfScore 0.10
+G_M23979_IG06: ; bbWeight=0.39, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M23979_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=0.39 PerfScore 0.98
+G_M23979_IG07: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[r15]
mov rdi, rbx
; gcrRegs +[rdi]
- mov r14, qword ptr [rbx]
- call [r14+0xB8]<unknown method>
+ mov rax, qword ptr [rbx]
+ call [rax+0xB8]<unknown method>
; gcrRegs -[rdi]
test eax, eax
- je SHORT G_M23979_IG08
+ je SHORT G_M23979_IG11
+ ;; size=16 bbWeight=0.25 PerfScore 1.62
+G_M23979_IG08: ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rbx
; gcrRegs +[rdi]
- call [r14+0xC0]<unknown method>
+ mov rax, qword ptr [rbx]
+ call [rax+0xC0]<unknown method>
; gcrRegs -[rdi] +[rax]
mov edi, dword ptr [rax+0x08]
cmp edi, dword ptr [r15+0x08]
- jne SHORT G_M23979_IG08
+ jne SHORT G_M23979_IG11
+ ;; size=21 bbWeight=0.20 PerfScore 2.25
+G_M23979_IG09: ; bbWeight=0.10, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, r15
; gcrRegs +[rsi]
- mov rax, r14
- ; gcrRegs -[rax]
- ;; size=45 bbWeight=0.50 PerfScore 8.25
-G_M23979_IG07: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ mov rax, qword ptr [rbx]
+ ;; size=9 bbWeight=0.10 PerfScore 0.26
+G_M23979_IG10: ; bbWeight=0.10, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
tail.jmp [rax+0xF0]<unknown method>
- ;; size=17 bbWeight=0.50 PerfScore 2.12
-G_M23979_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=0.10 PerfScore 0.36
+G_M23979_IG11: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rsi rdi r15]
xor rax, rax
; gcrRegs +[rax]
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M23979_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
+ ;; size=2 bbWeight=0.51 PerfScore 0.13
+G_M23979_IG12: ; bbWeight=0.51, epilog, nogc, extend
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.51 PerfScore 1.26
-; Total bytes of code 136, prolog size 12, PerfScore 26.38, instruction count 50, allocated bytes for code 136 (MethodHash=f2f7a254) for method System.Linq.Expressions.Expression:ApplyTypeArgs(System.Reflection.MethodInfo,System.Type[]):System.Reflection.MethodInfo (FullOpts)
+; Total bytes of code 115, prolog size 9, PerfScore 19.16, instruction count 43, allocated bytes for code 115 (MethodHash=f2f7a254) for method System.Linq.Expressions.Expression:ApplyTypeArgs(System.Reflection.MethodInfo,System.Type[]):System.Reflection.MethodInfo (FullOpts)
; ============================================================
Cfi Info:
@@ -109,8 +108,5 @@ Cfi Info:
CodeOffset: 0x01 Op: RelOffset DwarfReg:0x6 Offset:0x0
CodeOffset: 0x03 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0
- CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x05 Op: RelOffset DwarfReg:0xe Offset:0x0
- CodeOffset: 0x06 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x06 Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x07 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0
+5 (+25.00%) : 14605.dasm - System.Runtime.Intrinsics.Vector641[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64
1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) struct ( 8) [rbp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
-; V01 arg1 [V01 ] ( 1, 1 ) struct ( 8) [rbp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V00 arg0 [V00 ] ( 1, 4.74) struct ( 8) [rbp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V01 arg1 [V01 ] ( 1, 4.74) struct ( 8) [rbp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
;* V02 loc0 [V02,T01] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 4 ) long -> rax "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 2, 18.95) long -> rax "impAppendStmt"
;* V05 tmp2 [V05,T02] ( 0, 0 ) int -> zero-ref
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -21,27 +22,36 @@
;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp11 [V14 ] ( 1, 1 ) long -> [rbp+0x10] do-not-enreg[X] addr-exposed single-def "field V00._00 (fldOffset=0x0)" P-DEP
-; V15 tmp12 [V15 ] ( 1, 1 ) long -> [rbp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._00 (fldOffset=0x0)" P-DEP
+; V14 tmp11 [V14 ] ( 1, 4.74) long -> [rbp+0x10] do-not-enreg[X] addr-exposed single-def "field V00._00 (fldOffset=0x0)" P-DEP
+; V15 tmp12 [V15 ] ( 1, 4.74) long -> [rbp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._00 (fldOffset=0x0)" P-DEP
;
; Lcl frame size = 0
-G_M57231_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M57231_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M57231_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=4.74 PerfScore 5.92
+G_M57231_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rbp+0x10]
cmp qword ptr [rbp+0x18], rax
- setne al
- movzx rax, al
- ;; size=14 bbWeight=1 PerfScore 4.25
-G_M57231_IG03: ; bbWeight=1, epilog, nogc, extend
+ jne SHORT G_M57231_IG05
+ ;; size=10 bbWeight=4.74 PerfScore 18.95
+G_M57231_IG03: ; bbWeight=5.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor eax, eax
+ ;; size=2 bbWeight=5.26 PerfScore 1.32
+G_M57231_IG04: ; bbWeight=5.26, epilog, nogc, extend
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=2 bbWeight=5.26 PerfScore 7.89
+G_M57231_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.47 PerfScore 0.12
+G_M57231_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.47 PerfScore 0.71
-; Total bytes of code 20, prolog size 4, PerfScore 7.00, instruction count 8, allocated bytes for code 20 (MethodHash=25882070) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
+; Total bytes of code 25, prolog size 4, PerfScore 34.91, instruction count 11, allocated bytes for code 25 (MethodHash=25882070) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
; ============================================================
Cfi Info:
+5 (+25.00%) : 14540.dasm - System.Runtime.Intrinsics.Vector641[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64
1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) struct ( 8) [rbp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
-; V01 arg1 [V01 ] ( 1, 1 ) struct ( 8) [rbp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V00 arg0 [V00 ] ( 1, 4.74) struct ( 8) [rbp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V01 arg1 [V01 ] ( 1, 4.74) struct ( 8) [rbp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
;* V02 loc0 [V02,T01] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 4 ) long -> rax "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 2, 18.95) long -> rax "impAppendStmt"
;* V05 tmp2 [V05,T02] ( 0, 0 ) int -> zero-ref
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -21,27 +22,36 @@
;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V12 tmp9 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp11 [V14 ] ( 1, 1 ) long -> [rbp+0x10] do-not-enreg[X] addr-exposed single-def "field V00._00 (fldOffset=0x0)" P-DEP
-; V15 tmp12 [V15 ] ( 1, 1 ) long -> [rbp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._00 (fldOffset=0x0)" P-DEP
+; V14 tmp11 [V14 ] ( 1, 4.74) long -> [rbp+0x10] do-not-enreg[X] addr-exposed single-def "field V00._00 (fldOffset=0x0)" P-DEP
+; V15 tmp12 [V15 ] ( 1, 4.74) long -> [rbp+0x18] do-not-enreg[X] addr-exposed single-def "field V01._00 (fldOffset=0x0)" P-DEP
;
; Lcl frame size = 0
-G_M21576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21576_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
mov rbp, rsp
- ;; size=4 bbWeight=1 PerfScore 1.25
-G_M21576_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=4.74 PerfScore 5.92
+G_M21576_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rbp+0x10]
cmp qword ptr [rbp+0x18], rax
- sete al
- movzx rax, al
- ;; size=14 bbWeight=1 PerfScore 4.25
-G_M21576_IG03: ; bbWeight=1, epilog, nogc, extend
+ jne SHORT G_M21576_IG05
+ ;; size=10 bbWeight=4.74 PerfScore 18.95
+G_M21576_IG03: ; bbWeight=5.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=5.26 PerfScore 1.32
+G_M21576_IG04: ; bbWeight=5.26, epilog, nogc, extend
pop rbp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=2 bbWeight=5.26 PerfScore 7.89
+G_M21576_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.47 PerfScore 0.12
+G_M21576_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.47 PerfScore 0.71
-; Total bytes of code 20, prolog size 4, PerfScore 7.00, instruction count 8, allocated bytes for code 20 (MethodHash=ae40abb7) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
+; Total bytes of code 25, prolog size 4, PerfScore 34.91, instruction count 11, allocated bytes for code 25 (MethodHash=ae40abb7) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
; ============================================================
Cfi Info:
+40 (+25.64%) : 25539.dasm - System.IO.Pipes.PipeStream:CheckPipeCall(int):int:this (FullOpts)
@@ -5,48 +5,41 @@
; optimized code
; rbp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 2 ) ref -> [rbp-0x28] this class-hnd exact single-def <<unknown class>>
-; V01 arg1 [V01,T00] ( 4, 4 ) int -> rsi single-def
+; V00 this [V00,T03] ( 3, 2.80) ref -> [rbp-0x30] this class-hnd exact single-def <<unknown class>>
+; V01 arg1 [V01,T01] ( 4, 3.20) int -> rsi single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Interop+ErrorInfo>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Interop+ErrorInfo>
-; V05 tmp2 [V05,T03] ( 3, 0 ) int -> r15 "Inlining Arg"
+; V05 tmp2 [V05,T02] ( 6, 4.80) int -> r14 "Inlining Arg"
;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "field V02._error (fldOffset=0x0)" P-INDEP
;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "field V02._rawErrno (fldOffset=0x4)" P-INDEP
-; V08 tmp5 [V08,T04] ( 3, 0 ) int -> rbx "field V04._error (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T07] ( 2, 0 ) int -> r15 "field V04._rawErrno (fldOffset=0x4)" P-INDEP
-; V10 tmp7 [V10,T05] ( 3, 0 ) struct ( 8) [rbp-0x20] do-not-enreg[SF] "by-value struct argument" <Interop+ErrorInfo>
-; V11 rat0 [V11,T02] ( 6, 0 ) ref -> r15 "Final offset"
-; V12 rat1 [V12,T06] ( 3, 0 ) long -> rax "TlsRootAddr access"
+; V08 tmp5 [V08,T05] ( 5, 1.60) int -> rbx "field V04._error (fldOffset=0x0)" P-INDEP
+; V09 tmp6 [V09,T06] ( 3, 0.80) int -> r14 "field V04._rawErrno (fldOffset=0x4)" P-INDEP
+; V10 tmp7 [V10,T07] ( 3, 0 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <Interop+ErrorInfo>
+; V11 rat0 [V11,T00] ( 7, 8 ) ref -> r15 "Final offset"
+; V12 rat1 [V12,T04] ( 3, 3.20) long -> rax "TlsRootAddr access"
;
-; Lcl frame size = 24
+; Lcl frame size = 16
G_M40397_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
+ push r13
push rbx
- sub rsp, 24
+ sub rsp, 16
lea rbp, [rsp+0x30]
- mov gword ptr [rbp-0x28], rdi
+ mov gword ptr [rbp-0x30], rdi
; GC ptr vars +{V00}
- ;; size=19 bbWeight=1 PerfScore 5.75
-G_M40397_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=21 bbWeight=1 PerfScore 6.75
+G_M40397_IG02: ; bbWeight=1, gcVars=0000000000000008 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp esi, -1
- je SHORT G_M40397_IG04
- mov eax, esi
- ;; size=7 bbWeight=1 PerfScore 1.50
-G_M40397_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M40397_IG04: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ jne SHORT G_M40397_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M40397_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
data16
lea rdi, [(reloc)]
data16
@@ -55,40 +48,69 @@ G_M40397_IG04: ; bbWeight=0, gcVars=0000000000000002 {V00}, gcrefRegs=000
mov r15, gword ptr [rax]
; gcrRegs +[r15]
test r15, r15
- jne SHORT G_M40397_IG05
- mov rdi, rax
- lea rax, [(reloc)]
- call rax
- ; gcrRegs -[r15] +[rax]
- mov r15, rax
- ; gcrRegs +[r15]
- ;; size=39 bbWeight=0 PerfScore 0.00
-G_M40397_IG05: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov r15d, dword ptr [r15+0xA8]
+ je SHORT G_M40397_IG09
+ mov r14d, dword ptr [r15+0xA8]
+ mov edi, r14d
+ ;; size=34 bbWeight=0.80 PerfScore 6.20
+G_M40397_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
- mov edi, r15d
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M40397_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
call <unknown method>
mov ebx, eax
cmp dword ptr [(reloc)], 0
- je SHORT G_M40397_IG07
- call CORINFO_HELP_POLL_GC
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M40397_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M40397_IG11
+ ;; size=16 bbWeight=0.80 PerfScore 4.20
+G_M40397_IG05: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp ebx, 0x10043
- jne SHORT G_M40397_IG08
- mov r14, gword ptr [rbp-0x28]
- ; gcrRegs +[r14]
- mov dword ptr [r14+0x28], 2
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M40397_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r14]
+ jne SHORT G_M40397_IG12
+ ;; size=8 bbWeight=0.80 PerfScore 1.00
+G_M40397_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov r13, gword ptr [rbp-0x30]
+ ; gcrRegs +[r13]
+ mov dword ptr [r13+0x28], 2
+ jmp SHORT G_M40397_IG12
+ ;; size=14 bbWeight=0.80 PerfScore 3.20
+G_M40397_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r13]
; GC ptr vars -{V00}
- mov dword ptr [rbp-0x20], ebx
- mov dword ptr [rbp-0x1C], r15d
- mov rdi, qword ptr [rbp-0x20]
+ mov eax, esi
+ ;; size=2 bbWeight=0.20 PerfScore 0.05
+G_M40397_IG08: ; bbWeight=0.20, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0.20 PerfScore 0.75
+G_M40397_IG09: ; bbWeight=0, gcVars=0000000000000008 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V00}
+ mov rdi, rax
+ lea rax, [(reloc)]
+ call rax
+ ; gcrRegs +[rax]
+ mov r15, rax
+ ; gcrRegs +[r15]
+ mov r14d, dword ptr [r15+0xA8]
+ mov edi, r14d
+ ;; size=25 bbWeight=0 PerfScore 0.00
+G_M40397_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r15]
+ call <unknown method>
+ mov ebx, eax
+ cmp dword ptr [(reloc)], 0
+ je SHORT G_M40397_IG05
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M40397_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ call CORINFO_HELP_POLL_GC
+ cmp ebx, 0x10043
+ je SHORT G_M40397_IG06
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M40397_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V00}
+ mov dword ptr [rbp-0x28], ebx
+ mov dword ptr [rbp-0x24], r14d
+ mov rdi, qword ptr [rbp-0x28]
xor rsi, rsi
; gcrRegs +[rsi]
xor edx, edx
@@ -101,7 +123,7 @@ G_M40397_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=29 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 15, PerfScore 10.50, instruction count 49, allocated bytes for code 156 (MethodHash=66566232) for method System.IO.Pipes.PipeStream:CheckPipeCall(int):int:this (FullOpts)
+; Total bytes of code 196, prolog size 17, PerfScore 23.40, instruction count 59, allocated bytes for code 196 (MethodHash=66566232) for method System.IO.Pipes.PipeStream:CheckPipeCall(int):int:this (FullOpts)
; ============================================================
Cfi Info:
@@ -113,6 +135,8 @@ Cfi Info:
CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0
CodeOffset: 0x05 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x05 Op: RelOffset DwarfReg:0xe Offset:0x0
- CodeOffset: 0x06 Op: AdjustCfaOffset Offset:0x8
- CodeOffset: 0x06 Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x0A Op: AdjustCfaOffset Offset:0x18
+ CodeOffset: 0x07 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x07 Op: RelOffset DwarfReg:0xd Offset:0x0
+ CodeOffset: 0x08 Op: AdjustCfaOffset Offset:0x8
+ CodeOffset: 0x08 Op: RelOffset DwarfReg:0x3 Offset:0x0
+ CodeOffset: 0x0C Op: AdjustCfaOffset Offset:0x10
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.x64.checked.mch |
11,190 |
4,136 |
4,680 |
2,374 |
-30,333 |
+145,974 |
benchmarks.run_pgo.linux.x64.checked.mch |
22,411 |
10,640 |
9,692 |
2,079 |
-117,902 |
+127,732 |
benchmarks.run_tiered.linux.x64.checked.mch |
6,335 |
1,916 |
1,709 |
2,710 |
-12,121 |
+54,573 |
coreclr_tests.run.linux.x64.checked.mch |
70,110 |
25,973 |
27,809 |
16,328 |
-254,929 |
+507,204 |
libraries.crossgen2.linux.x64.checked.mch |
48,380 |
8,518 |
21,920 |
17,942 |
-56,180 |
+344,933 |
libraries.pmi.linux.x64.checked.mch |
63,667 |
12,204 |
29,551 |
21,912 |
-101,485 |
+678,002 |
libraries_tests.run.linux.x64.Release.mch |
15,957 |
2,500 |
10,237 |
3,220 |
-28,844 |
+262,858 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
77,033 |
26,095 |
36,994 |
13,944 |
-392,444 |
+1,088,173 |
realworld.run.linux.x64.checked.mch |
10,901 |
1,911 |
6,124 |
2,866 |
-17,638 |
+205,685 |
smoke_tests.nativeaot.linux.x64.checked.mch |
8,607 |
975 |
3,719 |
3,913 |
-11,051 |
+62,512 |
|
334,591 |
94,868 |
152,435 |
87,288 |
-1,022,927 |
+3,477,646 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.x64.checked.mch |
29,337 |
2,008 |
27,329 |
9 (0.03%) |
2,099 (6.68%) |
benchmarks.run_pgo.linux.x64.checked.mch |
129,177 |
50,713 |
78,464 |
13 (0.01%) |
1,063 (0.82%) |
benchmarks.run_tiered.linux.x64.checked.mch |
59,694 |
46,324 |
13,370 |
9 (0.01%) |
760 (1.26%) |
coreclr_tests.run.linux.x64.checked.mch |
387,722 |
185,267 |
202,455 |
41 (0.01%) |
3,677 (0.94%) |
libraries.crossgen2.linux.x64.checked.mch |
248,891 |
15 |
248,876 |
0 (0.00%) |
15,848 (5.99%) |
libraries.pmi.linux.x64.checked.mch |
280,657 |
6 |
280,651 |
45 (0.02%) |
16,414 (5.53%) |
libraries_tests.run.linux.x64.Release.mch |
81,026 |
53,841 |
27,185 |
2 (0.00%) |
956 (1.17%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
273,661 |
21,933 |
251,728 |
144 (0.05%) |
32,163 (10.52%) |
realworld.run.linux.x64.checked.mch |
30,316 |
45 |
30,271 |
2 (0.01%) |
2,932 (8.82%) |
smoke_tests.nativeaot.linux.x64.checked.mch |
25,985 |
10 |
25,975 |
0 (0.00%) |
1,468 (5.35%) |
|
1,546,466 |
360,162 |
1,186,304 |
265 (0.02%) |
77,380 (4.77%) |
jit-analyze output
benchmarks.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10099690 (overridden on cmd)
Total bytes of diff: 10215331 (overridden on cmd)
Total bytes of delta: 115641 (1.14 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
4964 : 6254.dasm (18.93 % of base)
1447 : 25892.dasm (40.66 % of base)
1426 : 15268.dasm (36.87 % of base)
846 : 1432.dasm (14.48 % of base)
794 : 17732.dasm (13.68 % of base)
692 : 17709.dasm (14.23 % of base)
657 : 19164.dasm (15.70 % of base)
655 : 17181.dasm (4.99 % of base)
633 : 19568.dasm (5.52 % of base)
600 : 7390.dasm (24.94 % of base)
599 : 12794.dasm (4.96 % of base)
598 : 5525.dasm (15.34 % of base)
598 : 15836.dasm (15.34 % of base)
594 : 7049.dasm (11.60 % of base)
571 : 5080.dasm (9.83 % of base)
570 : 9238.dasm (9.64 % of base)
540 : 25884.dasm (9.60 % of base)
537 : 16018.dasm (13.88 % of base)
529 : 6098.dasm (13.84 % of base)
523 : 14702.dasm (6.20 % of base)
Top file improvements (bytes):
-1113 : 7241.dasm (-12.73 % of base)
-907 : 6686.dasm (-2.55 % of base)
-538 : 8714.dasm (-1.80 % of base)
-353 : 15683.dasm (-15.01 % of base)
-300 : 9373.dasm (-2.34 % of base)
-272 : 4040.dasm (-26.90 % of base)
-177 : 791.dasm (-11.07 % of base)
-175 : 15240.dasm (-1.95 % of base)
-131 : 17723.dasm (-11.03 % of base)
-122 : 9558.dasm (-19.37 % of base)
-115 : 8739.dasm (-3.46 % of base)
-109 : 6515.dasm (-3.16 % of base)
-100 : 5996.dasm (-17.99 % of base)
-99 : 6897.dasm (-10.02 % of base)
-95 : 5794.dasm (-10.66 % of base)
-92 : 6710.dasm (-2.27 % of base)
-91 : 3565.dasm (-3.59 % of base)
-90 : 14266.dasm (-34.88 % of base)
-89 : 2335.dasm (-4.32 % of base)
-88 : 2279.dasm (-1.63 % of base)
86 total files with Code Size differences (43 improved, 43 regressed), 20 unchanged.
Top method regressions (bytes):
4964 (18.93 % of base) : 6254.dasm - Jil.JSON:GetWriterAction[System.__Canon](Jil.Options):System.Action`3[System.__Canon,System.__Canon,int] (FullOpts)
1447 (40.66 % of base) : 25892.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1426 (36.87 % of base) : 15268.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
846 (14.48 % of base) : 1432.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
794 (13.68 % of base) : 17732.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
692 (14.23 % of base) : 17709.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindReturn(Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
657 (15.70 % of base) : 19164.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
655 (4.99 % of base) : 17181.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 (FullOpts)
633 (5.52 % of base) : 19568.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
600 (24.94 % of base) : 7390.dasm - System.IO.Pipes.PipeStream:GetPipePath(System.String,System.String):System.String (FullOpts)
599 (4.96 % of base) : 12794.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
598 (15.34 % of base) : 15836.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_LocationFormatter1:.ctor():this (FullOpts)
598 (15.34 % of base) : 5525.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:.ctor():this (FullOpts)
594 (11.60 % of base) : 7049.dasm - Utf8Json.JsonReader:ReadStringSegmentCore(byref,byref,byref):this (FullOpts)
571 (9.83 % of base) : 5080.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
570 (9.64 % of base) : 9238.dasm - MessagePack.Internal.BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
540 (9.60 % of base) : 25884.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
537 (13.88 % of base) : 16018.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseNamespaceBody(byref,byref,byref,ushort):this (FullOpts)
529 (13.84 % of base) : 6098.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
523 (6.20 % of base) : 14702.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts)
Top method improvements (bytes):
-1113 (-12.73 % of base) : 7241.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-907 (-2.55 % of base) : 6686.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
-538 (-1.80 % of base) : 8714.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
-353 (-15.01 % of base) : 15683.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (FullOpts)
-300 (-2.34 % of base) : 9373.dasm - MessagePack.MessagePackBinary:.cctor() (FullOpts)
-272 (-26.90 % of base) : 4040.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ushort,System.Text.Ascii+WideningLoader](byref,byref,ulong):ubyte (FullOpts)
-177 (-11.07 % of base) : 791.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-175 (-1.95 % of base) : 15240.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
-131 (-11.03 % of base) : 17723.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
-122 (-19.37 % of base) : 9558.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-115 (-3.46 % of base) : 8739.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:LargeStructWithPropertiesPropInit(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonPropertyInfo[] (FullOpts)
-109 (-3.16 % of base) : 6515.dasm - Sigil.Emit`1[System.__Canon]:StoreElement(System.Type):Sigil.Emit`1[System.__Canon]:this (FullOpts)
-100 (-17.99 % of base) : 5996.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-99 (-10.02 % of base) : 6897.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsImmutableEnumerableType(System.Type):ubyte (FullOpts)
-95 (-10.66 % of base) : 5794.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitILConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type):ubyte (FullOpts)
-92 (-2.27 % of base) : 6710.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
-91 (-3.59 % of base) : 3565.dasm - System.Net.Http.Tests.SocketsHttpHandlerPerfTest+<>c__DisplayClass9_0+<<Setup>b__0>d:MoveNext():this (FullOpts)
-90 (-34.88 % of base) : 14266.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
-89 (-4.32 % of base) : 2335.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:CampaignSummaryViewModelPropInit(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonPropertyInfo[] (FullOpts)
-88 (-1.63 % of base) : 2279.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:.cctor() (FullOpts)
Top method regressions (percentages):
20 (57.14 % of base) : 13631.dasm - System.Memory.MemoryMarshal`1[ubyte]:AsBytes():System.Span`1[ubyte]:this (FullOpts)
227 (52.67 % of base) : 2407.dasm - System.Formats.Cbor.CborReader:PushDataItem(ubyte,System.Nullable`1[int]):this (FullOpts)
18 (51.43 % of base) : 12903.dasm - System.Memory.Constructors`1[ubyte]:ArrayAsSpan():System.Span`1[ubyte]:this (FullOpts)
18 (51.43 % of base) : 22718.dasm - System.Memory.Constructors`1[ubyte]:SpanFromArray():System.Span`1[ubyte]:this (FullOpts)
18 (51.43 % of base) : 26890.dasm - System.Memory.Constructors`1[ubyte]:SpanImplicitCastFromArray():System.Span`1[ubyte]:this (FullOpts)
18 (51.43 % of base) : 14265.dasm - System.Memory.ReadOnlySpan:StringAsSpan():System.ReadOnlySpan`1[ushort]:this (FullOpts)
401 (49.38 % of base) : 17861.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
26 (47.27 % of base) : 19874.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
213 (46.20 % of base) : 9879.dasm - System.Formats.Cbor.CborWriter:PushDataItem(ubyte,System.Nullable`1[int]):this (FullOpts)
1447 (40.66 % of base) : 25892.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1426 (36.87 % of base) : 15268.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
113 (35.76 % of base) : 6088.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
26 (35.62 % of base) : 12373.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
232 (34.63 % of base) : 18191.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
141 (33.41 % of base) : 710.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
108 (33.33 % of base) : 9114.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
37 (33.33 % of base) : 1557.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (FullOpts)
26 (32.91 % of base) : 15577.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
107 (32.72 % of base) : 800.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
351 (30.66 % of base) : 18583.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
Top method improvements (percentages):
-90 (-34.88 % of base) : 14266.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
-33 (-27.97 % of base) : 3359.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:ClearRevocationUnknown():this (FullOpts)
-272 (-26.90 % of base) : 4040.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ushort,System.Text.Ascii+WideningLoader](byref,byref,ulong):ubyte (FullOpts)
-88 (-26.27 % of base) : 11567.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-31 (-26.05 % of base) : 13489.dasm - System.Xml.XmlTextReaderImpl+NodeData:CopyTo(int,System.Text.StringBuilder):this (FullOpts)
-74 (-25.69 % of base) : 11565.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-10 (-23.26 % of base) : 8210.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
-10 (-23.26 % of base) : 8748.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_10(System.Object):int:this (FullOpts)
-10 (-23.26 % of base) : 8749.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_12(System.Object):int:this (FullOpts)
-10 (-23.26 % of base) : 8750.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_14(System.Object):int:this (FullOpts)
-10 (-23.26 % of base) : 8751.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_16(System.Object):int:this (FullOpts)
-10 (-23.26 % of base) : 8752.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_18(System.Object):int:this (FullOpts)
-10 (-23.26 % of base) : 12230.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<SimpleStructWithPropertiesPropInit>b__101_0(System.Object):int:this (FullOpts)
-10 (-23.26 % of base) : 19821.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_0(System.Object):int:this (FullOpts)
-10 (-23.26 % of base) : 19824.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_6(System.Object):int:this (FullOpts)
-10 (-22.73 % of base) : 8209.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
-10 (-22.73 % of base) : 8745.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_4(System.Object):System.String:this (FullOpts)
-10 (-22.73 % of base) : 8746.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_6(System.Object):System.String:this (FullOpts)
-10 (-22.73 % of base) : 19822.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_2(System.Object):ubyte:this (FullOpts)
-10 (-22.73 % of base) : 19825.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_8(System.Object):ubyte:this (FullOpts)
benchmarks.run_pgo.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55943861 (overridden on cmd)
Total bytes of diff: 55953691 (overridden on cmd)
Total bytes of delta: 9830 (0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1323 : 62373.dasm (33.32 % of base)
669 : 89167.dasm (21.06 % of base)
648 : 84323.dasm (28.56 % of base)
599 : 41973.dasm (4.96 % of base)
452 : 82593.dasm (18.49 % of base)
420 : 86039.dasm (9.19 % of base)
398 : 129656.dasm (6.43 % of base)
396 : 108648.dasm (6.87 % of base)
395 : 98346.dasm (8.75 % of base)
387 : 126166.dasm (7.38 % of base)
384 : 85939.dasm (8.66 % of base)
374 : 42290.dasm (7.14 % of base)
374 : 71961.dasm (7.14 % of base)
363 : 21698.dasm (11.51 % of base)
310 : 40617.dasm (7.10 % of base)
303 : 67149.dasm (20.81 % of base)
293 : 54803.dasm (5.59 % of base)
289 : 50926.dasm (7.30 % of base)
276 : 64433.dasm (6.67 % of base)
256 : 56650.dasm (22.18 % of base)
Top file improvements (bytes):
-917 : 116572.dasm (-52.98 % of base)
-917 : 128973.dasm (-52.98 % of base)
-907 : 21014.dasm (-2.55 % of base)
-889 : 56036.dasm (-52.70 % of base)
-889 : 88926.dasm (-52.70 % of base)
-889 : 122849.dasm (-52.70 % of base)
-889 : 43681.dasm (-52.70 % of base)
-889 : 101207.dasm (-52.70 % of base)
-889 : 68408.dasm (-52.70 % of base)
-889 : 112009.dasm (-52.70 % of base)
-889 : 32514.dasm (-52.70 % of base)
-889 : 35308.dasm (-52.70 % of base)
-889 : 48939.dasm (-52.70 % of base)
-889 : 52099.dasm (-52.70 % of base)
-889 : 95181.dasm (-52.70 % of base)
-885 : 22950.dasm (-52.58 % of base)
-885 : 84089.dasm (-52.58 % of base)
-882 : 100238.dasm (-51.79 % of base)
-882 : 107454.dasm (-51.79 % of base)
-802 : 108749.dasm (-83.20 % of base)
64 total files with Code Size differences (24 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
1323 (33.32 % of base) : 62373.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
669 (21.06 % of base) : 89167.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
648 (28.56 % of base) : 84323.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
599 (4.96 % of base) : 41973.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
452 (18.49 % of base) : 82593.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
420 (9.19 % of base) : 86039.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
398 (6.43 % of base) : 129656.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
396 (6.87 % of base) : 108648.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
395 (8.75 % of base) : 98346.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
387 (7.38 % of base) : 126166.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
384 (8.66 % of base) : 85939.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
374 (7.14 % of base) : 42290.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
374 (7.14 % of base) : 71961.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
363 (11.51 % of base) : 21698.dasm - (dynamicClass):_DynamicMethod4(System.IO.TextReader):int (FullOpts)
310 (7.10 % of base) : 40617.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
303 (20.81 % of base) : 67149.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
293 (5.59 % of base) : 54803.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
289 (7.30 % of base) : 50926.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
276 (6.67 % of base) : 64433.dasm - (dynamicClass):ReadMyEventsListerItemFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
256 (22.18 % of base) : 56650.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-917 (-52.98 % of base) : 116572.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-917 (-52.98 % of base) : 128973.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-907 (-2.55 % of base) : 21014.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
-889 (-52.70 % of base) : 56036.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 88926.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 122849.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 43681.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 101207.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 68408.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 112009.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 32514.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 35308.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 48939.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 52099.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 95181.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-885 (-52.58 % of base) : 22950.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-885 (-52.58 % of base) : 84089.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-882 (-51.79 % of base) : 100238.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-882 (-51.79 % of base) : 107454.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-802 (-83.20 % of base) : 108749.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:Array[double](int):double[] (Tier1-OSR)
Top method regressions (percentages):
29 (72.50 % of base) : 95417.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
98 (37.98 % of base) : 15232.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
95 (36.82 % of base) : 99686.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
1323 (33.32 % of base) : 62373.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
86 (30.07 % of base) : 125007.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
86 (30.07 % of base) : 87885.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
86 (30.07 % of base) : 90653.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
86 (30.07 % of base) : 41992.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
86 (30.07 % of base) : 63283.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
239 (28.69 % of base) : 21131.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
648 (28.56 % of base) : 84323.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
82 (28.37 % of base) : 123759.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
82 (28.37 % of base) : 128076.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
82 (28.37 % of base) : 88156.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
82 (28.37 % of base) : 90006.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
82 (28.37 % of base) : 106099.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
82 (28.37 % of base) : 96134.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
78 (26.99 % of base) : 113790.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
78 (26.99 % of base) : 109614.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
78 (26.99 % of base) : 64054.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
Top method improvements (percentages):
-802 (-83.20 % of base) : 108749.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:Array[double](int):double[] (Tier1-OSR)
-511 (-64.04 % of base) : 79934.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8(ulong,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (Tier1)
-917 (-52.98 % of base) : 116572.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-917 (-52.98 % of base) : 128973.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 56036.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 88926.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 122849.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 43681.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 101207.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 68408.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 112009.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 32514.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 35308.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 48939.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 52099.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-889 (-52.70 % of base) : 95181.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-885 (-52.58 % of base) : 22950.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-885 (-52.58 % of base) : 84089.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-882 (-51.79 % of base) : 100238.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-882 (-51.79 % of base) : 107454.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 18062441 (overridden on cmd)
Total bytes of diff: 18104893 (overridden on cmd)
Total bytes of delta: 42452 (0.24 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1447 : 55055.dasm (40.66 % of base)
1426 : 35667.dasm (36.87 % of base)
846 : 29530.dasm (14.48 % of base)
599 : 29279.dasm (4.96 % of base)
540 : 55047.dasm (9.60 % of base)
523 : 34022.dasm (6.20 % of base)
463 : 54994.dasm (7.99 % of base)
432 : 50455.dasm (13.49 % of base)
418 : 29174.dasm (10.05 % of base)
406 : 41189.dasm (8.16 % of base)
404 : 53672.dasm (9.51 % of base)
385 : 58325.dasm (6.19 % of base)
380 : 53237.dasm (4.36 % of base)
374 : 33027.dasm (9.37 % of base)
363 : 14702.dasm (11.51 % of base)
353 : 29563.dasm (4.23 % of base)
344 : 56189.dasm (10.81 % of base)
342 : 35595.dasm (8.22 % of base)
321 : 35015.dasm (10.04 % of base)
315 : 54998.dasm (10.76 % of base)
Top file improvements (bytes):
-1113 : 34330.dasm (-12.73 % of base)
-907 : 14446.dasm (-2.55 % of base)
-538 : 21951.dasm (-1.80 % of base)
-383 : 37793.dasm (-18.51 % of base)
-292 : 58555.dasm (-29.77 % of base)
-201 : 37821.dasm (-9.45 % of base)
-177 : 15412.dasm (-11.07 % of base)
-175 : 35678.dasm (-1.95 % of base)
-131 : 45835.dasm (-11.55 % of base)
-90 : 26737.dasm (-35.02 % of base)
-80 : 26735.dasm (-12.78 % of base)
-79 : 26736.dasm (-21.41 % of base)
-74 : 34086.dasm (-22.02 % of base)
-74 : 48119.dasm (-4.18 % of base)
-60 : 5308.dasm (-4.52 % of base)
-56 : 3236.dasm (-4.26 % of base)
-49 : 26516.dasm (-4.16 % of base)
-46 : 30495.dasm (-1.62 % of base)
-46 : 25071.dasm (-4.86 % of base)
-46 : 48291.dasm (-8.00 % of base)
79 total files with Code Size differences (36 improved, 43 regressed), 20 unchanged.
Top method regressions (bytes):
1447 (40.66 % of base) : 55055.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1426 (36.87 % of base) : 35667.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
846 (14.48 % of base) : 29530.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier1)
599 (4.96 % of base) : 29279.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
540 (9.60 % of base) : 55047.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
523 (6.20 % of base) : 34022.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
463 (7.99 % of base) : 54994.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
432 (13.49 % of base) : 50455.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
418 (10.05 % of base) : 29174.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
406 (8.16 % of base) : 41189.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (Tier1)
404 (9.51 % of base) : 53672.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
385 (6.19 % of base) : 58325.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
380 (4.36 % of base) : 53237.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
374 (9.37 % of base) : 33027.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
363 (11.51 % of base) : 14702.dasm - (dynamicClass):_DynamicMethod4(System.IO.TextReader):int (FullOpts)
353 (4.23 % of base) : 29563.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
344 (10.81 % of base) : 56189.dasm - (dynamicClass):_DynamicMethod4(System.IO.TextReader):int (FullOpts)
342 (8.22 % of base) : 35595.dasm - (dynamicClass):ReadMyEventsListerItemFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
321 (10.04 % of base) : 35015.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
315 (10.76 % of base) : 54998.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
Top method improvements (bytes):
-1113 (-12.73 % of base) : 34330.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
-907 (-2.55 % of base) : 14446.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
-538 (-1.80 % of base) : 21951.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
-383 (-18.51 % of base) : 37793.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
-292 (-29.77 % of base) : 58555.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-201 (-9.45 % of base) : 37821.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (Tier1-OSR)
-177 (-11.07 % of base) : 15412.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
-175 (-1.95 % of base) : 35678.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.Location,int) (FullOpts)
-131 (-11.55 % of base) : 45835.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
-90 (-35.02 % of base) : 26737.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-80 (-12.78 % of base) : 26735.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (Tier1)
-79 (-21.41 % of base) : 26736.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-74 (-4.18 % of base) : 48119.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableTypeWithAnnotations(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
-74 (-22.02 % of base) : 34086.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-60 (-4.52 % of base) : 5308.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Tier1)
-56 (-4.26 % of base) : 3236.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateLiteralFields(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,byref):this (Tier1)
-49 (-4.16 % of base) : 26516.dasm - System.Resources.RuntimeResourceSet:GetObject(System.String,ubyte,ubyte):System.Object:this (Tier1)
-46 (-8.00 % of base) : 48291.dasm - Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass:WriteConsideredUse(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
-46 (-4.86 % of base) : 25071.dasm - SciMark2.LU:factor(double[][],int[]):int (Tier1-OSR)
-46 (-1.62 % of base) : 30495.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
1447 (40.66 % of base) : 55055.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1426 (36.87 % of base) : 35667.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
141 (33.41 % of base) : 3384.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
37 (33.33 % of base) : 9168.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (Tier1)
107 (32.72 % of base) : 3352.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
34 (31.48 % of base) : 25627.dasm - System.Collections.Generic.Stack`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:TryPop(byref):ubyte:this (Tier1)
308 (25.39 % of base) : 28688.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1)
198 (24.72 % of base) : 14497.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
65 (24.44 % of base) : 2907.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
181 (24.23 % of base) : 46456.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (Tier1)
79 (23.80 % of base) : 48512.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (Tier1)
10 (19.23 % of base) : 34669.dasm - System.LocalAppContextSwitches:get_EnableUnsafeUTF7Encoding():ubyte (Tier1)
10 (19.23 % of base) : 3056.dasm - System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
10 (19.23 % of base) : 3055.dasm - System.LocalAppContextSwitches:get_ForceInterpretedInvoke():ubyte (Tier1)
257 (19.02 % of base) : 37297.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (18.46 % of base) : 3332.dasm - System.Type:op_Equality(System.Type,System.Type):ubyte (Tier1)
121 (17.95 % of base) : 26734.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
28 (17.83 % of base) : 48423.dasm - Microsoft.CodeAnalysis.CSharp.ControlFlowPass:VisitStatement(Microsoft.CodeAnalysis.CSharp.BoundStatement):this (Tier1)
39 (17.57 % of base) : 26030.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo:Alternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo (Tier1)
154 (17.25 % of base) : 30279.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-90 (-35.02 % of base) : 26737.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-292 (-29.77 % of base) : 58555.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-10 (-23.26 % of base) : 9798.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
-10 (-22.73 % of base) : 38353.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
-10 (-22.73 % of base) : 9788.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
-74 (-22.02 % of base) : 34086.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-79 (-21.41 % of base) : 26736.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-10 (-20.83 % of base) : 19201.dasm - BenchmarkDotNet.Characteristics.CharacteristicObject:GetValue[int](BenchmarkDotNet.Characteristics.Characteristic`1[int]):int:this (Tier1)
-14 (-20.29 % of base) : 44890.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
-17 (-19.10 % of base) : 3067.dasm - System.Reflection.MethodInvokerCommon:DetermineStrategy_ObjSpanArgs(byref,byref,System.Reflection.MethodBase,ubyte,ubyte) (Tier1)
-383 (-18.51 % of base) : 37793.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
-10 (-17.86 % of base) : 9873.dasm - (dynamicClass):Int1Setter(System.Object,int) (FullOpts)
-10 (-17.86 % of base) : 48824.dasm - (dynamicClass):Param2Setter(System.Object,ubyte) (FullOpts)
-34 (-17.00 % of base) : 4506.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-18 (-16.82 % of base) : 46777.dasm - System.Collections.Immutable.ImmutableArray:Create[int](int[]):System.Collections.Immutable.ImmutableArray`1[int] (Tier1)
-10 (-16.67 % of base) : 19202.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[int]:get_Item(BenchmarkDotNet.Characteristics.CharacteristicObject):int:this (Tier1)
-10 (-15.38 % of base) : 9861.dasm - (dynamicClass):String1Setter(System.Object,System.String) (FullOpts)
-13 (-13.83 % of base) : 34437.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
-80 (-12.78 % of base) : 26735.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (Tier1)
-1113 (-12.73 % of base) : 34330.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
coreclr_tests.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 242934718 (overridden on cmd)
Total bytes of diff: 243186993 (overridden on cmd)
Total bytes of delta: 252275 (0.10 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
5785 : 315307.dasm (5.93 % of base)
4776 : 314654.dasm (5.24 % of base)
4441 : 314661.dasm (4.78 % of base)
3267 : 314467.dasm (2.03 % of base)
3267 : 314472.dasm (2.03 % of base)
3163 : 314675.dasm (3.31 % of base)
3094 : 315317.dasm (3.23 % of base)
2421 : 373025.dasm (11.67 % of base)
2410 : 314668.dasm (2.55 % of base)
2398 : 315312.dasm (2.57 % of base)
1802 : 315302.dasm (1.89 % of base)
1725 : 387459.dasm (27.81 % of base)
1008 : 103026.dasm (36.63 % of base)
987 : 326999.dasm (36.95 % of base)
936 : 330699.dasm (9.11 % of base)
846 : 99656.dasm (14.48 % of base)
794 : 279021.dasm (13.68 % of base)
767 : 280585.dasm (6.64 % of base)
761 : 388200.dasm (6.35 % of base)
706 : 314940.dasm (0.68 % of base)
Top file improvements (bytes):
-3043 : 315212.dasm (-26.66 % of base)
-1752 : 315696.dasm (-7.88 % of base)
-1059 : 49631.dasm (-51.36 % of base)
-1035 : 373304.dasm (-7.90 % of base)
-1020 : 49678.dasm (-52.36 % of base)
-865 : 89723.dasm (-61.87 % of base)
-579 : 128105.dasm (-7.26 % of base)
-423 : 128109.dasm (-5.68 % of base)
-346 : 337779.dasm (-5.16 % of base)
-332 : 359324.dasm (-2.53 % of base)
-321 : 371658.dasm (-2.25 % of base)
-296 : 331372.dasm (-4.77 % of base)
-281 : 314652.dasm (-22.61 % of base)
-280 : 338684.dasm (-2.60 % of base)
-267 : 367187.dasm (-2.37 % of base)
-264 : 40301.dasm (-18.82 % of base)
-250 : 316352.dasm (-4.02 % of base)
-244 : 316354.dasm (-3.96 % of base)
-243 : 317458.dasm (-3.93 % of base)
-241 : 337809.dasm (-3.26 % of base)
81 total files with Code Size differences (40 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
5785 (5.93 % of base) : 315307.dasm - u4rem:TestEntryPoint():int (FullOpts)
4776 (5.24 % of base) : 314654.dasm - i4div:TestEntryPoint():int (FullOpts)
4441 (4.78 % of base) : 314661.dasm - i4rem:TestEntryPoint():int (FullOpts)
3267 (2.03 % of base) : 314467.dasm - decimaldiv:TestEntryPoint():int (FullOpts)
3267 (2.03 % of base) : 314472.dasm - decimalrem:TestEntryPoint():int (FullOpts)
3163 (3.31 % of base) : 314675.dasm - i8rem:TestEntryPoint():int (FullOpts)
3094 (3.23 % of base) : 315317.dasm - u8rem:TestEntryPoint():int (FullOpts)
2421 (11.67 % of base) : 373025.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
2410 (2.55 % of base) : 314668.dasm - i8div:TestEntryPoint():int (FullOpts)
2398 (2.57 % of base) : 315312.dasm - u8div:TestEntryPoint():int (FullOpts)
1802 (1.89 % of base) : 315302.dasm - u4div:TestEntryPoint():int (FullOpts)
1725 (27.81 % of base) : 387459.dasm - Program:Main():int (FullOpts)
1008 (36.63 % of base) : 103026.dasm - testout1:Sub_Funclet_0():int (FullOpts)
987 (36.95 % of base) : 326999.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
936 (9.11 % of base) : 330699.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,long,ushort,double,long,ulong):int (FullOpts)
846 (14.48 % of base) : 99656.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
794 (13.68 % of base) : 279021.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
767 (6.64 % of base) : 280585.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
761 (6.35 % of base) : 388200.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
706 (0.68 % of base) : 314940.dasm - r4rem:TestEntryPoint():int (FullOpts)
Top method improvements (bytes):
-3043 (-26.66 % of base) : 315212.dasm - Test_throwinfinally_50_cs.Class1:foo(int) (FullOpts)
-1752 (-7.88 % of base) : 315696.dasm - LongMulOn32BitTest:Main():int (FullOpts)
-1059 (-51.36 % of base) : 49631.dasm - BenchmarksGame.KNucleotide_9:countEnding(int,long,ubyte):System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper] (Tier1-OSR)
-1035 (-7.90 % of base) : 373304.dasm - SimpleArray_01.Test:Test1() (FullOpts)
-1020 (-52.36 % of base) : 49678.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-865 (-61.87 % of base) : 89723.dasm - System.IO.Enumeration.FileSystemEntry:ToSpecifiedFullPath():System.String:this (Tier1)
-579 (-7.26 % of base) : 128105.dasm - GitHub_47236.Program:TestVector256() (FullOpts)
-423 (-5.68 % of base) : 128109.dasm - GitHub_47236.Program:TestVector128() (FullOpts)
-346 (-5.16 % of base) : 337779.dasm - Generated1079:MethodCallingTest() (FullOpts)
-332 (-2.53 % of base) : 359324.dasm - Generated719:MethodCallingTest() (FullOpts)
-321 (-2.25 % of base) : 371658.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-296 (-4.77 % of base) : 331372.dasm - TestShufflingThunk.Test16833:TestEntryPoint():int (FullOpts)
-281 (-22.61 % of base) : 314652.dasm - Test_hfa_params.A:foo(Test_hfa_params.doublesStruct,Test_hfa_params.doublesStruct,Test_hfa_params.doublesStruct):ubyte (FullOpts)
-280 (-2.60 % of base) : 338684.dasm - Generated1102:CalliTest() (FullOpts)
-267 (-2.37 % of base) : 367187.dasm - Generated972:MethodCallingTest() (FullOpts)
-264 (-18.82 % of base) : 40301.dasm - System.Reflection.TypeNameParser:GetType(System.String,System.Func`2[System.Reflection.AssemblyName,System.Reflection.Assembly],System.Func`4[System.Reflection.Assembly,System.String,ubyte,System.Type],System.Reflection.Assembly,ubyte,ubyte,ubyte):System.Type (Instrumented Tier1)
-250 (-4.02 % of base) : 316352.dasm - JitTest_huge_r4_huge_il.Test:Main():int (FullOpts)
-244 (-3.96 % of base) : 316354.dasm - JitTest_huge_r8_huge_il.Test:Main():int (FullOpts)
-243 (-3.93 % of base) : 317458.dasm - JitTest_hugedim_arrays_il.Test:Main():int (FullOpts)
-241 (-3.26 % of base) : 337809.dasm - Generated1079:CalliTest() (FullOpts)
Top method regressions (percentages):
338 (52.24 % of base) : 389806.dasm - TestSmallStackArgsClass:TestSmallStackArgsMethod(short,short,short,short,short,short,short,short,short,short,short,short):int:this (FullOpts)
63 (44.68 % of base) : 89346.dasm - System.Globalization.CompareInfo:IsPrefix(System.String,System.String,int):ubyte:this (Instrumented Tier1)
378 (44.06 % of base) : 279149.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
43 (42.16 % of base) : 387067.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
72 (42.11 % of base) : 270564.dasm - MainApp:TestEntryPoint():int (FullOpts)
116 (39.46 % of base) : 276622.dasm - System.Xml.XmlConverter:ToChars(double,ubyte[],int):int (FullOpts)
987 (36.95 % of base) : 326999.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1008 (36.63 % of base) : 103026.dasm - testout1:Sub_Funclet_0():int (FullOpts)
10 (35.71 % of base) : 159623.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
10 (35.71 % of base) : 159647.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
40 (35.09 % of base) : 1296.dasm - System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort] (Instrumented Tier1)
96 (34.04 % of base) : 262198.dasm - Gen`1[double]:PassAsParameter(double,double) (FullOpts)
96 (34.04 % of base) : 262215.dasm - Gen`1[double]:PassAsParameter(double,double) (FullOpts)
96 (34.04 % of base) : 262054.dasm - Gen`1[double]:PassAsParameter(double,double):this (FullOpts)
96 (34.04 % of base) : 262071.dasm - Gen`1[double]:PassAsParameter(double,double):this (FullOpts)
108 (33.33 % of base) : 275641.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
96 (32.32 % of base) : 262203.dasm - Gen`1[double]:PassAsParameter(double,double) (FullOpts)
96 (32.32 % of base) : 262220.dasm - Gen`1[double]:PassAsParameter(double,double) (FullOpts)
96 (32.32 % of base) : 262059.dasm - Gen`1[double]:PassAsParameter(double,double):this (FullOpts)
96 (32.32 % of base) : 262076.dasm - Gen`1[double]:PassAsParameter(double,double):this (FullOpts)
Top method improvements (percentages):
-67 (-80.72 % of base) : 314268.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)
-67 (-80.72 % of base) : 318232.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)
-11 (-73.33 % of base) : 324352.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
-37 (-69.81 % of base) : 318222.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)
-11 (-68.75 % of base) : 324345.dasm - Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
-11 (-68.75 % of base) : 324349.dasm - Runtime_40607.Program:SignExtendsWrittenValue(short):int (FullOpts)
-11 (-68.75 % of base) : 324351.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ushort):int (FullOpts)
-11 (-68.75 % of base) : 324348.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
-29 (-64.44 % of base) : 314183.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)
-865 (-61.87 % of base) : 89723.dasm - System.IO.Enumeration.FileSystemEntry:ToSpecifiedFullPath():System.String:this (Tier1)
-23 (-58.97 % of base) : 318170.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)
-11 (-57.89 % of base) : 260621.dasm - BringUpTest_Jmp1:Jmp1(int):int (FullOpts)
-11 (-57.89 % of base) : 324346.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(byte):int (FullOpts)
-11 (-57.89 % of base) : 324350.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(short):int (FullOpts)
-11 (-55.00 % of base) : 324347.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ubyte):int (FullOpts)
-1020 (-52.36 % of base) : 49678.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-1059 (-51.36 % of base) : 49631.dasm - BenchmarksGame.KNucleotide_9:countEnding(int,long,ubyte):System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper] (Tier1-OSR)
-192 (-32.82 % of base) : 13733.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)
-10 (-32.26 % of base) : 330482.dasm - ILGEN_0x6a2f58fb:Main():int (FullOpts)
-233 (-31.96 % of base) : 118318.dasm - DD.ZZ:Main():int (FullOpts)
libraries.crossgen2.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 37887110 (overridden on cmd)
Total bytes of diff: 38175863 (overridden on cmd)
Total bytes of delta: 288753 (0.76 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2170 : 227210.dasm (49.44 % of base)
2022 : 32601.dasm (2.83 % of base)
1152 : 238337.dasm (111.63 % of base)
1082 : 231960.dasm (4.28 % of base)
802 : 139471.dasm (58.50 % of base)
802 : 57455.dasm (58.50 % of base)
568 : 139579.dasm (13.34 % of base)
568 : 57567.dasm (13.29 % of base)
552 : 253423.dasm (12.35 % of base)
546 : 32086.dasm (4.43 % of base)
536 : 226856.dasm (7.41 % of base)
525 : 20313.dasm (135.31 % of base)
519 : 223451.dasm (25.89 % of base)
516 : 214871.dasm (10.40 % of base)
510 : 139556.dasm (85.71 % of base)
510 : 57540.dasm (85.71 % of base)
509 : 222630.dasm (3.73 % of base)
498 : 222935.dasm (23.82 % of base)
495 : 176915.dasm (23.84 % of base)
474 : 32097.dasm (7.36 % of base)
Top file improvements (bytes):
-185 : 241923.dasm (-7.45 % of base)
-181 : 103515.dasm (-12.80 % of base)
-164 : 258421.dasm (-6.67 % of base)
-161 : 211664.dasm (-5.71 % of base)
-161 : 27640.dasm (-5.71 % of base)
-153 : 33570.dasm (-8.84 % of base)
-134 : 116741.dasm (-7.39 % of base)
-128 : 245221.dasm (-10.48 % of base)
-126 : 157853.dasm (-13.31 % of base)
-126 : 194861.dasm (-13.31 % of base)
-125 : 176740.dasm (-14.24 % of base)
-120 : 244727.dasm (-10.03 % of base)
-120 : 286.dasm (-28.50 % of base)
-115 : 188688.dasm (-14.63 % of base)
-114 : 31691.dasm (-1.00 % of base)
-110 : 232647.dasm (-4.48 % of base)
-106 : 249657.dasm (-7.52 % of base)
-106 : 239311.dasm (-7.57 % of base)
-103 : 232419.dasm (-4.44 % of base)
-102 : 181505.dasm (-5.48 % of base)
76 total files with Code Size differences (39 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
2170 (49.44 % of base) : 227210.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
2022 (2.83 % of base) : 32601.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
1152 (111.63 % of base) : 238337.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
1082 (4.28 % of base) : 231960.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)
802 (58.50 % of base) : 139471.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
802 (58.50 % of base) : 57455.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
568 (13.34 % of base) : 139579.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
568 (13.29 % of base) : 57567.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
552 (12.35 % of base) : 253423.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
546 (4.43 % of base) : 32086.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)
536 (7.41 % of base) : 226856.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
525 (135.31 % of base) : 20313.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
519 (25.89 % of base) : 223451.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (FullOpts)
516 (10.40 % of base) : 214871.dasm - System.Xml.XmlWellFormedWriter+<WriteEndAttributeAsync_SepcialAtt>d__132:MoveNext():this (FullOpts)
510 (85.71 % of base) : 139556.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
510 (85.71 % of base) : 57540.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
509 (3.73 % of base) : 222630.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
498 (23.82 % of base) : 222935.dasm - System.Xml.Schema.Preprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (FullOpts)
495 (23.84 % of base) : 176915.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException (FullOpts)
474 (7.36 % of base) : 32097.dasm - Microsoft.FSharp.Linq.QueryModule:EvalNonNestedOuter(int,Microsoft.FSharp.Quotations.FSharpExpr):System.Object (FullOpts)
Top method improvements (bytes):
-185 (-7.45 % of base) : 241923.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:CreateLibrary(Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary,ubyte,System.Collections.Generic.Dictionary`2[System.String,Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+LibraryStub]):Internal.Microsoft.Extensions.DependencyModel.Library:this (FullOpts)
-181 (-12.80 % of base) : 103515.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:GetSemanticType(Microsoft.CodeAnalysis.VisualBasic.BoundNodeSummary,byref,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
-164 (-6.67 % of base) : 258421.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:CreateLibrary(Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary,ubyte,System.Collections.Generic.Dictionary`2[System.String,Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+LibraryStub]):Microsoft.Extensions.DependencyModel.Library:this (FullOpts)
-161 (-5.71 % of base) : 211664.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-161 (-5.71 % of base) : 27640.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
-153 (-8.84 % of base) : 33570.dasm - <StartupCode$FSharp-Core>.$Quotations:Equals$cont@186-8(Microsoft.FSharp.Quotations.ExprConstInfo,Microsoft.FSharp.Quotations.ExprConstInfo,Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
-134 (-7.39 % of base) : 116741.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-128 (-10.48 % of base) : 245221.dasm - Microsoft.Extensions.Logging.Console.JsonConsoleFormatter:WriteItem(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]) (FullOpts)
-126 (-13.31 % of base) : 157853.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-126 (-13.31 % of base) : 194861.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-125 (-14.24 % of base) : 176740.dasm - Microsoft.CSharp.RuntimeBinder.ExpressionTreeCallRewriter:GenerateBinaryOperator(Microsoft.CSharp.RuntimeBinder.Semantics.ExprCall):System.Linq.Expressions.Expression:this (FullOpts)
-120 (-28.50 % of base) : 286.dasm - System.Decimal:Clamp(System.Decimal,System.Decimal,System.Decimal):System.Decimal (FullOpts)
-120 (-10.03 % of base) : 244727.dasm - System.Runtime.InteropServices.Marshalling.ComVariantMarshaller:ConvertToUnmanaged(System.Object):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
-115 (-14.63 % of base) : 188688.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-114 (-1.00 % of base) : 31691.dasm - Microsoft.FSharp.Quotations.FSharpExpr:GetLayout(ubyte):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
-110 (-4.48 % of base) : 232647.dasm - Microsoft.VisualBasic.CompilerServices.VB6File:InternalWriteHelper(System.Object[]):this (FullOpts)
-106 (-7.52 % of base) : 249657.dasm - System.Resources.Extensions.PreserializedResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
-106 (-7.57 % of base) : 239311.dasm - System.Resources.ResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
-103 (-4.44 % of base) : 232419.dasm - Microsoft.VisualBasic.CompilerServices.LikeOperator:MatchRange(System.String,int,byref,Microsoft.VisualBasic.CompilerServices.LikeOperator+LigatureInfo[],System.String,int,byref,Microsoft.VisualBasic.CompilerServices.LikeOperator+LigatureInfo[],byref,byref,byref,System.Globalization.CompareInfo,int,byref,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.LikeOperator+Range],ubyte) (FullOpts)
-102 (-5.48 % of base) : 181505.dasm - System.Security.Cryptography.CapiHelper:ToDSAParameters(ubyte[],ubyte,ubyte[]):System.Security.Cryptography.DSAParameters (FullOpts)
Top method regressions (percentages):
19 (146.15 % of base) : 115454.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
19 (146.15 % of base) : 115455.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
19 (146.15 % of base) : 115456.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
19 (146.15 % of base) : 115457.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
525 (135.31 % of base) : 20313.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
1152 (111.63 % of base) : 238337.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
510 (85.71 % of base) : 139556.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
510 (85.71 % of base) : 57540.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
23 (76.67 % of base) : 109854.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
23 (76.67 % of base) : 109860.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
370 (61.77 % of base) : 181400.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
802 (58.50 % of base) : 139471.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
802 (58.50 % of base) : 57455.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
274 (55.92 % of base) : 21697.dasm - System.Array+SorterObjectArray:PickPivotAndPartition(int,int):int:this (FullOpts)
205 (50.12 % of base) : 141481.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.JoinClauseSyntax:Update(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.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.JoinIntoClauseSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.JoinClauseSyntax:this (FullOpts)
205 (50.12 % of base) : 59973.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.JoinClauseSyntax:Update(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.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.JoinIntoClauseSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.JoinClauseSyntax:this (FullOpts)
19 (50.00 % of base) : 253084.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.ReadOnlySpan`1[uint],uint):uint (FullOpts)
2170 (49.44 % of base) : 227210.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
174 (47.54 % of base) : 104609.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundForToStatement:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundForToUserDefinedOperators,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.BoundForToStatement:this (FullOpts)
421 (46.47 % of base) : 139450.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
Top method improvements (percentages):
-120 (-28.50 % of base) : 286.dasm - System.Decimal:Clamp(System.Decimal,System.Decimal,System.Decimal):System.Decimal (FullOpts)
-17 (-26.98 % of base) : 121642.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
-32 (-26.89 % of base) : 247715.dasm - System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
-13 (-24.07 % of base) : 131682.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-13 (-24.07 % of base) : 49262.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-14 (-23.33 % of base) : 207434.dasm - System.Xml.XmlConverter:IsWhitespace(ushort):ubyte (FullOpts)
-17 (-23.29 % of base) : 139302.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-17 (-23.29 % of base) : 57283.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-14 (-22.22 % of base) : 97091.dasm - Microsoft.CodeAnalysis.VisualBasic.LookupOptionExtensions:ThrowIfInvalid(int) (FullOpts)
-24 (-22.22 % of base) : 232066.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
-19 (-21.59 % of base) : 184847.dasm - System.Text.Json.Utf8JsonReader:ThrowInvalidLiteral(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
-94 (-21.51 % of base) : 2470.dasm - System.Guid:op_GreaterThan(System.Guid,System.Guid):ubyte (FullOpts)
-94 (-21.51 % of base) : 2468.dasm - System.Guid:op_LessThan(System.Guid,System.Guid):ubyte (FullOpts)
-23 (-21.50 % of base) : 237071.dasm - System.Reflection.TypeLoading.Helpers:CloneArray[ubyte](ubyte[]):ubyte[] (FullOpts)
-23 (-21.50 % of base) : 169362.dasm - System.Reflection.TypeLoading.Helpers:CloneArray[ubyte](ubyte[]):ubyte[] (FullOpts)
-94 (-21.36 % of base) : 2471.dasm - System.Guid:op_GreaterThanOrEqual(System.Guid,System.Guid):ubyte (FullOpts)
-94 (-21.36 % of base) : 2469.dasm - System.Guid:op_LessThanOrEqual(System.Guid,System.Guid):ubyte (FullOpts)
-50 (-21.10 % of base) : 95751.dasm - System.Net.Security.SslConnectionInfo:MapProtocolVersion(long):int:this (FullOpts)
-29 (-20.86 % of base) : 177122.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:IsMatchingStatic(Microsoft.CSharp.RuntimeBinder.Semantics.SymWithType,Microsoft.CSharp.RuntimeBinder.Semantics.Expr):ubyte (FullOpts)
-21 (-20.39 % of base) : 232065.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
libraries.pmi.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 48565136 (overridden on cmd)
Total bytes of diff: 49141653 (overridden on cmd)
Total bytes of delta: 576517 (1.19 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
3665 : 108171.dasm (86.38 % of base)
1752 : 117372.dasm (42.52 % of base)
1571 : 252228.dasm (70.13 % of base)
1518 : 214134.dasm (42.30 % of base)
1467 : 248075.dasm (112.59 % of base)
1403 : 253527.dasm (44.87 % of base)
1378 : 107649.dasm (16.78 % of base)
1360 : 49822.dasm (32.43 % of base)
1359 : 125577.dasm (25.67 % of base)
1302 : 241233.dasm (10.37 % of base)
1124 : 46777.dasm (8.99 % of base)
1117 : 195460.dasm (524.41 % of base)
1117 : 195598.dasm (524.41 % of base)
1085 : 77978.dasm (23.03 % of base)
1024 : 43565.dasm (11.42 % of base)
992 : 174211.dasm (3.52 % of base)
987 : 234158.dasm (36.95 % of base)
983 : 103547.dasm (5.66 % of base)
978 : 176291.dasm (35.00 % of base)
977 : 177086.dasm (54.28 % of base)
Top file improvements (bytes):
-879 : 103588.dasm (-3.59 % of base)
-734 : 103370.dasm (-16.72 % of base)
-542 : 74030.dasm (-9.51 % of base)
-467 : 247359.dasm (-5.77 % of base)
-380 : 287003.dasm (-24.44 % of base)
-324 : 129527.dasm (-16.15 % of base)
-316 : 150552.dasm (-8.71 % of base)
-283 : 247183.dasm (-7.43 % of base)
-277 : 156712.dasm (-51.97 % of base)
-277 : 220183.dasm (-51.97 % of base)
-259 : 252379.dasm (-4.95 % of base)
-237 : 43205.dasm (-10.34 % of base)
-233 : 41117.dasm (-2.22 % of base)
-208 : 43538.dasm (-10.37 % of base)
-206 : 103514.dasm (-10.56 % of base)
-200 : 214129.dasm (-5.27 % of base)
-197 : 126548.dasm (-9.21 % of base)
-189 : 252598.dasm (-6.96 % of base)
-185 : 106593.dasm (-2.08 % of base)
-181 : 221784.dasm (-4.87 % of base)
83 total files with Code Size differences (42 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
3665 (86.38 % of base) : 108171.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)
1752 (42.52 % of base) : 117372.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DeclarationContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
1571 (70.13 % of base) : 252228.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1518 (42.30 % of base) : 214134.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)
1467 (112.59 % of base) : 248075.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
1403 (44.87 % of base) : 253527.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
1378 (16.78 % of base) : 107649.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateVarianceDiagnosticsForTypeRecursively(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,short,int,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+VarianceDiagnosticsTargetTypeParameter,int,byref):this (FullOpts)
1360 (32.43 % of base) : 49822.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1359 (25.67 % of base) : 125577.dasm - Microsoft.CodeAnalysis.VisualBasic.IteratorRewriter:EnsureAllSymbolsAndSignature():ubyte:this (FullOpts)
1302 (10.37 % of base) : 241233.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1124 (8.99 % of base) : 46777.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Numerics.Vector`1[float]):System.Nullable`1[int]:this (FullOpts)
1117 (524.41 % of base) : 195598.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1117 (524.41 % of base) : 195460.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
1085 (23.03 % of base) : 77978.dasm - Microsoft.CodeAnalysis.CSharp.AsyncRewriter+AsyncIteratorRewriter:VerifyPresenceOfRequiredAPIs(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
1024 (11.42 % of base) : 43565.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
992 (3.52 % of base) : 174211.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)
987 (36.95 % of base) : 234158.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
983 (5.66 % of base) : 103547.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)
978 (35.00 % of base) : 176291.dasm - Microsoft.Build.Construction.SolutionProjectGenerator:AddReferencesBuildTask(Microsoft.Build.Execution.ProjectTargetInstance,System.String,System.String) (FullOpts)
977 (54.28 % of base) : 177086.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
Top method improvements (bytes):
-879 (-3.59 % of base) : 103588.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
-734 (-16.72 % of base) : 103370.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)
-542 (-9.51 % of base) : 74030.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-467 (-5.77 % of base) : 247359.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-380 (-24.44 % of base) : 287003.dasm - System.Net.NetworkInformation.NetworkChange+<ReadEventsAsync>d__29:MoveNext():this (FullOpts)
-324 (-16.15 % of base) : 129527.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)
-316 (-8.71 % of base) : 150552.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]):this (FullOpts)
-283 (-7.43 % of base) : 247183.dasm - System.Formats.Asn1.AsnDecoder:ParseGeneralizedTime(int,System.ReadOnlySpan`1[ubyte]):System.DateTimeOffset (FullOpts)
-277 (-51.97 % of base) : 156712.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-277 (-51.97 % of base) : 220183.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-259 (-4.95 % of base) : 252379.dasm - System.Security.Cryptography.Xml.KeyInfoX509Data:GetXml(System.Xml.XmlDocument):System.Xml.XmlElement:this (FullOpts)
-237 (-10.34 % of base) : 43205.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-233 (-2.22 % of base) : 41117.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
-208 (-10.37 % of base) : 43538.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-206 (-10.56 % of base) : 103514.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CheckSharedSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref,int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
-200 (-5.27 % of base) : 214129.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],byref,byref):this (FullOpts)
-197 (-9.21 % of base) : 126548.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-189 (-6.96 % of base) : 252598.dasm - System.Security.Cryptography.Xml.Utils:GetPropagatedAttributes(System.Xml.XmlElement):System.Security.Cryptography.Xml.CanonicalXmlNodeList (FullOpts)
-185 (-2.08 % of base) : 106593.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:RemoveDirectConstraintConflicts(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint],Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol],int,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterConstraint] (FullOpts)
-181 (-4.87 % of base) : 221784.dasm - Newtonsoft.Json.JsonWriter:WriteValueAsync(Newtonsoft.Json.JsonWriter,int,System.Object,System.Threading.CancellationToken):System.Threading.Tasks.Task (FullOpts)
Top method regressions (percentages):
944 (579.14 % of base) : 195541.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(ulong):this (FullOpts)
937 (532.39 % of base) : 195618.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(ulong):this (FullOpts)
1117 (524.41 % of base) : 195598.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1117 (524.41 % of base) : 195460.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
32 (320.00 % of base) : 117674.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
32 (320.00 % of base) : 117680.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
23 (255.56 % of base) : 125122.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
23 (255.56 % of base) : 125123.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
23 (255.56 % of base) : 125124.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
23 (255.56 % of base) : 125125.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
24 (218.18 % of base) : 44876.dasm - Microsoft.CodeAnalysis.CSharp.Conversion:get_IsPointer():ubyte:this (FullOpts)
38 (135.71 % of base) : 76320.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
36 (128.57 % of base) : 105924.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
187 (114.72 % of base) : 117991.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:StartsXmlDoc(int):ubyte:this (FullOpts)
1467 (112.59 % of base) : 248075.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
168 (99.41 % of base) : 227251.dasm - System.Xml.XmlUtf8RawTextWriter:EncodeChar(byref,ulong,byref):this (FullOpts)
94 (93.07 % of base) : 227253.dasm - System.Xml.XmlUtf8RawTextWriter:CharToUTF8(byref,ulong,byref) (FullOpts)
3665 (86.38 % of base) : 108171.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)
274 (79.19 % of base) : 112409.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundForToStatement:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundForToUserDefinedOperators,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.BoundForToStatement:this (FullOpts)
346 (79.00 % of base) : 67548.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.InterfaceDeclarationSyntax: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.InterfaceDeclarationSyntax:this (FullOpts)
Top method improvements (percentages):
-277 (-51.97 % of base) : 156712.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-277 (-51.97 % of base) : 220183.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-87 (-46.28 % of base) : 294110.dasm - System.Numerics.BigInteger:Parse(System.ReadOnlySpan`1[ushort],System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-54 (-38.85 % of base) : 294111.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
-102 (-37.92 % of base) : 293899.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (FullOpts)
-54 (-37.24 % of base) : 293906.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-108 (-37.11 % of base) : 293901.dasm - System.Numerics.BigInteger:Parse(System.String,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-36 (-35.64 % of base) : 160925.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
-36 (-34.95 % of base) : 160922.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
-110 (-31.88 % of base) : 221453.dasm - Newtonsoft.Json.JsonTextReader:BigIntegerParse(System.String,System.Globalization.CultureInfo):System.Object (FullOpts)
-110 (-31.34 % of base) : 33964.dasm - System.Data.Common.BigIntegerStorage:ConvertXmlToObject(System.String):System.Object:this (FullOpts)
-15 (-31.25 % of base) : 32594.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
-54 (-30.68 % of base) : 294108.dasm - System.Numerics.BigInteger:TryParse(System.String,System.IFormatProvider,byref):ubyte (FullOpts)
-6 (-30.00 % of base) : 279620.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
-55 (-29.73 % of base) : 293903.dasm - System.Numerics.BigInteger:TryParse(System.String,byref):ubyte (FullOpts)
-19 (-29.23 % of base) : 278865.dasm - System.IO.Packaging.OrderedDictionary`2[System.__Canon,System.Nullable`1[int]]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
-104 (-28.49 % of base) : 143991.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
-104 (-28.49 % of base) : 208303.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
-33 (-27.97 % of base) : 171659.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:ClearRevocationUnknown():this (FullOpts)
-19 (-27.94 % of base) : 278890.dasm - System.IO.Packaging.OrderedDictionary`2[double,System.Nullable`1[int]]:TryGetValue(double,byref):ubyte:this (FullOpts)
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 30459618 (overridden on cmd)
Total bytes of diff: 30693632 (overridden on cmd)
Total bytes of delta: 234014 (0.77 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
557 : 72544.dasm (4.48 % of base)
461 : 59361.dasm (11.11 % of base)
345 : 37512.dasm (8.89 % of base)
317 : 46877.dasm (7.95 % of base)
317 : 77028.dasm (7.95 % of base)
316 : 23267.dasm (8.08 % of base)
316 : 29034.dasm (8.08 % of base)
316 : 46228.dasm (8.08 % of base)
316 : 62490.dasm (8.08 % of base)
316 : 70229.dasm (8.08 % of base)
316 : 77297.dasm (8.08 % of base)
316 : 14526.dasm (8.08 % of base)
316 : 39490.dasm (8.08 % of base)
316 : 49455.dasm (8.08 % of base)
316 : 25671.dasm (8.08 % of base)
316 : 31829.dasm (8.08 % of base)
316 : 34580.dasm (8.08 % of base)
316 : 39905.dasm (8.08 % of base)
316 : 50773.dasm (8.08 % of base)
316 : 75534.dasm (8.08 % of base)
Top file improvements (bytes):
-405 : 51744.dasm (-58.44 % of base)
-404 : 6439.dasm (-46.60 % of base)
-395 : 6539.dasm (-46.04 % of base)
-388 : 18019.dasm (-45.38 % of base)
-377 : 37483.dasm (-44.93 % of base)
-267 : 28926.dasm (-7.89 % of base)
-266 : 4707.dasm (-7.89 % of base)
-248 : 38664.dasm (-8.87 % of base)
-240 : 37741.dasm (-11.71 % of base)
-222 : 77251.dasm (-16.62 % of base)
-215 : 4409.dasm (-34.90 % of base)
-202 : 72926.dasm (-9.99 % of base)
-198 : 68232.dasm (-27.05 % of base)
-179 : 68456.dasm (-24.03 % of base)
-147 : 75528.dasm (-12.68 % of base)
-125 : 46683.dasm (-2.92 % of base)
-81 : 4884.dasm (-12.44 % of base)
-73 : 71909.dasm (-21.92 % of base)
-73 : 7841.dasm (-21.47 % of base)
-66 : 9480.dasm (-19.82 % of base)
66 total files with Code Size differences (26 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
557 (4.48 % of base) : 72544.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1-OSR)
461 (11.11 % of base) : 59361.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
345 (8.89 % of base) : 37512.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
317 (7.95 % of base) : 46877.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
317 (7.95 % of base) : 77028.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 23267.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 29034.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 46228.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 62490.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 70229.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 77297.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 14526.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 39490.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 49455.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 25671.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 31829.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 34580.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 39905.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 50773.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
316 (8.08 % of base) : 75534.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonReaderOptions,byref,byref) (Tier1-OSR)
Top method improvements (bytes):
-405 (-58.44 % of base) : 51744.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-404 (-46.60 % of base) : 6439.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-395 (-46.04 % of base) : 6539.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-388 (-45.38 % of base) : 18019.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-377 (-44.93 % of base) : 37483.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-267 (-7.89 % of base) : 28926.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-266 (-7.89 % of base) : 4707.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-248 (-8.87 % of base) : 38664.dasm - System.Xml.XmlTextReaderImpl:ParseAttributes():this (Tier1-OSR)
-240 (-11.71 % of base) : 37741.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Init(System.String,int,int,int,int,long,byref,byref):ubyte:this (Tier1)
-222 (-16.62 % of base) : 77251.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:Fill(System.Span`1[System.__Canon],int,System.Func`2[int,System.__Canon]) (Tier1-OSR)
-215 (-34.90 % of base) : 4409.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Instrumented Tier1)
-202 (-9.99 % of base) : 72926.dasm - System.Threading.Channels.Tests.ChannelTestBase+<>c__DisplayClass25_0+<<SingleProducerConsumer_PingPong_Success>b__1>d:MoveNext():this (Tier1-OSR)
-198 (-27.05 % of base) : 68232.dasm - Test.Cryptography.ByteUtils:HexToByteArray(System.String):ubyte[] (Tier1-OSR)
-179 (-24.03 % of base) : 68456.dasm - Test.Cryptography.ByteUtils:HexToByteArray(System.String):ubyte[] (Tier1-OSR)
-147 (-12.68 % of base) : 75528.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-125 (-2.92 % of base) : 46683.dasm - System.Net.NetworkInformation.StringParsingHelpers:ParseInterfaceStatisticsTableFromFile(System.String,System.String):System.Net.NetworkInformation.IPInterfaceStatisticsTable (Tier0-FullOpts)
-81 (-12.44 % of base) : 4884.dasm - System.Reflection.AssemblyName:.ctor(System.String):this (Instrumented Tier1)
-73 (-21.92 % of base) : 71909.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-73 (-21.47 % of base) : 7841.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-66 (-19.82 % of base) : 9480.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method regressions (percentages):
65 (30.66 % of base) : 4394.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
74 (18.23 % of base) : 76256.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
74 (18.23 % of base) : 76534.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
74 (18.23 % of base) : 76705.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
43 (16.54 % of base) : 76370.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
14 (16.09 % of base) : 43197.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Instrumented Tier1)
37 (15.88 % of base) : 776.dasm - System.IO.PathInternal:RemoveRelativeSegments(System.String,int):System.String (Instrumented Tier1)
64 (15.57 % of base) : 33570.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
63 (15.52 % of base) : 72646.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
62 (15.16 % of base) : 34701.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
62 (15.16 % of base) : 45259.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
62 (15.16 % of base) : 67807.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
14 (15.05 % of base) : 34016.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (15.05 % of base) : 48252.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (15.05 % of base) : 60576.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (15.05 % of base) : 76276.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (15.05 % of base) : 26060.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (15.05 % of base) : 26548.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (15.05 % of base) : 15796.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (15.05 % of base) : 19672.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
Top method improvements (percentages):
-405 (-58.44 % of base) : 51744.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-404 (-46.60 % of base) : 6439.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-395 (-46.04 % of base) : 6539.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-65 (-45.45 % of base) : 9483.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
-388 (-45.38 % of base) : 18019.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-377 (-44.93 % of base) : 37483.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-215 (-34.90 % of base) : 4409.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Instrumented Tier1)
-198 (-27.05 % of base) : 68232.dasm - Test.Cryptography.ByteUtils:HexToByteArray(System.String):ubyte[] (Tier1-OSR)
-179 (-24.03 % of base) : 68456.dasm - Test.Cryptography.ByteUtils:HexToByteArray(System.String):ubyte[] (Tier1-OSR)
-73 (-21.92 % of base) : 71909.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-73 (-21.47 % of base) : 7841.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-66 (-19.82 % of base) : 9480.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-222 (-16.62 % of base) : 77251.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:Fill(System.Span`1[System.__Canon],int,System.Func`2[int,System.__Canon]) (Tier1-OSR)
-10 (-16.39 % of base) : 54879.dasm - (dynamicClass):InvokeStub_ValueTypeWithoutOverrides.GetId(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
-7 (-14.00 % of base) : 54924.dasm - (dynamicClass):InvokeStub_ValueTypeWithOverrides.ToString(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
-147 (-12.68 % of base) : 75528.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Instrumented Tier1)
-81 (-12.44 % of base) : 4884.dasm - System.Reflection.AssemblyName:.ctor(System.String):this (Instrumented Tier1)
-45 (-12.26 % of base) : 15201.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
-45 (-12.26 % of base) : 35465.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
-10 (-11.90 % of base) : 55029.dasm - (dynamicClass):InvokeStub_ValueTypeWithOverrides.GetId(System.Object,System.Object,ulong):System.Object (FullOpts)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 102474514 (overridden on cmd)
Total bytes of diff: 103170243 (overridden on cmd)
Total bytes of delta: 695729 (0.68 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2499 : 264680.dasm (66.29 % of base)
2289 : 60802.dasm (2.49 % of base)
2241 : 60640.dasm (2.48 % of base)
2241 : 60981.dasm (2.48 % of base)
2052 : 243533.dasm (15.99 % of base)
1992 : 235362.dasm (15.99 % of base)
1966 : 65258.dasm (2.29 % of base)
1872 : 182035.dasm (29.77 % of base)
1817 : 54265.dasm (45.48 % of base)
1621 : 175552.dasm (10.28 % of base)
1480 : 234599.dasm (15.98 % of base)
1480 : 240146.dasm (15.98 % of base)
1479 : 210241.dasm (22.97 % of base)
1464 : 94949.dasm (61.36 % of base)
1460 : 180848.dasm (112.65 % of base)
1357 : 175439.dasm (35.48 % of base)
1357 : 54890.dasm (33.24 % of base)
1323 : 227368.dasm (60.74 % of base)
1302 : 32480.dasm (10.37 % of base)
1300 : 169641.dasm (18.73 % of base)
Top file improvements (bytes):
-1621 : 108429.dasm (-9.89 % of base)
-867 : 121209.dasm (-3.38 % of base)
-628 : 120718.dasm (-1.49 % of base)
-605 : 202009.dasm (-27.54 % of base)
-560 : 94567.dasm (-3.19 % of base)
-550 : 94405.dasm (-6.07 % of base)
-511 : 210224.dasm (-3.52 % of base)
-467 : 115928.dasm (-5.77 % of base)
-467 : 287764.dasm (-8.41 % of base)
-465 : 204726.dasm (-3.08 % of base)
-442 : 94266.dasm (-4.00 % of base)
-411 : 200863.dasm (-16.30 % of base)
-399 : 91184.dasm (-6.08 % of base)
-396 : 165295.dasm (-16.41 % of base)
-385 : 188338.dasm (-2.23 % of base)
-382 : 100847.dasm (-18.95 % of base)
-377 : 294946.dasm (-24.51 % of base)
-374 : 229153.dasm (-5.65 % of base)
-360 : 184003.dasm (-3.42 % of base)
-347 : 96284.dasm (-5.29 % of base)
82 total files with Code Size differences (43 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
2499 (66.29 % of base) : 264680.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
2289 (2.49 % of base) : 60802.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<OrObject_TestData>d__90:MoveNext():ubyte:this (FullOpts)
2241 (2.48 % of base) : 60640.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<AndObject_TestData>d__13:MoveNext():ubyte:this (FullOpts)
2241 (2.48 % of base) : 60981.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<XorObject_TestData>d__116:MoveNext():ubyte:this (FullOpts)
2052 (15.99 % of base) : 243533.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)
1992 (15.99 % of base) : 235362.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)
1966 (2.29 % of base) : 65258.dasm - System.CodeDom.Compiler.Tests.CodeValidatorTests+<ValidateIdentifiers_Valid_TestData>d__0:MoveNext():ubyte:this (FullOpts)
1872 (29.77 % of base) : 182035.dasm - System.Reflection.Metadata.Tests.BlobUtilitiesTests:GetUTF8ByteCount():this (FullOpts)
1817 (45.48 % of base) : 54265.dasm - Microsoft.Extensions.Options.Generators.SymbolLoader:TryLoad(Microsoft.CodeAnalysis.Compilation,byref):ubyte (FullOpts)
1621 (10.28 % of base) : 175552.dasm - XmlCoreTest.Common.FilePathUtil+<GetDataFiles>d__19:MoveNext():ubyte:this (FullOpts)
1480 (15.98 % of base) : 234599.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)
1480 (15.98 % of base) : 240146.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)
1479 (22.97 % of base) : 210241.dasm - System.Tests.EnumTests:ToString_TryFormat(ubyte,ubyte) (FullOpts)
1464 (61.36 % of base) : 94949.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
1460 (112.65 % of base) : 180848.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
1357 (33.24 % of base) : 54890.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1357 (35.48 % of base) : 175439.dasm - System.Xml.XmlConvertTests.ToTypeTests:ToType56():int:this (FullOpts)
1323 (60.74 % of base) : 227368.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1302 (10.37 % of base) : 32480.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1300 (18.73 % of base) : 169641.dasm - System.Xml.XslTransformApiTests.CArgRemoveParam:RemoveParam11(int,int,int,int):this (FullOpts)
Top method improvements (bytes):
-1621 (-9.89 % of base) : 108429.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.overloadResolution.Operators.basic.enum005.enum005.Test:MainMethod():int (FullOpts)
-867 (-3.38 % of base) : 121209.dasm - System.Globalization.Tests.CultureInfoAll+<CultureInfo_TestData>d__102:MoveNext():ubyte:this (FullOpts)
-628 (-1.49 % of base) : 120718.dasm - System.Globalization.Tests.CultureInfoConstructor+<Ctor_String_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-605 (-27.54 % of base) : 202009.dasm - System.Tests.ByteTests:ToStringTest(ubyte,System.String,System.IFormatProvider,System.String) (FullOpts)
-560 (-3.19 % of base) : 94567.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_True():this (FullOpts)
-550 (-6.07 % of base) : 94405.dasm - System.Data.Tests.DataColumnCollectionTest:Add():this (FullOpts)
-511 (-3.52 % of base) : 210224.dasm - System.Tests.EnumTests+<HasFlag_TestData>d__41:MoveNext():ubyte:this (FullOpts)
-467 (-8.41 % of base) : 287764.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-467 (-5.77 % of base) : 115928.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-465 (-3.08 % of base) : 204726.dasm - System.Tests.ArrayTests+<Copy_SZArray_Reliable_TestData>d__56:MoveNext():ubyte:this (FullOpts)
-442 (-4.00 % of base) : 94266.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_False():this (FullOpts)
-411 (-16.30 % of base) : 200863.dasm - System.Tests.Int16Tests:ToStringTest(short,System.String,System.IFormatProvider,System.String) (FullOpts)
-399 (-6.08 % of base) : 91184.dasm - MonoTests.System.Configuration.ConfigurationErrorsExceptionTest:Constructor8():this (FullOpts)
-396 (-16.41 % of base) : 165295.dasm - System.PrivateUri.Tests.UriCreationOptionsTest:<DisableCanonicalization_WorksWithDifferentSchemes>g__DoAsserts|8_0(System.Uri,byref) (FullOpts)
-385 (-2.23 % of base) : 188338.dasm - System.Tests.ConvertToBase64StringTests+<ConvertToBase64StringTests_TestData>d__5:MoveNext():ubyte:this (FullOpts)
-382 (-18.95 % of base) : 100847.dasm - System.Diagnostics.TraceSourceConfigTests.ConfigurationTests:RuntimeFilterChange():this (FullOpts)
-377 (-24.51 % of base) : 294946.dasm - System.Threading.Channels.Tests.ChannelTests+<DefaultWriteAsync_UsesWaitToWriteAsyncAndTryWrite>d__7:MoveNext():this (FullOpts)
-374 (-5.65 % of base) : 229153.dasm - System.ServiceModel.Syndication.Tests.SyndicationFeedTests:Ctor_SyndicationFeed_Full(ubyte):this (FullOpts)
-360 (-3.42 % of base) : 184003.dasm - System.Reflection.Tests.FieldTests:TestLiteralFields1() (FullOpts)
-347 (-5.29 % of base) : 96284.dasm - System.Data.Tests.DataColumnCollectionTest2:Add():this (FullOpts)
Top method regressions (percentages):
944 (579.14 % of base) : 257644.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(ulong):this (FullOpts)
937 (532.39 % of base) : 234961.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(ulong):this (FullOpts)
1117 (524.41 % of base) : 146521.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1117 (524.41 % of base) : 237741.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
1460 (112.65 % of base) : 180848.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
408 (101.24 % of base) : 146985.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetLatinTextInput(int,int):Xunit.TheoryData (FullOpts)
346 (79.00 % of base) : 56052.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ClassDeclarationSyntax: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.ClassDeclarationSyntax:this (FullOpts)
1258 (68.97 % of base) : 247871.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
399 (67.06 % of base) : 147017.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetUnicodeText(int):Xunit.TheoryData (FullOpts)
2499 (66.29 % of base) : 264680.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
734 (66.19 % of base) : 171695.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
956 (62.77 % of base) : 180953.dasm - System.Reflection.Emit.Tests.MethodBuilderDefineParameter:DefineParameter_AllAttributes():this (FullOpts)
372 (61.90 % of base) : 56751.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
1464 (61.36 % of base) : 94949.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
1323 (60.74 % of base) : 227368.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
673 (60.69 % of base) : 182835.dasm - System.Reflection.Metadata.Ecma335.Tests.MetadataBuilderTests:ValidateLocalScopeTable():this (FullOpts)
20 (60.61 % of base) : 92850.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
478 (59.68 % of base) : 202200.dasm - System.Tests.TimeOnlyTests:DeconstructionTest_Hour_Minute_Second_Millisecond(int,int,int,int) (FullOpts)
1069 (59.19 % of base) : 14855.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.QueryExpressionFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
14 (58.33 % of base) : 34930.dasm - LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
Top method improvements (percentages):
-241 (-97.57 % of base) : 208302.dasm - System.Tests.SingleTests_GenericMath:IsPow2Test() (FullOpts)
-48 (-88.89 % of base) : 91542.dasm - System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
-43 (-87.76 % of base) : 182424.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
-43 (-87.76 % of base) : 182427.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
-41 (-87.23 % of base) : 188188.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
-31 (-83.78 % of base) : 188809.dasm - System.Runtime.InteropServices.RuntimeInformationTests.CheckPlatformTests:CheckLinux():this (FullOpts)
-264 (-81.23 % of base) : 192507.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
-261 (-56.62 % of base) : 214456.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Equality():this (FullOpts)
-286 (-56.30 % of base) : 214453.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Inequality():this (FullOpts)
-236 (-50.75 % of base) : 192510.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
-220 (-49.89 % of base) : 192450.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
-83 (-40.89 % of base) : 192290.dasm - System.Numerics.Tests.parseTest+<>c:<Parse_Hex32Bits>b__7_0():this (FullOpts)
-134 (-39.53 % of base) : 189126.dasm - System.Runtime.InteropServices.Tests.GetExceptionCodeTests:GetExceptionCode_NormalExceptionInsideCatch_ReturnsExpected(int):this (FullOpts)
-188 (-38.13 % of base) : 192458.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeTest() (FullOpts)
-134 (-37.02 % of base) : 189130.dasm - System.Runtime.InteropServices.Tests.GetExceptionCodeTests:GetExceptionCode_ComExceptionInsideCatch_ReturnsExpected(int):this (FullOpts)
-188 (-36.94 % of base) : 192460.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsRealNumberTest() (FullOpts)
-168 (-35.22 % of base) : 192546.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsImaginaryNumberTest() (FullOpts)
-156 (-35.06 % of base) : 192534.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeInfinityTest() (FullOpts)
-156 (-35.06 % of base) : 192520.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsPositiveInfinityTest() (FullOpts)
-108 (-34.84 % of base) : 262360.dasm - System.Text.Json.Serialization.Tests.ConvertersForUnsupportedTypesFunctionalTests+BigIntegerConverter:Parse(System.String):System.Numerics.BigInteger:this (FullOpts)
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10222975 (overridden on cmd)
Total bytes of diff: 10411022 (overridden on cmd)
Total bytes of delta: 188047 (1.84 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1833 : 23852.dasm (60.94 % of base)
1357 : 23715.dasm (33.24 % of base)
1276 : 10242.dasm (10.03 % of base)
1200 : 1379.dasm (11.58 % of base)
1091 : 8554.dasm (23.76 % of base)
1042 : 4685.dasm (12.23 % of base)
1038 : 4574.dasm (17.16 % of base)
1030 : 1534.dasm (27.70 % of base)
977 : 1381.dasm (6.20 % of base)
945 : 1522.dasm (35.95 % of base)
865 : 16042.dasm (2.94 % of base)
852 : 31314.dasm (32.98 % of base)
846 : 29904.dasm (14.48 % of base)
827 : 9300.dasm (4.15 % of base)
817 : 31045.dasm (4.76 % of base)
805 : 12426.dasm (13.75 % of base)
794 : 19302.dasm (13.60 % of base)
753 : 29885.dasm (5.73 % of base)
743 : 4537.dasm (4.02 % of base)
742 : 2850.dasm (5.87 % of base)
Top file improvements (bytes):
-878 : 7246.dasm (-8.96 % of base)
-272 : 1366.dasm (-5.97 % of base)
-218 : 1361.dasm (-1.58 % of base)
-185 : 23485.dasm (-9.92 % of base)
-177 : 790.dasm (-11.07 % of base)
-169 : 11771.dasm (-15.48 % of base)
-131 : 19291.dasm (-10.36 % of base)
-130 : 25559.dasm (-9.89 % of base)
-126 : 31461.dasm (-4.86 % of base)
-124 : 1369.dasm (-1.48 % of base)
-122 : 30775.dasm (-19.37 % of base)
-110 : 23365.dasm (-6.57 % of base)
-110 : 1389.dasm (-3.35 % of base)
-102 : 13861.dasm (-5.33 % of base)
-99 : 25317.dasm (-7.43 % of base)
-97 : 13465.dasm (-11.12 % of base)
-96 : 23616.dasm (-6.48 % of base)
-95 : 32304.dasm (-10.66 % of base)
-90 : 25245.dasm (-6.71 % of base)
-88 : 22313.dasm (-3.37 % of base)
87 total files with Code Size differences (41 improved, 46 regressed), 20 unchanged.
Top method regressions (bytes):
1833 (60.94 % of base) : 23852.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
1357 (33.24 % of base) : 23715.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1276 (10.03 % of base) : 10242.dasm - FSharp.Compiler.AugmentWithHashCompare:CheckAugmentationAttribs(ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.TypedTree+Entity) (FullOpts)
1200 (11.58 % of base) : 1379.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CylinderPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
1091 (23.76 % of base) : 8554.dasm - FSharp.Compiler.CheckExpressions:TcConst(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Syntax.SynConst):FSharp.Compiler.TypedTree+Const (FullOpts)
1042 (12.23 % of base) : 4685.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
1038 (17.16 % of base) : 4574.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:rulesForBothSoftWhiteAndHardWhite(FSharp.Compiler.LexFilter+TokenTup):ubyte:this (FullOpts)
1030 (27.70 % of base) : 1534.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref):this (FullOpts)
977 (6.20 % of base) : 1381.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
945 (35.95 % of base) : 1522.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
865 (2.94 % of base) : 16042.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
852 (32.98 % of base) : 31314.dasm - System.Management.Automation.Runspaces.PowerShellCore_Format_Ps1Xml+<ViewsOf_System_Management_Automation_CommandParameterSetInfo>d__34:MoveNext():ubyte:this (FullOpts)
846 (14.48 % of base) : 29904.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
827 (4.15 % of base) : 9300.dasm - FSharp.Compiler.ConstraintSolver+SolveMemberConstraint@1402-8:Invoke(Microsoft.FSharp.Core.Unit):FSharp.Compiler.ErrorLogger+OperationResult`1[FSharp.Compiler.ConstraintSolver+TraitConstraintSolution]:this (FullOpts)
817 (4.76 % of base) : 31045.dasm - Interop+Sys:GetDriveType(System.String):int (FullOpts)
805 (13.75 % of base) : 12426.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)
794 (13.60 % of base) : 19302.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
753 (5.73 % of base) : 29885.dasm - System.Management.Automation.Runspaces.InitialSessionState:get_BuiltInAliases():System.Management.Automation.Runspaces.SessionStateAliasEntry[] (FullOpts)
743 (4.02 % of base) : 4537.dasm - FSharp.Compiler.Lexer:token(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
742 (5.87 % of base) : 2850.dasm - FSharp.Compiler.FxResolver:.ctor(ubyte,System.String,ubyte,ubyte,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.String]):this (FullOpts)
Top method improvements (bytes):
-878 (-8.96 % of base) : 7246.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)
-272 (-5.97 % of base) : 1366.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-218 (-1.58 % of base) : 1361.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-185 (-9.92 % of base) : 23485.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-177 (-11.07 % of base) : 790.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-169 (-15.48 % of base) : 11771.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-131 (-10.36 % of base) : 19291.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
-130 (-9.89 % of base) : 25559.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckLocalRefEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundLocal,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-126 (-4.86 % of base) : 31461.dasm - System.Management.Automation.LocationGlobber:GenerateRelativePath(System.Management.Automation.PSDriveInfo,System.String,ubyte,System.Management.Automation.Provider.CmdletProvider,System.Management.Automation.CmdletProviderContext):System.String:this (FullOpts)
-124 (-1.48 % of base) : 1369.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-122 (-19.37 % of base) : 30775.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-110 (-3.35 % of base) : 1389.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ConvexCompoundOverlapFinder`3[BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide,BepuPhysics.Collidables.Compound]:FindLocalOverlaps(byref,int,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,float,byref):this (FullOpts)
-110 (-6.57 % of base) : 23365.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInvocationExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-102 (-5.33 % of base) : 13861.dasm - Microsoft.ML.Data.MetricWriter:GetConfusionTableAsArray(Microsoft.ML.IDataView,int,int,int[],int,byref,byref):double[][] (FullOpts)
-99 (-7.43 % of base) : 25317.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetGetResultMethod(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):ubyte:this (FullOpts)
-97 (-11.12 % of base) : 13465.dasm - Microsoft.ML.Numeric.VectorUtils:DotProduct(byref,byref):float (FullOpts)
-96 (-6.48 % of base) : 23616.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSuppressNullableWarningExpression(Microsoft.CodeAnalysis.CSharp.Syntax.PostfixUnaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-95 (-10.66 % of base) : 32304.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitILConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type):ubyte (FullOpts)
-90 (-6.71 % of base) : 25245.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetIsCompletedProperty(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):ubyte:this (FullOpts)
-88 (-3.37 % of base) : 22313.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)
Top method regressions (percentages):
364 (64.20 % of base) : 27163.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
1833 (60.94 % of base) : 23852.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
374 (49.80 % of base) : 22532.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
55 (46.61 % of base) : 31675.dasm - System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
55 (43.65 % of base) : 31671.dasm - System.Management.Automation.Language.NamedBlockAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
235 (40.24 % of base) : 25258.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)
552 (37.27 % of base) : 31171.dasm - System.Management.Automation.Runspaces.HelpV3_Format_Ps1Xml+<ViewsOf_ExtendedCmdletHelpInfo_ExamplesView>d__4:MoveNext():ubyte:this (FullOpts)
224 (36.78 % of base) : 26570.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
945 (35.95 % of base) : 1522.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
663 (34.91 % of base) : 25897.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBinaryPattern(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryPatternSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (FullOpts)
141 (33.41 % of base) : 709.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
37 (33.33 % of base) : 2323.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this (FullOpts)
1357 (33.24 % of base) : 23715.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
852 (32.98 % of base) : 31314.dasm - System.Management.Automation.Runspaces.PowerShellCore_Format_Ps1Xml+<ViewsOf_System_Management_Automation_CommandParameterSetInfo>d__34:MoveNext():ubyte:this (FullOpts)
107 (32.72 % of base) : 799.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
182 (32.33 % of base) : 28412.dasm - Microsoft.CodeAnalysis.CodeGen.ArrayMethods+ArraySet:MakeParameters():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ArrayMethodParameterInfo]:this (FullOpts)
483 (32.05 % of base) : 30733.dasm - System.Management.Automation.LogProvider:LogContextToString(System.Management.Automation.LogContext):System.String (FullOpts)
343 (31.67 % of base) : 27384.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion:RewriteBlock(Microsoft.CodeAnalysis.CSharp.BoundBlock,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundBlock:this (FullOpts)
206 (31.64 % of base) : 27068.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
689 (31.58 % of base) : 22286.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
Top method improvements (percentages):
-86 (-23.18 % of base) : 17719.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
-50 (-21.10 % of base) : 14687.dasm - System.Net.Security.SslConnectionInfo:MapProtocolVersion(long):int:this (FullOpts)
-14 (-20.29 % of base) : 18849.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
-122 (-19.37 % of base) : 30775.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-32 (-18.93 % of base) : 23944.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsTransitivelyOn(int,int):ubyte:this (FullOpts)
-50 (-17.06 % of base) : 31812.dasm - System.Management.Automation.Language.Compiler:ShouldSetExecutionStatusToSuccess(System.Management.Automation.Language.ExpressionAst):ubyte:this (FullOpts)
-34 (-17.00 % of base) : 824.dasm - System.Number:RoundNumber(byref,int,ubyte) (FullOpts)
-71 (-15.78 % of base) : 30574.dasm - System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
-169 (-15.48 % of base) : 11771.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-27 (-15.08 % of base) : 23458.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-28 (-14.43 % of base) : 31900.dasm - System.Management.Automation.Interpreter.CallInstruction:TryGetParameterOrReturnType(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],int):System.Type (FullOpts)
-23 (-14.37 % of base) : 19742.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:<ToTypeWithState>g__getFlowState|82_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):ubyte (FullOpts)
-18 (-14.17 % of base) : 15611.dasm - System.Collections.Immutable.ImmutableArray:Create[int](int[]):System.Collections.Immutable.ImmutableArray`1[int] (FullOpts)
-10 (-14.08 % of base) : 17581.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTypeModifierOrTypeKeyword(ushort):ubyte (FullOpts)
-15 (-13.51 % of base) : 29364.dasm - Microsoft.CodeAnalysis.CommonMethodWellKnownAttributeData:get_MethodImplAttributes():int:this (FullOpts)
-37 (-13.07 % of base) : 16934.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseTypeCore>g__canBeNullableType|202_0(byref):ubyte:this (FullOpts)
-18 (-12.68 % of base) : 9404.dasm - System.String:Equals(System.String,System.String):ubyte (FullOpts)
-10 (-12.66 % of base) : 30906.dasm - System.Collections.Specialized.OrderedDictionary:get_Item(int):System.Object:this (FullOpts)
-19 (-12.18 % of base) : 20966.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+<>c:<NeedsNullableAttribute>b__70_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Object,ubyte):ubyte:this (FullOpts)
-41 (-12.17 % of base) : 8754.dasm - FSharp.Compiler.NameResolution:AtMostOneResultQuery[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
smoke_tests.nativeaot.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3611585 (overridden on cmd)
Total bytes of diff: 3663046 (overridden on cmd)
Total bytes of delta: 51461 (1.42 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
578 : 2919.dasm (23.62 % of base)
525 : 2388.dasm (139.26 % of base)
525 : 23928.dasm (139.26 % of base)
525 : 17785.dasm (139.26 % of base)
525 : 20481.dasm (139.26 % of base)
446 : 23719.dasm (11.35 % of base)
446 : 17568.dasm (11.35 % of base)
446 : 20272.dasm (11.35 % of base)
446 : 2065.dasm (11.35 % of base)
446 : 21835.dasm (11.33 % of base)
411 : 3590.dasm (9.70 % of base)
411 : 22068.dasm (9.69 % of base)
311 : 24837.dasm (24.18 % of base)
281 : 6691.dasm (14.80 % of base)
274 : 5107.dasm (12.84 % of base)
274 : 18824.dasm (12.84 % of base)
274 : 21517.dasm (12.84 % of base)
274 : 24962.dasm (12.84 % of base)
272 : 7279.dasm (28.84 % of base)
268 : 7276.dasm (23.97 % of base)
Top file improvements (bytes):
-1003 : 20066.dasm (-14.75 % of base)
-996 : 23526.dasm (-14.64 % of base)
-996 : 1610.dasm (-14.65 % of base)
-996 : 17352.dasm (-14.64 % of base)
-338 : 3318.dasm (-36.11 % of base)
-115 : 7594.dasm (-15.37 % of base)
-81 : 8097.dasm (-15.08 % of base)
-76 : 1098.dasm (-51.01 % of base)
-64 : 8488.dasm (-3.99 % of base)
-57 : 26676.dasm (-6.59 % of base)
-52 : 6460.dasm (-11.23 % of base)
-50 : 21006.dasm (-4.81 % of base)
-48 : 24449.dasm (-4.52 % of base)
-46 : 25816.dasm (-3.95 % of base)
-44 : 23512.dasm (-9.28 % of base)
-44 : 1683.dasm (-9.28 % of base)
-44 : 17371.dasm (-9.28 % of base)
-44 : 20062.dasm (-9.28 % of base)
-36 : 26309.dasm (-7.88 % of base)
-34 : 21129.dasm (-7.61 % of base)
64 total files with Code Size differences (29 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
578 (23.62 % of base) : 2919.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
525 (139.26 % of base) : 2388.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
525 (139.26 % of base) : 23928.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
525 (139.26 % of base) : 17785.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
525 (139.26 % of base) : 20481.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
446 (11.35 % of base) : 23719.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
446 (11.35 % of base) : 17568.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
446 (11.35 % of base) : 20272.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
446 (11.35 % of base) : 2065.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
446 (11.33 % of base) : 21835.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
411 (9.70 % of base) : 3590.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
411 (9.69 % of base) : 22068.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
311 (24.18 % of base) : 24837.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (FullOpts)
281 (14.80 % of base) : 6691.dasm - System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:GetMemberImpl(System.String,int,int):System.Reflection.MemberInfo[]:this (FullOpts)
274 (12.84 % of base) : 5107.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
274 (12.84 % of base) : 18824.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
274 (12.84 % of base) : 21517.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
274 (12.84 % of base) : 24962.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
272 (28.84 % of base) : 7279.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.__Canon](System.Linq.Expressions.SwitchExpression):this (FullOpts)
268 (23.97 % of base) : 7276.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
Top method improvements (bytes):
-1003 (-14.75 % of base) : 20066.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-996 (-14.64 % of base) : 23526.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-996 (-14.65 % of base) : 1610.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-996 (-14.64 % of base) : 17352.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-338 (-36.11 % of base) : 3318.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-115 (-15.37 % of base) : 7594.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-81 (-15.08 % of base) : 8097.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-76 (-51.01 % of base) : 1098.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-64 (-3.99 % of base) : 8488.dasm - System.Threading.AsyncLocalValueMap+FourElementAsyncLocalValueMap:Set(System.Threading.IAsyncLocal,System.Object,ubyte):System.Threading.IAsyncLocalValueMap:this (FullOpts)
-57 (-6.59 % of base) : 26676.dasm - ThreadTest:TestConcurrentIsBackgroundProperty() (FullOpts)
-52 (-11.23 % of base) : 6460.dasm - System.AppContextConfigHelper:GetInt32Config(System.String,int,ubyte):int (FullOpts)
-50 (-4.81 % of base) : 21006.dasm - System.Buffers.ProbabilisticMap:IndexOfAnyVectorized(byref,byref,int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
-48 (-4.52 % of base) : 24449.dasm - System.Buffers.ProbabilisticMap:IndexOfAnyVectorized(byref,byref,int,System.ReadOnlySpan`1[ushort]):int (FullOpts)
-46 (-3.95 % of base) : 25816.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (FullOpts)
-44 (-9.28 % of base) : 23512.dasm - System.Runtime.EH:FindFirstPassHandler(System.Object,uint,byref,byref,byref):ubyte (FullOpts)
-44 (-9.28 % of base) : 1683.dasm - System.Runtime.EH:FindFirstPassHandler(System.Object,uint,byref,byref,byref):ubyte (FullOpts)
-44 (-9.28 % of base) : 17371.dasm - System.Runtime.EH:FindFirstPassHandler(System.Object,uint,byref,byref,byref):ubyte (FullOpts)
-44 (-9.28 % of base) : 20062.dasm - System.Runtime.EH:FindFirstPassHandler(System.Object,uint,byref,byref,byref):ubyte (FullOpts)
-36 (-7.88 % of base) : 26309.dasm - ThreadStaticsTestWithTasks:Run() (FullOpts)
-34 (-7.61 % of base) : 21129.dasm - System.Globalization.CultureData:IsValidCultureName(System.String,byref,byref):ubyte (FullOpts)
Top method regressions (percentages):
525 (139.26 % of base) : 2388.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
525 (139.26 % of base) : 23928.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
525 (139.26 % of base) : 17785.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
525 (139.26 % of base) : 20481.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
171 (32.14 % of base) : 23564.dasm - System.Threading.WaitHandle:WaitOneNoCheck(int,ubyte,System.Object,ubyte):ubyte:this (FullOpts)
171 (32.14 % of base) : 1733.dasm - System.Threading.WaitHandle:WaitOneNoCheck(int,ubyte,System.Object,ubyte):ubyte:this (FullOpts)
171 (32.14 % of base) : 17424.dasm - System.Threading.WaitHandle:WaitOneNoCheck(int,ubyte,System.Object,ubyte):ubyte:this (FullOpts)
171 (32.14 % of base) : 20116.dasm - System.Threading.WaitHandle:WaitOneNoCheck(int,ubyte,System.Object,ubyte):ubyte:this (FullOpts)
272 (28.84 % of base) : 7279.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.__Canon](System.Linq.Expressions.SwitchExpression):this (FullOpts)
40 (25.64 % of base) : 25539.dasm - System.IO.Pipes.PipeStream:CheckPipeCall(int):int:this (FullOpts)
85 (25.00 % of base) : 25332.dasm - System.Net.Sockets.SocketAsyncEngine:EventLoop():this (FullOpts)
5 (25.00 % of base) : 14540.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
5 (25.00 % of base) : 14605.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
261 (24.83 % of base) : 7284.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[int](System.Linq.Expressions.SwitchExpression):this (FullOpts)
311 (24.18 % of base) : 24837.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (FullOpts)
268 (23.97 % of base) : 7276.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
578 (23.62 % of base) : 2919.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
11 (22.00 % of base) : 3306.dasm - Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
83 (19.95 % of base) : 6419.dasm - System.Threading.PortableThreadPool+WorkerThread:MaybeAddWorkingWorker(System.Threading.PortableThreadPool) (FullOpts)
5 (19.23 % of base) : 14537.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:<Equals>g__SoftwareFallback|34_0(byref,System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
Top method improvements (percentages):
-76 (-51.01 % of base) : 1098.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-15 (-37.50 % of base) : 12512.dasm - System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
-338 (-36.11 % of base) : 3318.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-16 (-21.62 % of base) : 3213.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:LookupHashCode():int:this (FullOpts)
-21 (-15.44 % of base) : 8293.dasm - System.Linq.Expressions.Expression:ApplyTypeArgs(System.Reflection.MethodInfo,System.Type[]):System.Reflection.MethodInfo (FullOpts)
-115 (-15.37 % of base) : 7594.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-81 (-15.08 % of base) : 8097.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-1003 (-14.75 % of base) : 20066.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-996 (-14.65 % of base) : 1610.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-996 (-14.64 % of base) : 23526.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-996 (-14.64 % of base) : 17352.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-14 (-12.17 % of base) : 3069.dasm - System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-52 (-11.23 % of base) : 6460.dasm - System.AppContextConfigHelper:GetInt32Config(System.String,int,ubyte):int (FullOpts)
-15 (-10.34 % of base) : 7218.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMemberAssignment(System.Linq.Expressions.BinaryExpression,ubyte):this (FullOpts)
-16 (-10.06 % of base) : 13352.dasm - System.Enum:TryFindFlagsNames[ubyte](ubyte,System.String[],ubyte[],int,System.Span`1[int],byref,byref):ubyte (FullOpts)
-16 (-9.94 % of base) : 11833.dasm - System.Enum:TryFindFlagsNames[ushort](ushort,System.String[],ushort[],int,System.Span`1[int],byref,byref):ubyte (FullOpts)
-14 (-9.33 % of base) : 15712.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendLiteral(System.String):this (FullOpts)
-44 (-9.28 % of base) : 23512.dasm - System.Runtime.EH:FindFirstPassHandler(System.Object,uint,byref,byref,byref):ubyte (FullOpts)
-44 (-9.28 % of base) : 1683.dasm - System.Runtime.EH:FindFirstPassHandler(System.Object,uint,byref,byref,byref):ubyte (FullOpts)
-44 (-9.28 % of base) : 17371.dasm - System.Runtime.EH:FindFirstPassHandler(System.Object,uint,byref,byref,byref):ubyte (FullOpts)
osx arm64
Diffs are based on 1,660,469 contexts (561,303 MinOpts, 1,099,166 FullOpts).
MISSED contexts: base: 227 (0.01%), diff: 76,048 (4.38%)
Overall (+1,273,248 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
8,830,016 |
+78,904 |
benchmarks.run_pgo.osx.arm64.checked.mch |
24,158,400 |
-2,688 |
benchmarks.run_tiered.osx.arm64.checked.mch |
14,959,196 |
+30,980 |
coreclr_tests.run.osx.arm64.checked.mch |
384,586,092 |
+109,528 |
libraries.crossgen2.osx.arm64.checked.mch |
54,579,628 |
+182,384 |
libraries.pmi.osx.arm64.checked.mch |
64,676,624 |
+338,492 |
libraries_tests.run.osx.arm64.Release.mch |
72,410,840 |
+49,372 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
125,434,348 |
+395,244 |
realworld.run.osx.arm64.checked.mch |
11,733,820 |
+91,032 |
MinOpts (-168 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.osx.arm64.checked.mch |
15,994,412 |
-8 |
benchmarks.run_tiered.osx.arm64.checked.mch |
11,521,636 |
-8 |
coreclr_tests.run.osx.arm64.checked.mch |
251,411,576 |
+0 |
libraries.pmi.osx.arm64.checked.mch |
121,128 |
+0 |
libraries_tests.run.osx.arm64.Release.mch |
60,384,980 |
-152 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
13,059,360 |
+0 |
FullOpts (+1,273,416 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
8,829,280 |
+78,904 |
benchmarks.run_pgo.osx.arm64.checked.mch |
8,163,988 |
-2,680 |
benchmarks.run_tiered.osx.arm64.checked.mch |
3,437,560 |
+30,988 |
coreclr_tests.run.osx.arm64.checked.mch |
133,174,516 |
+109,528 |
libraries.crossgen2.osx.arm64.checked.mch |
54,578,000 |
+182,384 |
libraries.pmi.osx.arm64.checked.mch |
64,555,496 |
+338,492 |
libraries_tests.run.osx.arm64.Release.mch |
12,025,860 |
+49,524 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
112,374,988 |
+395,244 |
realworld.run.osx.arm64.checked.mch |
11,169,868 |
+91,032 |
Example diffs
benchmarks.run.osx.arm64.checked.mch
-32 (-15.38%) : 23016.dasm - System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
@@ -2,20 +2,22 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Formats.Cbor.Tests.Perf_CborReader>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Formats.Cbor.Tests.ECDsaCosePublicKey>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Formats.Cbor.CborReader>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 10, 20 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborReader>
+; V04 tmp1 [V04,T00] ( 10, 20 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborReader>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
; V06 tmp3 [V06,T05] ( 1, 2 ) struct (144) [fp+0x18] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[System.Security.Cryptography.ECParameters,System.Nullable`1[System.Security.Cryptography.HashAlgorithmName]]>
-; V07 tmp4 [V07,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V07 tmp4 [V07,T02] ( 3, 4.96) ref -> x19 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
@@ -24,7 +26,7 @@
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._object (fldOffset=0x0)" P-INDEP
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref single-def "field V05._index (fldOffset=0x8)" P-INDEP
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0xc)" P-INDEP
-; V16 tmp13 [V16,T03] ( 4, 2.50) ref -> x20 "field V08._object (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T03] ( 4, 2.48) ref -> x20 "field V08._object (fldOffset=0x0)" P-INDEP
;* V17 tmp14 [V17,T06] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
; V18 tmp15 [V18,T04] ( 3, 2 ) int -> x21 "field V08._length (fldOffset=0xc)" P-INDEP
;* V19 tmp16 [V19,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
@@ -51,71 +53,59 @@ G_M26905_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
; gcrRegs +[x1]
ldr x19, [x1, #0x10]
; gcrRegs +[x19]
- cbnz x19, G_M26905_IG04
+ cbnz x19, G_M26905_IG06
;; size=8 bbWeight=1 PerfScore 4.00
-G_M26905_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26905_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x19]
mov x20, xzr
; gcrRegs +[x20]
mov w21, wzr
- b G_M26905_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M26905_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20] +[x19]
- mov x20, x19
- ; gcrRegs +[x20]
- ldr w21, [x20, #0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M26905_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M26905_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w0, #1
- ; gcrRegs -[x0]
- strb w0, [x19, #0x45]
- mov w0, #3
- movz x1, #0xD1FFAB1E // code for System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- add x14, x19, #72
+ mov w14, #1
+ strb w14, [x0, #0x45]
+ add x14, x0, #72
; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
- stp wzr, w21, [x19, #0x50]
+ stp wzr, w21, [x0, #0x50]
mov w8, #3
- str w8, [x19, #0x40]
- strb wzr, [x19, #0x46]
+ str w8, [x0, #0x40]
+ strb wzr, [x0, #0x46]
mov w8, #1
- strb w8, [x19, #0x5C]
- str w8, [x19, #0x60]
+ strb w8, [x0, #0x5C]
+ str w8, [x0, #0x60]
add x8, fp, #24 // [V06 tmp3]
- mov x0, x19
- ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x0 x19]
- ;; size=120 bbWeight=1 PerfScore 25.00
-G_M26905_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[x0]
+ ;; size=88 bbWeight=1 PerfScore 18.00
+G_M26905_IG05: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0xB8]
ldp x19, x20, [sp, #0xA8]
ldp fp, lr, [sp], #0xC0
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
+G_M26905_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ ldr w21, [x20, #0x08]
+ b G_M26905_IG04
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
-; Total bytes of code 208, prolog size 44, PerfScore 46.25, instruction count 52, allocated bytes for code 208 (MethodHash=d59396e6) for method System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
+; Total bytes of code 176, prolog size 44, PerfScore 39.18, instruction count 44, allocated bytes for code 176 (MethodHash=d59396e6) for method System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
; ============================================================
Unwind Info:
@@ -126,7 +116,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-15.00%) : 1615.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.Canon,System.Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
@@ -2,67 +2,73 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 7, 7 ) ref -> x19 this class-hnd single-def <ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T03] ( 3, 3 ) int -> x1 single-def
-; V02 arg2 [V02,T04] ( 3, 3 ) int -> x2 single-def
-; V03 arg3 [V03,T05] ( 3, 3 ) int -> x3 single-def
-; V04 arg4 [V04,T01] ( 4, 4 ) int -> x20 single-def
-; V05 arg5 [V05,T02] ( 3, 3 ) ref -> x5 class-hnd single-def <ProtoBuf.Serializers.RepeatedSerializerStub>
+; V00 this [V00,T00] ( 7, 7 ) ref -> x0 this class-hnd single-def <ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T04] ( 3, 3 ) int -> x1 single-def
+; V02 arg2 [V02,T05] ( 3, 3 ) int -> x2 single-def
+; V03 arg3 [V03,T02] ( 4, 3.20) int -> x3 single-def
+; V04 arg4 [V04,T01] ( 4, 3.80) int -> x4 single-def
+; V05 arg5 [V05,T03] ( 3, 3 ) ref -> x5 class-hnd single-def <ProtoBuf.Serializers.RepeatedSerializerStub>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V07 tmp1 [V07,T06] ( 3, 2 ) int -> x1 "Inline return value spill temp"
+; V08 tmp2 [V08,T07] ( 2, 1.60) int -> x1 "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M3147_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x0
- ; gcrRegs +[x19]
- mov w20, w4
- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M3147_IG02: ; bbWeight=1, gcrefRegs=80020 {x5 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x5]
- add x14, x19, #8
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M3147_IG02: ; bbWeight=1, gcrefRegs=0021 {x0 x5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0 x5]
+ add x14, x0, #8
; byrRegs +[x14]
mov x15, x5
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x5 x15]
; byrRegs -[x14]
- stp w1, w2, [x19, #0x10]
- mov w0, w3
- mov w1, w20
- movz x2, #0xD1FFAB1E // code for ProtoBuf.Meta.ValueMember:GetEffectiveCompatibilityLevel(int,int):int
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- stp w0, w20, [x19, #0x18]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M3147_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ stp w1, w2, [x0, #0x10]
+ cmp w3, #200
+ bgt G_M3147_IG06
+ ;; size=24 bbWeight=1 PerfScore 4.50
+G_M3147_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ mov w3, #200
+ mov w1, #240
+ cmp w4, #5
+ csel w1, w3, w1, ne
+ ;; size=16 bbWeight=0.80 PerfScore 1.60
+G_M3147_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ stp w1, w4, [x0, #0x18]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M3147_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M3147_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ sxtw w1, w3
+ b G_M3147_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.30
-; Total bytes of code 80, prolog size 12, PerfScore 17.00, instruction count 20, allocated bytes for code 80 (MethodHash=15a2f3b4) for method ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 10.90, instruction count 17, allocated bytes for code 68 (MethodHash=15a2f3b4) for method ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):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 : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -70,10 +76,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-24 (-14.63%) : 22938.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
@@ -2,33 +2,34 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; fully 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; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark>
-; V01 loc0 [V01,T06] ( 4, 6 ) int -> x1
+; V00 this [V00,T06] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark>
+; V01 loc0 [V01,T04] ( 4, 82.83) int -> x1
;* V02 loc1 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.Extensions.Primitives.StringValues+Enumerator>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.Extensions.Primitives.StringValues+Enumerator>
-; V07 tmp3 [V07,T08] ( 3, 5 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Object>
+; V07 tmp3 [V07,T07] ( 3, 4.96) ref -> x2 class-hnd single-def "Inlining Arg" <System.Object>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V09 tmp5 [V09,T09] ( 4, 2.75) ref -> x2 class-hnd exact "Inline stloc first use temp" <System.String>
+; V09 tmp5 [V09,T08] ( 4, 3.02) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-;* V11 tmp7 [V11,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp8 [V12,T01] ( 5, 80 ) int -> x0 "Inline stloc first use temp"
+;* V11 tmp7 [V11,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V12 tmp8 [V12,T00] ( 5,222.26) int -> x0 "Inline stloc first use temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V14 tmp10 [V14,T00] ( 4, 81 ) ref -> x3 single-def "field V02._values (fldOffset=0x0)" P-INDEP
-; V15 tmp11 [V15,T05] ( 4, 23 ) ref -> registers "field V02._current (fldOffset=0x8)" P-INDEP
-; V16 tmp12 [V16,T03] ( 4, 29 ) int -> registers "field V02._index (fldOffset=0x10)" P-INDEP
-; V17 tmp13 [V17,T10] ( 3, 2 ) ref -> x3 "field V06._values (fldOffset=0x0)" P-INDEP
-; V18 tmp14 [V18,T11] ( 3, 2 ) ref -> x2 "field V06._current (fldOffset=0x8)" P-INDEP
-;* V19 tmp15 [V19,T12] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP
-; V20 cse0 [V20,T02] ( 2, 64 ) int -> x2 "CSE - aggressive"
+; V14 tmp10 [V14,T03] ( 4,103.81) ref -> x4 single-def "field V02._values (fldOffset=0x0)" P-INDEP
+; V15 tmp11 [V15,T02] ( 4,127.65) ref -> x3 "field V02._current (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T01] ( 4,171.65) int -> registers "field V02._index (fldOffset=0x10)" P-INDEP
+; V17 tmp13 [V17,T09] ( 3, 2 ) ref -> x4 "field V06._values (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T10] ( 3, 2 ) ref -> x3 "field V06._current (fldOffset=0x8)" P-INDEP
+;* V19 tmp15 [V19,T11] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP
;
; Lcl frame size = 0
@@ -39,92 +40,79 @@ G_M4100_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M4100_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
mov w1, wzr
- ldr x0, [x0, #0x18]
- mov x2, x0
+ ldr x2, [x0, #0x18]
; gcrRegs +[x2]
- cbz x2, G_M4100_IG05
+ mov x3, x2
+ ; gcrRegs +[x3]
+ cbz x3, G_M4100_IG06
;; size=16 bbWeight=1 PerfScore 5.00
-G_M4100_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
+G_M4100_IG03: ; bbWeight=0.50, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr x0, [x3]
movz x4, #0xD1FFAB1E
movk x4, #0xD1FFAB1E LSL #16
movk x4, #1 LSL #32
- cmp x3, x4
- bne G_M4100_IG05
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M4100_IG04: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ cmp x0, x4
+ bne G_M4100_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M4100_IG04: ; bbWeight=0.52, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
+ mov x4, xzr
+ ; gcrRegs +[x4]
+ ;; size=4 bbWeight=0.52 PerfScore 0.26
+G_M4100_IG05: ; bbWeight=1, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref
+ mov w0, wzr
+ b G_M4100_IG09
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M4100_IG06: ; bbWeight=0.48, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3-x4] +[x2]
mov x3, xzr
; gcrRegs +[x3]
- b G_M4100_IG06
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M4100_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2-x3] +[x0]
- mov x2, xzr
- ; gcrRegs +[x2]
- mov x3, x0
- ; gcrRegs +[x3]
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M4100_IG06: ; bbWeight=1, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov w0, wzr
- b G_M4100_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M4100_IG07: ; bbWeight=2, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] +[x0]
- ldr w4, [x0, #0x08]
- add w1, w4, w1
- mov x4, x0
+ mov x4, x2
; gcrRegs +[x4]
- mov w0, w2
- ; gcrRegs -[x0]
- mov x2, x4
- ; gcrRegs +[x2]
- ;; size=20 bbWeight=2 PerfScore 10.00
-G_M4100_IG08: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x4]
- tbnz w0, #31, G_M4100_IG12
- ;; size=4 bbWeight=8 PerfScore 8.00
-G_M4100_IG09: ; bbWeight=32, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- cbz x3, G_M4100_IG11
- ldr w2, [x3, #0x08]
+ b G_M4100_IG05
+ ;; size=12 bbWeight=0.48 PerfScore 0.96
+G_M4100_IG07: ; bbWeight=80.00, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
- cmp w2, w0
- bls G_M4100_IG12
- ;; size=16 bbWeight=32 PerfScore 176.00
-G_M4100_IG10: ; bbWeight=16, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ movn w2, #0
+ cbz x3, G_M4100_IG13
+ ;; size=8 bbWeight=80.00 PerfScore 120.00
+G_M4100_IG08: ; bbWeight=36.00, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref
+ ldr w0, [x3, #0x08]
+ add w1, w0, w1
+ mov w0, w2
+ ;; size=12 bbWeight=36.00 PerfScore 144.00
+G_M4100_IG09: ; bbWeight=80.00, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
+ tbnz w0, #31, G_M4100_IG13
+ ;; size=4 bbWeight=80.00 PerfScore 80.00
+G_M4100_IG10: ; bbWeight=51.20, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
+ cbz x4, G_M4100_IG07
+ ;; size=4 bbWeight=51.20 PerfScore 51.20
+G_M4100_IG11: ; bbWeight=40.96, gcrefRegs=0010 {x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x3]
+ ldr w3, [x4, #0x08]
+ cmp w3, w0
+ bls G_M4100_IG13
+ ;; size=12 bbWeight=40.96 PerfScore 184.32
+G_M4100_IG12: ; bbWeight=10.65, gcrefRegs=0010 {x4}, byrefRegs=0000 {}, byref
add w2, w0, #1
- add x4, x3, #16
- ; byrRegs +[x4]
- ldr x0, [x4, w0, UXTW #3]
- ; gcrRegs +[x0]
- b G_M4100_IG07
- ;; size=16 bbWeight=16 PerfScore 80.00
-G_M4100_IG11: ; bbWeight=4, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x2]
- ; byrRegs -[x4]
- movn w0, #0
- cbnz x2, G_M4100_IG14
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M4100_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2-x3]
+ add x3, x4, #16
+ ; byrRegs +[x3]
+ ldr x3, [x3, w0, UXTW #3]
+ ; gcrRegs +[x3]
+ ; byrRegs -[x3]
+ b G_M4100_IG08
+ ;; size=16 bbWeight=10.65 PerfScore 53.25
+G_M4100_IG13: ; bbWeight=9.83, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3-x4]
mov w0, w1
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M4100_IG13: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=9.83 PerfScore 4.92
+G_M4100_IG14: ; bbWeight=9.83, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M4100_IG14: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x2-x3]
- mov w4, w0
- mov x0, x2
- ; gcrRegs +[x0]
- mov w2, w4
- ; gcrRegs -[x2]
- b G_M4100_IG07
- ;; size=16 bbWeight=2 PerfScore 5.00
+ ;; size=8 bbWeight=9.83 PerfScore 19.66
-; Total bytes of code 164, prolog size 8, PerfScore 298.25, instruction count 41, allocated bytes for code 164 (MethodHash=fc7aeffb) for method Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 669.56, instruction count 35, allocated bytes for code 140 (MethodHash=fc7aeffb) for method Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -135,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+44 (+22.00%) : 11329.dasm - SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
@@ -2,48 +2,58 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T01] ( 4, 7 ) int -> x19 single-def
+; V00 arg0 [V00,T02] ( 4, 75.00) int -> x19 single-def
; V01 arg1 [V01,T04] ( 3, 3 ) int -> x20 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) float -> zero-ref single-def
;* V03 loc1 [V03 ] ( 0, 0 ) float -> zero-ref single-def
;* V04 loc2 [V04 ] ( 0, 0 ) float -> zero-ref single-def
-;* V05 loc3 [V05,T07] ( 0, 0 ) float -> zero-ref single-def
-;* V06 loc4 [V06,T08] ( 0, 0 ) float -> zero-ref single-def
-;* V07 loc5 [V07,T09] ( 0, 0 ) float -> zero-ref single-def
-;* V08 loc6 [V08,T10] ( 0, 0 ) float -> zero-ref single-def
-;* V09 loc7 [V09,T11] ( 0, 0 ) float -> zero-ref single-def
-; V10 loc8 [V10,T02] ( 3, 9 ) ref -> x20 class-hnd exact single-def <Algorithms.FractalRenderer+Render>
-; V11 loc9 [V11,T00] ( 4, 13 ) int -> x21
+; V05 loc3 [V05,T07] ( 2, 73.00) float -> d8 single-def
+; V06 loc4 [V06,T08] ( 2, 73.00) float -> d9 single-def
+; V07 loc5 [V07,T09] ( 2, 73.00) float -> d10 single-def
+; V08 loc6 [V08,T10] ( 2, 73.00) float -> d11 single-def
+; V09 loc7 [V09,T11] ( 2, 73.00) float -> d12 single-def
+; V10 loc8 [V10,T01] ( 3,145.00) ref -> x20 class-hnd exact single-def <Algorithms.FractalRenderer+Render>
+; V11 loc9 [V11,T00] ( 4,217.00) int -> x21
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T05] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Action`3[int,int,int]>
-; V14 tmp2 [V14,T06] ( 4, 3.50) ref -> x0
-; V15 tmp3 [V15,T03] ( 6, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Action`3[int,int,int]>
+; V14 tmp2 [V14,T06] ( 4, 3.52) ref -> x0
+; V15 tmp3 [V15,T03] ( 6, 6.24) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Action`3[int,int,int]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M35314_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x50]!
+ stp d8, d9, [sp, #0x10]
+ stp d10, d11, [sp, #0x20]
+ str d12, [sp, #0x30]
+ stp x19, x20, [sp, #0x38]
+ str x21, [sp, #0x48]
mov fp, sp
mov w19, w0
mov w20, w1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M35314_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr s8, [@RWD00]
+ ldr s9, [@RWD04]
+ ldr s10, [@RWD08]
+ ldr s11, [@RWD12]
+ ldr s12, [@RWD16]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #2 LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
cbnz x0, G_M35314_IG04
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M35314_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -57,7 +67,7 @@ G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr q16, [@RWD00]
+ ldr q16, [@RWD32]
str q16, [x0, #0x18]
movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x14, #0xD1FFAB1E LSL #16
@@ -66,7 +76,7 @@ G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=56 bbWeight=0.50 PerfScore 5.25
+ ;; size=56 bbWeight=0.52 PerfScore 5.46
G_M35314_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w1, w20
movz x2, #0xD1FFAB1E // code for SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render
@@ -80,13 +90,13 @@ G_M35314_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cmp w19, #0
ble G_M35314_IG06
;; size=40 bbWeight=1 PerfScore 8.50
-G_M35314_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M35314_IG05: ; bbWeight=72.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr s0, [@RWD16]
- ldr s1, [@RWD20]
- ldr s2, [@RWD24]
- ldr s3, [@RWD28]
- ldr s4, [@RWD32]
+ fmov s0, s8
+ fmov s1, s9
+ fmov s2, s10
+ fmov s3, s11
+ fmov s4, s12
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
ldr x1, [x20, #0x18]
@@ -95,34 +105,38 @@ G_M35314_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
add w21, w21, #1
cmp w21, w19
blt G_M35314_IG05
- ;; size=44 bbWeight=4 PerfScore 76.00
+ ;; size=44 bbWeight=72.00 PerfScore 828.00
G_M35314_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x20]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldr x21, [sp, #0x48]
+ ldp x19, x20, [sp, #0x38]
+ ldr d12, [sp, #0x30]
+ ldp d10, d11, [sp, #0x20]
+ ldp d8, d9, [sp, #0x10]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-RWD00 dq 00000001057947A8h, 0000000107BE0900h
-RWD16 dd BF9FDF3Ch ; -1.249
-RWD20 dd BF9F9DB2h ; -1.247
-RWD24 dd BD185F07h ; -0.0372
-RWD28 dd BD102DE1h ; -0.0352
-RWD32 dd 3727C5ADh ; 1e-05
+ ;; size=28 bbWeight=1 PerfScore 9.00
+RWD00 dd BF9FDF3Ch ; -1.249
+RWD04 dd BF9F9DB2h ; -1.247
+RWD08 dd BD185F07h ; -0.0372
+RWD12 dd BD102DE1h ; -0.0352
+RWD16 dd 3727C5ADh ; 1e-05
+RWD20 dd 00000000h, 00000000h, 00000000h
+RWD32 dq 00000001057947A8h, 0000000107BE0900h
-; Total bytes of code 200, prolog size 16, PerfScore 104.75, instruction count 50, allocated bytes for code 200 (MethodHash=e9d8760d) for method SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
+; Total bytes of code 244, prolog size 28, PerfScore 873.96, instruction count 61, allocated bytes for code 244 (MethodHash=e9d8760d) for method SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -130,9 +144,11 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
+ D0 89 save_reg X#2 Z#9 (0x09); str x21, [sp, #72]
+ C8 07 save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56]
+ DD 06 save_freg X#4 Z#6 (0x06); str d12, [sp, #48]
+ E6 save_next
+ D8 02 save_fregp X#0 Z#2 (0x02); stp d8, d9, [sp, #16]
+ 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
E4 end
+28 (+28.00%) : 8067.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory
1[System.__Canon]:this (FullOpts)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T01] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02 ] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[System.__Canon]>
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V04 tmp3 [V04,T00] ( 6, 6.96) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V05 tmp4 [V05,T04] ( 2, 3 ) ref -> [fp+0x10] do-not-enreg[] single-def "field V02._object (fldOffset=0x0)" P-DEP
; V06 tmp5 [V06,T05] ( 2, 3 ) int -> [fp+0x18] do-not-enreg[] "field V02._index (fldOffset=0x8)" P-DEP
; V07 tmp6 [V07,T06] ( 2, 3 ) int -> [fp+0x1C] do-not-enreg[] "field V02._length (fldOffset=0xc)" P-DEP
-;* V08 rat0 [V08,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V08 rat0 [V08,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
@@ -32,12 +34,23 @@ G_M44448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=24 bbWeight=1 PerfScore 5.00
G_M44448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldp xzr, x0, [x19]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x28]
+ cbz x0, G_M44448_IG07
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M44448_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M44448_IG04
+ cbz x0, G_M44448_IG08
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M44448_IG04: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
cmp w1, #10
- blo G_M44448_IG04
+ blo G_M44448_IG08
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
+G_M44448_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
str x0, [fp, #0x10] // [V05 tmp4]
str wzr, [fp, #0x18] // [V06 tmp5]
mov w0, #10
@@ -45,13 +58,19 @@ G_M44448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
str w0, [fp, #0x1C] // [V07 tmp6]
ldp x0, x1, [fp, #0x10] // [V02 tmp1], [V02 tmp1+0x08]
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M44448_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=20 bbWeight=1 PerfScore 6.50
+G_M44448_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x28]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M44448_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M44448_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x0]
+ ldr x0, [x19, #0x08]
+ ; gcrRegs +[x0]
+ cbnz x0, G_M44448_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.80
+G_M44448_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
@@ -61,7 +80,7 @@ G_M44448_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 20, PerfScore 25.00, instruction count 25, allocated bytes for code 100 (MethodHash=a215525f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 128, prolog size 20, PerfScore 34.66, instruction count 32, allocated bytes for code 128 (MethodHash=a215525f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+33.33%) : 18631.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan
1[System.__Canon]:this (FullOpts)
@@ -2,22 +2,24 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T01] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]>
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V04 tmp3 [V04,T00] ( 6, 6.96) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V05 tmp4 [V05,T04] ( 2, 2 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V06 tmp5 [V06,T05] ( 2, 2 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
-;* V07 rat0 [V07,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
;* V08 rat1 [V08,T06] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,24 +32,41 @@ G_M3040_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M3040_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldp xzr, x0, [x19]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x30]
+ cbz x0, G_M3040_IG07
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M3040_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M3040_IG04
+ cbz x0, G_M3040_IG08
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M3040_IG04: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
cmp w1, #10
- blo G_M3040_IG04
+ blo G_M3040_IG08
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
+G_M3040_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
mov w1, #10
- ;; size=28 bbWeight=1 PerfScore 10.50
-G_M3040_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=8 bbWeight=1 PerfScore 1.00
+G_M3040_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M3040_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M3040_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0]
+ ldr x0, [x19, #0x08]
+ ; gcrRegs +[x0]
+ cbnz x0, G_M3040_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.80
+G_M3040_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -56,7 +75,7 @@ G_M3040_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 16, PerfScore 18.50, instruction count 21, allocated bytes for code 84 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 112, prolog size 16, PerfScore 28.16, instruction count 28, allocated bytes for code 112 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -67,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.osx.arm64.checked.mch
-20 (-14.71%) : 22421.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,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; fully 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
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T06] ( 3, 3 ) int -> x1 single-def
; V02 arg2 [V02,T00] ( 3, 6 ) byref -> x2 single-def
-; V03 arg3 [V03,T01] ( 5, 4 ) ref -> x3 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V03 arg3 [V03,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
; V04 arg4 [V04,T04] ( 3, 3 ) byref -> x4 single-def
; V05 arg5 [V05,T05] ( 3, 3 ) byref -> x5 single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 rat0 [V08,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T03] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -33,16 +35,8 @@ G_M55135_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M55135_IG02: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref, isz
; gcrRegs +[x3]
; byrRegs +[x2 x4-x5]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbz x0, G_M55135_IG06
- ;; size=20 bbWeight=1 PerfScore 13.00
-G_M55135_IG03: ; bbWeight=0.80, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref, isz
- cbz x3, G_M55135_IG07
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M55135_IG04: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref
+ ldr xzr, [x19]
+ cbz x3, G_M55135_IG04
mov x0, x19
; gcrRegs +[x0]
mov x6, x5
@@ -54,21 +48,16 @@ G_M55135_IG04: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2
movk x7, #0xD1FFAB1E LSL #16
movk x7, #1 LSL #32
ldr x7, [x7]
- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M55135_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=40 bbWeight=1 PerfScore 10.50
+G_M55135_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
br x7
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00
-G_M55135_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, gcvars, byref, isz
- ; gcrRegs -[x0]
- ; byrRegs -[x6] +[x4]
- cbnz x3, G_M55135_IG04
- ;; size=4 bbWeight=0.20 PerfScore 0.20
-G_M55135_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x2 x4-x5]
+G_M55135_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x3]
+ ; byrRegs -[x2 x5-x6]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -86,7 +75,7 @@ G_M55135_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (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 116, prolog size 20, PerfScore 18.50, instruction count 29, allocated bytes for code 116 (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)
; ============================================================
Unwind Info:
@@ -97,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 30681.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M25960_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M25960_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M25960_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25960_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M25960_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrb w0, [x19, #0x20]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M25960_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 27114.dasm - (dynamicClass):NumGetter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M10319_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M10319_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M10319_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M10319_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M10319_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x10]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M10319_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=d4f4d7b0) for method (dynamicClass):NumGetter(System.Object):int (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=d4f4d7b0) for method (dynamicClass):NumGetter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+9.09%) : 53203.dasm - System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>cDisplayClass8_0[int]:b1():this (Tier1-OSR)
@@ -10,28 +10,27 @@
; 0 inlinees with PGO data; 7 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 5, 201.99) ref -> x19 this class-hnd single-def <System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass8_0[int]>
-; V01 loc0 [V01,T08] ( 4, 100 ) int -> x20
-; V02 loc1 [V02,T09] ( 1, 1 ) int -> [fp+0x58] ld-addr-op tier0-frame
-;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Barrier>
-;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
-;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Barrier>
-;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
-;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V10 tmp7 [V10,T05] ( 2, 199.98) ubyte -> x0 "Inline return value spill temp"
-; V11 tmp8 [V11,T03] ( 3,1199.88) ref -> x21 class-hnd "Inlining Arg" <System.Collections.Concurrent.ConcurrentStack`1[int]>
-; V12 tmp9 [V12,T02] ( 5,1399.86) ref -> x22 class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V13 tmp10 [V13,T00] ( 3,2399.76) byref -> x0 "Inlining Arg"
-; V14 tmp11 [V14,T01] ( 2,1599.84) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
-; V15 tmp12 [V15,T04] ( 3, 899.91) ubyte -> x0 "Inline return value spill temp"
-; V16 tmp13 [V16 ] ( 3, 899.91) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
-;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref "field V05._source (fldOffset=0x0)" P-INDEP
-;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP
-;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref "field V08._source (fldOffset=0x0)" P-INDEP
-;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref "field V09._source (fldOffset=0x0)" P-INDEP
-; V21 cse0 [V21,T06] ( 3, 599.94) byref -> x0 "CSE - aggressive"
+; V00 this [V00,T01] ( 6,201.99) ref -> x19 this class-hnd single-def <System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass8_0[int]>
+; V01 loc0 [V01,T05] ( 5,100 ) int -> x20
+; V02 loc1 [V02,T08] ( 1, 1 ) int -> [fp+0x58] ld-addr-op tier0-frame
+;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Barrier>
+;* V05 tmp2 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
+;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.Barrier>
+;* V08 tmp5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
+;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
+; V10 tmp7 [V10,T03] ( 2,199.98) ubyte -> x0 "Inline return value spill temp"
+; V11 tmp8 [V11,T00] ( 4,403.96) ref -> x21 class-hnd "Inlining Arg" <System.Collections.Concurrent.ConcurrentStack`1[int]>
+; V12 tmp9 [V12,T02] ( 5,202.98) ref -> x22 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V13 tmp10 [V13,T06] ( 3, 6.00) byref -> x0 "Inlining Arg"
+; V14 tmp11 [V14,T07] ( 2, 4.00) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
+; V15 tmp12 [V15,T04] ( 3,100.99) ubyte -> x0 "Inline return value spill temp"
+; V16 tmp13 [V16 ] ( 3,101.51) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
+;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref "field V05._source (fldOffset=0x0)" P-INDEP
+;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref "field V06._source (fldOffset=0x0)" P-INDEP
+;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref "field V08._source (fldOffset=0x0)" P-INDEP
+;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref "field V09._source (fldOffset=0x0)" P-INDEP
;
; Lcl frame size = 16
@@ -51,7 +50,7 @@ G_M4568_IG02: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr w0, [x0, #0x20]
; gcrRegs -[x0]
cmp w20, w0
- bge G_M4568_IG08
+ bge G_M4568_IG11
;; size=16 bbWeight=0.01 PerfScore 0.08
G_M4568_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x21, [x19, #0x10]
@@ -62,7 +61,10 @@ G_M4568_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x22]
cbz x22, G_M4568_IG07
;; size=16 bbWeight=99.99 PerfScore 749.92
-G_M4568_IG04: ; bbWeight=399.96, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0001 {x0}, byref, isz
+G_M4568_IG04: ; bbWeight=1.00, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x0]
+ add x0, x21, #8
+ ; byrRegs +[x0]
ldr x1, [x22, #0x08]
; gcrRegs +[x1]
cbz x0, G_M4568_IG09
@@ -85,17 +87,15 @@ G_M4568_IG04: ; bbWeight=399.96, gcrefRegs=680000 {x19 x21 x22}, byrefReg
; gcrRegs -[x0 x21-x22]
; gcr arg pop 0
cmp w0, #1
- bne G_M4568_IG05
+ bne G_M4568_IG08
+ ;; size=68 bbWeight=1.00 PerfScore 16.01
+G_M4568_IG05: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x18] // [V16 tmp13]
; gcrRegs +[x0]
ldrsb wzr, [x0]
mov w0, #1
; gcrRegs -[x0]
- b G_M4568_IG06
- ;; size=80 bbWeight=399.96 PerfScore 8799.12
-G_M4568_IG05: ; bbWeight=399.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=399.96 PerfScore 199.98
+ ;; size=12 bbWeight=0.52 PerfScore 2.86
G_M4568_IG06: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
str xzr, [fp, #0x18] // [V16 tmp13]
cbnz w0, G_M4568_IG10
@@ -106,17 +106,15 @@ G_M4568_IG07: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr w0, [x0, #0x20]
; gcrRegs -[x0]
cmp w20, w0
- blt G_M4568_IG03
- ;; size=16 bbWeight=99.99 PerfScore 749.92
-G_M4568_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ bge G_M4568_IG11
+ b G_M4568_IG03
+ ;; size=20 bbWeight=99.99 PerfScore 849.91
+G_M4568_IG08: ; bbWeight=0.48, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov w0, wzr
+ b G_M4568_IG06
+ ;; size=8 bbWeight=0.48 PerfScore 0.72
+G_M4568_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x40
- add sp, sp, #48
- ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M4568_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowNullReferenceException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -125,13 +123,26 @@ G_M4568_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M4568_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M4568_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19]
add w20, w20, #1
- b G_M4568_IG07
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ldr x0, [x19, #0x08]
+ ; gcrRegs +[x0]
+ ldr w0, [x0, #0x20]
+ ; gcrRegs -[x0]
+ cmp w20, w0
+ blt G_M4568_IG03
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M4568_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[x19]
+ ldp x21, x22, [sp, #0x30]
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x40
+ add sp, sp, #48
+ ret lr
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 28, PerfScore 10699.09, instruction count 55, allocated bytes for code 220 (MethodHash=1b40ee27) for method System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass8_0[int]:<SetupConcurrentStackIteration>b__1():this (Tier1-OSR)
+; Total bytes of code 240, prolog size 28, PerfScore 1819.57, instruction count 60, allocated bytes for code 240 (MethodHash=1b40ee27) for method System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass8_0[int]:<SetupConcurrentStackIteration>b__1():this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -142,7 +153,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+36 (+52.94%) : 55545.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
@@ -5,85 +5,88 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2787
-; 2 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2787
+; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 5, 5.00) ref -> x0 class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp5 [V06,T02] ( 2, 4.00) int -> x0 "Inlining Arg"
-; V07 tmp6 [V07,T01] ( 2, 4.00) byref -> x1 single-def "Inlining Arg"
-;* V08 tmp7 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp9 [V10,T03] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
-;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp13 [V14,T04] ( 2, 2.00) byref -> x1 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp14 [V15,T06] ( 2, 2.00) int -> x0 "field V03._length (fldOffset=0x8)" P-INDEP
-; V16 tmp15 [V16,T05] ( 2, 2.00) byref -> x1 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T07] ( 2, 2.00) int -> x0 "field V04._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+; V06 tmp5 [V06,T02] ( 2, 4 ) int -> x20 "Inlining Arg"
+; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp11 [V12,T04] ( 2, 2 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp12 [V13,T06] ( 2, 2 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V14 tmp13 [V14,T05] ( 2, 2 ) byref -> x19 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T07] ( 2, 2 ) int -> x20 "field V04._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M54468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M54468_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M54468_IG06
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M54468_IG03: ; bbWeight=1.00, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- add x1, x0, #12
- ; byrRegs +[x1]
- ldr w0, [x0, #0x08]
+ cbz x0, G_M54468_IG04
+ add x19, x0, #12
+ ; byrRegs +[x19]
+ ldr w20, [x0, #0x08]
+ mov w0, #1
; gcrRegs -[x0]
- cmp w0, #0
- ble G_M54468_IG08
- ;; size=16 bbWeight=1.00 PerfScore 5.00
-G_M54468_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
- ldrh w0, [x1]
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ cmp w20, #0
+ ble G_M54468_IG06
+ ldrh w0, [x19]
cmp w0, #47
cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M54468_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x1]
- ldp fp, lr, [sp], #0x10
+ ;; size=56 bbWeight=1 PerfScore 16.00
+G_M54468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[x19]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M54468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M54468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
-G_M54468_IG07: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+G_M54468_IG05: ; bbWeight=0, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M54468_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M54468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- b G_M54468_IG05
+ b G_M54468_IG03
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 13.50, instruction count 17, allocated bytes for code 68 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
+; Total bytes of code 104, prolog size 12, PerfScore 21.50, instruction count 26, allocated bytes for code 104 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -94,7 +97,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+36 (+52.94%) : 53967.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
@@ -5,8 +5,8 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 627
-; 2 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 627
+; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 5, 5 ) ref -> x0 class-hnd single-def <System.String>
@@ -15,71 +15,78 @@
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp5 [V06,T02] ( 2, 4 ) int -> x0 "Inlining Arg"
-; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> x1 single-def "Inlining Arg"
-;* V08 tmp7 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V09 tmp8 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V10 tmp9 [V10,T03] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
-;* V11 tmp10 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V14 tmp13 [V14,T04] ( 2, 2 ) byref -> x1 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp14 [V15,T06] ( 2, 2 ) int -> x0 "field V03._length (fldOffset=0x8)" P-INDEP
-; V16 tmp15 [V16,T05] ( 2, 2 ) byref -> x1 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-; V17 tmp16 [V17,T07] ( 2, 2 ) int -> x0 "field V04._length (fldOffset=0x8)" P-INDEP
-;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
+; V06 tmp5 [V06,T02] ( 2, 4 ) int -> x20 "Inlining Arg"
+; V07 tmp6 [V07,T01] ( 2, 4 ) byref -> x19 single-def "Inlining Arg"
+; V08 tmp7 [V08,T03] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V11 tmp10 [V11 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
+; V12 tmp11 [V12,T04] ( 2, 2 ) byref -> x19 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp12 [V13,T06] ( 2, 2 ) int -> x20 "field V03._length (fldOffset=0x8)" P-INDEP
+; V14 tmp13 [V14,T05] ( 2, 2 ) byref -> x19 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T07] ( 2, 2 ) int -> x20 "field V04._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M54468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M54468_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
cbz x0, G_M54468_IG04
- add x1, x0, #12
- ; byrRegs +[x1]
- ldr w0, [x0, #0x08]
+ add x19, x0, #12
+ ; byrRegs +[x19]
+ ldr w20, [x0, #0x08]
+ mov w0, #1
; gcrRegs -[x0]
- cmp w0, #0
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ cmp w20, #0
ble G_M54468_IG06
- ldrh w0, [x1]
+ ldrh w0, [x19]
cmp w0, #47
cset x0, eq
- ;; size=32 bbWeight=1 PerfScore 10.00
+ ;; size=56 bbWeight=1 PerfScore 16.00
G_M54468_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[x1]
- ldp fp, lr, [sp], #0x10
+ ; byrRegs -[x19]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 3.00
G_M54468_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
;; size=4 bbWeight=0 PerfScore 0.00
G_M54468_IG05: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M54468_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
b G_M54468_IG03
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 68, prolog size 8, PerfScore 13.50, instruction count 17, allocated bytes for code 68 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
+; Total bytes of code 104, prolog size 12, PerfScore 21.50, instruction count 26, allocated bytes for code 104 (MethodHash=9d0e2b3b) for method System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -90,7 +97,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
benchmarks.run_tiered.osx.arm64.checked.mch
-28 (-17.50%) : 24295.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
@@ -2,60 +2,73 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 2, 2 ) int -> x0 "Span.get_Item index"
-; V03 tmp2 [V03,T02] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
-;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V05 tmp4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V06 tmp5 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V07 tmp6 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V08 tmp7 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V09 tmp8 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V10 tmp9 [V10,T01] ( 4, 2.50) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V11 tmp10 [V11,T00] ( 4, 3 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-;* V12 tmp11 [V12 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-;* V13 tmp12 [V13 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-;* V14 tmp13 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V02 tmp1 [V02,T05] ( 2, 4 ) int -> x2 "Span.get_Item index"
+;* V03 tmp2 [V03,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp3 [V04,T00] ( 4, 6.43) ushort -> x2 "Inlining Arg"
+;* V05 tmp4 [V05,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V06 tmp5 [V06,T01] ( 4, 6.43) ushort -> x2 "Inlining Arg"
+; V07 tmp6 [V07,T04] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
+;* V08 tmp7 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V11 tmp10 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V13 tmp12 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V14 tmp13 [V14,T02] ( 4, 4 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp14 [V15,T03] ( 4, 4 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+;* V16 tmp15 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;* V17 tmp16 [V17 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
+;* V18 tmp17 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V19 tmp18 [V19 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
+;* V20 tmp19 [V20 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V21 tmp20 [V21 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 0
G_M21002_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x20, x0
- ; byrRegs +[x20]
- mov w19, w1
- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M21002_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- cbz w19, G_M21002_IG05
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M21002_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
- ldrh w0, [x20]
- movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X500NameEncoder:IsQuotableWhitespace(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M21002_IG05
- sub w0, w19, #1
- ldrh w0, [x20, w0, UXTW #2]
- movz x1, #0xD1FFAB1E // code for System.Security.Cryptography.X509Certificates.X500NameEncoder:IsQuotableWhitespace(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M21002_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M21002_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ ; byrRegs +[x0]
+ cbz w1, G_M21002_IG10
+ ldrh w2, [x0]
+ cmp w2, #32
+ beq G_M21002_IG10
+ ;; size=16 bbWeight=1 PerfScore 5.50
+G_M21002_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, #9
+ blt G_M21002_IG05
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M21002_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, #13
+ ble G_M21002_IG10
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M21002_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ sub w2, w1, #1
+ ldrh w2, [x0, w2, UXTW #2]
+ cmp w2, #32
+ beq G_M21002_IG10
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M21002_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, #9
+ blt G_M21002_IG08
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M21002_IG07: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ cmp w2, #13
+ ble G_M21002_IG10
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M21002_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #2 LSL #32
@@ -64,42 +77,37 @@ G_M21002_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}
add x2, x2, #8
; gcrRegs -[x2]
; byrRegs +[x2]
- mov x0, x20
- ; byrRegs +[x0]
- mov w1, w19
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ; byrRegs -[x0 x2 x20]
- ;; size=108 bbWeight=0.50 PerfScore 15.50
-G_M21002_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ; byrRegs -[x0 x2]
+ ;; size=40 bbWeight=1 PerfScore 10.50
+G_M21002_IG09: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M21002_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M21002_IG10: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M21002_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=0.80 PerfScore 0.40
+G_M21002_IG11: ; bbWeight=0.80, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.80 PerfScore 1.60
-; Total bytes of code 160, prolog size 12, PerfScore 23.25, instruction count 40, allocated bytes for code 160 (MethodHash=028fadf5) for method System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
+; Total bytes of code 132, prolog size 8, PerfScore 30.15, instruction count 33, allocated bytes for code 132 (MethodHash=028fadf5) for method System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 33 (0x00021) Actual length = 132 (0x000084)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -110,10 +118,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-12 (-13.04%) : 23711.dasm - (dynamicClass):NumGetter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M10319_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M10319_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M10319_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M10319_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M10319_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x10]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M10319_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=d4f4d7b0) for method (dynamicClass):NumGetter(System.Object):int (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=d4f4d7b0) for method (dynamicClass):NumGetter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 23712.dasm - (dynamicClass):TextGetter(System.Object):System.String (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M40937_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M40937_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M40937_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M40937_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M40937_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -52,7 +52,7 @@ G_M40937_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=08526016) for method (dynamicClass):TextGetter(System.Object):System.String (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=08526016) for method (dynamicClass):TextGetter(System.Object):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -63,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+15.38%) : 5065.dasm - System.Span1[ubyte]:op_Implicit(ubyte[]):System.Span
1ubyte
@@ -2,54 +2,59 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 5, 4 ) ref -> x0 class-hnd single-def <ubyte[]>
+; V00 arg0 [V00,T00] ( 5, 4.60) ref -> x0 class-hnd single-def <ubyte[]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> registers "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> registers "field V02._length (fldOffset=0x8)" P-INDEP
+; V04 tmp3 [V04,T02] ( 3, 2 ) int -> [fp+0x1C] "field V02._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M14541_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M14541_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbnz x0, G_M14541_IG04
+ cbz x0, G_M14541_IG06
;; size=4 bbWeight=1 PerfScore 1.00
-G_M14541_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ; byrRegs +[x0]
- mov w1, wzr
- b G_M14541_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M14541_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
+G_M14541_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x1, x0, #16
; byrRegs +[x1]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
- mov w2, w0
+ str w0, [fp, #0x1C] // [V04 tmp3]
+ ;; size=12 bbWeight=0.80 PerfScore 3.60
+G_M14541_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
mov x0, x1
; byrRegs +[x0]
- mov w1, w2
+ ldr w1, [fp, #0x1C] // [V04 tmp3]
; byrRegs -[x1]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M14541_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=1 PerfScore 2.50
+G_M14541_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M14541_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x0]
+ mov x0, xzr
+ ; byrRegs +[x0]
+ mov w1, wzr
+ str w1, [fp, #0x1C] // [V04 tmp3]
+ mov x1, x0
+ ; byrRegs +[x1]
+ b G_M14541_IG04
+ ;; size=20 bbWeight=0.20 PerfScore 0.70
-; Total bytes of code 52, prolog size 8, PerfScore 8.00, instruction count 13, allocated bytes for code 52 (MethodHash=cb80c732) for method System.Span`1[ubyte]:op_Implicit(ubyte[]):System.Span`1[ubyte] (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 11.30, instruction count 15, allocated bytes for code 60 (MethodHash=cb80c732) for method System.Span`1[ubyte]:op_Implicit(ubyte[]):System.Span`1[ubyte] (Tier1)
; ============================================================
Unwind Info:
@@ -60,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -68,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+8 (+15.38%) : 18435.dasm - System.MemoryExtensions:AsSpanushort:System.Span`1ushort
@@ -2,54 +2,59 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 5, 4 ) ref -> x0 class-hnd single-def <ushort[]>
+; V00 arg0 [V00,T00] ( 5, 4.60) ref -> x0 class-hnd single-def <ushort[]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> registers "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> registers "field V02._length (fldOffset=0x8)" P-INDEP
+; V04 tmp3 [V04,T02] ( 3, 2 ) int -> [fp+0x1C] "field V02._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M3346_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M3346_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbnz x0, G_M3346_IG04
+ cbz x0, G_M3346_IG06
;; size=4 bbWeight=1 PerfScore 1.00
-G_M3346_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ; byrRegs +[x0]
- mov w1, wzr
- b G_M3346_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M3346_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
+G_M3346_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x1, x0, #16
; byrRegs +[x1]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
- mov w2, w0
+ str w0, [fp, #0x1C] // [V04 tmp3]
+ ;; size=12 bbWeight=0.80 PerfScore 3.60
+G_M3346_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
mov x0, x1
; byrRegs +[x0]
- mov w1, w2
+ ldr w1, [fp, #0x1C] // [V04 tmp3]
; byrRegs -[x1]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M3346_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=1 PerfScore 2.50
+G_M3346_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M3346_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x0]
+ mov x0, xzr
+ ; byrRegs +[x0]
+ mov w1, wzr
+ str w1, [fp, #0x1C] // [V04 tmp3]
+ mov x1, x0
+ ; byrRegs +[x1]
+ b G_M3346_IG04
+ ;; size=20 bbWeight=0.20 PerfScore 0.70
-; Total bytes of code 52, prolog size 8, PerfScore 8.00, instruction count 13, allocated bytes for code 52 (MethodHash=ad92f2ed) for method System.MemoryExtensions:AsSpan[ushort](ushort[]):System.Span`1[ushort] (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 11.30, instruction count 15, allocated bytes for code 60 (MethodHash=ad92f2ed) for method System.MemoryExtensions:AsSpan[ushort](ushort[]):System.Span`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -60,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -68,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+28 (+20.59%) : 20280.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x1 single-def
-; V02 loc0 [V02,T02] ( 6, 4 ) int -> x2
-; V03 loc1 [V03,T03] ( 4, 3 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 7.20) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) byref -> x1 single-def
+; V02 loc0 [V02,T01] ( 6, 5.20) int -> x2
+; V03 loc1 [V03,T04] ( 4, 3.60) ref -> x3 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 ) long -> zero-ref "spilling helperCall"
-; V07 cse0 [V07,T05] ( 3, 2.50) int -> x4 "CSE - aggressive"
-;* V08 rat0 [V08,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 cse0 [V07,T06] ( 3, 2.80) int -> x4 "CSE - aggressive"
+; V08 rat0 [V08,T05] ( 2, 3.20) long -> x0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T03] ( 2, 3.20) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -26,9 +28,10 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -37,20 +40,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bhi G_M49890_IG05
+ bls G_M49890_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
- ; gcrRegs -[x3]
- str xzr, [x1]
- mov w0, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M49890_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, gcvars, byref, isz
- ; gcrRegs +[x3]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -62,28 +54,51 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x18]
+ cbnz x0, G_M49890_IG07
+ ;; size=48 bbWeight=0.80 PerfScore 18.00
+G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
+ b G_M49890_IG07
+ ;; size=4 bbWeight=0.16 PerfScore 0.16
+G_M49890_IG05: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ ; gcrRegs -[x3]
+ ; byrRegs +[x1]
+ str xzr, [x1]
+ mov w0, wzr
+ ;; size=8 bbWeight=0.20 PerfScore 0.30
+G_M49890_IG06: ; bbWeight=0.20, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
+G_M49890_IG07: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x3]
+ ; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG07
+ bhs G_M49890_IG09
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
- ;; size=56 bbWeight=0.50 PerfScore 7.00
-G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.80 PerfScore 3.60
+G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49890_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.80 PerfScore 3.20
+G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 12, PerfScore 25.75, instruction count 34, allocated bytes for code 136 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 164, prolog size 16, PerfScore 41.06, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -94,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.osx.arm64.checked.mch
-44 (-55.00%) : 438273.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 5, 4 ) float -> d0 single-def
+; V00 loc0 [V00,T01] ( 2, 2 ) float -> d0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> d0 "Single return block return value"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> d0 "Single return block return value"
;
; Lcl frame size = 0
@@ -18,34 +20,19 @@ G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- ble G_M53791_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M53791_IG05
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- blo G_M53791_IG03
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53791_IG03
- b G_M53791_IG03
- ;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +43,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 438221.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -17,28 +19,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 434202.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) float -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -19,28 +21,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -51,7 +44,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+33.33%) : 382288.dasm - BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
@@ -2,21 +2,23 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 3, 3 ) long -> x0 single-def
+; V00 loc0 [V00,T00] ( 3, 27.00) long -> x0 single-def
;* V01 loc1 [V01,T01] ( 0, 0 ) int -> zero-ref ptr
;* V02 loc2 [V02,T02] ( 0, 0 ) int -> zero-ref ptr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V04 tmp1 [V04 ] ( 1, 9.00) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
; V05 GsCookie [V05 ] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "GSSecurityCookie"
;
; Lcl frame size = 16
-G_M8788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M8788_IG01: ; bbWeight=9.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str xzr, [fp, #0x10] // [V04 tmp1]
@@ -25,8 +27,8 @@ G_M8788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #32
movk x0, #0xD1FFAB1E LSL #48
str x0, [fp, #0x18] // [V05 GsCookie]
- ;; size=32 bbWeight=1 PerfScore 5.50
-G_M8788_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=9.00 PerfScore 49.50
+G_M8788_IG02: ; bbWeight=9.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x0, fp, #16 // [V04 tmp1]
strb wzr, [x0]
ldrb w0, [x0]
@@ -36,39 +38,58 @@ G_M8788_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- movn w1, #0
- cmp w0, #0
- cinc w0, w1, eq
+ cbz w0, G_M8788_IG05
+ ;; size=40 bbWeight=9.00 PerfScore 103.50
+G_M8788_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movn w0, #0
movz xip0, #0xD1FFAB1E
movk xip0, #0xD1FFAB1E LSL #16
movk xip0, #0xD1FFAB1E LSL #32
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x18] // [V05 GsCookie]
cmp xip0, xip1
- beq G_M8788_IG03
+ beq G_M8788_IG04
bl CORINFO_HELP_FAIL_FAST
- ;; size=80 bbWeight=1 PerfScore 18.50
-G_M8788_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=2.89 PerfScore 20.26
+G_M8788_IG04: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M8788_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov w0, wzr
+ movz xip0, #0xD1FFAB1E
+ movk xip0, #0xD1FFAB1E LSL #16
+ movk xip0, #0xD1FFAB1E LSL #32
+ movk xip0, #0xD1FFAB1E LSL #48
+ ldr xip1, [fp, #0x18] // [V05 GsCookie]
+ cmp xip0, xip1
+ beq G_M8788_IG06
+ bl CORINFO_HELP_FAIL_FAST
+ ;; size=36 bbWeight=0.47 PerfScore 3.32
+G_M8788_IG06: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 120, prolog size 32, PerfScore 26.00, instruction count 30, allocated bytes for code 120 (MethodHash=d502ddab) for method BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
+; Total bytes of code 160, prolog size 32, PerfScore 183.32, instruction count 40, allocated bytes for code 160 (MethodHash=d502ddab) for method BringUpTest_LocallocCnstB1:LocallocCnstB1():int (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+50.00%) : 351349.dasm - JIT.HardwareIntrinsics.General.Vector1281.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
@@ -2,49 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetSByte>
-; V01 arg1 [V01 ] ( 3, 3 ) byte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) byte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M30983_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M30983_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M30983_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M30983_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
cmp w0, #255
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M30983_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M30983_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 16.58
+G_M30983_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=2.89 PerfScore 1.45
+G_M30983_IG04: ; bbWeight=2.89, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M30983_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M30983_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=ae3a86f8) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 36.84, instruction count 12, allocated bytes for code 48 (MethodHash=ae3a86f8) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+50.00%) : 351320.dasm - JIT.HardwareIntrinsics.General.Vector1281.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
@@ -2,49 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetByte>
-; V01 arg1 [V01 ] ( 3, 3 ) ubyte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) ubyte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M54753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M54753_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M54753_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M54753_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
cmp w0, #255
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M54753_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M54753_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 16.58
+G_M54753_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=2.89 PerfScore 1.45
+G_M54753_IG04: ; bbWeight=2.89, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M54753_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M54753_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=b6722a1e) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 36.84, instruction count 12, allocated bytes for code 48 (MethodHash=b6722a1e) for method JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.osx.arm64.checked.mch
-48 (-32.43%) : 112024.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-1(ushort):ubyte:this (FullOpts)
@@ -3,80 +3,77 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) ushort -> x1 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 -> x19 "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, 3 ) ushort -> x0 "Inline stloc first use temp"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V11 cse0 [V11,T00] ( 7, 7 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M44010_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M44010_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w19, w1
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M44010_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, #82
- cmp w19, #81
- ccmp w19, w0, z, ne
- beq G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M44010_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M44010_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44010_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ uxth w0, w1
+ sub w1, w0, #79
+ cmp w1, #1
+ bls G_M44010_IG04
+ mov w1, #82
+ cmp w0, #81
+ ccmp w0, w1, z, ne
+ beq G_M44010_IG04
+ sub w1, w0, #83
+ cmp w1, #4
+ bls G_M44010_IG04
+ sub w1, w0, #0xD1FFAB1E
+ cmp w1, #1
+ bls G_M44010_IG04
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ cinc w0, wzr, eq
+ ;; size=72 bbWeight=1 PerfScore 11.00
+G_M44010_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44010_IG04: ; bbWeight=0.79, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.79 PerfScore 0.39
+G_M44010_IG05: ; bbWeight=0.79, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.79 PerfScore 1.57
-; Total bytes of code 148, prolog size 12, PerfScore 23.75, instruction count 37, allocated bytes for code 148 (MethodHash=f0a25415) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
+; Total bytes of code 100, prolog size 8, PerfScore 16.47, instruction count 25, allocated bytes for code 100 (MethodHash=f0a25415) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte: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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -87,10 +84,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-28 (-28.00%) : 112023.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-0(ushort):ubyte:this (FullOpts)
@@ -3,68 +3,66 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 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 -> x1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) ushort -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 5, 3.50) int -> x19 "CSE - aggressive"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
+;* V04 tmp2 [V04,T03] ( 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,T02] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V07 cse0 [V07,T00] ( 5, 5 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M51339_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w19, w1
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M51339_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M51339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, #82
- cmp w19, #81
- ccmp w19, w0, z, ne
- beq G_M51339_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M51339_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M51339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M51339_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ uxth w0, w1
+ sub w1, w0, #79
+ cmp w1, #1
+ bls G_M51339_IG04
+ mov w1, #82
+ cmp w0, #81
+ ccmp w0, w1, z, ne
+ beq G_M51339_IG04
+ sub w0, w0, #83
+ cmp w0, #4
+ cset x0, ls
+ ;; size=44 bbWeight=1 PerfScore 6.50
+G_M51339_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M51339_IG04: ; bbWeight=0.67, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.67 PerfScore 0.33
+G_M51339_IG05: ; bbWeight=0.67, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.67 PerfScore 1.33
-; Total bytes of code 100, prolog size 12, PerfScore 17.25, instruction count 25, allocated bytes for code 100 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 11.67, instruction count 18, allocated bytes for code 72 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte: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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -75,10 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-40 (-25.00%) : 198998.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
; fp 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 -> x19 class-hnd single-def <System.String>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 7, 14 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V03 tmp1 [V03,T00] ( 6, 12 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
;
; Lcl frame size = 8
@@ -50,25 +52,12 @@ G_M21542_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1 x20]
- adrp x2, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x2]
- ldr x2, [x2]
- ; gcrRegs +[x2]
- mov x0, x21
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, wzr
- ldr x3, [x11]
- blr x3
- ; gcrRegs -[x0 x2]
str wzr, [x21, #0x88]
mov w0, #1
strb w0, [x21, #0xA7]
mov x0, x21
; gcrRegs +[x0]
- ;; size=120 bbWeight=1 PerfScore 33.00
+ ;; size=80 bbWeight=1 PerfScore 20.00
G_M21542_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -76,7 +65,7 @@ G_M21542_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 160, prolog size 16, PerfScore 42.50, instruction count 40, allocated bytes for code 160 (MethodHash=4b06abd9) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
+; Total bytes of code 120, prolog size 16, PerfScore 29.50, instruction count 30, allocated bytes for code 120 (MethodHash=4b06abd9) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
; ============================================================
Unwind Info:
@@ -87,7 +76,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+35.71%) : 100238.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -3,16 +3,19 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 4 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> x1 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,T01] ( 2, 4 ) int -> x0 "argument with side effect"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -20,7 +23,7 @@ G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrsb wzr, [x1]
mov x0, x1
@@ -32,16 +35,25 @@ G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
uxth w0, w0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=40 bbWeight=1 PerfScore 13.00
-G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M39608_IG04
+ ;; size=44 bbWeight=1 PerfScore 11.50
+G_M39608_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M39608_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M39608_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M39608_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 16.50, instruction count 14, allocated bytes for code 56 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 16.12, instruction count 19, allocated bytes for code 76 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -52,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+35.71%) : 100232.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -3,16 +3,19 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser>
-; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> x1 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,T01] ( 2, 4 ) int -> x0 "argument with side effect"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -20,7 +23,7 @@ G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrsb wzr, [x1]
mov x0, x1
@@ -32,16 +35,25 @@ G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
uxth w0, w0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=40 bbWeight=1 PerfScore 13.00
-G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M28613_IG04
+ ;; size=44 bbWeight=1 PerfScore 11.50
+G_M28613_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M28613_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M28613_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M28613_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 16.50, instruction count 14, allocated bytes for code 56 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 16.12, instruction count 19, allocated bytes for code 76 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -52,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 200986.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
@@ -3,28 +3,29 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 3.96) byref -> x0 this single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Text.Json.JsonElement>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-; V05 tmp3 [V05,T03] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V06 tmp4 [V06,T04] ( 2, 1 ) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T06] ( 2, 1 ) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
-; V08 tmp6 [V08,T05] ( 2, 1 ) ref -> x0 single-def "field V03._parent (fldOffset=0x0)" P-INDEP
-; V09 tmp7 [V09,T07] ( 2, 1 ) int -> x1 "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T01] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V04 tmp2 [V04,T01] ( 2, 1.92) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V05 tmp3 [V05,T02] ( 2, 1.92) int -> x0 "Inlining Arg"
+; V06 tmp4 [V06,T03] ( 2, 1.04) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1.04) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
+; V08 tmp6 [V08,T05] ( 2, 0.96) ref -> registers single-def "field V03._parent (fldOffset=0x0)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 0.96) int -> [fp+0x1C] spill-single-def "field V03._idx (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M36569_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
@@ -32,29 +33,35 @@ G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
ldr w1, [x0]
tbz w1, #31, G_M36569_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M36569_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36569_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, xzr
; gcrRegs +[x0]
mov w1, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M36569_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M36569_IG04: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M36569_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M36569_IG05: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x0, [x0, #0x08]
- ; gcrRegs +[x0]
+ ldr x1, [x0, #0x08]
+ ; gcrRegs +[x1]
+ ldr w0, [x0]
; byrRegs -[x0]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M36569_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ str w0, [fp, #0x1C] // [V09 tmp7]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ldr w1, [fp, #0x1C] // [V09 tmp7]
+ ; gcrRegs -[x1]
+ ;; size=20 bbWeight=0.48 PerfScore 4.56
+G_M36569_IG06: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 44, prolog size 8, PerfScore 9.50, instruction count 11, allocated bytes for code 44 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 12.58, instruction count 15, allocated bytes for code 60 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -76,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
libraries.pmi.osx.arm64.checked.mch
-28 (-30.43%) : 248417.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
@@ -2,64 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
-; partially interruptible
+; fully 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.50) int -> x19 single-def
+; V00 arg0 [V00,T00] ( 6, 4.94) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M20897_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov w19, w0
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M20897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, w19
- movz x1, #0xD1FFAB1E // code for System.Data.ExpressionNode:IsFloat(int):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M20897_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M20897_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, w19
+ cmp w0, #13
+ ccmp w0, #14, z, ne
+ beq G_M20897_IG06
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M20897_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #15
+ beq G_M20897_IG06
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M20897_IG04: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionNode:IsInteger(int):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M20897_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=16 bbWeight=0.52 PerfScore 2.34
+G_M20897_IG05: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M20897_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M20897_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M20897_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=0.48 PerfScore 0.24
+G_M20897_IG07: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 92, prolog size 12, PerfScore 16.75, instruction count 23, allocated bytes for code 92 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 8.70, instruction count 16, allocated bytes for code 64 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -70,10 +70,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-20 (-23.81%) : 147569.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
@@ -2,62 +2,66 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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.50) ushort -> x19 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V03 cse0 [V03,T01] ( 5, 3.74) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M26802_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov w19, w0
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M26802_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w0, w19
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M26802_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M26802_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxth w0, w19
+ uxth w0, w0
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M26802_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M26802_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M26802_IG05: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0xD1FFAB1E
cset x0, ne
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M26802_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M26802_IG06: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M26802_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M26802_IG07: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M26802_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=0.48 PerfScore 0.24
+G_M26802_IG08: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 84, prolog size 12, PerfScore 15.00, instruction count 21, allocated bytes for code 84 (MethodHash=e9e6974d) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 8.08, instruction count 16, allocated bytes for code 64 (MethodHash=e9e6974d) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -68,10 +72,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-44 (-23.40%) : 60277.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
@@ -2,115 +2,94 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 8, 5.25) ref -> x19 class-hnd single-def <System.Object>
-; V01 loc0 [V01,T08] ( 2, 1 ) long -> x20 ld-addr-op single-def
-; V02 loc1 [V02,T09] ( 2, 1 ) long -> x19 ld-addr-op single-def
+; V00 arg0 [V00,T00] ( 7, 5 ) ref -> x0 class-hnd single-def <System.Object>
+; V01 loc0 [V01,T06] ( 2, 0.96) long -> x19 ld-addr-op single-def
+; V02 loc1 [V02,T07] ( 2, 0.83) long -> x19 ld-addr-op single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.IntPtr>
-; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.IntPtr>
+; V05 tmp2 [V05,T04] ( 3, 2.88) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <System.UIntPtr>
-; V08 tmp5 [V08,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V07 tmp4 [V07,T02] ( 3, 4.52) ref -> x1 class-hnd "spilling QMark2" <System.UIntPtr>
+; V08 tmp5 [V08,T05] ( 3, 2.50) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V10 tmp7 [V10,T01] ( 4, 5 ) ref -> x0 "Single return block return value"
-; V11 cse0 [V11,T07] ( 4, 1.25) long -> x0 "CSE - moderate"
-; V12 cse1 [V12,T06] ( 5, 1.50) long -> x20 multi-def "CSE - moderate"
+; V10 tmp7 [V10,T03] ( 4, 4 ) ref -> x0 "Single return block return value"
+; V11 cse0 [V11,T08] ( 2, 0.52) long -> x2 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M30013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M30013_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M30013_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M30013_IG04
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M30013_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x20, x0
- beq G_M30013_IG08
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
- ; gcrRegs +[x0]
- cbz x0, G_M30013_IG11
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30013_IG05: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- cmp x20, x0
- bne G_M30013_IG11
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M30013_IG10
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30013_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M30013_IG09
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M30013_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr x20, [x19, #0x08]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x19] +[x0]
- str x20, [x0, #0x08]
- b G_M30013_IG12
- ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M30013_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x1, x19
+ mov x1, x0
; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
+ cbz x1, G_M30013_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M30013_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x1]
+ ; gcrRegs -[x1]
+ movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
+ cmp x1, x2
+ beq G_M30013_IG07
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M30013_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ mov x1, x0
+ ; gcrRegs +[x1]
+ cbz x1, G_M30013_IG09
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M30013_IG05: ; bbWeight=0.26, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x1]
; gcrRegs -[x1]
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr x19, [x19, #0x08]
- ; gcrRegs -[x19]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ cmp x1, x2
+ bne G_M30013_IG09
+ ;; size=24 bbWeight=0.26 PerfScore 1.56
+G_M30013_IG06: ; bbWeight=0.42, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x08]
movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
str x19, [x0, #0x08]
- b G_M30013_IG12
- ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M30013_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
+ b G_M30013_IG08
+ ;; size=28 bbWeight=0.42 PerfScore 3.12
+G_M30013_IG07: ; bbWeight=0.48, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x08]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M30013_IG12: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x19]
- ldp x19, x20, [sp, #0x10]
+ str x19, [x0, #0x08]
+ ;; size=24 bbWeight=0.48 PerfScore 3.12
+G_M30013_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M30013_IG09: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ b G_M30013_IG08
+ ;; size=4 bbWeight=0.10 PerfScore 0.10
-; Total bytes of code 188, prolog size 12, PerfScore 21.50, instruction count 47, allocated bytes for code 188 (MethodHash=edbc8ac2) for method Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 20.40, instruction count 36, allocated bytes for code 144 (MethodHash=edbc8ac2) for method Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +108,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+20 (+38.46%) : 106544.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
@@ -2,14 +2,20 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol>
-; V01 loc0 [V01,T01] ( 3, 3 ) int -> x0 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] ( 4, 3 ) int -> x0 "Inline return value spill temp"
+;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V05 tmp3 [V05,T01] ( 4, 3.60) int -> x0 single-def "Inline stloc first use temp"
;
; Lcl frame size = 0
@@ -17,25 +23,36 @@ G_M4118_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M4118_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M4118_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr w0, [x0, #0x80]
; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.TypeAttributesExtensions:ToCharSet(int):int
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
+ and w0, w0, #0xD1FFAB1E
+ cbz w0, G_M4118_IG04
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M4118_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w1, #3
+ mov w2, #4
+ cmp w0, #32, LSL #12
+ csel w2, wzr, w2, ne
+ cmp w0, #16, LSL #12
+ csel w0, w1, w2, eq
+ b G_M4118_IG05
+ ;; size=28 bbWeight=0.80 PerfScore 3.20
+G_M4118_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #2
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M4118_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w1, #2
cmp w0, #0
csel w0, w0, w1, ne
- ;; size=36 bbWeight=1 PerfScore 10.00
-G_M4118_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 1.50
+G_M4118_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 13.50, instruction count 13, allocated bytes for code 52 (MethodHash=fe4cefe9) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 12.80, instruction count 18, allocated bytes for code 72 (MethodHash=fe4cefe9) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -46,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+44.44%) : 147550.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,15 +2,19 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 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 -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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 -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -18,22 +22,29 @@ G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrh w0, [x1, #0x0C]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
+ mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 7.50
-G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M39608_IG04
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M39608_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M39608_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M39608_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M39608_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
- ; gcr arg pop 0
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 11.00, instruction count 9, allocated bytes for code 36 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 10.12, instruction count 13, allocated bytes for code 52 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -44,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+44.44%) : 147544.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,15 +2,19 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 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 -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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 -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -18,22 +22,29 @@ G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrh w0, [x1, #0x0C]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
+ mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 7.50
-G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M28613_IG04
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M28613_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M28613_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M28613_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M28613_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
- ; gcr arg pop 0
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 11.00, instruction count 9, allocated bytes for code 36 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 10.12, instruction count 13, allocated bytes for code 52 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -44,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.osx.arm64.Release.mch
-48 (-19.05%) : 9141.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
@@ -2,100 +2,73 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
-; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 7, 6.50) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
+; V02 arg2 [V02,T01] ( 6, 4.72) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
-; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
+; V05 tmp2 [V05,T02] ( 3, 5 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V06 tmp3 [V06,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T07] ( 3, 1.20) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V08 tmp5 [V08,T04] ( 2, 2 ) ubyte -> x1 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T05] ( 3, 3 ) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T09] ( 2, 2 ) long -> x1 "CSE - moderate"
+; V11 cse1 [V11,T06] ( 3, 1.24) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+G_M16591_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- ldr w1, [x20, #0x08]
- str w1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
+G_M16591_IG03: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M16591_IG09
+ ;; size=24 bbWeight=0.52 PerfScore 3.12
+G_M16591_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w1, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
+ cbz w1, G_M16591_IG07
+ ;; size=12 bbWeight=1 PerfScore 5.00
+G_M16591_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M16591_IG06: ; bbWeight=0.42, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.42 PerfScore 1.25
+G_M16591_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
beq G_M16591_IG11
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M16591_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -106,9 +79,24 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ b G_M16591_IG11
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M16591_IG09: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ mov x0, x1
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ ldr w1, [x20, #0x08]
+ str w1, [x0, #0x08]
+ ;; size=16 bbWeight=0.20 PerfScore 1.10
+G_M16591_IG10: ; bbWeight=0.20, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.60
+G_M16591_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0] +[x19]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -122,16 +110,15 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=32 bbWeight=1 PerfScore 11.50
+G_M16591_IG12: ; bbWeight=1, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 252, prolog size 24, PerfScore 34.25, instruction count 63, allocated bytes for code 252 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 204, prolog size 20, PerfScore 40.03, instruction count 51, allocated bytes for code 204 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +129,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,9 +143,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
-48 (-19.05%) : 8234.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1System.DateTime
@@ -2,100 +2,73 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
-; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 7, 6.50) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
+; V02 arg2 [V02,T01] ( 6, 4.72) ref -> x20 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T10] ( 0, 0 ) int -> zero-ref
-; V05 tmp2 [V05,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V06 tmp3 [V06,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V07 tmp4 [V07,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-; V08 tmp5 [V08,T08] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V10 cse0 [V10,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V11 cse1 [V11,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V12 cse2 [V12,T09] ( 2, 1 ) long -> x1 "CSE - moderate"
+;* V04 tmp1 [V04,T08] ( 0, 0 ) int -> zero-ref
+; V05 tmp2 [V05,T02] ( 3, 5 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V06 tmp3 [V06,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V07 tmp4 [V07,T07] ( 3, 1.20) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
+; V08 tmp5 [V08,T04] ( 2, 2 ) ubyte -> x1 single-def "Inline stloc first use temp"
+; V09 tmp6 [V09,T05] ( 3, 3 ) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V10 cse0 [V10,T09] ( 2, 2 ) long -> x1 "CSE - moderate"
+; V11 cse1 [V11,T06] ( 3, 1.24) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M27952_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+G_M27952_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M27952_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M27952_IG07
+ cbz x20, G_M27952_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M27952_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- cmp x1, x21
- bne G_M27952_IG07
- cmp x1, x21
- beq G_M27952_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M27952_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27952_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- mov x0, x21
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs +[x0]
- ; gcr arg pop 0
- ldr x1, [x20, #0x08]
- str x1, [x0, #0x08]
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x19]
- ldrb w0, [x19, #0x10]
+G_M27952_IG03: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M27952_IG09
+ ;; size=24 bbWeight=0.52 PerfScore 3.12
+G_M27952_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w1, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M27952_IG09
+ cbz w1, G_M27952_IG07
+ ;; size=12 bbWeight=1 PerfScore 5.00
+G_M27952_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M27952_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M27952_IG06: ; bbWeight=0.42, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M27952_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.42 PerfScore 1.25
+G_M27952_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
beq G_M27952_IG11
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M27952_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -106,9 +79,24 @@ G_M27952_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ b G_M27952_IG11
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M27952_IG09: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ mov x0, x1
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs +[x0]
+ ; gcr arg pop 0
+ ldr x1, [x20, #0x08]
+ str x1, [x0, #0x08]
+ ;; size=16 bbWeight=0.20 PerfScore 1.10
+G_M27952_IG10: ; bbWeight=0.20, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.60
+G_M27952_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0] +[x19]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -122,16 +110,15 @@ G_M27952_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M27952_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=32 bbWeight=1 PerfScore 11.50
+G_M27952_IG12: ; bbWeight=1, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 252, prolog size 24, PerfScore 34.25, instruction count 63, allocated bytes for code 252 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
+; Total bytes of code 204, prolog size 20, PerfScore 40.03, instruction count 51, allocated bytes for code 204 (MethodHash=edd892cf) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.IEquatable`1[System.DateTime] (FullOpts)
; ============================================================
Unwind Info:
@@ -142,7 +129,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
+ Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -156,9 +143,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
-48 (-18.75%) : 9789.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
@@ -2,103 +2,75 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
-; V01 arg1 [V01,T00] ( 7, 4.25) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-; V02 arg2 [V02,T01] ( 7, 4.75) ref -> x20 class-hnd single-def <System.Object>
-; V03 loc0 [V03,T08] ( 2, 1 ) int -> x19 single-def
+; V01 arg1 [V01,T00] ( 7, 6.50) ref -> x19 class-hnd single-def <System.Runtime.CompilerServices.CallSite>
+; V02 arg2 [V02,T01] ( 6, 4.72) ref -> x20 class-hnd single-def <System.Object>
+; V03 loc0 [V03,T10] ( 2, 0.40) int -> x19 single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1 [V05,T11] ( 0, 0 ) int -> zero-ref
-; V06 tmp2 [V06,T03] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
-;* V07 tmp3 [V07,T07] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
-; V08 tmp4 [V08,T02] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+;* V05 tmp1 [V05,T08] ( 0, 0 ) int -> zero-ref
+; V06 tmp2 [V06,T02] ( 3, 5 ) long -> x1 "fgMakeTemp is creating a new local variable"
+;* V07 tmp3 [V07,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>>
+; V08 tmp4 [V08,T07] ( 3, 1.20) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<unknown class>>
-; V10 tmp6 [V10,T09] ( 2, 1 ) ubyte -> x0 single-def "Inline stloc first use temp"
-; V11 tmp7 [V11,T05] ( 3, 1.50) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
-; V12 cse0 [V12,T04] ( 5, 2.25) long -> x21 "CSE - aggressive"
-; V13 cse1 [V13,T06] ( 3, 1.50) long -> x1 "CSE - moderate"
-; V14 cse2 [V14,T10] ( 2, 1 ) long -> x1 "CSE - moderate"
+; V10 tmp6 [V10,T04] ( 2, 2 ) ubyte -> x1 single-def "Inline stloc first use temp"
+; V11 tmp7 [V11,T05] ( 3, 3 ) ref -> x3 class-hnd "Inline return value spill temp" <<unknown class>>
+; V12 cse0 [V12,T09] ( 2, 2 ) long -> x1 "CSE - moderate"
+; V13 cse1 [V13,T06] ( 3, 1.24) long -> x1 "CSE - moderate"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M16591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+G_M16591_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x20]!
+ stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x1
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M16591_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M16591_IG07
+ cbz x20, G_M16591_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M16591_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x20]
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #1 LSL #32
- cmp x1, x21
- bne G_M16591_IG07
- cmp x1, x21
- beq G_M16591_IG05
- ;; size=32 bbWeight=0.50 PerfScore 3.75
-G_M16591_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- mov x1, x20
- ; gcrRegs +[x1]
- mov x0, x21
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x1]
- ; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ldr w0, [x20, #0x08]
- add w19, w0, #1
- mov x0, x21
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x20] +[x0]
- ; gcr arg pop 0
- str w19, [x0, #0x08]
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x19-x20]
- ldrb w0, [x19, #0x10]
+G_M16591_IG03: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ cmp x0, x1
+ beq G_M16591_IG09
+ ;; size=24 bbWeight=0.52 PerfScore 3.12
+G_M16591_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldrb w1, [x19, #0x10]
strb wzr, [x19, #0x10]
- cbz w0, G_M16591_IG09
+ cbz w1, G_M16591_IG07
+ ;; size=12 bbWeight=1 PerfScore 5.00
+G_M16591_IG05: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19-x20]
mov x0, xzr
- ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M16591_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M16591_IG06: ; bbWeight=0.42, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M16591_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=0.42 PerfScore 1.25
+G_M16591_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19-x20]
ldr x0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
beq G_M16591_IG11
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=1 PerfScore 6.00
+G_M16591_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x1
mov x1, x19
; gcrRegs +[x1]
@@ -109,9 +81,25 @@ G_M16591_IG10: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000
blr x2
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- ;; size=28 bbWeight=0.25 PerfScore 1.62
-G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ b G_M16591_IG11
+ ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M16591_IG09: ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x19]
+ ldr w0, [x20, #0x08]
+ add w19, w0, #1
+ mov x0, x1
+ bl CORINFO_HELP_NEWSFAST
+ ; gcrRegs -[x20] +[x0]
+ ; gcr arg pop 0
+ str w19, [x0, #0x08]
+ ;; size=20 bbWeight=0.20 PerfScore 1.20
+G_M16591_IG10: ; bbWeight=0.20, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.60
+G_M16591_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0] +[x19-x20]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -125,16 +113,15 @@ G_M16591_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=32 bbWeight=0.50 PerfScore 5.75
-G_M16591_IG12: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ;; size=32 bbWeight=1 PerfScore 11.50
+G_M16591_IG12: ; bbWeight=1, epilog, nogc, extend
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
br x3
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 256, prolog size 24, PerfScore 34.50, instruction count 64, allocated bytes for code 256 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
+; Total bytes of code 208, prolog size 20, PerfScore 40.13, instruction count 52, allocated bytes for code 208 (MethodHash=319bbf30) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -145,7 +132,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -159,9 +146,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ E4 end
+ E4 end
E4 end
E4 end
+44 (+22.45%) : 156836.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 39468
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T01] ( 5, 4.89) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T06] ( 3, 2.95) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T00] ( 5, 9.46) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T00] ( 5, 9.46) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T07] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T05] ( 3, 3.78) long -> x1 "runtime lookup"
-; V12 rat1 [V12,T03] ( 3, 5.30) long -> x1 "spilling expr"
-; V13 rat2 [V13,T04] ( 3, 4.24) long -> x1 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T10] ( 3, 0.22) long -> x1 "runtime lookup"
-; V15 rat4 [V15,T08] ( 3, 0.30) long -> x1 "spilling expr"
-; V16 rat5 [V16,T09] ( 3, 0.24) long -> x1 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T05] ( 3, 3.78) long -> x1 "runtime lookup"
+; V10 rat1 [V10,T03] ( 3, 5.30) long -> x1 "spilling expr"
+; V11 rat2 [V11,T04] ( 3, 4.24) long -> x1 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T10] ( 3, 0.22) long -> x1 "runtime lookup"
+; V13 rat4 [V13,T08] ( 3, 0.30) long -> x1 "spilling expr"
+; V14 rat5 [V14,T09] ( 3, 0.24) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x0, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbz w20, G_M34955_IG09
@@ -66,24 +65,36 @@ G_M34955_IG07: ; bbWeight=0.95, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
mov x0, x1
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=32 bbWeight=0.95 PerfScore 7.56
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=64 bbWeight=0.95 PerfScore 14.18
G_M34955_IG08: ; bbWeight=0.95, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.95 PerfScore 2.84
+ ;; size=16 bbWeight=0.95 PerfScore 4.73
G_M34955_IG09: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
ldr x1, [x0, #0x38]
ldr x2, [x1, #0x08]
cmp x2, #24
@@ -112,12 +123,13 @@ G_M34955_IG13: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=12 bbWeight=0.05 PerfScore 0.24
G_M34955_IG14: ; bbWeight=0.05, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.05 PerfScore 0.16
+ ;; size=16 bbWeight=0.05 PerfScore 0.27
-; Total bytes of code 196, prolog size 16, PerfScore 31.73, instruction count 49, allocated bytes for code 196 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 240, prolog size 20, PerfScore 41.35, instruction count 60, allocated bytes for code 240 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -128,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -139,10 +151,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
+44 (+22.45%) : 169076.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3797
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T01] ( 5, 4.39) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T06] ( 3, 2.69) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T00] ( 5, 6.94) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T00] ( 5, 6.94) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T05] ( 3, 2.78) long -> x1 "runtime lookup"
-; V12 rat1 [V12,T03] ( 3, 3.89) long -> x1 "spilling expr"
-; V13 rat2 [V13,T04] ( 3, 3.11) long -> x1 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T09] ( 3, 1.22) long -> x1 "runtime lookup"
-; V15 rat4 [V15,T07] ( 3, 1.71) long -> x1 "spilling expr"
-; V16 rat5 [V16,T08] ( 3, 1.37) long -> x1 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T05] ( 3, 2.78) long -> x1 "runtime lookup"
+; V10 rat1 [V10,T03] ( 3, 3.89) long -> x1 "spilling expr"
+; V11 rat2 [V11,T04] ( 3, 3.11) long -> x1 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T09] ( 3, 1.22) long -> x1 "runtime lookup"
+; V13 rat4 [V13,T07] ( 3, 1.71) long -> x1 "spilling expr"
+; V14 rat5 [V14,T08] ( 3, 1.37) long -> x1 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x0, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbz w20, G_M34955_IG09
@@ -66,24 +65,36 @@ G_M34955_IG07: ; bbWeight=0.69, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
mov x0, x1
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #2 LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=32 bbWeight=0.69 PerfScore 5.55
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=64 bbWeight=0.69 PerfScore 10.41
G_M34955_IG08: ; bbWeight=0.69, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.69 PerfScore 2.08
+ ;; size=16 bbWeight=0.69 PerfScore 3.47
G_M34955_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
ldr x1, [x0, #0x38]
ldr x2, [x1, #0x08]
cmp x2, #24
@@ -112,12 +123,13 @@ G_M34955_IG13: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=12 bbWeight=0.31 PerfScore 1.38
G_M34955_IG14: ; bbWeight=0.31, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.31 PerfScore 0.92
+ ;; size=16 bbWeight=0.31 PerfScore 1.53
-; Total bytes of code 196, prolog size 16, PerfScore 30.85, instruction count 49, allocated bytes for code 196 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 240, prolog size 20, PerfScore 38.71, instruction count 60, allocated bytes for code 240 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -128,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -139,10 +151,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
+44 (+23.40%) : 45835.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8236
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T02] ( 5, 4.35) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T06] ( 3, 2.67) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T00] ( 5, 6.73) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T00] ( 5, 6.73) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T05] ( 3, 2.69) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T03] ( 3, 3.77) long -> x0 "spilling expr"
-; V13 rat2 [V13,T04] ( 3, 3.02) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T09] ( 3, 1.31) long -> x0 "runtime lookup"
-; V15 rat4 [V15,T07] ( 3, 1.83) long -> x0 "spilling expr"
-; V16 rat5 [V16,T08] ( 3, 1.46) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T05] ( 3, 2.69) long -> x0 "runtime lookup"
+; V10 rat1 [V10,T03] ( 3, 3.77) long -> x0 "spilling expr"
+; V11 rat2 [V11,T04] ( 3, 3.02) long -> x0 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T09] ( 3, 1.31) long -> x0 "runtime lookup"
+; V13 rat4 [V13,T07] ( 3, 1.83) long -> x0 "spilling expr"
+; V14 rat5 [V14,T08] ( 3, 1.46) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x2, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbz w20, G_M34955_IG09
@@ -65,24 +64,36 @@ G_M34955_IG06: ; bbWeight=0.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M34955_IG07: ; bbWeight=0.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #1 LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=28 bbWeight=0.67 PerfScore 5.05
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=60 bbWeight=0.67 PerfScore 9.76
G_M34955_IG08: ; bbWeight=0.67, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.67 PerfScore 2.02
+ ;; size=16 bbWeight=0.67 PerfScore 3.37
G_M34955_IG09: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
ldr x0, [x2, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #24
@@ -110,12 +121,13 @@ G_M34955_IG13: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=8 bbWeight=0.33 PerfScore 1.31
G_M34955_IG14: ; bbWeight=0.33, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.33 PerfScore 0.98
+ ;; size=16 bbWeight=0.33 PerfScore 1.63
-; Total bytes of code 188, prolog size 16, PerfScore 30.28, instruction count 47, allocated bytes for code 188 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 232, prolog size 20, PerfScore 37.99, instruction count 58, allocated bytes for code 232 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -126,7 +138,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -137,10 +149,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-36 (-34.62%) : 116755.dasm - System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodingsDefaultValueShouldEqualFalse() (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Formats.Cbor.CborWriter>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 6, 12 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
+; V02 tmp1 [V02,T00] ( 6, 12 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref
@@ -29,56 +31,45 @@
;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.value (fldOffset=0x1)" P-INDEP
;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M43591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M43591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #2 LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w0, #1
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E // code for System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
+ mov w1, #1
+ str w1, [x0, #0x54]
+ strh wzr, [x0, #0x5A]
+ strb w1, [x0, #0x60]
+ str w1, [x0, #0x64]
+ movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
- movk x1, #2 LSL #32
- ldr x1, [x1]
- blr x1
- mov w0, #1
- str w0, [x19, #0x54]
- strh wzr, [x19, #0x5A]
- strb w0, [x19, #0x60]
- str w0, [x19, #0x64]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- str x0, [x19, #0x28]
- ;; size=80 bbWeight=1 PerfScore 16.00
+ movk x1, #1 LSL #32
+ str x1, [x0, #0x28]
+ ;; size=52 bbWeight=1 PerfScore 9.50
G_M43591_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 12, PerfScore 22.50, instruction count 26, allocated bytes for code 104 (MethodHash=367955b8) for method System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodings_DefaultValue_ShouldEqualFalse() (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 13.00, instruction count 17, allocated bytes for code 68 (MethodHash=367955b8) for method System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodings_DefaultValue_ShouldEqualFalse() (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 : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -86,10 +77,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-40 (-23.26%) : 296172.dasm - System.Threading.Tasks.Tests.ValueTaskTests:GenericEqualsValueTask():this (FullOpts)
@@ -2,10 +2,12 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 19 inlinees with PGO data; 91 single block inlinees; 35 inlinees without PGO data
+; 19 inlinees with PGO data; 93 single block inlinees; 36 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.Tests.ValueTaskTests>
@@ -30,26 +32,26 @@
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V21 tmp18 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
-;* V22 tmp19 [V22,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V22 tmp19 [V22,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V24 tmp21 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V27 tmp24 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V28 tmp25 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V29 tmp26 [V29,T11] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V29 tmp26 [V29,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V30 tmp27 [V30 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V31 tmp28 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp31 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V35 tmp32 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V36 tmp33 [V36,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V36 tmp33 [V36,T11] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V37 tmp34 [V37 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V38 tmp35 [V38,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V38 tmp35 [V38,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V40 tmp37 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
-;* V41 tmp38 [V41,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V41 tmp38 [V41,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V43 tmp40 [V43 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V44 tmp41 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -59,9 +61,9 @@
;* V48 tmp45 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V49 tmp46 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V50 tmp47 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V51 tmp48 [V51,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V51 tmp48 [V51,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V52 tmp49 [V52 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V53 tmp50 [V53,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V53 tmp50 [V53,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V54 tmp51 [V54 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V55 tmp52 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V56 tmp53 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -74,9 +76,9 @@
;* V63 tmp60 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V64 tmp61 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V65 tmp62 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V66 tmp63 [V66,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V66 tmp63 [V66,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V67 tmp64 [V67 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V68 tmp65 [V68,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V68 tmp65 [V68,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V69 tmp66 [V69 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V70 tmp67 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V71 tmp68 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -89,9 +91,9 @@
;* V78 tmp75 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V79 tmp76 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V80 tmp77 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V81 tmp78 [V81,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V81 tmp78 [V81,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V82 tmp79 [V82 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V83 tmp80 [V83,T20] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V83 tmp80 [V83,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V84 tmp81 [V84 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V85 tmp82 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V86 tmp83 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -104,7 +106,7 @@
;* V93 tmp90 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V94 tmp91 [V94 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V95 tmp92 [V95 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V96 tmp93 [V96,T06] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
+;* V96 tmp93 [V96,T05] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V98 tmp95 [V98 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V99 tmp96 [V99,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[int]>
@@ -112,14 +114,14 @@
;* V101 tmp98 [V101 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V102 tmp99 [V102 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V103 tmp100 [V103 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V104 tmp101 [V104,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V104 tmp101 [V104,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V105 tmp102 [V105 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V106 tmp103 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V107 tmp104 [V107 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V108 tmp105 [V108 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V109 tmp106 [V109 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V110 tmp107 [V110 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V111 tmp108 [V111,T07] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
+;* V111 tmp108 [V111,T06] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
;* V112 tmp109 [V112 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V114 tmp111 [V114,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[int]>
@@ -127,7 +129,7 @@
;* V116 tmp113 [V116 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V117 tmp114 [V117 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V118 tmp115 [V118 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V119 tmp116 [V119,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V119 tmp116 [V119,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V120 tmp117 [V120 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V121 tmp118 [V121 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V122 tmp119 [V122 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
@@ -136,170 +138,173 @@
;* V125 tmp122 [V125 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
;* V127 tmp124 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
-; V128 tmp125 [V128,T05] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
+; V128 tmp125 [V128,T04] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
; V129 tmp126 [V129,T02] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
-;* V130 tmp127 [V130,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V130 tmp127 [V130,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V131 tmp128 [V131 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V132 tmp129 [V132 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V133 tmp130 [V133 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V134 tmp131 [V134 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V135 tmp132 [V135 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V136 tmp133 [V136,T08] ( 0, 0 ) ref -> zero-ref "field V01._obj (fldOffset=0x0)" P-INDEP
-;* V137 tmp134 [V137,T24] ( 0, 0 ) int -> zero-ref "field V01._result (fldOffset=0x8)" P-INDEP
-;* V138 tmp135 [V138,T25] ( 0, 0 ) short -> zero-ref "field V01._token (fldOffset=0xc)" P-INDEP
-;* V139 tmp136 [V139 ] ( 0, 0 ) ubyte -> zero-ref "field V01._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V140 tmp137 [V140 ] ( 0, 0 ) ref -> zero-ref "field V02._obj (fldOffset=0x0)" P-INDEP
-;* V141 tmp138 [V141 ] ( 0, 0 ) ref -> zero-ref "field V02._result (fldOffset=0x8)" P-INDEP
-;* V142 tmp139 [V142 ] ( 0, 0 ) short -> zero-ref "field V02._token (fldOffset=0x10)" P-INDEP
-;* V143 tmp140 [V143 ] ( 0, 0 ) ubyte -> zero-ref "field V02._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V144 tmp141 [V144 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._obj (fldOffset=0x0)" P-INDEP
-;* V145 tmp142 [V145 ] ( 0, 0 ) int -> zero-ref single-def "field V04._result (fldOffset=0x8)" P-INDEP
-;* V146 tmp143 [V146 ] ( 0, 0 ) short -> zero-ref single-def "field V04._token (fldOffset=0xc)" P-INDEP
-;* V147 tmp144 [V147 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V148 tmp145 [V148 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._obj (fldOffset=0x0)" P-INDEP
-;* V149 tmp146 [V149 ] ( 0, 0 ) int -> zero-ref single-def "field V05._result (fldOffset=0x8)" P-INDEP
-;* V150 tmp147 [V150 ] ( 0, 0 ) short -> zero-ref single-def "field V05._token (fldOffset=0xc)" P-INDEP
-;* V151 tmp148 [V151 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V05._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V152 tmp149 [V152 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._obj (fldOffset=0x0)" P-INDEP
-;* V153 tmp150 [V153 ] ( 0, 0 ) int -> zero-ref single-def "field V06._result (fldOffset=0x8)" P-INDEP
-;* V154 tmp151 [V154 ] ( 0, 0 ) short -> zero-ref single-def "field V06._token (fldOffset=0xc)" P-INDEP
-;* V155 tmp152 [V155 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V156 tmp153 [V156 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._obj (fldOffset=0x0)" P-INDEP
-;* V157 tmp154 [V157 ] ( 0, 0 ) int -> zero-ref single-def "field V07._result (fldOffset=0x8)" P-INDEP
-;* V158 tmp155 [V158 ] ( 0, 0 ) short -> zero-ref single-def "field V07._token (fldOffset=0xc)" P-INDEP
-;* V159 tmp156 [V159 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V160 tmp157 [V160 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._obj (fldOffset=0x0)" P-INDEP
-;* V161 tmp158 [V161 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._result (fldOffset=0x8)" P-INDEP
-;* V162 tmp159 [V162 ] ( 0, 0 ) short -> zero-ref single-def "field V08._token (fldOffset=0x10)" P-INDEP
-;* V163 tmp160 [V163 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V164 tmp161 [V164 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._obj (fldOffset=0x0)" P-INDEP
-;* V165 tmp162 [V165 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._result (fldOffset=0x8)" P-INDEP
-;* V166 tmp163 [V166 ] ( 0, 0 ) short -> zero-ref single-def "field V09._token (fldOffset=0x10)" P-INDEP
-;* V167 tmp164 [V167 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V09._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V168 tmp165 [V168 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._obj (fldOffset=0x0)" P-INDEP
-;* V169 tmp166 [V169 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._result (fldOffset=0x8)" P-INDEP
-;* V170 tmp167 [V170 ] ( 0, 0 ) short -> zero-ref single-def "field V10._token (fldOffset=0x10)" P-INDEP
-;* V171 tmp168 [V171 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V172 tmp169 [V172 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._obj (fldOffset=0x0)" P-INDEP
-;* V173 tmp170 [V173 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._result (fldOffset=0x8)" P-INDEP
-;* V174 tmp171 [V174 ] ( 0, 0 ) short -> zero-ref single-def "field V11._token (fldOffset=0x10)" P-INDEP
-;* V175 tmp172 [V175 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V11._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V176 tmp173 [V176 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._obj (fldOffset=0x0)" P-INDEP
-;* V177 tmp174 [V177 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._result (fldOffset=0x8)" P-INDEP
-;* V178 tmp175 [V178 ] ( 0, 0 ) short -> zero-ref single-def "field V12._token (fldOffset=0x10)" P-INDEP
-;* V179 tmp176 [V179 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V12._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V180 tmp177 [V180 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._obj (fldOffset=0x0)" P-INDEP
-;* V181 tmp178 [V181 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._result (fldOffset=0x8)" P-INDEP
-;* V182 tmp179 [V182 ] ( 0, 0 ) short -> zero-ref single-def "field V13._token (fldOffset=0x10)" P-INDEP
-;* V183 tmp180 [V183 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V184 tmp181 [V184 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._obj (fldOffset=0x0)" P-INDEP
-;* V185 tmp182 [V185 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._result (fldOffset=0x8)" P-INDEP
-;* V186 tmp183 [V186 ] ( 0, 0 ) short -> zero-ref single-def "field V14._token (fldOffset=0x10)" P-INDEP
-;* V187 tmp184 [V187 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V188 tmp185 [V188 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._obj (fldOffset=0x0)" P-INDEP
-;* V189 tmp186 [V189 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._result (fldOffset=0x8)" P-INDEP
-;* V190 tmp187 [V190 ] ( 0, 0 ) short -> zero-ref single-def "field V15._token (fldOffset=0x10)" P-INDEP
-;* V191 tmp188 [V191 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V192 tmp189 [V192,T09] ( 0, 0 ) ref -> zero-ref single-def "field V16._obj (fldOffset=0x0)" P-INDEP
-;* V193 tmp190 [V193,T26] ( 0, 0 ) int -> zero-ref single-def "field V16._result (fldOffset=0x8)" P-INDEP
-;* V194 tmp191 [V194,T27] ( 0, 0 ) short -> zero-ref single-def "field V16._token (fldOffset=0xc)" P-INDEP
-;* V195 tmp192 [V195 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V196 tmp193 [V196 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._obj (fldOffset=0x0)" P-INDEP
-;* V197 tmp194 [V197 ] ( 0, 0 ) int -> zero-ref single-def "field V17._result (fldOffset=0x8)" P-INDEP
-;* V198 tmp195 [V198 ] ( 0, 0 ) short -> zero-ref single-def "field V17._token (fldOffset=0xc)" P-INDEP
-;* V199 tmp196 [V199 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V200 tmp197 [V200 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._obj (fldOffset=0x0)" P-INDEP
-;* V201 tmp198 [V201 ] ( 0, 0 ) int -> zero-ref single-def "field V18._result (fldOffset=0x8)" P-INDEP
-;* V202 tmp199 [V202 ] ( 0, 0 ) short -> zero-ref single-def "field V18._token (fldOffset=0xc)" P-INDEP
-;* V203 tmp200 [V203 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V204 tmp201 [V204 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._obj (fldOffset=0x0)" P-INDEP
-;* V205 tmp202 [V205 ] ( 0, 0 ) int -> zero-ref single-def "field V19._result (fldOffset=0x8)" P-INDEP
-;* V206 tmp203 [V206 ] ( 0, 0 ) short -> zero-ref single-def "field V19._token (fldOffset=0xc)" P-INDEP
-;* V207 tmp204 [V207 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V208 tmp205 [V208 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._obj (fldOffset=0x0)" P-INDEP
-;* V209 tmp206 [V209 ] ( 0, 0 ) int -> zero-ref single-def "field V20._result (fldOffset=0x8)" P-INDEP
-;* V210 tmp207 [V210 ] ( 0, 0 ) short -> zero-ref single-def "field V20._token (fldOffset=0xc)" P-INDEP
-;* V211 tmp208 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V212 tmp209 [V212 ] ( 0, 0 ) ref -> zero-ref single-def "field V21._obj (fldOffset=0x0)" P-INDEP
-;* V213 tmp210 [V213 ] ( 0, 0 ) int -> zero-ref single-def "field V21._result (fldOffset=0x8)" P-INDEP
-;* V214 tmp211 [V214 ] ( 0, 0 ) short -> zero-ref single-def "field V21._token (fldOffset=0xc)" P-INDEP
-;* V215 tmp212 [V215 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V21._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V216 tmp213 [V216 ] ( 0, 0 ) ref -> zero-ref single-def "field V23._obj (fldOffset=0x0)" P-INDEP
-;* V217 tmp214 [V217 ] ( 0, 0 ) int -> zero-ref single-def "field V23._result (fldOffset=0x8)" P-INDEP
-;* V218 tmp215 [V218 ] ( 0, 0 ) short -> zero-ref single-def "field V23._token (fldOffset=0xc)" P-INDEP
-;* V219 tmp216 [V219 ] ( 0, 0 ) ubyte -> zero-ref "field V23._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V220 tmp217 [V220,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V27.hasValue (fldOffset=0x0)" P-INDEP
-;* V221 tmp218 [V221,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V27.value (fldOffset=0x1)" P-INDEP
-;* V222 tmp219 [V222 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.hasValue (fldOffset=0x0)" P-INDEP
-;* V223 tmp220 [V223 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.value (fldOffset=0x1)" P-INDEP
-;* V224 tmp221 [V224 ] ( 0, 0 ) ref -> zero-ref single-def "field V30._obj (fldOffset=0x0)" P-INDEP
-;* V225 tmp222 [V225 ] ( 0, 0 ) int -> zero-ref single-def "field V30._result (fldOffset=0x8)" P-INDEP
-;* V226 tmp223 [V226 ] ( 0, 0 ) short -> zero-ref single-def "field V30._token (fldOffset=0xc)" P-INDEP
-;* V227 tmp224 [V227 ] ( 0, 0 ) ubyte -> zero-ref "field V30._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V228 tmp225 [V228,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V34.hasValue (fldOffset=0x0)" P-INDEP
-;* V229 tmp226 [V229,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V34.value (fldOffset=0x1)" P-INDEP
-;* V230 tmp227 [V230 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.hasValue (fldOffset=0x0)" P-INDEP
-;* V231 tmp228 [V231 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.value (fldOffset=0x1)" P-INDEP
-;* V232 tmp229 [V232 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._obj (fldOffset=0x0)" P-INDEP
-;* V233 tmp230 [V233 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._result (fldOffset=0x8)" P-INDEP
-;* V234 tmp231 [V234 ] ( 0, 0 ) short -> zero-ref single-def "field V37._token (fldOffset=0x10)" P-INDEP
-;* V235 tmp232 [V235 ] ( 0, 0 ) ubyte -> zero-ref "field V37._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V236 tmp233 [V236,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V237 tmp234 [V237,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.value (fldOffset=0x1)" P-INDEP
-;* V238 tmp235 [V238 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.hasValue (fldOffset=0x0)" P-INDEP
-;* V239 tmp236 [V239 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.value (fldOffset=0x1)" P-INDEP
-;* V240 tmp237 [V240 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._obj (fldOffset=0x0)" P-INDEP
-;* V241 tmp238 [V241 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._result (fldOffset=0x8)" P-INDEP
-;* V242 tmp239 [V242 ] ( 0, 0 ) short -> zero-ref single-def "field V52._token (fldOffset=0x10)" P-INDEP
-;* V243 tmp240 [V243 ] ( 0, 0 ) ubyte -> zero-ref "field V52._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V244 tmp241 [V244,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.hasValue (fldOffset=0x0)" P-INDEP
-;* V245 tmp242 [V245,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.value (fldOffset=0x1)" P-INDEP
-;* V246 tmp243 [V246 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V65.hasValue (fldOffset=0x0)" P-INDEP
-;* V247 tmp244 [V247 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V65.value (fldOffset=0x1)" P-INDEP
-;* V248 tmp245 [V248 ] ( 0, 0 ) ref -> zero-ref single-def "field V67._obj (fldOffset=0x0)" P-INDEP
-;* V249 tmp246 [V249 ] ( 0, 0 ) ref -> zero-ref single-def "field V67._result (fldOffset=0x8)" P-INDEP
-;* V250 tmp247 [V250 ] ( 0, 0 ) short -> zero-ref single-def "field V67._token (fldOffset=0x10)" P-INDEP
-;* V251 tmp248 [V251 ] ( 0, 0 ) ubyte -> zero-ref "field V67._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V252 tmp249 [V252,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V79.hasValue (fldOffset=0x0)" P-INDEP
-;* V253 tmp250 [V253,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V79.value (fldOffset=0x1)" P-INDEP
-;* V254 tmp251 [V254 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V80.hasValue (fldOffset=0x0)" P-INDEP
...
-24 (-17.14%) : 5629.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.Canon,System.Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
@@ -2,27 +2,29 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+; V00 this [V00,T01] ( 4, 3.48) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.MetadataReference>
-; V02 loc0 [V02,T06] ( 3, 1.50) int -> x1 ld-addr-op
+; V02 loc0 [V02,T04] ( 3, 1.83) int -> x1 ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V08 tmp3 [V08,T01] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
-; V09 tmp4 [V09,T04] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp"
+;* V07 tmp2 [V07,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V08 tmp3 [V08,T00] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.MetadataReference,int]>
+; V09 tmp4 [V09,T03] ( 3, 2.87) byref -> x0 single-def "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T07] ( 3, 1.50) ref -> x2 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V12 rat0 [V12,T05] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V11 tmp6 [V11,T08] ( 3, 1.44) ref -> x0 single-def "field V04.array (fldOffset=0x0)" P-INDEP
+;* V12 rat0 [V12,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T09] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V14 rat2 [V14,T03] ( 2, 2 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V14 rat2 [V14,T05] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,10 +32,9 @@ G_M43979_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldr x0, [x19, #0x20]
@@ -46,54 +47,46 @@ G_M43979_IG02: ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {},
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M43979_IG05
+ cbz x0, G_M43979_IG04
;; size=32 bbWeight=1 PerfScore 12.50
-G_M43979_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
+G_M43979_IG03: ; bbWeight=0.87, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref
ldr w1, [x0]
- ldr x2, [x19, #0x80]
- ; gcrRegs +[x2]
- ldr x0, [x19]
+ b G_M43979_IG06
+ ;; size=8 bbWeight=0.87 PerfScore 3.48
+G_M43979_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0xD1FFAB1E]
- cbnz x0, G_M43979_IG07
- ;; size=28 bbWeight=0.50 PerfScore 9.50
-G_M43979_IG04: ; bbWeight=0.10, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
- b G_M43979_IG07
- ;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M43979_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
mov x0, xzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M43979_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M43979_IG05: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x2]
- ldr w0, [x2, #0x08]
- cmp w1, w0
- bhs G_M43979_IG09
- add x0, x2, #16
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M43979_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ldr x0, [x19, #0x80]
+ ; gcrRegs +[x0]
+ ldr w2, [x0, #0x08]
+ cmp w1, w2
+ bhs G_M43979_IG08
+ add x0, x0, #16
+ ; gcrRegs -[x0]
; byrRegs +[x0]
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ;; size=20 bbWeight=0.50 PerfScore 4.00
-G_M43979_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=24 bbWeight=0.48 PerfScore 5.28
+G_M43979_IG07: ; bbWeight=0.48, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M43979_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2]
+ ;; size=12 bbWeight=0.48 PerfScore 1.92
+G_M43979_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 140, prolog size 16, PerfScore 34.35, instruction count 35, allocated bytes for code 140 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
+; Total bytes of code 116, prolog size 12, PerfScore 30.68, instruction count 29, allocated bytes for code 116 (MethodHash=0bbf5434) for method Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetReferencedAssemblySymbol(Microsoft.CodeAnalysis.MetadataReference):System.__Canon:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+26.67%) : 35787.dasm - LamarCodeGeneration.Util.ImHashMap2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap
2+Entry[System.Canon,System.Canon]:this (FullOpts)
@@ -2,16 +2,16 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 3.50) ref -> x0 this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.50) int -> x1 single-def
+; V00 this [V00,T00] ( 6, 4.38) ref -> x0 this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 4, 3.80) int -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T03] ( 3, 1.50) ref -> x0 "CSE - moderate"
-; V04 cse1 [V04,T02] ( 3, 2.50) ref -> x2 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,43 +23,55 @@ G_M5528_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
- ldr w3, [x2, #0x08]
- cmp w3, w1
- beq G_M5528_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M5528_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr w2, [x2, #0x08]
; gcrRegs -[x2]
- ldr x0, [x0, #0x10]
- ldr w2, [x0, #0x08]
cmp w2, w1
- csel x0, x0, xzr, eq
- ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M5528_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M5528_IG08
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M5528_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x2, [x0, #0x10]
+ ; gcrRegs +[x2]
+ ldr w2, [x2, #0x08]
+ ; gcrRegs -[x2]
+ cmp w2, w1
+ beq G_M5528_IG06
+ ;; size=16 bbWeight=0.80 PerfScore 6.00
+G_M5528_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M5528_IG05: ; bbWeight=0.42, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M5528_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x2]
- mov x0, x2
+ ;; size=8 bbWeight=0.42 PerfScore 0.83
+G_M5528_IG06: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M5528_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x0, [x0, #0x10]
+ ;; size=4 bbWeight=0.38 PerfScore 1.15
+G_M5528_IG07: ; bbWeight=0.38, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.38 PerfScore 0.77
+G_M5528_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ldr x0, [x0, #0x08]
+ ;; size=4 bbWeight=0.20 PerfScore 0.60
+G_M5528_IG09: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
-; Total bytes of code 60, prolog size 8, PerfScore 14.75, instruction count 15, allocated bytes for code 60 (MethodHash=4203ea67) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 18.96, instruction count 19, allocated bytes for code 76 (MethodHash=4203ea67) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -67,6 +79,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+36 (+28.12%) : 168804.dasm - System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
@@ -2,20 +2,20 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 10, 13.50) ref -> x0 this class-hnd single-def <System.Xml.Xsl.Xslt.OutputScopeManager>
-; V01 loc0 [V01,T02] ( 4, 16 ) int -> x3
+; V00 this [V00,T02] ( 12,135.31) ref -> x0 this class-hnd single-def <System.Xml.Xsl.Xslt.OutputScopeManager>
+; V01 loc0 [V01,T01] ( 4,256.00) int -> x3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> x2 class-hnd exact "impAppendStmt" <<unknown class>>
-;* V04 tmp2 [V04,T06] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V05 tmp3 [V05,T07] ( 0, 0 ) int -> zero-ref "index expr"
-; V06 cse0 [V06,T03] ( 3, 8.50) byref -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T04] ( 2, 4.50) ref -> x1 hoist "CSE - aggressive"
-; V08 cse2 [V08,T05] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 3,384.00) ref -> x2 class-hnd exact "impAppendStmt" <<unknown class>>
+; V04 tmp2 [V04,T04] ( 3, 4.80) ref -> x1 single-def "arr expr"
+; V05 tmp3 [V05,T05] ( 3, 4.80) int -> x2 "index expr"
+; V06 cse0 [V06,T03] ( 3, 65.51) ref -> x1 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -27,21 +27,13 @@ G_M50390_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x14]
cmp w1, #0
- ble G_M50390_IG05
+ bgt G_M50390_IG07
;; size=12 bbWeight=1 PerfScore 4.50
-G_M50390_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- sub w1, w1, #1
- str w1, [x0, #0x14]
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M50390_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50390_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M50390_IG03: ; bbWeight=0.71, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M50390_IG06: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.71 PerfScore 2.14
+G_M50390_IG04: ; bbWeight=64.00, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
mov x2, x1
; gcrRegs +[x2]
ldr w3, [x0, #0x10]
@@ -56,30 +48,49 @@ G_M50390_IG06: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
add x2, x2, x3
; gcrRegs -[x2]
; byrRegs +[x2]
- ldr w3, [x2, #0x10]
- cbz w3, G_M50390_IG06
- ;; size=52 bbWeight=4 PerfScore 80.00
-G_M50390_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
+ ldr w2, [x2, #0x10]
+ ; byrRegs -[x2]
+ cbz w2, G_M50390_IG04
+ ;; size=52 bbWeight=64.00 PerfScore 1280.00
+G_M50390_IG05: ; bbWeight=0.80, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x0, #0x10]
+ ldr w3, [x1, #0x08]
+ cmp w2, w3
+ bhs G_M50390_IG09
+ mov w3, #24
+ mov x4, #16
+ umaddl x2, w2, w3, x4
+ add x1, x1, x2
; gcrRegs -[x1]
- ldr w1, [x2, #0x10]
+ ; byrRegs +[x1]
+ ldr w1, [x1, #0x10]
+ ; byrRegs -[x1]
str w1, [x0, #0x14]
ldr w1, [x0, #0x14]
sub w1, w1, #1
str w1, [x0, #0x14]
- ;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M50390_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=52 bbWeight=0.80 PerfScore 18.00
+G_M50390_IG06: ; bbWeight=0.80, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.80 PerfScore 1.60
+G_M50390_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ldr w1, [x0, #0x14]
+ sub w1, w1, #1
+ str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.20 PerfScore 0.90
+G_M50390_IG08: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
G_M50390_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; byrRegs -[x2]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 8, PerfScore 94.50, instruction count 32, allocated bytes for code 128 (MethodHash=e69e3b29) for method System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
+; Total bytes of code 164, prolog size 8, PerfScore 1309.04, instruction count 41, allocated bytes for code 164 (MethodHash=e69e3b29) for method System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
; ============================================================
Unwind Info:
@@ -90,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 250472.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
@@ -2,28 +2,29 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 3.96) byref -> x0 this single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Text.Json.JsonElement>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-; V05 tmp3 [V05,T03] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V06 tmp4 [V06,T04] ( 2, 1 ) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T06] ( 2, 1 ) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
-; V08 tmp6 [V08,T05] ( 2, 1 ) ref -> x0 single-def "field V03._parent (fldOffset=0x0)" P-INDEP
-; V09 tmp7 [V09,T07] ( 2, 1 ) int -> x1 "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T01] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V04 tmp2 [V04,T01] ( 2, 1.92) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V05 tmp3 [V05,T02] ( 2, 1.92) int -> x0 "Inlining Arg"
+; V06 tmp4 [V06,T03] ( 2, 1.04) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1.04) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
+; V08 tmp6 [V08,T05] ( 2, 0.96) ref -> registers single-def "field V03._parent (fldOffset=0x0)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 0.96) int -> [fp+0x1C] spill-single-def "field V03._idx (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M36569_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
@@ -31,29 +32,35 @@ G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
ldr w1, [x0]
tbz w1, #31, G_M36569_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M36569_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36569_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, xzr
; gcrRegs +[x0]
mov w1, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M36569_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M36569_IG04: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M36569_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M36569_IG05: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x0, [x0, #0x08]
- ; gcrRegs +[x0]
+ ldr x1, [x0, #0x08]
+ ; gcrRegs +[x1]
+ ldr w0, [x0]
; byrRegs -[x0]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M36569_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ str w0, [fp, #0x1C] // [V09 tmp7]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ldr w1, [fp, #0x1C] // [V09 tmp7]
+ ; gcrRegs -[x1]
+ ;; size=20 bbWeight=0.48 PerfScore 4.56
+G_M36569_IG06: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 44, prolog size 8, PerfScore 9.50, instruction count 11, allocated bytes for code 44 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 12.58, instruction count 15, allocated bytes for code 60 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -75,7 +82,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
realworld.run.osx.arm64.checked.mch
-8 (-16.67%) : 29224.dasm - System.Management.Automation.LocationGlobber:IsSingleFileSystemAbsolutePath(System.String):ubyte (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 inlinees without PGO data
; Final local variable assignments
@@ -12,56 +14,45 @@
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V03 tmp2 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 cse0 [V04,T01] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V04 cse0 [V04,T01] ( 3, 3 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M5098_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5098_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M5098_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M5098_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldrh w0, [x0, #0x0C]
; gcrRegs -[x0]
- cmp w0, #47
- beq G_M5098_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M5098_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w1, #1
cmp w0, #92
- cset x0, eq
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M5098_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ cset x2, eq
+ cmp w0, #47
+ csel w0, w1, w2, eq
+ ;; size=24 bbWeight=1 PerfScore 5.50
+G_M5098_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M5098_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M5098_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 8.75, instruction count 12, allocated bytes for code 48 (MethodHash=edc9ec15) for method System.Management.Automation.LocationGlobber:IsSingleFileSystemAbsolutePath(System.String):ubyte (FullOpts)
+; Total bytes of code 40, prolog size 8, PerfScore 9.00, instruction count 10, allocated bytes for code 40 (MethodHash=edc9ec15) for method System.Management.Automation.LocationGlobber:IsSingleFileSystemAbsolutePath(System.String):ubyte (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
+ Function Length : 10 (0x0000a) Actual length = 40 (0x000028)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
- ---- Scope 1
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
-32 (-14.04%) : 21344.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]>
+; V00 this [V00,T08] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V02 loc1 [V02 ] ( 2, 4 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
+; V02 loc1 [V02 ] ( 2, 37.89) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <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 ) long -> zero-ref "spilling helperCall"
@@ -18,21 +20,22 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 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 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp7 [V11,T04] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp"
+;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp7 [V11,T03] ( 3, 56.84) ubyte -> x0 "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref 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,T02] ( 3, 11 ) ref -> x20 "field V01._builder (fldOffset=0x0)" P-INDEP
-; V16 tmp12 [V16,T00] ( 5, 27 ) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
+; V15 tmp11 [V15,T04] ( 2, 43.11) ref -> x20 "field V01._builder (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T00] ( 5,146.26) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
-;* V18 cse0 [V18,T11] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V20 rat0 [V20,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V21 rat1 [V21,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T05] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V24 rat4 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V18 cse0 [V18,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
+; V19 cse1 [V19,T02] ( 3,103.16) ref -> x0 "CSE - aggressive"
+; V20 cse2 [V20,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V21 rat0 [V21,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V22 rat1 [V22,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V25 rat4 [V25,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -50,7 +53,7 @@ G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
mov x19, x0
; gcrRegs +[x19]
;; size=44 bbWeight=1 PerfScore 9.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -63,24 +66,23 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M864_IG03: ; bbWeight=42.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M864_IG04
- b G_M864_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add w21, w21, #1
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
+ ldr w8, [x0, #0x10]
+ cmp w21, w8
+ bge G_M864_IG07
+ ;; size=20 bbWeight=42.11 PerfScore 336.84
+G_M864_IG04: ; bbWeight=18.95, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
add x8, fp, #24 // [V02 loc1]
mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
- ldr wzr, [x0]
blr x2
; gcrRegs -[x0]
ldrb w0, [fp, #0x34] // [V02 loc1+0x1c]
@@ -88,38 +90,29 @@ G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {},
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi
- bls G_M864_IG07
- ;; size=60 bbWeight=2 PerfScore 35.00
-G_M864_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- add w21, w21, #1
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
- ldr w0, [x0, #0x10]
- ; gcrRegs -[x0]
- cmp w21, w0
- blt G_M864_IG03
- ;; size=20 bbWeight=8 PerfScore 64.00
-G_M864_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bhi G_M864_IG03
+ ;; size=52 bbWeight=18.95 PerfScore 217.89
+G_M864_IG05: ; bbWeight=2.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M864_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x80]
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x90
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M864_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=2.46 PerfScore 1.23
+G_M864_IG06: ; bbWeight=2.46, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=2.46 PerfScore 9.86
+G_M864_IG07: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.53 PerfScore 0.26
+G_M864_IG08: ; bbWeight=0.53, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x80]
+ ldp x19, x20, [sp, #0x70]
+ ldp fp, lr, [sp], #0x90
+ ret lr
+ ;; size=16 bbWeight=0.53 PerfScore 2.11
-; Total bytes of code 228, prolog size 40, PerfScore 139.50, instruction count 57, allocated bytes for code 228 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+; Total bytes of code 196, prolog size 40, PerfScore 592.69, instruction count 49, allocated bytes for code 196 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -130,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-12.50%) : 17525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
@@ -24,34 +26,26 @@ G_M19887_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M19887_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w0, w1
- bgt G_M19887_IG04
+ bgt G_M19887_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M19887_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M19887_IG05
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19887_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M19887_IG06
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19887_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M19887_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19887_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w2, w0
- mov w0, w1
- mov w1, w2
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M19887_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19887_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w2, #5
cmp w0, #3
ccmp w1, #4, 0, eq
csel w0, w2, w1, eq
;; size=16 bbWeight=1 PerfScore 2.00
-G_M19887_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M19887_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M19887_IG05: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w2, w0
+ mov w0, w1
+ mov w1, w2
+ b G_M19887_IG03
+ ;; size=16 bbWeight=0.48 PerfScore 1.20
-; Total bytes of code 64, prolog size 8, PerfScore 9.25, instruction count 16, allocated bytes for code 64 (MethodHash=25a6b250) for method Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 8.20, instruction count 14, allocated bytes for code 56 (MethodHash=25a6b250) for method Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+20.59%) : 16972.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x1 single-def
-; V02 loc0 [V02,T02] ( 6, 4 ) int -> x2
-; V03 loc1 [V03,T03] ( 4, 3 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 7.20) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) byref -> x1 single-def
+; V02 loc0 [V02,T01] ( 6, 5.20) int -> x2
+; V03 loc1 [V03,T04] ( 4, 3.60) ref -> x3 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 ) long -> zero-ref "spilling helperCall"
-; V07 cse0 [V07,T05] ( 3, 2.50) int -> x4 "CSE - aggressive"
-;* V08 rat0 [V08,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 cse0 [V07,T06] ( 3, 2.80) int -> x4 "CSE - aggressive"
+; V08 rat0 [V08,T05] ( 2, 3.20) long -> x0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T03] ( 2, 3.20) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -26,9 +28,10 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -37,20 +40,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bhi G_M49890_IG05
+ bls G_M49890_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
- ; gcrRegs -[x3]
- str xzr, [x1]
- mov w0, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M49890_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, gcvars, byref, isz
- ; gcrRegs +[x3]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -62,28 +54,51 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x10]
+ cbnz x0, G_M49890_IG07
+ ;; size=48 bbWeight=0.80 PerfScore 18.00
+G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
+ b G_M49890_IG07
+ ;; size=4 bbWeight=0.16 PerfScore 0.16
+G_M49890_IG05: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ ; gcrRegs -[x3]
+ ; byrRegs +[x1]
+ str xzr, [x1]
+ mov w0, wzr
+ ;; size=8 bbWeight=0.20 PerfScore 0.30
+G_M49890_IG06: ; bbWeight=0.20, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
+G_M49890_IG07: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x3]
+ ; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG07
+ bhs G_M49890_IG09
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
- ;; size=56 bbWeight=0.50 PerfScore 7.00
-G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.80 PerfScore 3.60
+G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49890_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.80 PerfScore 3.20
+G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 12, PerfScore 25.75, instruction count 34, allocated bytes for code 136 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
+; Total bytes of code 164, prolog size 16, PerfScore 41.06, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -94,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+20.69%) : 16630.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:IsValid(System.Version):ubyte (FullOpts)
@@ -2,19 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 5 ) ref -> x0 class-hnd single-def <System.Version>
+; V00 arg0 [V00,T00] ( 11, 6.27) ref -> x0 class-hnd single-def <System.Version>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V03 cse0 [V03,T01] ( 3, 1.50) int -> x1 "CSE - moderate"
-; V04 cse1 [V04,T02] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V05 cse2 [V05,T03] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V06 cse3 [V06,T04] ( 3, 1.50) int -> x0 "CSE - moderate"
;
; Lcl frame size = 0
@@ -24,49 +22,69 @@ G_M58362_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
;; size=8 bbWeight=1 PerfScore 1.50
G_M58362_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M58362_IG07
+ cbz x0, G_M58362_IG14
;; size=4 bbWeight=1 PerfScore 1.00
-G_M58362_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M58362_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
- tbnz w1, #31, G_M58362_IG05
- ldr w2, [x0, #0x0C]
- tbnz w2, #31, G_M58362_IG05
- ldr w3, [x0, #0x10]
- tbnz w3, #31, G_M58362_IG05
+ tbnz w1, #31, G_M58362_IG12
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M58362_IG04: ; bbWeight=0.64, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x0C]
+ tbnz w1, #31, G_M58362_IG12
+ ;; size=8 bbWeight=0.64 PerfScore 2.56
+G_M58362_IG05: ; bbWeight=0.51, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x10]
+ tbnz w1, #31, G_M58362_IG12
+ ;; size=8 bbWeight=0.51 PerfScore 2.05
+G_M58362_IG06: ; bbWeight=0.41, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x14]
+ tbnz w1, #31, G_M58362_IG12
+ ;; size=8 bbWeight=0.41 PerfScore 1.64
+G_M58362_IG07: ; bbWeight=0.33, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x08]
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ bgt G_M58362_IG12
+ ;; size=16 bbWeight=0.33 PerfScore 1.64
+G_M58362_IG08: ; bbWeight=0.26, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x0C]
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ bgt G_M58362_IG12
+ ;; size=16 bbWeight=0.26 PerfScore 1.31
+G_M58362_IG09: ; bbWeight=0.21, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr w1, [x0, #0x10]
+ mov w2, #0xD1FFAB1E
+ cmp w1, w2
+ bgt G_M58362_IG12
+ ;; size=16 bbWeight=0.21 PerfScore 1.05
+G_M58362_IG10: ; bbWeight=0.11, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr w0, [x0, #0x14]
; gcrRegs -[x0]
- tbnz w0, #31, G_M58362_IG05
- mov w4, #0xD1FFAB1E
- mov w5, #0xD1FFAB1E
- mov w6, #0xD1FFAB1E
- cmp w1, w4
- ccmp w2, w5, 0, le
- ccmp w3, w6, 0, le
- bgt G_M58362_IG05
mov w1, #0xD1FFAB1E
cmp w0, w1
cset x0, le
- ;; size=72 bbWeight=0.50 PerfScore 10.75
-G_M58362_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=16 bbWeight=0.11 PerfScore 0.49
+G_M58362_IG11: ; bbWeight=0.11, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M58362_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.11 PerfScore 0.22
+G_M58362_IG12: ; bbWeight=0.69, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M58362_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.69 PerfScore 0.35
+G_M58362_IG13: ; bbWeight=0.69, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M58362_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.69 PerfScore 1.38
+G_M58362_IG14: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M58362_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M58362_IG15: ; bbWeight=0.20, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
-; Total bytes of code 116, prolog size 8, PerfScore 16.75, instruction count 29, allocated bytes for code 116 (MethodHash=e9e91c05) for method Microsoft.CodeAnalysis.AssemblyIdentity:IsValid(System.Version):ubyte (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 18.88, instruction count 35, allocated bytes for code 140 (MethodHash=e9e91c05) for method Microsoft.CodeAnalysis.AssemblyIdentity:IsValid(System.Version):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -77,7 +95,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+20.83%) : 30797.dasm - System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
@@ -2,30 +2,35 @@
; Emitting BLENDED_CODE for generic ARM64 - Apple
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x20 this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
-; V02 loc0 [V02,T02] ( 5, 3.50) int -> x2
+; V00 this [V00,T01] ( 6, 4.60) ref -> x20 this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst>
+; V01 arg1 [V01,T00] ( 7, 6.64) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
+; V02 loc0 [V02,T04] ( 5, 4.44) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V04 tmp1 [V04,T02] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
+; V06 tmp3 [V06,T03] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M63420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M63420_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -36,11 +41,9 @@ G_M63420_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- cmp w2, #1
+ sxtw w21, w0
+ cmp w21, #1
bne G_M63420_IG06
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -49,6 +52,8 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1 x19] +[x0]
cbz x0, G_M63420_IG04
+ ;; size=60 bbWeight=1 PerfScore 17.00
+G_M63420_IG03: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -57,18 +62,21 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1 x20]
- ;; size=48 bbWeight=0.50 PerfScore 5.00
-G_M63420_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M63420_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M63420_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M63420_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M63420_IG06: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- cbnz w2, G_M63420_IG07
+ cbnz w21, G_M63420_IG08
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M63420_IG07: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
@@ -79,25 +87,39 @@ G_M63420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- ;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M63420_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
+ sxtw w21, w0
+ ;; size=32 bbWeight=0.64 PerfScore 4.48
+G_M63420_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1 x19] +[x0]
+ cbz x0, G_M63420_IG10
+ ;; size=24 bbWeight=1 PerfScore 4.00
+G_M63420_IG09: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- ;; size=24 bbWeight=0.50 PerfScore 2.75
-G_M63420_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- br x3
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ movz x11, #0xD1FFAB1E // code for <unknown method>
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #1 LSL #32
+ ldr x2, [x11]
+ blr x2
+ ; gcrRegs -[x0-x1 x20]
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M63420_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w21
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M63420_IG11: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 192, prolog size 12, PerfScore 31.50, instruction count 48, allocated bytes for code 192 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 232, prolog size 16, PerfScore 47.54, instruction count 58, allocated bytes for code 232 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,10 +141,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.osx.arm64.checked.mch |
9,192 |
1,016 |
3,718 |
4,458 |
-12,872 |
+91,776 |
benchmarks.run_pgo.osx.arm64.checked.mch |
4,622 |
551 |
1,451 |
2,620 |
-39,180 |
+36,492 |
benchmarks.run_tiered.osx.arm64.checked.mch |
5,527 |
337 |
1,554 |
3,636 |
-4,816 |
+35,796 |
coreclr_tests.run.osx.arm64.checked.mch |
75,636 |
10,308 |
24,890 |
40,438 |
-183,968 |
+293,496 |
libraries.crossgen2.osx.arm64.checked.mch |
48,876 |
5,801 |
13,982 |
29,093 |
-50,452 |
+232,836 |
libraries.pmi.osx.arm64.checked.mch |
69,563 |
8,290 |
23,575 |
37,698 |
-95,004 |
+433,496 |
libraries_tests.run.osx.arm64.Release.mch |
17,745 |
1,258 |
5,237 |
11,250 |
-44,336 |
+93,708 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
76,832 |
22,198 |
27,857 |
26,777 |
-385,824 |
+781,068 |
realworld.run.osx.arm64.checked.mch |
10,389 |
1,369 |
4,133 |
4,887 |
-17,144 |
+108,176 |
|
318,382 |
51,128 |
106,397 |
160,857 |
-833,596 |
+2,106,844 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.osx.arm64.checked.mch |
22,836 |
6 |
22,830 |
9 (0.04%) |
2,053 (8.25%) |
benchmarks.run_pgo.osx.arm64.checked.mch |
66,254 |
47,211 |
19,043 |
9 (0.01%) |
490 (0.73%) |
benchmarks.run_tiered.osx.arm64.checked.mch |
47,728 |
37,393 |
10,335 |
10 (0.02%) |
598 (1.24%) |
coreclr_tests.run.osx.arm64.checked.mch |
503,072 |
301,369 |
201,703 |
53 (0.01%) |
3,826 (0.75%) |
libraries.crossgen2.osx.arm64.checked.mch |
248,660 |
15 |
248,645 |
1 (0.00%) |
15,843 (5.99%) |
libraries.pmi.osx.arm64.checked.mch |
298,685 |
18 |
298,667 |
20 (0.01%) |
17,775 (5.62%) |
libraries_tests.run.osx.arm64.Release.mch |
172,963 |
153,670 |
19,293 |
0 (0.00%) |
601 (0.35%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
271,407 |
21,618 |
249,789 |
123 (0.04%) |
32,120 (10.58%) |
realworld.run.osx.arm64.checked.mch |
28,864 |
3 |
28,861 |
2 (0.01%) |
2,742 (8.68%) |
|
1,660,469 |
561,303 |
1,099,166 |
227 (0.01%) |
76,048 (4.38%) |
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8830016 (overridden on cmd)
Total bytes of diff: 8908920 (overridden on cmd)
Total bytes of delta: 78904 (0.89 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
5248 : 8559.dasm (17.19 % of base)
1264 : 14420.dasm (23.85 % of base)
1248 : 9303.dasm (25.57 % of base)
1100 : 10668.dasm (343.75 % of base)
888 : 21804.dasm (2.36 % of base)
884 : 13539.dasm (12.75 % of base)
764 : 5493.dasm (10.43 % of base)
760 : 8199.dasm (10.14 % of base)
712 : 17318.dasm (10.61 % of base)
668 : 8984.dasm (5.10 % of base)
596 : 15194.dasm (12.87 % of base)
596 : 9337.dasm (12.87 % of base)
396 : 11240.dasm (17.93 % of base)
388 : 11991.dasm (6.94 % of base)
388 : 9284.dasm (4.79 % of base)
372 : 17295.dasm (6.82 % of base)
360 : 9430.dasm (13.37 % of base)
352 : 17447.dasm (33.08 % of base)
352 : 7816.dasm (3.91 % of base)
320 : 4976.dasm (8.11 % of base)
Top file improvements (bytes):
-692 : 9131.dasm (-2.13 % of base)
-200 : 2236.dasm (-3.55 % of base)
-200 : 10808.dasm (-23.04 % of base)
-176 : 11864.dasm (-36.36 % of base)
-172 : 1882.dasm (-4.59 % of base)
-152 : 11862.dasm (-38.38 % of base)
-136 : 777.dasm (-7.74 % of base)
-132 : 22382.dasm (-13.92 % of base)
-124 : 17309.dasm (-6.49 % of base)
-120 : 2640.dasm (-13.89 % of base)
-120 : 6943.dasm (-3.18 % of base)
-116 : 3954.dasm (-1.05 % of base)
-112 : 16558.dasm (-5.61 % of base)
-108 : 4377.dasm (-10.23 % of base)
-104 : 11503.dasm (-12.50 % of base)
-104 : 17518.dasm (-6.55 % of base)
-100 : 9239.dasm (-4.39 % of base)
-100 : 11519.dasm (-26.32 % of base)
-100 : 7857.dasm (-6.14 % of base)
-96 : 1613.dasm (-2.68 % of base)
78 total files with Code Size differences (38 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
5248 (17.19 % of base) : 8559.dasm - Jil.JSON:GetWriterAction[System.__Canon](Jil.Options):System.Action`3[System.__Canon,System.__Canon,int] (FullOpts)
1264 (23.85 % of base) : 14420.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1248 (25.57 % of base) : 9303.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1100 (343.75 % of base) : 10668.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
888 (2.36 % of base) : 21804.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
884 (12.75 % of base) : 13539.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
764 (10.43 % of base) : 5493.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
760 (10.14 % of base) : 8199.dasm - MessagePack.Internal.BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
712 (10.61 % of base) : 17318.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
668 (5.10 % of base) : 8984.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
596 (12.87 % of base) : 15194.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_LocationFormatter1:.ctor():this (FullOpts)
596 (12.87 % of base) : 9337.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:.ctor():this (FullOpts)
396 (17.93 % of base) : 11240.dasm - System.IO.Pipes.PipeStream:GetPipePath(System.String,System.String):System.String (FullOpts)
388 (4.79 % of base) : 9284.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
388 (6.94 % of base) : 11991.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
372 (6.82 % of base) : 17295.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindReturn(Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
360 (13.37 % of base) : 9430.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetDefaultSimpleConverters():System.Collections.Generic.Dictionary`2[System.Type,System.Text.Json.Serialization.JsonConverter] (FullOpts)
352 (33.08 % of base) : 17447.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
352 (3.91 % of base) : 7816.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
320 (8.11 % of base) : 4976.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
Top method improvements (bytes):
-692 (-2.13 % of base) : 9131.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
-200 (-3.55 % of base) : 2236.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:.cctor() (FullOpts)
-200 (-23.04 % of base) : 10808.dasm - System.Formats.Tar.Tests.Perf_TarFile:.cctor() (FullOpts)
-176 (-36.36 % of base) : 11864.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-172 (-4.59 % of base) : 1882.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_9(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel) (FullOpts)
-152 (-38.38 % of base) : 11862.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-136 (-7.74 % of base) : 777.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-132 (-13.92 % of base) : 22382.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-124 (-6.49 % of base) : 17309.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
-120 (-13.89 % of base) : 2640.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-120 (-3.18 % of base) : 6943.dasm - System.Reflection.Emit.CustomAttributeBuilder:EmitValue(System.IO.BinaryWriter,System.Type,System.Object) (FullOpts)
-116 (-1.05 % of base) : 3954.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-112 (-5.61 % of base) : 16558.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,byref):this (FullOpts)
-108 (-10.23 % of base) : 4377.dasm - System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this (FullOpts)
-104 (-6.55 % of base) : 17518.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitBinaryOperatorChildren(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator]):this (FullOpts)
-104 (-12.50 % of base) : 11503.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (FullOpts)
-100 (-4.39 % of base) : 9239.dasm - Jil.Common.Utils:LoadConstantOfType(Sigil.NonGeneric.Emit,System.Object,System.Type):ubyte (FullOpts)
-100 (-6.14 % of base) : 7857.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryRemoveInternal(System.Text.RegularExpressions.RegexCache+Key,byref,ubyte,System.__Canon):ubyte:this (FullOpts)
-100 (-26.32 % of base) : 11519.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
-96 (-19.20 % of base) : 11515.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
Top method regressions (percentages):
1100 (343.75 % of base) : 10668.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
148 (41.57 % of base) : 7876.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
148 (38.14 % of base) : 12358.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
216 (34.62 % of base) : 696.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
28 (33.33 % of base) : 18631.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
160 (33.33 % of base) : 786.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
352 (33.08 % of base) : 17447.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
300 (29.41 % of base) : 18169.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
28 (28.00 % of base) : 8067.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
1248 (25.57 % of base) : 9303.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1264 (23.85 % of base) : 14420.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
44 (22.00 % of base) : 11329.dasm - SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
28 (20.59 % of base) : 3340.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
72 (19.35 % of base) : 15442.dasm - System.Numerics.Quaternion:CreateFromRotationMatrix(System.Numerics.Matrix4x4):System.Numerics.Quaternion (FullOpts)
184 (19.25 % of base) : 17777.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
96 (18.75 % of base) : 20950.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (FullOpts)
164 (18.39 % of base) : 11516.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts)
196 (18.22 % of base) : 9170.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (FullOpts)
396 (17.93 % of base) : 11240.dasm - System.IO.Pipes.PipeStream:GetPipePath(System.String,System.String):System.String (FullOpts)
176 (17.67 % of base) : 16857.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:HasYieldOperations(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
Top method improvements (percentages):
-152 (-38.38 % of base) : 11862.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-176 (-36.36 % of base) : 11864.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-100 (-26.32 % of base) : 11519.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
-200 (-23.04 % of base) : 10808.dasm - System.Formats.Tar.Tests.Perf_TarFile:.cctor() (FullOpts)
-92 (-19.33 % of base) : 3681.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
-96 (-19.20 % of base) : 11515.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
-72 (-16.82 % of base) : 10018.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:SetupDataContractJsonSerializer_():this (FullOpts)
-32 (-15.38 % of base) : 23016.dasm - System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
-12 (-15.00 % of base) : 1615.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
-24 (-14.63 % of base) : 23272.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_Array():int:this (FullOpts)
-24 (-14.63 % of base) : 22938.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
-72 (-13.95 % of base) : 2594.dasm - MicroBenchmarks.Serializers.Json_ToStream`1[System.__Canon]:Setup():this (FullOpts)
-132 (-13.92 % of base) : 22382.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-120 (-13.89 % of base) : 2640.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-12 (-13.04 % of base) : 13589.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
-12 (-13.04 % of base) : 13821.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_12(System.Object):int:this (FullOpts)
-12 (-13.04 % of base) : 13817.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_4(System.Object):System.String:this (FullOpts)
-12 (-13.04 % of base) : 11905.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<SimpleStructWithPropertiesPropInit>b__101_0(System.Object):int:this (FullOpts)
-12 (-13.04 % of base) : 13633.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_10(System.Object):System.String:this (FullOpts)
-12 (-13.04 % of base) : 13629.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_2(System.Object):ubyte:this (FullOpts)
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 24158400 (overridden on cmd)
Total bytes of diff: 24155712 (overridden on cmd)
Total bytes of delta: -2688 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1412 : 34376.dasm (25.38 % of base)
1316 : 21356.dasm (25.99 % of base)
888 : 53051.dasm (2.36 % of base)
668 : 23931.dasm (5.10 % of base)
416 : 21314.dasm (5.14 % of base)
388 : 24857.dasm (7.74 % of base)
344 : 52864.dasm (11.23 % of base)
320 : 31565.dasm (6.53 % of base)
300 : 56606.dasm (5.51 % of base)
288 : 35331.dasm (5.71 % of base)
272 : 23274.dasm (3.75 % of base)
272 : 65409.dasm (3.52 % of base)
268 : 31576.dasm (7.56 % of base)
252 : 63814.dasm (18.58 % of base)
240 : 33296.dasm (5.29 % of base)
236 : 33159.dasm (5.30 % of base)
224 : 66600.dasm (16.33 % of base)
220 : 33939.dasm (1.93 % of base)
216 : 23325.dasm (5.74 % of base)
216 : 39722.dasm (13.04 % of base)
Top file improvements (bytes):
-1064 : 36678.dasm (-52.67 % of base)
-952 : 63627.dasm (-18.15 % of base)
-940 : 65278.dasm (-18.26 % of base)
-928 : 17208.dasm (-48.43 % of base)
-776 : 35952.dasm (-67.36 % of base)
-776 : 37189.dasm (-67.36 % of base)
-740 : 49538.dasm (-16.80 % of base)
-716 : 35941.dasm (-72.18 % of base)
-716 : 37182.dasm (-72.18 % of base)
-704 : 24356.dasm (-13.74 % of base)
-696 : 21077.dasm (-2.14 % of base)
-644 : 16130.dasm (-43.16 % of base)
-620 : 22092.dasm (-41.11 % of base)
-580 : 56233.dasm (-21.94 % of base)
-528 : 55543.dasm (-46.48 % of base)
-448 : 64323.dasm (-24.51 % of base)
-440 : 64339.dasm (-38.33 % of base)
-380 : 64364.dasm (-21.11 % of base)
-376 : 64368.dasm (-24.93 % of base)
-344 : 36058.dasm (-35.54 % of base)
70 total files with Code Size differences (32 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
1412 (25.38 % of base) : 34376.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1316 (25.99 % of base) : 21356.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
888 (2.36 % of base) : 53051.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
668 (5.10 % of base) : 23931.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
416 (5.14 % of base) : 21314.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
388 (7.74 % of base) : 24857.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
344 (11.23 % of base) : 52864.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
320 (6.53 % of base) : 31565.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
300 (5.51 % of base) : 56606.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
288 (5.71 % of base) : 35331.dasm - (dynamicClass):ReadMyEventsListerItemFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
272 (3.75 % of base) : 23274.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
272 (3.52 % of base) : 65409.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
268 (7.56 % of base) : 31576.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
252 (18.58 % of base) : 63814.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
240 (5.29 % of base) : 33296.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
236 (5.30 % of base) : 33159.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
224 (16.33 % of base) : 66600.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
220 (1.93 % of base) : 33939.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
216 (5.74 % of base) : 23325.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
216 (13.04 % of base) : 39722.dasm - Microsoft.CodeAnalysis.AssemblyMetadata:GetOrCreateData():Microsoft.CodeAnalysis.AssemblyMetadata+Data:this (Tier0-FullOpts)
Top method improvements (bytes):
-1064 (-52.67 % of base) : 36678.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-952 (-18.15 % of base) : 63627.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
-940 (-18.26 % of base) : 65278.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[System.__Canon]:MoveNext():this (Tier1-OSR)
-928 (-48.43 % of base) : 17208.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-776 (-67.36 % of base) : 35952.dasm - System.IO.Pipes.PipeStream:WriteCore(System.ReadOnlySpan`1[ubyte]):this (Tier1)
-776 (-67.36 % of base) : 37189.dasm - System.IO.Pipes.PipeStream:WriteCore(System.ReadOnlySpan`1[ubyte]):this (Tier1)
-740 (-16.80 % of base) : 49538.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
-716 (-72.18 % of base) : 35941.dasm - System.IO.Pipes.PipeStream:ReadCore(System.Span`1[ubyte]):int:this (Tier1)
-716 (-72.18 % of base) : 37182.dasm - System.IO.Pipes.PipeStream:ReadCore(System.Span`1[ubyte]):int:this (Tier1)
-704 (-13.74 % of base) : 24356.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
-696 (-2.14 % of base) : 21077.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
-644 (-43.16 % of base) : 16130.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-620 (-41.11 % of base) : 22092.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-580 (-21.94 % of base) : 56233.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (Tier1-OSR)
-528 (-46.48 % of base) : 55543.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-448 (-24.51 % of base) : 64323.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryRemoveInternal(System.Text.RegularExpressions.RegexCache+Key,byref,ubyte,System.__Canon):ubyte:this (Tier1)
-440 (-38.33 % of base) : 64339.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryGetValue(System.Text.RegularExpressions.RegexCache+Key,byref):ubyte:this (Tier1)
-380 (-21.11 % of base) : 64364.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Tier1)
-376 (-24.93 % of base) : 64368.dasm - System.Text.RegularExpressions.RegexCache:Get(System.Text.RegularExpressions.RegexCache+Key):System.Text.RegularExpressions.Regex (Tier1)
-344 (-35.54 % of base) : 36058.dasm - PerfLabTests.LowLevelPerf:IntegerFormatting():System.String:this (Tier1-OSR)
Top method regressions (percentages):
36 (52.94 % of base) : 53967.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
36 (52.94 % of base) : 55545.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Tier1)
84 (32.81 % of base) : 62322.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 63402.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 65140.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 28858.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 30373.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 30683.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 32940.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 61267.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 63820.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 28090.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 65853.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
84 (32.81 % of base) : 66568.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
1316 (25.99 % of base) : 21356.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1412 (25.38 % of base) : 34376.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
184 (19.49 % of base) : 30412.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
88 (19.13 % of base) : 59531.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
252 (18.58 % of base) : 63814.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
164 (18.39 % of base) : 25819.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
Top method improvements (percentages):
-716 (-72.18 % of base) : 35941.dasm - System.IO.Pipes.PipeStream:ReadCore(System.Span`1[ubyte]):int:this (Tier1)
-716 (-72.18 % of base) : 37182.dasm - System.IO.Pipes.PipeStream:ReadCore(System.Span`1[ubyte]):int:this (Tier1)
-776 (-67.36 % of base) : 35952.dasm - System.IO.Pipes.PipeStream:WriteCore(System.ReadOnlySpan`1[ubyte]):this (Tier1)
-776 (-67.36 % of base) : 37189.dasm - System.IO.Pipes.PipeStream:WriteCore(System.ReadOnlySpan`1[ubyte]):this (Tier1)
-324 (-60.45 % of base) : 64324.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:NodeEqualsKey(System.Collections.Generic.IEqualityComparer`1[System.Text.RegularExpressions.RegexCache+Key],System.Collections.Concurrent.ConcurrentDictionary`2+Node[System.Text.RegularExpressions.RegexCache+Key,System.__Canon],System.Text.RegularExpressions.RegexCache+Key):ubyte (Tier1)
-1064 (-52.67 % of base) : 36678.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-340 (-49.71 % of base) : 16057.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareAnyKeys(int,int):int:this (Tier1)
-340 (-49.71 % of base) : 19959.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareAnyKeys(int,int):int:this (Tier1)
-332 (-48.82 % of base) : 19958.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareKeys(int,int):int:this (Tier1)
-332 (-48.82 % of base) : 16056.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareKeys(int,int):int:this (Tier1)
-928 (-48.43 % of base) : 17208.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-528 (-46.48 % of base) : 55543.dasm - System.IO.Strategies.OSFileStreamStrategy:.ctor(System.String,int,int,int,int,long,System.Nullable`1[int]):this (Tier1)
-204 (-43.97 % of base) : 52195.dasm - Microsoft.Extensions.Configuration.ConfigurationProvider:Segment(System.String,int):System.String (Tier1)
-644 (-43.16 % of base) : 16130.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-620 (-41.11 % of base) : 22092.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-84 (-40.38 % of base) : 53993.dasm - System.Enum:FindDefinedIndex[uint](uint[],uint):int (Tier1)
-440 (-38.33 % of base) : 64339.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryGetValue(System.Text.RegularExpressions.RegexCache+Key,byref):ubyte:this (Tier1)
-344 (-35.54 % of base) : 36058.dasm - PerfLabTests.LowLevelPerf:IntegerFormatting():System.String:this (Tier1-OSR)
-308 (-28.31 % of base) : 35081.dasm - System.Text.Json.Tests.Perf_Deep:Setup():this (Tier1-OSR)
-308 (-28.31 % of base) : 48734.dasm - System.Text.Json.Tests.Perf_Deep:Setup():this (Tier1-OSR)
benchmarks.run_tiered.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14959196 (overridden on cmd)
Total bytes of diff: 14990176 (overridden on cmd)
Total bytes of delta: 30980 (0.21 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1456 : 29868.dasm (26.51 % of base)
1312 : 20123.dasm (26.54 % of base)
888 : 43258.dasm (2.36 % of base)
668 : 20193.dasm (5.10 % of base)
388 : 23439.dasm (7.74 % of base)
388 : 20100.dasm (4.79 % of base)
352 : 11660.dasm (3.91 % of base)
320 : 29016.dasm (8.11 % of base)
320 : 27831.dasm (6.53 % of base)
300 : 44705.dasm (5.51 % of base)
292 : 3258.dasm (2.70 % of base)
288 : 29768.dasm (5.71 % of base)
272 : 47773.dasm (3.52 % of base)
272 : 21851.dasm (3.75 % of base)
268 : 27842.dasm (7.56 % of base)
236 : 29581.dasm (5.44 % of base)
220 : 29295.dasm (1.93 % of base)
216 : 21902.dasm (5.74 % of base)
216 : 43753.dasm (34.62 % of base)
212 : 31179.dasm (7.61 % of base)
Top file improvements (bytes):
-692 : 19884.dasm (-2.13 % of base)
-176 : 38424.dasm (-30.14 % of base)
-172 : 17409.dasm (-4.56 % of base)
-136 : 31315.dasm (-7.74 % of base)
-124 : 37856.dasm (-7.69 % of base)
-116 : 24206.dasm (-1.05 % of base)
-108 : 42517.dasm (-5.28 % of base)
-92 : 24464.dasm (-19.33 % of base)
-92 : 48081.dasm (-1.85 % of base)
-92 : 48086.dasm (-1.81 % of base)
-84 : 7370.dasm (-8.05 % of base)
-72 : 11844.dasm (-6.69 % of base)
-68 : 17108.dasm (-1.80 % of base)
-60 : 42522.dasm (-2.85 % of base)
-60 : 44570.dasm (-3.36 % of base)
-52 : 12310.dasm (-6.84 % of base)
-48 : 11716.dasm (-9.76 % of base)
-44 : 22600.dasm (-6.71 % of base)
-44 : 14170.dasm (-3.64 % of base)
-44 : 46204.dasm (-6.75 % of base)
74 total files with Code Size differences (34 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
1456 (26.51 % of base) : 29868.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1312 (26.54 % of base) : 20123.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
888 (2.36 % of base) : 43258.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.IndexViewModel,int) (FullOpts)
668 (5.10 % of base) : 20193.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
388 (4.79 % of base) : 20100.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
388 (7.74 % of base) : 23439.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
352 (3.91 % of base) : 11660.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier1)
320 (6.53 % of base) : 27831.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
320 (8.11 % of base) : 29016.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
300 (5.51 % of base) : 44705.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
292 (2.70 % of base) : 3258.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
288 (5.71 % of base) : 29768.dasm - (dynamicClass):ReadMyEventsListerItemFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
272 (3.75 % of base) : 21851.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
272 (3.52 % of base) : 47773.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
268 (7.56 % of base) : 27842.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
236 (5.44 % of base) : 29581.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
220 (1.93 % of base) : 29295.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
216 (5.74 % of base) : 21902.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
216 (34.62 % of base) : 43753.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
212 (7.61 % of base) : 31179.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
Top method improvements (bytes):
-692 (-2.13 % of base) : 19884.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.MyEventsListerItem,int) (FullOpts)
-176 (-30.14 % of base) : 38424.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-172 (-4.56 % of base) : 17409.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_9(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel) (FullOpts)
-136 (-7.74 % of base) : 31315.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
-124 (-7.69 % of base) : 37856.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
-116 (-1.05 % of base) : 24206.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
-108 (-5.28 % of base) : 42517.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-92 (-1.81 % of base) : 48086.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (Tier1)
-92 (-1.85 % of base) : 48081.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (Tier1-OSR)
-92 (-19.33 % of base) : 24464.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-84 (-8.05 % of base) : 7370.dasm - Interop+Sys:GetCwd():System.String (Tier0-FullOpts)
-72 (-6.69 % of base) : 11844.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1)
-68 (-1.80 % of base) : 17108.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-60 (-2.85 % of base) : 42522.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-60 (-3.36 % of base) : 44570.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
-52 (-6.84 % of base) : 12310.dasm - System.AppContextConfigHelper:GetInt16Config(System.String,short,ubyte):short (Tier1)
-48 (-9.76 % of base) : 11716.dasm - System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte (Tier1)
-44 (-3.64 % of base) : 14170.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)
-44 (-6.71 % of base) : 22600.dasm - System.Linq.Enumerable+<AggregateByIterator>d__75`3[System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-44 (-6.75 % of base) : 46204.dasm - System.Linq.Enumerable+<CountByIterator>d__77`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method regressions (percentages):
216 (34.62 % of base) : 43753.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
160 (33.33 % of base) : 11795.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
1312 (26.54 % of base) : 20123.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1456 (26.51 % of base) : 29868.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
28 (20.59 % of base) : 20280.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
96 (18.75 % of base) : 41838.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (Tier1)
164 (18.39 % of base) : 22959.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
196 (18.22 % of base) : 19934.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
64 (16.84 % of base) : 5098.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
8 (15.38 % of base) : 18435.dasm - System.MemoryExtensions:AsSpan[ushort](ushort[]):System.Span`1[ushort] (Tier1)
8 (15.38 % of base) : 5065.dasm - System.Span`1[ubyte]:op_Implicit(ubyte[]):System.Span`1[ubyte] (Tier1)
24 (15.00 % of base) : 8027.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Net.Sockets.SocketAsyncEngine+SocketIOEvent]:TryEnqueue(System.Net.Sockets.SocketAsyncEngine+SocketIOEvent):ubyte:this (Tier1)
72 (14.63 % of base) : 24178.dasm - System.Security.Cryptography.RSA:TryExportSubjectPublicKeyInfo(System.Span`1[ubyte],byref):ubyte:this (Tier1)
12 (13.04 % of base) : 5159.dasm - System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
12 (13.04 % of base) : 5158.dasm - System.LocalAppContextSwitches:get_ForceInterpretedInvoke():ubyte (Tier1)
48 (12.37 % of base) : 24329.dasm - System.Security.Cryptography.RSA:ClearPrivateParameters(byref) (Tier1)
136 (12.23 % of base) : 42571.dasm - System.Environment:ExpandEnvironmentVariablesCore(System.String):System.String (Tier0-FullOpts)
184 (12.07 % of base) : 27103.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
108 (11.64 % of base) : 45974.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Intrinsified(ulong,ulong):ulong (Tier1-OSR)
28 (10.94 % of base) : 41955.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleAwaitUsing():ubyte:this (Tier1)
Top method improvements (percentages):
-176 (-30.14 % of base) : 38424.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-92 (-19.33 % of base) : 24464.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-28 (-17.50 % of base) : 24295.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:NeedsQuoting(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
-12 (-13.04 % of base) : 23711.dasm - (dynamicClass):NumGetter(System.Object):int (FullOpts)
-12 (-13.04 % of base) : 28320.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
-12 (-13.04 % of base) : 23712.dasm - (dynamicClass):TextGetter(System.Object):System.String (FullOpts)
-12 (-12.50 % of base) : 23717.dasm - (dynamicClass):NumSetter(System.Object,int) (FullOpts)
-12 (-12.50 % of base) : 29584.dasm - (dynamicClass):Param2Setter(System.Object,ubyte) (FullOpts)
-12 (-12.50 % of base) : 38350.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
-12 (-11.54 % of base) : 23718.dasm - (dynamicClass):TextSetter(System.Object,System.String) (FullOpts)
-32 (-10.00 % of base) : 6155.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-48 (-9.76 % of base) : 11716.dasm - System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte (Tier1)
-8 (-9.09 % of base) : 37920.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:HasErrors[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier1)
-24 (-8.57 % of base) : 5479.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-84 (-8.05 % of base) : 7370.dasm - Interop+Sys:GetCwd():System.String (Tier0-FullOpts)
-136 (-7.74 % of base) : 31315.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
-124 (-7.69 % of base) : 37856.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
-52 (-6.84 % of base) : 12310.dasm - System.AppContextConfigHelper:GetInt16Config(System.String,short,ubyte):short (Tier1)
-44 (-6.75 % of base) : 46204.dasm - System.Linq.Enumerable+<CountByIterator>d__77`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-44 (-6.71 % of base) : 22600.dasm - System.Linq.Enumerable+<AggregateByIterator>d__75`3[System.__Canon,System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
coreclr_tests.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 384586092 (overridden on cmd)
Total bytes of diff: 384695620 (overridden on cmd)
Total bytes of delta: 109528 (0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1452 : 446892.dasm (59.41 % of base)
1300 : 378125.dasm (20.11 % of base)
1076 : 500184.dasm (4.02 % of base)
1004 : 504113.dasm (7.93 % of base)
828 : 488137.dasm (35.14 % of base)
712 : 399853.dasm (10.63 % of base)
640 : 448304.dasm (15.66 % of base)
600 : 389216.dasm (7.92 % of base)
560 : 285388.dasm (9.45 % of base)
560 : 451335.dasm (9.45 % of base)
516 : 435322.dasm (0.51 % of base)
516 : 434673.dasm (0.51 % of base)
496 : 286935.dasm (1.92 % of base)
480 : 454448.dasm (3.89 % of base)
472 : 476737.dasm (5.65 % of base)
468 : 486956.dasm (3.77 % of base)
468 : 488208.dasm (19.76 % of base)
436 : 489267.dasm (26.59 % of base)
428 : 450631.dasm (4.19 % of base)
420 : 438037.dasm (14.19 % of base)
Top file improvements (bytes):
-8760 : 434680.dasm (-6.62 % of base)
-6556 : 435327.dasm (-5.12 % of base)
-6408 : 279413.dasm (-87.21 % of base)
-6308 : 435337.dasm (-5.13 % of base)
-5864 : 434694.dasm (-4.59 % of base)
-4516 : 435232.dasm (-27.70 % of base)
-4508 : 434491.dasm (-2.51 % of base)
-4472 : 434486.dasm (-2.49 % of base)
-2748 : 279593.dasm (-76.08 % of base)
-2188 : 279634.dasm (-41.44 % of base)
-2076 : 435712.dasm (-6.05 % of base)
-1344 : 388009.dasm (-1.06 % of base)
-1252 : 205028.dasm (-51.31 % of base)
-1136 : 205038.dasm (-49.39 % of base)
-1000 : 440637.dasm (-0.94 % of base)
-788 : 486901.dasm (-3.49 % of base)
-716 : 347664.dasm (-7.19 % of base)
-668 : 347660.dasm (-6.15 % of base)
-648 : 6675.dasm (-40.50 % of base)
-572 : 280627.dasm (-16.92 % of base)
82 total files with Code Size differences (42 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
1452 (59.41 % of base) : 446892.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1300 (20.11 % of base) : 378125.dasm - div_r4._div:main():int (FullOpts)
1076 (4.02 % of base) : 500184.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
1004 (7.93 % of base) : 504113.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
828 (35.14 % of base) : 488137.dasm - ManagedPointers:Validate_IntrinsicMethodsWithByRef_NullByRef() (FullOpts)
712 (10.63 % of base) : 399853.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
640 (15.66 % of base) : 448304.dasm - GitHub_16377:Test() (FullOpts)
600 (7.92 % of base) : 389216.dasm - ArrBoundUnsigned:TestEntryPoint():int (FullOpts)
560 (9.45 % of base) : 285388.dasm - System.Net.Sockets.SocketErrorPal:.cctor() (FullOpts)
560 (9.45 % of base) : 451335.dasm - System.Net.Sockets.SocketErrorPal:.cctor() (FullOpts)
516 (0.51 % of base) : 434673.dasm - i4div:TestEntryPoint():int (FullOpts)
516 (0.51 % of base) : 435322.dasm - u4div:TestEntryPoint():int (FullOpts)
496 (1.92 % of base) : 286935.dasm - lclfldrem:TestEntryPoint():int (FullOpts)
480 (3.89 % of base) : 454448.dasm - Generated1003:MethodCallingTest() (FullOpts)
472 (5.65 % of base) : 476737.dasm - Generated627:MethodCallingTest() (FullOpts)
468 (3.77 % of base) : 486956.dasm - Generated966:MethodCallingTest() (FullOpts)
468 (19.76 % of base) : 488208.dasm - UnsafeAccessorsTests:Verify_InvalidUseUnsafeAccessor() (FullOpts)
436 (26.59 % of base) : 489267.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
428 (4.19 % of base) : 450631.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,long,ushort,double,long,ulong):int (FullOpts)
420 (14.19 % of base) : 438037.dasm - JitTest_types_ldtoken_il.Test:Main():int (FullOpts)
Top method improvements (bytes):
-8760 (-6.62 % of base) : 434680.dasm - i4rem:TestEntryPoint():int (FullOpts)
-6556 (-5.12 % of base) : 435327.dasm - u4rem:TestEntryPoint():int (FullOpts)
-6408 (-87.21 % of base) : 279413.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1-OSR)
-6308 (-5.13 % of base) : 435337.dasm - u8rem:TestEntryPoint():int (FullOpts)
-5864 (-4.59 % of base) : 434694.dasm - i8rem:TestEntryPoint():int (FullOpts)
-4516 (-27.70 % of base) : 435232.dasm - Test_throwinfinally_50_cs.Class1:foo(int) (FullOpts)
-4508 (-2.51 % of base) : 434491.dasm - decimalrem:TestEntryPoint():int (FullOpts)
-4472 (-2.49 % of base) : 434486.dasm - decimaldiv:TestEntryPoint():int (FullOpts)
-2748 (-76.08 % of base) : 279593.dasm - Internal.TypeSystem.Ecma.EcmaType+<GetVirtualMethods>d__53:MoveNext():ubyte:this (Tier1-OSR)
-2188 (-41.44 % of base) : 279634.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1-OSR)
-2076 (-6.05 % of base) : 435712.dasm - LongMulOn32BitTest:Main():int (FullOpts)
-1344 (-1.06 % of base) : 388009.dasm - Program:TestEntryPoint():int (FullOpts)
-1252 (-51.31 % of base) : 205028.dasm - BenchmarksGame.KNucleotide_9:countEnding(int,long,ubyte):System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper] (Tier1-OSR)
-1136 (-49.39 % of base) : 205038.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-1000 (-0.94 % of base) : 440637.dasm - overlddiv:TestEntryPoint():int (FullOpts)
-788 (-3.49 % of base) : 486901.dasm - Generated963:CalliTest() (FullOpts)
-716 (-7.19 % of base) : 347664.dasm - GitHub_47236.Program:TestVector128() (FullOpts)
-668 (-6.15 % of base) : 347660.dasm - GitHub_47236.Program:TestVector256() (FullOpts)
-648 (-40.50 % of base) : 6675.dasm - Microsoft.Diagnostics.Tracing.EventPipe.EventCache:SortAndDispatch(long):this (Tier1-OSR)
-572 (-16.92 % of base) : 280627.dasm - ILCompiler.DependencyAnalysisFramework.DependencyAnalyzer`2[ILCompiler.DependencyAnalysisFramework.NoLogStrategy`1[System.__Canon],System.__Canon]:GetStaticDependenciesImpl(ILCompiler.DependencyAnalysisFramework.DependencyNodeCore`1[System.__Canon]):this (Tier1-OSR)
Top method regressions (percentages):
1452 (59.41 % of base) : 446892.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
160 (55.56 % of base) : 392937.dasm - MainApp:TestEntryPoint():int (FullOpts)
16 (50.00 % of base) : 351320.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
16 (50.00 % of base) : 351349.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
68 (40.48 % of base) : 503186.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
148 (38.14 % of base) : 396362.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
72 (35.29 % of base) : 267718.dasm - System.Globalization.CompareInfo:IsPrefix(System.String,System.String,int):ubyte:this (Instrumented Tier1)
828 (35.14 % of base) : 488137.dasm - ManagedPointers:Validate_IntrinsicMethodsWithByRef_NullByRef() (FullOpts)
40 (33.33 % of base) : 382288.dasm - BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
40 (33.33 % of base) : 196580.dasm - BringUpTest_LocallocCnstB1:LocallocCnstB1():int (Tier0-FullOpts)
128 (33.33 % of base) : 397290.dasm - System.Xml.XmlConverter:ToChars(double,ubyte[],int):int (FullOpts)
352 (33.08 % of base) : 399981.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
220 (31.61 % of base) : 377816.dasm - beq_r4:main():int (FullOpts)
220 (31.61 % of base) : 377819.dasm - beq_r8:main():int (FullOpts)
300 (29.41 % of base) : 400714.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
112 (28.57 % of base) : 267755.dasm - System.IO.Enumeration.FileSystemEnumerableFactory+<>c__DisplayClass2_0:<UserFiles>b__1(byref):ubyte:this (Instrumented Tier1)
76 (27.54 % of base) : 208559.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
436 (26.59 % of base) : 489267.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
180 (25.86 % of base) : 377843.dasm - bge_un_r4:main():int (FullOpts)
180 (25.86 % of base) : 377845.dasm - bge_un_r8:main():int (FullOpts)
Top method improvements (percentages):
-6408 (-87.21 % of base) : 279413.dasm - Internal.TypeSystem.LockFreeReaderHashtable`2[Internal.TypeSystem.TypeSystemContext+InstantiatedTypeKey,System.__Canon]:Expand(System.__Canon[]):this (Tier1-OSR)
-2748 (-76.08 % of base) : 279593.dasm - Internal.TypeSystem.Ecma.EcmaType+<GetVirtualMethods>d__53:MoveNext():ubyte:this (Tier1-OSR)
-44 (-55.00 % of base) : 438273.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)
-1252 (-51.31 % of base) : 205028.dasm - BenchmarksGame.KNucleotide_9:countEnding(int,long,ubyte):System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper] (Tier1-OSR)
-308 (-50.66 % of base) : 349645.dasm - System.Runtime.Intrinsics.Vector512:Dot[long](System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):long (FullOpts)
-308 (-50.66 % of base) : 349655.dasm - System.Runtime.Intrinsics.Vector512:Dot[ulong](System.Runtime.Intrinsics.Vector512`1[ulong],System.Runtime.Intrinsics.Vector512`1[ulong]):ulong (FullOpts)
-364 (-50.00 % of base) : 150378.dasm - System.Number:FormatInt32(int,int,System.String,System.IFormatProvider):System.String (Instrumented Tier1)
-1136 (-49.39 % of base) : 205038.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-28 (-43.75 % of base) : 434202.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)
-28 (-43.75 % of base) : 438221.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)
-2188 (-41.44 % of base) : 279634.dasm - ILCompiler.ReadyToRunVisibilityRootProvider:RootMethods(Internal.TypeSystem.MetadataType,System.String,ILCompiler.IRootingServiceProvider,ubyte):this (Tier1-OSR)
-648 (-40.50 % of base) : 6675.dasm - Microsoft.Diagnostics.Tracing.EventPipe.EventCache:SortAndDispatch(long):this (Tier1-OSR)
-12 (-37.50 % of base) : 444400.dasm - Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
-12 (-37.50 % of base) : 444404.dasm - Runtime_40607.Program:SignExtendsWrittenValue(short):int (FullOpts)
-12 (-37.50 % of base) : 444403.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
-12 (-37.50 % of base) : 444407.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
-208 (-36.11 % of base) : 450925.dasm - ILGEN_0x1bd95bae:Method_0x40637edd(int,byte,short,short,double,float,ubyte,float):short (FullOpts)
-64 (-34.78 % of base) : 348897.dasm - System.Runtime.Intrinsics.Vector256:Dot[long](System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector256`1[long]):long (FullOpts)
-64 (-34.78 % of base) : 348907.dasm - System.Runtime.Intrinsics.Vector256:Dot[ulong](System.Runtime.Intrinsics.Vector256`1[ulong],System.Runtime.Intrinsics.Vector256`1[ulong]):ulong (FullOpts)
-236 (-33.71 % of base) : 150342.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)
libraries.crossgen2.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 54579628 (overridden on cmd)
Total bytes of diff: 54762012 (overridden on cmd)
Total bytes of delta: 182384 (0.33 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2180 : 85826.dasm (33.60 % of base)
1208 : 59294.dasm (56.55 % of base)
1208 : 149905.dasm (56.55 % of base)
908 : 77859.dasm (1.15 % of base)
688 : 177041.dasm (27.04 % of base)
688 : 149990.dasm (73.50 % of base)
688 : 176521.dasm (25.56 % of base)
688 : 59379.dasm (73.50 % of base)
612 : 150162.dasm (39.13 % of base)
612 : 59556.dasm (39.13 % of base)
604 : 198893.dasm (2.25 % of base)
596 : 59273.dasm (42.45 % of base)
596 : 149884.dasm (42.45 % of base)
560 : 20281.dasm (103.70 % of base)
500 : 175951.dasm (5.94 % of base)
460 : 150013.dasm (8.46 % of base)
460 : 59406.dasm (8.41 % of base)
440 : 59303.dasm (30.39 % of base)
440 : 149914.dasm (31.98 % of base)
424 : 149913.dasm (23.19 % of base)
Top file improvements (bytes):
-276 : 134350.dasm (-14.11 % of base)
-276 : 42214.dasm (-14.11 % of base)
-156 : 217664.dasm (-12.00 % of base)
-152 : 247029.dasm (-8.09 % of base)
-144 : 41543.dasm (-4.96 % of base)
-128 : 235295.dasm (-5.55 % of base)
-128 : 261448.dasm (-5.56 % of base)
-128 : 76951.dasm (-0.71 % of base)
-124 : 21674.dasm (-16.49 % of base)
-120 : 87695.dasm (-9.38 % of base)
-112 : 21409.dasm (-7.43 % of base)
-108 : 20557.dasm (-7.38 % of base)
-108 : 20960.dasm (-7.38 % of base)
-104 : 200503.dasm (-3.89 % of base)
-104 : 38974.dasm (-5.80 % of base)
-104 : 244842.dasm (-4.72 % of base)
-96 : 7289.dasm (-4.32 % of base)
-92 : 214180.dasm (-1.81 % of base)
-92 : 217931.dasm (-11.00 % of base)
-88 : 179965.dasm (-3.24 % of base)
69 total files with Code Size differences (37 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
2180 (33.60 % of base) : 85826.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
1208 (56.55 % of base) : 59294.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
1208 (56.55 % of base) : 149905.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
908 (1.15 % of base) : 77859.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
688 (73.50 % of base) : 149990.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (73.50 % of base) : 59379.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (25.56 % of base) : 176521.dasm - System.Xml.Schema.Preprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (FullOpts)
688 (27.04 % of base) : 177041.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (FullOpts)
612 (39.13 % of base) : 59556.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
612 (39.13 % of base) : 150162.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|211_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
604 (2.25 % of base) : 198893.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)
596 (42.45 % of base) : 59273.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
596 (42.45 % of base) : 149884.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
560 (103.70 % of base) : 20281.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
500 (5.94 % of base) : 175951.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:Preprocess(System.Xml.Schema.XmlSchema,System.String,int):this (FullOpts)
460 (8.46 % of base) : 150013.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
460 (8.41 % of base) : 59406.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
440 (30.39 % of base) : 59303.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
440 (31.98 % of base) : 149914.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
424 (23.19 % of base) : 149913.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseArrayRankSpecifier(byref):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ArrayRankSpecifierSyntax:this (FullOpts)
Top method improvements (bytes):
-276 (-14.11 % of base) : 134350.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-276 (-14.11 % of base) : 42214.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-156 (-12.00 % of base) : 217664.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-152 (-8.09 % of base) : 247029.dasm - Microsoft.Extensions.Logging.Console.JsonConsoleFormatter:WriteItem(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]) (FullOpts)
-144 (-4.96 % of base) : 41543.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(byref,System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
-128 (-0.71 % of base) : 76951.dasm - Microsoft.FSharp.Quotations.FSharpExpr:GetLayout(ubyte):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
-128 (-5.55 % of base) : 235295.dasm - System.Resources.Extensions.PreserializedResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
-128 (-5.56 % of base) : 261448.dasm - System.Resources.ResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
-124 (-16.49 % of base) : 21674.dasm - System.DateTimeParse:ProcessTerminalState(int,byref,byref,byref,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-120 (-9.38 % of base) : 87695.dasm - Microsoft.CodeAnalysis.VisualBasic.MemberSemanticModel:GetBoundNodes(Microsoft.CodeAnalysis.SyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundNode]:this (FullOpts)
-112 (-7.43 % of base) : 21409.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask[System.__Canon]:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-108 (-7.38 % of base) : 20960.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask[ubyte]:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-108 (-7.38 % of base) : 20557.dasm - System.Threading.Tasks.ValueTask+ValueTaskSourceAsTask:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-104 (-3.89 % of base) : 200503.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:GetStandardAndLiftedBinopSignatures(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):ubyte:this (FullOpts)
-104 (-4.72 % of base) : 244842.dasm - System.Diagnostics.TagList:Insert(int,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (FullOpts)
-104 (-5.80 % of base) : 38974.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-96 (-4.32 % of base) : 7289.dasm - System.Text.TranscodingStream+<<WriteAsync>g__WriteAsyncCore|50_0>d:MoveNext():this (FullOpts)
-92 (-1.81 % of base) : 214180.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
-92 (-11.00 % of base) : 217931.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-88 (-3.24 % of base) : 179965.dasm - System.Net.Http.Http2Connection+<ProcessOutgoingFramesAsync>d__82:MoveNext():this (FullOpts)
Top method regressions (percentages):
560 (103.70 % of base) : 20281.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
688 (73.50 % of base) : 149990.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (73.50 % of base) : 59379.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
1208 (56.55 % of base) : 59294.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
1208 (56.55 % of base) : 149905.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
296 (46.54 % of base) : 21645.dasm - System.Array+SorterObjectArray:PickPivotAndPartition(int,int):int:this (FullOpts)
596 (42.45 % of base) : 59273.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
596 (42.45 % of base) : 149884.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
148 (40.22 % of base) : 207405.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
304 (39.18 % of base) : 40813.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
612 (39.13 % of base) : 59556.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
612 (39.13 % of base) : 150162.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|211_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
148 (37.00 % of base) : 207404.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
16 (36.36 % of base) : 200986.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
20 (35.71 % of base) : 100232.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
20 (35.71 % of base) : 100238.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
2180 (33.60 % of base) : 85826.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
440 (31.98 % of base) : 149914.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
80 (31.75 % of base) : 164037.dasm - System.Net.Security.AuthenticatedStream:DisposeAsync():System.Threading.Tasks.ValueTask:this (FullOpts)
440 (30.39 % of base) : 59303.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
Top method improvements (percentages):
-52 (-33.33 % of base) : 245091.dasm - System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
-48 (-32.43 % of base) : 112024.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
-28 (-28.00 % of base) : 112023.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
-40 (-25.00 % of base) : 198999.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
-40 (-25.00 % of base) : 198998.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
-16 (-20.00 % of base) : 100250.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
-16 (-19.05 % of base) : 51103.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-16 (-19.05 % of base) : 142116.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-20 (-17.86 % of base) : 59122.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-20 (-17.86 % of base) : 149736.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-124 (-16.49 % of base) : 21674.dasm - System.DateTimeParse:ProcessTerminalState(int,byref,byref,byref,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-32 (-16.33 % of base) : 13452.dasm - System.Runtime.Intrinsics.Vector64`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
-60 (-15.00 % of base) : 238309.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)
-36 (-14.29 % of base) : 249574.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-12 (-14.29 % of base) : 226263.dasm - System.Xml.XmlConverter:IsWhitespace(ushort):ubyte (FullOpts)
-276 (-14.11 % of base) : 134350.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-276 (-14.11 % of base) : 42214.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-16 (-12.90 % of base) : 203308.dasm - System.Text.Json.Utf8JsonReader:ThrowInvalidLiteral(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
-72 (-12.86 % of base) : 194711.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationAnalysisValueProvider`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
-72 (-12.86 % of base) : 35585.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationAnalysisValueProvider`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
libraries.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 64676624 (overridden on cmd)
Total bytes of diff: 65015116 (overridden on cmd)
Total bytes of delta: 338492 (0.52 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
3432 : 138223.dasm (87.37 % of base)
1876 : 80395.dasm (57.13 % of base)
1784 : 269324.dasm (40.04 % of base)
1748 : 147242.dasm (31.15 % of base)
1744 : 237899.dasm (8.26 % of base)
1660 : 137703.dasm (17.85 % of base)
1452 : 220540.dasm (59.41 % of base)
1412 : 28122.dasm (57.87 % of base)
1388 : 80266.dasm (28.61 % of base)
1224 : 155445.dasm (21.55 % of base)
1176 : 269181.dasm (25.26 % of base)
968 : 189608.dasm (49.79 % of base)
968 : 263447.dasm (7.53 % of base)
904 : 175721.dasm (23.04 % of base)
884 : 70010.dasm (12.67 % of base)
876 : 73542.dasm (12.28 % of base)
872 : 284179.dasm (4.11 % of base)
836 : 188772.dasm (30.96 % of base)
796 : 108191.dasm (16.06 % of base)
740 : 147896.dasm (18.14 % of base)
Top file improvements (bytes):
-924 : 77230.dasm (-6.27 % of base)
-916 : 77226.dasm (-6.21 % of base)
-788 : 133434.dasm (-14.60 % of base)
-748 : 285421.dasm (-12.91 % of base)
-712 : 140314.dasm (-5.92 % of base)
-704 : 140310.dasm (-5.86 % of base)
-528 : 133652.dasm (-2.21 % of base)
-516 : 104267.dasm (-8.48 % of base)
-376 : 181753.dasm (-51.09 % of base)
-376 : 51934.dasm (-51.09 % of base)
-368 : 303074.dasm (-18.00 % of base)
-292 : 302845.dasm (-34.27 % of base)
-276 : 159388.dasm (-11.00 % of base)
-276 : 73975.dasm (-11.82 % of base)
-252 : 73180.dasm (-13.02 % of base)
-236 : 16750.dasm (-10.77 % of base)
-236 : 133578.dasm (-10.07 % of base)
-232 : 227245.dasm (-21.89 % of base)
-216 : 128990.dasm (-6.05 % of base)
-204 : 181754.dasm (-20.90 % of base)
74 total files with Code Size differences (36 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
3432 (87.37 % of base) : 138223.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)
1876 (57.13 % of base) : 80395.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
1784 (40.04 % of base) : 269324.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
1748 (31.15 % of base) : 147242.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DeclarationContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
1744 (8.26 % of base) : 237899.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1660 (17.85 % of base) : 137703.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateVarianceDiagnosticsForTypeRecursively(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,short,int,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+VarianceDiagnosticsTargetTypeParameter,int,byref):this (FullOpts)
1452 (59.41 % of base) : 220540.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1412 (57.87 % of base) : 28122.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeNoLock(System.String,ubyte,ubyte):System.Type:this (FullOpts)
1388 (28.61 % of base) : 80266.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1224 (21.55 % of base) : 155445.dasm - Microsoft.CodeAnalysis.VisualBasic.IteratorRewriter:EnsureAllSymbolsAndSignature():ubyte:this (FullOpts)
1176 (25.26 % of base) : 269181.dasm - ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall:ToString():System.String:this (FullOpts)
968 (49.79 % of base) : 189608.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
968 (7.53 % of base) : 263447.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
904 (23.04 % of base) : 175721.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)
884 (12.67 % of base) : 70010.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
876 (12.28 % of base) : 73542.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
872 (4.11 % of base) : 284179.dasm - Interop+Sys:GetDriveType(System.String):int (FullOpts)
836 (30.96 % of base) : 188772.dasm - Microsoft.Build.Construction.SolutionProjectGenerator:AddReferencesBuildTask(Microsoft.Build.Execution.ProjectTargetInstance,System.String,System.String) (FullOpts)
796 (16.06 % of base) : 108191.dasm - Microsoft.CodeAnalysis.CSharp.AsyncRewriter+AsyncIteratorRewriter:VerifyPresenceOfRequiredAPIs(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
740 (18.14 % of base) : 147896.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanDateLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
Top method improvements (bytes):
-924 (-6.27 % of base) : 77230.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Numerics.Vector`1[float]):System.Nullable`1[int]:this (FullOpts)
-916 (-6.21 % of base) : 77226.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
-788 (-14.60 % of base) : 133434.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)
-748 (-12.91 % of base) : 285421.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
-712 (-5.92 % of base) : 140314.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,System.Numerics.Vector`1[float]):System.Nullable`1[int]:this (FullOpts)
-704 (-5.86 % of base) : 140310.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
-528 (-2.21 % of base) : 133652.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
-516 (-8.48 % of base) : 104267.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-376 (-51.09 % of base) : 181753.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-376 (-51.09 % of base) : 51934.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-368 (-18.00 % of base) : 303074.dasm - Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName (FullOpts)
-292 (-34.27 % of base) : 302845.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-276 (-11.82 % of base) : 73975.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-276 (-11.00 % of base) : 159388.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)
-252 (-13.02 % of base) : 73180.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:IterationsFromParameters(byref):uint (FullOpts)
-236 (-10.07 % of base) : 133578.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CheckSharedSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref,int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
-236 (-10.77 % of base) : 16750.dasm - System.Threading.Tasks.Task:RunContinuations(System.Object):this (FullOpts)
-232 (-21.89 % of base) : 227245.dasm - Internal.JitInterface.InstructionSetFlags:Set64BitInstructionSetVariants(int):this (FullOpts)
-216 (-6.05 % of base) : 128990.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrRundownTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
-204 (-20.90 % of base) : 181754.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToEquivalent(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
Top method regressions (percentages):
3432 (87.37 % of base) : 138223.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)
1452 (59.41 % of base) : 220540.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1412 (57.87 % of base) : 28122.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeNoLock(System.String,ubyte,ubyte):System.Type:this (FullOpts)
1876 (57.13 % of base) : 80395.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
284 (55.04 % of base) : 100268.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (FullOpts)
472 (53.88 % of base) : 199966.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
312 (50.32 % of base) : 2242.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
968 (49.79 % of base) : 189608.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
128 (48.48 % of base) : 239115.dasm - Microsoft.VisualBasic.CompilerServices.Operators:MultiplyUInt64(ulong,ulong):System.Object (FullOpts)
336 (47.46 % of base) : 180128.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder:GetPredecessors(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder]):this (FullOpts)
336 (47.46 % of base) : 50289.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder:GetPredecessors(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder]):this (FullOpts)
16 (44.44 % of base) : 147544.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
16 (44.44 % of base) : 147550.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
320 (43.96 % of base) : 178120.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
320 (43.96 % of base) : 48201.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
128 (43.24 % of base) : 147861.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:StartsXmlDoc(int):ubyte:this (FullOpts)
348 (43.07 % of base) : 74385.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CollectTupleFieldMemberName(System.String,int,int,byref) (FullOpts)
148 (41.57 % of base) : 183680.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
324 (40.70 % of base) : 133497.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CollectTupleFieldMemberName(System.String,int,int,byref) (FullOpts)
68 (40.48 % of base) : 196507.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
Top method improvements (percentages):
-376 (-51.09 % of base) : 181753.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-376 (-51.09 % of base) : 51934.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-72 (-42.86 % of base) : 235213.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
-72 (-41.86 % of base) : 235210.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
-100 (-37.88 % of base) : 267269.dasm - System.Numerics.BigInteger:Parse(System.ReadOnlySpan`1[ushort],System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-292 (-34.27 % of base) : 302845.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-28 (-30.43 % of base) : 248417.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
-56 (-27.45 % of base) : 267270.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
-56 (-25.45 % of base) : 267065.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-20 (-23.81 % of base) : 147569.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
-44 (-23.40 % of base) : 60277.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
-104 (-23.01 % of base) : 183045.dasm - Newtonsoft.Json.JsonTextReader:BigIntegerParse(System.String,System.Globalization.CultureInfo):System.Object (FullOpts)
-92 (-22.33 % of base) : 267058.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (FullOpts)
-8 (-22.22 % of base) : 314073.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
-232 (-21.89 % of base) : 227245.dasm - Internal.JitInterface.InstructionSetFlags:Set64BitInstructionSetVariants(int):this (FullOpts)
-204 (-20.90 % of base) : 181754.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToEquivalent(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-204 (-20.90 % of base) : 51935.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToEquivalent(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-92 (-20.54 % of base) : 267060.dasm - System.Numerics.BigInteger:Parse(System.String,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-96 (-19.05 % of base) : 249781.dasm - System.Data.Common.BigIntegerStorage:ConvertXmlToObject(System.String):System.Object:this (FullOpts)
-56 (-18.92 % of base) : 267267.dasm - System.Numerics.BigInteger:TryParse(System.String,System.IFormatProvider,byref):ubyte (FullOpts)
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 72410840 (overridden on cmd)
Total bytes of diff: 72460212 (overridden on cmd)
Total bytes of delta: 49372 (0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
712 : 71674.dasm (89.45 % of base)
572 : 161294.dasm (3.79 % of base)
508 : 117489.dasm (7.37 % of base)
308 : 142634.dasm (5.44 % of base)
264 : 138268.dasm (4.85 % of base)
256 : 134632.dasm (5.63 % of base)
252 : 138219.dasm (3.09 % of base)
252 : 106628.dasm (6.36 % of base)
232 : 138130.dasm (4.11 % of base)
224 : 97716.dasm (11.18 % of base)
212 : 138313.dasm (3.76 % of base)
204 : 156671.dasm (3.84 % of base)
192 : 138687.dasm (2.37 % of base)
184 : 142859.dasm (8.88 % of base)
184 : 142869.dasm (8.88 % of base)
184 : 98921.dasm (16.49 % of base)
180 : 100395.dasm (7.08 % of base)
180 : 66516.dasm (7.54 % of base)
176 : 138112.dasm (4.53 % of base)
176 : 138115.dasm (3.93 % of base)
Top file improvements (bytes):
-5000 : 161349.dasm (-32.95 % of base)
-2020 : 170577.dasm (-72.56 % of base)
-852 : 136049.dasm (-18.92 % of base)
-680 : 161933.dasm (-23.68 % of base)
-660 : 73615.dasm (-43.42 % of base)
-636 : 50494.dasm (-39.36 % of base)
-612 : 156876.dasm (-37.41 % of base)
-604 : 43018.dasm (-37.10 % of base)
-592 : 162045.dasm (-38.44 % of base)
-568 : 161975.dasm (-22.79 % of base)
-448 : 151589.dasm (-22.09 % of base)
-436 : 119135.dasm (-15.73 % of base)
-424 : 73499.dasm (-19.45 % of base)
-416 : 72362.dasm (-30.50 % of base)
-416 : 76163.dasm (-28.65 % of base)
-332 : 116282.dasm (-21.12 % of base)
-332 : 81305.dasm (-9.29 % of base)
-332 : 128351.dasm (-9.29 % of base)
-304 : 55549.dasm (-21.47 % of base)
-296 : 161779.dasm (-11.14 % of base)
69 total files with Code Size differences (31 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
712 (89.45 % of base) : 71674.dasm - System.Globalization.Tests.CharUnicodeInfoTestData:Parse(System.Collections.Generic.List`1[System.Globalization.Tests.CharUnicodeInfoTestCase],System.String) (Tier1-OSR)
572 (3.79 % of base) : 161294.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1-OSR)
508 (7.37 % of base) : 117489.dasm - System.Reflection.Emit.Tests.ILGeneratorEmit5:<MaxStackOverflowTest>g__GetCode|0_1(int):System.Reflection.MethodInfo (Tier1-OSR)
308 (5.44 % of base) : 142634.dasm - (dynamicClass):ReadMemoryStreamFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
264 (4.85 % of base) : 138268.dasm - (dynamicClass):ReadTypeWithAllPrimitivePropertiesFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
256 (5.63 % of base) : 134632.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier0-FullOpts)
252 (3.09 % of base) : 138219.dasm - (dynamicClass):ReadWithNullablesFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
252 (6.36 % of base) : 106628.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameDecode(ubyte[],ubyte,ubyte,ubyte,System.String,System.String,ubyte):System.String (Tier0-FullOpts)
232 (4.11 % of base) : 138130.dasm - (dynamicClass):ReadTupleOfintintintintintintintTupleOfintcd6ORBnmFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
224 (11.18 % of base) : 97716.dasm - System.Net.Http.Headers.RangeHeaderValue:ToString():System.String:this (Tier0-FullOpts)
212 (3.76 % of base) : 138313.dasm - (dynamicClass):ReadDMA_1FromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
204 (3.84 % of base) : 156671.dasm - System.Text.Tests.CaseConversionTests:SingleCharConversion() (Tier1-OSR)
192 (2.37 % of base) : 138687.dasm - (dynamicClass):ReadWithDuplicateNamesFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
184 (8.88 % of base) : 142869.dasm - (dynamicClass):WriteTypeWithEnumerableGenericMembersToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract) (FullOpts)
184 (8.88 % of base) : 142859.dasm - (dynamicClass):WriteTypeWithEnumerableMembersToXml(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.ClassDataContract) (FullOpts)
184 (16.49 % of base) : 98921.dasm - System.Net.Http.Headers.AltSvcHeaderParser:TryReadUnknownPercentEncodedAlpnProtocolName(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier0-FullOpts)
180 (7.54 % of base) : 66516.dasm - System.Formats.Cbor.Tests.DataModel.CborDocument:CompareTo(System.Object,System.Collections.IComparer):int:this (Tier0-FullOpts)
180 (7.08 % of base) : 100395.dasm - System.Reflection.InvokerEmitUtil:EmitCallAndReturnHandling(System.Reflection.Emit.ILGenerator,System.Reflection.MethodBase,ubyte,ubyte) (Instrumented Tier1)
176 (4.53 % of base) : 138112.dasm - (dynamicClass):ReadTupleOfintintintintintintFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
176 (3.93 % of base) : 138115.dasm - (dynamicClass):ReadTupleOfintintintintintintintFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
Top method improvements (bytes):
-5000 (-32.95 % of base) : 161349.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1-OSR)
-2020 (-72.56 % of base) : 170577.dasm - CoreXml.Test.XLinq.UndoManager:Undo():this (Tier1-OSR)
-852 (-18.92 % of base) : 136049.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1-OSR)
-680 (-23.68 % of base) : 161933.dasm - System.Threading.Channels.Tests.SingleReaderUnboundedChannelTests+<>c__DisplayClass5_0+<<Stress_TryWrite_TryRead>b__0>d:MoveNext():this (Tier1-OSR)
-660 (-43.42 % of base) : 73615.dasm - Interop+Sys:GetCwd():System.String (Tier1)
-636 (-39.36 % of base) : 50494.dasm - System.Data.AggregateNode:Eval(System.Data.DataRow,int):System.Object:this (Tier1-OSR)
-612 (-37.41 % of base) : 156876.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-604 (-37.10 % of base) : 43018.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-592 (-38.44 % of base) : 162045.dasm - System.Threading.Channels.Tests.ChannelTestBase+<>c__DisplayClass24_0+<<SingleProducerConsumer_ConcurrentReadWrite_Success>b__0>d:MoveNext():this (Tier1-OSR)
-568 (-22.79 % of base) : 161975.dasm - System.Threading.Channels.Tests.ChannelTestBase+<>c__DisplayClass25_0+<<SingleProducerConsumer_PingPong_Success>b__0>d:MoveNext():this (Tier1-OSR)
-448 (-22.09 % of base) : 151589.dasm - System.Xml.DocumentXPathNodeIterator_ElemDescendants:MoveNext():ubyte:this (Tier1-OSR)
-436 (-15.73 % of base) : 119135.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (Tier1-OSR)
-424 (-19.45 % of base) : 73499.dasm - System.Enum:ToString():System.String:this (Instrumented Tier1)
-416 (-30.50 % of base) : 72362.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (Instrumented Tier1)
-416 (-28.65 % of base) : 76163.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-332 (-9.29 % of base) : 81305.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-9.29 % of base) : 128351.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-332 (-21.12 % of base) : 116282.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (Tier1-OSR)
-304 (-21.47 % of base) : 55549.dasm - System.Data.Select:GetLinearFilteredRows(System.Data.Range):System.Data.DataRow[]:this (Tier1-OSR)
-296 (-11.14 % of base) : 161779.dasm - System.Threading.Channels.Tests.ChannelTestBase+<>c__DisplayClass25_0+<<SingleProducerConsumer_PingPong_Success>b__1>d:MoveNext():this (Tier1-OSR)
Top method regressions (percentages):
712 (89.45 % of base) : 71674.dasm - System.Globalization.Tests.CharUnicodeInfoTestData:Parse(System.Collections.Generic.List`1[System.Globalization.Tests.CharUnicodeInfoTestCase],System.String) (Tier1-OSR)
56 (30.43 % of base) : 71768.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
112 (28.57 % of base) : 81303.dasm - System.IO.Enumeration.FileSystemEnumerableFactory+<>c__DisplayClass2_0:<UserFiles>b__1(byref):ubyte:this (Instrumented Tier1)
76 (27.54 % of base) : 3460.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
44 (23.40 % of base) : 45835.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 25072.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 83306.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 103747.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 147035.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 11842.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 156836.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 169076.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 23154.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 99966.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
24 (20.69 % of base) : 23884.dasm - System.IO.Path:IsPathRooted(System.String):ubyte (Instrumented Tier1)
48 (20.69 % of base) : 3419.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Instrumented Tier1)
184 (16.49 % of base) : 98921.dasm - System.Net.Http.Headers.AltSvcHeaderParser:TryReadUnknownPercentEncodedAlpnProtocolName(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier0-FullOpts)
44 (15.49 % of base) : 5388.dasm - System.IO.PathInternal:RemoveRelativeSegments(System.String,int):System.String (Tier1)
44 (15.49 % of base) : 167491.dasm - System.IO.PathInternal:RemoveRelativeSegments(System.String,int):System.String (Tier1)
44 (15.49 % of base) : 22580.dasm - System.IO.PathInternal:RemoveRelativeSegments(System.String,int):System.String (Tier1)
Top method improvements (percentages):
-2020 (-72.56 % of base) : 170577.dasm - CoreXml.Test.XLinq.UndoManager:Undo():this (Tier1-OSR)
-660 (-43.42 % of base) : 73615.dasm - Interop+Sys:GetCwd():System.String (Tier1)
-636 (-39.36 % of base) : 50494.dasm - System.Data.AggregateNode:Eval(System.Data.DataRow,int):System.Object:this (Tier1-OSR)
-592 (-38.44 % of base) : 162045.dasm - System.Threading.Channels.Tests.ChannelTestBase+<>c__DisplayClass24_0+<<SingleProducerConsumer_ConcurrentReadWrite_Success>b__0>d:MoveNext():this (Tier1-OSR)
-612 (-37.41 % of base) : 156876.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-604 (-37.10 % of base) : 43018.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-236 (-33.71 % of base) : 11957.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)
-5000 (-32.95 % of base) : 161349.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (Tier1-OSR)
-416 (-30.50 % of base) : 72362.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (Instrumented Tier1)
-416 (-28.65 % of base) : 76163.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-188 (-24.61 % of base) : 3425.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Instrumented Tier1)
-220 (-24.23 % of base) : 149214.dasm - Test.Cryptography.ByteUtils:HexToByteArray(System.String):ubyte[] (Tier1-OSR)
-680 (-23.68 % of base) : 161933.dasm - System.Threading.Channels.Tests.SingleReaderUnboundedChannelTests+<>c__DisplayClass5_0+<<Stress_TryWrite_TryRead>b__0>d:MoveNext():this (Tier1-OSR)
-120 (-22.90 % of base) : 73638.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
-120 (-22.90 % of base) : 100788.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
-568 (-22.79 % of base) : 161975.dasm - System.Threading.Channels.Tests.ChannelTestBase+<>c__DisplayClass25_0+<<SingleProducerConsumer_PingPong_Success>b__0>d:MoveNext():this (Tier1-OSR)
-448 (-22.09 % of base) : 151589.dasm - System.Xml.DocumentXPathNodeIterator_ElemDescendants:MoveNext():ubyte:this (Tier1-OSR)
-304 (-21.47 % of base) : 55549.dasm - System.Data.Select:GetLinearFilteredRows(System.Data.Range):System.Data.DataRow[]:this (Tier1-OSR)
-228 (-21.43 % of base) : 110269.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)
-332 (-21.12 % of base) : 116282.dasm - System.Uri:CheckCanonical(ulong,byref,int,ushort):int:this (Tier1-OSR)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 125434348 (overridden on cmd)
Total bytes of diff: 125829592 (overridden on cmd)
Total bytes of delta: 395244 (0.32 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
3008 : 173610.dasm (15.76 % of base)
2892 : 257547.dasm (51.10 % of base)
2676 : 60848.dasm (3.10 % of base)
2628 : 60507.dasm (3.05 % of base)
2628 : 60669.dasm (2.99 % of base)
2176 : 179802.dasm (30.84 % of base)
1744 : 32317.dasm (8.26 % of base)
1716 : 239903.dasm (73.84 % of base)
1680 : 62048.dasm (1.29 % of base)
1664 : 196424.dasm (33.99 % of base)
1536 : 196699.dasm (33.95 % of base)
1488 : 94458.dasm (46.04 % of base)
1452 : 168138.dasm (59.41 % of base)
1388 : 54763.dasm (29.26 % of base)
1308 : 154143.dasm (42.63 % of base)
1288 : 186265.dasm (27.04 % of base)
1252 : 225011.dasm (45.83 % of base)
1236 : 62803.dasm (0.95 % of base)
1220 : 186184.dasm (34.15 % of base)
1112 : 244491.dasm (334.94 % of base)
Top file improvements (bytes):
-1348 : 202972.dasm (-5.25 % of base)
-1316 : 4369.dasm (-16.07 % of base)
-1124 : 203307.dasm (-3.48 % of base)
-1072 : 210756.dasm (-11.05 % of base)
-748 : 120373.dasm (-1.68 % of base)
-744 : 91702.dasm (-2.45 % of base)
-720 : 90466.dasm (-3.85 % of base)
-636 : 146743.dasm (-6.24 % of base)
-616 : 190573.dasm (-84.62 % of base)
-560 : 203580.dasm (-7.45 % of base)
-528 : 175549.dasm (-35.87 % of base)
-524 : 190591.dasm (-51.98 % of base)
-500 : 190386.dasm (-51.44 % of base)
-496 : 203761.dasm (-3.24 % of base)
-492 : 120527.dasm (-1.84 % of base)
-476 : 292467.dasm (-24.95 % of base)
-472 : 92995.dasm (-3.50 % of base)
-468 : 44361.dasm (-8.62 % of base)
-468 : 50288.dasm (-8.62 % of base)
-460 : 268356.dasm (-7.70 % of base)
81 total files with Code Size differences (43 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
3008 (15.76 % of base) : 173610.dasm - XmlCoreTest.Common.FilePathUtil+<GetDataFiles>d__19:MoveNext():ubyte:this (FullOpts)
2892 (51.10 % of base) : 257547.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
2676 (3.10 % of base) : 60848.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<XorObject_TestData>d__116:MoveNext():ubyte:this (FullOpts)
2628 (3.05 % of base) : 60507.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<AndObject_TestData>d__13:MoveNext():ubyte:this (FullOpts)
2628 (2.99 % of base) : 60669.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<OrObject_TestData>d__90:MoveNext():ubyte:this (FullOpts)
2176 (30.84 % of base) : 179802.dasm - System.Reflection.Metadata.Tests.BlobUtilitiesTests:GetUTF8ByteCount():this (FullOpts)
1744 (8.26 % of base) : 32317.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1716 (73.84 % of base) : 239903.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
1680 (1.29 % of base) : 62048.dasm - System.CodeDom.Compiler.Tests.CodeValidatorTests+<ValidateIdentifiers_Invalid_TestData>d__2:MoveNext():ubyte:this (FullOpts)
1664 (33.99 % of base) : 196424.dasm - System.Runtime.Serialization.Xml.XsdDataContractExporterTests.ExporterTypesTests:ReferenceTypes():this (FullOpts)
1536 (33.95 % of base) : 196699.dasm - System.Runtime.Serialization.Xml.XsdDataContractExporterTests.SurrogateTests+<>c__DisplayClass3_0:<SurrogateProvider_MemberData>b__0(System.String,System.Xml.Schema.XmlSchemaSet):this (FullOpts)
1488 (46.04 % of base) : 94458.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
1452 (59.41 % of base) : 168138.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1388 (29.26 % of base) : 54763.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1308 (42.63 % of base) : 154143.dasm - Kerberos.NET.Entities.KrbEncKdcRepPart:Encode(System.Security.Cryptography.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Asn1Tag):this (FullOpts)
1288 (27.04 % of base) : 186265.dasm - System.Tests.BitConverterTests:StartIndexBeyondLength() (FullOpts)
1252 (45.83 % of base) : 225011.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1236 (0.95 % of base) : 62803.dasm - System.CodeDom.Compiler.Tests.CSharpCodeGeneratorTests+<GenerateCodeFromType_TestData>d__25:MoveNext():ubyte:this (FullOpts)
1220 (34.15 % of base) : 186184.dasm - System.Tests.BitConverterTests:ValueArgumentNull() (FullOpts)
1112 (334.94 % of base) : 145127.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
Top method improvements (bytes):
-1348 (-5.25 % of base) : 202972.dasm - System.Tests.ArrayTests+<Sort_Array_Array_Generic_TestData>d__173:MoveNext():ubyte:this (FullOpts)
-1316 (-16.07 % of base) : 4369.dasm - NuGet.Frameworks.FrameworkConstants+CommonFrameworks:.cctor() (FullOpts)
-1124 (-3.48 % of base) : 203307.dasm - System.Tests.ArrayTests+<Sort_SZArray_TestData>d__159:MoveNext():ubyte:this (FullOpts)
-1072 (-11.05 % of base) : 210756.dasm - System.Tests.EnumTests:ToString_TryFormat(ubyte,ubyte) (FullOpts)
-748 (-1.68 % of base) : 120373.dasm - System.Globalization.Tests.CultureInfoConstructor+<Ctor_String_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-744 (-2.45 % of base) : 91702.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_True():this (FullOpts)
-720 (-3.85 % of base) : 90466.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_False():this (FullOpts)
-636 (-6.24 % of base) : 146743.dasm - System.Net.Http.Tests.HttpRuleParserTest:GetHostLength_SetOfValidHostStrings_MatchExpectation():this (FullOpts)
-616 (-84.62 % of base) : 190573.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
-560 (-7.45 % of base) : 203580.dasm - System.Tests.ArrayTests+<Sort_Array_Array_NonGeneric_TestData>d__172:MoveNext():ubyte:this (FullOpts)
-528 (-35.87 % of base) : 175549.dasm - System.Xml.ReaderSettingsTests.TCMaxSettings:v3():int:this (FullOpts)
-524 (-51.98 % of base) : 190591.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
-500 (-51.44 % of base) : 190386.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
-496 (-3.24 % of base) : 203761.dasm - System.Tests.ArrayTests+<Copy_SZArray_Reliable_TestData>d__56:MoveNext():ubyte:this (FullOpts)
-492 (-1.84 % of base) : 120527.dasm - System.Globalization.Tests.CultureInfoAll+<CultureInfo_TestData>d__102:MoveNext():ubyte:this (FullOpts)
-476 (-24.95 % of base) : 292467.dasm - System.Threading.Channels.Tests.ChannelTests+<DefaultWriteAsync_UsesWaitToWriteAsyncAndTryWrite>d__7:MoveNext():this (FullOpts)
-472 (-3.50 % of base) : 92995.dasm - System.Data.Tests.DataTableTest4:XmlTest10():this (FullOpts)
-468 (-8.62 % of base) : 44361.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,ubyte,ubyte,ubyte,int,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState],ubyte,Microsoft.CodeAnalysis.Location):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-468 (-8.62 % of base) : 50288.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,ubyte,ubyte,ubyte,int,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState],ubyte,Microsoft.CodeAnalysis.Location):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-460 (-7.70 % of base) : 268356.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
Top method regressions (percentages):
1112 (334.94 % of base) : 145127.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1112 (334.94 % of base) : 244491.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
436 (76.76 % of base) : 145572.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetLatinTextInput(int,int):Xunit.TheoryData (FullOpts)
1716 (73.84 % of base) : 239903.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
1452 (59.41 % of base) : 168138.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
896 (58.33 % of base) : 169751.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
68 (53.12 % of base) : 39196.dasm - Microsoft.Extensions.Logging.Console.ConsoleLoggerProvider:DoesConsoleSupportAnsi():ubyte (FullOpts)
856 (53.10 % of base) : 13661.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.QueryExpressionFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
444 (52.11 % of base) : 232182.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
2892 (51.10 % of base) : 257547.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
420 (50.48 % of base) : 145604.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetUnicodeText(int):Xunit.TheoryData (FullOpts)
892 (49.01 % of base) : 169363.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
128 (48.48 % of base) : 60344.dasm - Microsoft.VisualBasic.CompilerServices.Operators:MultiplyUInt64(ulong,ulong):System.Object (FullOpts)
344 (46.49 % of base) : 56076.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
1488 (46.04 % of base) : 94458.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
1252 (45.83 % of base) : 225011.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
268 (43.23 % of base) : 150090.dasm - System.Net.NameResolution.Tests.GetHostAddressesTest:get_IPAndIncorrectFamily_Data():Xunit.TheoryData`3[ubyte,System.Net.IPAddress,int] (FullOpts)
1308 (42.63 % of base) : 154143.dasm - Kerberos.NET.Entities.KrbEncKdcRepPart:Encode(System.Security.Cryptography.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Asn1Tag):this (FullOpts)
180 (42.06 % of base) : 122868.dasm - System.IO.Tests.FileSystemTest:get_TrailingSeparators():Xunit.TheoryData`1[System.String] (FullOpts)
148 (41.57 % of base) : 21482.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
Top method improvements (percentages):
-616 (-84.62 % of base) : 190573.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
-80 (-83.33 % of base) : 88992.dasm - System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
-72 (-81.82 % of base) : 185518.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
-68 (-80.95 % of base) : 180282.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
-68 (-80.95 % of base) : 180294.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
-432 (-72.48 % of base) : 206590.dasm - System.Tests.SingleTests_GenericMath:IsPow2Test() (FullOpts)
-524 (-51.98 % of base) : 190591.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
-500 (-51.44 % of base) : 190386.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
-356 (-49.44 % of base) : 212385.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Equality():this (FullOpts)
-376 (-48.45 % of base) : 212381.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Inequality():this (FullOpts)
-296 (-44.05 % of base) : 126425.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-412 (-38.15 % of base) : 190420.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeTest() (FullOpts)
-412 (-37.32 % of base) : 190426.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsRealNumberTest() (FullOpts)
-384 (-36.36 % of base) : 190730.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsImaginaryNumberTest() (FullOpts)
-364 (-36.11 % of base) : 190690.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeInfinityTest() (FullOpts)
-364 (-36.11 % of base) : 190640.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsPositiveInfinityTest() (FullOpts)
-528 (-35.87 % of base) : 175549.dasm - System.Xml.ReaderSettingsTests.TCMaxSettings:v3():int:this (FullOpts)
-72 (-35.29 % of base) : 193539.dasm - DataContractJsonSerializerTests+<>c:<DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract>b__179_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
-72 (-35.29 % of base) : 192670.dasm - DataContractJsonSerializerTests+<>c:<DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract>b__181_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
-72 (-35.29 % of base) : 192393.dasm - DataContractJsonSerializerTests+<>c:<DCJS_Regression195109>b__179_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
realworld.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11733820 (overridden on cmd)
Total bytes of diff: 11824852 (overridden on cmd)
Total bytes of delta: 91032 (0.78 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1876 : 22832.dasm (57.55 % of base)
1388 : 22561.dasm (29.26 % of base)
1068 : 8394.dasm (20.54 % of base)
936 : 29085.dasm (4.39 % of base)
924 : 1169.dasm (21.33 % of base)
908 : 1150.dasm (31.75 % of base)
812 : 1583.dasm (5.45 % of base)
744 : 4580.dasm (10.81 % of base)
712 : 17439.dasm (10.56 % of base)
708 : 10252.dasm (7.13 % of base)
704 : 30506.dasm (31.83 % of base)
672 : 9133.dasm (2.67 % of base)
576 : 21937.dasm (19.59 % of base)
552 : 1339.dasm (7.68 % of base)
552 : 29168.dasm (25.32 % of base)
552 : 30449.dasm (27.94 % of base)
520 : 20245.dasm (24.53 % of base)
504 : 24069.dasm (26.25 % of base)
492 : 22798.dasm (14.73 % of base)
480 : 14695.dasm (18.02 % of base)
Top file improvements (bytes):
-520 : 1331.dasm (-4.34 % of base)
-500 : 6722.dasm (-5.04 % of base)
-428 : 1329.dasm (-3.81 % of base)
-268 : 21463.dasm (-12.16 % of base)
-236 : 12139.dasm (-15.21 % of base)
-208 : 17298.dasm (-9.85 % of base)
-196 : 1655.dasm (-6.47 % of base)
-156 : 1299.dasm (-2.01 % of base)
-148 : 11973.dasm (-6.13 % of base)
-144 : 25237.dasm (-1.13 % of base)
-140 : 8026.dasm (-1.19 % of base)
-140 : 21994.dasm (-7.74 % of base)
-136 : 23793.dasm (-8.59 % of base)
-136 : 22244.dasm (-12.14 % of base)
-136 : 777.dasm (-7.74 % of base)
-132 : 28239.dasm (-13.92 % of base)
-132 : 23410.dasm (-7.50 % of base)
-128 : 19760.dasm (-5.84 % of base)
-124 : 17428.dasm (-6.20 % of base)
-120 : 23781.dasm (-7.33 % of base)
78 total files with Code Size differences (40 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
1876 (57.55 % of base) : 22832.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
1388 (29.26 % of base) : 22561.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1068 (20.54 % of base) : 8394.dasm - FSharp.Compiler.CheckExpressions:TcConst(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Syntax.SynConst):FSharp.Compiler.TypedTree+Const (FullOpts)
936 (4.39 % of base) : 29085.dasm - Interop+Sys:GetDriveType(System.String):int (FullOpts)
924 (21.33 % of base) : 1169.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref):this (FullOpts)
908 (31.75 % of base) : 1150.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref):this (FullOpts)
812 (5.45 % of base) : 1583.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
744 (10.81 % of base) : 4580.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:rulesForBothSoftWhiteAndHardWhite(FSharp.Compiler.LexFilter+TokenTup):ubyte:this (FullOpts)
712 (10.56 % of base) : 17439.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
708 (7.13 % of base) : 10252.dasm - FSharp.Compiler.AugmentWithHashCompare:CheckAugmentationAttribs(ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.TypedTree+Entity) (FullOpts)
704 (31.83 % of base) : 30506.dasm - System.Management.Automation.Runspaces.HelpV3_Format_Ps1Xml+<ViewsOf_ExtendedCmdletHelpInfo_ExamplesView>d__4:MoveNext():ubyte:this (FullOpts)
672 (2.67 % of base) : 9133.dasm - FSharp.Compiler.ConstraintSolver+SolveMemberConstraint@1402-8:Invoke(Microsoft.FSharp.Core.Unit):FSharp.Compiler.ErrorLogger+OperationResult`1[FSharp.Compiler.ConstraintSolver+TraitConstraintSolution]:this (FullOpts)
576 (19.59 % of base) : 21937.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeIsPatternExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundPattern,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
552 (7.68 % of base) : 1339.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CylinderPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
552 (25.32 % of base) : 29168.dasm - System.Management.Automation.LogProvider:LogContextToString(System.Management.Automation.LogContext):System.String (FullOpts)
552 (27.94 % of base) : 30449.dasm - System.Management.Automation.Runspaces.Help_Format_Ps1Xml+<ViewsOf_MamlCommandHelpInfo_Example>d__13:MoveNext():ubyte:this (FullOpts)
520 (24.53 % of base) : 20245.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
504 (26.25 % of base) : 24069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBinaryPattern(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryPatternSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (FullOpts)
492 (14.73 % of base) : 22798.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNode|449_5(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte,byref):this (FullOpts)
480 (18.02 % of base) : 14695.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexXmlDocCommentLeadingTrivia(byref):this (FullOpts)
Top method improvements (bytes):
-520 (-4.34 % of base) : 1331.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-500 (-5.04 % of base) : 6722.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)
-428 (-3.81 % of base) : 1329.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-268 (-12.16 % of base) : 21463.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-236 (-15.21 % of base) : 12139.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-208 (-9.85 % of base) : 17298.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckReceiverAndRuntimeSupportForSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-196 (-6.47 % of base) : 1655.dasm - BepuPhysics.CollisionDetection.CollisionTasks.MeshPairOverlapFinder`2[BepuPhysics.Collidables.Mesh,BepuPhysics.Collidables.Mesh]:FindLocalOverlaps(byref,int,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,float,byref):this (FullOpts)
-156 (-2.01 % of base) : 1299.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-148 (-6.13 % of base) : 11973.dasm - System.RuntimeType:IsEnumDefined(System.Object):ubyte:this (FullOpts)
-144 (-1.13 % of base) : 25237.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
-140 (-1.19 % of base) : 8026.dasm - FSharp.Compiler.CheckExpressions:TcExprUndelayed(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynExpr):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-140 (-7.74 % of base) : 21994.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSuppressNullableWarningExpression(Microsoft.CodeAnalysis.CSharp.Syntax.PostfixUnaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-136 (-12.14 % of base) : 22244.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)
-136 (-8.59 % of base) : 23793.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetGetResultMethod(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):ubyte:this (FullOpts)
-136 (-7.74 % of base) : 777.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-132 (-7.50 % of base) : 23410.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindPointerElementAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-132 (-13.92 % of base) : 28239.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-128 (-5.84 % of base) : 19760.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-124 (-6.20 % of base) : 17428.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
-120 (-7.33 % of base) : 23781.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetIsCompletedProperty(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):ubyte:this (FullOpts)
Top method regressions (percentages):
1876 (57.55 % of base) : 22832.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
320 (43.96 % of base) : 25311.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
216 (34.62 % of base) : 696.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
328 (33.33 % of base) : 20626.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
160 (33.33 % of base) : 786.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
704 (31.83 % of base) : 30506.dasm - System.Management.Automation.Runspaces.HelpV3_Format_Ps1Xml+<ViewsOf_ExtendedCmdletHelpInfo_ExamplesView>d__4:MoveNext():ubyte:this (FullOpts)
908 (31.75 % of base) : 1150.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref):this (FullOpts)
300 (29.41 % of base) : 26975.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
1388 (29.26 % of base) : 22561.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
552 (27.94 % of base) : 30449.dasm - System.Management.Automation.Runspaces.Help_Format_Ps1Xml+<ViewsOf_MamlCommandHelpInfo_Example>d__13:MoveNext():ubyte:this (FullOpts)
504 (26.25 % of base) : 24069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBinaryPattern(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryPatternSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (FullOpts)
552 (25.32 % of base) : 29168.dasm - System.Management.Automation.LogProvider:LogContextToString(System.Management.Automation.LogContext):System.String (FullOpts)
520 (24.53 % of base) : 20245.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
124 (24.41 % of base) : 22777.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)
180 (22.28 % of base) : 21489.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
156 (22.03 % of base) : 26562.dasm - Microsoft.CodeAnalysis.CodeGen.ArrayMethods+ArraySet:MakeParameters():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ArrayMethodParameterInfo]:this (FullOpts)
188 (21.76 % of base) : 25216.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
924 (21.33 % of base) : 1169.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref):this (FullOpts)
196 (21.30 % of base) : 12600.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn:MakeSchemaColumn():Microsoft.ML.DataViewSchema+DetachedColumn:this (FullOpts)
436 (21.21 % of base) : 20420.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:HasInstanceData(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):ubyte (FullOpts)
Top method improvements (percentages):
-92 (-16.91 % of base) : 15965.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
-8 (-16.67 % of base) : 29224.dasm - System.Management.Automation.LocationGlobber:IsSingleFileSystemAbsolutePath(System.String):ubyte (FullOpts)
-88 (-15.94 % of base) : 29111.dasm - System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
-72 (-15.52 % of base) : 14954.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseTypeCore>g__canBeNullableType|202_0(byref):ubyte:this (FullOpts)
-236 (-15.21 % of base) : 12139.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-32 (-14.04 % of base) : 21344.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-132 (-13.92 % of base) : 28239.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-8 (-12.50 % of base) : 17525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
-12 (-12.50 % of base) : 16984.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
-268 (-12.16 % of base) : 21463.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-104 (-12.15 % of base) : 13006.dasm - Microsoft.ML.Numeric.VectorUtils:DotProduct(byref,byref):float (FullOpts)
-136 (-12.14 % of base) : 22244.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)
-12 (-10.71 % of base) : 6365.dasm - FSharp.Compiler.TypedTree:loop@4500-39(Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+ArgReprInfo]],int):int (FullOpts)
-36 (-10.71 % of base) : 13313.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Options:set_StopWordsRemoverOptions(Microsoft.ML.Transforms.Text.IStopWordsRemoverOptions):this (FullOpts)
-208 (-9.85 % of base) : 17298.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckReceiverAndRuntimeSupportForSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-8 (-9.09 % of base) : 17681.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:HasErrors[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (FullOpts)
-32 (-9.09 % of base) : 29604.dasm - System.Management.Automation.LanguagePrimitives:TypeConverterPossiblyExists(System.Type):ubyte (FullOpts)
-52 (-8.90 % of base) : 28619.dasm - System.Management.Automation.Remoting.RemoteSessionNamedPipeServer:CreateIPCNamedPipeServerSingleton() (FullOpts)
-12 (-8.82 % of base) : 30045.dasm - System.Collections.Specialized.OrderedDictionary:get_Item(int):System.Object:this (FullOpts)
-40 (-8.77 % of base) : 25224.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitConversionToEnumUnderlyingType(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
windows arm64
Diffs are based on 1,401,964 contexts (263,527 MinOpts, 1,138,437 FullOpts).
MISSED contexts: base: 247 (0.02%), diff: 78,791 (5.32%)
Overall (+1,213,456 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
8,566,940 |
+77,272 |
benchmarks.run_pgo.windows.arm64.checked.mch |
34,767,736 |
-14,548 |
benchmarks.run_tiered.windows.arm64.checked.mch |
14,659,024 |
+30,500 |
coreclr_tests.run.windows.arm64.checked.mch |
271,490,652 |
+114,164 |
libraries.crossgen2.windows.arm64.checked.mch |
57,736,832 |
+190,396 |
libraries.pmi.windows.arm64.checked.mch |
64,354,940 |
+326,904 |
libraries_tests.run.windows.arm64.Release.mch |
5,836,220 |
-1,460 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
131,037,732 |
+375,968 |
realworld.run.windows.arm64.checked.mch |
12,344,168 |
+94,400 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
3,423,284 |
+19,860 |
MinOpts (-16 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run_pgo.windows.arm64.checked.mch |
13,026,864 |
-8 |
benchmarks.run_tiered.windows.arm64.checked.mch |
11,198,832 |
-8 |
coreclr_tests.run.windows.arm64.checked.mch |
138,292,568 |
+0 |
libraries.pmi.windows.arm64.checked.mch |
119,984 |
+0 |
libraries_tests.run.windows.arm64.Release.mch |
1,224,000 |
+0 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
13,059,280 |
+0 |
FullOpts (+1,213,472 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
8,566,404 |
+77,272 |
benchmarks.run_pgo.windows.arm64.checked.mch |
21,740,872 |
-14,540 |
benchmarks.run_tiered.windows.arm64.checked.mch |
3,460,192 |
+30,508 |
coreclr_tests.run.windows.arm64.checked.mch |
133,198,084 |
+114,164 |
libraries.crossgen2.windows.arm64.checked.mch |
57,735,196 |
+190,396 |
libraries.pmi.windows.arm64.checked.mch |
64,234,956 |
+326,904 |
libraries_tests.run.windows.arm64.Release.mch |
4,612,220 |
-1,460 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
117,978,452 |
+375,968 |
realworld.run.windows.arm64.checked.mch |
11,780,192 |
+94,400 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
3,422,272 |
+19,860 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
-32 (-15.38%) : 22613.dasm - System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
@@ -2,20 +2,22 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Formats.Cbor.Tests.Perf_CborReader>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Formats.Cbor.Tests.ECDsaCosePublicKey>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Formats.Cbor.CborReader>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 10, 20 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborReader>
+; V04 tmp1 [V04,T00] ( 10, 20 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborReader>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
; V06 tmp3 [V06,T05] ( 1, 2 ) struct (144) [fp+0x18] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[System.Security.Cryptography.ECParameters,System.Nullable`1[System.Security.Cryptography.HashAlgorithmName]]>
-; V07 tmp4 [V07,T02] ( 3, 5 ) ref -> x19 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V07 tmp4 [V07,T02] ( 3, 4.96) ref -> x19 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp7 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
@@ -24,7 +26,7 @@
;* V13 tmp10 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._object (fldOffset=0x0)" P-INDEP
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref single-def "field V05._index (fldOffset=0x8)" P-INDEP
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0xc)" P-INDEP
-; V16 tmp13 [V16,T03] ( 4, 2.50) ref -> x20 "field V08._object (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T03] ( 4, 2.48) ref -> x20 "field V08._object (fldOffset=0x0)" P-INDEP
;* V17 tmp14 [V17,T06] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP
; V18 tmp15 [V18,T04] ( 3, 2 ) int -> x21 "field V08._length (fldOffset=0xc)" P-INDEP
;* V19 tmp16 [V19,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP
@@ -51,71 +53,59 @@ G_M26905_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
; gcrRegs +[x1]
ldr x19, [x1, #0x10]
; gcrRegs +[x19]
- cbnz x19, G_M26905_IG04
+ cbnz x19, G_M26905_IG06
;; size=8 bbWeight=1 PerfScore 4.00
-G_M26905_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26905_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x19]
mov x20, xzr
; gcrRegs +[x20]
mov w21, wzr
- b G_M26905_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M26905_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20] +[x19]
- mov x20, x19
- ; gcrRegs +[x20]
- ldr w21, [x20, #0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M26905_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M26905_IG04: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w0, #1
- ; gcrRegs -[x0]
- strb w0, [x19, #0x45]
- mov w0, #3
- movz x1, #0xD1FFAB1E // code for System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- add x14, x19, #72
+ mov w14, #1
+ strb w14, [x0, #0x45]
+ add x14, x0, #72
; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
- stp wzr, w21, [x19, #0x50]
+ stp wzr, w21, [x0, #0x50]
mov w8, #3
- str w8, [x19, #0x40]
- strb wzr, [x19, #0x46]
+ str w8, [x0, #0x40]
+ strb wzr, [x0, #0x46]
mov w8, #1
- strb w8, [x19, #0x5C]
- str w8, [x19, #0x60]
+ strb w8, [x0, #0x5C]
+ str w8, [x0, #0x60]
add x8, fp, #24 // [V06 tmp3]
- mov x0, x19
- ; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x0 x19]
- ;; size=120 bbWeight=1 PerfScore 25.00
-G_M26905_IG06: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[x0]
+ ;; size=88 bbWeight=1 PerfScore 18.00
+G_M26905_IG05: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0xB8]
ldp x19, x20, [sp, #0xA8]
ldp fp, lr, [sp], #0xC0
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
+G_M26905_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[x19]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ ldr w21, [x20, #0x08]
+ b G_M26905_IG04
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
-; Total bytes of code 208, prolog size 44, PerfScore 46.25, instruction count 52, allocated bytes for code 208 (MethodHash=d59396e6) for method System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
+; Total bytes of code 176, prolog size 44, PerfScore 39.18, instruction count 44, allocated bytes for code 176 (MethodHash=d59396e6) for method System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
; ============================================================
Unwind Info:
@@ -126,7 +116,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-15.00%) : 7450.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.Canon,System.Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
@@ -2,67 +2,73 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 7, 7 ) ref -> x19 this class-hnd single-def <ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T03] ( 3, 3 ) int -> x1 single-def
-; V02 arg2 [V02,T04] ( 3, 3 ) int -> x2 single-def
-; V03 arg3 [V03,T05] ( 3, 3 ) int -> x3 single-def
-; V04 arg4 [V04,T01] ( 4, 4 ) int -> x20 single-def
-; V05 arg5 [V05,T02] ( 3, 3 ) ref -> x5 class-hnd single-def <ProtoBuf.Serializers.RepeatedSerializerStub>
+; V00 this [V00,T00] ( 7, 7 ) ref -> x0 this class-hnd single-def <ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T04] ( 3, 3 ) int -> x1 single-def
+; V02 arg2 [V02,T05] ( 3, 3 ) int -> x2 single-def
+; V03 arg3 [V03,T02] ( 4, 3.20) int -> x3 single-def
+; V04 arg4 [V04,T01] ( 4, 3.80) int -> x4 single-def
+; V05 arg5 [V05,T03] ( 3, 3 ) ref -> x5 class-hnd single-def <ProtoBuf.Serializers.RepeatedSerializerStub>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V07 tmp1 [V07,T06] ( 3, 2 ) int -> x1 "Inline return value spill temp"
+; V08 tmp2 [V08,T07] ( 2, 1.60) int -> x1 "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M3147_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov x19, x0
- ; gcrRegs +[x19]
- mov w20, w4
- ;; size=20 bbWeight=1 PerfScore 3.50
-G_M3147_IG02: ; bbWeight=1, gcrefRegs=80020 {x5 x19}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x5]
- add x14, x19, #8
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M3147_IG02: ; bbWeight=1, gcrefRegs=0021 {x0 x5}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0 x5]
+ add x14, x0, #8
; byrRegs +[x14]
mov x15, x5
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x5 x15]
; byrRegs -[x14]
- stp w1, w2, [x19, #0x10]
- mov w0, w3
- mov w1, w20
- movz x2, #0xD1FFAB1E // code for ProtoBuf.Meta.ValueMember:GetEffectiveCompatibilityLevel(int,int):int
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- stp w0, w20, [x19, #0x18]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M3147_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ stp w1, w2, [x0, #0x10]
+ cmp w3, #200
+ bgt G_M3147_IG06
+ ;; size=24 bbWeight=1 PerfScore 4.50
+G_M3147_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ mov w3, #200
+ mov w1, #240
+ cmp w4, #5
+ csel w1, w3, w1, ne
+ ;; size=16 bbWeight=0.80 PerfScore 1.60
+G_M3147_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ stp w1, w4, [x0, #0x18]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M3147_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M3147_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ sxtw w1, w3
+ b G_M3147_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.30
-; Total bytes of code 80, prolog size 12, PerfScore 17.00, instruction count 20, allocated bytes for code 80 (MethodHash=15a2f3b4) for method ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 10.90, instruction count 17, allocated bytes for code 68 (MethodHash=15a2f3b4) for method ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):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 : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -70,10 +76,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-24 (-14.63%) : 22578.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
@@ -2,33 +2,34 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; fully 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; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark>
-; V01 loc0 [V01,T06] ( 4, 6 ) int -> x1
+; V00 this [V00,T06] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark>
+; V01 loc0 [V01,T04] ( 4, 82.83) int -> x1
;* V02 loc1 [V02 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.Extensions.Primitives.StringValues+Enumerator>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.Extensions.Primitives.StringValues+Enumerator>
-; V07 tmp3 [V07,T08] ( 3, 5 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Object>
+; V07 tmp3 [V07,T07] ( 3, 4.96) ref -> x2 class-hnd single-def "Inlining Arg" <System.Object>
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V09 tmp5 [V09,T09] ( 4, 2.75) ref -> x2 class-hnd exact "Inline stloc first use temp" <System.String>
+; V09 tmp5 [V09,T08] ( 4, 3.02) ref -> x3 class-hnd exact "Inline stloc first use temp" <System.String>
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
-;* V11 tmp7 [V11,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp8 [V12,T01] ( 5, 80 ) int -> x0 "Inline stloc first use temp"
+;* V11 tmp7 [V11,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V12 tmp8 [V12,T00] ( 5,222.26) int -> x0 "Inline stloc first use temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
-; V14 tmp10 [V14,T00] ( 4, 81 ) ref -> x3 single-def "field V02._values (fldOffset=0x0)" P-INDEP
-; V15 tmp11 [V15,T05] ( 4, 23 ) ref -> registers "field V02._current (fldOffset=0x8)" P-INDEP
-; V16 tmp12 [V16,T03] ( 4, 29 ) int -> registers "field V02._index (fldOffset=0x10)" P-INDEP
-; V17 tmp13 [V17,T10] ( 3, 2 ) ref -> x3 "field V06._values (fldOffset=0x0)" P-INDEP
-; V18 tmp14 [V18,T11] ( 3, 2 ) ref -> x2 "field V06._current (fldOffset=0x8)" P-INDEP
-;* V19 tmp15 [V19,T12] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP
-; V20 cse0 [V20,T02] ( 2, 64 ) int -> x2 "CSE - aggressive"
+; V14 tmp10 [V14,T03] ( 4,103.81) ref -> x4 single-def "field V02._values (fldOffset=0x0)" P-INDEP
+; V15 tmp11 [V15,T02] ( 4,127.65) ref -> x3 "field V02._current (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T01] ( 4,171.65) int -> registers "field V02._index (fldOffset=0x10)" P-INDEP
+; V17 tmp13 [V17,T09] ( 3, 2 ) ref -> x4 "field V06._values (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T10] ( 3, 2 ) ref -> x3 "field V06._current (fldOffset=0x8)" P-INDEP
+;* V19 tmp15 [V19,T11] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x10)" P-INDEP
;
; Lcl frame size = 0
@@ -39,92 +40,79 @@ G_M4100_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M4100_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
mov w1, wzr
- ldr x0, [x0, #0x18]
- mov x2, x0
+ ldr x2, [x0, #0x18]
; gcrRegs +[x2]
- cbz x2, G_M4100_IG05
+ mov x3, x2
+ ; gcrRegs +[x3]
+ cbz x3, G_M4100_IG06
;; size=16 bbWeight=1 PerfScore 5.00
-G_M4100_IG03: ; bbWeight=0.25, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x2]
+G_M4100_IG03: ; bbWeight=0.50, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr x0, [x3]
movz x4, #0xD1FFAB1E
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
- cmp x3, x4
- bne G_M4100_IG05
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M4100_IG04: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
+ cmp x0, x4
+ bne G_M4100_IG06
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M4100_IG04: ; bbWeight=0.52, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2]
+ mov x4, xzr
+ ; gcrRegs +[x4]
+ ;; size=4 bbWeight=0.52 PerfScore 0.26
+G_M4100_IG05: ; bbWeight=1, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref
+ mov w0, wzr
+ b G_M4100_IG09
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M4100_IG06: ; bbWeight=0.48, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3-x4] +[x2]
mov x3, xzr
; gcrRegs +[x3]
- b G_M4100_IG06
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M4100_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2-x3] +[x0]
- mov x2, xzr
- ; gcrRegs +[x2]
- mov x3, x0
- ; gcrRegs +[x3]
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M4100_IG06: ; bbWeight=1, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov w0, wzr
- b G_M4100_IG08
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M4100_IG07: ; bbWeight=2, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2] +[x0]
- ldr w4, [x0, #0x08]
- add w1, w4, w1
- mov x4, x0
+ mov x4, x2
; gcrRegs +[x4]
- mov w0, w2
- ; gcrRegs -[x0]
- mov x2, x4
- ; gcrRegs +[x2]
- ;; size=20 bbWeight=2 PerfScore 10.00
-G_M4100_IG08: ; bbWeight=8, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x4]
- tbnz w0, #31, G_M4100_IG12
- ;; size=4 bbWeight=8 PerfScore 8.00
-G_M4100_IG09: ; bbWeight=32, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- cbz x3, G_M4100_IG11
- ldr w2, [x3, #0x08]
+ b G_M4100_IG05
+ ;; size=12 bbWeight=0.48 PerfScore 0.96
+G_M4100_IG07: ; bbWeight=80.00, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
- cmp w2, w0
- bls G_M4100_IG12
- ;; size=16 bbWeight=32 PerfScore 176.00
-G_M4100_IG10: ; bbWeight=16, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+ movn w2, #0
+ cbz x3, G_M4100_IG13
+ ;; size=8 bbWeight=80.00 PerfScore 120.00
+G_M4100_IG08: ; bbWeight=36.00, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref
+ ldr w0, [x3, #0x08]
+ add w1, w0, w1
+ mov w0, w2
+ ;; size=12 bbWeight=36.00 PerfScore 144.00
+G_M4100_IG09: ; bbWeight=80.00, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
+ tbnz w0, #31, G_M4100_IG13
+ ;; size=4 bbWeight=80.00 PerfScore 80.00
+G_M4100_IG10: ; bbWeight=51.20, gcrefRegs=0018 {x3 x4}, byrefRegs=0000 {}, byref, isz
+ cbz x4, G_M4100_IG07
+ ;; size=4 bbWeight=51.20 PerfScore 51.20
+G_M4100_IG11: ; bbWeight=40.96, gcrefRegs=0010 {x4}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x3]
+ ldr w3, [x4, #0x08]
+ cmp w3, w0
+ bls G_M4100_IG13
+ ;; size=12 bbWeight=40.96 PerfScore 184.32
+G_M4100_IG12: ; bbWeight=10.65, gcrefRegs=0010 {x4}, byrefRegs=0000 {}, byref
add w2, w0, #1
- add x4, x3, #16
- ; byrRegs +[x4]
- ldr x0, [x4, w0, UXTW #3]
- ; gcrRegs +[x0]
- b G_M4100_IG07
- ;; size=16 bbWeight=16 PerfScore 80.00
-G_M4100_IG11: ; bbWeight=4, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x2]
- ; byrRegs -[x4]
- movn w0, #0
- cbnz x2, G_M4100_IG14
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M4100_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2-x3]
+ add x3, x4, #16
+ ; byrRegs +[x3]
+ ldr x3, [x3, w0, UXTW #3]
+ ; gcrRegs +[x3]
+ ; byrRegs -[x3]
+ b G_M4100_IG08
+ ;; size=16 bbWeight=10.65 PerfScore 53.25
+G_M4100_IG13: ; bbWeight=9.83, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x3-x4]
mov w0, w1
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M4100_IG13: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=9.83 PerfScore 4.92
+G_M4100_IG14: ; bbWeight=9.83, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M4100_IG14: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x2-x3]
- mov w4, w0
- mov x0, x2
- ; gcrRegs +[x0]
- mov w2, w4
- ; gcrRegs -[x2]
- b G_M4100_IG07
- ;; size=16 bbWeight=2 PerfScore 5.00
+ ;; size=8 bbWeight=9.83 PerfScore 19.66
-; Total bytes of code 164, prolog size 8, PerfScore 298.25, instruction count 41, allocated bytes for code 164 (MethodHash=fc7aeffb) for method Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
+; Total bytes of code 140, prolog size 8, PerfScore 669.56, instruction count 35, allocated bytes for code 140 (MethodHash=fc7aeffb) for method Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -135,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+44 (+22.00%) : 10306.dasm - SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
@@ -2,48 +2,58 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T01] ( 4, 7 ) int -> x19 single-def
+; V00 arg0 [V00,T02] ( 4, 75.00) int -> x19 single-def
; V01 arg1 [V01,T04] ( 3, 3 ) int -> x20 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) float -> zero-ref single-def
;* V03 loc1 [V03 ] ( 0, 0 ) float -> zero-ref single-def
;* V04 loc2 [V04 ] ( 0, 0 ) float -> zero-ref single-def
-;* V05 loc3 [V05,T07] ( 0, 0 ) float -> zero-ref single-def
-;* V06 loc4 [V06,T08] ( 0, 0 ) float -> zero-ref single-def
-;* V07 loc5 [V07,T09] ( 0, 0 ) float -> zero-ref single-def
-;* V08 loc6 [V08,T10] ( 0, 0 ) float -> zero-ref single-def
-;* V09 loc7 [V09,T11] ( 0, 0 ) float -> zero-ref single-def
-; V10 loc8 [V10,T02] ( 3, 9 ) ref -> x20 class-hnd exact single-def <Algorithms.FractalRenderer+Render>
-; V11 loc9 [V11,T00] ( 4, 13 ) int -> x21
+; V05 loc3 [V05,T07] ( 2, 73.00) float -> d8 single-def
+; V06 loc4 [V06,T08] ( 2, 73.00) float -> d9 single-def
+; V07 loc5 [V07,T09] ( 2, 73.00) float -> d10 single-def
+; V08 loc6 [V08,T10] ( 2, 73.00) float -> d11 single-def
+; V09 loc7 [V09,T11] ( 2, 73.00) float -> d12 single-def
+; V10 loc8 [V10,T01] ( 3,145.00) ref -> x20 class-hnd exact single-def <Algorithms.FractalRenderer+Render>
+; V11 loc9 [V11,T00] ( 4,217.00) int -> x21
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T05] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Action`3[int,int,int]>
-; V14 tmp2 [V14,T06] ( 4, 3.50) ref -> x0
-; V15 tmp3 [V15,T03] ( 6, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Action`3[int,int,int]>
+; V14 tmp2 [V14,T06] ( 4, 3.52) ref -> x0
+; V15 tmp3 [V15,T03] ( 6, 6.24) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Action`3[int,int,int]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M35314_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x18]
- str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x50]!
+ stp d8, d9, [sp, #0x10]
+ stp d10, d11, [sp, #0x20]
+ str d12, [sp, #0x30]
+ stp x19, x20, [sp, #0x38]
+ str x21, [sp, #0x48]
mov fp, sp
mov w19, w0
mov w20, w1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M35314_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr s8, [@RWD00]
+ ldr s9, [@RWD04]
+ ldr s10, [@RWD08]
+ ldr s11, [@RWD12]
+ ldr s12, [@RWD16]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
cbnz x0, G_M35314_IG04
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M35314_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -57,7 +67,7 @@ G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr q16, [@RWD00]
+ ldr q16, [@RWD32]
str q16, [x0, #0x18]
movz x14, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x14, #0xD1FFAB1E LSL #16
@@ -66,7 +76,7 @@ G_M35314_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
- ;; size=56 bbWeight=0.50 PerfScore 5.25
+ ;; size=56 bbWeight=0.52 PerfScore 5.46
G_M35314_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w1, w20
movz x2, #0xD1FFAB1E // code for SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render
@@ -80,13 +90,13 @@ G_M35314_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
cmp w19, #0
ble G_M35314_IG06
;; size=40 bbWeight=1 PerfScore 8.50
-G_M35314_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M35314_IG05: ; bbWeight=72.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr s0, [@RWD16]
- ldr s1, [@RWD20]
- ldr s2, [@RWD24]
- ldr s3, [@RWD28]
- ldr s4, [@RWD32]
+ fmov s0, s8
+ fmov s1, s9
+ fmov s2, s10
+ fmov s3, s11
+ fmov s4, s12
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
ldr x1, [x20, #0x18]
@@ -95,34 +105,38 @@ G_M35314_IG05: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
add w21, w21, #1
cmp w21, w19
blt G_M35314_IG05
- ;; size=44 bbWeight=4 PerfScore 76.00
+ ;; size=44 bbWeight=72.00 PerfScore 828.00
G_M35314_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x20]
- ldr x21, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x30
+ ldr x21, [sp, #0x48]
+ ldp x19, x20, [sp, #0x38]
+ ldr d12, [sp, #0x30]
+ ldp d10, d11, [sp, #0x20]
+ ldp d8, d9, [sp, #0x10]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
-RWD00 dq 00007FFE8334D7A8h, 00007FFE8413ACE8h
-RWD16 dd BF9FDF3Ch ; -1.249
-RWD20 dd BF9F9DB2h ; -1.247
-RWD24 dd BD185F07h ; -0.0372
-RWD28 dd BD102DE1h ; -0.0352
-RWD32 dd 3727C5ADh ; 1e-05
+ ;; size=28 bbWeight=1 PerfScore 9.00
+RWD00 dd BF9FDF3Ch ; -1.249
+RWD04 dd BF9F9DB2h ; -1.247
+RWD08 dd BD185F07h ; -0.0372
+RWD12 dd BD102DE1h ; -0.0352
+RWD16 dd 3727C5ADh ; 1e-05
+RWD20 dd 00000000h, 00000000h, 00000000h
+RWD32 dq 00007FFE8334D7A8h, 00007FFE8413ACE8h
-; Total bytes of code 200, prolog size 16, PerfScore 104.75, instruction count 50, allocated bytes for code 200 (MethodHash=e9d8760d) for method SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
+; Total bytes of code 244, prolog size 28, PerfScore 873.96, instruction count 61, allocated bytes for code 244 (MethodHash=e9d8760d) for method SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -130,9 +144,11 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
- C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
- E4 end
+ D0 89 save_reg X#2 Z#9 (0x09); str x21, [sp, #72]
+ C8 07 save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56]
+ DD 06 save_freg X#4 Z#6 (0x06); str d12, [sp, #48]
+ E6 save_next
+ D8 02 save_fregp X#0 Z#2 (0x02); stp d8, d9, [sp, #16]
+ 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
E4 end
+28 (+28.00%) : 24329.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory
1[System.__Canon]:this (FullOpts)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T01] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02 ] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[System.__Canon]>
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V04 tmp3 [V04,T00] ( 6, 6.96) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V05 tmp4 [V05,T04] ( 2, 3 ) ref -> [fp+0x10] do-not-enreg[] single-def "field V02._object (fldOffset=0x0)" P-DEP
; V06 tmp5 [V06,T05] ( 2, 3 ) int -> [fp+0x18] do-not-enreg[] "field V02._index (fldOffset=0x8)" P-DEP
; V07 tmp6 [V07,T06] ( 2, 3 ) int -> [fp+0x1C] do-not-enreg[] "field V02._length (fldOffset=0xc)" P-DEP
-;* V08 rat0 [V08,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V08 rat0 [V08,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 24
@@ -32,12 +34,23 @@ G_M44448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=24 bbWeight=1 PerfScore 5.00
G_M44448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldp xzr, x0, [x19]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x28]
+ cbz x0, G_M44448_IG07
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M44448_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M44448_IG04
+ cbz x0, G_M44448_IG08
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M44448_IG04: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
cmp w1, #10
- blo G_M44448_IG04
+ blo G_M44448_IG08
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
+G_M44448_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
str x0, [fp, #0x10] // [V05 tmp4]
str wzr, [fp, #0x18] // [V06 tmp5]
mov w0, #10
@@ -45,13 +58,19 @@ G_M44448_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
str w0, [fp, #0x1C] // [V07 tmp6]
ldp x0, x1, [fp, #0x10] // [V02 tmp1], [V02 tmp1+0x08]
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 16.00
-G_M44448_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=20 bbWeight=1 PerfScore 6.50
+G_M44448_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x28]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M44448_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M44448_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x0]
+ ldr x0, [x19, #0x08]
+ ; gcrRegs +[x0]
+ cbnz x0, G_M44448_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.80
+G_M44448_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
@@ -61,7 +80,7 @@ G_M44448_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 100, prolog size 20, PerfScore 25.00, instruction count 25, allocated bytes for code 100 (MethodHash=a215525f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 128, prolog size 20, PerfScore 34.66, instruction count 32, allocated bytes for code 128 (MethodHash=a215525f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -72,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 32 (0x00020) Actual length = 128 (0x000080)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+33.33%) : 22585.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan
1[System.__Canon]:this (FullOpts)
@@ -2,22 +2,24 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T01] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]>
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V04 tmp3 [V04,T00] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V04 tmp3 [V04,T00] ( 6, 6.96) ref -> x0 class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V05 tmp4 [V05,T04] ( 2, 2 ) byref -> x0 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V06 tmp5 [V06,T05] ( 2, 2 ) int -> x1 "field V02._length (fldOffset=0x8)" P-INDEP
-;* V07 rat0 [V07,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T03] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
;* V08 rat1 [V08,T06] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T02] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -30,24 +32,41 @@ G_M3040_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M3040_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldp xzr, x0, [x19]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x30]
+ cbz x0, G_M3040_IG07
+ ;; size=20 bbWeight=1 PerfScore 13.00
+G_M3040_IG03: ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M3040_IG04
+ cbz x0, G_M3040_IG08
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M3040_IG04: ; bbWeight=0.48, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
cmp w1, #10
- blo G_M3040_IG04
+ blo G_M3040_IG08
+ ;; size=12 bbWeight=0.48 PerfScore 2.16
+G_M3040_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
mov w1, #10
- ;; size=28 bbWeight=1 PerfScore 10.50
-G_M3040_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=8 bbWeight=1 PerfScore 1.00
+G_M3040_IG06: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-G_M3040_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M3040_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[x0]
+ ldr x0, [x19, #0x08]
+ ; gcrRegs +[x0]
+ cbnz x0, G_M3040_IG04
+ ;; size=8 bbWeight=0.20 PerfScore 0.80
+G_M3040_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -56,7 +75,7 @@ G_M3040_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 16, PerfScore 18.50, instruction count 21, allocated bytes for code 84 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 112, prolog size 16, PerfScore 28.16, instruction count 28, allocated bytes for code 112 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
@@ -67,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.windows.arm64.checked.mch
-20 (-14.71%) : 63469.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,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; fully 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
;
-; V00 this [V00,T02] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V00 this [V00,T01] ( 4, 4 ) ref -> x19 this class-hnd single-def <System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
; V01 arg1 [V01,T06] ( 3, 3 ) int -> x1 single-def
; V02 arg2 [V02,T00] ( 3, 6 ) byref -> x2 single-def
-; V03 arg3 [V03,T01] ( 5, 4 ) ref -> x3 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
+; V03 arg3 [V03,T02] ( 4, 4 ) ref -> x3 class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableDictionary`2+HashBucket[System.__Canon,System.__Canon]]>
; V04 arg4 [V04,T04] ( 3, 3 ) byref -> x4 single-def
; V05 arg5 [V05,T05] ( 3, 3 ) byref -> x5 single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V08 rat0 [V08,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
+;* V08 rat0 [V08,T07] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V09 rat1 [V09,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V10 rat2 [V10,T03] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
+;* V10 rat2 [V10,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -33,16 +35,8 @@ G_M55135_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M55135_IG02: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref, isz
; gcrRegs +[x3]
; byrRegs +[x2 x4-x5]
- ldr x0, [x19]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x10]
- cbz x0, G_M55135_IG06
- ;; size=20 bbWeight=1 PerfScore 13.00
-G_M55135_IG03: ; bbWeight=0.80, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref, isz
- cbz x3, G_M55135_IG07
- ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M55135_IG04: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, byref
+ ldr xzr, [x19]
+ cbz x3, G_M55135_IG04
mov x0, x19
; gcrRegs +[x0]
mov x6, x5
@@ -54,21 +48,16 @@ G_M55135_IG04: ; bbWeight=1, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M55135_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=40 bbWeight=1 PerfScore 10.50
+G_M55135_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
br x7
; gcr arg pop 0
;; size=12 bbWeight=1 PerfScore 4.00
-G_M55135_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0034 {x2 x4 x5}, gcvars, byref, isz
- ; gcrRegs -[x0]
- ; byrRegs -[x6] +[x4]
- cbnz x3, G_M55135_IG04
- ;; size=4 bbWeight=0.20 PerfScore 0.20
-G_M55135_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x3]
- ; byrRegs -[x2 x4-x5]
+G_M55135_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x3]
+ ; byrRegs -[x2 x5-x6]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -86,7 +75,7 @@ G_M55135_IG07: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 20, PerfScore 28.50, instruction count 34, allocated bytes for code 136 (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 116, prolog size 20, PerfScore 18.50, instruction count 29, allocated bytes for code 116 (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)
; ============================================================
Unwind Info:
@@ -97,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 15133.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M3216_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
cmp x1, x0
beq G_M3216_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M3216_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3216_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M3216_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -52,7 +52,7 @@ G_M3216_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -63,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 15134.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M53339_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M53339_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M53339_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M53339_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M53339_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x30]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M53339_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+9.26%) : 41757.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
@@ -9,31 +9,30 @@
; 2 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 7 ) ref -> x19 class-hnd single-def <System.IFormatProvider>
+; V00 arg0 [V00,T05] ( 7, 69.95) ref -> x19 class-hnd single-def <System.IFormatProvider>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T14] ( 3, 3 ) ref -> x19 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V03 tmp2 [V03,T03] ( 6, 6 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V04 tmp3 [V04,T09] ( 2, 4 ) ref -> x2 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V05 tmp4 [V05,T04] ( 6, 6 ) ref -> x2
-; V06 tmp5 [V06,T10] ( 2, 4 ) ref -> x0 single-def "CASTCLASS eval op1"
-; V07 tmp6 [V07,T01] ( 6, 9 ) ref -> x2 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V08 tmp7 [V08,T05] ( 3, 6 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+; V02 tmp1 [V02,T17] ( 3, 20.59) ref -> x19 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V03 tmp2 [V03,T03] ( 6, 80.58) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
+; V04 tmp3 [V04,T04] ( 3, 72.96) ref -> x20 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V05 tmp4 [V05,T01] ( 6, 95.58) ref -> x20
+; V06 tmp5 [V06,T08] ( 2, 58.37) ref -> x0 single-def "CASTCLASS eval op1"
+; V07 tmp6 [V07,T00] ( 5,109.44) ref -> x20 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V08 tmp7 [V08,T15] ( 3, 29.74) ref -> x19 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp9 [V10,T18] ( 3, 2 ) ref -> x2 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V10 tmp9 [V10,T16] ( 3, 23.35) ref -> x20 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V12 tmp11 [V12,T20] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
-; V13 tmp12 [V13,T21] ( 3, 0 ) long -> x20 "fgMakeTemp is creating a new local variable"
-; V14 tmp13 [V14,T19] ( 4, 0 ) ref -> x2 class-hnd single-def "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V15 tmp14 [V15,T15] ( 3, 3 ) ref -> x2 class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.NumberFormatInfo>
-; V16 tmp15 [V16,T11] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V17 tmp16 [V17,T02] ( 12, 8 ) ref -> x0
-; V18 tmp17 [V18,T12] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V19 tmp18 [V19,T13] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V20 cse0 [V20,T16] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V21 cse1 [V21,T17] ( 4, 2.50) long -> x20 "CSE - aggressive"
-; V22 rat0 [V22,T08] ( 3, 4 ) byref -> x19 "TLS field access"
-; V23 rat1 [V23,T06] ( 3, 6 ) long -> x0 "TLS access"
-; V24 rat2 [V24,T07] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V12 tmp11 [V12,T19] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V13 tmp12 [V13,T20] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V14 tmp13 [V14,T18] ( 4, 0 ) ref -> x20 class-hnd single-def "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V15 tmp14 [V15,T13] ( 3, 35.02) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.NumberFormatInfo>
+; V16 tmp15 [V16,T10] ( 2, 46.69) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V17 tmp16 [V17,T02] ( 12, 93.39) ref -> x0
+; V18 tmp17 [V18,T11] ( 2, 46.69) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V19 tmp18 [V19,T12] ( 2, 46.69) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V20 cse0 [V20,T14] ( 3, 35.02) long -> x1 "CSE - aggressive"
+; V21 rat0 [V21,T09] ( 3, 46.69) byref -> x19 "TLS field access"
+; V22 rat1 [V22,T06] ( 3, 70.04) long -> x0 "TLS access"
+; V23 rat2 [V23,T07] ( 3, 70.04) long -> x0 "ThreadStaticBlockBase access"
;
; Lcl frame size = 0
@@ -45,7 +44,9 @@ G_M22436_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=16 bbWeight=1 PerfScore 3.00
G_M22436_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M22436_IG14
+ cbz x19, G_M22436_IG26
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M22436_IG03: ; bbWeight=25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -54,34 +55,54 @@ G_M22436_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M22436_IG05
+ cbz x0, G_M22436_IG08
+ ;; size=24 bbWeight=25 PerfScore 100.00
+G_M22436_IG04: ; bbWeight=13, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x61]
- cbnz w1, G_M22436_IG05
+ cbnz w1, G_M22436_IG08
+ ;; size=8 bbWeight=13 PerfScore 52.00
+G_M22436_IG05: ; bbWeight=6.76, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
ldr x19, [x0, #0x18]
- cbnz x19, G_M22436_IG04
+ ; gcrRegs +[x19]
+ cbnz x19, G_M22436_IG25
+ ;; size=8 bbWeight=6.76 PerfScore 27.04
+G_M22436_IG06: ; bbWeight=5.41, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x10]
- ;; size=56 bbWeight=1 PerfScore 22.00
-G_M22436_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=5.41 PerfScore 48.67
+G_M22436_IG07: ; bbWeight=5.41, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M22436_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- b G_M22436_IG12
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M22436_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=5.41 PerfScore 16.22
+G_M22436_IG08: ; bbWeight=18.24, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x0] +[x19]
ldr x0, [x19]
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- cmp x0, x20
- csel x2, x19, xzr, eq
- ; gcrRegs +[x2]
- cbnz x2, G_M22436_IG11
+ movz x11, #0xD1FFAB1E
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ beq G_M22436_IG10
+ ;; size=24 bbWeight=18.24 PerfScore 109.44
+G_M22436_IG09: ; bbWeight=9.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ b G_M22436_IG11
+ ;; size=8 bbWeight=9.12 PerfScore 13.68
+G_M22436_IG10: ; bbWeight=9.12, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=9.12 PerfScore 4.56
+G_M22436_IG11: ; bbWeight=18.24, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M22436_IG22
+ ;; size=4 bbWeight=18.24 PerfScore 18.24
+G_M22436_IG12: ; bbWeight=14.59, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
mov x0, x19
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -91,100 +112,119 @@ G_M22436_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x2, [x11]
- ; gcrRegs -[x2]
blr x2
; gcrRegs -[x19]
; gcr arg pop 0
- mov x2, x0
- ; gcrRegs +[x2]
- cbz x2, G_M22436_IG07
- ;; size=72 bbWeight=1 PerfScore 15.50
-G_M22436_IG06: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ mov x20, x0
+ ; gcrRegs +[x20]
+ cbz x20, G_M22436_IG15
+ ;; size=44 bbWeight=14.59 PerfScore 131.33
+G_M22436_IG13: ; bbWeight=7.30, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x2]
- cmp x0, x20
- csel x2, x2, xzr, eq
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M22436_IG07: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M22436_IG11
- ldr x2, [xpr, #0x58]
- ; gcrRegs -[x2]
- ldr x0, [x2, #0x10]
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M22436_IG15
+ ;; size=24 bbWeight=7.30 PerfScore 43.78
+G_M22436_IG14: ; bbWeight=3.65, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=3.65 PerfScore 1.82
+G_M22436_IG15: ; bbWeight=14.59, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M22436_IG22
+ ;; size=4 bbWeight=14.59 PerfScore 14.59
+G_M22436_IG16: ; bbWeight=11.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x0, [xpr, #0x58]
+ ldr x0, [x0, #0x10]
ldr w1, [x0, #0xD0]
cmp w1, #2
- blt G_M22436_IG16
+ blt G_M22436_IG28
+ ;; size=20 bbWeight=11.67 PerfScore 122.57
+G_M22436_IG17: ; bbWeight=11.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0xD8]
ldr x0, [x0, #0x10]
- cbz x0, G_M22436_IG16
+ cbz x0, G_M22436_IG28
ldr x0, [x0]
; byrRegs +[x0]
add x19, x0, #16
; byrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 22.00
-G_M22436_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ;; size=20 bbWeight=11.67 PerfScore 122.57
+G_M22436_IG18: ; bbWeight=11.67, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- cbnz x0, G_M22436_IG09
+ cbnz x0, G_M22436_IG20
+ ;; size=8 bbWeight=11.67 PerfScore 46.69
+G_M22436_IG19: ; bbWeight=11.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldapr x0, [x1]
- cbnz x0, G_M22436_IG09
+ ; gcrRegs +[x0]
+ cbnz x0, G_M22436_IG20
sub x0, x1, #32
; gcrRegs -[x0]
ldapr x0, [x0]
; gcrRegs +[x0]
- cbz x0, G_M22436_IG17
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M22436_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
+ cbz x0, G_M22436_IG29
+ ;; size=32 bbWeight=11.67 PerfScore 116.74
+G_M22436_IG20: ; bbWeight=11.67, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x61]
- cbnz w1, G_M22436_IG18
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M22436_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0, #0x18]
- ; gcrRegs +[x2]
- cbz x2, G_M22436_IG18
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M22436_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ cbnz w1, G_M22436_IG30
+ ;; size=8 bbWeight=11.67 PerfScore 46.69
+G_M22436_IG21: ; bbWeight=11.67, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x20, [x0, #0x18]
+ ; gcrRegs +[x20]
+ cbz x20, G_M22436_IG30
+ ;; size=8 bbWeight=11.67 PerfScore 46.69
+G_M22436_IG22: ; bbWeight=18.24, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x19, x2
+ mov x19, x20
; gcrRegs +[x19]
...
+40 (+9.26%) : 39372.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
@@ -9,31 +9,30 @@
; 2 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 7 ) ref -> x19 class-hnd single-def <System.IFormatProvider>
+; V00 arg0 [V00,T04] ( 7, 47.63) ref -> x19 class-hnd single-def <System.IFormatProvider>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T14] ( 3, 3 ) ref -> x19 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V03 tmp2 [V03,T03] ( 6, 6 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V04 tmp3 [V04,T09] ( 2, 4 ) ref -> x2 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V05 tmp4 [V05,T04] ( 6, 6 ) ref -> x2
-; V06 tmp5 [V06,T10] ( 2, 4 ) ref -> x0 single-def "CASTCLASS eval op1"
-; V07 tmp6 [V07,T01] ( 6, 9 ) ref -> x2 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V08 tmp7 [V08,T05] ( 3, 6 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+; V02 tmp1 [V02,T17] ( 3, 14.06) ref -> x19 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V03 tmp2 [V03,T03] ( 6, 53.72) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
+; V04 tmp3 [V04,T05] ( 3, 48.64) ref -> x20 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V05 tmp4 [V05,T01] ( 6, 63.72) ref -> x20
+; V06 tmp5 [V06,T08] ( 2, 38.91) ref -> x0 single-def "CASTCLASS eval op1"
+; V07 tmp6 [V07,T00] ( 5, 72.96) ref -> x20 class-hnd "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V08 tmp7 [V08,T15] ( 3, 19.83) ref -> x19 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
-; V10 tmp9 [V10,T18] ( 3, 2 ) ref -> x2 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V10 tmp9 [V10,T16] ( 3, 15.56) ref -> x20 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V11 tmp10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V12 tmp11 [V12,T20] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
-; V13 tmp12 [V13,T21] ( 3, 0 ) long -> x20 "fgMakeTemp is creating a new local variable"
-; V14 tmp13 [V14,T19] ( 4, 0 ) ref -> x2 class-hnd single-def "spilling QMark2" <System.Globalization.NumberFormatInfo>
-; V15 tmp14 [V15,T15] ( 3, 3 ) ref -> x2 class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.NumberFormatInfo>
-; V16 tmp15 [V16,T11] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V17 tmp16 [V17,T02] ( 12, 8 ) ref -> x0
-; V18 tmp17 [V18,T12] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V19 tmp18 [V19,T13] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
-; V20 cse0 [V20,T16] ( 3, 3 ) long -> x1 "CSE - aggressive"
-; V21 cse1 [V21,T17] ( 4, 2.50) long -> x20 "CSE - aggressive"
-; V22 rat0 [V22,T08] ( 3, 4 ) byref -> x19 "TLS field access"
-; V23 rat1 [V23,T06] ( 3, 6 ) long -> x0 "TLS access"
-; V24 rat2 [V24,T07] ( 3, 6 ) long -> x0 "ThreadStaticBlockBase access"
+; V12 tmp11 [V12,T19] ( 3, 0 ) ref -> x1 single-def "CASTCLASS eval op1"
+; V13 tmp12 [V13,T20] ( 3, 0 ) long -> x2 "fgMakeTemp is creating a new local variable"
+; V14 tmp13 [V14,T18] ( 4, 0 ) ref -> x20 class-hnd single-def "spilling QMark2" <System.Globalization.NumberFormatInfo>
+; V15 tmp14 [V15,T13] ( 3, 23.35) ref -> x20 class-hnd exact single-def "Inline stloc first use temp" <System.Globalization.NumberFormatInfo>
+; V16 tmp15 [V16,T10] ( 2, 31.13) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V17 tmp16 [V17,T02] ( 12, 62.26) ref -> x0
+; V18 tmp17 [V18,T11] ( 2, 31.13) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V19 tmp18 [V19,T12] ( 2, 31.13) ref -> x0 class-hnd single-def "dup spill" <System.Globalization.CultureInfo>
+; V20 cse0 [V20,T14] ( 3, 23.35) long -> x1 "CSE - aggressive"
+; V21 rat0 [V21,T09] ( 3, 31.13) byref -> x19 "TLS field access"
+; V22 rat1 [V22,T06] ( 3, 46.69) long -> x0 "TLS access"
+; V23 rat2 [V23,T07] ( 3, 46.69) long -> x0 "ThreadStaticBlockBase access"
;
; Lcl frame size = 0
@@ -45,7 +44,9 @@ G_M22436_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=16 bbWeight=1 PerfScore 3.00
G_M22436_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M22436_IG14
+ cbz x19, G_M22436_IG26
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M22436_IG03: ; bbWeight=16.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -54,34 +55,54 @@ G_M22436_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M22436_IG05
+ cbz x0, G_M22436_IG08
+ ;; size=24 bbWeight=16.67 PerfScore 66.67
+G_M22436_IG04: ; bbWeight=8.67, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x61]
- cbnz w1, G_M22436_IG05
+ cbnz w1, G_M22436_IG08
+ ;; size=8 bbWeight=8.67 PerfScore 34.67
+G_M22436_IG05: ; bbWeight=4.51, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
ldr x19, [x0, #0x18]
- cbnz x19, G_M22436_IG04
+ ; gcrRegs +[x19]
+ cbnz x19, G_M22436_IG25
+ ;; size=8 bbWeight=4.51 PerfScore 18.03
+G_M22436_IG06: ; bbWeight=3.61, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
ldr x1, [x0]
ldr x1, [x1, #0x58]
ldr x1, [x1, #0x10]
- ;; size=56 bbWeight=1 PerfScore 22.00
-G_M22436_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=3.61 PerfScore 32.45
+G_M22436_IG07: ; bbWeight=3.61, epilog, nogc, extend
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
br x1
; gcr arg pop 0
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M22436_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0]
- b G_M22436_IG12
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M22436_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=3.61 PerfScore 10.82
+G_M22436_IG08: ; bbWeight=12.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x0] +[x19]
ldr x0, [x19]
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- cmp x0, x20
- csel x2, x19, xzr, eq
- ; gcrRegs +[x2]
- cbnz x2, G_M22436_IG11
+ movz x11, #0xD1FFAB1E
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ cmp x0, x11
+ beq G_M22436_IG10
+ ;; size=24 bbWeight=12.16 PerfScore 72.96
+G_M22436_IG09: ; bbWeight=6.08, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ b G_M22436_IG11
+ ;; size=8 bbWeight=6.08 PerfScore 9.12
+G_M22436_IG10: ; bbWeight=6.08, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x20, x19
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=6.08 PerfScore 3.04
+G_M22436_IG11: ; bbWeight=12.16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M22436_IG22
+ ;; size=4 bbWeight=12.16 PerfScore 12.16
+G_M22436_IG12: ; bbWeight=9.73, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
mov x0, x19
; gcrRegs +[x0]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -91,100 +112,119 @@ G_M22436_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x2, [x11]
- ; gcrRegs -[x2]
blr x2
; gcrRegs -[x19]
; gcr arg pop 0
- mov x2, x0
- ; gcrRegs +[x2]
- cbz x2, G_M22436_IG07
- ;; size=72 bbWeight=1 PerfScore 15.50
-G_M22436_IG06: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ mov x20, x0
+ ; gcrRegs +[x20]
+ cbz x20, G_M22436_IG15
+ ;; size=44 bbWeight=9.73 PerfScore 87.55
+G_M22436_IG13: ; bbWeight=4.86, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x2]
- cmp x0, x20
- csel x2, x2, xzr, eq
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M22436_IG07: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M22436_IG11
- ldr x2, [xpr, #0x58]
- ; gcrRegs -[x2]
- ldr x0, [x2, #0x10]
+ ldr x0, [x20]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
+ beq G_M22436_IG15
+ ;; size=24 bbWeight=4.86 PerfScore 29.18
+G_M22436_IG14: ; bbWeight=2.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
+ mov x20, xzr
+ ; gcrRegs +[x20]
+ ;; size=4 bbWeight=2.43 PerfScore 1.22
+G_M22436_IG15: ; bbWeight=9.73, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M22436_IG22
+ ;; size=4 bbWeight=9.73 PerfScore 9.73
+G_M22436_IG16: ; bbWeight=7.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
+ ldr x0, [xpr, #0x58]
+ ldr x0, [x0, #0x10]
ldr w1, [x0, #0xD0]
cmp w1, #2
- blt G_M22436_IG16
+ blt G_M22436_IG28
+ ;; size=20 bbWeight=7.78 PerfScore 81.72
+G_M22436_IG17: ; bbWeight=7.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0xD8]
ldr x0, [x0, #0x10]
- cbz x0, G_M22436_IG16
+ cbz x0, G_M22436_IG28
ldr x0, [x0]
; byrRegs +[x0]
add x19, x0, #16
; byrRegs +[x19]
- ;; size=44 bbWeight=1 PerfScore 22.00
-G_M22436_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ ;; size=20 bbWeight=7.78 PerfScore 81.72
+G_M22436_IG18: ; bbWeight=7.78, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs -[x0]
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- cbnz x0, G_M22436_IG09
+ cbnz x0, G_M22436_IG20
+ ;; size=8 bbWeight=7.78 PerfScore 31.13
+G_M22436_IG19: ; bbWeight=7.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
movz x1, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldapr x0, [x1]
- cbnz x0, G_M22436_IG09
+ ; gcrRegs +[x0]
+ cbnz x0, G_M22436_IG20
sub x0, x1, #32
; gcrRegs -[x0]
ldapr x0, [x0]
; gcrRegs +[x0]
- cbz x0, G_M22436_IG17
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M22436_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
+ cbz x0, G_M22436_IG29
+ ;; size=32 bbWeight=7.78 PerfScore 77.82
+G_M22436_IG20: ; bbWeight=7.78, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x61]
- cbnz w1, G_M22436_IG18
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M22436_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x0, #0x18]
- ; gcrRegs +[x2]
- cbz x2, G_M22436_IG18
- ;; size=8 bbWeight=1 PerfScore 4.00
-G_M22436_IG11: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+ cbnz w1, G_M22436_IG30
+ ;; size=8 bbWeight=7.78 PerfScore 31.13
+G_M22436_IG21: ; bbWeight=7.78, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x20, [x0, #0x18]
+ ; gcrRegs +[x20]
+ cbz x20, G_M22436_IG30
+ ;; size=8 bbWeight=7.78 PerfScore 31.13
+G_M22436_IG22: ; bbWeight=12.16, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov x19, x2
+ mov x19, x20
; gcrRegs +[x19]
...
+36 (+13.24%) : 57810.dasm - System.IO.Path:GetFullPathInternal(System.String):System.String (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 723
-; 5 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
+; 4 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 9, 7.50) ref -> x19 class-hnd single-def <System.String>
@@ -20,34 +20,33 @@
;* V08 tmp7 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp8 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp9 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp10 [V11,T02] ( 2, 4 ) int -> x0 "Inlining Arg"
+; V11 tmp10 [V11,T02] ( 2, 4 ) int -> x21 "Inlining Arg"
; V12 tmp11 [V12,T01] ( 2, 4 ) byref -> x20 single-def "Inlining Arg"
-;* V13 tmp12 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V14 tmp13 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp14 [V15,T09] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
-;* V16 tmp15 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V17 tmp16 [V17 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V19 tmp18 [V19,T05] ( 6, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp19 [V20,T07] ( 2, 2 ) int -> x0 "field V08._length (fldOffset=0x8)" P-INDEP
-; V21 tmp20 [V21,T06] ( 2, 2 ) byref -> x20 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp21 [V22,T08] ( 2, 2 ) int -> x0 "field V09._length (fldOffset=0x8)" P-INDEP
-;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-;* V25 tmp24 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-;* V26 tmp25 [V26 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V27 cse0 [V27,T03] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
-; V28 cse1 [V28,T04] ( 3, 3 ) byref -> x20 "CSE - aggressive"
+; V13 tmp12 [V13,T09] ( 2, 0 ) ubyte -> x0 "Inline return value spill temp"
+;* V14 tmp13 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V15 tmp14 [V15 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
+; V17 tmp16 [V17,T05] ( 6, 2 ) byref -> x20 single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp17 [V18,T07] ( 2, 2 ) int -> x21 "field V08._length (fldOffset=0x8)" P-INDEP
+; V19 tmp18 [V19,T06] ( 2, 2 ) byref -> x20 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp19 [V20,T08] ( 2, 2 ) int -> x21 "field V09._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp20 [V21 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V22 tmp21 [V22 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
+;* V23 tmp22 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;* V24 tmp23 [V24 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
+; V25 cse0 [V25,T03] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
+; V26 cse1 [V26,T04] ( 3, 3 ) byref -> x20 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M7994_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M7994_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M7994_IG08
;; size=4 bbWeight=1 PerfScore 1.00
@@ -82,13 +81,19 @@ G_M7994_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs -[x0]
;; size=76 bbWeight=1 PerfScore 18.50
G_M7994_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
- ldr w0, [x19, #0x08]
- cmp w0, #4
+ ldr w21, [x19, #0x08]
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ cmp w21, #4
blt G_M7994_IG06
ldrh w0, [x20]
cmp w0, #92
beq G_M7994_IG09
- ;; size=24 bbWeight=1 PerfScore 9.00
+ ;; size=48 bbWeight=1 PerfScore 15.00
G_M7994_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x20]
mov x0, x19
@@ -101,10 +106,11 @@ G_M7994_IG06: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
; gcrRegs -[x19]
;; size=24 bbWeight=1 PerfScore 6.00
G_M7994_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M7994_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
movz x1, #8
@@ -141,12 +147,13 @@ G_M7994_IG10: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}
; gcrRegs +[x0]
;; size=32 bbWeight=0 PerfScore 0.00
G_M7994_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 272, prolog size 12, PerfScore 42.50, instruction count 68, allocated bytes for code 272 (MethodHash=fc5ee0c5) for method System.IO.Path:GetFullPathInternal(System.String):System.String (Tier1)
+; Total bytes of code 308, prolog size 16, PerfScore 51.50, instruction count 77, allocated bytes for code 308 (MethodHash=fc5ee0c5) for method System.IO.Path:GetFullPathInternal(System.String):System.String (Tier1)
; ============================================================
Unwind Info:
@@ -157,7 +164,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 68 (0x00044) Actual length = 272 (0x000110)
+ Function Length : 77 (0x0004d) Actual length = 308 (0x000134)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,10 +175,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
benchmarks.run_tiered.windows.arm64.checked.mch
-12 (-13.04%) : 14778.dasm - (dynamicClass):Param1Getter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M57095_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M57095_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M57095_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M57095_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M57095_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x18]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M57095_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=430020f8) for method (dynamicClass):Param1Getter(System.Object):int (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=430020f8) for method (dynamicClass):Param1Getter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 14782.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M25960_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M25960_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M25960_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25960_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M25960_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrb w0, [x19, #0x20]
;; size=4 bbWeight=1 PerfScore 3.00
@@ -51,7 +51,7 @@ G_M25960_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=59229a97) for method (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-13.04%) : 14786.dasm - (dynamicClass):Param3Getter(System.Object):System.String (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 arg0 [V00,T00] ( 5, 4.25) ref -> x19 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Object>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,19 +32,16 @@ G_M46632_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cmp x1, x0
beq G_M46632_IG04
;; size=24 bbWeight=1 PerfScore 6.00
-G_M46632_IG03: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M46632_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
; gcrRegs -[x1]
- ;; size=36 bbWeight=0.25 PerfScore 1.88
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M46632_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
@@ -52,7 +52,7 @@ G_M46632_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 92, prolog size 12, PerfScore 17.88, instruction count 23, allocated bytes for code 92 (MethodHash=e64b49d7) for method (dynamicClass):Param3Getter(System.Object):System.String (FullOpts)
+; Total bytes of code 80, prolog size 12, PerfScore 19.00, instruction count 20, allocated bytes for code 80 (MethodHash=e64b49d7) for method (dynamicClass):Param3Getter(System.Object):System.String (FullOpts)
; ============================================================
Unwind Info:
@@ -63,7 +63,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+15.38%) : 2612.dasm - System.Span1[ushort]:op_Implicit(ushort[]):System.Span
1ushort
@@ -2,54 +2,59 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 5, 4 ) ref -> x0 class-hnd single-def <ushort[]>
+; V00 arg0 [V00,T00] ( 5, 4.60) ref -> x0 class-hnd single-def <ushort[]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V03 tmp2 [V03,T01] ( 3, 2 ) byref -> registers "field V02._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp3 [V04,T02] ( 3, 2 ) int -> registers "field V02._length (fldOffset=0x8)" P-INDEP
+; V04 tmp3 [V04,T02] ( 3, 2 ) int -> [fp+0x1C] "field V02._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M45301_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M45301_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbnz x0, G_M45301_IG04
+ cbz x0, G_M45301_IG06
;; size=4 bbWeight=1 PerfScore 1.00
-G_M45301_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, xzr
- ; byrRegs +[x0]
- mov w1, wzr
- b G_M45301_IG05
- ;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M45301_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
+G_M45301_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add x1, x0, #16
; byrRegs +[x1]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
- mov w2, w0
+ str w0, [fp, #0x1C] // [V04 tmp3]
+ ;; size=12 bbWeight=0.80 PerfScore 3.60
+G_M45301_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
mov x0, x1
; byrRegs +[x0]
- mov w1, w2
+ ldr w1, [fp, #0x1C] // [V04 tmp3]
; byrRegs -[x1]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M45301_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=1 PerfScore 2.50
+G_M45301_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M45301_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[x0]
+ mov x0, xzr
+ ; byrRegs +[x0]
+ mov w1, wzr
+ str w1, [fp, #0x1C] // [V04 tmp3]
+ mov x1, x0
+ ; byrRegs +[x1]
+ b G_M45301_IG04
+ ;; size=20 bbWeight=0.20 PerfScore 0.70
-; Total bytes of code 52, prolog size 8, PerfScore 8.00, instruction count 13, allocated bytes for code 52 (MethodHash=e3874f0a) for method System.Span`1[ushort]:op_Implicit(ushort[]):System.Span`1[ushort] (Tier1)
+; Total bytes of code 60, prolog size 8, PerfScore 11.30, instruction count 15, allocated bytes for code 60 (MethodHash=e3874f0a) for method System.Span`1[ushort]:op_Implicit(ushort[]):System.Span`1[ushort] (Tier1)
; ============================================================
Unwind Info:
@@ -60,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -68,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+28 (+17.07%) : 12856.dasm - System.Version:CompareTo(System.Version):int:this (Tier1)
@@ -2,94 +2,119 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) ref -> x0 this class-hnd single-def <System.Version>
-; V01 arg1 [V01,T00] ( 8, 5.50) ref -> x1 class-hnd single-def <System.Version>
+; V00 this [V00,T01] ( 11, 4.86) ref -> x0 this class-hnd single-def <System.Version>
+; V01 arg1 [V01,T00] ( 12, 5.66) ref -> x1 class-hnd single-def <System.Version>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T02] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V04 cse1 [V04,T03] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V05 cse2 [V05,T04] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V06 cse3 [V06,T05] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V07 cse4 [V07,T06] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V08 cse5 [V08,T07] ( 3, 1.50) int -> x3 "CSE - moderate"
-; V09 cse6 [V09,T08] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V10 cse7 [V10,T09] ( 3, 1.50) int -> x3 "CSE - moderate"
;
; Lcl frame size = 0
-G_M64264_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M64264_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M64264_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp x1, x0
- beq G_M64264_IG11
+ beq G_M64264_IG15
;; size=8 bbWeight=1 PerfScore 1.50
-G_M64264_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cbz x1, G_M64264_IG09
+G_M64264_IG03: ; bbWeight=0.80, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ cbz x1, G_M64264_IG18
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M64264_IG04: ; bbWeight=0.64, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
ldr w3, [x1, #0x08]
cmp w2, w3
- bne G_M64264_IG06
+ bne G_M64264_IG12
+ ;; size=16 bbWeight=0.64 PerfScore 4.80
+G_M64264_IG05: ; bbWeight=0.33, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x0C]
ldr w3, [x1, #0x0C]
cmp w2, w3
- bne G_M64264_IG05
+ bne G_M64264_IG10
+ ;; size=16 bbWeight=0.33 PerfScore 2.50
+G_M64264_IG06: ; bbWeight=0.17, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x10]
ldr w3, [x1, #0x10]
cmp w2, w3
- bne G_M64264_IG04
+ bne G_M64264_IG17
+ ;; size=16 bbWeight=0.17 PerfScore 1.30
+G_M64264_IG07: ; bbWeight=0.09, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x14]
ldr w3, [x1, #0x14]
cmp w2, w3
- beq G_M64264_IG11
- cmp w2, w3
- bgt G_M64264_IG09
- b G_M64264_IG07
- ;; size=80 bbWeight=0.50 PerfScore 16.75
-G_M64264_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0-x1]
- cmp w2, w3
- bgt G_M64264_IG09
- b G_M64264_IG07
- ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M64264_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w2, w3
- bgt G_M64264_IG09
- b G_M64264_IG07
- ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M64264_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w2, w3
- bgt G_M64264_IG09
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M64264_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M64264_IG15
+ ;; size=16 bbWeight=0.09 PerfScore 0.67
+G_M64264_IG08: ; bbWeight=0.07, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x0, #0x14]
+ ; gcrRegs -[x0]
+ ldr w1, [x1, #0x14]
+ ; gcrRegs -[x1]
+ cmp w0, w1
+ bgt G_M64264_IG18
+ ;; size=16 bbWeight=0.07 PerfScore 0.54
+G_M64264_IG09: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M64264_IG13
+ ;; size=4 bbWeight=0.04 PerfScore 0.04
+G_M64264_IG10: ; bbWeight=0.16, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0-x1]
+ ldr w0, [x0, #0x0C]
+ ; gcrRegs -[x0]
+ ldr w1, [x1, #0x0C]
+ ; gcrRegs -[x1]
+ cmp w0, w1
+ bgt G_M64264_IG18
+ ;; size=16 bbWeight=0.16 PerfScore 1.20
+G_M64264_IG11: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M64264_IG13
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M64264_IG12: ; bbWeight=0.31, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0-x1]
+ ldr w0, [x0, #0x08]
+ ; gcrRegs -[x0]
+ ldr w1, [x1, #0x08]
+ ; gcrRegs -[x1]
+ cmp w0, w1
+ bgt G_M64264_IG18
+ ;; size=16 bbWeight=0.31 PerfScore 2.30
+G_M64264_IG13: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M64264_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.32 PerfScore 0.16
+G_M64264_IG14: ; bbWeight=0.32, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M64264_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M64264_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M64264_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.32 PerfScore 0.65
+G_M64264_IG15: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M64264_IG12: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.22 PerfScore 0.11
+G_M64264_IG16: ; bbWeight=0.22, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.22 PerfScore 0.44
+G_M64264_IG17: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0-x1]
+ ldr w0, [x0, #0x10]
+ ; gcrRegs -[x0]
+ ldr w1, [x1, #0x10]
+ ; gcrRegs -[x1]
+ cmp w0, w1
+ ble G_M64264_IG13
+ ;; size=16 bbWeight=0.08 PerfScore 0.62
+G_M64264_IG18: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.46 PerfScore 0.23
+G_M64264_IG19: ; bbWeight=0.46, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.46 PerfScore 0.92
-; Total bytes of code 164, prolog size 8, PerfScore 26.75, instruction count 41, allocated bytes for code 164 (MethodHash=a1da04f7) for method System.Version:CompareTo(System.Version):int:this (Tier1)
+; Total bytes of code 192, prolog size 8, PerfScore 20.35, instruction count 48, allocated bytes for code 192 (MethodHash=a1da04f7) for method System.Version:CompareTo(System.Version):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -100,7 +125,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
+ Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+28 (+20.59%) : 6506.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) byref -> x1 single-def
-; V02 loc0 [V02,T02] ( 6, 4 ) int -> x2
-; V03 loc1 [V03,T03] ( 4, 3 ) ref -> x3 class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 7.20) ref -> x19 this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) byref -> x1 single-def
+; V02 loc0 [V02,T01] ( 6, 5.20) int -> x2
+; V03 loc1 [V03,T04] ( 4, 3.60) ref -> x3 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 ) long -> zero-ref "spilling helperCall"
-; V07 cse0 [V07,T05] ( 3, 2.50) int -> x4 "CSE - aggressive"
-;* V08 rat0 [V08,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 cse0 [V07,T06] ( 3, 2.80) int -> x4 "CSE - aggressive"
+; V08 rat0 [V08,T05] ( 2, 3.20) long -> x0 "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T03] ( 2, 3.20) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 8
@@ -26,9 +28,10 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
+ str x0, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref, isz
; byrRegs +[x1]
ldr w0, [x19, #0x10]
@@ -37,20 +40,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
; gcrRegs +[x3]
ldr w4, [x3, #0x08]
cmp w4, w2
- bhi G_M49890_IG05
+ bls G_M49890_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
- ; gcrRegs -[x3]
- str xzr, [x1]
- mov w0, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M49890_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, gcvars, byref, isz
- ; gcrRegs +[x3]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=80008 {x3 x19}, byrefRegs=0002 {x1}, byref, isz
ldr w14, [x19, #0x14]
add w14, w14, #1
stp w2, w14, [x19, #0x10]
@@ -62,28 +54,51 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x1 x14]
+ ldr x0, [x19]
+ ldr x0, [x0, #0x38]
+ ldr x0, [x0]
+ ldr x0, [x0, #0x18]
+ cbnz x0, G_M49890_IG07
+ ;; size=48 bbWeight=0.80 PerfScore 18.00
+G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, byref
+ b G_M49890_IG07
+ ;; size=4 bbWeight=0.16 PerfScore 0.16
+G_M49890_IG05: ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1}, byref
+ ; gcrRegs -[x3]
+ ; byrRegs +[x1]
+ str xzr, [x1]
+ mov w0, wzr
+ ;; size=8 bbWeight=0.20 PerfScore 0.30
+G_M49890_IG06: ; bbWeight=0.20, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
+G_M49890_IG07: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=80008 {x3 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x3]
+ ; byrRegs -[x1]
sxtw x0, w2
mov w1, w4
cmp x0, x1
- bhs G_M49890_IG07
+ bhs G_M49890_IG09
add x0, x3, #16
; byrRegs +[x0]
str xzr, [x0, w2, SXTW #3]
mov w0, #1
; byrRegs -[x0]
- ;; size=56 bbWeight=0.50 PerfScore 7.00
-G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=28 bbWeight=0.80 PerfScore 3.60
+G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49890_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0.80 PerfScore 3.20
+G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x3]
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 12, PerfScore 25.75, instruction count 34, allocated bytes for code 136 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 164, prolog size 16, PerfScore 41.06, instruction count 41, allocated bytes for code 164 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -94,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.windows.arm64.checked.mch
-44 (-55.00%) : 244182.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 5, 4 ) float -> d0 single-def
+; V00 loc0 [V00,T01] ( 2, 2 ) float -> d0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> d0 "Single return block return value"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> d0 "Single return block return value"
;
; Lcl frame size = 0
@@ -18,34 +20,19 @@ G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- ble G_M53791_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M53791_IG05
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- blo G_M53791_IG03
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53791_IG03
- b G_M53791_IG03
- ;; size=28 bbWeight=0.50 PerfScore 3.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 8, PerfScore 15.50, instruction count 20, allocated bytes for code 80 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +43,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 244130.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
@@ -17,28 +19,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -49,7 +42,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-28 (-43.75%) : 240044.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) float -> d0 single-def
+; V00 loc0 [V00,T00] ( 2, 2 ) float -> d0 single-def
;* V01 loc1 [V01 ] ( 0, 0 ) float -> zero-ref
;* V02 loc2 [V02 ] ( 0, 0 ) float -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -19,28 +21,19 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- fmov s16, #10.0000
- fcmp s0, s16
- bhs G_M53663_IG04
- ;; size=32 bbWeight=1 PerfScore 8.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- fmov s16, #10.0000
- fcmp s0, s16
- bne G_M53663_IG03
- b G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 64, prolog size 8, PerfScore 13.25, instruction count 16, allocated bytes for code 64 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 9.00, instruction count 9, allocated bytes for code 36 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
@@ -51,7 +44,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+33.33%) : 185930.dasm - BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
@@ -2,21 +2,23 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 3, 3 ) long -> x0 single-def
+; V00 loc0 [V00,T00] ( 3, 27.00) long -> x0 single-def
;* V01 loc1 [V01,T01] ( 0, 0 ) int -> zero-ref ptr
;* V02 loc2 [V02,T02] ( 0, 0 ) int -> zero-ref ptr
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
+; V04 tmp1 [V04 ] ( 1, 9.00) struct ( 8) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
; V05 GsCookie [V05 ] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "GSSecurityCookie"
;
; Lcl frame size = 16
-G_M8788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M8788_IG01: ; bbWeight=9.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str xzr, [fp, #0x10] // [V04 tmp1]
@@ -25,8 +27,8 @@ G_M8788_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x0, #0xD1FFAB1E LSL #32
movk x0, #0xD1FFAB1E LSL #48
str x0, [fp, #0x18] // [V05 GsCookie]
- ;; size=32 bbWeight=1 PerfScore 5.50
-G_M8788_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=9.00 PerfScore 49.50
+G_M8788_IG02: ; bbWeight=9.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x0, fp, #16 // [V04 tmp1]
strb wzr, [x0]
ldrb w0, [x0]
@@ -36,39 +38,58 @@ G_M8788_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- movn w1, #0
- cmp w0, #0
- cinc w0, w1, eq
+ cbz w0, G_M8788_IG05
+ ;; size=40 bbWeight=9.00 PerfScore 103.50
+G_M8788_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movn w0, #0
movz xip0, #0xD1FFAB1E
movk xip0, #0xD1FFAB1E LSL #16
movk xip0, #0xD1FFAB1E LSL #32
movk xip0, #0xD1FFAB1E LSL #48
ldr xip1, [fp, #0x18] // [V05 GsCookie]
cmp xip0, xip1
- beq G_M8788_IG03
+ beq G_M8788_IG04
bl CORINFO_HELP_FAIL_FAST
- ;; size=80 bbWeight=1 PerfScore 18.50
-G_M8788_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=36 bbWeight=2.89 PerfScore 20.26
+G_M8788_IG04: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M8788_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov w0, wzr
+ movz xip0, #0xD1FFAB1E
+ movk xip0, #0xD1FFAB1E LSL #16
+ movk xip0, #0xD1FFAB1E LSL #32
+ movk xip0, #0xD1FFAB1E LSL #48
+ ldr xip1, [fp, #0x18] // [V05 GsCookie]
+ cmp xip0, xip1
+ beq G_M8788_IG06
+ bl CORINFO_HELP_FAIL_FAST
+ ;; size=36 bbWeight=0.47 PerfScore 3.32
+G_M8788_IG06: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 120, prolog size 32, PerfScore 26.00, instruction count 30, allocated bytes for code 120 (MethodHash=d502ddab) for method BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
+; Total bytes of code 160, prolog size 32, PerfScore 183.32, instruction count 40, allocated bytes for code 160 (MethodHash=d502ddab) for method BringUpTest_LocallocCnstB1:LocallocCnstB1():int (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+50.00%) : 150006.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
@@ -2,49 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte>
-; V01 arg1 [V01 ] ( 3, 3 ) ubyte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) ubyte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M9227_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M9227_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M9227_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M9227_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
cmp w0, #255
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M9227_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M9227_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 16.58
+G_M9227_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=2.89 PerfScore 1.45
+G_M9227_IG04: ; bbWeight=2.89, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M9227_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M9227_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=8d4ddbf4) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 36.84, instruction count 12, allocated bytes for code 48 (MethodHash=8d4ddbf4) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+50.00%) : 150030.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
@@ -2,49 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte>
-; V01 arg1 [V01 ] ( 3, 3 ) byte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) byte -> [fp+0x1C] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 16
-G_M12269_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M12269_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
str w1, [fp, #0x1C] // [V01 arg1]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M12269_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M12269_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrb w0, [fp, #0x1C] // [V01 arg1]
cmp w0, #255
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M12269_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M12269_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 16.58
+G_M12269_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=2.89 PerfScore 1.45
+G_M12269_IG04: ; bbWeight=2.89, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=2.89 PerfScore 5.79
+G_M12269_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M12269_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 7.50, instruction count 8, allocated bytes for code 32 (MethodHash=b297d012) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 36.84, instruction count 12, allocated bytes for code 48 (MethodHash=b297d012) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.windows.arm64.checked.mch
-48 (-32.43%) : 117753.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-1(ushort):ubyte:this (FullOpts)
@@ -3,80 +3,77 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) ushort -> x1 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 -> x19 "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, 3 ) ushort -> x0 "Inline stloc first use temp"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V11 cse0 [V11,T00] ( 7, 7 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M44010_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M44010_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w19, w1
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M44010_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, #82
- cmp w19, #81
- ccmp w19, w0, z, ne
- beq G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M44010_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M44010_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M44010_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M44010_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ uxth w0, w1
+ sub w1, w0, #79
+ cmp w1, #1
+ bls G_M44010_IG04
+ mov w1, #82
+ cmp w0, #81
+ ccmp w0, w1, z, ne
+ beq G_M44010_IG04
+ sub w1, w0, #83
+ cmp w1, #4
+ bls G_M44010_IG04
+ sub w1, w0, #0xD1FFAB1E
+ cmp w1, #1
+ bls G_M44010_IG04
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ cinc w0, wzr, eq
+ ;; size=72 bbWeight=1 PerfScore 11.00
+G_M44010_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M44010_IG04: ; bbWeight=0.79, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.79 PerfScore 0.39
+G_M44010_IG05: ; bbWeight=0.79, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.79 PerfScore 1.57
-; Total bytes of code 148, prolog size 12, PerfScore 23.75, instruction count 37, allocated bytes for code 148 (MethodHash=f0a25415) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
+; Total bytes of code 100, prolog size 8, PerfScore 16.47, instruction count 25, allocated bytes for code 100 (MethodHash=f0a25415) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte: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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 25 (0x00019) Actual length = 100 (0x000064)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -87,10 +84,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-28 (-28.00%) : 117752.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-0(ushort):ubyte:this (FullOpts)
@@ -3,68 +3,66 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 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 -> x1 single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) ushort -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 5, 3.50) int -> x19 "CSE - aggressive"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
+;* V04 tmp2 [V04,T03] ( 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,T02] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V07 cse0 [V07,T00] ( 5, 5 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M51339_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w19, w1
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- cbnz w0, G_M51339_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M51339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, #82
- cmp w19, #81
- ccmp w19, w0, z, ne
- beq G_M51339_IG05
- mov w0, w19
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=32 bbWeight=0.50 PerfScore 3.50
-G_M51339_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M51339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M51339_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ uxth w0, w1
+ sub w1, w0, #79
+ cmp w1, #1
+ bls G_M51339_IG04
+ mov w1, #82
+ cmp w0, #81
+ ccmp w0, w1, z, ne
+ beq G_M51339_IG04
+ sub w0, w0, #83
+ cmp w0, #4
+ cset x0, ls
+ ;; size=44 bbWeight=1 PerfScore 6.50
+G_M51339_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
+G_M51339_IG04: ; bbWeight=0.67, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.67 PerfScore 0.33
+G_M51339_IG05: ; bbWeight=0.67, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.67 PerfScore 1.33
-; Total bytes of code 100, prolog size 12, PerfScore 17.25, instruction count 25, allocated bytes for code 100 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 11.67, instruction count 18, allocated bytes for code 72 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte: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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -75,10 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-40 (-25.00%) : 156498.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
; fp 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 -> x19 class-hnd single-def <System.String>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x20 class-hnd single-def <System.String[]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 7, 14 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
+; V03 tmp1 [V03,T00] ( 6, 12 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.FileIO.TextFieldParser>
;
; Lcl frame size = 8
@@ -50,25 +52,12 @@ G_M21542_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1 x20]
- adrp x2, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x2, x2, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x2]
- ldr x2, [x2]
- ; gcrRegs +[x2]
- mov x0, x21
- ; gcrRegs +[x0]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- mov w1, wzr
- ldr x3, [x11]
- blr x3
- ; gcrRegs -[x0 x2]
str wzr, [x21, #0x88]
mov w0, #1
strb w0, [x21, #0xA7]
mov x0, x21
; gcrRegs +[x0]
- ;; size=120 bbWeight=1 PerfScore 33.00
+ ;; size=80 bbWeight=1 PerfScore 20.00
G_M21542_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -76,7 +65,7 @@ G_M21542_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 160, prolog size 16, PerfScore 42.50, instruction count 40, allocated bytes for code 160 (MethodHash=4b06abd9) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
+; Total bytes of code 120, prolog size 16, PerfScore 29.50, instruction count 30, allocated bytes for code 120 (MethodHash=4b06abd9) for method Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
; ============================================================
Unwind Info:
@@ -87,7 +76,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+35.71%) : 105958.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -3,16 +3,19 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser>
-; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> x1 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,T01] ( 2, 4 ) int -> x0 "argument with side effect"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -20,7 +23,7 @@ G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrsb wzr, [x1]
mov x0, x1
@@ -32,16 +35,25 @@ G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
uxth w0, w0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=40 bbWeight=1 PerfScore 13.00
-G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M28613_IG04
+ ;; size=44 bbWeight=1 PerfScore 11.50
+G_M28613_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M28613_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M28613_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M28613_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 16.50, instruction count 14, allocated bytes for code 56 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 16.12, instruction count 19, allocated bytes for code 76 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -52,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+35.71%) : 105964.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -3,16 +3,19 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 4 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> x1 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,T01] ( 2, 4 ) int -> x0 "argument with side effect"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -20,7 +23,7 @@ G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrsb wzr, [x1]
mov x0, x1
@@ -32,16 +35,25 @@ G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
blr x1
; gcrRegs -[x0]
uxth w0, w0
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- ;; size=40 bbWeight=1 PerfScore 13.00
-G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
+ mov w1, #0xD1FFAB1E
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M39608_IG04
+ ;; size=44 bbWeight=1 PerfScore 11.50
+G_M39608_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M39608_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M39608_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M39608_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 16.50, instruction count 14, allocated bytes for code 56 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 16.12, instruction count 19, allocated bytes for code 76 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -52,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 33698.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
@@ -3,28 +3,29 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 3.96) byref -> x0 this single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Text.Json.JsonElement>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-; V05 tmp3 [V05,T03] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V06 tmp4 [V06,T04] ( 2, 1 ) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T06] ( 2, 1 ) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
-; V08 tmp6 [V08,T05] ( 2, 1 ) ref -> x0 single-def "field V03._parent (fldOffset=0x0)" P-INDEP
-; V09 tmp7 [V09,T07] ( 2, 1 ) int -> x1 "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T01] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V04 tmp2 [V04,T01] ( 2, 1.92) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V05 tmp3 [V05,T02] ( 2, 1.92) int -> x0 "Inlining Arg"
+; V06 tmp4 [V06,T03] ( 2, 1.04) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1.04) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
+; V08 tmp6 [V08,T05] ( 2, 0.96) ref -> registers single-def "field V03._parent (fldOffset=0x0)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 0.96) int -> [fp+0x1C] spill-single-def "field V03._idx (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M36569_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
@@ -32,29 +33,35 @@ G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
ldr w1, [x0]
tbz w1, #31, G_M36569_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M36569_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36569_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, xzr
; gcrRegs +[x0]
mov w1, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M36569_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M36569_IG04: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M36569_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M36569_IG05: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x0, [x0, #0x08]
- ; gcrRegs +[x0]
+ ldr x1, [x0, #0x08]
+ ; gcrRegs +[x1]
+ ldr w0, [x0]
; byrRegs -[x0]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M36569_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ str w0, [fp, #0x1C] // [V09 tmp7]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ldr w1, [fp, #0x1C] // [V09 tmp7]
+ ; gcrRegs -[x1]
+ ;; size=20 bbWeight=0.48 PerfScore 4.56
+G_M36569_IG06: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 44, prolog size 8, PerfScore 9.50, instruction count 11, allocated bytes for code 44 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 12.58, instruction count 15, allocated bytes for code 60 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -76,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
libraries.pmi.windows.arm64.checked.mch
-28 (-30.43%) : 180540.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
@@ -2,64 +2,64 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
-; partially interruptible
+; fully 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.50) int -> x19 single-def
+; V00 arg0 [V00,T00] ( 6, 4.94) int -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M20897_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov w19, w0
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M20897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov w0, w19
- movz x1, #0xD1FFAB1E // code for System.Data.ExpressionNode:IsFloat(int):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M20897_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M20897_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w0, w19
+ cmp w0, #13
+ ccmp w0, #14, z, ne
+ beq G_M20897_IG06
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M20897_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #15
+ beq G_M20897_IG06
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M20897_IG04: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.Data.ExpressionNode:IsInteger(int):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
- ;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M20897_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=16 bbWeight=0.52 PerfScore 2.34
+G_M20897_IG05: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x1
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M20897_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M20897_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M20897_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=0.48 PerfScore 0.24
+G_M20897_IG07: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 92, prolog size 12, PerfScore 16.75, instruction count 23, allocated bytes for code 92 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 8.70, instruction count 16, allocated bytes for code 64 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -70,10 +70,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-20 (-23.81%) : 108201.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
@@ -2,62 +2,66 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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.50) ushort -> x19 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> x0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V03 cse0 [V03,T01] ( 5, 3.74) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M26802_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- mov w19, w0
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M26802_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- uxth w0, w19
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- cbnz w0, G_M26802_IG05
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M26802_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxth w0, w19
+ uxth w0, w0
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M26802_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M26802_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w0, #0xD1FFAB1E
+ beq G_M26802_IG07
+ ;; size=8 bbWeight=0.42 PerfScore 0.62
+G_M26802_IG05: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp w0, #0xD1FFAB1E
cset x0, ne
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M26802_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M26802_IG06: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M26802_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M26802_IG07: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M26802_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=0.48 PerfScore 0.24
+G_M26802_IG08: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 84, prolog size 12, PerfScore 15.00, instruction count 21, allocated bytes for code 84 (MethodHash=e9e6974d) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 8.08, instruction count 16, allocated bytes for code 64 (MethodHash=e9e6974d) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 16 (0x00010) Actual length = 64 (0x000040)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -68,10 +72,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-44 (-23.40%) : 21597.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
@@ -2,115 +2,94 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 8, 5.25) ref -> x19 class-hnd single-def <System.Object>
-; V01 loc0 [V01,T08] ( 2, 1 ) long -> x20 ld-addr-op single-def
-; V02 loc1 [V02,T09] ( 2, 1 ) long -> x19 ld-addr-op single-def
+; V00 arg0 [V00,T00] ( 7, 5 ) ref -> x0 class-hnd single-def <System.Object>
+; V01 loc0 [V01,T06] ( 2, 0.96) long -> x19 ld-addr-op single-def
+; V02 loc1 [V02,T07] ( 2, 0.83) long -> x19 ld-addr-op single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 4.50) ref -> x0 class-hnd "spilling QMark2" <System.IntPtr>
-; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V04 tmp1 [V04,T01] ( 3, 5 ) ref -> x1 class-hnd "spilling QMark2" <System.IntPtr>
+; V05 tmp2 [V05,T04] ( 3, 2.88) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V07 tmp4 [V07,T05] ( 3, 2.50) ref -> x0 class-hnd "spilling QMark2" <System.UIntPtr>
-; V08 tmp5 [V08,T04] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V07 tmp4 [V07,T02] ( 3, 4.52) ref -> x1 class-hnd "spilling QMark2" <System.UIntPtr>
+; V08 tmp5 [V08,T05] ( 3, 2.50) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V10 tmp7 [V10,T01] ( 4, 5 ) ref -> x0 "Single return block return value"
-; V11 cse0 [V11,T07] ( 4, 1.25) long -> x0 "CSE - moderate"
-; V12 cse1 [V12,T06] ( 5, 1.50) long -> x20 multi-def "CSE - moderate"
+; V10 tmp7 [V10,T03] ( 4, 4 ) ref -> x0 "Single return block return value"
+; V11 cse0 [V11,T08] ( 2, 0.52) long -> x2 "CSE - moderate"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M30013_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ str x19, [sp, #0x18]
mov fp, sp
- mov x19, x0
- ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
-G_M30013_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=12 bbWeight=1 PerfScore 2.50
+G_M30013_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- cbz x0, G_M30013_IG04
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M30013_IG03: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x20, x0
- beq G_M30013_IG08
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
- ; gcrRegs +[x0]
- cbz x0, G_M30013_IG11
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30013_IG05: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ldr x20, [x0]
- movz x0, #0xD1FFAB1E
- ; gcrRegs -[x0]
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x20, x0
- bne G_M30013_IG11
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cmp x20, x0
- beq G_M30013_IG10
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30013_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M30013_IG09
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M30013_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr x20, [x19, #0x08]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x19] +[x0]
- str x20, [x0, #0x08]
- b G_M30013_IG12
- ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M30013_IG09: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x1, x19
+ mov x1, x0
; gcrRegs +[x1]
- movz x2, #0xD1FFAB1E // code for CORINFO_HELP_UNBOX
+ cbz x1, G_M30013_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M30013_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x1]
+ ; gcrRegs -[x1]
+ movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
+ cmp x1, x2
+ beq G_M30013_IG07
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M30013_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ mov x1, x0
+ ; gcrRegs +[x1]
+ cbz x1, G_M30013_IG09
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M30013_IG05: ; bbWeight=0.26, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x1]
; gcrRegs -[x1]
- ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M30013_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ldr x19, [x19, #0x08]
- ; gcrRegs -[x19]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ cmp x1, x2
+ bne G_M30013_IG09
+ ;; size=24 bbWeight=0.26 PerfScore 1.56
+G_M30013_IG06: ; bbWeight=0.42, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x08]
movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
str x19, [x0, #0x08]
- b G_M30013_IG12
- ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M30013_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0] +[x19]
- mov x0, x19
+ b G_M30013_IG08
+ ;; size=28 bbWeight=0.42 PerfScore 3.12
+G_M30013_IG07: ; bbWeight=0.48, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr x19, [x0, #0x08]
+ movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M30013_IG12: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x19]
- ldp x19, x20, [sp, #0x10]
+ str x19, [x0, #0x08]
+ ;; size=24 bbWeight=0.48 PerfScore 3.12
+G_M30013_IG08: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M30013_IG09: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ b G_M30013_IG08
+ ;; size=4 bbWeight=0.10 PerfScore 0.10
-; Total bytes of code 188, prolog size 12, PerfScore 21.50, instruction count 47, allocated bytes for code 188 (MethodHash=edbc8ac2) for method Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 20.40, instruction count 36, allocated bytes for code 144 (MethodHash=edbc8ac2) for method Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
; ============================================================
Unwind Info:
@@ -121,7 +100,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +108,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
+ D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+20 (+38.46%) : 96428.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
@@ -2,15 +2,21 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol>
-; V01 loc0 [V01,T02] ( 2, 2 ) int -> x0
-; V02 loc1 [V02,T01] ( 3, 3 ) int -> x0 single-def
+; V01 loc0 [V01,T03] ( 2, 2 ) int -> x0
+;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V04 tmp1 [V04,T02] ( 4, 3 ) int -> x0 "Inline return value spill temp"
+;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V06 tmp3 [V06,T01] ( 4, 3.60) int -> x0 single-def "Inline stloc first use temp"
;
; Lcl frame size = 0
@@ -18,25 +24,36 @@ G_M28291_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M28291_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M28291_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr w0, [x0, #0xA0]
; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.TypeAttributesExtensions:ToCharSet(int):int
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
+ and w0, w0, #0xD1FFAB1E
+ cbz w0, G_M28291_IG04
+ ;; size=12 bbWeight=1 PerfScore 4.50
+G_M28291_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w1, #3
+ mov w2, #4
+ cmp w0, #32, LSL #12
+ csel w2, wzr, w2, ne
+ cmp w0, #16, LSL #12
+ csel w0, w1, w2, eq
+ b G_M28291_IG05
+ ;; size=28 bbWeight=0.80 PerfScore 3.20
+G_M28291_IG04: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #2
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M28291_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w1, #2
cmp w0, #0
csel w0, w0, w1, ne
- ;; size=36 bbWeight=1 PerfScore 10.00
-G_M28291_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=12 bbWeight=1 PerfScore 1.50
+G_M28291_IG06: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 13.50, instruction count 13, allocated bytes for code 52 (MethodHash=2e7b917c) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 12.80, instruction count 18, allocated bytes for code 72 (MethodHash=2e7b917c) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -47,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+44.44%) : 108182.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,15 +2,19 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 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 -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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 -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -18,22 +22,29 @@ G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M39608_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrh w0, [x1, #0x0C]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
+ mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 7.50
-G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M39608_IG04
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M39608_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M39608_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M39608_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M39608_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
- ; gcr arg pop 0
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 11.00, instruction count 9, allocated bytes for code 36 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 10.12, instruction count 13, allocated bytes for code 52 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -44,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+44.44%) : 108176.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,15 +2,19 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 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 -> x1 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 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 -> x0 "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.83) ushort -> x0 "Inlining Arg"
;
; Lcl frame size = 0
@@ -18,22 +22,29 @@ G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M28613_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
ldrh w0, [x1, #0x0C]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte
+ mov w1, #0xD1FFAB1E
; gcrRegs -[x1]
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- ;; size=20 bbWeight=1 PerfScore 7.50
-G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
+ cmp w0, #0xD1FFAB1E
+ ccmp w0, w1, z, ne
+ beq G_M28613_IG04
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M28613_IG03: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp w0, #0xD1FFAB1E
+ cset x0, eq
+ b G_M28613_IG05
+ ;; size=12 bbWeight=0.42 PerfScore 0.83
+G_M28613_IG04: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.58 PerfScore 0.29
+G_M28613_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
- br x1
- ; gcr arg pop 0
+ ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 36, prolog size 8, PerfScore 11.00, instruction count 9, allocated bytes for code 36 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 10.12, instruction count 13, allocated bytes for code 52 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -44,7 +55,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 9 (0x00009) Actual length = 36 (0x000024)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries_tests.run.windows.arm64.Release.mch
-8 (-6.90%) : 6609.dasm - System.String:Equals(System.String,System.String):ubyte (Tier1)
@@ -9,15 +9,16 @@
; 1 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 5.38) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 6, 5.04) ref -> x1 class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 6, 5.45) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 5.45) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 1.36) byref -> x3 single-def "impAppendStmt"
+; V03 tmp1 [V03,T02] ( 2, 3.03) byref -> x0 single-def "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V09 cse0 [V09,T03] ( 3, 2.45) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -31,46 +32,40 @@ G_M34825_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
beq G_M34825_IG08
;; size=8 bbWeight=1 PerfScore 1.50
G_M34825_IG03: ; bbWeight=0.85, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
- cbz x0, G_M34825_IG04
- cbz x1, G_M34825_IG04
+ cbz x0, G_M34825_IG06
+ cbz x1, G_M34825_IG06
ldr w2, [x0, #0x08]
ldr w3, [x1, #0x08]
cmp w2, w3
- beq G_M34825_IG06
+ bne G_M34825_IG06
;; size=24 bbWeight=0.85 PerfScore 8.06
-G_M34825_IG04: ; bbWeight=0.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x1]
- mov w0, wzr
- ;; size=4 bbWeight=0.51 PerfScore 0.25
-G_M34825_IG05: ; bbWeight=0.51, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.51 PerfScore 1.02
-G_M34825_IG06: ; bbWeight=0.34, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0-x1]
- add x3, x0, #12
- ; byrRegs +[x3]
+G_M34825_IG04: ; bbWeight=0.76, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+ add x0, x0, #12
+ ; gcrRegs -[x0]
+ ; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
; byrRegs +[x1]
- ldr w2, [x0, #0x08]
lsl w2, w2, #1
mov w2, w2
- mov x0, x3
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
movz x3, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x3]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; byrRegs -[x0-x1]
- ;; size=44 bbWeight=0.34 PerfScore 3.92
-G_M34825_IG07: ; bbWeight=0.34, epilog, nogc, extend
+ ;; size=36 bbWeight=0.76 PerfScore 6.06
+G_M34825_IG05: ; bbWeight=0.76, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.34 PerfScore 0.68
+ ;; size=8 bbWeight=0.76 PerfScore 1.52
+G_M34825_IG06: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.51 PerfScore 0.25
+G_M34825_IG07: ; bbWeight=0.51, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.51 PerfScore 1.02
G_M34825_IG08: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.15 PerfScore 0.08
@@ -79,7 +74,7 @@ G_M34825_IG09: ; bbWeight=0.15, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.15 PerfScore 0.30
-; Total bytes of code 116, prolog size 8, PerfScore 17.31, instruction count 29, allocated bytes for code 116 (MethodHash=e40a77f6) for method System.String:Equals(System.String,System.String):ubyte (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 20.28, instruction count 27, allocated bytes for code 108 (MethodHash=e40a77f6) for method System.String:Equals(System.String,System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -90,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-6.90%) : 6790.dasm - System.String:Equals(System.String,System.String):ubyte (Tier1)
@@ -5,19 +5,20 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 92
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 92
; 1 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 7, 5.14) ref -> x0 class-hnd single-def <System.String>
-; V01 arg1 [V01,T01] ( 6, 5.01) ref -> x1 class-hnd single-def <System.String>
+; V00 arg0 [V00,T00] ( 6, 5.97) ref -> x0 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 5.97) ref -> x1 class-hnd single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 0.52) byref -> x3 single-def "impAppendStmt"
+; V03 tmp1 [V03,T02] ( 2, 4.35) byref -> x0 single-def "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V05 tmp3 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp4 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V09 cse0 [V09,T03] ( 3, 2.96) int -> x2 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -48,31 +49,27 @@ G_M34825_IG06: ; bbWeight=0.82, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.82 PerfScore 1.63
-G_M34825_IG07: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
+G_M34825_IG07: ; bbWeight=1.09, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0-x1]
- add x3, x0, #12
- ; byrRegs +[x3]
+ add x0, x0, #12
+ ; gcrRegs -[x0]
+ ; byrRegs +[x0]
add x1, x1, #12
; gcrRegs -[x1]
; byrRegs +[x1]
- ldr w2, [x0, #0x08]
lsl w2, w2, #1
mov w2, w2
- mov x0, x3
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
movz x3, #0xD1FFAB1E // code for <unknown method>
- ; byrRegs -[x3]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; byrRegs -[x0-x1]
- ;; size=44 bbWeight=0.13 PerfScore 1.50
-G_M34825_IG08: ; bbWeight=0.13, epilog, nogc, extend
+ ;; size=36 bbWeight=1.09 PerfScore 8.70
+G_M34825_IG08: ; bbWeight=1.09, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.13 PerfScore 0.26
+ ;; size=8 bbWeight=1.09 PerfScore 2.17
G_M34825_IG09: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.05 PerfScore 0.03
@@ -81,7 +78,7 @@ G_M34825_IG10: ; bbWeight=0.05, epilog, nogc, extend
ret lr
;; size=8 bbWeight=0.05 PerfScore 0.11
-; Total bytes of code 116, prolog size 8, PerfScore 15.84, instruction count 29, allocated bytes for code 116 (MethodHash=e40a77f6) for method System.String:Equals(System.String,System.String):ubyte (Tier1)
+; Total bytes of code 108, prolog size 8, PerfScore 24.95, instruction count 27, allocated bytes for code 108 (MethodHash=e40a77f6) for method System.String:Equals(System.String,System.String):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -92,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-6.12%) : 1454.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -5,27 +5,28 @@
; optimized using Dynamic PGO
; fp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 14
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 5, 4.43) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
-; V01 TypeCtx [V01,T02] ( 7, 4.36) long -> x0 single-def
+; V00 this [V00,T05] ( 4, 10.14) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
+; V01 TypeCtx [V01,T04] ( 7, 13.10) long -> x2 single-def
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.SZArrayHelper>
-; V03 loc1 [V03,T06] ( 3, 2.71) int -> x20
+; V03 loc1 [V03,T06] ( 3, 9.14) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T00] ( 5, 7.14) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T00] ( 5, 71.43) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
+;* V08 tmp4 [V08,T07] ( 0, 0 ) int -> zero-ref
;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T05] ( 3, 2.86) long -> x1 "runtime lookup"
-; V12 rat1 [V12,T03] ( 3, 4 ) long -> x1 "spilling expr"
-; V13 rat2 [V13,T04] ( 3, 3.20) long -> x1 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T09] ( 3, 1.14) long -> x1 "runtime lookup"
-; V15 rat4 [V15,T07] ( 3, 1.60) long -> x1 "spilling expr"
-; V16 rat5 [V16,T08] ( 3, 1.28) long -> x1 "fgMakeTemp is creating a new local variable"
+; V11 cse0 [V11,T08] ( 2, 2 ) int -> x20 "CSE - aggressive"
+; V12 rat0 [V12,T03] ( 3, 28.57) long -> x0 "runtime lookup"
+; V13 rat1 [V13,T01] ( 3, 40 ) long -> x0 "spilling expr"
+; V14 rat2 [V14,T02] ( 3, 32 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V15 rat3 [V15,T11] ( 3, 1.14) long -> x0 "runtime lookup"
+; V16 rat4 [V16,T09] ( 3, 1.60) long -> x0 "spilling expr"
+; V17 rat5 [V17,T10] ( 3, 1.28) long -> x0 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
@@ -36,39 +37,27 @@ G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x1, [fp, #0x18]
mov x19, x0
; gcrRegs +[x19]
- mov x0, x1
+ mov x2, x1
;; size=24 bbWeight=1 PerfScore 4.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
- cbz w20, G_M34955_IG09
+ cbz w20, G_M34955_IG08
;; size=8 bbWeight=1 PerfScore 4.00
-G_M34955_IG03: ; bbWeight=0.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x08]
- cmp x2, #24
- ble G_M34955_IG06
- ;; size=16 bbWeight=0.71 PerfScore 5.36
-G_M34955_IG04: ; bbWeight=0.57, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x1, #0x18]
- cbz x1, G_M34955_IG06
- ;; size=8 bbWeight=0.57 PerfScore 2.29
-G_M34955_IG05: ; bbWeight=0.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M34955_IG07
- ;; size=4 bbWeight=0.46 PerfScore 0.46
-G_M34955_IG06: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.26 PerfScore 0.77
-G_M34955_IG07: ; bbWeight=0.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov x0, x1
+G_M34955_IG03: ; bbWeight=7.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x2, #0x38]
+ ldr x1, [x0, #0x08]
+ cmp x1, #24
+ ble G_M34955_IG07
+ ;; size=16 bbWeight=7.14 PerfScore 53.57
+G_M34955_IG04: ; bbWeight=5.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0, #0x18]
+ cbz x0, G_M34955_IG07
+ ;; size=8 bbWeight=5.71 PerfScore 22.86
+G_M34955_IG05: ; bbWeight=7.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
movn w14, #0
stp w14, w20, [x0, #0x08]
- ldr wzr, [x19, #0x08]
add x14, x0, #16
; byrRegs +[x14]
mov x15, x19
@@ -76,48 +65,55 @@ G_M34955_IG07: ; bbWeight=0.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=32 bbWeight=0.71 PerfScore 5.71
-G_M34955_IG08: ; bbWeight=0.71, epilog, nogc, extend
+ ;; size=24 bbWeight=7.14 PerfScore 32.14
+G_M34955_IG06: ; bbWeight=7.14, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.71 PerfScore 2.14
-G_M34955_IG09: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- ldr x1, [x0, #0x38]
- ldr x2, [x1, #0x08]
- cmp x2, #24
- ble G_M34955_IG12
- ;; size=16 bbWeight=0.29 PerfScore 2.14
-G_M34955_IG10: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x1, #0x18]
- cbz x1, G_M34955_IG12
- ;; size=8 bbWeight=0.23 PerfScore 0.91
-G_M34955_IG11: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M34955_IG13
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M34955_IG12: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=7.14 PerfScore 21.43
+G_M34955_IG07: ; bbWeight=2.57, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0] +[x19]
+ mov x0, x2
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- mov x1, x0
- ;; size=20 bbWeight=0.10 PerfScore 0.31
-G_M34955_IG13: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x1
+ b G_M34955_IG05
+ ;; size=24 bbWeight=2.57 PerfScore 10.29
+G_M34955_IG08: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
+ ldr x0, [x2, #0x38]
+ ldr x1, [x0, #0x08]
+ cmp x1, #24
+ ble G_M34955_IG12
+ ;; size=16 bbWeight=0.29 PerfScore 2.14
+G_M34955_IG09: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [x0, #0x18]
+ cbz x0, G_M34955_IG12
+ ;; size=8 bbWeight=0.23 PerfScore 0.91
+G_M34955_IG10: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
; byrRegs +[x0]
ldr x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- ;; size=12 bbWeight=0.29 PerfScore 1.29
-G_M34955_IG14: ; bbWeight=0.29, epilog, nogc, extend
+ ;; size=8 bbWeight=0.29 PerfScore 1.14
+G_M34955_IG11: ; bbWeight=0.29, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.29 PerfScore 0.86
+G_M34955_IG12: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
+ mov x0, x2
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
+ b G_M34955_IG10
+ ;; size=24 bbWeight=0.10 PerfScore 0.41
-; Total bytes of code 196, prolog size 16, PerfScore 30.92, instruction count 49, allocated bytes for code 196 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 184, prolog size 16, PerfScore 154.25, instruction count 46, allocated bytes for code 184 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -128,7 +124,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ Function Length : 46 (0x0002e) Actual length = 184 (0x0000b8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+44 (+23.40%) : 7759.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1027
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T01] ( 5, 3.99) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T05] ( 3, 2.50) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T02] ( 5, 4.97) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T02] ( 5, 4.97) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T09] ( 3, 1.99) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T04] ( 3, 2.78) long -> x0 "spilling expr"
-; V13 rat2 [V13,T07] ( 3, 2.22) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T08] ( 3, 2.01) long -> x0 "runtime lookup"
-; V15 rat4 [V15,T03] ( 3, 2.82) long -> x0 "spilling expr"
-; V16 rat5 [V16,T06] ( 3, 2.26) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T09] ( 3, 1.99) long -> x0 "runtime lookup"
+; V10 rat1 [V10,T04] ( 3, 2.78) long -> x0 "spilling expr"
+; V11 rat2 [V11,T07] ( 3, 2.22) long -> x0 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T08] ( 3, 2.01) long -> x0 "runtime lookup"
+; V13 rat4 [V13,T03] ( 3, 2.82) long -> x0 "spilling expr"
+; V14 rat5 [V14,T06] ( 3, 2.26) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x2, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbz w20, G_M34955_IG09
@@ -65,24 +64,36 @@ G_M34955_IG06: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M34955_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=28 bbWeight=0.50 PerfScore 3.72
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=60 bbWeight=0.50 PerfScore 7.20
G_M34955_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.49
+ ;; size=16 bbWeight=0.50 PerfScore 2.48
G_M34955_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
ldr x0, [x2, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #24
@@ -110,12 +121,13 @@ G_M34955_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=8 bbWeight=0.50 PerfScore 2.01
G_M34955_IG14: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.51
+ ;; size=16 bbWeight=0.50 PerfScore 2.52
-; Total bytes of code 188, prolog size 16, PerfScore 29.66, instruction count 47, allocated bytes for code 188 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 232, prolog size 20, PerfScore 36.13, instruction count 58, allocated bytes for code 232 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -126,7 +138,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -137,10 +149,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
+44 (+23.40%) : 1296.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2871
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T01] ( 5, 4.00) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T05] ( 3, 2.50) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T02] ( 5, 5.00) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T02] ( 5, 5.00) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T09] ( 3, 2.00) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T04] ( 3, 2.80) long -> x0 "spilling expr"
-; V13 rat2 [V13,T07] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T08] ( 3, 2.00) long -> x0 "runtime lookup"
-; V15 rat4 [V15,T03] ( 3, 2.80) long -> x0 "spilling expr"
-; V16 rat5 [V16,T06] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T09] ( 3, 2.00) long -> x0 "runtime lookup"
+; V10 rat1 [V10,T04] ( 3, 2.80) long -> x0 "spilling expr"
+; V11 rat2 [V11,T07] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T08] ( 3, 2.00) long -> x0 "runtime lookup"
+; V13 rat4 [V13,T03] ( 3, 2.80) long -> x0 "spilling expr"
+; V14 rat5 [V14,T06] ( 3, 2.24) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x2, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbz w20, G_M34955_IG09
@@ -65,24 +64,36 @@ G_M34955_IG06: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M34955_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #160 LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=28 bbWeight=0.50 PerfScore 3.75
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=60 bbWeight=0.50 PerfScore 7.25
G_M34955_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
G_M34955_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
ldr x0, [x2, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #24
@@ -110,12 +121,13 @@ G_M34955_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=8 bbWeight=0.50 PerfScore 2.00
G_M34955_IG14: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
-; Total bytes of code 188, prolog size 16, PerfScore 29.67, instruction count 47, allocated bytes for code 188 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 232, prolog size 20, PerfScore 36.17, instruction count 58, allocated bytes for code 232 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -126,7 +138,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -137,10 +149,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
+44 (+23.40%) : 4320.dasm - System.SZArrayHelper:GetEnumeratorSystem.__Canon:System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
@@ -6,7 +6,7 @@
; fp based frame
; partially interruptible
; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1030
-; 0 inlinees with PGO data; 3 single block inlinees; 2 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,T01] ( 5, 4.03) ref -> x19 this class-hnd single-def <System.SZArrayHelper>
@@ -15,29 +15,28 @@
; V03 loc1 [V03,T05] ( 3, 2.52) int -> x20
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V06 tmp2 [V06,T02] ( 5, 5.17) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
+; V06 tmp2 [V06,T02] ( 5, 5.17) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.__Canon]>
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08,T10] ( 0, 0 ) int -> zero-ref
-;* V09 tmp5 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 rat0 [V11,T08] ( 3, 2.07) long -> x0 "runtime lookup"
-; V12 rat1 [V12,T03] ( 3, 2.89) long -> x0 "spilling expr"
-; V13 rat2 [V13,T06] ( 3, 2.31) long -> x0 "fgMakeTemp is creating a new local variable"
-; V14 rat3 [V14,T09] ( 3, 1.93) long -> x0 "runtime lookup"
-; V15 rat4 [V15,T04] ( 3, 2.71) long -> x0 "spilling expr"
-; V16 rat5 [V16,T07] ( 3, 2.17) long -> x0 "fgMakeTemp is creating a new local variable"
+; V09 rat0 [V09,T08] ( 3, 2.07) long -> x0 "runtime lookup"
+; V10 rat1 [V10,T03] ( 3, 2.89) long -> x0 "spilling expr"
+; V11 rat2 [V11,T06] ( 3, 2.31) long -> x0 "fgMakeTemp is creating a new local variable"
+; V12 rat3 [V12,T09] ( 3, 1.93) long -> x0 "runtime lookup"
+; V13 rat4 [V13,T04] ( 3, 2.71) long -> x0 "spilling expr"
+; V14 rat5 [V14,T07] ( 3, 2.17) long -> x0 "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M34955_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
- str x1, [fp, #0x18]
+ str x1, [fp, #0x10]
mov x19, x0
; gcrRegs +[x19]
mov x2, x1
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M34955_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
cbz w20, G_M34955_IG09
@@ -65,24 +64,36 @@ G_M34955_IG06: ; bbWeight=0.19, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
G_M34955_IG07: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- movn w14, #0
- stp w14, w20, [x0, #0x08]
+ mov x21, x0
+ ; gcrRegs +[x21]
+ movn w0, #0
+ ; gcrRegs -[x0]
+ stp w0, w20, [x21, #0x08]
ldr wzr, [x19, #0x08]
- add x14, x0, #16
+ mov w0, #1
+ movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ ldr x1, [x1]
+ blr x1
+ add x14, x21, #16
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19]
; byrRegs -[x14]
- ;; size=28 bbWeight=0.52 PerfScore 3.87
+ mov x0, x21
+ ; gcrRegs +[x0]
+ ;; size=60 bbWeight=0.52 PerfScore 7.49
G_M34955_IG08: ; bbWeight=0.52, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.52 PerfScore 1.55
+ ;; size=16 bbWeight=0.52 PerfScore 2.58
G_M34955_IG09: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
ldr x0, [x2, #0x38]
ldr x1, [x0, #0x08]
cmp x1, #24
@@ -110,12 +121,13 @@ G_M34955_IG13: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; byrRegs -[x0]
;; size=8 bbWeight=0.48 PerfScore 1.93
G_M34955_IG14: ; bbWeight=0.48, epilog, nogc, extend
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.48 PerfScore 1.45
+ ;; size=16 bbWeight=0.48 PerfScore 2.42
-; Total bytes of code 188, prolog size 16, PerfScore 29.73, instruction count 47, allocated bytes for code 188 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
+; Total bytes of code 232, prolog size 20, PerfScore 36.34, instruction count 58, allocated bytes for code 232 (MethodHash=193c7774) for method System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
; ============================================================
Unwind Info:
@@ -126,7 +138,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -137,10 +149,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
- E4 end
- E4 end
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-36 (-34.62%) : 119310.dasm - System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodingsDefaultValueShouldEqualFalse() (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Formats.Cbor.CborWriter>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 6, 12 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
+; V02 tmp1 [V02,T00] ( 6, 12 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Formats.Cbor.CborWriter>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref
@@ -29,56 +31,45 @@
;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.value (fldOffset=0x1)" P-INDEP
;* V19 tmp18 [V19 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M43591_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M43591_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x19, x0
- ; gcrRegs +[x19]
- mov w0, #1
- ; gcrRegs -[x0]
- movz x1, #0xD1FFAB1E // code for System.Formats.Cbor.CborConformanceModeHelpers:Validate(int)
+ mov w1, #1
+ str w1, [x0, #0x54]
+ strh wzr, [x0, #0x5A]
+ strb w1, [x0, #0x60]
+ str w1, [x0, #0x64]
+ movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- mov w0, #1
- str w0, [x19, #0x54]
- strh wzr, [x19, #0x5A]
- strb w0, [x19, #0x60]
- str w0, [x19, #0x64]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- str x0, [x19, #0x28]
- ;; size=80 bbWeight=1 PerfScore 16.00
+ str x1, [x0, #0x28]
+ ;; size=52 bbWeight=1 PerfScore 9.50
G_M43591_IG03: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 12, PerfScore 22.50, instruction count 26, allocated bytes for code 104 (MethodHash=367955b8) for method System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodings_DefaultValue_ShouldEqualFalse() (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 13.00, instruction count 17, allocated bytes for code 68 (MethodHash=367955b8) for method System.Formats.Cbor.Tests.CborWriterTests:ConvertIndefiniteLengthEncodings_DefaultValue_ShouldEqualFalse() (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 : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 17 (0x00011) Actual length = 68 (0x000044)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -86,10 +77,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-32 (-26.67%) : 90404.dasm - System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
@@ -2,17 +2,20 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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; 2 inlinees without PGO data
+; 1 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.ConfigurationTests.UrlPathTests>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 2, 4 ) ref -> x1 class-hnd exact single-def "dup spill" <System.String>
-; V04 tmp2 [V04,T01] ( 5, 3.50) ref -> x1
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
+; V04 tmp2 [V04,T00] ( 3, 2 ) ref -> x0
+;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.String>
;
; Lcl frame size = 0
@@ -21,19 +24,6 @@ G_M24905_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M24905_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov x0, xzr
- movz x1, #0xD1FFAB1E // code for System.IO.Path:GetDirectoryName(System.String):System.String
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- ; gcrRegs +[x0]
- mov x1, x0
- ; gcrRegs +[x1]
- cbnz x1, G_M24905_IG04
- ;; size=32 bbWeight=1 PerfScore 7.50
-G_M24905_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x1]
mov x0, xzr
movz x1, #0xD1FFAB1E // code for System.IO.Path:GetPathRoot(System.String):System.String
movk x1, #0xD1FFAB1E LSL #16
@@ -41,19 +31,17 @@ G_M24905_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr x1, [x1]
blr x1
; gcrRegs +[x0]
- mov x1, x0
- ; gcrRegs +[x1]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M24905_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- cbnz x1, G_M24905_IG06
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M24905_IG05: ; bbWeight=1, epilog, nogc, extend
+ cbnz x0, G_M24905_IG04
+ ;; size=28 bbWeight=1 PerfScore 7.00
+G_M24905_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M24905_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+G_M24905_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ mov x1, x0
+ ; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
+ ; gcrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -65,9 +53,9 @@ G_M24905_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {
bl CORINFO_HELP_THROW
; gcrRegs -[x0]
brk_windows #0
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 8, PerfScore 15.25, instruction count 30, allocated bytes for code 120 (MethodHash=38fc9eb6) for method System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 10.50, instruction count 22, allocated bytes for code 88 (MethodHash=38fc9eb6) for method System.ConfigurationTests.UrlPathTests:GetDirectoryOrRootName_Null():this (FullOpts)
; ============================================================
Unwind Info:
@@ -78,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-22.22%) : 309567.dasm - System.Threading.Tasks.Tests.ValueTaskTests:GenericEqualsValueTask():this (FullOpts)
@@ -2,10 +2,12 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
-; 19 inlinees with PGO data; 91 single block inlinees; 35 inlinees without PGO data
+; 19 inlinees with PGO data; 93 single block inlinees; 36 inlinees without PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tasks.Tests.ValueTaskTests>
@@ -30,26 +32,26 @@
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V21 tmp18 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
-;* V22 tmp19 [V22,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V22 tmp19 [V22,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V23 tmp20 [V23 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V24 tmp21 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V27 tmp24 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V28 tmp25 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V29 tmp26 [V29,T11] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V29 tmp26 [V29,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V30 tmp27 [V30 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V31 tmp28 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V34 tmp31 [V34 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V35 tmp32 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V36 tmp33 [V36,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V36 tmp33 [V36,T11] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V37 tmp34 [V37 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V38 tmp35 [V38,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V38 tmp35 [V38,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V40 tmp37 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
-;* V41 tmp38 [V41,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V41 tmp38 [V41,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.String>
;* V43 tmp40 [V43 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
;* V44 tmp41 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -59,9 +61,9 @@
;* V48 tmp45 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V49 tmp46 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V50 tmp47 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V51 tmp48 [V51,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V51 tmp48 [V51,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V52 tmp49 [V52 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V53 tmp50 [V53,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V53 tmp50 [V53,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V54 tmp51 [V54 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V55 tmp52 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V56 tmp53 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -74,9 +76,9 @@
;* V63 tmp60 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V64 tmp61 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V65 tmp62 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V66 tmp63 [V66,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V66 tmp63 [V66,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V67 tmp64 [V67 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V68 tmp65 [V68,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V68 tmp65 [V68,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V69 tmp66 [V69 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V70 tmp67 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V71 tmp68 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -89,9 +91,9 @@
;* V78 tmp75 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V79 tmp76 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V80 tmp77 [V80 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V81 tmp78 [V81,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V81 tmp78 [V81,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V82 tmp79 [V82 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[System.String]>
-;* V83 tmp80 [V83,T20] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
+;* V83 tmp80 [V83,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline return value spill temp"
;* V84 tmp81 [V84 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <System.String>
;* V85 tmp82 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
;* V86 tmp83 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -104,7 +106,7 @@
;* V93 tmp90 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V94 tmp91 [V94 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V95 tmp92 [V95 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V96 tmp93 [V96,T06] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
+;* V96 tmp93 [V96,T05] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V98 tmp95 [V98 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V99 tmp96 [V99,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[int]>
@@ -112,14 +114,14 @@
;* V101 tmp98 [V101 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V102 tmp99 [V102 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V103 tmp100 [V103 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V104 tmp101 [V104,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V104 tmp101 [V104,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V105 tmp102 [V105 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V106 tmp103 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V107 tmp104 [V107 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V108 tmp105 [V108 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V109 tmp106 [V109 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V110 tmp107 [V110 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V111 tmp108 [V111,T07] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
+;* V111 tmp108 [V111,T06] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.Threading.Tasks.Task`1[int]>
;* V112 tmp109 [V112 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
; V114 tmp111 [V114,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[int]>
@@ -127,7 +129,7 @@
;* V116 tmp113 [V116 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V117 tmp114 [V117 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V118 tmp115 [V118 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V119 tmp116 [V119,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V119 tmp116 [V119,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V120 tmp117 [V120 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V121 tmp118 [V121 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V122 tmp119 [V122 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
@@ -136,170 +138,173 @@
;* V125 tmp122 [V125 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
;* V127 tmp124 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
-; V128 tmp125 [V128,T05] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
+; V128 tmp125 [V128,T04] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Sources.ManualResetValueTaskSource`1[int]>
; V129 tmp126 [V129,T02] ( 3, 6 ) byref -> x0 single-def "Inlining Arg"
-;* V130 tmp127 [V130,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V130 tmp127 [V130,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V131 tmp128 [V131 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Threading.Tasks.ValueTask`1[int]>
;* V132 tmp129 [V132 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V133 tmp130 [V133 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V134 tmp131 [V134 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V135 tmp132 [V135 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V136 tmp133 [V136,T08] ( 0, 0 ) ref -> zero-ref "field V01._obj (fldOffset=0x0)" P-INDEP
-;* V137 tmp134 [V137,T24] ( 0, 0 ) int -> zero-ref "field V01._result (fldOffset=0x8)" P-INDEP
-;* V138 tmp135 [V138,T25] ( 0, 0 ) short -> zero-ref "field V01._token (fldOffset=0xc)" P-INDEP
-;* V139 tmp136 [V139 ] ( 0, 0 ) ubyte -> zero-ref "field V01._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V140 tmp137 [V140 ] ( 0, 0 ) ref -> zero-ref "field V02._obj (fldOffset=0x0)" P-INDEP
-;* V141 tmp138 [V141 ] ( 0, 0 ) ref -> zero-ref "field V02._result (fldOffset=0x8)" P-INDEP
-;* V142 tmp139 [V142 ] ( 0, 0 ) short -> zero-ref "field V02._token (fldOffset=0x10)" P-INDEP
-;* V143 tmp140 [V143 ] ( 0, 0 ) ubyte -> zero-ref "field V02._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V144 tmp141 [V144 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._obj (fldOffset=0x0)" P-INDEP
-;* V145 tmp142 [V145 ] ( 0, 0 ) int -> zero-ref single-def "field V04._result (fldOffset=0x8)" P-INDEP
-;* V146 tmp143 [V146 ] ( 0, 0 ) short -> zero-ref single-def "field V04._token (fldOffset=0xc)" P-INDEP
-;* V147 tmp144 [V147 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V148 tmp145 [V148 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._obj (fldOffset=0x0)" P-INDEP
-;* V149 tmp146 [V149 ] ( 0, 0 ) int -> zero-ref single-def "field V05._result (fldOffset=0x8)" P-INDEP
-;* V150 tmp147 [V150 ] ( 0, 0 ) short -> zero-ref single-def "field V05._token (fldOffset=0xc)" P-INDEP
-;* V151 tmp148 [V151 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V05._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V152 tmp149 [V152 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._obj (fldOffset=0x0)" P-INDEP
-;* V153 tmp150 [V153 ] ( 0, 0 ) int -> zero-ref single-def "field V06._result (fldOffset=0x8)" P-INDEP
-;* V154 tmp151 [V154 ] ( 0, 0 ) short -> zero-ref single-def "field V06._token (fldOffset=0xc)" P-INDEP
-;* V155 tmp152 [V155 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V156 tmp153 [V156 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._obj (fldOffset=0x0)" P-INDEP
-;* V157 tmp154 [V157 ] ( 0, 0 ) int -> zero-ref single-def "field V07._result (fldOffset=0x8)" P-INDEP
-;* V158 tmp155 [V158 ] ( 0, 0 ) short -> zero-ref single-def "field V07._token (fldOffset=0xc)" P-INDEP
-;* V159 tmp156 [V159 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V07._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V160 tmp157 [V160 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._obj (fldOffset=0x0)" P-INDEP
-;* V161 tmp158 [V161 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._result (fldOffset=0x8)" P-INDEP
-;* V162 tmp159 [V162 ] ( 0, 0 ) short -> zero-ref single-def "field V08._token (fldOffset=0x10)" P-INDEP
-;* V163 tmp160 [V163 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V08._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V164 tmp161 [V164 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._obj (fldOffset=0x0)" P-INDEP
-;* V165 tmp162 [V165 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._result (fldOffset=0x8)" P-INDEP
-;* V166 tmp163 [V166 ] ( 0, 0 ) short -> zero-ref single-def "field V09._token (fldOffset=0x10)" P-INDEP
-;* V167 tmp164 [V167 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V09._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V168 tmp165 [V168 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._obj (fldOffset=0x0)" P-INDEP
-;* V169 tmp166 [V169 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._result (fldOffset=0x8)" P-INDEP
-;* V170 tmp167 [V170 ] ( 0, 0 ) short -> zero-ref single-def "field V10._token (fldOffset=0x10)" P-INDEP
-;* V171 tmp168 [V171 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V172 tmp169 [V172 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._obj (fldOffset=0x0)" P-INDEP
-;* V173 tmp170 [V173 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._result (fldOffset=0x8)" P-INDEP
-;* V174 tmp171 [V174 ] ( 0, 0 ) short -> zero-ref single-def "field V11._token (fldOffset=0x10)" P-INDEP
-;* V175 tmp172 [V175 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V11._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V176 tmp173 [V176 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._obj (fldOffset=0x0)" P-INDEP
-;* V177 tmp174 [V177 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._result (fldOffset=0x8)" P-INDEP
-;* V178 tmp175 [V178 ] ( 0, 0 ) short -> zero-ref single-def "field V12._token (fldOffset=0x10)" P-INDEP
-;* V179 tmp176 [V179 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V12._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V180 tmp177 [V180 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._obj (fldOffset=0x0)" P-INDEP
-;* V181 tmp178 [V181 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._result (fldOffset=0x8)" P-INDEP
-;* V182 tmp179 [V182 ] ( 0, 0 ) short -> zero-ref single-def "field V13._token (fldOffset=0x10)" P-INDEP
-;* V183 tmp180 [V183 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V13._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V184 tmp181 [V184 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._obj (fldOffset=0x0)" P-INDEP
-;* V185 tmp182 [V185 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._result (fldOffset=0x8)" P-INDEP
-;* V186 tmp183 [V186 ] ( 0, 0 ) short -> zero-ref single-def "field V14._token (fldOffset=0x10)" P-INDEP
-;* V187 tmp184 [V187 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V188 tmp185 [V188 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._obj (fldOffset=0x0)" P-INDEP
-;* V189 tmp186 [V189 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._result (fldOffset=0x8)" P-INDEP
-;* V190 tmp187 [V190 ] ( 0, 0 ) short -> zero-ref single-def "field V15._token (fldOffset=0x10)" P-INDEP
-;* V191 tmp188 [V191 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V15._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V192 tmp189 [V192,T09] ( 0, 0 ) ref -> zero-ref single-def "field V16._obj (fldOffset=0x0)" P-INDEP
-;* V193 tmp190 [V193,T26] ( 0, 0 ) int -> zero-ref single-def "field V16._result (fldOffset=0x8)" P-INDEP
-;* V194 tmp191 [V194,T27] ( 0, 0 ) short -> zero-ref single-def "field V16._token (fldOffset=0xc)" P-INDEP
-;* V195 tmp192 [V195 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V16._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V196 tmp193 [V196 ] ( 0, 0 ) ref -> zero-ref single-def "field V17._obj (fldOffset=0x0)" P-INDEP
-;* V197 tmp194 [V197 ] ( 0, 0 ) int -> zero-ref single-def "field V17._result (fldOffset=0x8)" P-INDEP
-;* V198 tmp195 [V198 ] ( 0, 0 ) short -> zero-ref single-def "field V17._token (fldOffset=0xc)" P-INDEP
-;* V199 tmp196 [V199 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V17._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V200 tmp197 [V200 ] ( 0, 0 ) ref -> zero-ref single-def "field V18._obj (fldOffset=0x0)" P-INDEP
-;* V201 tmp198 [V201 ] ( 0, 0 ) int -> zero-ref single-def "field V18._result (fldOffset=0x8)" P-INDEP
-;* V202 tmp199 [V202 ] ( 0, 0 ) short -> zero-ref single-def "field V18._token (fldOffset=0xc)" P-INDEP
-;* V203 tmp200 [V203 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V204 tmp201 [V204 ] ( 0, 0 ) ref -> zero-ref single-def "field V19._obj (fldOffset=0x0)" P-INDEP
-;* V205 tmp202 [V205 ] ( 0, 0 ) int -> zero-ref single-def "field V19._result (fldOffset=0x8)" P-INDEP
-;* V206 tmp203 [V206 ] ( 0, 0 ) short -> zero-ref single-def "field V19._token (fldOffset=0xc)" P-INDEP
-;* V207 tmp204 [V207 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V19._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V208 tmp205 [V208 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._obj (fldOffset=0x0)" P-INDEP
-;* V209 tmp206 [V209 ] ( 0, 0 ) int -> zero-ref single-def "field V20._result (fldOffset=0x8)" P-INDEP
-;* V210 tmp207 [V210 ] ( 0, 0 ) short -> zero-ref single-def "field V20._token (fldOffset=0xc)" P-INDEP
-;* V211 tmp208 [V211 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V212 tmp209 [V212 ] ( 0, 0 ) ref -> zero-ref single-def "field V21._obj (fldOffset=0x0)" P-INDEP
-;* V213 tmp210 [V213 ] ( 0, 0 ) int -> zero-ref single-def "field V21._result (fldOffset=0x8)" P-INDEP
-;* V214 tmp211 [V214 ] ( 0, 0 ) short -> zero-ref single-def "field V21._token (fldOffset=0xc)" P-INDEP
-;* V215 tmp212 [V215 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V21._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V216 tmp213 [V216 ] ( 0, 0 ) ref -> zero-ref single-def "field V23._obj (fldOffset=0x0)" P-INDEP
-;* V217 tmp214 [V217 ] ( 0, 0 ) int -> zero-ref single-def "field V23._result (fldOffset=0x8)" P-INDEP
-;* V218 tmp215 [V218 ] ( 0, 0 ) short -> zero-ref single-def "field V23._token (fldOffset=0xc)" P-INDEP
-;* V219 tmp216 [V219 ] ( 0, 0 ) ubyte -> zero-ref "field V23._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V220 tmp217 [V220,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V27.hasValue (fldOffset=0x0)" P-INDEP
-;* V221 tmp218 [V221,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V27.value (fldOffset=0x1)" P-INDEP
-;* V222 tmp219 [V222 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.hasValue (fldOffset=0x0)" P-INDEP
-;* V223 tmp220 [V223 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V28.value (fldOffset=0x1)" P-INDEP
-;* V224 tmp221 [V224 ] ( 0, 0 ) ref -> zero-ref single-def "field V30._obj (fldOffset=0x0)" P-INDEP
-;* V225 tmp222 [V225 ] ( 0, 0 ) int -> zero-ref single-def "field V30._result (fldOffset=0x8)" P-INDEP
-;* V226 tmp223 [V226 ] ( 0, 0 ) short -> zero-ref single-def "field V30._token (fldOffset=0xc)" P-INDEP
-;* V227 tmp224 [V227 ] ( 0, 0 ) ubyte -> zero-ref "field V30._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-;* V228 tmp225 [V228,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V34.hasValue (fldOffset=0x0)" P-INDEP
-;* V229 tmp226 [V229,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V34.value (fldOffset=0x1)" P-INDEP
-;* V230 tmp227 [V230 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.hasValue (fldOffset=0x0)" P-INDEP
-;* V231 tmp228 [V231 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.value (fldOffset=0x1)" P-INDEP
-;* V232 tmp229 [V232 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._obj (fldOffset=0x0)" P-INDEP
-;* V233 tmp230 [V233 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._result (fldOffset=0x8)" P-INDEP
-;* V234 tmp231 [V234 ] ( 0, 0 ) short -> zero-ref single-def "field V37._token (fldOffset=0x10)" P-INDEP
-;* V235 tmp232 [V235 ] ( 0, 0 ) ubyte -> zero-ref "field V37._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V236 tmp233 [V236,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V237 tmp234 [V237,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.value (fldOffset=0x1)" P-INDEP
-;* V238 tmp235 [V238 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.hasValue (fldOffset=0x0)" P-INDEP
-;* V239 tmp236 [V239 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V50.value (fldOffset=0x1)" P-INDEP
-;* V240 tmp237 [V240 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._obj (fldOffset=0x0)" P-INDEP
-;* V241 tmp238 [V241 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._result (fldOffset=0x8)" P-INDEP
-;* V242 tmp239 [V242 ] ( 0, 0 ) short -> zero-ref single-def "field V52._token (fldOffset=0x10)" P-INDEP
-;* V243 tmp240 [V243 ] ( 0, 0 ) ubyte -> zero-ref "field V52._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V244 tmp241 [V244,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.hasValue (fldOffset=0x0)" P-INDEP
-;* V245 tmp242 [V245,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V64.value (fldOffset=0x1)" P-INDEP
-;* V246 tmp243 [V246 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V65.hasValue (fldOffset=0x0)" P-INDEP
-;* V247 tmp244 [V247 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V65.value (fldOffset=0x1)" P-INDEP
-;* V248 tmp245 [V248 ] ( 0, 0 ) ref -> zero-ref single-def "field V67._obj (fldOffset=0x0)" P-INDEP
-;* V249 tmp246 [V249 ] ( 0, 0 ) ref -> zero-ref single-def "field V67._result (fldOffset=0x8)" P-INDEP
-;* V250 tmp247 [V250 ] ( 0, 0 ) short -> zero-ref single-def "field V67._token (fldOffset=0x10)" P-INDEP
-;* V251 tmp248 [V251 ] ( 0, 0 ) ubyte -> zero-ref "field V67._continueOnCapturedContext (fldOffset=0x12)" P-INDEP
-;* V252 tmp249 [V252,T36] ( 0, 0 ) ubyte -> zero-ref single-def "field V79.hasValue (fldOffset=0x0)" P-INDEP
-;* V253 tmp250 [V253,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V79.value (fldOffset=0x1)" P-INDEP
-;* V254 tmp251 [V254 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V80.hasValue (fldOffset=0x0)" P-INDEP
...
+16 (+26.67%) : 35362.dasm - LamarCodeGeneration.Util.ImHashMap2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap
2+Entry[System.Canon,System.Canon]:this (FullOpts)
@@ -2,16 +2,16 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 3.50) ref -> x0 this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3.50) int -> x1 single-def
+; V00 this [V00,T00] ( 6, 4.38) ref -> x0 this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 4, 3.80) int -> x1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T03] ( 3, 1.50) ref -> x0 "CSE - moderate"
-; V04 cse1 [V04,T02] ( 3, 2.50) ref -> x2 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,43 +23,55 @@ G_M5528_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x2, [x0, #0x08]
; gcrRegs +[x2]
- ldr w3, [x2, #0x08]
- cmp w3, w1
- beq G_M5528_IG05
- ;; size=16 bbWeight=1 PerfScore 7.50
-G_M5528_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+ ldr w2, [x2, #0x08]
; gcrRegs -[x2]
- ldr x0, [x0, #0x10]
- ldr w2, [x0, #0x08]
cmp w2, w1
- csel x0, x0, xzr, eq
- ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M5528_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M5528_IG08
+ ;; size=16 bbWeight=1 PerfScore 7.50
+G_M5528_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ldr x2, [x0, #0x10]
+ ; gcrRegs +[x2]
+ ldr w2, [x2, #0x08]
+ ; gcrRegs -[x2]
+ cmp w2, w1
+ beq G_M5528_IG06
+ ;; size=16 bbWeight=0.80 PerfScore 6.00
+G_M5528_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.42 PerfScore 0.21
+G_M5528_IG05: ; bbWeight=0.42, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M5528_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0] +[x2]
- mov x0, x2
+ ;; size=8 bbWeight=0.42 PerfScore 0.83
+G_M5528_IG06: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M5528_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x0, [x0, #0x10]
+ ;; size=4 bbWeight=0.38 PerfScore 1.15
+G_M5528_IG07: ; bbWeight=0.38, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.38 PerfScore 0.77
+G_M5528_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ldr x0, [x0, #0x08]
+ ;; size=4 bbWeight=0.20 PerfScore 0.60
+G_M5528_IG09: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
-; Total bytes of code 60, prolog size 8, PerfScore 14.75, instruction count 15, allocated bytes for code 60 (MethodHash=4203ea67) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 18.96, instruction count 19, allocated bytes for code 76 (MethodHash=4203ea67) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf2[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -67,6 +79,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+36 (+28.12%) : 177197.dasm - System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
@@ -2,20 +2,20 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 10, 13.50) ref -> x0 this class-hnd single-def <System.Xml.Xsl.Xslt.OutputScopeManager>
-; V01 loc0 [V01,T02] ( 4, 16 ) int -> x3
+; V00 this [V00,T02] ( 12,135.31) ref -> x0 this class-hnd single-def <System.Xml.Xsl.Xslt.OutputScopeManager>
+; V01 loc0 [V01,T01] ( 4,256.00) int -> x3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 24 ) ref -> x2 class-hnd exact "impAppendStmt" <<unknown class>>
-;* V04 tmp2 [V04,T06] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-;* V05 tmp3 [V05,T07] ( 0, 0 ) int -> zero-ref "index expr"
-; V06 cse0 [V06,T03] ( 3, 8.50) byref -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T04] ( 2, 4.50) ref -> x1 hoist "CSE - aggressive"
-; V08 cse2 [V08,T05] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V03 tmp1 [V03,T00] ( 3,384.00) ref -> x2 class-hnd exact "impAppendStmt" <<unknown class>>
+; V04 tmp2 [V04,T04] ( 3, 4.80) ref -> x1 single-def "arr expr"
+; V05 tmp3 [V05,T05] ( 3, 4.80) int -> x2 "index expr"
+; V06 cse0 [V06,T03] ( 3, 65.51) ref -> x1 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -27,21 +27,13 @@ G_M50390_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
; gcrRegs +[x0]
ldr w1, [x0, #0x14]
cmp w1, #0
- ble G_M50390_IG05
+ bgt G_M50390_IG07
;; size=12 bbWeight=1 PerfScore 4.50
-G_M50390_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- sub w1, w1, #1
- str w1, [x0, #0x14]
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M50390_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50390_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M50390_IG03: ; bbWeight=0.71, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x1, [x0, #0x08]
; gcrRegs +[x1]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M50390_IG06: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.71 PerfScore 2.14
+G_M50390_IG04: ; bbWeight=64.00, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
mov x2, x1
; gcrRegs +[x2]
ldr w3, [x0, #0x10]
@@ -56,30 +48,49 @@ G_M50390_IG06: ; bbWeight=4, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, b
add x2, x2, x3
; gcrRegs -[x2]
; byrRegs +[x2]
- ldr w3, [x2, #0x10]
- cbz w3, G_M50390_IG06
- ;; size=52 bbWeight=4 PerfScore 80.00
-G_M50390_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0004 {x2}, byref
+ ldr w2, [x2, #0x10]
+ ; byrRegs -[x2]
+ cbz w2, G_M50390_IG04
+ ;; size=52 bbWeight=64.00 PerfScore 1280.00
+G_M50390_IG05: ; bbWeight=0.80, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x0, #0x10]
+ ldr w3, [x1, #0x08]
+ cmp w2, w3
+ bhs G_M50390_IG09
+ mov w3, #24
+ mov x4, #16
+ umaddl x2, w2, w3, x4
+ add x1, x1, x2
; gcrRegs -[x1]
- ldr w1, [x2, #0x10]
+ ; byrRegs +[x1]
+ ldr w1, [x1, #0x10]
+ ; byrRegs -[x1]
str w1, [x0, #0x14]
ldr w1, [x0, #0x14]
sub w1, w1, #1
str w1, [x0, #0x14]
- ;; size=20 bbWeight=0.50 PerfScore 4.25
-G_M50390_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=52 bbWeight=0.80 PerfScore 18.00
+G_M50390_IG06: ; bbWeight=0.80, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.80 PerfScore 1.60
+G_M50390_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ ldr w1, [x0, #0x14]
+ sub w1, w1, #1
+ str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.20 PerfScore 0.90
+G_M50390_IG08: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
G_M50390_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ; byrRegs -[x2]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 128, prolog size 8, PerfScore 94.50, instruction count 32, allocated bytes for code 128 (MethodHash=e69e3b29) for method System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
+; Total bytes of code 164, prolog size 8, PerfScore 1309.04, instruction count 41, allocated bytes for code 164 (MethodHash=e69e3b29) for method System.Xml.Xsl.Xslt.OutputScopeManager:PopScope():this (FullOpts)
; ============================================================
Unwind Info:
@@ -90,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 41 (0x00029) Actual length = 164 (0x0000a4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+36.36%) : 263830.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
@@ -2,28 +2,29 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 3.50) byref -> x0 this single-def
+; V00 this [V00,T00] ( 5, 3.96) byref -> x0 this single-def
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Text.Json.JsonElement>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T02] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-; V05 tmp3 [V05,T03] ( 2, 2 ) int -> x1 "Inlining Arg"
-; V06 tmp4 [V06,T04] ( 2, 1 ) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
-; V07 tmp5 [V07,T06] ( 2, 1 ) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
-; V08 tmp6 [V08,T05] ( 2, 1 ) ref -> x0 single-def "field V03._parent (fldOffset=0x0)" P-INDEP
-; V09 tmp7 [V09,T07] ( 2, 1 ) int -> x1 "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 cse0 [V10,T01] ( 3, 2.50) int -> x1 "CSE - aggressive"
+; V04 tmp2 [V04,T01] ( 2, 1.92) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V05 tmp3 [V05,T02] ( 2, 1.92) int -> x0 "Inlining Arg"
+; V06 tmp4 [V06,T03] ( 2, 1.04) ref -> x0 single-def "field V01._parent (fldOffset=0x0)" P-INDEP
+; V07 tmp5 [V07,T04] ( 2, 1.04) int -> x1 "field V01._idx (fldOffset=0x8)" P-INDEP
+; V08 tmp6 [V08,T05] ( 2, 0.96) ref -> registers single-def "field V03._parent (fldOffset=0x0)" P-INDEP
+; V09 tmp7 [V09,T06] ( 2, 0.96) int -> [fp+0x1C] spill-single-def "field V03._idx (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 16
G_M36569_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
@@ -31,29 +32,35 @@ G_M36569_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
ldr w1, [x0]
tbz w1, #31, G_M36569_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M36569_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M36569_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
mov x0, xzr
; gcrRegs +[x0]
mov w1, wzr
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M36569_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ;; size=8 bbWeight=0.52 PerfScore 0.52
+G_M36569_IG04: ; bbWeight=0.52, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M36569_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+ ;; size=8 bbWeight=0.52 PerfScore 1.04
+G_M36569_IG05: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x0, [x0, #0x08]
- ; gcrRegs +[x0]
+ ldr x1, [x0, #0x08]
+ ; gcrRegs +[x1]
+ ldr w0, [x0]
; byrRegs -[x0]
- ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M36569_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ str w0, [fp, #0x1C] // [V09 tmp7]
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ldr w1, [fp, #0x1C] // [V09 tmp7]
+ ; gcrRegs -[x1]
+ ;; size=20 bbWeight=0.48 PerfScore 4.56
+G_M36569_IG06: ; bbWeight=0.48, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=0.48 PerfScore 0.96
-; Total bytes of code 44, prolog size 8, PerfScore 9.50, instruction count 11, allocated bytes for code 44 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 12.58, instruction count 15, allocated bytes for code 60 (MethodHash=79137126) for method System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -64,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -75,7 +82,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
realworld.run.windows.arm64.checked.mch
-32 (-14.04%) : 22707.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System._Canon]:getHasAnyApplicableMember():ubyte:this (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]>
+; V00 this [V00,T08] ( 4, 4 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]>
-; V02 loc1 [V02 ] ( 2, 4 ) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
+; V02 loc1 [V02 ] ( 2, 37.89) struct (80) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (56) zero-ref do-not-enreg[SF] ld-addr-op <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 ) long -> zero-ref "spilling helperCall"
@@ -18,21 +20,22 @@
;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V08 tmp4 [V08 ] ( 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 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp7 [V11,T04] ( 3, 6 ) ubyte -> x0 "Inline stloc first use temp"
+;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp7 [V11,T03] ( 3, 56.84) ubyte -> x0 "Inline stloc first use temp"
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref 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,T02] ( 3, 11 ) ref -> x20 "field V01._builder (fldOffset=0x0)" P-INDEP
-; V16 tmp12 [V16,T00] ( 5, 27 ) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
+; V15 tmp11 [V15,T04] ( 2, 43.11) ref -> x20 "field V01._builder (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T00] ( 5,146.26) int -> x21 "field V01._index (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "V03.[004..005)"
-;* V18 cse0 [V18,T11] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
-; V19 cse1 [V19,T06] ( 2, 2 ) long -> x22 "CSE - aggressive"
-; V20 rat0 [V20,T07] ( 2, 4 ) long -> x0 "Spilling to split statement for tree"
-;* V21 rat1 [V21,T08] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V22 rat2 [V22,T05] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
-;* V23 rat3 [V23,T10] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V24 rat4 [V24,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V18 cse0 [V18,T12] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
+; V19 cse1 [V19,T02] ( 3,103.16) ref -> x0 "CSE - aggressive"
+; V20 cse2 [V20,T06] ( 1, 1 ) long -> x22 "CSE - aggressive"
+;* V21 rat0 [V21,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+;* V22 rat1 [V22,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V23 rat2 [V23,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+;* V24 rat3 [V24,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
+;* V25 rat4 [V25,T01] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 96
@@ -50,7 +53,7 @@ G_M864_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {},
mov x19, x0
; gcrRegs +[x19]
;; size=44 bbWeight=1 PerfScore 9.00
-G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:GetEnumerator():Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:this
@@ -63,24 +66,23 @@ G_M864_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byre
; gcrRegs +[x20]
mov w21, w1
ldr x22, [x19]
- mov x0, x22
+ ;; size=40 bbWeight=1 PerfScore 15.50
+G_M864_IG03: ; bbWeight=42.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x0, #0x38]
- ldr x0, [x0]
- ldr x0, [x0, #0x30]
- cbnz x0, G_M864_IG04
- b G_M864_IG04
- ;; size=64 bbWeight=1 PerfScore 27.00
-G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ add w21, w21, #1
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
+ ldr w8, [x0, #0x10]
+ cmp w21, w8
+ bge G_M864_IG07
+ ;; size=20 bbWeight=42.11 PerfScore 336.84
+G_M864_IG04: ; bbWeight=18.95, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
add x8, fp, #24 // [V02 loc1]
mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]:get_Item(int):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
- ldr wzr, [x0]
blr x2
; gcrRegs -[x0]
ldrb w0, [fp, #0x34] // [V02 loc1+0x1c]
@@ -88,38 +90,29 @@ G_M864_IG03: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {},
sub w0, w0, #22
cmp w1, #1
ccmp w0, #1, z, hi
- bls G_M864_IG07
- ;; size=60 bbWeight=2 PerfScore 35.00
-G_M864_IG04: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- add w21, w21, #1
- ldr x0, [x20, #0x08]
- ; gcrRegs +[x0]
- ldr w0, [x0, #0x10]
- ; gcrRegs -[x0]
- cmp w21, w0
- blt G_M864_IG03
- ;; size=20 bbWeight=8 PerfScore 64.00
-G_M864_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ bhi G_M864_IG03
+ ;; size=52 bbWeight=18.95 PerfScore 217.89
+G_M864_IG05: ; bbWeight=2.46, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M864_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldp x21, x22, [sp, #0x80]
- ldp x19, x20, [sp, #0x70]
- ldp fp, lr, [sp], #0x90
- ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M864_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M864_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=2.46 PerfScore 1.23
+G_M864_IG06: ; bbWeight=2.46, epilog, nogc, extend
ldp x21, x22, [sp, #0x80]
ldp x19, x20, [sp, #0x70]
ldp fp, lr, [sp], #0x90
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=16 bbWeight=2.46 PerfScore 9.86
+G_M864_IG07: ; bbWeight=0.53, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.53 PerfScore 0.26
+G_M864_IG08: ; bbWeight=0.53, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x80]
+ ldp x19, x20, [sp, #0x70]
+ ldp fp, lr, [sp], #0x90
+ ret lr
+ ;; size=16 bbWeight=0.53 PerfScore 2.11
-; Total bytes of code 228, prolog size 40, PerfScore 139.50, instruction count 57, allocated bytes for code 228 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
+; Total bytes of code 196, prolog size 40, PerfScore 592.69, instruction count 49, allocated bytes for code 196 (MethodHash=caadfc9f) for method Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -130,7 +123,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-12.50%) : 15723.dasm - System.Text.RegularExpressions.RegexNode:g_CanJoinLengthCheck|600(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x0 class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T03] ( 3, 2 ) ubyte -> x0
-; V02 loc1 [V02,T02] ( 3, 2.50) ubyte -> x1
+; V00 arg0 [V00,T00] ( 5, 4.18) ref -> x0 class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T03] ( 3, 1.60) ubyte -> x0
+; V02 loc1 [V02,T02] ( 3, 2.09) ubyte -> x1
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 rat0 [V05,T01] ( 3, 6 ) int -> x2 "ReplaceWithLclVar is creating a new local variable"
@@ -26,52 +28,40 @@ G_M17774_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldrb w1, [x0, #0x2E]
sub w2, w1, #3
cmp w2, #9
- bhi G_M17774_IG03
- mov w1, w2
- adr x2, [@RWD00]
- ldr w2, [x2, x1, LSL #2]
- adr x3, [G_M17774_IG02]
- add x2, x2, x3
- br x2
- ;; size=40 bbWeight=1 PerfScore 11.00
-G_M17774_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- sub w2, w1, #43
- cmp w2, #2
- bls G_M17774_IG05
- b G_M17774_IG06
- ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M17774_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov w0, #1
- b G_M17774_IG07
- ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M17774_IG05: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
+ bhi G_M17774_IG07
+ mov w1, #63
+ lsr w1, w1, w2
+ tbz w1, #0, G_M17774_IG06
+ ;; size=28 bbWeight=1 PerfScore 7.00
+G_M17774_IG03: ; bbWeight=0.59, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldp w1, w0, [x0, #0x20]
; gcrRegs -[x0]
cmp w1, w0
- beq G_M17774_IG04
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M17774_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M17774_IG06
+ ;; size=12 bbWeight=0.59 PerfScore 2.65
+G_M17774_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17774_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=4 bbWeight=0.33 PerfScore 0.17
+G_M17774_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-RWD00 dd G_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
+G_M17774_IG06: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ b G_M17774_IG05
+ ;; size=8 bbWeight=0.27 PerfScore 0.41
+G_M17774_IG07: ; bbWeight=0.09, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
+ sub w2, w1, #43
+ cmp w2, #2
+ bls G_M17774_IG03
+ ;; size=12 bbWeight=0.09 PerfScore 0.18
+G_M17774_IG08: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ b G_M17774_IG04
+ ;; size=4 bbWeight=0.05 PerfScore 0.05
-
-; Total bytes of code 96, prolog size 8, PerfScore 19.25, instruction count 24, allocated bytes for code 96 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 13.95, instruction count 21, allocated bytes for code 84 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-12.50%) : 18772.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
@@ -24,34 +26,26 @@ G_M19887_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M19887_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp w0, w1
- bgt G_M19887_IG04
+ bgt G_M19887_IG05
;; size=8 bbWeight=1 PerfScore 1.50
-G_M19887_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M19887_IG05
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19887_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M19887_IG06
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19887_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M19887_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19887_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w2, w0
- mov w0, w1
- mov w1, w2
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M19887_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19887_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w2, #5
cmp w0, #3
ccmp w1, #4, 0, eq
csel w0, w2, w1, eq
;; size=16 bbWeight=1 PerfScore 2.00
-G_M19887_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M19887_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
+G_M19887_IG05: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w2, w0
+ mov w0, w1
+ mov w1, w2
+ b G_M19887_IG03
+ ;; size=16 bbWeight=0.48 PerfScore 1.20
-; Total bytes of code 64, prolog size 8, PerfScore 9.25, instruction count 16, allocated bytes for code 64 (MethodHash=25a6b250) for method Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 8.20, instruction count 14, allocated bytes for code 56 (MethodHash=25a6b250) for method Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+20.83%) : 32493.dasm - System.Management.Automation.Language.CommandParameterAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
@@ -2,32 +2,37 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially 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; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 4.50) ref -> x20 this class-hnd single-def <System.Management.Automation.Language.CommandParameterAst>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
-; V02 loc0 [V02,T02] ( 5, 3.50) int -> x2
+; V00 this [V00,T01] ( 6, 4.76) ref -> x20 this class-hnd single-def <System.Management.Automation.Language.CommandParameterAst>
+; V01 arg1 [V01,T00] ( 7, 6.51) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
+; V02 loc0 [V02,T04] ( 5, 4.15) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V04 tmp1 [V04,T02] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T04] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
-; V07 cse0 [V07,T05] ( 3, 1.50) ref -> x0 "CSE - moderate"
+; V06 tmp3 [V06,T03] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+; V08 tmp5 [V08,T05] ( 3, 3.07) ref -> x0 single-def "argument with side effect"
+; V09 cse0 [V09,T06] ( 3, 2.11) ref -> x0 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M31744_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M31744_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -38,11 +43,9 @@ G_M31744_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2, #0x20]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- cmp w2, #1
+ sxtw w21, w0
+ cmp w21, #1
bne G_M31744_IG06
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M31744_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -51,6 +54,8 @@ G_M31744_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1 x19] +[x0]
cbz x0, G_M31744_IG04
+ ;; size=60 bbWeight=1 PerfScore 17.00
+G_M31744_IG03: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -59,21 +64,26 @@ G_M31744_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1 x20]
- ;; size=48 bbWeight=0.50 PerfScore 5.00
-G_M31744_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M31744_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M31744_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M31744_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M31744_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M31744_IG06: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
ldr x0, [x20, #0x28]
; gcrRegs +[x0]
- cbz x0, G_M31744_IG07
- cbnz w2, G_M31744_IG07
+ cbz x0, G_M31744_IG09
+ ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M31744_IG07: ; bbWeight=0.64, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz w21, G_M31744_IG09
+ ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M31744_IG08: ; bbWeight=0.51, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
mov x1, x19
; gcrRegs +[x1]
ldr x2, [x0]
@@ -81,25 +91,39 @@ G_M31744_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x2, [x2, #0x30]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- ;; size=36 bbWeight=0.50 PerfScore 8.00
-G_M31744_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
+ sxtw w21, w0
+ ;; size=24 bbWeight=0.51 PerfScore 5.63
+G_M31744_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1 x19] +[x0]
+ cbz x0, G_M31744_IG11
+ ;; size=24 bbWeight=1 PerfScore 4.00
+G_M31744_IG10: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ;; size=24 bbWeight=0.50 PerfScore 2.75
-G_M31744_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- br x3
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ movz x11, #0xD1FFAB1E // code for <unknown method>
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ ldr x2, [x11]
+ blr x2
+ ; gcrRegs -[x0-x1 x20]
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M31744_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w21
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M31744_IG12: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 192, prolog size 12, PerfScore 35.50, instruction count 48, allocated bytes for code 192 (MethodHash=bd1e83ff) for method System.Management.Automation.Language.CommandParameterAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 232, prolog size 16, PerfScore 51.73, instruction count 58, allocated bytes for code 232 (MethodHash=bd1e83ff) for method System.Management.Automation.Language.CommandParameterAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -110,7 +134,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -121,10 +145,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+40 (+20.83%) : 30942.dasm - System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
@@ -2,30 +2,35 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp 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 -> x20 this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
-; V02 loc0 [V02,T02] ( 5, 3.50) int -> x2
+; V00 this [V00,T01] ( 6, 4.60) ref -> x20 this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst>
+; V01 arg1 [V01,T00] ( 7, 6.64) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
+; V02 loc0 [V02,T04] ( 5, 4.44) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V04 tmp1 [V04,T02] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
+; V06 tmp3 [V06,T03] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M63420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M63420_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -36,11 +41,9 @@ G_M63420_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- cmp w2, #1
+ sxtw w21, w0
+ cmp w21, #1
bne G_M63420_IG06
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -49,6 +52,8 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1 x19] +[x0]
cbz x0, G_M63420_IG04
+ ;; size=60 bbWeight=1 PerfScore 17.00
+G_M63420_IG03: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -57,18 +62,21 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1 x20]
- ;; size=48 bbWeight=0.50 PerfScore 5.00
-G_M63420_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M63420_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M63420_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M63420_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M63420_IG06: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- cbnz w2, G_M63420_IG07
+ cbnz w21, G_M63420_IG08
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M63420_IG07: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x0, x20
; gcrRegs +[x0]
mov x1, x19
@@ -79,25 +87,39 @@ G_M63420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x2, [x2]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- ;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M63420_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
+ sxtw w21, w0
+ ;; size=32 bbWeight=0.64 PerfScore 4.48
+G_M63420_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1 x19] +[x0]
+ cbz x0, G_M63420_IG10
+ ;; size=24 bbWeight=1 PerfScore 4.00
+G_M63420_IG09: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ;; size=24 bbWeight=0.50 PerfScore 2.75
-G_M63420_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- br x3
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ movz x11, #0xD1FFAB1E // code for <unknown method>
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ ldr x2, [x11]
+ blr x2
+ ; gcrRegs -[x0-x1 x20]
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M63420_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w21
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M63420_IG11: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 192, prolog size 12, PerfScore 31.50, instruction count 48, allocated bytes for code 192 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 232, prolog size 16, PerfScore 47.54, instruction count 58, allocated bytes for code 232 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,10 +141,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+40 (+21.28%) : 32789.dasm - System.Management.Automation.Language.ArrayExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
@@ -2,31 +2,36 @@
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; fp based frame
; partially 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
+; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 4.50) ref -> x20 this class-hnd single-def <System.Management.Automation.Language.ArrayExpressionAst>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
-; V02 loc0 [V02,T02] ( 5, 3.50) int -> x2
+; V00 this [V00,T01] ( 6, 4.60) ref -> x20 this class-hnd single-def <System.Management.Automation.Language.ArrayExpressionAst>
+; V01 arg1 [V01,T00] ( 7, 6.64) ref -> x19 class-hnd single-def <System.Management.Automation.Language.AstVisitor>
+; V02 loc0 [V02,T04] ( 5, 4.44) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 3 ) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V04 tmp1 [V04,T02] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T04] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V06 tmp3 [V06,T03] ( 3, 4.96) ref -> x0 class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+; V08 tmp5 [V08,T05] ( 3, 3.84) ref -> x0 single-def "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M58853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- stp x19, x20, [sp, #0x10]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=20 bbWeight=1 PerfScore 3.50
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M58853_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -37,11 +42,9 @@ G_M58853_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x2, [x2, #0x08]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- cmp w2, #1
+ sxtw w21, w0
+ cmp w21, #1
bne G_M58853_IG06
- ;; size=36 bbWeight=1 PerfScore 13.00
-G_M58853_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x19
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -50,6 +53,8 @@ G_M58853_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
bl CORINFO_HELP_ISINSTANCEOFINTERFACE
; gcrRegs -[x1 x19] +[x0]
cbz x0, G_M58853_IG04
+ ;; size=60 bbWeight=1 PerfScore 17.00
+G_M58853_IG03: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -58,18 +63,21 @@ G_M58853_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr x2, [x11]
blr x2
; gcrRegs -[x0-x1 x20]
- ;; size=48 bbWeight=0.50 PerfScore 5.00
-G_M58853_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M58853_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M58853_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M58853_IG05: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M58853_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M58853_IG06: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- cbnz w2, G_M58853_IG07
+ cbnz w21, G_M58853_IG08
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M58853_IG07: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x20]
; gcrRegs +[x0]
mov x1, x19
@@ -79,25 +87,39 @@ G_M58853_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x2, [x2, #0x30]
blr x2
; gcrRegs -[x0-x1]
- sxtw w2, w0
- ;; size=32 bbWeight=0.50 PerfScore 7.50
-G_M58853_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
- ; gcrRegs +[x0]
+ sxtw w21, w0
+ ;; size=28 bbWeight=0.64 PerfScore 8.96
+G_M58853_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x1, x19
+ ; gcrRegs +[x1]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[x1 x19] +[x0]
+ cbz x0, G_M58853_IG10
+ ;; size=24 bbWeight=1 PerfScore 4.00
+G_M58853_IG09: ; bbWeight=0.48, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref
mov x1, x20
; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ;; size=24 bbWeight=0.50 PerfScore 2.75
-G_M58853_IG08: ; bbWeight=0.50, epilog, nogc, extend
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x20
- br x3
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ movz x11, #0xD1FFAB1E // code for <unknown method>
+ movk x11, #0xD1FFAB1E LSL #16
+ movk x11, #0xD1FFAB1E LSL #32
+ ldr x2, [x11]
+ blr x2
+ ; gcrRegs -[x0-x1 x20]
+ ;; size=24 bbWeight=0.48 PerfScore 2.88
+G_M58853_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, w21
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M58853_IG11: ; bbWeight=1, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 188, prolog size 12, PerfScore 35.00, instruction count 47, allocated bytes for code 188 (MethodHash=d0431a1a) for method System.Management.Automation.Language.ArrayExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 228, prolog size 16, PerfScore 52.02, instruction count 57, allocated bytes for code 228 (MethodHash=d0431a1a) for method System.Management.Automation.Language.ArrayExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +130,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
+ Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,10 +141,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+ C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
smoke_tests.nativeaot.windows.arm64.checked.mch
-8 (-18.18%) : 18956.dasm - System.Number:ThrowOverflowOrFormatExceptionushort,ulong (FullOpts)
@@ -5,39 +5,40 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 3, 2 ) int -> x0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) int -> x0 single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 2, 1 ) byref -> [fp+0x10] single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T02] ( 2, 1 ) int -> [fp+0x1C] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V03 tmp1 [V03,T01] ( 2, 1.80) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 1.80) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;
-; Lcl frame size = 16
+; Lcl frame size = 0
-G_M54166_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
+G_M54166_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- str x1, [fp, #0x10] // [V03 tmp1]
- ; GC ptr vars +{V03}
- str w2, [fp, #0x1C] // [V04 tmp2]
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M54166_IG02: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M54166_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
+ ; byrRegs +[x1]
cmp w0, #1
- bne G_M54166_IG03
- ldr x0, [fp, #0x10] // [V03 tmp1]
+ bne G_M54166_IG04
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M54166_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+ mov x0, x1
; byrRegs +[x0]
- ldr w1, [fp, #0x1C] // [V04 tmp2]
- ; GC ptr vars -{V03}
+ mov w1, w2
+ ; byrRegs -[x1]
bl <unknown method>
; byrRegs -[x0]
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M54166_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=0.80 PerfScore 1.60
+G_M54166_IG04: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl System.Number:ThrowOverflowException[ulong]()
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 44, prolog size 8, PerfScore 0.00, instruction count 11, allocated bytes for code 44 (MethodHash=1a022c69) for method System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
+; Total bytes of code 36, prolog size 8, PerfScore 4.60, instruction count 9, allocated bytes for code 36 (MethodHash=1a022c69) for method System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
; ============================================================
Unwind Info:
@@ -48,12 +49,12 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 9 (0x00009) Actual length = 36 (0x000024)
---- Epilog scopes ----
No epilogs
---- Unwind codes ----
E1 set_fp; mov fp, sp
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-32 (-14.55%) : 9428.dasm - System.StringComparer:Equals(System.Object,System.Object):ubyte:this (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; fp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 this [V00,T02] ( 6, 3.16) ref -> x0 this class-hnd single-def <System.StringComparer>
-; V01 arg1 [V01,T00] ( 7, 5 ) ref -> x1 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T01] ( 7, 5 ) ref -> x2 class-hnd single-def <System.Object>
-; V03 loc0 [V03,T04] ( 4, 1 ) ref -> x3 class-hnd exact <System.String>
-; V04 loc1 [V04,T05] ( 4, 1 ) ref -> x2 class-hnd exact <System.String>
+; V00 this [V00,T02] ( 5, 2.55) ref -> x0 this class-hnd single-def <System.StringComparer>
+; V01 arg1 [V01,T00] ( 8, 5.42) ref -> x3 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T01] ( 7, 4.86) ref -> x2 class-hnd single-def <System.Object>
+; V03 loc0 [V03,T03] ( 4, 0.72) ref -> x1 class-hnd exact <System.String>
+; V04 loc1 [V04,T05] ( 4, 0.62) ref -> x2 class-hnd exact <System.String>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.String>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.String>
@@ -19,133 +20,125 @@
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.OrdinalCaseSensitiveComparer>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.OrdinalComparer>
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.OrdinalIgnoreCaseComparer>
-; V12 cse0 [V12,T03] ( 3, 1.50) long -> x19 "CSE - moderate"
+; V12 cse0 [V12,T04] ( 3, 0.96) long -> x3 "CSE - conservative"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M62400_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M62400_IG02: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0-x2]
- cmp x1, x2
- bne G_M62400_IG05
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M62400_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x2]
- mov w0, #1
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M62400_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M62400_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x2]
- cbz x1, G_M62400_IG06
- cbnz x2, G_M62400_IG08
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M62400_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x2]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M62400_IG07: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M62400_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0-x2]
- ldr x19, [x1]
- adrp x3, [HIGH RELOC #0xD1FFAB1E] // System.String
- add x3, x3, [LOW RELOC #0xD1FFAB1E]
- cmp x19, x3
- bne G_M62400_IG16
mov x3, x1
; gcrRegs +[x3]
- ldr x4, [x2]
- adrp x5, [HIGH RELOC #0xD1FFAB1E] // System.String
- add x5, x5, [LOW RELOC #0xD1FFAB1E]
- cmp x4, x5
- bne G_M62400_IG16
- ldr x1, [x0]
- ; gcrRegs -[x1]
- adrp x4, [HIGH RELOC #0xD1FFAB1E]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M62400_IG02: ; bbWeight=1, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0 x2]
+ cmp x3, x2
+ beq G_M62400_IG14
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M62400_IG03: ; bbWeight=0.80, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbz x3, G_M62400_IG05
+ ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M62400_IG04: ; bbWeight=0.64, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, byref, isz
+ cbnz x2, G_M62400_IG07
+ ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M62400_IG05: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x2-x3]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.29 PerfScore 0.14
+G_M62400_IG06: ; bbWeight=0.29, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.29 PerfScore 0.58
+G_M62400_IG07: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0 x2-x3]
+ ldr x1, [x3]
+ adrp x4, [HIGH RELOC #0xD1FFAB1E] // System.String
add x4, x4, [LOW RELOC #0xD1FFAB1E]
cmp x1, x4
- bne G_M62400_IG11
- ;; size=64 bbWeight=0.50 PerfScore 8.50
-G_M62400_IG09: ; bbWeight=0.17, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
+ beq G_M62400_IG10
+ ;; size=20 bbWeight=0.51 PerfScore 2.82
+G_M62400_IG08: ; bbWeight=0.30, gcrefRegs=000C {x2 x3}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
mov x0, x3
; gcrRegs +[x0]
mov x1, x2
; gcrRegs +[x1]
- ;; size=8 bbWeight=0.17 PerfScore 0.17
-G_M62400_IG10: ; bbWeight=0.17, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- b System.String:Equals(System.String,System.String):ubyte
+ ldr x2, [x3]
+ ; gcrRegs -[x2]
+ ldr x2, [x2, #0x20]
+ ;; size=16 bbWeight=0.30 PerfScore 2.09
+G_M62400_IG09: ; bbWeight=0.30, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.17 PerfScore 0.68
-G_M62400_IG11: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x1]
- ldr x1, [x0]
+ ;; size=8 bbWeight=0.30 PerfScore 0.60
+G_M62400_IG10: ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1] +[x2]
+ mov x1, x3
+ ; gcrRegs +[x1]
+ ldr x4, [x2]
+ adrp x5, [HIGH RELOC #0xD1FFAB1E] // System.String
+ add x5, x5, [LOW RELOC #0xD1FFAB1E]
+ cmp x4, x5
+ bne G_M62400_IG08
+ ;; size=24 bbWeight=0.51 PerfScore 3.07
+G_M62400_IG11: ; bbWeight=0.41, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x3]
+ ldr x3, [x0]
adrp x4, [HIGH RELOC #0xD1FFAB1E]
add x4, x4, [LOW RELOC #0xD1FFAB1E]
- cmp x1, x4
- bne G_M62400_IG14
- ;; size=20 bbWeight=0.33 PerfScore 1.82
-G_M62400_IG12: ; bbWeight=0.17, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, byref
- mov x1, x3
- ; gcrRegs +[x1]
- ;; size=4 bbWeight=0.17 PerfScore 0.08
-G_M62400_IG13: ; bbWeight=0.17, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- b System.OrdinalComparer:Equals(System.String,System.String):ubyte:this
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.17 PerfScore 0.66
-G_M62400_IG14: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x1]
- mov x1, x3
- ; gcrRegs +[x1]
- ;; size=4 bbWeight=0.17 PerfScore 0.08
-G_M62400_IG15: ; bbWeight=0.17, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- b System.OrdinalIgnoreCaseComparer:Equals(System.String,System.String):ubyte:this
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.17 PerfScore 0.66
-G_M62400_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x3]
+ cmp x3, x4
+ bne G_M62400_IG16
+ ;; size=20 bbWeight=0.41 PerfScore 2.25
+G_M62400_IG12: ; bbWeight=0.07, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
mov x0, x1
; gcrRegs +[x0]
mov x1, x2
- ldr x2, [x19, #0x20]
- ; gcrRegs -[x2]
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M62400_IG17: ; bbWeight=0.50, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- br x2
+ ;; size=8 bbWeight=0.07 PerfScore 0.07
+G_M62400_IG13: ; bbWeight=0.07, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ b System.String:Equals(System.String,System.String):ubyte
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=8 bbWeight=0.07 PerfScore 0.14
+G_M62400_IG14: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0-x2]
+ mov w0, #1
+ ;; size=4 bbWeight=0.20 PerfScore 0.10
+G_M62400_IG15: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
+G_M62400_IG16: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x0-x2]
+ adrp x4, [HIGH RELOC #0xD1FFAB1E]
+ add x4, x4, [LOW RELOC #0xD1FFAB1E]
+ cmp x3, x4
+ bne G_M62400_IG18
+ ;; size=16 bbWeight=0.14 PerfScore 0.35
+G_M62400_IG17: ; bbWeight=0.07, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ b System.OrdinalComparer:Equals(System.String,System.String):ubyte:this
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.07 PerfScore 0.14
+G_M62400_IG18: ; bbWeight=0.07, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldp fp, lr, [sp], #0x10
+ b System.OrdinalIgnoreCaseComparer:Equals(System.String,System.String):ubyte:this
+ ; gcr arg pop 0
+ ;; size=8 bbWeight=0.07 PerfScore 0.14
-; Total bytes of code 220, prolog size 12, PerfScore 26.15, instruction count 55, allocated bytes for code 220 (MethodHash=30ae0c3f) for method System.StringComparer:Equals(System.Object,System.Object):ubyte:this (FullOpts)
+; Total bytes of code 188, prolog size 12, PerfScore 17.84, instruction count 47, allocated bytes for code 188 (MethodHash=30ae0c3f) for method System.StringComparer:Equals(System.Object,System.Object):ubyte: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 : 6
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,10 +161,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
...
-12 (-14.29%) : 22378.dasm - System.Threading.Tasks.Task:MarkExceptionsAsHandled():this (FullOpts)
@@ -5,14 +5,16 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Threading.Tasks.Task>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Threading.Tasks.Task>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 3, 5 ) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
+; V02 tmp1 [V02,T01] ( 3, 5.60) ref -> x0 class-hnd exact single-def "dup spill" <<unknown class>>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref single-def
-; V04 tmp3 [V04,T00] ( 5, 5 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Threading.Tasks.TaskExceptionHolder>
+; V04 tmp3 [V04,T00] ( 4, 7.20) ref -> x0 class-hnd exact single-def "dup spill" <System.Threading.Tasks.TaskExceptionHolder>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
+; V06 cse0 [V06,T03] ( 3, 3 ) byref -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -29,38 +31,35 @@ G_M12742_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
ldar x0, [x0]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbnz x0, G_M12742_IG04
+ cbz x0, G_M12742_IG05
;; size=12 bbWeight=1 PerfScore 4.50
-G_M12742_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x0]
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M12742_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x0]
+G_M12742_IG03: ; bbWeight=0.80, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
add x0, x0, #24
; gcrRegs -[x0]
; byrRegs +[x0]
- ldar x19, [x0]
- ; gcrRegs +[x19]
- cbz x19, G_M12742_IG03
- add x0, x19, #32
- ldarb w0, [x0]
- ; byrRegs -[x0]
- cbnz w0, G_M12742_IG03
- mov x0, x19
+ ldar x0, [x0]
; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ cbz x0, G_M12742_IG05
+ ;; size=12 bbWeight=0.80 PerfScore 3.60
+G_M12742_IG04: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ add x19, x0, #32
+ ; byrRegs +[x19]
+ ldarb w1, [x19]
+ cbnz w1, G_M12742_IG05
bl System.GC:SuppressFinalize(System.Object)
; gcrRegs -[x0]
- add x0, x19, #32
- ; byrRegs +[x0]
- mov w1, #1
- stlrb w1, [x0]
- b G_M12742_IG03
- ;; size=48 bbWeight=0.50 PerfScore 6.75
+ mov w0, #1
+ stlrb w0, [x19]
+ ;; size=24 bbWeight=1 PerfScore 7.00
+G_M12742_IG05: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; byrRegs -[x19]
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.20 PerfScore 0.80
-; Total bytes of code 84, prolog size 12, PerfScore 17.75, instruction count 21, allocated bytes for code 84 (MethodHash=59a4ce39) for method System.Threading.Tasks.Task:MarkExceptionsAsHandled():this (FullOpts)
+; Total bytes of code 72, prolog size 12, PerfScore 18.40, instruction count 18, allocated bytes for code 72 (MethodHash=59a4ce39) for method System.Threading.Tasks.Task:MarkExceptionsAsHandled():this (FullOpts)
; ============================================================
Unwind Info:
@@ -71,7 +70,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 18 (0x00012) Actual length = 72 (0x000048)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+50.00%) : 20830.dasm - System.Runtime.Intrinsics.Vector641[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64
1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 3, 3 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
-; V01 arg1 [V01 ] ( 3, 3 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V00 arg0 [V00 ] ( 3, 6.74) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V01 arg1 [V01 ] ( 3, 6.74) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
;* V02 loc0 [V02,T01] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 4 ) long -> x0 "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 2, 18.95) long -> x0 "impAppendStmt"
;* V05 tmp2 [V05,T02] ( 0, 0 ) int -> zero-ref
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -24,37 +25,50 @@
;
; Lcl frame size = 16
-G_M21576_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M21576_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
stp d1, d0, [fp, #0x10] // [V01 arg1], [V00 arg0]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M21576_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M21576_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldp x1, x0, [fp, #0x10] // [V01 arg1], [V00 arg0]
cmp x1, x0
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M21576_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M21576_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 21.32
+G_M21576_IG03: ; bbWeight=5.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, #1
+ ;; size=4 bbWeight=5.26 PerfScore 2.63
+G_M21576_IG04: ; bbWeight=5.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=5.26 PerfScore 10.53
+G_M21576_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M21576_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 8.50, instruction count 8, allocated bytes for code 32 (MethodHash=ae40abb7) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 47.50, instruction count 12, allocated bytes for code 48 (MethodHash=ae40abb7) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+50.00%) : 18563.dasm - System.Runtime.Intrinsics.Vector64:EqualsAnylong:ubyte (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 3, 3 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[long]>
-; V01 arg1 [V01 ] ( 3, 3 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[long]>
+; V00 arg0 [V00 ] ( 3, 6.74) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[long]>
+; V01 arg1 [V01 ] ( 3, 6.74) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[long]>
;* V02 loc0 [V02,T01] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 4 ) long -> x0 "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 2, 18.95) long -> x0 "impAppendStmt"
;* V05 tmp2 [V05,T02] ( 0, 0 ) int -> zero-ref
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -24,37 +25,50 @@
;
; Lcl frame size = 16
-G_M32717_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M32717_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
stp d1, d0, [fp, #0x10] // [V01 arg1], [V00 arg0]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M32717_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M32717_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldp x1, x0, [fp, #0x10] // [V01 arg1], [V00 arg0]
cmp x1, x0
- cset x0, eq
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M32717_IG03: ; bbWeight=1, epilog, nogc, extend
+ beq G_M32717_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 21.32
+G_M32717_IG03: ; bbWeight=5.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=5.26 PerfScore 2.63
+G_M32717_IG04: ; bbWeight=5.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=5.26 PerfScore 10.53
+G_M32717_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M32717_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 8.50, instruction count 8, allocated bytes for code 32 (MethodHash=3ead8032) for method System.Runtime.Intrinsics.Vector64:EqualsAny[long](System.Runtime.Intrinsics.Vector64`1[long],System.Runtime.Intrinsics.Vector64`1[long]):ubyte (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 47.50, instruction count 12, allocated bytes for code 48 (MethodHash=3ead8032) for method System.Runtime.Intrinsics.Vector64:EqualsAny[long](System.Runtime.Intrinsics.Vector64`1[long],System.Runtime.Intrinsics.Vector64`1[long]):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+16 (+50.00%) : 20867.dasm - System.Runtime.Intrinsics.Vector641[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64
1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
@@ -5,13 +5,14 @@
; optimized code
; fp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 3, 3 ) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
-; V01 arg1 [V01 ] ( 3, 3 ) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V00 arg0 [V00 ] ( 3, 6.74) simd8 -> [fp+0x18] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
+; V01 arg1 [V01 ] ( 3, 6.74) simd8 -> [fp+0x10] HFA(simd8) do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Runtime.Intrinsics.Vector64`1[ulong]>
;* V02 loc0 [V02,T01] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 2, 4 ) long -> x0 "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 2, 18.95) long -> x0 "impAppendStmt"
;* V05 tmp2 [V05,T02] ( 0, 0 ) int -> zero-ref
;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -24,37 +25,50 @@
;
; Lcl frame size = 16
-G_M57231_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M57231_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
stp d1, d0, [fp, #0x10] // [V01 arg1], [V00 arg0]
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M57231_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4.74 PerfScore 11.84
+G_M57231_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldp x1, x0, [fp, #0x10] // [V01 arg1], [V00 arg0]
cmp x1, x0
- cset x0, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M57231_IG03: ; bbWeight=1, epilog, nogc, extend
+ bne G_M57231_IG05
+ ;; size=12 bbWeight=4.74 PerfScore 21.32
+G_M57231_IG03: ; bbWeight=5.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=5.26 PerfScore 2.63
+G_M57231_IG04: ; bbWeight=5.26, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=5.26 PerfScore 10.53
+G_M57231_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, #1
+ ;; size=4 bbWeight=0.47 PerfScore 0.24
+G_M57231_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=8 bbWeight=0.47 PerfScore 0.95
-; Total bytes of code 32, prolog size 8, PerfScore 8.50, instruction count 8, allocated bytes for code 32 (MethodHash=25882070) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 47.50, instruction count 12, allocated bytes for code 48 (MethodHash=25882070) for method System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 8 (0x00008) Actual length = 32 (0x000020)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.arm64.checked.mch |
9,012 |
980 |
3,645 |
4,387 |
-12,000 |
+89,272 |
benchmarks.run_pgo.windows.arm64.checked.mch |
10,327 |
4,023 |
3,292 |
3,012 |
-63,508 |
+48,960 |
benchmarks.run_tiered.windows.arm64.checked.mch |
5,735 |
353 |
1,613 |
3,769 |
-4,540 |
+35,040 |
coreclr_tests.run.windows.arm64.checked.mch |
61,777 |
10,007 |
24,508 |
27,262 |
-177,576 |
+291,740 |
libraries.crossgen2.windows.arm64.checked.mch |
51,130 |
6,083 |
14,680 |
30,367 |
-53,752 |
+244,148 |
libraries.pmi.windows.arm64.checked.mch |
66,120 |
9,223 |
22,044 |
34,853 |
-107,504 |
+434,408 |
libraries_tests.run.windows.arm64.Release.mch |
3,791 |
452 |
1,287 |
2,052 |
-18,616 |
+17,156 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
80,361 |
23,177 |
28,967 |
28,217 |
-427,496 |
+803,464 |
realworld.run.windows.arm64.checked.mch |
11,020 |
1,457 |
4,406 |
5,157 |
-18,476 |
+112,876 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
8,012 |
1,444 |
1,993 |
4,575 |
-9,832 |
+29,692 |
|
307,285 |
57,199 |
106,435 |
143,651 |
-893,300 |
+2,106,756 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.arm64.checked.mch |
22,451 |
4 |
22,447 |
9 (0.04%) |
2,025 (8.27%) |
benchmarks.run_pgo.windows.arm64.checked.mch |
73,752 |
40,165 |
33,587 |
11 (0.01%) |
1,017 (1.36%) |
benchmarks.run_tiered.windows.arm64.checked.mch |
47,930 |
36,755 |
11,175 |
9 (0.02%) |
697 (1.43%) |
coreclr_tests.run.windows.arm64.checked.mch |
363,437 |
161,422 |
202,015 |
57 (0.02%) |
3,658 (1.00%) |
libraries.crossgen2.windows.arm64.checked.mch |
258,413 |
15 |
258,398 |
1 (0.00%) |
16,126 (5.87%) |
libraries.pmi.windows.arm64.checked.mch |
288,581 |
6 |
288,575 |
31 (0.01%) |
17,085 (5.59%) |
libraries_tests.run.windows.arm64.Release.mch |
10,427 |
3,531 |
6,896 |
0 (0.00%) |
319 (2.97%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
283,665 |
21,618 |
262,047 |
127 (0.04%) |
33,688 (10.62%) |
realworld.run.windows.arm64.checked.mch |
30,370 |
3 |
30,367 |
2 (0.01%) |
2,924 (8.78%) |
smoke_tests.nativeaot.windows.arm64.checked.mch |
22,938 |
8 |
22,930 |
0 (0.00%) |
1,252 (5.18%) |
|
1,401,964 |
263,527 |
1,138,437 |
247 (0.02%) |
78,791 (5.32%) |
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8566940 (overridden on cmd)
Total bytes of diff: 8644212 (overridden on cmd)
Total bytes of delta: 77272 (0.90 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
5248 : 8610.dasm (17.19 % of base)
1264 : 16047.dasm (23.85 % of base)
1248 : 9218.dasm (25.57 % of base)
1100 : 10322.dasm (343.75 % of base)
884 : 22029.dasm (12.59 % of base)
764 : 1235.dasm (10.43 % of base)
760 : 9543.dasm (10.17 % of base)
740 : 5500.dasm (12.04 % of base)
712 : 18658.dasm (10.61 % of base)
596 : 16481.dasm (12.87 % of base)
596 : 8585.dasm (12.87 % of base)
540 : 9261.dasm (4.04 % of base)
392 : 10440.dasm (14.45 % of base)
388 : 9199.dasm (4.79 % of base)
388 : 10225.dasm (6.94 % of base)
372 : 18635.dasm (6.82 % of base)
360 : 4550.dasm (13.37 % of base)
352 : 18787.dasm (33.08 % of base)
352 : 7844.dasm (3.91 % of base)
320 : 12997.dasm (5.88 % of base)
Top file improvements (bytes):
-200 : 3877.dasm (-3.55 % of base)
-176 : 10598.dasm (-36.36 % of base)
-176 : 4744.dasm (-30.34 % of base)
-172 : 7668.dasm (-4.59 % of base)
-152 : 10596.dasm (-38.38 % of base)
-148 : 5604.dasm (-28.68 % of base)
-140 : 6224.dasm (-8.64 % of base)
-136 : 635.dasm (-7.74 % of base)
-132 : 23760.dasm (-13.92 % of base)
-124 : 4699.dasm (-10.30 % of base)
-124 : 18649.dasm (-6.49 % of base)
-120 : 2497.dasm (-3.18 % of base)
-120 : 3466.dasm (-13.89 % of base)
-112 : 17899.dasm (-5.61 % of base)
-108 : 6324.dasm (-10.23 % of base)
-104 : 18858.dasm (-6.55 % of base)
-104 : 12711.dasm (-12.50 % of base)
-100 : 10858.dasm (-6.14 % of base)
-100 : 16689.dasm (-26.32 % of base)
-100 : 9153.dasm (-4.39 % of base)
78 total files with Code Size differences (38 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
5248 (17.19 % of base) : 8610.dasm - Jil.JSON:GetWriterAction[System.__Canon](Jil.Options):System.Action`3[System.__Canon,System.__Canon,int] (FullOpts)
1264 (23.85 % of base) : 16047.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1248 (25.57 % of base) : 9218.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1100 (343.75 % of base) : 10322.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
884 (12.59 % of base) : 22029.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
764 (10.43 % of base) : 1235.dasm - Utf8Json.Resolvers.BuiltinResolver+BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
760 (10.17 % of base) : 9543.dasm - MessagePack.Internal.BuiltinResolverGetFormatterHelper:.cctor() (FullOpts)
740 (12.04 % of base) : 5500.dasm - System.Net.SecurityStatusAdapterPal:.cctor() (FullOpts)
712 (10.61 % of base) : 18658.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
596 (12.87 % of base) : 16481.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_LocationFormatter1:.ctor():this (FullOpts)
596 (12.87 % of base) : 8585.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:.ctor():this (FullOpts)
540 (4.04 % of base) : 9261.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
392 (14.45 % of base) : 10440.dasm - System.Formats.Tar.TarWriter:ConstructEntryForWriting(System.String,System.String,int):System.Formats.Tar.TarEntry:this (FullOpts)
388 (4.79 % of base) : 9199.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
388 (6.94 % of base) : 10225.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
372 (6.82 % of base) : 18635.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindReturn(Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
360 (13.37 % of base) : 4550.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetDefaultSimpleConverters():System.Collections.Generic.Dictionary`2[System.Type,System.Text.Json.Serialization.JsonConverter] (FullOpts)
352 (33.08 % of base) : 18787.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
352 (3.91 % of base) : 7844.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
320 (5.88 % of base) : 12997.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
Top method improvements (bytes):
-200 (-3.55 % of base) : 3877.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:.cctor() (FullOpts)
-176 (-36.36 % of base) : 10598.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-176 (-30.34 % of base) : 4744.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ubyte,System.Text.Ascii+PlainLoader`1[ubyte]](byref,byref,ulong):ubyte (FullOpts)
-172 (-4.59 % of base) : 7668.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_9(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel) (FullOpts)
-152 (-38.38 % of base) : 10596.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-148 (-28.68 % of base) : 5604.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-140 (-8.64 % of base) : 6224.dasm - System.Guid:TryParseExactN(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-136 (-7.74 % of base) : 635.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-132 (-13.92 % of base) : 23760.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-124 (-6.49 % of base) : 18649.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
-124 (-10.30 % of base) : 4699.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsImmutableEnumerableType(System.Type):ubyte (FullOpts)
-120 (-13.89 % of base) : 3466.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-120 (-3.18 % of base) : 2497.dasm - System.Reflection.Emit.CustomAttributeBuilder:EmitValue(System.IO.BinaryWriter,System.Type,System.Object) (FullOpts)
-112 (-5.61 % of base) : 17899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,byref):this (FullOpts)
-108 (-10.23 % of base) : 6324.dasm - System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this (FullOpts)
-104 (-6.55 % of base) : 18858.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitBinaryOperatorChildren(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator]):this (FullOpts)
-104 (-12.50 % of base) : 12711.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (FullOpts)
-100 (-4.39 % of base) : 9153.dasm - Jil.Common.Utils:LoadConstantOfType(Sigil.NonGeneric.Emit,System.Object,System.Type):ubyte (FullOpts)
-100 (-6.14 % of base) : 10858.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryRemoveInternal(System.Text.RegularExpressions.RegexCache+Key,byref,ubyte,System.__Canon):ubyte:this (FullOpts)
-100 (-26.32 % of base) : 16689.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
Top method regressions (percentages):
1100 (343.75 % of base) : 10322.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
148 (41.57 % of base) : 9467.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
148 (38.14 % of base) : 11852.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
216 (34.62 % of base) : 549.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
28 (33.33 % of base) : 22585.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
160 (33.33 % of base) : 644.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
352 (33.08 % of base) : 18787.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
300 (29.41 % of base) : 19509.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
28 (28.00 % of base) : 24329.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
1248 (25.57 % of base) : 9218.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1264 (23.85 % of base) : 16047.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
44 (22.00 % of base) : 10306.dasm - SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
28 (20.59 % of base) : 1398.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
72 (19.35 % of base) : 6864.dasm - System.Numerics.Quaternion:CreateFromRotationMatrix(System.Numerics.Matrix4x4):System.Numerics.Quaternion (FullOpts)
184 (19.25 % of base) : 19117.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
96 (18.75 % of base) : 20453.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (FullOpts)
164 (18.30 % of base) : 15459.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts)
196 (18.22 % of base) : 9080.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (FullOpts)
176 (17.67 % of base) : 18198.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:HasYieldOperations(Microsoft.CodeAnalysis.SyntaxNode):ubyte (FullOpts)
260 (17.62 % of base) : 19142.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass1:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method improvements (percentages):
-152 (-38.38 % of base) : 10596.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-176 (-36.36 % of base) : 10598.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-176 (-30.34 % of base) : 4744.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ubyte,System.Text.Ascii+PlainLoader`1[ubyte]](byref,byref,ulong):ubyte (FullOpts)
-148 (-28.68 % of base) : 5604.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-100 (-26.32 % of base) : 16689.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
-96 (-19.20 % of base) : 15191.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
-72 (-16.82 % of base) : 7946.dasm - MicroBenchmarks.Serializers.Json_FromStream`1[System.__Canon]:SetupDataContractJsonSerializer_():this (FullOpts)
-32 (-15.38 % of base) : 22613.dasm - System.Formats.Cbor.Tests.Perf_CborReader:ReadCoseKey(System.Formats.Cbor.Tests.ECDsaCosePublicKey):this (FullOpts)
-12 (-15.00 % of base) : 7450.dasm - ProtoBuf.Internal.Serializers.RepeatedDecorator`2[System.__Canon,System.__Canon]:.ctor(int,int,int,int,ProtoBuf.Serializers.RepeatedSerializerStub):this (FullOpts)
-24 (-14.63 % of base) : 22795.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_Array():int:this (FullOpts)
-24 (-14.63 % of base) : 22578.dasm - Microsoft.Extensions.Primitives.Performance.StringValuesBenchmark:ForEach_String():int:this (FullOpts)
-72 (-13.95 % of base) : 3432.dasm - MicroBenchmarks.Serializers.Json_ToStream`1[System.__Canon]:Setup():this (FullOpts)
-132 (-13.92 % of base) : 23760.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-120 (-13.89 % of base) : 3466.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-12 (-13.04 % of base) : 4669.dasm - (dynamicClass):Param1Getter(System.Object):int (FullOpts)
-12 (-13.04 % of base) : 4673.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
-12 (-13.04 % of base) : 7929.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_14(System.Object):int:this (FullOpts)
-12 (-13.04 % of base) : 7925.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_6(System.Object):System.String:this (FullOpts)
-12 (-13.04 % of base) : 7893.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_0(System.Object):int:this (FullOpts)
-12 (-13.04 % of base) : 7897.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_8(System.Object):ubyte:this (FullOpts)
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34767736 (overridden on cmd)
Total bytes of diff: 34753188 (overridden on cmd)
Total bytes of delta: -14548 (-0.04 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
400 : 21207.dasm (2.95 % of base)
372 : 47124.dasm (8.20 % of base)
356 : 54648.dasm (11.62 % of base)
304 : 60066.dasm (6.82 % of base)
256 : 41874.dasm (18.88 % of base)
252 : 44189.dasm (26.14 % of base)
220 : 47405.dasm (16.03 % of base)
216 : 62715.dasm (4.23 % of base)
208 : 39371.dasm (22.41 % of base)
196 : 49459.dasm (12.04 % of base)
192 : 59771.dasm (3.35 % of base)
180 : 54646.dasm (4.99 % of base)
180 : 57419.dasm (11.14 % of base)
176 : 10532.dasm (1.61 % of base)
176 : 57473.dasm (18.64 % of base)
172 : 1767.dasm (9.23 % of base)
168 : 71890.dasm (2.18 % of base)
164 : 38064.dasm (3.60 % of base)
148 : 72628.dasm (14.86 % of base)
148 : 57410.dasm (9.16 % of base)
Top file improvements (bytes):
-920 : 61795.dasm (-46.94 % of base)
-916 : 74716.dasm (-47.31 % of base)
-912 : 29605.dasm (-47.11 % of base)
-912 : 74713.dasm (-46.72 % of base)
-900 : 61799.dasm (-46.68 % of base)
-900 : 29601.dasm (-46.68 % of base)
-864 : 38324.dasm (-55.67 % of base)
-852 : 65141.dasm (-54.48 % of base)
-748 : 3677.dasm (-32.08 % of base)
-736 : 3753.dasm (-43.50 % of base)
-732 : 46587.dasm (-17.04 % of base)
-712 : 3655.dasm (-31.50 % of base)
-688 : 71547.dasm (-13.62 % of base)
-648 : 65899.dasm (-22.53 % of base)
-648 : 72693.dasm (-42.19 % of base)
-648 : 74073.dasm (-42.19 % of base)
-648 : 38913.dasm (-22.59 % of base)
-592 : 65138.dasm (-38.14 % of base)
-516 : 70761.dasm (-34.22 % of base)
-516 : 29022.dasm (-34.22 % of base)
64 total files with Code Size differences (29 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
400 (2.95 % of base) : 21207.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
372 (8.20 % of base) : 47124.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
356 (11.62 % of base) : 54648.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
304 (6.82 % of base) : 60066.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
256 (18.88 % of base) : 41874.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
252 (26.14 % of base) : 44189.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier1-OSR)
220 (16.03 % of base) : 47405.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
216 (4.23 % of base) : 62715.dasm - MicroBenchmarks.Serializers.Location:proto_1(byref,MicroBenchmarks.Serializers.Location) (FullOpts)
208 (22.41 % of base) : 39371.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
196 (12.04 % of base) : 49459.dasm - Microsoft.CodeAnalysis.AssemblyMetadata:GetOrCreateData():Microsoft.CodeAnalysis.AssemblyMetadata+Data:this (Tier0-FullOpts)
192 (3.35 % of base) : 59771.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
180 (11.14 % of base) : 57419.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
180 (4.99 % of base) : 54646.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
176 (18.64 % of base) : 57473.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
176 (1.61 % of base) : 10532.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
172 (9.23 % of base) : 1767.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
168 (2.18 % of base) : 71890.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
164 (3.60 % of base) : 38064.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest:SendToThenReceiveFrom():this (Tier1-OSR)
148 (14.86 % of base) : 72628.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
148 (9.16 % of base) : 57410.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-920 (-46.94 % of base) : 61795.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-916 (-47.31 % of base) : 74716.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-912 (-47.11 % of base) : 29605.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-912 (-46.72 % of base) : 74713.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-900 (-46.68 % of base) : 61799.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-900 (-46.68 % of base) : 29601.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-864 (-55.67 % of base) : 38324.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-852 (-54.48 % of base) : 65141.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-748 (-32.08 % of base) : 3677.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
-736 (-43.50 % of base) : 3753.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeModule,int,int,System.RuntimeType):System.Object[] (Tier1)
-732 (-17.04 % of base) : 46587.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
-712 (-31.50 % of base) : 3655.dasm - System.Environment:get_Version():System.Version (Tier1)
-688 (-13.62 % of base) : 71547.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier1-OSR)
-648 (-22.53 % of base) : 65899.dasm - System.IO.RandomAccess:ReadSyncUsingAsyncHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Tier1)
-648 (-22.59 % of base) : 38913.dasm - System.IO.RandomAccess:WriteSyncUsingAsyncHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte],long) (Tier1)
-648 (-42.19 % of base) : 72693.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-648 (-42.19 % of base) : 74073.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-592 (-38.14 % of base) : 65138.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-516 (-34.22 % of base) : 70761.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
-516 (-34.22 % of base) : 29022.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
Top method regressions (percentages):
252 (26.14 % of base) : 44189.dasm - LUDecomp:build_problem(double[][],int,double[]) (Tier1-OSR)
100 (22.94 % of base) : 24419.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
208 (22.41 % of base) : 39371.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
88 (20.37 % of base) : 54238.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 72652.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 20039.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (20.37 % of base) : 58192.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (19.13 % of base) : 29043.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
256 (18.88 % of base) : 41874.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
176 (18.64 % of base) : 57473.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
84 (16.80 % of base) : 35888.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
64 (16.67 % of base) : 70165.dasm - System.Threading.CancellationToken:Register(System.Delegate,System.Object,ubyte,ubyte):System.Threading.CancellationTokenRegistration:this (Tier1)
220 (16.03 % of base) : 47405.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
80 (15.87 % of base) : 40014.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
88 (15.60 % of base) : 72568.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
148 (14.86 % of base) : 72628.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
124 (13.30 % of base) : 67562.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (13.24 % of base) : 57810.dasm - System.IO.Path:GetFullPathInternal(System.String):System.String (Tier1)
196 (12.04 % of base) : 49459.dasm - Microsoft.CodeAnalysis.AssemblyMetadata:GetOrCreateData():Microsoft.CodeAnalysis.AssemblyMetadata+Data:this (Tier0-FullOpts)
72 (11.84 % of base) : 19567.dasm - System.Reflection.CerHashtable`2+Table[System.__Canon,System.__Canon]:Insert(System.__Canon,System.__Canon):this (Tier1)
Top method improvements (percentages):
-864 (-55.67 % of base) : 38324.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-852 (-54.48 % of base) : 65141.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-76 (-51.35 % of base) : 65893.dasm - System.IO.RandomAccess+CallbackResetEvent:ReleaseRefCount(ulong):this (Tier1)
-76 (-51.35 % of base) : 38897.dasm - System.IO.RandomAccess+CallbackResetEvent:ReleaseRefCount(ulong):this (Tier1)
-340 (-49.71 % of base) : 14691.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareAnyKeys(int,int):int:this (Tier1)
-340 (-49.71 % of base) : 21236.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareAnyKeys(int,int):int:this (Tier1)
-332 (-48.82 % of base) : 14690.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareKeys(int,int):int:this (Tier1)
-332 (-48.82 % of base) : 21235.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareKeys(int,int):int:this (Tier1)
-916 (-47.31 % of base) : 74716.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-912 (-47.11 % of base) : 29605.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-920 (-46.94 % of base) : 61795.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-912 (-46.72 % of base) : 74713.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-900 (-46.68 % of base) : 61799.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-900 (-46.68 % of base) : 29601.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-736 (-43.50 % of base) : 3753.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeModule,int,int,System.RuntimeType):System.Object[] (Tier1)
-648 (-42.19 % of base) : 72693.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-648 (-42.19 % of base) : 74073.dasm - System.IO.Tests.StringReaderReadLineTests:ReadLine():this (Tier1-OSR)
-592 (-38.14 % of base) : 65138.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1-OSR)
-516 (-34.22 % of base) : 70761.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
-516 (-34.22 % of base) : 29022.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
benchmarks.run_tiered.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14659024 (overridden on cmd)
Total bytes of diff: 14689524 (overridden on cmd)
Total bytes of delta: 30500 (0.21 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1264 : 31274.dasm (23.85 % of base)
1248 : 18742.dasm (25.57 % of base)
540 : 18243.dasm (4.04 % of base)
388 : 18695.dasm (4.79 % of base)
388 : 22660.dasm (7.96 % of base)
352 : 22020.dasm (3.91 % of base)
320 : 29077.dasm (6.71 % of base)
320 : 44085.dasm (8.11 % of base)
300 : 44825.dasm (4.99 % of base)
292 : 6342.dasm (2.70 % of base)
288 : 30937.dasm (5.85 % of base)
272 : 20029.dasm (3.81 % of base)
272 : 47974.dasm (3.57 % of base)
268 : 29088.dasm (7.78 % of base)
236 : 45277.dasm (5.44 % of base)
220 : 30642.dasm (1.89 % of base)
216 : 9404.dasm (34.62 % of base)
216 : 20087.dasm (5.90 % of base)
212 : 31937.dasm (7.61 % of base)
212 : 48624.dasm (6.88 % of base)
Top file improvements (bytes):
-176 : 26663.dasm (-30.14 % of base)
-172 : 7957.dasm (-4.59 % of base)
-140 : 21478.dasm (-8.64 % of base)
-136 : 20375.dasm (-7.74 % of base)
-120 : 15141.dasm (-17.05 % of base)
-112 : 39453.dasm (-5.81 % of base)
-108 : 42626.dasm (-5.28 % of base)
-104 : 30298.dasm (-12.50 % of base)
-100 : 30300.dasm (-26.32 % of base)
-96 : 30299.dasm (-19.20 % of base)
-92 : 48163.dasm (-1.85 % of base)
-92 : 48168.dasm (-1.81 % of base)
-72 : 24887.dasm (-6.69 % of base)
-68 : 7634.dasm (-1.85 % of base)
-60 : 42631.dasm (-2.85 % of base)
-60 : 47577.dasm (-3.36 % of base)
-56 : 44751.dasm (-3.53 % of base)
-52 : 10434.dasm (-6.84 % of base)
-48 : 24876.dasm (-9.76 % of base)
-48 : 6756.dasm (-2.45 % of base)
75 total files with Code Size differences (34 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
1264 (23.85 % of base) : 31274.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1248 (25.57 % of base) : 18742.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
540 (4.04 % of base) : 18243.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
388 (4.79 % of base) : 18695.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
388 (7.96 % of base) : 22660.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
352 (3.91 % of base) : 22020.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier1)
320 (6.71 % of base) : 29077.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
320 (8.11 % of base) : 44085.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
300 (4.99 % of base) : 44825.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
292 (2.70 % of base) : 6342.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
288 (5.85 % of base) : 30937.dasm - (dynamicClass):ReadMyEventsListerItemFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
272 (3.81 % of base) : 20029.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
272 (3.57 % of base) : 47974.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
268 (7.78 % of base) : 29088.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
236 (5.44 % of base) : 45277.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
220 (1.89 % of base) : 30642.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
216 (5.90 % of base) : 20087.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
216 (34.62 % of base) : 9404.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
212 (7.61 % of base) : 31937.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
212 (6.88 % of base) : 48624.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (Tier1)
Top method improvements (bytes):
-176 (-30.14 % of base) : 26663.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-172 (-4.59 % of base) : 7957.dasm - MicroBenchmarks.Serializers.CampaignSummaryViewModel:proto_9(byref,MicroBenchmarks.Serializers.CampaignSummaryViewModel) (FullOpts)
-140 (-8.64 % of base) : 21478.dasm - System.Guid:TryParseExactN(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
-136 (-7.74 % of base) : 20375.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
-120 (-17.05 % of base) : 15141.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (Tier1)
-112 (-5.81 % of base) : 39453.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,int,ubyte,byref):this (Tier1)
-108 (-5.28 % of base) : 42626.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1-OSR)
-104 (-12.50 % of base) : 30298.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (Tier1)
-100 (-26.32 % of base) : 30300.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-96 (-19.20 % of base) : 30299.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-92 (-1.81 % of base) : 48168.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (Tier1)
-92 (-1.85 % of base) : 48163.dasm - Benchstone.MDBenchI.MDPuzzle:DoIt():ubyte:this (Tier1-OSR)
-72 (-6.69 % of base) : 24887.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1)
-68 (-1.85 % of base) : 7634.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
-60 (-2.85 % of base) : 42631.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
-60 (-3.36 % of base) : 47577.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
-56 (-3.53 % of base) : 44751.dasm - System.Resources.RuntimeResourceSet:GetObject(System.String,ubyte,ubyte):System.Object:this (Tier1)
-52 (-6.84 % of base) : 10434.dasm - System.AppContextConfigHelper:GetInt16Config(System.String,short,ubyte):short (Tier1)
-48 (-9.52 % of base) : 43194.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-48 (-9.76 % of base) : 24876.dasm - System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte (Tier1)
Top method regressions (percentages):
148 (41.57 % of base) : 29385.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (Tier1)
216 (34.62 % of base) : 9404.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
160 (33.33 % of base) : 2866.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
1248 (25.57 % of base) : 18742.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1264 (23.85 % of base) : 31274.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
28 (20.59 % of base) : 6506.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
96 (18.75 % of base) : 41920.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (Tier1)
164 (18.30 % of base) : 30297.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
196 (18.22 % of base) : 18505.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
28 (17.07 % of base) : 12856.dasm - System.Version:CompareTo(System.Version):int:this (Tier1)
64 (16.84 % of base) : 2639.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
8 (15.38 % of base) : 16263.dasm - System.MemoryExtensions:AsSpan[ushort](ushort[]):System.Span`1[ushort] (Tier1)
8 (15.38 % of base) : 2612.dasm - System.Span`1[ushort]:op_Implicit(ushort[]):System.Span`1[ushort] (Tier1)
20 (13.16 % of base) : 15850.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Threading.PortableThreadPool+IOCompletionPoller+Event]:TryEnqueue(System.Threading.PortableThreadPool+IOCompletionPoller+Event):ubyte:this (Tier1)
12 (13.04 % of base) : 43899.dasm - System.LocalAppContextSwitches:get_EnableUnsafeUTF7Encoding():ubyte (Tier1)
12 (13.04 % of base) : 2589.dasm - System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
12 (13.04 % of base) : 2588.dasm - System.LocalAppContextSwitches:get_ForceInterpretedInvoke():ubyte (Tier1)
184 (12.07 % of base) : 44316.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
108 (11.64 % of base) : 24324.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Intrinsified(ulong,ulong):ulong (Tier1-OSR)
28 (10.94 % of base) : 42033.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleAwaitUsing():ubyte:this (Tier1)
Top method improvements (percentages):
-176 (-30.14 % of base) : 26663.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-100 (-26.32 % of base) : 30300.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-96 (-19.20 % of base) : 30299.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-120 (-17.05 % of base) : 15141.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (Tier1)
-12 (-13.04 % of base) : 14778.dasm - (dynamicClass):Param1Getter(System.Object):int (FullOpts)
-12 (-13.04 % of base) : 14782.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
-12 (-13.04 % of base) : 14786.dasm - (dynamicClass):Param3Getter(System.Object):System.String (FullOpts)
-12 (-12.50 % of base) : 14810.dasm - (dynamicClass):Param1Setter(System.Object,int) (FullOpts)
-12 (-12.50 % of base) : 14811.dasm - (dynamicClass):Param2Setter(System.Object,ubyte) (FullOpts)
-104 (-12.50 % of base) : 30298.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (Tier1)
-12 (-12.50 % of base) : 6496.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
-12 (-11.54 % of base) : 14812.dasm - (dynamicClass):Param3Setter(System.Object,System.String) (FullOpts)
-32 (-10.00 % of base) : 10250.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-48 (-9.76 % of base) : 24876.dasm - System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte (Tier1)
-48 (-9.52 % of base) : 43194.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
-8 (-9.09 % of base) : 39213.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:HasErrors[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (Tier1)
-140 (-8.64 % of base) : 21478.dasm - System.Guid:TryParseExactN(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
-24 (-8.57 % of base) : 5901.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
-12 (-8.11 % of base) : 12860.dasm - System.Environment:get_OSVersion():System.OperatingSystem (Tier1)
-136 (-7.74 % of base) : 20375.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
coreclr_tests.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 271490652 (overridden on cmd)
Total bytes of diff: 271604816 (overridden on cmd)
Total bytes of delta: 114164 (0.04 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1456 : 253434.dasm (59.67 % of base)
1300 : 177239.dasm (20.11 % of base)
1196 : 241168.dasm (1.21 % of base)
1076 : 311219.dasm (4.02 % of base)
976 : 315135.dasm (7.73 % of base)
828 : 296624.dasm (35.14 % of base)
712 : 202196.dasm (10.61 % of base)
640 : 254827.dasm (15.66 % of base)
600 : 193970.dasm (7.92 % of base)
588 : 283714.dasm (7.79 % of base)
564 : 264374.dasm (6.78 % of base)
516 : 240515.dasm (0.51 % of base)
480 : 261114.dasm (3.90 % of base)
480 : 267655.dasm (3.06 % of base)
468 : 293622.dasm (3.77 % of base)
468 : 296546.dasm (19.76 % of base)
436 : 283122.dasm (4.22 % of base)
436 : 295607.dasm (26.59 % of base)
428 : 257251.dasm (4.19 % of base)
420 : 243934.dasm (14.21 % of base)
Top file improvements (bytes):
-8616 : 240522.dasm (-6.55 % of base)
-6564 : 241173.dasm (-5.12 % of base)
-6064 : 241183.dasm (-4.97 % of base)
-5872 : 240536.dasm (-4.60 % of base)
-4516 : 241078.dasm (-27.71 % of base)
-4472 : 240328.dasm (-2.49 % of base)
-4472 : 240333.dasm (-2.49 % of base)
-2076 : 241591.dasm (-6.05 % of base)
-1336 : 192852.dasm (-1.05 % of base)
-1000 : 246546.dasm (-0.94 % of base)
-996 : 293567.dasm (-4.36 % of base)
-752 : 359458.dasm (-19.50 % of base)
-716 : 118313.dasm (-7.19 % of base)
-668 : 118309.dasm (-6.15 % of base)
-644 : 289760.dasm (-4.61 % of base)
-556 : 345334.dasm (-31.17 % of base)
-552 : 298377.dasm (-14.65 % of base)
-540 : 298460.dasm (-15.05 % of base)
-540 : 298465.dasm (-15.05 % of base)
-528 : 292944.dasm (-3.01 % of base)
83 total files with Code Size differences (43 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
1456 (59.67 % of base) : 253434.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1300 (20.11 % of base) : 177239.dasm - div_r4._div:main():int (FullOpts)
1196 (1.21 % of base) : 241168.dasm - u4div:TestEntryPoint():int (FullOpts)
1076 (4.02 % of base) : 311219.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
976 (7.73 % of base) : 315135.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
828 (35.14 % of base) : 296624.dasm - ManagedPointers:Validate_IntrinsicMethodsWithByRef_NullByRef() (FullOpts)
712 (10.61 % of base) : 202196.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
640 (15.66 % of base) : 254827.dasm - GitHub_16377:Test() (FullOpts)
600 (7.92 % of base) : 193970.dasm - ArrBoundUnsigned:TestEntryPoint():int (FullOpts)
588 (7.79 % of base) : 283714.dasm - Generated639:MethodCallingTest() (FullOpts)
564 (6.78 % of base) : 264374.dasm - Generated1079:MethodCallingTest() (FullOpts)
516 (0.51 % of base) : 240515.dasm - i4div:TestEntryPoint():int (FullOpts)
480 (3.90 % of base) : 261114.dasm - Generated1003:MethodCallingTest() (FullOpts)
480 (3.06 % of base) : 267655.dasm - Generated1169:MethodCallingTest() (FullOpts)
468 (3.77 % of base) : 293622.dasm - Generated966:MethodCallingTest() (FullOpts)
468 (19.76 % of base) : 296546.dasm - UnsafeAccessorsTests:Verify_InvalidUseUnsafeAccessor() (FullOpts)
436 (4.22 % of base) : 283122.dasm - Generated616:MethodCallingTest() (FullOpts)
436 (26.59 % of base) : 295607.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
428 (4.19 % of base) : 257251.dasm - ILGEN_0x372a9ae6:Method_0xdc6ff1a4(byte,byte,int,long,ushort,double,long,ulong):int (FullOpts)
420 (14.21 % of base) : 243934.dasm - JitTest_types_ldtoken_il.Test:Main():int (FullOpts)
Top method improvements (bytes):
-8616 (-6.55 % of base) : 240522.dasm - i4rem:TestEntryPoint():int (FullOpts)
-6564 (-5.12 % of base) : 241173.dasm - u4rem:TestEntryPoint():int (FullOpts)
-6064 (-4.97 % of base) : 241183.dasm - u8rem:TestEntryPoint():int (FullOpts)
-5872 (-4.60 % of base) : 240536.dasm - i8rem:TestEntryPoint():int (FullOpts)
-4516 (-27.71 % of base) : 241078.dasm - Test_throwinfinally_50_cs.Class1:foo(int) (FullOpts)
-4472 (-2.49 % of base) : 240328.dasm - decimaldiv:TestEntryPoint():int (FullOpts)
-4472 (-2.49 % of base) : 240333.dasm - decimalrem:TestEntryPoint():int (FullOpts)
-2076 (-6.05 % of base) : 241591.dasm - LongMulOn32BitTest:Main():int (FullOpts)
-1336 (-1.05 % of base) : 192852.dasm - Program:TestEntryPoint():int (FullOpts)
-1000 (-0.94 % of base) : 246546.dasm - overlddiv:TestEntryPoint():int (FullOpts)
-996 (-4.36 % of base) : 293567.dasm - Generated963:CalliTest() (FullOpts)
-752 (-19.50 % of base) : 359458.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Instrumented Tier1)
-716 (-7.19 % of base) : 118313.dasm - GitHub_47236.Program:TestVector128() (FullOpts)
-668 (-6.15 % of base) : 118309.dasm - GitHub_47236.Program:TestVector256() (FullOpts)
-644 (-4.61 % of base) : 289760.dasm - Generated846:CalliTest() (FullOpts)
-556 (-31.17 % of base) : 345334.dasm - ServerSimulator.Request:allocateRequest(int):int:this (Tier1)
-552 (-14.65 % of base) : 298377.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-540 (-15.05 % of base) : 298460.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-540 (-15.05 % of base) : 298465.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-528 (-3.01 % of base) : 292944.dasm - Generated944:CalliTest() (FullOpts)
Top method regressions (percentages):
1456 (59.67 % of base) : 253434.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
160 (55.56 % of base) : 197683.dasm - MainApp:TestEntryPoint():int (FullOpts)
16 (50.00 % of base) : 150006.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
16 (50.00 % of base) : 150030.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
68 (40.48 % of base) : 316591.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
148 (38.14 % of base) : 204952.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
72 (35.29 % of base) : 359892.dasm - System.Globalization.CompareInfo:IsPrefix(System.String,System.String,int):ubyte:this (Instrumented Tier1)
828 (35.14 % of base) : 296624.dasm - ManagedPointers:Validate_IntrinsicMethodsWithByRef_NullByRef() (FullOpts)
40 (33.33 % of base) : 185930.dasm - BringUpTest_LocallocCnstB1:LocallocCnstB1():int (FullOpts)
128 (33.33 % of base) : 205784.dasm - System.Xml.XmlConverter:ToChars(double,ubyte[],int):int (FullOpts)
352 (33.08 % of base) : 202324.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
220 (31.61 % of base) : 176930.dasm - beq_r4:main():int (FullOpts)
220 (31.61 % of base) : 176933.dasm - beq_r8:main():int (FullOpts)
300 (29.41 % of base) : 203052.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
436 (26.59 % of base) : 295607.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
180 (25.86 % of base) : 176957.dasm - bge_un_r4:main():int (FullOpts)
180 (25.86 % of base) : 176959.dasm - bge_un_r8:main():int (FullOpts)
32 (25.81 % of base) : 253683.dasm - System.Xml.Xsl.Xslt.CompilerScopeManager`1[System.__Canon]:ExitScope():this (FullOpts)
196 (25.79 % of base) : 176943.dasm - bge_r4:main():int (FullOpts)
196 (25.79 % of base) : 176945.dasm - bge_r8:main():int (FullOpts)
Top method improvements (percentages):
-44 (-55.00 % of base) : 244182.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)
-308 (-50.66 % of base) : 137601.dasm - System.Runtime.Intrinsics.Vector512:Dot[long](System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):long (FullOpts)
-308 (-50.66 % of base) : 137621.dasm - System.Runtime.Intrinsics.Vector512:Dot[ulong](System.Runtime.Intrinsics.Vector512`1[ulong],System.Runtime.Intrinsics.Vector512`1[ulong]):ulong (FullOpts)
-28 (-43.75 % of base) : 240044.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)
-28 (-43.75 % of base) : 244130.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)
-12 (-37.50 % of base) : 250862.dasm - Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
-12 (-37.50 % of base) : 250866.dasm - Runtime_40607.Program:SignExtendsWrittenValue(short):int (FullOpts)
-12 (-37.50 % of base) : 250865.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
-12 (-37.50 % of base) : 250869.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
-208 (-36.11 % of base) : 257545.dasm - ILGEN_0x1bd95bae:Method_0x40637edd(int,byte,short,short,double,float,ubyte,float):short (FullOpts)
-64 (-34.78 % of base) : 131866.dasm - System.Runtime.Intrinsics.Vector256:Dot[long](System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector256`1[long]):long (FullOpts)
-64 (-34.78 % of base) : 131886.dasm - System.Runtime.Intrinsics.Vector256:Dot[ulong](System.Runtime.Intrinsics.Vector256`1[ulong],System.Runtime.Intrinsics.Vector256`1[ulong]):ulong (FullOpts)
-268 (-34.36 % of base) : 345305.dasm - System.Random:Next(int,int):int:this (Tier1)
-12 (-33.33 % of base) : 250864.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ubyte):int (FullOpts)
-12 (-33.33 % of base) : 250868.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ushort):int (FullOpts)
-12 (-33.33 % of base) : 250863.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(byte):int (FullOpts)
-12 (-33.33 % of base) : 250867.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(short):int (FullOpts)
-324 (-31.89 % of base) : 22018.dasm - DD.ZZ:Main():int (FullOpts)
-44 (-31.43 % of base) : 244160.dasm - Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
-556 (-31.17 % of base) : 345334.dasm - ServerSimulator.Request:allocateRequest(int):int:this (Tier1)
libraries.crossgen2.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 57736832 (overridden on cmd)
Total bytes of diff: 57927228 (overridden on cmd)
Total bytes of delta: 190396 (0.33 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2180 : 210977.dasm (33.60 % of base)
1208 : 135560.dasm (56.55 % of base)
1208 : 73974.dasm (56.55 % of base)
908 : 26282.dasm (1.15 % of base)
688 : 135645.dasm (73.50 % of base)
688 : 194615.dasm (27.04 % of base)
688 : 74059.dasm (73.50 % of base)
688 : 194096.dasm (25.56 % of base)
612 : 135817.dasm (39.13 % of base)
612 : 74236.dasm (39.13 % of base)
604 : 156363.dasm (2.25 % of base)
596 : 73953.dasm (42.45 % of base)
596 : 135539.dasm (42.45 % of base)
560 : 21721.dasm (103.70 % of base)
500 : 193526.dasm (5.94 % of base)
460 : 74086.dasm (8.41 % of base)
460 : 135668.dasm (8.46 % of base)
440 : 73983.dasm (30.39 % of base)
440 : 135569.dasm (31.98 % of base)
432 : 236870.dasm (1.92 % of base)
Top file improvements (bytes):
-276 : 56962.dasm (-14.11 % of base)
-276 : 119998.dasm (-14.11 % of base)
-192 : 151056.dasm (-1.30 % of base)
-156 : 207423.dasm (-12.00 % of base)
-152 : 248146.dasm (-8.09 % of base)
-144 : 183701.dasm (-4.96 % of base)
-128 : 25370.dasm (-0.71 % of base)
-128 : 269199.dasm (-5.55 % of base)
-128 : 270359.dasm (-5.56 % of base)
-124 : 23258.dasm (-16.49 % of base)
-120 : 93315.dasm (-9.38 % of base)
-112 : 22948.dasm (-7.43 % of base)
-108 : 22034.dasm (-7.38 % of base)
-108 : 22481.dasm (-7.38 % of base)
-104 : 181010.dasm (-5.80 % of base)
-104 : 679.dasm (-3.89 % of base)
-104 : 264209.dasm (-4.72 % of base)
-100 : 268088.dasm (-4.39 % of base)
-96 : 8433.dasm (-4.30 % of base)
-92 : 153565.dasm (-1.81 % of base)
70 total files with Code Size differences (37 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
2180 (33.60 % of base) : 210977.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
1208 (56.55 % of base) : 135560.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
1208 (56.55 % of base) : 73974.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
908 (1.15 % of base) : 26282.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
688 (73.50 % of base) : 135645.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (73.50 % of base) : 74059.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (25.56 % of base) : 194096.dasm - System.Xml.Schema.Preprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (FullOpts)
688 (27.04 % of base) : 194615.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (FullOpts)
612 (39.13 % of base) : 74236.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
612 (39.13 % of base) : 135817.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|211_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
604 (2.25 % of base) : 156363.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)
596 (42.45 % of base) : 73953.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
596 (42.45 % of base) : 135539.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
560 (103.70 % of base) : 21721.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
500 (5.94 % of base) : 193526.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:Preprocess(System.Xml.Schema.XmlSchema,System.String,int):this (FullOpts)
460 (8.41 % of base) : 74086.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
460 (8.46 % of base) : 135668.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
440 (30.39 % of base) : 73983.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
440 (31.98 % of base) : 135569.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
432 (1.92 % of base) : 236870.dasm - System.Management.ManagementClassGenerator:GenerateMethods():this (FullOpts)
Top method improvements (bytes):
-276 (-14.11 % of base) : 56962.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-276 (-14.11 % of base) : 119998.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-192 (-1.30 % of base) : 151056.dasm - System.DirectoryServices.ActiveDirectory.Utils:GetReplicaList(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.String,ubyte,ubyte,ubyte):System.Collections.ArrayList (FullOpts)
-156 (-12.00 % of base) : 207423.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-152 (-8.09 % of base) : 248146.dasm - Microsoft.Extensions.Logging.Console.JsonConsoleFormatter:WriteItem(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]) (FullOpts)
-144 (-4.96 % of base) : 183701.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(byref,System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int (FullOpts)
-128 (-0.71 % of base) : 25370.dasm - Microsoft.FSharp.Quotations.FSharpExpr:GetLayout(ubyte):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
-128 (-5.55 % of base) : 269199.dasm - System.Resources.Extensions.PreserializedResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
-128 (-5.56 % of base) : 270359.dasm - System.Resources.ResourceWriter:WriteValue(int,System.Object,System.IO.BinaryWriter) (FullOpts)
-124 (-16.49 % of base) : 23258.dasm - System.DateTimeParse:ProcessTerminalState(int,byref,byref,byref,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-120 (-9.38 % of base) : 93315.dasm - Microsoft.CodeAnalysis.VisualBasic.MemberSemanticModel:GetBoundNodes(Microsoft.CodeAnalysis.SyntaxNode):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundNode]:this (FullOpts)
-112 (-7.43 % of base) : 22948.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask[System.__Canon]:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-108 (-7.38 % of base) : 22481.dasm - System.Threading.Tasks.ValueTask`1+ValueTaskSourceAsTask[ubyte]:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-108 (-7.38 % of base) : 22034.dasm - System.Threading.Tasks.ValueTask+ValueTaskSourceAsTask:<.cctor>g__ThrowUnexpectedStateForKnownCallback|4_1(System.Object) (FullOpts)
-104 (-3.89 % of base) : 679.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:GetStandardAndLiftedBinopSignatures(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):ubyte:this (FullOpts)
-104 (-4.72 % of base) : 264209.dasm - System.Diagnostics.TagList:Insert(int,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (FullOpts)
-104 (-5.80 % of base) : 181010.dasm - System.Security.Cryptography.PemEncoding:TryFind(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-100 (-4.39 % of base) : 268088.dasm - System.Net.Http.WinHttpResponseStream+<CopyToAsyncCore>d__20:MoveNext():this (FullOpts)
-96 (-4.30 % of base) : 8433.dasm - System.Text.TranscodingStream+<<WriteAsync>g__WriteAsyncCore|50_0>d:MoveNext():this (FullOpts)
-92 (-1.81 % of base) : 153565.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
Top method regressions (percentages):
560 (103.70 % of base) : 21721.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
688 (73.50 % of base) : 135645.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
688 (73.50 % of base) : 74059.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
1208 (56.55 % of base) : 135560.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
1208 (56.55 % of base) : 73974.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
296 (46.54 % of base) : 23230.dasm - System.Array+SorterObjectArray:PickPivotAndPartition(int,int):int:this (FullOpts)
596 (42.45 % of base) : 73953.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
596 (42.45 % of base) : 135539.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
148 (40.22 % of base) : 204815.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
304 (39.18 % of base) : 182929.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
612 (39.13 % of base) : 74236.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
612 (39.13 % of base) : 135817.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|211_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
148 (37.00 % of base) : 204814.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
88 (36.67 % of base) : 265688.dasm - System.Diagnostics.SharedPerformanceCounter:ClearCounterValues(ulong):this (FullOpts)
16 (36.36 % of base) : 33698.dasm - System.Text.Json.JsonElement+ArrayEnumerator:get_Current():System.Text.Json.JsonElement:this (FullOpts)
20 (35.71 % of base) : 105958.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
20 (35.71 % of base) : 105964.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
2180 (33.60 % of base) : 210977.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
440 (31.98 % of base) : 135569.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTupleType():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TupleTypeSyntax:this (FullOpts)
80 (31.75 % of base) : 248585.dasm - System.Net.Security.AuthenticatedStream:DisposeAsync():System.Threading.Tasks.ValueTask:this (FullOpts)
Top method improvements (percentages):
-52 (-33.33 % of base) : 264459.dasm - System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
-48 (-32.43 % of base) : 117753.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-1(ushort):ubyte:this (FullOpts)
-28 (-28.00 % of base) : 117752.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
-40 (-25.00 % of base) : 156499.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
-40 (-25.00 % of base) : 156498.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,System.String[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
-16 (-20.00 % of base) : 105976.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
-16 (-19.05 % of base) : 127771.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-16 (-19.05 % of base) : 65782.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-20 (-17.86 % of base) : 73802.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-20 (-17.86 % of base) : 135391.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-124 (-16.49 % of base) : 23258.dasm - System.DateTimeParse:ProcessTerminalState(int,byref,byref,byref,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-32 (-16.33 % of base) : 14701.dasm - System.Runtime.Intrinsics.Vector64`1[System.__Canon]:Equals(System.Object):ubyte:this (FullOpts)
-60 (-15.00 % of base) : 267683.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)
-36 (-14.29 % of base) : 227111.dasm - System.Net.Mail.DataStopCommand:CheckResponse(int,System.String) (FullOpts)
-12 (-14.29 % of base) : 164805.dasm - System.Xml.XmlConverter:IsWhitespace(ushort):ubyte (FullOpts)
-276 (-14.11 % of base) : 56962.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-276 (-14.11 % of base) : 119998.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckConstantBounds(byte,System.Decimal,byref):ubyte (FullOpts)
-12 (-13.04 % of base) : 202427.dasm - System.Speech.Recognition.SrgsGrammar.SrgsDocument:GrammarOptions2TagFormat(int):int (FullOpts)
-16 (-12.90 % of base) : 36066.dasm - System.Text.Json.Utf8JsonReader:ThrowInvalidLiteral(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
-72 (-12.86 % of base) : 177827.dasm - Microsoft.CodeAnalysis.Diagnostics.CompilationAnalysisValueProvider`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this (FullOpts)
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 64354940 (overridden on cmd)
Total bytes of diff: 64681844 (overridden on cmd)
Total bytes of delta: 326904 (0.51 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
3448 : 98667.dasm (87.78 % of base)
2172 : 227586.dasm (47.22 % of base)
1748 : 107874.dasm (31.15 % of base)
1744 : 253883.dasm (8.26 % of base)
1708 : 98146.dasm (18.37 % of base)
1452 : 204724.dasm (59.41 % of base)
1412 : 293003.dasm (50.50 % of base)
1388 : 37463.dasm (28.61 % of base)
1336 : 227442.dasm (27.56 % of base)
1224 : 116079.dasm (21.55 % of base)
1088 : 90974.dasm (327.71 % of base)
1088 : 91112.dasm (327.71 % of base)
1000 : 239144.dasm (7.79 % of base)
968 : 148836.dasm (49.79 % of base)
964 : 135049.dasm (24.54 % of base)
884 : 215086.dasm (12.51 % of base)
876 : 30744.dasm (12.28 % of base)
864 : 260082.dasm (34.07 % of base)
836 : 147997.dasm (30.96 % of base)
796 : 65613.dasm (16.06 % of base)
Top file improvements (bytes):
-924 : 34405.dasm (-6.27 % of base)
-916 : 34401.dasm (-6.21 % of base)
-776 : 93870.dasm (-14.37 % of base)
-712 : 100768.dasm (-5.92 % of base)
-704 : 100764.dasm (-5.86 % of base)
-528 : 94088.dasm (-2.21 % of base)
-504 : 61669.dasm (-8.28 % of base)
-376 : 141142.dasm (-51.09 % of base)
-376 : 174176.dasm (-51.09 % of base)
-308 : 8586.dasm (-50.66 % of base)
-292 : 268211.dasm (-34.27 % of base)
-288 : 101355.dasm (-0.72 % of base)
-284 : 264858.dasm (-1.71 % of base)
-284 : 31177.dasm (-12.12 % of base)
-276 : 120029.dasm (-10.94 % of base)
-256 : 30844.dasm (-9.16 % of base)
-236 : 94014.dasm (-10.05 % of base)
-232 : 221709.dasm (-21.89 % of base)
-216 : 85119.dasm (-6.05 % of base)
-216 : 252696.dasm (-4.11 % of base)
75 total files with Code Size differences (37 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
3448 (87.78 % of base) : 98667.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)
2172 (47.22 % of base) : 227586.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
1748 (31.15 % of base) : 107874.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DeclarationContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
1744 (8.26 % of base) : 253883.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1708 (18.37 % of base) : 98146.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateVarianceDiagnosticsForTypeRecursively(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,short,int,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+VarianceDiagnosticsTargetTypeParameter,int,byref):this (FullOpts)
1452 (59.41 % of base) : 204724.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1412 (50.50 % of base) : 293003.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1388 (28.61 % of base) : 37463.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1336 (27.56 % of base) : 227442.dasm - ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall:ToString():System.String:this (FullOpts)
1224 (21.55 % of base) : 116079.dasm - Microsoft.CodeAnalysis.VisualBasic.IteratorRewriter:EnsureAllSymbolsAndSignature():ubyte:this (FullOpts)
1088 (327.71 % of base) : 91112.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1088 (327.71 % of base) : 90974.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
1000 (7.79 % of base) : 239144.dasm - R2RTest.R2RTestRootCommand:.ctor():this (FullOpts)
968 (49.79 % of base) : 148836.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
964 (24.54 % of base) : 135049.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)
884 (12.51 % of base) : 215086.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
876 (12.28 % of base) : 30744.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
864 (34.07 % of base) : 260082.dasm - System.Diagnostics.FileVersionInfo:ToString():System.String:this (FullOpts)
836 (30.96 % of base) : 147997.dasm - Microsoft.Build.Construction.SolutionProjectGenerator:AddReferencesBuildTask(Microsoft.Build.Execution.ProjectTargetInstance,System.String,System.String) (FullOpts)
796 (16.06 % of base) : 65613.dasm - Microsoft.CodeAnalysis.CSharp.AsyncRewriter+AsyncIteratorRewriter:VerifyPresenceOfRequiredAPIs(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
Top method improvements (bytes):
-924 (-6.27 % of base) : 34405.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Numerics.Vector`1[float]):System.Nullable`1[int]:this (FullOpts)
-916 (-6.21 % of base) : 34401.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
-776 (-14.37 % of base) : 93870.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)
-712 (-5.92 % of base) : 100768.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,System.Numerics.Vector`1[float]):System.Nullable`1[int]:this (FullOpts)
-704 (-5.86 % of base) : 100764.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
-528 (-2.21 % of base) : 94088.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
-504 (-8.28 % of base) : 61669.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-376 (-51.09 % of base) : 141142.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-376 (-51.09 % of base) : 174176.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-308 (-50.66 % of base) : 8586.dasm - System.Runtime.Intrinsics.Vector512:Dot[long](System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):long (FullOpts)
-292 (-34.27 % of base) : 268211.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-288 (-0.72 % of base) : 101355.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
-284 (-12.12 % of base) : 31177.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-284 (-1.71 % of base) : 264858.dasm - System.DirectoryServices.ActiveDirectory.Utils:GetReplicaList(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.String,ubyte,ubyte,ubyte):System.Collections.ArrayList (FullOpts)
-276 (-10.94 % of base) : 120029.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)
-256 (-9.16 % of base) : 30844.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-236 (-10.05 % of base) : 94014.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CheckSharedSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref,int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
-232 (-21.89 % of base) : 221709.dasm - Internal.JitInterface.InstructionSetFlags:Set64BitInstructionSetVariants(int):this (FullOpts)
-216 (-6.05 % of base) : 85119.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrRundownTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
-216 (-4.11 % of base) : 252696.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
Top method regressions (percentages):
1088 (327.71 % of base) : 91112.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1088 (327.71 % of base) : 90974.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
3448 (87.78 % of base) : 98667.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)
1452 (59.41 % of base) : 204724.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
284 (55.04 % of base) : 57640.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (FullOpts)
444 (52.11 % of base) : 90692.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
364 (50.56 % of base) : 139513.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder:GetPredecessors(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder]):this (FullOpts)
364 (50.56 % of base) : 172539.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder:GetPredecessors(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder]):this (FullOpts)
1412 (50.50 % of base) : 293003.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
968 (49.79 % of base) : 148836.dasm - Microsoft.Build.Logging.BuildEventArgsReader:ReadBuildEventArgsFields(ubyte):Microsoft.Build.Logging.BuildEventArgsFields:this (FullOpts)
128 (48.48 % of base) : 142538.dasm - Microsoft.VisualBasic.CompilerServices.Operators:MultiplyUInt64(ulong,ulong):System.Object (FullOpts)
2172 (47.22 % of base) : 227586.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
344 (46.49 % of base) : 137469.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
344 (46.49 % of base) : 170526.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
16 (44.44 % of base) : 108176.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
16 (44.44 % of base) : 108182.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
352 (43.35 % of base) : 31587.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CollectTupleFieldMemberName(System.String,int,int,byref) (FullOpts)
352 (43.35 % of base) : 93933.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CollectTupleFieldMemberName(System.String,int,int,byref) (FullOpts)
128 (43.24 % of base) : 108493.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:StartsXmlDoc(int):ubyte:this (FullOpts)
148 (41.57 % of base) : 145006.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
Top method improvements (percentages):
-376 (-51.09 % of base) : 141142.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-376 (-51.09 % of base) : 174176.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-308 (-50.66 % of base) : 8586.dasm - System.Runtime.Intrinsics.Vector512:Dot[long](System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):long (FullOpts)
-72 (-42.86 % of base) : 193736.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
-72 (-41.86 % of base) : 193733.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
-104 (-38.81 % of base) : 289560.dasm - System.Numerics.BigInteger:Parse(System.ReadOnlySpan`1[ushort],System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-64 (-34.78 % of base) : 8311.dasm - System.Runtime.Intrinsics.Vector256:Dot[long](System.Runtime.Intrinsics.Vector256`1[long],System.Runtime.Intrinsics.Vector256`1[long]):long (FullOpts)
-292 (-34.27 % of base) : 268211.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-28 (-30.43 % of base) : 180540.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
-56 (-27.45 % of base) : 289561.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
-104 (-27.08 % of base) : 289349.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (FullOpts)
-56 (-25.45 % of base) : 289356.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-100 (-24.27 % of base) : 289351.dasm - System.Numerics.BigInteger:Parse(System.String,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-20 (-23.81 % of base) : 108201.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:CanUseInTryGetToken(ushort):ubyte (FullOpts)
-44 (-23.40 % of base) : 21597.dasm - Microsoft.FSharp.Core.PrintfImpl+Integer:eliminateNative(System.Object):System.Object (FullOpts)
-104 (-23.01 % of base) : 144370.dasm - Newtonsoft.Json.JsonTextReader:BigIntegerParse(System.String,System.Globalization.CultureInfo):System.Object (FullOpts)
-104 (-22.41 % of base) : 181904.dasm - System.Data.Common.BigIntegerStorage:ConvertXmlToObject(System.String):System.Object:this (FullOpts)
-8 (-22.22 % of base) : 266804.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
-232 (-21.89 % of base) : 221709.dasm - Internal.JitInterface.InstructionSetFlags:Set64BitInstructionSetVariants(int):this (FullOpts)
-108 (-20.93 % of base) : 128571.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5836220 (overridden on cmd)
Total bytes of diff: 5834760 (overridden on cmd)
Total bytes of delta: -1460 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
104 : 5267.dasm (60.47 % of base)
100 : 2225.dasm (2.35 % of base)
92 : 164.dasm (5.53 % of base)
92 : 363.dasm (2.31 % of base)
76 : 1191.dasm (27.54 % of base)
72 : 299.dasm (14.40 % of base)
68 : 610.dasm (2.56 % of base)
64 : 1103.dasm (3.16 % of base)
60 : 5322.dasm (6.55 % of base)
48 : 780.dasm (20.69 % of base)
44 : 4320.dasm (23.40 % of base)
44 : 4391.dasm (23.40 % of base)
44 : 4514.dasm (23.40 % of base)
44 : 5239.dasm (22.45 % of base)
44 : 5569.dasm (22.92 % of base)
44 : 6277.dasm (22.92 % of base)
44 : 6333.dasm (23.40 % of base)
44 : 6880.dasm (22.92 % of base)
44 : 7759.dasm (23.40 % of base)
44 : 9142.dasm (22.92 % of base)
Top file improvements (bytes):
-424 : 8653.dasm (-38.83 % of base)
-424 : 9197.dasm (-38.83 % of base)
-404 : 376.dasm (-42.26 % of base)
-400 : 10358.dasm (-37.04 % of base)
-400 : 6883.dasm (-37.04 % of base)
-400 : 6981.dasm (-37.04 % of base)
-400 : 7209.dasm (-37.04 % of base)
-400 : 7352.dasm (-37.04 % of base)
-400 : 8108.dasm (-37.04 % of base)
-400 : 8224.dasm (-37.04 % of base)
-400 : 9147.dasm (-37.04 % of base)
-400 : 9260.dasm (-37.04 % of base)
-400 : 9356.dasm (-37.04 % of base)
-400 : 9407.dasm (-37.04 % of base)
-400 : 10124.dasm (-36.76 % of base)
-400 : 1500.dasm (-37.04 % of base)
-400 : 10253.dasm (-37.04 % of base)
-400 : 10445.dasm (-37.04 % of base)
-400 : 10336.dasm (-37.04 % of base)
-396 : 8133.dasm (-36.67 % of base)
49 total files with Code Size differences (23 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
104 (60.47 % of base) : 5267.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Tier1)
100 (2.35 % of base) : 2225.dasm - Xunit.ConsoleClient.ConsoleRunner:ExecuteAssembly(System.Object,Xunit.XunitProjectAssembly,ubyte,ubyte,System.Nullable`1[ubyte],System.Nullable`1[int],ubyte,ubyte,System.Nullable`1[int],ubyte,ubyte,Xunit.XunitFilters,ubyte):System.Xml.Linq.XElement:this (Tier0-FullOpts)
92 (5.53 % of base) : 164.dasm - System.IO.PathHelper:Normalize(System.String):System.String (Instrumented Tier1)
92 (2.31 % of base) : 363.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Instrumented Tier1)
76 (27.54 % of base) : 1191.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
72 (14.40 % of base) : 299.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_CanSeek():ubyte:this (Instrumented Tier1)
68 (2.56 % of base) : 610.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:FindLiteralFollowingLeadingLoop(System.Text.RegularExpressions.RegexNode):System.Nullable`1[System.ValueTuple`2[System.Text.RegularExpressions.RegexNode,System.ValueTuple`4[ushort,System.String,int,ushort[]]]] (Tier0-FullOpts)
64 (3.16 % of base) : 1103.dasm - System.Reflection.AssemblyNameParser:GetNextToken(byref):int:this (Instrumented Tier1)
60 (6.55 % of base) : 5322.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
48 (20.69 % of base) : 780.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Instrumented Tier1)
44 (23.40 % of base) : 4320.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 4391.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 4514.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 5239.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 5569.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 6277.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 6333.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 6880.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 7759.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 9142.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
-424 (-38.83 % of base) : 8653.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-424 (-38.83 % of base) : 9197.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-404 (-42.26 % of base) : 376.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
-400 (-37.04 % of base) : 10358.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 6883.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 6981.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 7209.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 7352.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 8108.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 8224.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 9147.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 9260.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 9356.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 9407.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-36.76 % of base) : 10124.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 1500.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 10253.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 10445.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 10336.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-396 (-36.67 % of base) : 8133.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method regressions (percentages):
104 (60.47 % of base) : 5267.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Tier1)
76 (27.54 % of base) : 1191.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
44 (23.40 % of base) : 4320.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 4391.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 4514.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 6333.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 7759.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (23.40 % of base) : 1296.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 5569.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 6277.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 6880.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 9142.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.92 % of base) : 2096.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
44 (22.45 % of base) : 5239.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier1)
48 (20.69 % of base) : 780.dasm - System.SZArrayHelper:GetEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Instrumented Tier1)
72 (14.40 % of base) : 299.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_CanSeek():ubyte:this (Instrumented Tier1)
40 (10.42 % of base) : 5391.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
20 (7.46 % of base) : 6346.dasm - System.IO.Path:GetFullPathInternal(System.String):System.String (Tier1)
24 (7.41 % of base) : 1604.dasm - System.AppContext:GetData(System.String):System.Object (Tier1)
24 (7.41 % of base) : 5971.dasm - System.AppContext:GetData(System.String):System.Object (Tier1)
Top method improvements (percentages):
-404 (-42.26 % of base) : 376.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
-424 (-38.83 % of base) : 8653.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-424 (-38.83 % of base) : 9197.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 10358.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 6883.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 6981.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 7209.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 7352.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 8108.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 8224.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 9147.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 9260.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 9356.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 9407.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 1500.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 10253.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 10445.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-37.04 % of base) : 10336.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-400 (-36.76 % of base) : 10124.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
-396 (-36.67 % of base) : 8133.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 131037732 (overridden on cmd)
Total bytes of diff: 131413700 (overridden on cmd)
Total bytes of delta: 375968 (0.29 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
3008 : 182015.dasm (15.76 % of base)
2892 : 271495.dasm (51.10 % of base)
2680 : 61349.dasm (3.05 % of base)
2660 : 61528.dasm (3.08 % of base)
2628 : 61188.dasm (3.05 % of base)
2176 : 189006.dasm (30.84 % of base)
1976 : 208001.dasm (41.10 % of base)
1956 : 65616.dasm (1.50 % of base)
1744 : 32919.dasm (8.26 % of base)
1716 : 260913.dasm (73.84 % of base)
1536 : 208039.dasm (33.95 % of base)
1488 : 95030.dasm (45.59 % of base)
1452 : 176530.dasm (59.41 % of base)
1388 : 56323.dasm (29.26 % of base)
1364 : 63112.dasm (1.05 % of base)
1284 : 195075.dasm (27.00 % of base)
1252 : 237711.dasm (45.83 % of base)
1088 : 150639.dasm (327.71 % of base)
1088 : 251005.dasm (327.71 % of base)
1080 : 282913.dasm (23.85 % of base)
Top file improvements (bytes):
-1724 : 221529.dasm (-6.64 % of base)
-1316 : 4099.dasm (-16.21 % of base)
-1244 : 200243.dasm (-4.90 % of base)
-1188 : 221537.dasm (-3.70 % of base)
-1072 : 223360.dasm (-11.05 % of base)
-1064 : 199477.dasm (-3.33 % of base)
-976 : 19127.dasm (-1.85 % of base)
-916 : 213265.dasm (-5.16 % of base)
-748 : 123428.dasm (-1.68 % of base)
-748 : 124814.dasm (-1.68 % of base)
-744 : 97478.dasm (-2.45 % of base)
-720 : 97220.dasm (-3.85 % of base)
-704 : 154548.dasm (-6.49 % of base)
-616 : 201779.dasm (-84.62 % of base)
-564 : 94735.dasm (-4.95 % of base)
-552 : 221618.dasm (-3.60 % of base)
-532 : 200891.dasm (-7.07 % of base)
-528 : 183943.dasm (-35.87 % of base)
-524 : 201782.dasm (-51.98 % of base)
-504 : 221590.dasm (-6.70 % of base)
79 total files with Code Size differences (42 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
3008 (15.76 % of base) : 182015.dasm - XmlCoreTest.Common.FilePathUtil+<GetDataFiles>d__19:MoveNext():ubyte:this (FullOpts)
2892 (51.10 % of base) : 271495.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
2680 (3.05 % of base) : 61349.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<OrObject_TestData>d__90:MoveNext():ubyte:this (FullOpts)
2660 (3.08 % of base) : 61528.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<XorObject_TestData>d__116:MoveNext():ubyte:this (FullOpts)
2628 (3.05 % of base) : 61188.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<AndObject_TestData>d__13:MoveNext():ubyte:this (FullOpts)
2176 (30.84 % of base) : 189006.dasm - System.Reflection.Metadata.Tests.BlobUtilitiesTests:GetUTF8ByteCount():this (FullOpts)
1976 (41.10 % of base) : 208001.dasm - System.Runtime.Serialization.Xml.XsdDataContractExporterTests.ExporterTypesTests:ReferenceTypes():this (FullOpts)
1956 (1.50 % of base) : 65616.dasm - System.CodeDom.Compiler.Tests.CodeValidatorTests+<ValidateIdentifiers_Invalid_TestData>d__2:MoveNext():ubyte:this (FullOpts)
1744 (8.26 % of base) : 32919.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1716 (73.84 % of base) : 260913.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
1536 (33.95 % of base) : 208039.dasm - System.Runtime.Serialization.Xml.XsdDataContractExporterTests.SurrogateTests+<>c__DisplayClass3_0:<SurrogateProvider_MemberData>b__0(System.String,System.Xml.Schema.XmlSchemaSet):this (FullOpts)
1488 (45.59 % of base) : 95030.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
1452 (59.41 % of base) : 176530.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
1388 (29.26 % of base) : 56323.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1364 (1.05 % of base) : 63112.dasm - System.CodeDom.Compiler.Tests.CSharpCodeGeneratorTests+<GenerateCodeFromType_TestData>d__25:MoveNext():ubyte:this (FullOpts)
1284 (27.00 % of base) : 195075.dasm - System.Tests.BitConverterTests:StartIndexBeyondLength() (FullOpts)
1252 (45.83 % of base) : 237711.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1088 (327.71 % of base) : 150639.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1088 (327.71 % of base) : 251005.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
1080 (23.85 % of base) : 282913.dasm - System.Text.RegularExpressions.Tests.RegexReplaceTests:Replace_Invalid():this (FullOpts)
Top method improvements (bytes):
-1724 (-6.64 % of base) : 221529.dasm - System.Tests.ArrayTests+<Sort_Array_Array_Generic_TestData>d__173:MoveNext():ubyte:this (FullOpts)
-1316 (-16.21 % of base) : 4099.dasm - NuGet.Frameworks.FrameworkConstants+CommonFrameworks:.cctor() (FullOpts)
-1244 (-4.90 % of base) : 200243.dasm - System.Tests.ArrayTests+<Sort_Array_Array_Generic_TestData>d__173:MoveNext():ubyte:this (FullOpts)
-1188 (-3.70 % of base) : 221537.dasm - System.Tests.ArrayTests+<Sort_SZArray_TestData>d__159:MoveNext():ubyte:this (FullOpts)
-1072 (-11.05 % of base) : 223360.dasm - System.Tests.EnumTests:ToString_TryFormat(ubyte,ubyte) (FullOpts)
-1064 (-3.33 % of base) : 199477.dasm - System.Tests.ArrayTests+<Sort_SZArray_TestData>d__159:MoveNext():ubyte:this (FullOpts)
-976 (-1.85 % of base) : 19127.dasm - LibraryImportGenerator.UnitTests.CompileFails+<CodeSnippetsToCompile>d__1:MoveNext():ubyte:this (FullOpts)
-916 (-5.16 % of base) : 213265.dasm - System.Tests.DecimalTests+<Divide_Valid_TestData>d__35:MoveNext():ubyte:this (FullOpts)
-748 (-1.68 % of base) : 123428.dasm - System.Globalization.Tests.CultureInfoConstructor+<Ctor_String_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-748 (-1.68 % of base) : 124814.dasm - System.Globalization.Tests.CultureInfoConstructor+<Ctor_String_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-744 (-2.45 % of base) : 97478.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_True():this (FullOpts)
-720 (-3.85 % of base) : 97220.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_False():this (FullOpts)
-704 (-6.49 % of base) : 154548.dasm - System.Net.Http.Functional.Tests.HttpClientHandlerTest+<>c__DisplayClass18_0+<<PostAsync_ManyDifferentRequestHeaders_SentCorrectly>b__1>d:MoveNext():this (FullOpts)
-616 (-84.62 % of base) : 201779.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
-564 (-4.95 % of base) : 94735.dasm - System.Data.Tests.DataColumnCollectionTest:Add():this (FullOpts)
-552 (-3.60 % of base) : 221618.dasm - System.Tests.ArrayTests+<Copy_SZArray_Reliable_TestData>d__56:MoveNext():ubyte:this (FullOpts)
-532 (-7.07 % of base) : 200891.dasm - System.Tests.ArrayTests+<Sort_Array_Array_NonGeneric_TestData>d__172:MoveNext():ubyte:this (FullOpts)
-528 (-35.87 % of base) : 183943.dasm - System.Xml.ReaderSettingsTests.TCMaxSettings:v3():int:this (FullOpts)
-524 (-51.98 % of base) : 201782.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
-504 (-6.70 % of base) : 221590.dasm - System.Tests.ArrayTests+<Sort_Array_Array_NonGeneric_TestData>d__172:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
1088 (327.71 % of base) : 150639.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1088 (327.71 % of base) : 251005.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
436 (76.76 % of base) : 151187.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetLatinTextInput(int,int):Xunit.TheoryData (FullOpts)
1716 (73.84 % of base) : 260913.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
1452 (59.41 % of base) : 176530.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
932 (59.29 % of base) : 178143.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
264 (55.93 % of base) : 128281.dasm - System.IO.Tests.FileSystemTest:get_TrailingSeparators():Xunit.TheoryData`1[System.String] (FullOpts)
856 (53.10 % of base) : 14758.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.QueryExpressionFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
444 (52.11 % of base) : 245373.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
2892 (51.10 % of base) : 271495.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
420 (50.48 % of base) : 151219.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetUnicodeText(int):Xunit.TheoryData (FullOpts)
920 (49.57 % of base) : 177755.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
128 (48.48 % of base) : 61025.dasm - Microsoft.VisualBasic.CompilerServices.Operators:MultiplyUInt64(ulong,ulong):System.Object (FullOpts)
344 (46.49 % of base) : 57277.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
1252 (45.83 % of base) : 237711.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1488 (45.59 % of base) : 95030.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
268 (43.23 % of base) : 158305.dasm - System.Net.NameResolution.Tests.GetHostAddressesTest:get_IPAndIncorrectFamily_Data():Xunit.TheoryData`3[ubyte,System.Net.IPAddress,int] (FullOpts)
148 (41.57 % of base) : 22436.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
408 (41.13 % of base) : 218185.dasm - System.Tests.TimeOnlyTests:DeconstructionTest_Hour_Minute_Second_Millisecond(int,int,int,int) (FullOpts)
1976 (41.10 % of base) : 208001.dasm - System.Runtime.Serialization.Xml.XsdDataContractExporterTests.ExporterTypesTests:ReferenceTypes():this (FullOpts)
Top method improvements (percentages):
-616 (-84.62 % of base) : 201779.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
-72 (-81.82 % of base) : 194631.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
-68 (-80.95 % of base) : 188495.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
-68 (-80.95 % of base) : 188509.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
-432 (-72.48 % of base) : 211754.dasm - System.Tests.SingleTests_GenericMath:IsPow2Test() (FullOpts)
-524 (-51.98 % of base) : 201782.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
-500 (-51.44 % of base) : 201721.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
-356 (-49.44 % of base) : 226688.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Equality():this (FullOpts)
-376 (-48.45 % of base) : 226687.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Inequality():this (FullOpts)
-296 (-44.05 % of base) : 131445.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-412 (-38.15 % of base) : 201729.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeTest() (FullOpts)
-412 (-37.32 % of base) : 201731.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsRealNumberTest() (FullOpts)
-384 (-36.36 % of base) : 201825.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsImaginaryNumberTest() (FullOpts)
-364 (-36.11 % of base) : 201806.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeInfinityTest() (FullOpts)
-364 (-36.11 % of base) : 201792.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsPositiveInfinityTest() (FullOpts)
-528 (-35.87 % of base) : 183943.dasm - System.Xml.ReaderSettingsTests.TCMaxSettings:v3():int:this (FullOpts)
-72 (-35.29 % of base) : 205072.dasm - DataContractJsonSerializerTests+<>c:<DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract>b__179_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
-72 (-35.29 % of base) : 204213.dasm - DataContractJsonSerializerTests+<>c:<DCJS_ReadOnlyDictionaryCausingDuplicateInvalidDataContract>b__181_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
-72 (-35.29 % of base) : 205261.dasm - DataContractJsonSerializerTests+<>c:<DCJS_Regression195109>b__177_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
-72 (-35.29 % of base) : 203937.dasm - DataContractJsonSerializerTests+<>c:<DCJS_Regression195109>b__179_0():System.Runtime.Serialization.Json.DataContractJsonSerializer:this (FullOpts)
realworld.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12344168 (overridden on cmd)
Total bytes of diff: 12438568 (overridden on cmd)
Total bytes of delta: 94400 (0.76 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1876 : 23063.dasm (57.55 % of base)
1388 : 22986.dasm (29.26 % of base)
1064 : 8310.dasm (20.45 % of base)
924 : 1358.dasm (21.33 % of base)
908 : 1346.dasm (31.75 % of base)
812 : 1080.dasm (5.45 % of base)
744 : 4492.dasm (10.82 % of base)
740 : 14117.dasm (12.04 % of base)
724 : 30424.dasm (32.85 % of base)
712 : 18687.dasm (10.56 % of base)
708 : 10134.dasm (7.13 % of base)
676 : 9049.dasm (2.68 % of base)
640 : 32841.dasm (1.77 % of base)
612 : 22729.dasm (21.10 % of base)
552 : 30367.dasm (28.05 % of base)
552 : 1212.dasm (7.68 % of base)
520 : 21639.dasm (24.53 % of base)
504 : 25080.dasm (26.25 % of base)
492 : 23047.dasm (14.73 % of base)
480 : 16097.dasm (18.02 % of base)
Top file improvements (bytes):
-520 : 1066.dasm (-4.34 % of base)
-500 : 6637.dasm (-5.03 % of base)
-428 : 1205.dasm (-3.81 % of base)
-308 : 11779.dasm (-15.91 % of base)
-268 : 22739.dasm (-12.16 % of base)
-208 : 18546.dasm (-9.85 % of base)
-196 : 1246.dasm (-6.47 % of base)
-156 : 1072.dasm (-2.01 % of base)
-148 : 14214.dasm (-28.68 % of base)
-148 : 12032.dasm (-6.12 % of base)
-144 : 26443.dasm (-1.13 % of base)
-140 : 7942.dasm (-1.19 % of base)
-140 : 23467.dasm (-7.74 % of base)
-136 : 24950.dasm (-8.59 % of base)
-136 : 23461.dasm (-12.14 % of base)
-136 : 634.dasm (-7.74 % of base)
-132 : 20585.dasm (-5.90 % of base)
-132 : 31848.dasm (-13.92 % of base)
-132 : 25116.dasm (-7.50 % of base)
-124 : 18676.dasm (-6.20 % of base)
76 total files with Code Size differences (39 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
1876 (57.55 % of base) : 23063.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
1388 (29.26 % of base) : 22986.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1064 (20.45 % of base) : 8310.dasm - FSharp.Compiler.CheckExpressions:TcConst(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Syntax.SynConst):FSharp.Compiler.TypedTree+Const (FullOpts)
924 (21.33 % of base) : 1358.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref):this (FullOpts)
908 (31.75 % of base) : 1346.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
812 (5.45 % of base) : 1080.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
744 (10.82 % of base) : 4492.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:rulesForBothSoftWhiteAndHardWhite(FSharp.Compiler.LexFilter+TokenTup):ubyte:this (FullOpts)
740 (12.04 % of base) : 14117.dasm - System.Net.SecurityStatusAdapterPal:.cctor() (FullOpts)
724 (32.85 % of base) : 30424.dasm - System.Management.Automation.Runspaces.HelpV3_Format_Ps1Xml+<ViewsOf_ExtendedCmdletHelpInfo_ExamplesView>d__4:MoveNext():ubyte:this (FullOpts)
712 (10.56 % of base) : 18687.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
708 (7.13 % of base) : 10134.dasm - FSharp.Compiler.AugmentWithHashCompare:CheckAugmentationAttribs(ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.TypedTree+Entity) (FullOpts)
676 (2.68 % of base) : 9049.dasm - FSharp.Compiler.ConstraintSolver+SolveMemberConstraint@1402-8:Invoke(Microsoft.FSharp.Core.Unit):FSharp.Compiler.ErrorLogger+OperationResult`1[FSharp.Compiler.ConstraintSolver+TraitConstraintSolution]:this (FullOpts)
640 (1.77 % of base) : 32841.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:LoadModuleManifest(System.String,System.Management.Automation.ExternalScriptInfo,System.Collections.Hashtable,System.Collections.Hashtable,int,System.Version,System.Version,System.Version,System.Nullable`1[System.Guid],byref,byref):System.Management.Automation.PSModuleInfo:this (FullOpts)
612 (21.10 % of base) : 22729.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MakeIsPatternExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundPattern,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
552 (7.68 % of base) : 1212.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CylinderPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
552 (28.05 % of base) : 30367.dasm - System.Management.Automation.Runspaces.Help_Format_Ps1Xml+<ViewsOf_MamlCommandHelpInfo_Example>d__13:MoveNext():ubyte:this (FullOpts)
520 (24.53 % of base) : 21639.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
504 (26.25 % of base) : 25080.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBinaryPattern(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryPatternSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (FullOpts)
492 (14.73 % of base) : 23047.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNode|449_5(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte,byref):this (FullOpts)
480 (18.02 % of base) : 16097.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:LexXmlDocCommentLeadingTrivia(byref):this (FullOpts)
Top method improvements (bytes):
-520 (-4.34 % of base) : 1066.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-500 (-5.03 % of base) : 6637.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)
-428 (-3.81 % of base) : 1205.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-308 (-15.91 % of base) : 11779.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-268 (-12.16 % of base) : 22739.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-208 (-9.85 % of base) : 18546.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckReceiverAndRuntimeSupportForSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-196 (-6.47 % of base) : 1246.dasm - BepuPhysics.CollisionDetection.CollisionTasks.MeshPairOverlapFinder`2[BepuPhysics.Collidables.Mesh,BepuPhysics.Collidables.Mesh]:FindLocalOverlaps(byref,int,BepuUtilities.Memory.BufferPool,BepuPhysics.Collidables.Shapes,float,byref):this (FullOpts)
-156 (-2.01 % of base) : 1072.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-148 (-6.12 % of base) : 12032.dasm - System.RuntimeType:IsEnumDefined(System.Object):ubyte:this (FullOpts)
-148 (-28.68 % of base) : 14214.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-144 (-1.13 % of base) : 26443.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
-140 (-1.19 % of base) : 7942.dasm - FSharp.Compiler.CheckExpressions:TcExprUndelayed(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynExpr):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-140 (-7.74 % of base) : 23467.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSuppressNullableWarningExpression(Microsoft.CodeAnalysis.CSharp.Syntax.PostfixUnaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-136 (-12.14 % of base) : 23461.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)
-136 (-8.59 % of base) : 24950.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetGetResultMethod(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):ubyte:this (FullOpts)
-136 (-7.74 % of base) : 634.dasm - System.Guid:TryParseExactD(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-132 (-7.50 % of base) : 25116.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindPointerElementAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-132 (-5.90 % of base) : 20585.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-132 (-13.92 % of base) : 31848.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-124 (-6.20 % of base) : 18676.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
Top method regressions (percentages):
1876 (57.55 % of base) : 23063.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
320 (43.96 % of base) : 26517.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
216 (34.62 % of base) : 548.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
328 (33.33 % of base) : 21825.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
160 (33.33 % of base) : 643.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
724 (32.85 % of base) : 30424.dasm - System.Management.Automation.Runspaces.HelpV3_Format_Ps1Xml+<ViewsOf_ExtendedCmdletHelpInfo_ExamplesView>d__4:MoveNext():ubyte:this (FullOpts)
908 (31.75 % of base) : 1346.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref,byref):this (FullOpts)
300 (29.41 % of base) : 28180.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
1388 (29.26 % of base) : 22986.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
552 (28.05 % of base) : 30367.dasm - System.Management.Automation.Runspaces.Help_Format_Ps1Xml+<ViewsOf_MamlCommandHelpInfo_Example>d__13:MoveNext():ubyte:this (FullOpts)
504 (26.25 % of base) : 25080.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBinaryPattern(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryPatternSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (FullOpts)
520 (24.53 % of base) : 21639.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
124 (24.41 % of base) : 23687.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)
180 (22.28 % of base) : 22460.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
196 (22.07 % of base) : 12940.dasm - Microsoft.ML.Data.ColumnConcatenatingTransformer+Mapper+BoundColumn:MakeSchemaColumn():Microsoft.ML.DataViewSchema+DetachedColumn:this (FullOpts)
156 (22.03 % of base) : 27767.dasm - Microsoft.CodeAnalysis.CodeGen.ArrayMethods+ArraySet:MakeParameters():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ArrayMethodParameterInfo]:this (FullOpts)
188 (21.76 % of base) : 26422.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
924 (21.33 % of base) : 1358.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]](byref,byref):this (FullOpts)
40 (21.28 % of base) : 32789.dasm - System.Management.Automation.Language.ArrayExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
436 (21.21 % of base) : 21656.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:HasInstanceData(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):ubyte (FullOpts)
Top method improvements (percentages):
-148 (-28.68 % of base) : 14214.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-92 (-16.91 % of base) : 17296.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
-88 (-15.94 % of base) : 29825.dasm - System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
-308 (-15.91 % of base) : 11779.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-72 (-15.52 % of base) : 16474.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseTypeCore>g__canBeNullableType|202_0(byref):ubyte:this (FullOpts)
-32 (-14.04 % of base) : 22707.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-132 (-13.92 % of base) : 31848.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-8 (-12.50 % of base) : 18772.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PEPropertyOrEventHelpers:GetDeclaredAccessibilityFromAccessors(int,int):int (FullOpts)
-12 (-12.50 % of base) : 15723.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
-268 (-12.16 % of base) : 22739.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-104 (-12.15 % of base) : 13138.dasm - Microsoft.ML.Numeric.VectorUtils:DotProduct(byref,byref):float (FullOpts)
-136 (-12.14 % of base) : 23461.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)
-12 (-10.71 % of base) : 6278.dasm - FSharp.Compiler.TypedTree:loop@4500-39(Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+ArgReprInfo]],int):int (FullOpts)
-108 (-10.23 % of base) : 13850.dasm - System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this (FullOpts)
-12 (-10.00 % of base) : 32718.dasm - System.Management.Automation.Language.IsSafeValueVisitor:<VisitArrayLiteral>b__66_0(System.Management.Automation.Language.ExpressionAst):ubyte:this (FullOpts)
-208 (-9.85 % of base) : 18546.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckReceiverAndRuntimeSupportForSymbolAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-48 (-9.76 % of base) : 13631.dasm - System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte (FullOpts)
-12 (-9.68 % of base) : 32748.dasm - System.Management.Automation.ReflectionParameterBinder+<>c:<.cctor>b__4_19(System.Object,System.Object):this (FullOpts)
-8 (-9.09 % of base) : 18928.dasm - Microsoft.CodeAnalysis.CSharp.BoundNodeExtensions:HasErrors[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte (FullOpts)
-32 (-9.09 % of base) : 30176.dasm - System.Management.Automation.LanguagePrimitives:TypeConverterPossiblyExists(System.Type):ubyte (FullOpts)
smoke_tests.nativeaot.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3423284 (overridden on cmd)
Total bytes of diff: 3443144 (overridden on cmd)
Total bytes of delta: 19860 (0.58 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
540 : 5298.dasm (126.17 % of base)
540 : 1640.dasm (126.17 % of base)
540 : 6009.dasm (21.99 % of base)
412 : 11246.dasm (18.76 % of base)
280 : 8143.dasm (17.99 % of base)
280 : 13831.dasm (21.28 % of base)
280 : 15072.dasm (21.08 % of base)
244 : 11653.dasm (20.00 % of base)
236 : 1126.dasm (5.18 % of base)
236 : 4460.dasm (5.18 % of base)
232 : 11655.dasm (22.05 % of base)
232 : 11668.dasm (20.07 % of base)
144 : 23742.dasm (4.29 % of base)
144 : 23744.dasm (7.07 % of base)
136 : 7086.dasm (6.73 % of base)
120 : 7899.dasm (5.80 % of base)
120 : 465.dasm (4.32 % of base)
120 : 13531.dasm (5.80 % of base)
120 : 23745.dasm (8.04 % of base)
116 : 8700.dasm (6.61 % of base)
Top file improvements (bytes):
-368 : 6365.dasm (-36.22 % of base)
-368 : 11705.dasm (-36.95 % of base)
-156 : 11853.dasm (-19.60 % of base)
-92 : 12870.dasm (-16.43 % of base)
-80 : 14346.dasm (-5.88 % of base)
-80 : 17077.dasm (-10.05 % of base)
-80 : 8697.dasm (-5.88 % of base)
-72 : 10313.dasm (-2.06 % of base)
-72 : 23932.dasm (-2.06 % of base)
-68 : 2640.dasm (-6.01 % of base)
-68 : 8449.dasm (-6.01 % of base)
-64 : 2615.dasm (-8.42 % of base)
-64 : 7141.dasm (-8.42 % of base)
-60 : 3897.dasm (-44.12 % of base)
-60 : 9561.dasm (-44.12 % of base)
-52 : 14035.dasm (-4.89 % of base)
-52 : 8099.dasm (-4.39 % of base)
-48 : 5122.dasm (-6.15 % of base)
-48 : 8027.dasm (-4.51 % of base)
-48 : 10395.dasm (-6.15 % of base)
65 total files with Code Size differences (34 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
540 (21.99 % of base) : 6009.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
540 (126.17 % of base) : 5298.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
540 (126.17 % of base) : 1640.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
412 (18.76 % of base) : 11246.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
280 (17.99 % of base) : 8143.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
280 (21.28 % of base) : 13831.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
280 (21.08 % of base) : 15072.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
244 (20.00 % of base) : 11653.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
236 (5.18 % of base) : 1126.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
236 (5.18 % of base) : 4460.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
232 (20.07 % of base) : 11668.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[int](System.Linq.Expressions.SwitchExpression):this (FullOpts)
232 (22.05 % of base) : 11655.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.__Canon](System.Linq.Expressions.SwitchExpression):this (FullOpts)
144 (7.07 % of base) : 23744.dasm - WaitSubsystemTests:AutoResetEventTest() (FullOpts)
144 (4.29 % of base) : 23742.dasm - WaitSubsystemTests:MutexTest() (FullOpts)
136 (6.73 % of base) : 7086.dasm - System.Diagnostics.NtProcessManager:GetProcessInfos(System.Diagnostics.PerformanceCounterLib,int,int,System.ReadOnlySpan`1[ubyte]):System.Diagnostics.ProcessInfo[] (FullOpts)
120 (5.80 % of base) : 7899.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:TryParseConstantArray(Internal.Metadata.NativeFormat.Handle,Internal.Metadata.NativeFormat.MetadataReader,byref):System.Array (FullOpts)
120 (5.80 % of base) : 13531.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions:TryParseConstantArray(Internal.Metadata.NativeFormat.Handle,Internal.Metadata.NativeFormat.MetadataReader,byref):System.Array (FullOpts)
120 (4.32 % of base) : 465.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
120 (8.04 % of base) : 23745.dasm - WaitSubsystemTests:ManualResetEventTest() (FullOpts)
116 (6.61 % of base) : 8700.dasm - System.Threading.AsyncLocalValueMap+MultiElementAsyncLocalValueMap:Set(System.Threading.IAsyncLocal,System.Object,ubyte):System.Threading.IAsyncLocalValueMap:this (FullOpts)
Top method improvements (bytes):
-368 (-36.22 % of base) : 6365.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-368 (-36.95 % of base) : 11705.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-156 (-19.60 % of base) : 11853.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-92 (-16.43 % of base) : 12870.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-80 (-10.05 % of base) : 17077.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
-80 (-5.88 % of base) : 14346.dasm - System.Threading.AsyncLocalValueMap+FourElementAsyncLocalValueMap:Set(System.Threading.IAsyncLocal,System.Object,ubyte):System.Threading.IAsyncLocalValueMap:this (FullOpts)
-80 (-5.88 % of base) : 8697.dasm - System.Threading.AsyncLocalValueMap+FourElementAsyncLocalValueMap:Set(System.Threading.IAsyncLocal,System.Object,ubyte):System.Threading.IAsyncLocalValueMap:this (FullOpts)
-72 (-2.06 % of base) : 10313.dasm - Generics+TestFieldAccess:TestStaticFields() (FullOpts)
-72 (-2.06 % of base) : 23932.dasm - Generics+TestFieldAccess:TestStaticFields() (FullOpts)
-68 (-6.01 % of base) : 2640.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (FullOpts)
-68 (-6.01 % of base) : 8449.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (FullOpts)
-64 (-8.42 % of base) : 2615.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
-64 (-8.42 % of base) : 7141.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
-60 (-44.12 % of base) : 3897.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-60 (-44.12 % of base) : 9561.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-52 (-4.89 % of base) : 14035.dasm - System.Reflection.TypeNameParser:GetType(System.String,System.ReadOnlySpan`1[System.String],System.String):System.Type:this (FullOpts)
-52 (-4.39 % of base) : 8099.dasm - System.Reflection.TypeNameParser:GetType(System.String,System.ReadOnlySpan`1[System.String],System.String):System.Type:this (FullOpts)
-48 (-6.15 % of base) : 5122.dasm - System.Globalization.InvariantModeCasing:ToLower(System.String):System.String (FullOpts)
-48 (-6.15 % of base) : 10395.dasm - System.Globalization.InvariantModeCasing:ToLower(System.String):System.String (FullOpts)
-48 (-4.51 % of base) : 8027.dasm - System.Globalization.JapaneseCalendar:NlsGetJapaneseEras():System.Globalization.EraInfo[] (FullOpts)
Top method regressions (percentages):
540 (126.17 % of base) : 5298.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
540 (126.17 % of base) : 1640.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
16 (50.00 % of base) : 18563.dasm - System.Runtime.Intrinsics.Vector64:EqualsAny[long](System.Runtime.Intrinsics.Vector64`1[long],System.Runtime.Intrinsics.Vector64`1[long]):ubyte (FullOpts)
16 (50.00 % of base) : 20830.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:op_Equality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
16 (50.00 % of base) : 20867.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:op_Inequality(System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
12 (30.00 % of base) : 20824.dasm - System.Runtime.Intrinsics.Vector64`1[ulong]:<Equals>g__SoftwareFallback|34_0(byref,System.Runtime.Intrinsics.Vector64`1[ulong]):ubyte (FullOpts)
48 (22.64 % of base) : 15228.dasm - System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller:ConvertToUnmanaged(System.String):ulong (FullOpts)
232 (22.05 % of base) : 11655.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.__Canon](System.Linq.Expressions.SwitchExpression):this (FullOpts)
540 (21.99 % of base) : 6009.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
96 (21.62 % of base) : 14583.dasm - Internal.Runtime.TypeLoaderExceptionHelper:GetFormatString(int):System.String (FullOpts)
280 (21.28 % of base) : 13831.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
280 (21.08 % of base) : 15072.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
232 (20.07 % of base) : 11668.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[int](System.Linq.Expressions.SwitchExpression):this (FullOpts)
16 (20.00 % of base) : 11697.dasm - Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
16 (20.00 % of base) : 6356.dasm - Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
244 (20.00 % of base) : 11653.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
412 (18.76 % of base) : 11246.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
8 (18.18 % of base) : 17898.dasm - System.Runtime.Intrinsics.Vector64:LessThanOrEqual[ulong](System.Runtime.Intrinsics.Vector64`1[ulong],System.Runtime.Intrinsics.Vector64`1[ulong]):System.Runtime.Intrinsics.Vector64`1[ulong] (FullOpts)
280 (17.99 % of base) : 8143.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
28 (17.07 % of base) : 12014.dasm - System.Version:CompareTo(System.Version):int:this (FullOpts)
Top method improvements (percentages):
-60 (-44.12 % of base) : 3897.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-60 (-44.12 % of base) : 9561.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-368 (-36.95 % of base) : 11705.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-368 (-36.22 % of base) : 6365.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-156 (-19.60 % of base) : 11853.dasm - System.Linq.Expressions.Expression:MakeBinary(int,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte,System.Reflection.MethodInfo,System.Linq.Expressions.LambdaExpression):System.Linq.Expressions.BinaryExpression (FullOpts)
-8 (-18.18 % of base) : 18956.dasm - System.Number:ThrowOverflowOrFormatException[ushort,ulong](int,System.ReadOnlySpan`1[ushort]) (FullOpts)
-92 (-16.43 % of base) : 12870.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-32 (-14.55 % of base) : 9428.dasm - System.StringComparer:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-12 (-14.29 % of base) : 22378.dasm - System.Threading.Tasks.Task:MarkExceptionsAsHandled():this (FullOpts)
-12 (-12.00 % of base) : 11608.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:LookupHashCode():int:this (FullOpts)
-28 (-11.67 % of base) : 3588.dasm - System.StringComparer:Equals(System.Object,System.Object):ubyte:this (FullOpts)
-80 (-10.05 % of base) : 17077.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
-12 (-10.00 % of base) : 6259.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment+GenericTypeLookupData:LookupHashCode():int:this (FullOpts)
-8 (-10.00 % of base) : 5448.dasm - System.Reflection.Runtime.FieldInfos.RuntimeFieldInfo:get_FieldType():System.Type:this (FullOpts)
-8 (-10.00 % of base) : 11278.dasm - System.Reflection.Runtime.FieldInfos.RuntimeFieldInfo:get_FieldType():System.Type:this (FullOpts)
-8 (-9.52 % of base) : 11086.dasm - Internal.TypeSystem.InstantiatedMethod:get_UnboxingStub():ubyte:this (FullOpts)
-12 (-9.09 % of base) : 12058.dasm - System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-24 (-8.96 % of base) : 12026.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions+<AsEnumerable>d__24:MoveNext():ubyte:this (FullOpts)
-24 (-8.96 % of base) : 6643.dasm - System.Reflection.Runtime.General.NativeFormatMetadataReaderExtensions+<AsEnumerable>d__24:MoveNext():ubyte:this (FullOpts)
-64 (-8.42 % of base) : 2615.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (FullOpts)
windows x64
Diffs are based on 1,915,694 contexts (587,569 MinOpts, 1,328,125 FullOpts).
MISSED contexts: base: 373 (0.02%), diff: 87,176 (4.35%)
Overall (+2,646,963 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
44,258,494 |
-127,822 |
benchmarks.run.windows.x64.checked.mch |
9,258,280 |
+181,239 |
benchmarks.run_pgo.windows.x64.checked.mch |
32,800,681 |
+52,024 |
benchmarks.run_tiered.windows.x64.checked.mch |
18,809,905 |
+58,820 |
coreclr_tests.run.windows.x64.checked.mch |
291,190,967 |
+406,581 |
libraries.crossgen2.windows.x64.checked.mch |
38,455,544 |
+272,770 |
libraries.pmi.windows.x64.checked.mch |
54,873,751 |
+611,430 |
libraries_tests.run.windows.x64.Release.mch |
41,283,781 |
+123,799 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
112,234,381 |
+794,141 |
realworld.run.windows.x64.checked.mch |
11,552,376 |
+215,205 |
smoke_tests.nativeaot.windows.x64.checked.mch |
4,353,584 |
+58,776 |
MinOpts (-23 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
18,390,919 |
-3 |
benchmarks.run_pgo.windows.x64.checked.mch |
18,836,696 |
-3 |
benchmarks.run_tiered.windows.x64.checked.mch |
15,367,889 |
-3 |
coreclr_tests.run.windows.x64.checked.mch |
185,774,390 |
+0 |
libraries.crossgen2.windows.x64.checked.mch |
1,187 |
+0 |
libraries.pmi.windows.x64.checked.mch |
113,521 |
+0 |
libraries_tests.run.windows.x64.Release.mch |
31,641,880 |
-14 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
10,782,870 |
+0 |
FullOpts (+2,646,986 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
25,867,575 |
-127,819 |
benchmarks.run.windows.x64.checked.mch |
9,257,685 |
+181,239 |
benchmarks.run_pgo.windows.x64.checked.mch |
13,963,985 |
+52,027 |
benchmarks.run_tiered.windows.x64.checked.mch |
3,442,016 |
+58,823 |
coreclr_tests.run.windows.x64.checked.mch |
105,416,577 |
+406,581 |
libraries.crossgen2.windows.x64.checked.mch |
38,454,357 |
+272,770 |
libraries.pmi.windows.x64.checked.mch |
54,760,230 |
+611,430 |
libraries_tests.run.windows.x64.Release.mch |
9,641,901 |
+123,813 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
101,451,511 |
+794,141 |
realworld.run.windows.x64.checked.mch |
11,165,767 |
+215,205 |
smoke_tests.nativeaot.windows.x64.checked.mch |
4,352,637 |
+58,776 |
Example diffs
aspnet.run.windows.x64.checked.mch
-25 (-25.25%) : 76774.dasm - System.Collections.Immutable.ImmutableSortedDictionary2[System.__Canon,System.ValueTuple
2[System.Canon,int]]:TryGetValue(System.Canon,byref):ubyte:this (Tier1)
@@ -2,20 +2,22 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; fully 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
;
; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]>
-; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rdx class-hnd single-def <System.__Canon>
+; V01 arg1 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd single-def <System.__Canon>
; V02 arg2 [V02,T03] ( 3, 3 ) byref -> r9 single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 rat0 [V05,T04] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
+;* V05 rat0 [V05,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V06 rat1 [V06,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V07 rat2 [V07,T02] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V07 rat2 [V07,T02] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -30,37 +32,23 @@ G_M40636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=16 bbWeight=1 PerfScore 2.75
G_M40636_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs +[rdx]
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x30]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x98]
- test rcx, rcx
- je SHORT G_M40636_IG06
- ;; size=22 bbWeight=1 PerfScore 9.25
-G_M40636_IG03: ; bbWeight=0.80, gcrefRegs=000C {rdx rbx}, byrefRegs=0200 {r9}, byref, isz
+ cmp dword ptr [rbx], ebx
test rdx, rdx
- je SHORT G_M40636_IG07
- ;; size=5 bbWeight=0.80 PerfScore 1.00
-G_M40636_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0200 {r9}, byref
+ je SHORT G_M40636_IG04
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov r8, gword ptr [rbx+0x10]
; gcrRegs +[r8]
cmp dword ptr [rcx], ecx
- ;; size=10 bbWeight=1 PerfScore 7.00
-G_M40636_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=17 bbWeight=1 PerfScore 11.25
+G_M40636_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
tail.jmp [System.Collections.Immutable.ImmutableSortedDictionary`2+Node[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:TryGetValue(System.__Canon,System.Collections.Generic.IComparer`1[System.__Canon],byref):ubyte:this]
; gcr arg pop 0
;; size=11 bbWeight=1 PerfScore 2.75
-G_M40636_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0200 {r9}, gcvars, byref, isz
- ; gcrRegs -[rcx r8]
- test rdx, rdx
- jne SHORT G_M40636_IG04
- ;; size=5 bbWeight=0.20 PerfScore 0.25
-G_M40636_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx]
+G_M40636_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx rdx r8]
; byrRegs -[r9]
mov ecx, 0x671
mov rdx, 0xD1FFAB1E
@@ -75,7 +63,7 @@ G_M40636_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
int3
;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 99, prolog size 16, PerfScore 23.00, instruction count 27, allocated bytes for code 99 (MethodHash=7e776143) for method System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
+; Total bytes of code 74, prolog size 16, PerfScore 16.75, instruction count 20, allocated bytes for code 74 (MethodHash=7e776143) for method System.Collections.Immutable.ImmutableSortedDictionary`2[System.__Canon,System.ValueTuple`2[System.__Canon,int]]:TryGetValue(System.__Canon,byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
-20 (-23.26%) : 51866.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
@@ -6,22 +6,17 @@
; rsp based frame
; partially interruptible
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 286592
-; 1 inlinees with PGO data; 0 single block inlinees; 1 inlinees without 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 ) byref -> rcx this single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
; V03 tmp2 [V03,T00] ( 5, 5 ) ref -> rax
-; V04 tmp3 [V04,T04] ( 3, 3 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
-; V05 tmp4 [V05,T03] ( 5, 3.04) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V04 tmp3 [V04,T04] ( 3, 1.00) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V05 tmp4 [V05,T03] ( 3, 2.00) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V07 tmp6 [V07,T02] ( 4, 3.50) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String>
-; V08 tmp7 [V08,T05] ( 3, 3 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
-;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.String[]>
-;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-; V11 tmp10 [V11,T06] ( 3, 2.07) int -> rax "Inline stloc first use temp"
-; V12 tmp11 [V12,T07] ( 4, 2.04) ref -> rax class-hnd "Inline stloc first use temp" <System.String>
+; V07 tmp6 [V07,T02] ( 4, 2.50) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String>
;
; Lcl frame size = 40
@@ -36,61 +31,34 @@ G_M57880_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
mov rax, rcx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M57880_IG05
+ je SHORT G_M57880_IG06
;; size=11 bbWeight=1 PerfScore 3.50
G_M57880_IG03: ; bbWeight=0.50, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.String
cmp qword ptr [rax], rdx
jne SHORT G_M57880_IG06
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M57880_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M57880_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- jmp SHORT G_M57880_IG08
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M57880_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- jmp SHORT G_M57880_IG08
- ;; size=4 bbWeight=1 PerfScore 2.25
-G_M57880_IG06: ; bbWeight=1.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rcx]
- mov eax, dword ptr [rcx+0x08]
- test eax, eax
- jne SHORT G_M57880_IG10
- ;; size=7 bbWeight=1.04 PerfScore 3.36
-G_M57880_IG07: ; bbWeight=1.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=1.03 PerfScore 0.26
-G_M57880_IG08: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
test rax, rax
cmove rax, rcx
;; size=17 bbWeight=1 PerfScore 0.75
-G_M57880_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M57880_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M57880_IG10: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57880_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- cmp eax, 1
- je SHORT G_M57880_IG11
- call [Microsoft.Extensions.Primitives.StringValues:<GetStringValue>g__GetJoinedStringValueFromArray|19_1(System.String[]):System.String]
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Primitives.StringValues:<GetStringValue>g__GetStringValueFromArray|19_0(System.Object):System.String
+ call [rax]Microsoft.Extensions.Primitives.StringValues:<GetStringValue>g__GetStringValueFromArray|19_0(System.Object):System.String
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M57880_IG08
- ;; size=13 bbWeight=0.00 PerfScore 0.01
-G_M57880_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rcx]
- mov rax, gword ptr [rcx+0x10]
- ; gcrRegs +[rax]
- jmp SHORT G_M57880_IG08
- ;; size=6 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M57880_IG04
+ ;; size=14 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 86, prolog size 4, PerfScore 15.75, instruction count 26, allocated bytes for code 86 (MethodHash=80531de7) for method Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
+; Total bytes of code 66, prolog size 4, PerfScore 7.88, instruction count 16, allocated bytes for code 66 (MethodHash=80531de7) for method Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
; ============================================================
Unwind Info:
-20 (-23.26%) : 49135.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
@@ -6,22 +6,17 @@
; rsp based frame
; partially interruptible
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 451456
-; 1 inlinees with PGO data; 0 single block inlinees; 1 inlinees without 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 ) byref -> rcx this single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.String>
-; V03 tmp2 [V03,T00] ( 5, 5.00) ref -> rax
-; V04 tmp3 [V04,T04] ( 3, 3 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
-; V05 tmp4 [V05,T03] ( 5, 3.01) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
+; V03 tmp2 [V03,T00] ( 5, 5 ) ref -> rax
+; V04 tmp3 [V04,T04] ( 3, 1.00) ref -> rax class-hnd "Inline return value spill temp" <System.String>
+; V05 tmp4 [V05,T03] ( 3, 2.00) ref -> rcx class-hnd single-def "Inline stloc first use temp" <System.Object>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V07 tmp6 [V07,T02] ( 4, 3.50) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String>
-; V08 tmp7 [V08,T05] ( 3, 3 ) ref -> rax class-hnd "Inline return value spill temp" <System.String>
-;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <System.String[]>
-;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.String[]>
-; V11 tmp10 [V11,T06] ( 3, 2.02) int -> rax "Inline stloc first use temp"
-; V12 tmp11 [V12,T07] ( 4, 2.01) ref -> rax class-hnd "Inline stloc first use temp" <System.String>
+; V07 tmp6 [V07,T02] ( 4, 2.50) ref -> rax class-hnd exact "Inline stloc first use temp" <System.String>
;
; Lcl frame size = 40
@@ -36,61 +31,34 @@ G_M57880_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
mov rax, rcx
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M57880_IG05
+ je SHORT G_M57880_IG06
;; size=11 bbWeight=1 PerfScore 3.50
G_M57880_IG03: ; bbWeight=0.50, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.String
cmp qword ptr [rax], rdx
jne SHORT G_M57880_IG06
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M57880_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+G_M57880_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- jmp SHORT G_M57880_IG08
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M57880_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- xor rax, rax
- ; gcrRegs +[rax]
- jmp SHORT G_M57880_IG08
- ;; size=4 bbWeight=1 PerfScore 2.25
-G_M57880_IG06: ; bbWeight=1.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rcx]
- mov eax, dword ptr [rcx+0x08]
- test eax, eax
- jne SHORT G_M57880_IG10
- ;; size=7 bbWeight=1.01 PerfScore 3.28
-G_M57880_IG07: ; bbWeight=1.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
- xor rax, rax
- ; gcrRegs +[rax]
- ;; size=2 bbWeight=1.01 PerfScore 0.25
-G_M57880_IG08: ; bbWeight=1.00, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
test rax, rax
cmove rax, rcx
- ;; size=17 bbWeight=1.00 PerfScore 0.75
-G_M57880_IG09: ; bbWeight=1.00, epilog, nogc, extend
+ ;; size=17 bbWeight=1 PerfScore 0.75
+G_M57880_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
- ;; size=5 bbWeight=1.00 PerfScore 1.25
-G_M57880_IG10: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M57880_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- cmp eax, 1
- je SHORT G_M57880_IG11
- call [Microsoft.Extensions.Primitives.StringValues:<GetStringValue>g__GetJoinedStringValueFromArray|19_1(System.String[]):System.String]
+ mov rax, 0xD1FFAB1E ; code for Microsoft.Extensions.Primitives.StringValues:<GetStringValue>g__GetStringValueFromArray|19_0(System.Object):System.String
+ call [rax]Microsoft.Extensions.Primitives.StringValues:<GetStringValue>g__GetStringValueFromArray|19_0(System.Object):System.String
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- jmp SHORT G_M57880_IG08
- ;; size=13 bbWeight=0.00 PerfScore 0.01
-G_M57880_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax] +[rcx]
- mov rax, gword ptr [rcx+0x10]
- ; gcrRegs +[rax]
- jmp SHORT G_M57880_IG08
- ;; size=6 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M57880_IG04
+ ;; size=14 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 86, prolog size 4, PerfScore 15.66, instruction count 26, allocated bytes for code 86 (MethodHash=80531de7) for method Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
+; Total bytes of code 66, prolog size 4, PerfScore 7.88, instruction count 16, allocated bytes for code 66 (MethodHash=80531de7) for method Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
; ============================================================
Unwind Info:
+49 (+27.37%) : 126746.dasm - AngleSharp.Html.Parser.HtmlDomBuilder:ClearStackBackTo(System.String):this (FullOpts)
@@ -2,26 +2,33 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
-; 1 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
+; 2 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 5, 7 ) ref -> rsi this class-hnd single-def <AngleSharp.Html.Parser.HtmlDomBuilder>
-; V01 arg1 [V01,T02] ( 3, 10 ) ref -> rbx class-hnd single-def <System.String>
-; V02 loc0 [V02,T05] ( 3, 11 ) ref -> rax class-hnd <AngleSharp.Dom.Element>
+; V00 this [V00,T04] ( 8, 79.32) ref -> rsi this class-hnd single-def <AngleSharp.Html.Parser.HtmlDomBuilder>
+; V01 arg1 [V01,T03] ( 3, 82.00) ref -> rbx class-hnd single-def <System.String>
+; V02 loc0 [V02,T01] ( 3,117.00) ref -> rax class-hnd <AngleSharp.Dom.Element>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T09] ( 3, 6 ) ref -> rax class-hnd "Inline return value spill temp" <AngleSharp.Dom.Element>
-; V05 tmp2 [V05,T08] ( 2, 8 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>>
+; V04 tmp1 [V04,T12] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <AngleSharp.Dom.Element>
+; V05 tmp2 [V05,T13] ( 2, 1.92) ref -> rax class-hnd single-def "impAppendStmt" <<unknown class>>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp5 [V08,T01] ( 4, 16 ) int -> rdx "Inlining Arg"
-; V09 tmp6 [V09,T04] ( 2, 8 ) ubyte -> rax "Inline return value spill temp"
-; V10 tmp7 [V10,T00] ( 4, 48 ) ref -> rdi class-hnd exact "Inlining Arg" <System.String>
-; V11 tmp8 [V11,T03] ( 3, 12 ) ref -> rax "arr expr"
-; V12 cse0 [V12,T07] ( 4, 8 ) int -> rcx "CSE - aggressive"
-; V13 cse1 [V13,T10] ( 3, 6 ) ref -> rax "CSE - aggressive"
+; V08 tmp5 [V08,T09] ( 4, 3.84) int -> rdx "Inlining Arg"
+; V09 tmp6 [V09,T05] ( 3, 40.00) ref -> rax class-hnd "Inline return value spill temp" <AngleSharp.Dom.Element>
+; V10 tmp7 [V10,T07] ( 3, 11.52) ref -> rax class-hnd "impAppendStmt" <<unknown class>>
+;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
+;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
+; V13 tmp10 [V13,T06] ( 4, 15.36) int -> rcx "Inlining Arg"
+; V14 tmp11 [V14,T02] ( 2, 83.33) ubyte -> rax "Inline return value spill temp"
+; V15 tmp12 [V15,T00] ( 4,339.46) ref -> rdi class-hnd exact "Inlining Arg" <System.String>
+; V16 tmp13 [V16,T11] ( 3, 2.88) ref -> rcx single-def "arr expr"
+; V17 tmp14 [V17,T08] ( 3, 11.52) ref -> rax "arr expr"
+; V18 cse0 [V18,T10] ( 4, 2.96) int -> rcx "CSE - moderate"
;
; Lcl frame size = 32
@@ -36,15 +43,40 @@ G_M26611_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=13 bbWeight=1 PerfScore 3.75
G_M26611_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rsi
+ mov rcx, gword ptr [rsi+0x18]
; gcrRegs +[rcx]
- call [AngleSharp.Html.Parser.HtmlDomBuilder:get_CurrentNode():AngleSharp.Dom.Element:this]
- ; gcrRegs -[rcx] +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M26611_IG05
+ mov ecx, dword ptr [rcx+0x10]
+ ; gcrRegs -[rcx]
+ test ecx, ecx
+ jg SHORT G_M26611_IG05
;; size=11 bbWeight=1 PerfScore 5.25
-G_M26611_IG03: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M26611_IG03: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.52 PerfScore 0.13
+G_M26611_IG04: ; bbWeight=1, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M26611_IG09
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M26611_IG05: ; bbWeight=0.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ mov rax, gword ptr [rsi+0x18]
+ ; gcrRegs +[rax]
+ lea edx, [rcx-0x01]
+ cmp edx, ecx
+ jae G_M26611_IG15
+ mov rcx, gword ptr [rax+0x08]
+ ; gcrRegs +[rcx]
+ cmp edx, dword ptr [rcx+0x08]
+ jae G_M26611_IG14
+ mov rax, gword ptr [rcx+8*rdx+0x10]
+ jmp SHORT G_M26611_IG04
+ ;; size=35 bbWeight=0.48 PerfScore 6.60
+G_M26611_IG06: ; bbWeight=80.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
+ test eax, eax
+ jne G_M26611_IG13
+ ;; size=8 bbWeight=80.00 PerfScore 100.00
+G_M26611_IG07: ; bbWeight=36.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
call [AngleSharp.Html.Parser.HtmlDomBuilder:CloseCurrentNode():this]
@@ -52,23 +84,15 @@ G_M26611_IG03: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcr arg pop 0
mov rax, gword ptr [rsi+0x18]
; gcrRegs +[rax]
- mov ecx, dword ptr [rax+0x10]
- test ecx, ecx
- jg SHORT G_M26611_IG04
+ cmp dword ptr [rax+0x10], 0
+ jg SHORT G_M26611_IG12
+ ;; size=19 bbWeight=36.00 PerfScore 333.00
+G_M26611_IG08: ; bbWeight=2.08, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
xor rax, rax
- jmp SHORT G_M26611_IG05
- ;; size=24 bbWeight=2 PerfScore 21.50
-G_M26611_IG04: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
- lea edx, [rcx-0x01]
- cmp edx, ecx
- jae SHORT G_M26611_IG09
- mov rax, gword ptr [rax+0x08]
- cmp edx, dword ptr [rax+0x08]
- jae SHORT G_M26611_IG08
- mov ecx, edx
- mov rax, gword ptr [rax+8*rcx+0x10]
- ;; size=23 bbWeight=2 PerfScore 20.00
-G_M26611_IG05: ; bbWeight=8, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=2.08 PerfScore 0.52
+G_M26611_IG09: ; bbWeight=80.00, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rax+0x58]
; gcrRegs +[rdi]
mov rcx, rdi
@@ -80,9 +104,9 @@ G_M26611_IG05: ; bbWeight=8, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M26611_IG07
- ;; size=26 bbWeight=8 PerfScore 56.00
-G_M26611_IG06: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M26611_IG13
+ ;; size=26 bbWeight=80.00 PerfScore 560.00
+G_M26611_IG10: ; bbWeight=6.40, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -92,7 +116,9 @@ G_M26611_IG06: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M26611_IG07
+ jne SHORT G_M26611_IG13
+ ;; size=29 bbWeight=6.40 PerfScore 32.00
+G_M26611_IG11: ; bbWeight=3.33, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -101,28 +127,43 @@ G_M26611_IG06: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rcx rdx rdi]
; gcr arg pop 0
- test eax, eax
- je G_M26611_IG03
- ;; size=62 bbWeight=4 PerfScore 40.00
-G_M26611_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbx rsi]
+ jmp SHORT G_M26611_IG06
+ ;; size=27 bbWeight=3.33 PerfScore 19.14
+G_M26611_IG12: ; bbWeight=1.92, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rax, gword ptr [rsi+0x18]
+ ; gcrRegs +[rax]
+ mov rcx, gword ptr [rsi+0x18]
+ ; gcrRegs +[rcx]
+ mov ecx, dword ptr [rcx+0x10]
+ ; gcrRegs -[rcx]
+ dec ecx
+ cmp ecx, dword ptr [rax+0x10]
+ jae SHORT G_M26611_IG15
+ mov rax, gword ptr [rax+0x08]
+ cmp ecx, dword ptr [rax+0x08]
+ jae SHORT G_M26611_IG14
+ mov rax, gword ptr [rax+8*rcx+0x10]
+ jmp SHORT G_M26611_IG09
+ ;; size=34 bbWeight=1.92 PerfScore 38.88
+G_M26611_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax rbx rsi]
add rsp, 32
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M26611_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M26611_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M26611_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26611_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 179, prolog size 7, PerfScore 149.25, instruction count 52, allocated bytes for code 179 (MethodHash=3e7d980c) for method AngleSharp.Html.Parser.HtmlDomBuilder:ClearStackBackTo(System.String):this (FullOpts)
+; Total bytes of code 228, prolog size 7, PerfScore 1104.02, instruction count 66, allocated bytes for code 228 (MethodHash=3e7d980c) for method AngleSharp.Html.Parser.HtmlDomBuilder:ClearStackBackTo(System.String):this (FullOpts)
; ============================================================
Unwind Info:
+36 (+30.51%) : 126745.dasm - AngleSharp.Html.Parser.HtmlDomBuilder:GenerateImpliedEndTagsExceptFor(System.String):this (FullOpts)
@@ -2,25 +2,34 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
-; 1 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
+; 2 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 5, 7 ) ref -> rbx this class-hnd single-def <AngleSharp.Html.Parser.HtmlDomBuilder>
-; V01 arg1 [V01,T05] ( 3, 6 ) ref -> rsi class-hnd single-def <System.String>
-; V02 loc0 [V02,T01] ( 4, 15 ) ref -> rax class-hnd <AngleSharp.Dom.Element>
+; V00 this [V00,T02] ( 6, 39.03) ref -> rsi this class-hnd single-def <AngleSharp.Html.Parser.HtmlDomBuilder>
+; V01 arg1 [V01,T01] ( 3, 39.89) ref -> rbx class-hnd single-def <System.String>
+; V02 loc0 [V02,T00] ( 4, 98.05) ref -> rax class-hnd <AngleSharp.Dom.Element>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T07] ( 3, 6 ) ref -> rax class-hnd "Inline return value spill temp" <AngleSharp.Dom.Element>
-; V05 tmp2 [V05,T06] ( 2, 8 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>>
+; V04 tmp1 [V04,T12] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <AngleSharp.Dom.Element>
+; V05 tmp2 [V05,T13] ( 2, 1.92) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V08 tmp5 [V08,T00] ( 4, 16 ) int -> rdx "Inlining Arg"
-;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp7 [V10,T02] ( 3, 12 ) ref -> rax "arr expr"
-; V11 cse0 [V11,T04] ( 4, 8 ) int -> rcx "CSE - aggressive"
-; V12 cse1 [V12,T08] ( 3, 6 ) ref -> rax "CSE - aggressive"
+; V08 tmp5 [V08,T08] ( 4, 3.84) int -> rax "Inlining Arg"
+; V09 tmp6 [V09,T04] ( 3, 21.05) ref -> rax class-hnd "Inline return value spill temp" <AngleSharp.Dom.Element>
+; V10 tmp7 [V10,T07] ( 2, 7.68) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
+;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
+; V13 tmp10 [V13,T05] ( 4, 15.36) int -> rdx "Inlining Arg"
+;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
+; V15 tmp12 [V15,T10] ( 3, 2.88) ref -> rcx single-def "arr expr"
+; V16 tmp13 [V16,T06] ( 3, 11.52) ref -> rax "arr expr"
+; V17 cse0 [V17,T03] ( 4, 37.95) int -> rax "CSE - aggressive"
+; V18 cse1 [V18,T09] ( 4, 2.96) int -> rdx "CSE - aggressive"
+; V19 cse2 [V19,T11] ( 3, 2.48) ref -> rcx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -28,78 +37,113 @@ G_M61477_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbx
sub rsp, 40
- mov rbx, rcx
- ; gcrRegs +[rbx]
- mov rsi, rdx
+ mov rsi, rcx
; gcrRegs +[rsi]
+ mov rbx, rdx
+ ; gcrRegs +[rbx]
;; size=12 bbWeight=1 PerfScore 2.75
G_M61477_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, rbx
+ mov rcx, gword ptr [rsi+0x18]
; gcrRegs +[rcx]
- call [AngleSharp.Html.Parser.HtmlDomBuilder:get_CurrentNode():AngleSharp.Dom.Element:this]
- ; gcrRegs -[rcx] +[rax]
- ; gcr arg pop 0
- jmp SHORT G_M61477_IG05
+ mov edx, dword ptr [rcx+0x10]
+ test edx, edx
+ jg SHORT G_M61477_IG05
;; size=11 bbWeight=1 PerfScore 5.25
-G_M61477_IG03: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov rcx, rbx
+G_M61477_IG03: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.52 PerfScore 0.13
+G_M61477_IG04: ; bbWeight=1, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M61477_IG09
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M61477_IG05: ; bbWeight=0.48, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rcx]
+ lea eax, [rdx-0x01]
+ cmp eax, edx
+ jae SHORT G_M61477_IG13
+ mov rcx, gword ptr [rcx+0x08]
+ cmp eax, dword ptr [rcx+0x08]
+ jae SHORT G_M61477_IG14
+ mov edx, eax
+ mov rax, gword ptr [rcx+8*rdx+0x10]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M61477_IG04
+ ;; size=25 bbWeight=0.48 PerfScore 5.76
+G_M61477_IG06: ; bbWeight=1.92, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rcx]
+ mov rcx, gword ptr [rsi+0x18]
+ ; gcrRegs +[rcx]
+ lea edx, [rax-0x01]
+ cmp edx, eax
+ jae SHORT G_M61477_IG13
+ jmp SHORT G_M61477_IG12
+ ;; size=13 bbWeight=1.92 PerfScore 11.04
+G_M61477_IG07: ; bbWeight=17.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ mov rcx, rsi
; gcrRegs +[rcx]
call [AngleSharp.Html.Parser.HtmlDomBuilder:CloseCurrentNode():this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rax, gword ptr [rbx+0x18]
+ mov rax, gword ptr [rsi+0x18]
; gcrRegs +[rax]
- mov ecx, dword ptr [rax+0x10]
- test ecx, ecx
- jg SHORT G_M61477_IG04
+ mov eax, dword ptr [rax+0x10]
+ ; gcrRegs -[rax]
+ test eax, eax
+ jg SHORT G_M61477_IG06
+ ;; size=20 bbWeight=17.05 PerfScore 144.95
+G_M61477_IG08: ; bbWeight=2.08, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
xor rax, rax
- jmp SHORT G_M61477_IG05
- ;; size=24 bbWeight=2 PerfScore 21.50
-G_M61477_IG04: ; bbWeight=2, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
- lea edx, [rcx-0x01]
- cmp edx, ecx
- jae SHORT G_M61477_IG09
- mov rax, gword ptr [rax+0x08]
- cmp edx, dword ptr [rax+0x08]
- jae SHORT G_M61477_IG08
- mov ecx, edx
- mov rax, gword ptr [rax+8*rcx+0x10]
- ;; size=23 bbWeight=2 PerfScore 20.00
-G_M61477_IG05: ; bbWeight=8, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=2.08 PerfScore 0.52
+G_M61477_IG09: ; bbWeight=42.11, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
test byte ptr [rax+0x38], 32
- je SHORT G_M61477_IG07
- ;; size=6 bbWeight=8 PerfScore 32.00
-G_M61477_IG06: ; bbWeight=4, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M61477_IG11
+ ;; size=6 bbWeight=42.11 PerfScore 168.42
+G_M61477_IG10: ; bbWeight=37.89, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rax+0x58]
; gcrRegs +[rcx]
- mov rdx, rsi
+ mov rdx, rbx
; gcrRegs +[rdx]
mov r8d, 4
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M61477_IG03
- ;; size=23 bbWeight=4 PerfScore 27.00
-G_M61477_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M61477_IG07
+ ;; size=23 bbWeight=37.89 PerfScore 255.79
+G_M61477_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi]
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M61477_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M61477_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61477_IG12: ; bbWeight=1.92, gcVars=0000000000000000 {}, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rcx rbx rsi]
+ mov rax, gword ptr [rcx+0x08]
+ ; gcrRegs +[rax]
+ cmp edx, dword ptr [rax+0x08]
+ jae SHORT G_M61477_IG14
+ mov ecx, edx
+ ; gcrRegs -[rcx]
+ mov rax, gword ptr [rax+8*rcx+0x10]
+ jmp SHORT G_M61477_IG09
+ ;; size=18 bbWeight=1.92 PerfScore 19.68
+G_M61477_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rbx rsi]
call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
+G_M61477_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 118, prolog size 6, PerfScore 110.75, instruction count 39, allocated bytes for code 118 (MethodHash=ca620fda) for method AngleSharp.Html.Parser.HtmlDomBuilder:GenerateImpliedEndTagsExceptFor(System.String):this (FullOpts)
+; Total bytes of code 154, prolog size 6, PerfScore 618.54, instruction count 54, allocated bytes for code 154 (MethodHash=ca620fda) for method AngleSharp.Html.Parser.HtmlDomBuilder:GenerateImpliedEndTagsExceptFor(System.String):this (FullOpts)
; ============================================================
Unwind Info:
+21 (+233.33%) : 122503.dasm - Parlot.Fluent.TextLiteral+<>c:<.ctor>b_20(ushort):ubyte:this (FullOpts)
@@ -2,28 +2,47 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Parlot.Fluent.TextLiteral+<>c>
; V01 arg1 [V01,T00] ( 3, 3 ) ushort -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
+; V04 cse0 [V04,T01] ( 4, 3.22) int -> rax "CSE - aggressive"
;
; Lcl frame size = 0
G_M65486_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M65486_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rcx, dx
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M65486_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [Parlot.Character:IsNewLine(ushort):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=1 PerfScore 2.00
+G_M65486_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, dx
+ cmp eax, 10
+ je SHORT G_M65486_IG05
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M65486_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 13
+ je SHORT G_M65486_IG05
+ ;; size=5 bbWeight=0.80 PerfScore 1.00
+G_M65486_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 11
+ sete al
+ movzx rax, al
+ jmp SHORT G_M65486_IG06
+ ;; size=11 bbWeight=0.42 PerfScore 1.46
+G_M65486_IG05: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.58 PerfScore 0.15
+G_M65486_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 9, prolog size 0, PerfScore 2.25, instruction count 2, allocated bytes for code 9 (MethodHash=31210031) for method Parlot.Fluent.TextLiteral+<>c:<.ctor>b__2_0(ushort):ubyte:this (FullOpts)
+; Total bytes of code 30, prolog size 0, PerfScore 5.10, instruction count 11, allocated bytes for code 30 (MethodHash=31210031) for method Parlot.Fluent.TextLiteral+<>c:<.ctor>b__2_0(ushort):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run.windows.x64.checked.mch
-14 (-21.88%) : 4186.dasm - System.Text.RegularExpressions.RegexNode:g_CanJoinLengthCheck|600(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rcx class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T03] ( 3, 2 ) ubyte -> rax
-; V02 loc1 [V02,T02] ( 3, 2.50) ubyte -> rax
+; V00 arg0 [V00,T00] ( 5, 4.18) ref -> rcx class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T03] ( 3, 1.60) ubyte -> rax
+; V02 loc1 [V02,T02] ( 3, 2.09) ubyte -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 rat0 [V05,T01] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
@@ -24,51 +26,39 @@ G_M17774_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
movzx rax, byte ptr [rcx+0x2E]
lea edx, [rax-0x03]
cmp edx, 9
- ja SHORT G_M17774_IG03
- mov eax, edx
- lea rdx, [reloc @RWD00]
- mov edx, dword ptr [rdx+4*rax]
- lea r8, G_M17774_IG02
- add rdx, r8
- jmp rdx
- ;; size=36 bbWeight=1 PerfScore 9.75
-G_M17774_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov eax, 1
- jmp SHORT G_M17774_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M17774_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
+ 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=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rcx+0x20]
cmp eax, dword ptr [rcx+0x24]
- je SHORT G_M17774_IG04
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M17774_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M17774_IG06
+ ;; size=8 bbWeight=0.59 PerfScore 3.53
+G_M17774_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17774_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.33 PerfScore 0.08
+G_M17774_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
;; size=1 bbWeight=1 PerfScore 1.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
+G_M17774_IG06: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
+ 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=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M17774_IG04
+ ;; size=2 bbWeight=0.05 PerfScore 0.09
-
-; Total bytes of code 64, prolog size 0, PerfScore 16.75, instruction count 21, allocated bytes for code 64 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
+; Total bytes of code 50, prolog size 0, PerfScore 10.96, instruction count 18, allocated bytes for code 50 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
; ============================================================
Unwind Info:
-14 (-21.88%) : 14884.dasm - System.Text.RegularExpressions.RegexNode:g_CanJoinLengthCheck|600(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rcx class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T03] ( 3, 2 ) ubyte -> rax
-; V02 loc1 [V02,T02] ( 3, 2.50) ubyte -> rax
+; V00 arg0 [V00,T00] ( 5, 4.18) ref -> rcx class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T03] ( 3, 1.60) ubyte -> rax
+; V02 loc1 [V02,T02] ( 3, 2.09) ubyte -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 rat0 [V05,T01] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
@@ -24,51 +26,39 @@ G_M17774_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
movzx rax, byte ptr [rcx+0x2E]
lea edx, [rax-0x03]
cmp edx, 9
- ja SHORT G_M17774_IG03
- mov eax, edx
- lea rdx, [reloc @RWD00]
- mov edx, dword ptr [rdx+4*rax]
- lea r8, G_M17774_IG02
- add rdx, r8
- jmp rdx
- ;; size=36 bbWeight=1 PerfScore 9.75
-G_M17774_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov eax, 1
- jmp SHORT G_M17774_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M17774_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
+ 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=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rcx+0x20]
cmp eax, dword ptr [rcx+0x24]
- je SHORT G_M17774_IG04
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M17774_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M17774_IG06
+ ;; size=8 bbWeight=0.59 PerfScore 3.53
+G_M17774_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17774_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.33 PerfScore 0.08
+G_M17774_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
;; size=1 bbWeight=1 PerfScore 1.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
+G_M17774_IG06: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
+ 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=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M17774_IG04
+ ;; size=2 bbWeight=0.05 PerfScore 0.09
-
-; Total bytes of code 64, prolog size 0, PerfScore 16.75, instruction count 21, allocated bytes for code 64 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
+; Total bytes of code 50, prolog size 0, PerfScore 10.96, instruction count 18, allocated bytes for code 50 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
; ============================================================
Unwind Info:
-10 (-19.61%) : 5085.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:b_1076(System.Object):int:this (FullOpts)
@@ -2,17 +2,20 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c>
-; V01 arg1 [V01,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op <MicroBenchmarks.Serializers.StructRecord>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "V02.[020..024)"
+; V05 cse0 [V05,T01] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -23,18 +26,17 @@ G_M21734_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=8 bbWeight=1 PerfScore 1.50
G_M21734_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
- cmp qword ptr [rbx], rdx
+ mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
+ cmp qword ptr [rbx], rcx
je SHORT G_M21734_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M21734_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M21734_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.StructRecord
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M21734_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x1C]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -44,7 +46,7 @@ G_M21734_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 51, prolog size 5, PerfScore 10.38, instruction count 13, allocated bytes for code 51 (MethodHash=925eab19) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_6(System.Object):int:this (FullOpts)
+; Total bytes of code 41, prolog size 5, PerfScore 11.12, instruction count 12, allocated bytes for code 41 (MethodHash=925eab19) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_6(System.Object):int:this (FullOpts)
; ============================================================
Unwind Info:
+26 (+23.85%) : 12762.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [rsp+0x58] single-def
-; V02 loc0 [V02,T02] ( 6, 4 ) int -> rsi
-; V03 loc1 [V03,T03] ( 4, 3 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 7.20) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) byref -> [rsp+0x58] single-def
+; V02 loc0 [V02,T01] ( 6, 5.20) int -> rsi
+; V03 loc1 [V03,T04] ( 4, 3.60) ref -> rdi 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 (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 cse0 [V07,T05] ( 3, 2.50) int -> rbp "CSE - aggressive"
-;* V08 rat0 [V08,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 cse0 [V07,T06] ( 3, 2.80) int -> rbp "CSE - aggressive"
+; V08 rat0 [V08,T05] ( 2, 3.20) long -> rax "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T03] ( 2, 3.20) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -28,9 +30,10 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push rbx
sub rsp, 40
+ mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 5.50
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx]
mov esi, dword ptr [rbx+0x10]
@@ -39,27 +42,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
; gcrRegs +[rdi]
mov ebp, dword ptr [rdi+0x08]
cmp ebp, esi
- ja SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG05
;; size=16 bbWeight=1 PerfScore 7.50
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
- ; gcrRegs -[rdi]
- xor rax, rax
- ; gcrRegs +[rax]
- mov gword ptr [rdx], rax
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M49890_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rax]
- ; byrRegs -[rdx]
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0004 {rdx}, gcvars, byref, isz
- ; gcrRegs +[rdi]
- ; byrRegs +[rdx]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=0088 {rbx rdi}, byrefRegs=0004 {rdx}, byref, isz
mov bword ptr [rsp+0x58], rdx
; GC ptr vars +{V01}
inc dword ptr [rbx+0x14]
@@ -74,32 +59,61 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- movsxd rax, esi
- mov ecx, ebp
- cmp rax, rcx
- jae SHORT G_M49890_IG07
- movsxd rax, esi
- xor rcx, rcx
- ; gcrRegs +[rcx]
- mov gword ptr [rdi+8*rax+0x10], rcx
- mov eax, 1
- ;; size=53 bbWeight=0.50 PerfScore 6.38
-G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x38]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x18]
+ test rax, rax
+ jne SHORT G_M49890_IG07
+ ;; size=47 bbWeight=0.80 PerfScore 14.80
+G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M49890_IG07
+ ;; size=2 bbWeight=0.16 PerfScore 0.32
+G_M49890_IG05: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rdx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ mov gword ptr [rdx], rax
+ ;; size=5 bbWeight=0.20 PerfScore 0.25
+G_M49890_IG06: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax]
+ ; byrRegs -[rdx]
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M49890_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.20 PerfScore 0.65
+G_M49890_IG07: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rdi]
+ movsxd rax, esi
+ mov ecx, ebp
+ cmp rax, rcx
+ jae SHORT G_M49890_IG09
+ movsxd rax, esi
+ xor rcx, rcx
+ ; gcrRegs +[rcx]
+ mov gword ptr [rdi+8*rax+0x10], rcx
+ mov eax, 1
+ ;; size=25 bbWeight=0.80 PerfScore 2.80
+G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.80 PerfScore 2.60
+G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 109, prolog size 8, PerfScore 22.25, instruction count 43, allocated bytes for code 109 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
+; Total bytes of code 135, prolog size 13, PerfScore 34.42, instruction count 51, allocated bytes for code 135 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+26 (+36.62%) : 11386.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory
1[System.__Canon]:this (FullOpts)
@@ -2,24 +2,26 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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,T02] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V00 this [V00,T02] ( 5, 4 ) ref -> rsi this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
; V01 RetBuf [V01,T00] ( 6, 6 ) byref -> rbx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp3 [V05,T01] ( 4, 8 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V05 tmp3 [V05,T01] ( 6, 6.96) ref -> rdx class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V06 tmp4 [V06,T05] ( 2, 2 ) ref -> rdx single-def "field V03._object (fldOffset=0x0)" P-INDEP
;* V07 tmp5 [V07,T07] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP
;* V08 tmp6 [V08,T08] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP
-;* V09 rat0 [V09,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V09 rat0 [V09,T04] ( 2, 4 ) long -> rcx "Spilling to split statement for tree"
;* V10 rat1 [V10,T06] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V11 rat2 [V11,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V11 rat2 [V11,T03] ( 2, 4 ) long -> rcx "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -34,13 +36,24 @@ G_M44448_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[rbx]
;; size=17 bbWeight=1 PerfScore 3.75
G_M44448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- cmp dword ptr [rsi], esi
+ mov rcx, qword ptr [rsi]
+ mov rcx, qword ptr [rcx+0x38]
+ mov rcx, qword ptr [rcx]
+ mov rcx, qword ptr [rcx+0x28]
+ test rcx, rcx
+ je SHORT G_M44448_IG07
+ ;; size=19 bbWeight=1 PerfScore 9.25
+G_M44448_IG03: ; bbWeight=0.80, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov rdx, gword ptr [rsi+0x08]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M44448_IG04
+ je SHORT G_M44448_IG08
+ ;; size=9 bbWeight=0.80 PerfScore 2.60
+G_M44448_IG04: ; bbWeight=0.48, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [rdx+0x08], 10
- jb SHORT G_M44448_IG04
+ jb SHORT G_M44448_IG08
+ ;; size=6 bbWeight=0.48 PerfScore 1.92
+G_M44448_IG05: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, rbx
; byrRegs +[rcx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
@@ -51,21 +64,29 @@ G_M44448_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
mov dword ptr [rbx+0x0C], 10
mov rax, rbx
; byrRegs +[rax]
- ;; size=40 bbWeight=1 PerfScore 14.00
-G_M44448_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=23 bbWeight=1 PerfScore 3.75
+G_M44448_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M44448_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax rbx]
+G_M44448_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; byrRegs -[rax]
+ mov rdx, gword ptr [rsi+0x08]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ jne SHORT G_M44448_IG04
+ ;; size=9 bbWeight=0.20 PerfScore 0.65
+G_M44448_IG08: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx]
+ ; byrRegs -[rbx]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 71, prolog size 11, PerfScore 20.00, instruction count 24, allocated bytes for code 71 (MethodHash=a215525f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 97, prolog size 11, PerfScore 24.17, instruction count 32, allocated bytes for code 97 (MethodHash=a215525f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
+26 (+43.33%) : 34701.dasm - System.Memory.Constructors1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan
1[System.__Canon]:this (FullOpts)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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,T02] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
-; V01 RetBuf [V01,T01] ( 5, 5 ) byref -> rdx single-def
+; V00 this [V00,T02] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Memory.Constructors`1[System.__Canon]>
+; V01 RetBuf [V01,T00] ( 5, 5 ) byref -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.__Canon]>
;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V05 tmp3 [V05,T00] ( 4, 8 ) ref -> rax class-hnd single-def "Inlining Arg" <System.__Canon[]>
+; V05 tmp3 [V05,T01] ( 6, 6.96) ref -> rax class-hnd single-def "Inlining Arg" <System.__Canon[]>
; V06 tmp4 [V06,T05] ( 2, 2 ) byref -> rax single-def "field V03._reference (fldOffset=0x0)" P-INDEP
;* V07 tmp5 [V07,T07] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-;* V08 rat0 [V08,T04] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V08 rat0 [V08,T04] ( 2, 4 ) long -> rax "Spilling to split statement for tree"
;* V09 rat1 [V09,T06] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T03] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T03] ( 2, 4 ) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 48
@@ -31,33 +33,52 @@ G_M3040_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=13 bbWeight=1 PerfScore 2.50
G_M3040_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx]
- cmp dword ptr [rbx], ebx
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x38]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x30]
+ test rax, rax
+ je SHORT G_M3040_IG07
+ ;; size=19 bbWeight=1 PerfScore 9.25
+G_M3040_IG03: ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
test rax, rax
- je SHORT G_M3040_IG04
+ je SHORT G_M3040_IG08
+ ;; size=9 bbWeight=0.80 PerfScore 2.60
+G_M3040_IG04: ; bbWeight=0.48, gcrefRegs=0009 {rax rbx}, byrefRegs=0004 {rdx}, byref, isz
cmp dword ptr [rax+0x08], 10
- jb SHORT G_M3040_IG04
+ jb SHORT G_M3040_IG08
+ ;; size=6 bbWeight=0.48 PerfScore 1.92
+G_M3040_IG05: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0004 {rdx}, byref
add rax, 16
; gcrRegs -[rax]
; byrRegs +[rax]
mov bword ptr [rdx], rax
mov dword ptr [rdx+0x08], 10
mov rax, rdx
- ;; size=34 bbWeight=1 PerfScore 12.75
-G_M3040_IG03: ; bbWeight=1, epilog, nogc, extend
+ ;; size=17 bbWeight=1 PerfScore 2.50
+G_M3040_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-G_M3040_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax rdx]
+G_M3040_IG07: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, gcvars, byref, isz
+ ; byrRegs -[rax]
+ mov rax, gword ptr [rbx+0x08]
+ ; gcrRegs +[rax]
+ test rax, rax
+ jne SHORT G_M3040_IG04
+ ;; size=9 bbWeight=0.20 PerfScore 0.65
+G_M3040_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ ; byrRegs -[rdx]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 60, prolog size 10, PerfScore 17.00, instruction count 19, allocated bytes for code 60 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
+; Total bytes of code 86, prolog size 10, PerfScore 21.17, instruction count 27, allocated bytes for code 86 (MethodHash=74f7f41f) for method System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-10 (-19.61%) : 28141.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -21,18 +24,17 @@ G_M53339_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=8 bbWeight=1 PerfScore 1.50
G_M53339_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
- cmp qword ptr [rbx], rdx
+ mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
+ cmp qword ptr [rbx], rcx
je SHORT G_M53339_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M53339_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M53339_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M53339_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x30]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -42,7 +44,7 @@ G_M53339_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 51, prolog size 5, PerfScore 10.38, instruction count 13, allocated bytes for code 51 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
+; Total bytes of code 41, prolog size 5, PerfScore 11.12, instruction count 12, allocated bytes for code 41 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
-10 (-19.61%) : 64829.dasm - (dynamicClass):NumGetter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -21,18 +24,17 @@ G_M10319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=8 bbWeight=1 PerfScore 1.50
G_M10319_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.SimpleStructWithProperties
- cmp qword ptr [rbx], rdx
+ mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.SimpleStructWithProperties
+ cmp qword ptr [rbx], rcx
je SHORT G_M10319_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M10319_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M10319_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.SimpleStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M10319_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x10]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -42,7 +44,7 @@ G_M10319_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 51, prolog size 5, PerfScore 10.38, instruction count 13, allocated bytes for code 51 (MethodHash=d4f4d7b0) for method (dynamicClass):NumGetter(System.Object):int (FullOpts)
+; Total bytes of code 41, prolog size 5, PerfScore 11.12, instruction count 12, allocated bytes for code 41 (MethodHash=d4f4d7b0) for method (dynamicClass):NumGetter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
-10 (-19.23%) : 28126.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -21,18 +24,17 @@ G_M3216_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=8 bbWeight=1 PerfScore 1.50
G_M3216_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
- cmp qword ptr [rbx], rdx
+ mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
+ cmp qword ptr [rbx], rcx
je SHORT G_M3216_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M3216_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M3216_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M3216_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rbx+0x08]
; gcrRegs +[rax]
@@ -43,7 +45,7 @@ G_M3216_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 52, prolog size 5, PerfScore 10.38, instruction count 13, allocated bytes for code 52 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
+; Total bytes of code 42, prolog size 5, PerfScore 11.12, instruction count 12, allocated bytes for code 42 (MethodHash=c4c0f36f) for method (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
; ============================================================
Unwind Info:
+10 (+13.70%) : 8754.dasm - System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T00] ( 7, 4.14) ref -> rcx class-hnd single-def <System.Reflection.MethodInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 1 ) int -> rbx "guarded devirt return temp"
+; V03 tmp1 [V03,T02] ( 4, 1 ) int -> rbx "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 32
@@ -41,25 +41,31 @@ G_M32196_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
cmp qword ptr [rcx], rax
- jne SHORT G_M32196_IG07
+ jne SHORT G_M32196_IG08
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M32196_IG06: ; bbWeight=0.35, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov ebx, dword ptr [rcx+0x5C]
- jmp SHORT G_M32196_IG08
- ;; size=5 bbWeight=0.35 PerfScore 1.42
-G_M32196_IG07: ; bbWeight=0.14, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ and ebx, 7
+ cmp ebx, 6
+ jne SHORT G_M32196_IG09
+ ;; size=11 bbWeight=0.35 PerfScore 1.24
+G_M32196_IG07: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M32196_IG03
+ ;; size=2 bbWeight=0.43 PerfScore 0.85
+G_M32196_IG08: ; bbWeight=0.14, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x58]
call [rax+0x20]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov ebx, eax
- ;; size=12 bbWeight=0.14 PerfScore 1.05
-G_M32196_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- and ebx, 7
- cmp ebx, 6
+ mov eax, ebx
+ and eax, 7
+ cmp eax, 6
je SHORT G_M32196_IG03
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=22 bbWeight=0.14 PerfScore 1.30
G_M32196_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
@@ -69,7 +75,7 @@ G_M32196_IG10: ; bbWeight=0, epilog, nogc, extend
ret
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 73, prolog size 5, PerfScore 10.10, instruction count 26, allocated bytes for code 73 (MethodHash=a0e9823b) for method System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
+; Total bytes of code 83, prolog size 5, PerfScore 10.28, instruction count 30, allocated bytes for code 83 (MethodHash=a0e9823b) for method System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
; ============================================================
Unwind Info:
+10 (+13.70%) : 69967.dasm - System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
@@ -12,7 +12,7 @@
; V00 arg0 [V00,T00] ( 7, 3.02) ref -> rcx class-hnd single-def <System.Reflection.MethodInfo>
; V01 arg1 [V01,T01] ( 3, 3 ) ubyte -> rdx single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 0.02) int -> rbx "guarded devirt return temp"
+; V03 tmp1 [V03,T02] ( 4, 0.02) int -> rbx "guarded devirt return temp"
;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;
; Lcl frame size = 32
@@ -41,25 +41,31 @@ G_M32196_IG05: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
cmp qword ptr [rcx], rax
- jne SHORT G_M32196_IG07
+ jne SHORT G_M32196_IG08
;; size=15 bbWeight=0.01 PerfScore 0.05
G_M32196_IG06: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov ebx, dword ptr [rcx+0x5C]
- jmp SHORT G_M32196_IG08
- ;; size=5 bbWeight=0.01 PerfScore 0.04
-G_M32196_IG07: ; bbWeight=0.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ and ebx, 7
+ cmp ebx, 6
+ jne SHORT G_M32196_IG09
+ ;; size=11 bbWeight=0.01 PerfScore 0.04
+G_M32196_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M32196_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M32196_IG08: ; bbWeight=0.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x58]
call [rax+0x20]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov ebx, eax
- ;; size=12 bbWeight=0.00 PerfScore 0.01
-G_M32196_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- and ebx, 7
- cmp ebx, 6
+ mov eax, ebx
+ and eax, 7
+ cmp eax, 6
je SHORT G_M32196_IG03
- ;; size=8 bbWeight=0.01 PerfScore 0.02
+ ;; size=22 bbWeight=0.00 PerfScore 0.01
G_M32196_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0 PerfScore 0.00
@@ -69,7 +75,7 @@ G_M32196_IG10: ; bbWeight=0, epilog, nogc, extend
ret
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 73, prolog size 5, PerfScore 5.85, instruction count 26, allocated bytes for code 73 (MethodHash=a0e9823b) for method System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
+; Total bytes of code 83, prolog size 5, PerfScore 5.85, instruction count 30, allocated bytes for code 83 (MethodHash=a0e9823b) for method System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
; ============================================================
Unwind Info:
+27 (+36.99%) : 80316.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:Allocate():System.Canon:this (Tier1)
@@ -5,20 +5,20 @@
; optimized using Dynamic PGO
; rsp 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 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
-; V01 loc0 [V01,T01] ( 6, 4 ) ref -> rsi class-hnd <System.__Canon>
+; V00 this [V00,T03] ( 6, 44 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
+; V01 loc0 [V01,T04] ( 6, 44 ) ref -> rsi class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def <System.__Canon>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 0 ) byref -> rcx single-def "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 4,120 ) byref -> rcx single-def "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
-;* V07 rat0 [V07,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T02] ( 2, 80 ) long -> r8 "Spilling to split statement for tree"
;* V08 rat1 [V08,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T01] ( 2, 80 ) long -> r8 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -26,51 +26,31 @@ G_M16954_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbx
sub rsp, 40
+ mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=9 bbWeight=1 PerfScore 2.50
+ ;; size=14 bbWeight=1 PerfScore 3.50
G_M16954_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
test rsi, rsi
- jne SHORT G_M16954_IG06
+ je SHORT G_M16954_IG06
;; size=9 bbWeight=1 PerfScore 3.25
-G_M16954_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this]
- ; gcrRegs -[rcx] +[rax]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M16954_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rsi
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M16954_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M16954_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
+G_M16954_IG03: ; bbWeight=20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
+ mov r8, qword ptr [rbx]
+ mov r8, qword ptr [r8+0x38]
+ mov r8, qword ptr [r8]
+ mov r8, qword ptr [r8+0x28]
+ test r8, r8
+ je SHORT G_M16954_IG09
+ ;; size=23 bbWeight=20 PerfScore 195.00
+G_M16954_IG04: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
test rcx, rcx
- jne SHORT G_M16954_IG07
- call [System.ThrowHelper:ThrowNullReferenceException()]
- ; gcrRegs -[rsi]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- int3
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M16954_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
- ; gcrRegs +[rsi]
- ; byrRegs +[rcx]
+ je SHORT G_M16954_IG10
+ ;; size=5 bbWeight=16 PerfScore 20.00
+G_M16954_IG05: ; bbWeight=20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
mov r8, rsi
; gcrRegs +[r8]
xor rdx, rdx
@@ -80,11 +60,44 @@ G_M16954_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rc
; byrRegs -[rcx]
; gcr arg pop 0
cmp rax, rsi
- je SHORT G_M16954_IG04
- jmp SHORT G_M16954_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
+ je SHORT G_M16954_IG07
+ ;; size=15 bbWeight=20 PerfScore 55.00
+G_M16954_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this]
+ ; gcrRegs -[rcx] +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M16954_IG07: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rax, rsi
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M16954_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M16954_IG09: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ ; byrRegs +[rcx]
+ test rcx, rcx
+ jne SHORT G_M16954_IG05
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M16954_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ ; byrRegs -[rcx]
+ call [System.ThrowHelper:ThrowNullReferenceException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 73, prolog size 6, PerfScore 11.75, instruction count 26, allocated bytes for code 73 (MethodHash=07a0bdc5) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (Tier1)
+; Total bytes of code 100, prolog size 11, PerfScore 287.75, instruction count 34, allocated bytes for code 100 (MethodHash=07a0bdc5) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.windows.x64.checked.mch
-14 (-21.88%) : 25590.dasm - System.Text.RegularExpressions.RegexNode:g_CanJoinLengthCheck|600(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rcx class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T03] ( 3, 2 ) ubyte -> rax
-; V02 loc1 [V02,T02] ( 3, 2.50) ubyte -> rax
+; V00 arg0 [V00,T00] ( 5, 4.18) ref -> rcx class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T03] ( 3, 1.60) ubyte -> rax
+; V02 loc1 [V02,T02] ( 3, 2.09) ubyte -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 rat0 [V05,T01] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
@@ -24,51 +26,39 @@ G_M17774_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
movzx rax, byte ptr [rcx+0x2E]
lea edx, [rax-0x03]
cmp edx, 9
- ja SHORT G_M17774_IG03
- mov eax, edx
- lea rdx, [reloc @RWD00]
- mov edx, dword ptr [rdx+4*rax]
- lea r8, G_M17774_IG02
- add rdx, r8
- jmp rdx
- ;; size=36 bbWeight=1 PerfScore 9.75
-G_M17774_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov eax, 1
- jmp SHORT G_M17774_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M17774_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
+ 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=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rcx+0x20]
cmp eax, dword ptr [rcx+0x24]
- je SHORT G_M17774_IG04
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M17774_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M17774_IG06
+ ;; size=8 bbWeight=0.59 PerfScore 3.53
+G_M17774_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17774_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.33 PerfScore 0.08
+G_M17774_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
;; size=1 bbWeight=1 PerfScore 1.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
+G_M17774_IG06: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
+ 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=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M17774_IG04
+ ;; size=2 bbWeight=0.05 PerfScore 0.09
-
-; Total bytes of code 64, prolog size 0, PerfScore 16.75, instruction count 21, allocated bytes for code 64 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
+; Total bytes of code 50, prolog size 0, PerfScore 10.96, instruction count 18, allocated bytes for code 50 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
; ============================================================
Unwind Info:
-10 (-19.61%) : 45745.dasm - (dynamicClass):NumGetter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -21,18 +24,17 @@ G_M10319_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=8 bbWeight=1 PerfScore 1.50
G_M10319_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.SimpleStructWithProperties
- cmp qword ptr [rbx], rdx
+ mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.SimpleStructWithProperties
+ cmp qword ptr [rbx], rcx
je SHORT G_M10319_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M10319_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M10319_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.SimpleStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M10319_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x10]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -42,7 +44,7 @@ G_M10319_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 51, prolog size 5, PerfScore 10.38, instruction count 13, allocated bytes for code 51 (MethodHash=d4f4d7b0) for method (dynamicClass):NumGetter(System.Object):int (FullOpts)
+; Total bytes of code 41, prolog size 5, PerfScore 11.12, instruction count 12, allocated bytes for code 41 (MethodHash=d4f4d7b0) for method (dynamicClass):NumGetter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
-10 (-19.61%) : 16866.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 arg0 [V00,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -21,18 +24,17 @@ G_M53339_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=8 bbWeight=1 PerfScore 1.50
G_M53339_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
- cmp qword ptr [rbx], rdx
+ mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
+ cmp qword ptr [rbx], rcx
je SHORT G_M53339_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M53339_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M53339_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; MicroBenchmarks.Serializers.LargeStructWithProperties
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M53339_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x30]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -42,7 +44,7 @@ G_M53339_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 51, prolog size 5, PerfScore 10.38, instruction count 13, allocated bytes for code 51 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
+; Total bytes of code 41, prolog size 5, PerfScore 11.12, instruction count 12, allocated bytes for code 41 (MethodHash=b44e2fa4) for method (dynamicClass):Int1Getter(System.Object):int (FullOpts)
; ============================================================
Unwind Info:
+10 (+21.74%) : 2756.dasm - System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
@@ -2,54 +2,58 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; fully 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 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T02] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-; V02 cse0 [V02,T01] ( 3, 2.50) int -> rcx "CSE - aggressive"
-; V03 cse1 [V03,T00] ( 3, 2.50) byref -> rdx "CSE - aggressive"
+; V01 tmp1 [V01,T01] ( 3, 1.23) ubyte -> rax "Inline return value spill temp"
+; V02 cse0 [V02,T00] ( 3, 2.80) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 0
-G_M63529_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M63529_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M63529_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; static handle
+ ; byrRegs +[rcx]
+ mov ecx, dword ptr [rcx]
+ ; byrRegs -[rcx]
+ test ecx, ecx
+ jl SHORT G_M63529_IG08
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M63529_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test ecx, ecx
+ jle SHORT G_M63529_IG06
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M63529_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.42 PerfScore 0.10
+G_M63529_IG05: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=0.62 PerfScore 0.62
+G_M63529_IG06: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; static handle
; byrRegs +[rdx]
- mov ecx, dword ptr [rdx]
- test ecx, ecx
- jge SHORT G_M63529_IG04
- ;; size=16 bbWeight=1 PerfScore 3.50
-G_M63529_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.38 PerfScore 0.19
+G_M63529_IG07: ; bbWeight=0.38, epilog, nogc, extend
+ tail.jmp [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte]
+ ; gcr arg pop 0
+ ;; size=6 bbWeight=0.38 PerfScore 0.77
+G_M63529_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx]
; byrRegs -[rdx]
xor eax, eax
jmp SHORT G_M63529_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M63529_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
- ; byrRegs +[rdx]
- test ecx, ecx
- jle SHORT G_M63529_IG06
- mov eax, 1
- ;; size=9 bbWeight=0.50 PerfScore 0.75
-G_M63529_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rdx]
- ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M63529_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, gcvars, byref
- ; byrRegs +[rdx]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M63529_IG07: ; bbWeight=0.50, epilog, nogc, extend
- tail.jmp [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=4 bbWeight=0.20 PerfScore 0.45
-; Total bytes of code 46, prolog size 0, PerfScore 7.00, instruction count 12, allocated bytes for code 46 (MethodHash=9cfc07d6) for method System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
+; Total bytes of code 56, prolog size 0, PerfScore 6.63, instruction count 13, allocated bytes for code 56 (MethodHash=9cfc07d6) for method System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
; ============================================================
Unwind Info:
+10 (+21.74%) : 77016.dasm - System.LocalAppContextSwitches:get_EnableUnsafeUTF7Encoding():ubyte (Tier1)
@@ -2,54 +2,58 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; fully 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 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T02] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-; V02 cse0 [V02,T01] ( 3, 2.50) int -> rcx "CSE - aggressive"
-; V03 cse1 [V03,T00] ( 3, 2.50) byref -> rdx "CSE - aggressive"
+; V01 tmp1 [V01,T01] ( 3, 1.23) ubyte -> rax "Inline return value spill temp"
+; V02 cse0 [V02,T00] ( 3, 2.80) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 0
-G_M13385_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M13385_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M13385_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; static handle
+ ; byrRegs +[rcx]
+ mov ecx, dword ptr [rcx]
+ ; byrRegs -[rcx]
+ test ecx, ecx
+ jl SHORT G_M13385_IG08
+ ;; size=16 bbWeight=1 PerfScore 3.50
+G_M13385_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test ecx, ecx
+ jle SHORT G_M13385_IG06
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M13385_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.42 PerfScore 0.10
+G_M13385_IG05: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=0.62 PerfScore 0.62
+G_M13385_IG06: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E ; static handle
; byrRegs +[rdx]
- mov ecx, dword ptr [rdx]
- test ecx, ecx
- jge SHORT G_M13385_IG04
- ;; size=16 bbWeight=1 PerfScore 3.50
-G_M13385_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.38 PerfScore 0.19
+G_M13385_IG07: ; bbWeight=0.38, epilog, nogc, extend
+ tail.jmp [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte]
+ ; gcr arg pop 0
+ ;; size=6 bbWeight=0.38 PerfScore 0.77
+G_M13385_IG08: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx]
; byrRegs -[rdx]
xor eax, eax
jmp SHORT G_M13385_IG05
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M13385_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
- ; byrRegs +[rdx]
- test ecx, ecx
- jle SHORT G_M13385_IG06
- mov eax, 1
- ;; size=9 bbWeight=0.50 PerfScore 0.75
-G_M13385_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rdx]
- ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M13385_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, gcvars, byref
- ; byrRegs +[rdx]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
- ;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M13385_IG07: ; bbWeight=0.50, epilog, nogc, extend
- tail.jmp [System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.00
+ ;; size=4 bbWeight=0.20 PerfScore 0.45
-; Total bytes of code 46, prolog size 0, PerfScore 7.00, instruction count 12, allocated bytes for code 46 (MethodHash=e27acbb6) for method System.LocalAppContextSwitches:get_EnableUnsafeUTF7Encoding():ubyte (Tier1)
+; Total bytes of code 56, prolog size 0, PerfScore 6.63, instruction count 13, allocated bytes for code 56 (MethodHash=e27acbb6) for method System.LocalAppContextSwitches:get_EnableUnsafeUTF7Encoding():ubyte (Tier1)
; ============================================================
Unwind Info:
+26 (+23.85%) : 23603.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
@@ -2,23 +2,25 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; Tier1 code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) byref -> [rsp+0x58] single-def
-; V02 loc0 [V02,T02] ( 6, 4 ) int -> rsi
-; V03 loc1 [V03,T03] ( 4, 3 ) ref -> rdi class-hnd single-def <<unknown class>>
+; V00 this [V00,T00] ( 8, 7.20) ref -> rbx this class-hnd single-def <System.Collections.Generic.Stack`1[System.__Canon]>
+; V01 arg1 [V01,T02] ( 4, 3 ) byref -> [rsp+0x58] single-def
+; V02 loc0 [V02,T01] ( 6, 5.20) int -> rsi
+; V03 loc1 [V03,T04] ( 4, 3.60) ref -> rdi 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 (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V07 cse0 [V07,T05] ( 3, 2.50) int -> rbp "CSE - aggressive"
-;* V08 rat0 [V08,T06] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 cse0 [V07,T06] ( 3, 2.80) int -> rbp "CSE - aggressive"
+; V08 rat0 [V08,T05] ( 2, 3.20) long -> rax "Spilling to split statement for tree"
;* V09 rat1 [V09,T07] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V10 rat2 [V10,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V10 rat2 [V10,T03] ( 2, 3.20) long -> rax "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -28,9 +30,10 @@ G_M49890_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push rbx
sub rsp, 40
+ mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=11 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 5.50
G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref, isz
; byrRegs +[rdx]
mov esi, dword ptr [rbx+0x10]
@@ -39,27 +42,9 @@ G_M49890_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
; gcrRegs +[rdi]
mov ebp, dword ptr [rdi+0x08]
cmp ebp, esi
- ja SHORT G_M49890_IG05
+ jbe SHORT G_M49890_IG05
;; size=16 bbWeight=1 PerfScore 7.50
-G_M49890_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
- ; gcrRegs -[rdi]
- xor rax, rax
- ; gcrRegs +[rax]
- mov gword ptr [rdx], rax
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M49890_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rax]
- ; byrRegs -[rdx]
- add rsp, 40
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0004 {rdx}, gcvars, byref, isz
- ; gcrRegs +[rdi]
- ; byrRegs +[rdx]
+G_M49890_IG03: ; bbWeight=0.80, gcrefRegs=0088 {rbx rdi}, byrefRegs=0004 {rdx}, byref, isz
mov bword ptr [rsp+0x58], rdx
; GC ptr vars +{V01}
inc dword ptr [rbx+0x14]
@@ -74,32 +59,61 @@ G_M49890_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=008
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- movsxd rax, esi
- mov ecx, ebp
- cmp rax, rcx
- jae SHORT G_M49890_IG07
- movsxd rax, esi
- xor rcx, rcx
- ; gcrRegs +[rcx]
- mov gword ptr [rdi+8*rax+0x10], rcx
- mov eax, 1
- ;; size=53 bbWeight=0.50 PerfScore 6.38
-G_M49890_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rax+0x38]
+ mov rax, qword ptr [rax]
+ mov rax, qword ptr [rax+0x18]
+ test rax, rax
+ jne SHORT G_M49890_IG07
+ ;; size=47 bbWeight=0.80 PerfScore 14.80
+G_M49890_IG04: ; bbWeight=0.16, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M49890_IG07
+ ;; size=2 bbWeight=0.16 PerfScore 0.32
+G_M49890_IG05: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rdx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ mov gword ptr [rdx], rax
+ ;; size=5 bbWeight=0.20 PerfScore 0.25
+G_M49890_IG06: ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rax]
+ ; byrRegs -[rdx]
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M49890_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.20 PerfScore 0.65
+G_M49890_IG07: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rdi]
+ movsxd rax, esi
+ mov ecx, ebp
+ cmp rax, rcx
+ jae SHORT G_M49890_IG09
+ movsxd rax, esi
+ xor rcx, rcx
+ ; gcrRegs +[rcx]
+ mov gword ptr [rdi+8*rax+0x10], rcx
+ mov eax, 1
+ ;; size=25 bbWeight=0.80 PerfScore 2.80
+G_M49890_IG08: ; bbWeight=0.80, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.80 PerfScore 2.60
+G_M49890_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rdi]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 109, prolog size 8, PerfScore 22.25, instruction count 43, allocated bytes for code 109 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
+; Total bytes of code 135, prolog size 13, PerfScore 34.42, instruction count 51, allocated bytes for code 135 (MethodHash=37eb3d1d) for method System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-37 (-66.07%) : 235118.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,16 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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
+; V00 loc0 [V00,T01] ( 2, 2 ) float -> mm0 single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) float -> mm0 "Single return block return value"
-; V03 cse0 [V03,T02] ( 5, 3.50) float -> mm1 "CSE - aggressive"
+; V02 tmp1 [V02,T00] ( 2, 4 ) float -> mm0 "Single return block return value"
+;* V03 cse0 [V03,T02] ( 0, 0 ) float -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 40
@@ -19,34 +21,17 @@ G_M53791_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
vzeroupper
;; size=7 bbWeight=1 PerfScore 1.25
-G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53791_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
; gcr arg pop 0
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm0, xmm1
- jbe SHORT G_M53791_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53791_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M53791_IG05
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M53791_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vucomiss xmm1, xmm0
- ja SHORT G_M53791_IG03
- vucomiss xmm0, xmm1
- jp SHORT G_M53791_IG03
- jne SHORT G_M53791_IG03
- vucomiss xmm1, xmm0
- jbe SHORT G_M53791_IG03
- jmp SHORT G_M53791_IG03
- ;; size=22 bbWeight=0.50 PerfScore 6.00
-G_M53791_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53791_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-RWD00 dd 41200000h ; 10
-
-; Total bytes of code 56, prolog size 7, PerfScore 19.50, instruction count 17, allocated bytes for code 56 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 19, prolog size 7, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=03ff2de0) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
-29 (-60.42%) : 229317.dasm - Test10w250d.testout1:Func011111111111111111111111111111111111111111111_1():float (FullOpts)
@@ -2,17 +2,19 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T01] ( 4, 3 ) float -> mm1 "CSE - aggressive"
+;* V04 cse0 [V04,T01] ( 0, 0 ) float -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 40
@@ -20,29 +22,17 @@ G_M53663_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 40
vzeroupper
;; size=7 bbWeight=1 PerfScore 1.25
-G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M53663_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float]
; gcr arg pop 0
- vmovss xmm1, dword ptr [reloc @RWD00]
- vucomiss xmm1, xmm0
- jbe SHORT G_M53663_IG04
- ;; size=20 bbWeight=1 PerfScore 9.00
-G_M53663_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ nop
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M53663_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M53663_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- vucomiss xmm0, xmm1
- jp SHORT G_M53663_IG03
- jne SHORT G_M53663_IG03
- vucomiss xmm0, xmm1
- jbe SHORT G_M53663_IG03
- jmp SHORT G_M53663_IG03
- ;; size=16 bbWeight=0.50 PerfScore 4.50
-RWD00 dd 41200000h ; 10
-
-; Total bytes of code 48, prolog size 7, PerfScore 16.00, instruction count 14, allocated bytes for code 48 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
+; Total bytes of code 19, prolog size 7, PerfScore 5.75, instruction count 6, allocated bytes for code 19 (MethodHash=d33e2e60) for method Test_10w250d.testout1:Func_0_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1_1():float (FullOpts)
; ============================================================
Unwind Info:
-6 (-60.00%) : 245204.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
@@ -2,8 +2,10 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
@@ -16,21 +18,14 @@
G_M63936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M63936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M63936_IG04
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M63936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M63936_IG05
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M63936_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M63936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, cl
- jmp SHORT G_M63936_IG03
- ;; size=5 bbWeight=1 PerfScore 2.25
-G_M63936_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M63936_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 10, prolog size 0, PerfScore 7.25, instruction count 5, allocated bytes for code 10 (MethodHash=0895063f) for method Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
+; Total bytes of code 4, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 4 (MethodHash=0895063f) for method Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
; ============================================================
Unwind Info:
+5 (+33.33%) : 63136.dasm - JIT.HardwareIntrinsics.General.Vector2561.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
@@ -2,31 +2,41 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte>
-; V01 arg1 [V01 ] ( 3, 3 ) byte -> [rsp+0x10] do-not-enreg[X] addr-exposed ld-addr-op single-def
+; V01 arg1 [V01 ] ( 3, 6.74) byte -> [rsp+0x10] do-not-enreg[X] addr-exposed ld-addr-op single-def
;* V02 loc0 [V02,T00] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
-G_M12269_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M12269_IG01: ; bbWeight=4.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
mov dword ptr [rsp+0x10], edx
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M12269_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- xor eax, eax
+ ;; size=4 bbWeight=4.74 PerfScore 4.74
+G_M12269_IG02: ; bbWeight=4.74, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rsp+0x10], 255
- sete al
- ;; size=10 bbWeight=1 PerfScore 3.25
-G_M12269_IG03: ; bbWeight=1, epilog, nogc, extend
+ jne SHORT G_M12269_IG05
+ ;; size=7 bbWeight=4.74 PerfScore 14.21
+G_M12269_IG03: ; bbWeight=2.89, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=2.89 PerfScore 0.72
+G_M12269_IG04: ; bbWeight=2.89, epilog, nogc, extend
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=1 bbWeight=2.89 PerfScore 2.89
+G_M12269_IG05: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ xor eax, eax
+ ;; size=2 bbWeight=0.47 PerfScore 0.12
+G_M12269_IG06: ; bbWeight=0.47, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.47 PerfScore 0.47
-; Total bytes of code 15, prolog size 0, PerfScore 5.25, instruction count 5, allocated bytes for code 15 (MethodHash=b297d012) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
+; Total bytes of code 20, prolog size 0, PerfScore 23.16, instruction count 7, allocated bytes for code 20 (MethodHash=b297d012) for method JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+27 (+36.99%) : 441397.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.Canon]:Allocate():System.Canon:this (Tier1)
@@ -5,20 +5,20 @@
; optimized using Dynamic PGO
; rsp based frame
; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
-; V01 loc0 [V01,T01] ( 6, 4 ) ref -> rsi class-hnd <System.__Canon>
+; V00 this [V00,T03] ( 6,104 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]>
+; V01 loc0 [V01,T04] ( 6,104 ) ref -> rsi class-hnd <System.__Canon>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def <System.__Canon>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 0 ) byref -> rcx single-def "impAppendStmt"
+; V04 tmp1 [V04,T00] ( 4,300 ) byref -> rcx single-def "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.__Canon>
-;* V07 rat0 [V07,T03] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V07 rat0 [V07,T02] ( 2,200 ) long -> r8 "Spilling to split statement for tree"
;* V08 rat1 [V08,T05] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V09 rat2 [V09,T04] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V09 rat2 [V09,T01] ( 2,200 ) long -> r8 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 40
@@ -26,51 +26,31 @@ G_M16954_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbx
sub rsp, 40
+ mov qword ptr [rsp+0x20], rcx
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=9 bbWeight=1 PerfScore 2.50
+ ;; size=14 bbWeight=1 PerfScore 3.50
G_M16954_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08]
; gcrRegs +[rsi]
test rsi, rsi
- jne SHORT G_M16954_IG06
+ je SHORT G_M16954_IG06
;; size=9 bbWeight=1 PerfScore 3.25
-G_M16954_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this]
- ; gcrRegs -[rcx] +[rax]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- ;; size=12 bbWeight=1 PerfScore 3.50
-G_M16954_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov rax, rsi
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M16954_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
- ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M16954_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
+G_M16954_IG03: ; bbWeight=50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
+ mov r8, qword ptr [rbx]
+ mov r8, qword ptr [r8+0x38]
+ mov r8, qword ptr [r8]
+ mov r8, qword ptr [r8+0x28]
+ test r8, r8
+ je SHORT G_M16954_IG09
+ ;; size=23 bbWeight=50 PerfScore 487.50
+G_M16954_IG04: ; bbWeight=40, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
test rcx, rcx
- jne SHORT G_M16954_IG07
- call [System.ThrowHelper:ThrowNullReferenceException()]
- ; gcrRegs -[rsi]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
- int3
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M16954_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
- ; gcrRegs +[rsi]
- ; byrRegs +[rcx]
+ je SHORT G_M16954_IG10
+ ;; size=5 bbWeight=40 PerfScore 50.00
+G_M16954_IG05: ; bbWeight=50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
mov r8, rsi
; gcrRegs +[r8]
xor rdx, rdx
@@ -80,11 +60,44 @@ G_M16954_IG07: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rc
; byrRegs -[rcx]
; gcr arg pop 0
cmp rax, rsi
- je SHORT G_M16954_IG04
- jmp SHORT G_M16954_IG03
- ;; size=17 bbWeight=0 PerfScore 0.00
+ je SHORT G_M16954_IG07
+ ;; size=15 bbWeight=50 PerfScore 137.50
+G_M16954_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rsi]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:AllocateSlow():System.__Canon:this]
+ ; gcrRegs -[rcx] +[rax]
+ ; gcr arg pop 0
+ mov rsi, rax
+ ; gcrRegs +[rsi]
+ ;; size=12 bbWeight=1 PerfScore 3.50
+G_M16954_IG07: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rax, rsi
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M16954_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rsi
+ ret
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M16954_IG09: ; bbWeight=10, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ ; byrRegs +[rcx]
+ test rcx, rcx
+ jne SHORT G_M16954_IG05
+ ;; size=5 bbWeight=10 PerfScore 12.50
+G_M16954_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
+ ; byrRegs -[rcx]
+ call [System.ThrowHelper:ThrowNullReferenceException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 73, prolog size 6, PerfScore 11.75, instruction count 26, allocated bytes for code 73 (MethodHash=07a0bdc5) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (Tier1)
+; Total bytes of code 100, prolog size 11, PerfScore 700.25, instruction count 34, allocated bytes for code 100 (MethodHash=07a0bdc5) for method Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (Tier1)
; ============================================================
Unwind Info:
+43 (+43.43%) : 315698.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
@@ -2,18 +2,24 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rbx this class-hnd single-def <Internal.IL.Stubs.ILCodeStream>
+; V00 this [V00,T00] ( 14, 13.60) ref -> rbx this class-hnd single-def <Internal.IL.Stubs.ILCodeStream>
; V01 arg1 [V01,T01] ( 4, 4 ) int -> rsi single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 4, 2 ) int -> rcx "Inline stloc first use temp"
-; V04 tmp2 [V04,T02] ( 3, 3 ) ref -> rdx class-hnd single-def "impAppendStmt" <<unknown class>>
-; V05 cse0 [V05,T04] ( 3, 1.50) ref -> rdx "CSE - moderate"
+; V03 tmp1 [V03,T04] ( 4, 4 ) int -> rcx "Inline stloc first use temp"
+; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> rdx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V05 tmp3 [V05,T05] ( 4, 4 ) int -> rcx "Inline stloc first use temp"
+; V06 tmp4 [V06,T03] ( 3, 6 ) ref -> rax 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 -> rdx "CSE - aggressive"
+; V09 cse1 [V09,T07] ( 3, 2.80) ref -> rdx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -28,13 +34,13 @@ G_M192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
G_M192_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp esi, 256
jle SHORT G_M192_IG05
- ;; size=8 bbWeight=1 PerfScore 1.25
-G_M192_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
mov ecx, dword ptr [rdx+0x08]
cmp ecx, dword ptr [rbx+0x18]
jne SHORT G_M192_IG04
+ ;; size=20 bbWeight=1 PerfScore 9.25
+G_M192_IG03: ; bbWeight=0.80, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
mov edx, dword ptr [rdx+0x08]
; gcrRegs -[rdx]
lea edx, [2*rdx+0x0A]
@@ -43,38 +49,59 @@ G_M192_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, by
call [System.Array:Resize[ubyte](byref,int)]
; byrRegs -[rcx]
; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 7.00
-G_M192_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.80 PerfScore 4.80
+G_M192_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
mov ecx, dword ptr [rbx+0x18]
lea eax, [rcx+0x01]
mov dword ptr [rbx+0x18], eax
cmp ecx, dword ptr [rdx+0x08]
- jae SHORT G_M192_IG07
+ jae SHORT G_M192_IG09
mov byte ptr [rdx+rcx+0x10], 254
- ;; size=23 bbWeight=0.50 PerfScore 5.25
-G_M192_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=23 bbWeight=1 PerfScore 10.50
+G_M192_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- movzx rdx, sil
- mov rcx, rbx
- ; gcrRegs +[rcx]
- ;; size=7 bbWeight=1 PerfScore 0.50
-G_M192_IG06: ; bbWeight=1, epilog, nogc, extend
+ mov rdx, gword ptr [rbx+0x08]
+ ; gcrRegs +[rdx]
+ mov ecx, dword ptr [rdx+0x08]
+ cmp ecx, dword ptr [rbx+0x18]
+ jne SHORT G_M192_IG07
+ ;; size=12 bbWeight=1 PerfScore 8.00
+G_M192_IG06: ; bbWeight=0.80, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
+ lea edx, [2*rdx+0x0A]
+ lea rcx, bword ptr [rbx+0x08]
+ ; byrRegs +[rcx]
+ call [System.Array:Resize[ubyte](byref,int)]
+ ; byrRegs -[rcx]
+ ; gcr arg pop 0
+ ;; size=20 bbWeight=0.80 PerfScore 4.80
+G_M192_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rax, gword ptr [rbx+0x08]
+ ; gcrRegs +[rax]
+ mov ecx, dword ptr [rbx+0x18]
+ lea edx, [rcx+0x01]
+ mov dword ptr [rbx+0x18], edx
+ cmp ecx, dword ptr [rax+0x08]
+ jae SHORT G_M192_IG09
+ mov byte ptr [rax+rcx+0x10], sil
+ ;; size=23 bbWeight=1 PerfScore 10.50
+G_M192_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
pop rsi
- tail.jmp [Internal.IL.Stubs.ILCodeStream:EmitByte(ubyte):this]
- ; gcr arg pop 0
- ;; size=12 bbWeight=1 PerfScore 3.25
-G_M192_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx rbx]
+ ret
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M192_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 99, prolog size 11, PerfScore 20.00, instruction count 30, allocated bytes for code 99 (MethodHash=f1f1ff3f) for method Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
+; Total bytes of code 142, prolog size 6, PerfScore 52.85, instruction count 43, allocated bytes for code 142 (MethodHash=f1f1ff3f) for method Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
; ============================================================
Unwind Info:
libraries.crossgen2.windows.x64.checked.mch
-18 (-31.03%) : 120008.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+Closure$:Lambda$__2-0(ushort):ubyte:this (FullOpts)
@@ -3,53 +3,56 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rsp 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; 2 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 -> rdx single-def
-; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T01] ( 5, 3.50) int -> rbx "CSE - aggressive"
+;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ushort -> zero-ref "Inline stloc first use temp"
+;* V04 tmp2 [V04,T03] ( 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,T02] ( 2, 2 ) ubyte -> rax "Inline stloc first use temp"
+; V07 cse0 [V07,T01] ( 5, 4.64) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M51339_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M51339_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rbx, dx
- mov ecx, ebx
- call [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodBlock(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M51339_IG05
- ;; size=15 bbWeight=1 PerfScore 4.75
-G_M51339_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ebx, 81
- je SHORT G_M51339_IG05
- cmp ebx, 82
- je SHORT G_M51339_IG05
- mov ecx, ebx
- lea rax, [(reloc)] ; function address
- ;; size=19 bbWeight=0.50 PerfScore 1.62
-G_M51339_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- tail.jmp [rax]Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsAccessorBlock(ushort):ubyte
- ;; size=8 bbWeight=0.50 PerfScore 1.38
-G_M51339_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M51339_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+ movzx rax, dx
+ lea ecx, [rax-0x4F]
+ cmp ecx, 1
+ jbe SHORT G_M51339_IG06
+ cmp eax, 81
+ je SHORT G_M51339_IG06
+ ;; size=16 bbWeight=1 PerfScore 3.25
+G_M51339_IG03: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 82
+ je SHORT G_M51339_IG06
+ ;; size=5 bbWeight=0.64 PerfScore 0.80
+G_M51339_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add eax, -83
+ cmp eax, 4
+ setbe al
+ movzx rax, al
+ ;; size=12 bbWeight=1 PerfScore 1.75
+G_M51339_IG05: ; bbWeight=1, epilog, nogc, extend
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M51339_IG06: ; bbWeight=0.67, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.67 PerfScore 0.17
+G_M51339_IG07: ; bbWeight=0.67, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.67 PerfScore 0.67
-; Total bytes of code 58, prolog size 5, PerfScore 10.00, instruction count 20, allocated bytes for code 58 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
+; Total bytes of code 40, prolog size 0, PerfScore 7.63, instruction count 15, allocated bytes for code 40 (MethodHash=b0913774) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -57,10 +60,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-36 (-30.51%) : 262147.dasm - System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
@@ -3,67 +3,59 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rsp 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
; Final local variable assignments
;
-; V00 this [V00,T00] ( 13, 13 ) ref -> rbx this class-hnd single-def <System.Diagnostics.RandomNumberGenerator>
-; V01 loc0 [V01,T05] ( 2, 2 ) long -> rsi
-; V02 loc1 [V02,T06] ( 2, 2 ) long -> rdx
-; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T01] ( 4, 4 ) long -> rax "CSE - aggressive"
-; V05 cse1 [V05,T02] ( 4, 4 ) long -> r10 "CSE - aggressive"
-; V06 cse2 [V06,T03] ( 4, 4 ) long -> rcx "CSE - aggressive"
-; V07 cse3 [V07,T04] ( 3, 3 ) long -> r8 "CSE - aggressive"
+; V00 this [V00,T00] ( 12, 12 ) ref -> rcx this class-hnd single-def <System.Diagnostics.RandomNumberGenerator>
+; V01 loc0 [V01,T07] ( 2, 2 ) long -> rdx
+; V02 loc1 [V02,T08] ( 2, 2 ) long -> r8
+;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V04 tmp1 [V04,T04] ( 2, 4 ) long -> rdx "Inlining Arg"
+; V05 tmp2 [V05,T05] ( 2, 4 ) long -> r11 "Inlining Arg"
+; V06 cse0 [V06,T02] ( 4, 4 ) long -> r10 "CSE - aggressive"
+; V07 cse1 [V07,T03] ( 4, 4 ) long -> r11 "CSE - aggressive"
+; V08 cse2 [V08,T01] ( 5, 5 ) long -> rax "CSE - aggressive"
+; V09 cse3 [V09,T06] ( 3, 3 ) long -> r9 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M21456_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rsi
- push rbx
- sub rsp, 40
- mov rbx, rcx
- ; gcrRegs +[rbx]
- ;; size=9 bbWeight=1 PerfScore 2.50
-G_M21456_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rcx, qword ptr [rbx+0x10]
- lea rcx, [rcx+4*rcx]
- mov edx, 7
- call [System.Diagnostics.RandomNumberGenerator:Rol64(ulong,int):ulong]
- ; gcr arg pop 0
- lea rsi, [rax+8*rax]
- mov rcx, qword ptr [rbx+0x10]
- mov rdx, rcx
- shl rdx, 17
- mov rax, qword ptr [rbx+0x18]
- mov r8, qword ptr [rbx+0x08]
- xor rax, r8
- mov qword ptr [rbx+0x18], rax
- mov r10, rcx
- xor r10, qword ptr [rbx+0x20]
- mov qword ptr [rbx+0x20], r10
- xor rcx, rax
- mov qword ptr [rbx+0x10], rcx
+ ;; size=0 bbWeight=1 PerfScore 0.00
+G_M21456_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rcx]
+ mov rax, qword ptr [rcx+0x10]
+ lea rdx, [rax+4*rax]
+ rol rdx, 7
+ lea rdx, [rdx+8*rdx]
+ mov r8, rax
+ shl r8, 17
+ mov r10, qword ptr [rcx+0x18]
+ mov r9, qword ptr [rcx+0x08]
+ xor r10, r9
+ mov qword ptr [rcx+0x18], r10
+ mov r11, rax
+ xor r11, qword ptr [rcx+0x20]
+ mov qword ptr [rcx+0x20], r11
+ xor rax, r10
+ mov qword ptr [rcx+0x10], rax
+ xor r9, r11
+ mov qword ptr [rcx+0x08], r9
xor r8, r10
- mov qword ptr [rbx+0x08], r8
- xor rdx, rax
- mov qword ptr [rbx+0x18], rdx
- mov rcx, r10
- mov edx, 45
- call [System.Diagnostics.RandomNumberGenerator:Rol64(ulong,int):ulong]
- ; gcr arg pop 0
- mov qword ptr [rbx+0x20], rax
- mov rax, rsi
- ;; size=102 bbWeight=1 PerfScore 27.00
+ mov qword ptr [rcx+0x18], r8
+ rol r11, 45
+ mov qword ptr [rcx+0x20], r11
+ mov rax, rdx
+ ;; size=81 bbWeight=1 PerfScore 19.25
G_M21456_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop rsi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 118, prolog size 6, PerfScore 31.75, instruction count 34, allocated bytes for code 118 (MethodHash=0360ac2f) for method System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
+; Total bytes of code 82, prolog size 0, PerfScore 20.25, instruction count 23, allocated bytes for code 82 (MethodHash=0360ac2f) for method System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
; ============================================================
Unwind Info:
@@ -71,11 +63,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-14 (-28.57%) : 130493.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
@@ -3,47 +3,46 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
-; partially interruptible
+; fully 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.50) ushort -> rbx single-def
-; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rcx single-def
+;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T02] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V03 cse0 [V03,T01] ( 4, 3.52) int -> rcx "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M52764_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- mov ebx, ecx
- ;; size=7 bbWeight=1 PerfScore 1.50
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M52764_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx rcx, bx
- call [Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsReservedKeyword(ushort):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M52764_IG05
- ;; size=13 bbWeight=1 PerfScore 4.50
-G_M52764_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rcx, bx
- lea rax, [(reloc)] ; function address
- ;; size=10 bbWeight=0.50 PerfScore 0.38
-G_M52764_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
- tail.jmp [rax]<unknown method>
- ;; size=8 bbWeight=0.50 PerfScore 1.38
-G_M52764_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movzx rcx, cx
+ cmp ecx, 0x2070
+ jl SHORT G_M52764_IG06
+ ;; size=11 bbWeight=1 PerfScore 1.50
+G_M52764_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, 0x20C0
+ jg SHORT G_M52764_IG06
+ ;; size=8 bbWeight=0.52 PerfScore 0.65
+G_M52764_IG04: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M52764_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+ ;; size=5 bbWeight=0.48 PerfScore 0.12
+G_M52764_IG05: ; bbWeight=0.48, epilog, nogc, extend
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=1 bbWeight=0.48 PerfScore 0.48
+G_M52764_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rax, [(reloc)] ; function address
+ ;; size=7 bbWeight=1 PerfScore 0.50
+G_M52764_IG07: ; bbWeight=1, epilog, nogc, extend
+ tail.jmp [rax]<unknown method>
+ ;; size=3 bbWeight=1 PerfScore 2.00
-; Total bytes of code 49, prolog size 5, PerfScore 8.75, instruction count 16, allocated bytes for code 49 (MethodHash=adac31e3) for method Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
+; Total bytes of code 35, prolog size 0, PerfScore 5.25, instruction count 9, allocated bytes for code 35 (MethodHash=adac31e3) for method Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -51,10 +50,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+14 (+107.69%) : 113818.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
@@ -3,27 +3,44 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rsp 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
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rcx single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> rax "Inline stloc first use temp"
+; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M45947_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M45947_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rcx, cx
- lea rax, [(reloc)] ; function address
- ;; size=10 bbWeight=1 PerfScore 0.75
-G_M45947_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [rax]Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementSubOrFunctionKeyword(ushort):ubyte
- ;; size=3 bbWeight=1 PerfScore 2.00
+G_M45947_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, cx
+ cmp eax, 478
+ je SHORT G_M45947_IG04
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M45947_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 558
+ jne SHORT G_M45947_IG06
+ ;; size=7 bbWeight=0.52 PerfScore 0.65
+G_M45947_IG04: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
+G_M45947_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M45947_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor eax, eax
+ jmp SHORT G_M45947_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 13, prolog size 0, PerfScore 2.75, instruction count 3, allocated bytes for code 13 (MethodHash=26ba4c84) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 3.90, instruction count 9, allocated bytes for code 27 (MethodHash=26ba4c84) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
+14 (+107.69%) : 113815.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
@@ -3,27 +3,44 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rsp 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
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rcx single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> rax "Inline stloc first use temp"
+; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M64956_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M64956_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rcx, cx
- lea rax, [(reloc)] ; function address
- ;; size=10 bbWeight=1 PerfScore 0.75
-G_M64956_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [rax]Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementSubOrFunctionKeyword(ushort):ubyte
- ;; size=3 bbWeight=1 PerfScore 2.00
+G_M64956_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, cx
+ cmp eax, 478
+ je SHORT G_M64956_IG04
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M64956_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
+G_M64956_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M64956_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor eax, eax
+ jmp SHORT G_M64956_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 13, prolog size 0, PerfScore 2.75, instruction count 3, allocated bytes for code 13 (MethodHash=cd320243) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 3.90, instruction count 9, allocated bytes for code 27 (MethodHash=cd320243) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
+14 (+107.69%) : 113816.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
@@ -3,27 +3,44 @@
; FullOpts code
; ReadyToRun compilation
; optimized code
+; optimized using Synthesized PGO
; rsp 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
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rcx single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> rax "Inline stloc first use temp"
+; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M11355_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M11355_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rcx, cx
- lea rax, [(reloc)] ; function address
- ;; size=10 bbWeight=1 PerfScore 0.75
-G_M11355_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [rax]Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementSubOrFunctionKeyword(ushort):ubyte
- ;; size=3 bbWeight=1 PerfScore 2.00
+G_M11355_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, cx
+ cmp eax, 478
+ je SHORT G_M11355_IG04
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M11355_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
+G_M11355_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M11355_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor eax, eax
+ jmp SHORT G_M11355_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 13, prolog size 0, PerfScore 2.75, instruction count 3, allocated bytes for code 13 (MethodHash=e166d3a4) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 3.90, instruction count 9, allocated bytes for code 27 (MethodHash=e166d3a4) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.windows.x64.checked.mch
-6 (-42.86%) : 308539.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
@@ -2,13 +2,15 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rcx this class-hnd single-def <System.IO.Compression.DeflateManagedStream>
+; V00 this [V00,T01] ( 3, 2.80) ref -> rcx this class-hnd single-def <System.IO.Compression.DeflateManagedStream>
; V01 arg1 [V01,T00] ( 3, 3 ) ubyte -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -20,20 +22,17 @@ G_M40773_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M40773_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
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=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M40773_IG03: ; bbWeight=0.80, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ mov eax, dword ptr [rcx+0x10]
+ ;; size=3 bbWeight=0.80 PerfScore 1.60
+G_M40773_IG04: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M40773_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rcx]
- cmp gword ptr [rcx+0x10], 0
- je SHORT G_M40773_IG03
- jmp SHORT G_M40773_IG03
- ;; size=9 bbWeight=0.50 PerfScore 3.00
+ ;; size=1 bbWeight=0.38 PerfScore 0.38
-; Total bytes of code 14, prolog size 0, PerfScore 5.25, instruction count 6, allocated bytes for code 14 (MethodHash=8a3760ba) for method System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
+; Total bytes of code 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)
; ============================================================
Unwind Info:
-16 (-37.21%) : 20190.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
@@ -2,47 +2,46 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
-; partially interruptible
+; fully 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.50) int -> rbx single-def
-; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V00 arg0 [V00,T00] ( 6, 4.74) int -> rcx single-def
+;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02,T01] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;
-; Lcl frame size = 32
+; Lcl frame size = 0
G_M20897_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rbx
- sub rsp, 32
- mov ebx, ecx
- ;; size=7 bbWeight=1 PerfScore 1.50
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M20897_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov ecx, ebx
- call [System.Data.ExpressionNode:IsFloat(int):ubyte]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M20897_IG05
- ;; size=12 bbWeight=1 PerfScore 4.50
-G_M20897_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, ebx
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M20897_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+ cmp ecx, 13
+ je SHORT G_M20897_IG06
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M20897_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, 14
+ je SHORT G_M20897_IG06
+ ;; size=5 bbWeight=0.80 PerfScore 1.00
+G_M20897_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, 15
+ je SHORT G_M20897_IG06
+ ;; size=5 bbWeight=0.42 PerfScore 0.52
+G_M20897_IG05: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
tail.jmp [System.Data.ExpressionNode:IsInteger(int):ubyte]
; gcr arg pop 0
- ;; size=11 bbWeight=0.50 PerfScore 1.38
-G_M20897_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=6 bbWeight=0.52 PerfScore 1.04
+G_M20897_IG06: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M20897_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
- pop rbx
+ ;; size=5 bbWeight=0.48 PerfScore 0.12
+G_M20897_IG07: ; bbWeight=0.48, epilog, nogc, extend
ret
- ;; size=6 bbWeight=0.50 PerfScore 0.88
+ ;; size=1 bbWeight=0.48 PerfScore 0.48
-; Total bytes of code 43, prolog size 5, PerfScore 8.50, instruction count 15, allocated bytes for code 43 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 4.41, instruction count 9, allocated bytes for code 27 (MethodHash=a205ae5e) for method System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -50,10 +49,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-36 (-34.29%) : 236381.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
@@ -2,20 +2,23 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rbp 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
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 6 ) ref -> rbx this class-hnd single-def <System.Runtime.Serialization.Json.DataContractJsonSerializer>
+; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Runtime.Serialization.Json.DataContractJsonSerializer>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <System.Type>
; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Type]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (72) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V06 tmp3 [V06,T04] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
-; V07 tmp4 [V07,T03] ( 3, 5 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Xml.XmlDictionaryString>
+;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Xml.XmlDictionaryString>
+;* V07 tmp4 [V07,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V08 tmp5 [V08,T03] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Xml.XmlDictionaryString>
;
; Lcl frame size = 72
@@ -41,49 +44,26 @@ G_M25835_IG04: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0000
G_M25835_IG05: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0000 {}, byref
mov gword ptr [rsp+0x38], rcx
;; size=5 bbWeight=1 PerfScore 1.00
-G_M25835_IG06: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0000 {}, byref, isz
+G_M25835_IG06: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x40], ecx
mov rcx, rbx
; gcrRegs +[rcx]
mov r9d, 0xD1FFAB1E
call [<unknown method>]
; gcrRegs -[rcx rdx r8]
- xor rcx, rcx
- ; gcrRegs +[rcx]
- call [System.Runtime.Serialization.Json.DataContractJsonSerializer:ConvertXmlNameToJsonName(System.Xml.XmlDictionaryString):System.Xml.XmlDictionaryString]
- ; gcrRegs -[rcx] +[rax]
- lea rcx, bword ptr [rbx+0x30]
- ; byrRegs +[rcx]
- mov rdx, rax
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
- mov rcx, gword ptr [rbx+0x30]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je SHORT G_M25835_IG08
- ;; size=48 bbWeight=1 PerfScore 12.75
-G_M25835_IG07: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [rcx+0x10]
- call [System.Runtime.Serialization.Json.DataContractJsonSerializer:CheckIfJsonNameRequiresMapping(System.String):ubyte]
- ; gcrRegs -[rcx]
- jmp SHORT G_M25835_IG09
- ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M25835_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M25835_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov byte ptr [rbx+0x53], al
- ;; size=3 bbWeight=1 PerfScore 1.00
-G_M25835_IG10: ; bbWeight=1, epilog, nogc, extend
+ xor rax, rax
+ ; gcrRegs +[rax]
+ mov gword ptr [rbx+0x30], rax
+ mov byte ptr [rbx+0x53], 0
+ ;; size=29 bbWeight=1 PerfScore 6.75
+G_M25835_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 105, prolog size 11, PerfScore 26.88, instruction count 31, allocated bytes for code 105 (MethodHash=a1789b14) for method System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
+; Total bytes of code 69, prolog size 11, PerfScore 16.25, instruction count 21, allocated bytes for code 69 (MethodHash=a1789b14) for method System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
; ============================================================
Unwind Info:
+18 (+200.00%) : 153284.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
@@ -2,27 +2,44 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> rcx single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 2.52) ushort -> rax "Inline stloc first use temp"
+; V03 tmp2 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M24505_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M24505_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rcx, cx
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M24505_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderSubOrFunctionKeyword(ushort):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=1 PerfScore 2.00
+G_M24505_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, cx
+ cmp eax, 478
+ je SHORT G_M24505_IG04
+ ;; size=10 bbWeight=1 PerfScore 1.50
+G_M24505_IG03: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
+G_M24505_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
+G_M24505_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ xor eax, eax
+ jmp SHORT G_M24505_IG05
+ ;; size=4 bbWeight=0.25 PerfScore 0.56
-; Total bytes of code 9, prolog size 0, PerfScore 2.25, instruction count 2, allocated bytes for code 9 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 3.90, instruction count 9, allocated bytes for code 27 (MethodHash=7ce7a046) for method Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
+27 (+270.00%) : 145837.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,30 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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; 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 -> rdx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.43) ushort -> rax "Inlining Arg"
;
; Lcl frame size = 0
G_M39608_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M39608_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M39608_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
- movzx rcx, word ptr [rdx+0x0C]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M39608_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=1 PerfScore 2.00
+ movzx rax, word ptr [rdx+0x0C]
+ cmp eax, 677
+ je SHORT G_M39608_IG05
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M39608_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ cmp eax, 652
+ je SHORT G_M39608_IG05
+ ;; size=7 bbWeight=0.80 PerfScore 1.00
+G_M39608_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 678
+ sete al
+ movzx rax, al
+ jmp SHORT G_M39608_IG06
+ ;; size=13 bbWeight=0.42 PerfScore 1.46
+G_M39608_IG05: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.58 PerfScore 0.15
+G_M39608_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 10, prolog size 0, PerfScore 4.00, instruction count 2, allocated bytes for code 10 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 37, prolog size 0, PerfScore 6.85, instruction count 11, allocated bytes for code 37 (MethodHash=900d6547) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+27 (+270.00%) : 145831.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
@@ -2,30 +2,49 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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; 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 -> rdx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 tmp1 [V03,T02] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
+; V04 tmp2 [V04,T00] ( 4, 6.43) ushort -> rax "Inlining Arg"
;
; Lcl frame size = 0
G_M28613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
-G_M28613_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M28613_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
- movzx rcx, word ptr [rdx+0x0C]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M28613_IG03: ; bbWeight=1, epilog, nogc, extend
- tail.jmp [Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsTerminator(ushort):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=1 PerfScore 2.00
+ movzx rax, word ptr [rdx+0x0C]
+ cmp eax, 677
+ je SHORT G_M28613_IG05
+ ;; size=11 bbWeight=1 PerfScore 3.25
+G_M28613_IG03: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ cmp eax, 652
+ je SHORT G_M28613_IG05
+ ;; size=7 bbWeight=0.80 PerfScore 1.00
+G_M28613_IG04: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 678
+ sete al
+ movzx rax, al
+ jmp SHORT G_M28613_IG06
+ ;; size=13 bbWeight=0.42 PerfScore 1.46
+G_M28613_IG05: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.58 PerfScore 0.15
+G_M28613_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 10, prolog size 0, PerfScore 4.00, instruction count 2, allocated bytes for code 10 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
+; Total bytes of code 37, prolog size 0, PerfScore 6.85, instruction count 11, allocated bytes for code 37 (MethodHash=3791903a) for method Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-10 (-19.61%) : 45777.dasm - (dynamicClass):lambda_method508(System.Runtime.CompilerServices.Closure,System.Object):int (FullOpts)
@@ -2,14 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
-; V01 arg1 [V01,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V03 cse0 [V03,T01] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 32
@@ -20,18 +23,17 @@ G_M10129_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
;; size=8 bbWeight=1 PerfScore 1.50
G_M10129_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rbx], rdx
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [rbx], rcx
je SHORT G_M10129_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M10129_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M10129_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M10129_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, dword ptr [rbx+0x08]
;; size=3 bbWeight=1 PerfScore 2.00
@@ -41,7 +43,7 @@ G_M10129_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 51, prolog size 5, PerfScore 10.38, instruction count 13, allocated bytes for code 51 (MethodHash=a831d86e) for method (dynamicClass):lambda_method508(System.Runtime.CompilerServices.Closure,System.Object):int (FullOpts)
+; Total bytes of code 41, prolog size 5, PerfScore 11.12, instruction count 12, allocated bytes for code 41 (MethodHash=a831d86e) for method (dynamicClass):lambda_method508(System.Runtime.CompilerServices.Closure,System.Object):int (FullOpts)
; ============================================================
Unwind Info:
-10 (-17.24%) : 45762.dasm - (dynamicClass):lambda_method503(System.Runtime.CompilerServices.Closure,System.Object,int):int (FullOpts)
@@ -2,15 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Runtime.CompilerServices.Closure>
-; V01 arg1 [V01,T00] ( 5, 4.25) ref -> rbx class-hnd single-def <System.Object>
+; V01 arg1 [V01,T00] ( 5, 4.50) ref -> rbx class-hnd single-def <System.Object>
; V02 arg2 [V02,T01] ( 3, 3 ) int -> rsi single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V04 cse0 [V04,T02] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -23,18 +26,17 @@ G_M29701_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov esi, r8d
;; size=12 bbWeight=1 PerfScore 2.75
G_M29701_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rbx], rdx
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [rbx], rcx
je SHORT G_M29701_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M29701_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M29701_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdx, rbx
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M29701_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov eax, esi
add eax, dword ptr [rbx+0x08]
@@ -46,7 +48,7 @@ G_M29701_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 58, prolog size 6, PerfScore 13.38, instruction count 17, allocated bytes for code 58 (MethodHash=847d8bfa) for method (dynamicClass):lambda_method503(System.Runtime.CompilerServices.Closure,System.Object,int):int (FullOpts)
+; Total bytes of code 48, prolog size 6, PerfScore 14.12, instruction count 16, allocated bytes for code 48 (MethodHash=847d8bfa) for method (dynamicClass):lambda_method503(System.Runtime.CompilerServices.Closure,System.Object,int):int (FullOpts)
; ============================================================
Unwind Info:
-10 (-12.05%) : 9352.dasm - (dynamicClass):InvokeStubNested.setString(System.Object,System.Span`1[System.Object]):System.Object (FullOpts)
@@ -2,17 +2,20 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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] ( 5, 4.25) ref -> rsi class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 5, 4.50) ref -> rsi class-hnd single-def <System.Object>
; V01 arg1 [V01,T00] ( 4, 8 ) byref -> rbx ld-addr-op single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Object]>
+; V06 cse0 [V06,T02] ( 3, 2.50) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -26,18 +29,17 @@ G_M54423_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[rbx]
;; size=12 bbWeight=1 PerfScore 2.75
G_M54423_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov rdx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rsi], rdx
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ cmp qword ptr [rsi], rcx
je SHORT G_M54423_IG04
;; size=15 bbWeight=1 PerfScore 4.25
-G_M54423_IG03: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M54423_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov rdx, rsi
; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown class>
call [CORINFO_HELP_UNBOX]
; gcrRegs -[rdx]
; gcr arg pop 0
- ;; size=19 bbWeight=0.25 PerfScore 0.88
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M54423_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
cmp dword ptr [rbx+0x08], 0
jbe SHORT G_M54423_IG06
@@ -68,7 +70,7 @@ G_M54423_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 83, prolog size 6, PerfScore 21.88, instruction count 24, allocated bytes for code 83 (MethodHash=fe452b68) for method (dynamicClass):InvokeStub_Nested.set_String(System.Object,System.Span`1[System.Object]):System.Object (FullOpts)
+; Total bytes of code 73, prolog size 6, PerfScore 22.62, instruction count 23, allocated bytes for code 73 (MethodHash=fe452b68) for method (dynamicClass):InvokeStub_Nested.set_String(System.Object,System.Span`1[System.Object]):System.Object (FullOpts)
; ============================================================
Unwind Info:
+14 (+16.47%) : 115155.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
@@ -9,14 +9,13 @@
; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 5.51) ref -> rbx this class-hnd single-def <System.Runtime.InteropServices.SafeHandle>
+; V00 this [V00,T00] ( 7, 5.02) ref -> rbx this class-hnd single-def <System.Runtime.InteropServices.SafeHandle>
; V01 arg1 [V01,T02] ( 3, 3 ) byref -> rsi single-def
-; V02 loc0 [V02,T01] ( 5, 6.02) int -> [rsp+0x24] spill-single-def
+; V02 loc0 [V02,T01] ( 7, 5.04) int -> [rsp+0x24]
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V07 cse0 [V07,T03] ( 3, 3 ) ref -> rdx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -31,30 +30,23 @@ G_M2252_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.75
G_M2252_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
cmp byte ptr [rbx+0x1D], 0
- jne SHORT G_M2252_IG03
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- mov rcx, rdx
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=25 bbWeight=1 PerfScore 7.50
-G_M2252_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ je SHORT G_M2252_IG07
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M2252_IG03: ; bbWeight=0.79, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
mov eax, dword ptr [rbx+0x18]
- mov dword ptr [rsp+0x24], eax
test al, 1
- jne SHORT G_M2252_IG07
- ;; size=11 bbWeight=1.50 PerfScore 6.38
+ jne SHORT G_M2252_IG08
+ ;; size=7 bbWeight=0.79 PerfScore 2.57
G_M2252_IG04: ; bbWeight=1.01, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
lea rcx, bword ptr [rbx+0x18]
; byrRegs +[rcx]
lea edx, [rax+0x04]
+ mov dword ptr [rsp+0x24], eax
lock
cmpxchg dword ptr [rcx], edx
cmp eax, dword ptr [rsp+0x24]
jne SHORT G_M2252_IG03
- ;; size=17 bbWeight=1.01 PerfScore 22.18
+ ;; size=21 bbWeight=1.01 PerfScore 23.19
G_M2252_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rbx]
; byrRegs -[rcx]
@@ -66,8 +58,20 @@ G_M2252_IG06: ; bbWeight=1, epilog, nogc, extend
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M2252_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M2252_IG07: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; gcrRegs +[rbx]
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ mov eax, dword ptr [rbx+0x18]
+ test al, 1
+ je SHORT G_M2252_IG04
+ ;; size=33 bbWeight=0.22 PerfScore 1.46
+G_M2252_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -77,7 +81,7 @@ G_M2252_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {r
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 85, prolog size 12, PerfScore 42.05, instruction count 28, allocated bytes for code 85 (MethodHash=99d5f733) for method System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
+; Total bytes of code 99, prolog size 12, PerfScore 37.22, instruction count 31, allocated bytes for code 99 (MethodHash=99d5f733) for method System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
; ============================================================
Unwind Info:
+42 (+16.47%) : 3904.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
@@ -6,7 +6,7 @@
; rsp based frame
; partially interruptible
; with Static PGO: edge weights are valid, and fgCalledCount is 3924
-; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 3, 3 ) ref -> rbp this class-hnd single-def <System.Globalization.CompareInfo>
@@ -20,37 +20,35 @@
; V08 tmp3 [V08,T17] ( 3, 0 ) int -> rbx
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp6 [V11,T06] ( 2, 4 ) int -> r8 "Inlining Arg"
-; V12 tmp7 [V12,T04] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
-;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp13 [V18,T07] ( 2, 4 ) int -> r9 "Inlining Arg"
-; V19 tmp14 [V19,T05] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp17 [V22,T08] ( 2, 2 ) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp18 [V23,T12] ( 2, 2 ) int -> r8 "field V06._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V26 tmp21 [V26,T09] ( 2, 2 ) byref -> rdx single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T13] ( 2, 2 ) int -> r8 "field V09._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V30 tmp25 [V30,T10] ( 2, 2 ) byref -> rcx "field V15._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T14] ( 2, 2 ) int -> r9 "field V15._length (fldOffset=0x8)" P-INDEP
-; V32 tmp27 [V32,T11] ( 2, 2 ) byref -> rcx single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp28 [V33,T15] ( 2, 2 ) int -> r9 "field V16._length (fldOffset=0x8)" P-INDEP
-;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V36 tmp31 [V36 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp32 [V37 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V11 tmp6 [V11,T06] ( 2, 4 ) int -> rsi "Inlining Arg"
+; V12 tmp7 [V12,T04] ( 2, 4 ) byref -> r14 single-def "Inlining Arg"
+;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+; V16 tmp11 [V16,T07] ( 2, 4 ) int -> rbx "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 2, 4 ) byref -> r15 single-def "Inlining Arg"
+; V18 tmp13 [V18,T08] ( 2, 2 ) byref -> r14 single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T12] ( 2, 2 ) int -> rsi "field V06._length (fldOffset=0x8)" P-INDEP
+;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V22 tmp17 [V22,T09] ( 2, 2 ) byref -> r14 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp18 [V23,T13] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
+; V26 tmp21 [V26,T10] ( 2, 2 ) byref -> r15 "field V13._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp22 [V27,T14] ( 2, 2 ) int -> rbx "field V13._length (fldOffset=0x8)" P-INDEP
+; V28 tmp23 [V28,T11] ( 2, 2 ) byref -> r15 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp24 [V29,T15] ( 2, 2 ) int -> rbx "field V14._length (fldOffset=0x8)" P-INDEP
+;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V32 tmp27 [V32 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V33 tmp28 [V33 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
; Lcl frame size = 72
G_M23753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
push rbp
@@ -68,7 +66,7 @@ G_M23753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, r8
; gcrRegs +[rbx]
mov edi, r9d
- ;; size=42 bbWeight=1 PerfScore 9.83
+ ;; size=46 bbWeight=1 PerfScore 11.83
G_M23753_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
test rsi, rsi
je G_M23753_IG07
@@ -77,36 +75,47 @@ G_M23753_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- lea rdx, bword ptr [rsi+0x0C]
- ; byrRegs +[rdx]
- mov r8d, dword ptr [rsi+0x08]
- lea rcx, bword ptr [rbx+0x0C]
- ; byrRegs +[rcx]
- mov r9d, dword ptr [rbx+0x08]
- mov bword ptr [rsp+0x38], rdx
- mov dword ptr [rsp+0x40], r8d
- mov bword ptr [rsp+0x28], rcx
- mov dword ptr [rsp+0x30], r9d
+ lea r14, bword ptr [rsi+0x0C]
+ ; byrRegs +[r14]
+ mov esi, dword ptr [rsi+0x08]
+ ; gcrRegs -[rsi]
+ mov ecx, 1
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Debug:Assert(ubyte)
+ call [rax]System.Diagnostics.Debug:Assert(ubyte)
+ ; gcr arg pop 0
+ lea r15, bword ptr [rbx+0x0C]
+ ; byrRegs +[r15]
+ mov ebx, dword ptr [rbx+0x08]
+ ; gcrRegs -[rbx]
+ mov ecx, 1
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Debug:Assert(ubyte)
+ call [rax]System.Diagnostics.Debug:Assert(ubyte)
+ ; gcr arg pop 0
+ mov bword ptr [rsp+0x38], r14
+ mov dword ptr [rsp+0x40], esi
+ mov bword ptr [rsp+0x28], r15
+ mov dword ptr [rsp+0x30], ebx
lea rdx, [rsp+0x38]
- ; byrRegs -[rdx]
lea r8, [rsp+0x28]
mov rcx, rbp
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
mov r9d, edi
call [<unknown method>]
- ; gcrRegs -[rcx rbx rbp rsi]
+ ; gcrRegs -[rcx rbp]
+ ; byrRegs -[r14-r15]
; gcr arg pop 0
nop
- ;; size=92 bbWeight=1 PerfScore 17.50
+ ;; size=122 bbWeight=1 PerfScore 24.50
G_M23753_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 4.25
G_M23753_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -131,8 +140,10 @@ G_M23753_IG06: ; bbWeight=0, epilog, nogc, extend
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
G_M23753_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
test rbx, rbx
@@ -158,7 +169,7 @@ G_M23753_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
jmp SHORT G_M23753_IG04
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 255, prolog size 30, PerfScore 30.58, instruction count 70, allocated bytes for code 255 (MethodHash=7e00a336) for method System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
+; Total bytes of code 297, prolog size 34, PerfScore 40.58, instruction count 82, allocated bytes for code 297 (MethodHash=7e00a336) for method System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -166,13 +177,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+42 (+16.47%) : 7408.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
@@ -6,7 +6,7 @@
; rsp based frame
; partially interruptible
; with Static PGO: edge weights are valid, and fgCalledCount is 3924
-; 0 inlinees with PGO data; 6 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 3, 3 ) ref -> rbp this class-hnd single-def <System.Globalization.CompareInfo>
@@ -20,37 +20,35 @@
; V08 tmp3 [V08,T17] ( 3, 0 ) int -> rbx
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp6 [V11,T06] ( 2, 4 ) int -> r8 "Inlining Arg"
-; V12 tmp7 [V12,T04] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
-;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp13 [V18,T07] ( 2, 4 ) int -> r9 "Inlining Arg"
-; V19 tmp14 [V19,T05] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-;* V20 tmp15 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V22 tmp17 [V22,T08] ( 2, 2 ) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp18 [V23,T12] ( 2, 2 ) int -> r8 "field V06._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V26 tmp21 [V26,T09] ( 2, 2 ) byref -> rdx single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp22 [V27,T13] ( 2, 2 ) int -> r8 "field V09._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V30 tmp25 [V30,T10] ( 2, 2 ) byref -> rcx "field V15._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T14] ( 2, 2 ) int -> r9 "field V15._length (fldOffset=0x8)" P-INDEP
-; V32 tmp27 [V32,T11] ( 2, 2 ) byref -> rcx single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp28 [V33,T15] ( 2, 2 ) int -> r9 "field V16._length (fldOffset=0x8)" P-INDEP
-;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V36 tmp31 [V36 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp32 [V37 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V11 tmp6 [V11,T06] ( 2, 4 ) int -> rsi "Inlining Arg"
+; V12 tmp7 [V12,T04] ( 2, 4 ) byref -> r14 single-def "Inlining Arg"
+;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
+; V16 tmp11 [V16,T07] ( 2, 4 ) int -> rbx "Inlining Arg"
+; V17 tmp12 [V17,T05] ( 2, 4 ) byref -> r15 single-def "Inlining Arg"
+; V18 tmp13 [V18,T08] ( 2, 2 ) byref -> r14 single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T12] ( 2, 2 ) int -> rsi "field V06._length (fldOffset=0x8)" P-INDEP
+;* V20 tmp15 [V20 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
+; V22 tmp17 [V22,T09] ( 2, 2 ) byref -> r14 single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp18 [V23,T13] ( 2, 2 ) int -> rsi "field V09._length (fldOffset=0x8)" P-INDEP
+;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
+; V26 tmp21 [V26,T10] ( 2, 2 ) byref -> r15 "field V13._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp22 [V27,T14] ( 2, 2 ) int -> rbx "field V13._length (fldOffset=0x8)" P-INDEP
+; V28 tmp23 [V28,T11] ( 2, 2 ) byref -> r15 single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp24 [V29,T15] ( 2, 2 ) int -> rbx "field V14._length (fldOffset=0x8)" P-INDEP
+;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V31 tmp26 [V31 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V32 tmp27 [V32 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V33 tmp28 [V33 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
; Lcl frame size = 72
G_M23753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
push rbp
@@ -68,7 +66,7 @@ G_M23753_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, r8
; gcrRegs +[rbx]
mov edi, r9d
- ;; size=42 bbWeight=1 PerfScore 9.83
+ ;; size=46 bbWeight=1 PerfScore 11.83
G_M23753_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
test rsi, rsi
je G_M23753_IG07
@@ -77,36 +75,47 @@ G_M23753_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
; gcr arg pop 0
- lea rdx, bword ptr [rsi+0x0C]
- ; byrRegs +[rdx]
- mov r8d, dword ptr [rsi+0x08]
- lea rcx, bword ptr [rbx+0x0C]
- ; byrRegs +[rcx]
- mov r9d, dword ptr [rbx+0x08]
- mov bword ptr [rsp+0x38], rdx
- mov dword ptr [rsp+0x40], r8d
- mov bword ptr [rsp+0x28], rcx
- mov dword ptr [rsp+0x30], r9d
+ lea r14, bword ptr [rsi+0x0C]
+ ; byrRegs +[r14]
+ mov esi, dword ptr [rsi+0x08]
+ ; gcrRegs -[rsi]
+ mov ecx, 1
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Debug:Assert(ubyte)
+ call [rax]System.Diagnostics.Debug:Assert(ubyte)
+ ; gcr arg pop 0
+ lea r15, bword ptr [rbx+0x0C]
+ ; byrRegs +[r15]
+ mov ebx, dword ptr [rbx+0x08]
+ ; gcrRegs -[rbx]
+ mov ecx, 1
+ mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Debug:Assert(ubyte)
+ call [rax]System.Diagnostics.Debug:Assert(ubyte)
+ ; gcr arg pop 0
+ mov bword ptr [rsp+0x38], r14
+ mov dword ptr [rsp+0x40], esi
+ mov bword ptr [rsp+0x28], r15
+ mov dword ptr [rsp+0x30], ebx
lea rdx, [rsp+0x38]
- ; byrRegs -[rdx]
lea r8, [rsp+0x28]
mov rcx, rbp
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
mov r9d, edi
call [<unknown method>]
- ; gcrRegs -[rcx rbx rbp rsi]
+ ; gcrRegs -[rcx rbp]
+ ; byrRegs -[r14-r15]
; gcr arg pop 0
nop
- ;; size=92 bbWeight=1 PerfScore 17.50
+ ;; size=122 bbWeight=1 PerfScore 24.50
G_M23753_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
+ ;; size=13 bbWeight=1 PerfScore 4.25
G_M23753_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
mov rcx, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
@@ -131,8 +140,10 @@ G_M23753_IG06: ; bbWeight=0, epilog, nogc, extend
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
G_M23753_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx]
test rbx, rbx
@@ -158,7 +169,7 @@ G_M23753_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
jmp SHORT G_M23753_IG04
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 255, prolog size 30, PerfScore 30.58, instruction count 70, allocated bytes for code 255 (MethodHash=7e00a336) for method System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
+; Total bytes of code 297, prolog size 34, PerfScore 40.58, instruction count 82, allocated bytes for code 297 (MethodHash=7e00a336) for method System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -166,13 +177,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-49 (-98.00%) : 217026.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
@@ -2,50 +2,27 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 3, 4 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <System.String>
;
-; Lcl frame size = 40
+; Lcl frame size = 0
G_M50179_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40
- ;; size=4 bbWeight=1 PerfScore 0.25
-G_M50179_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- xor rcx, rcx
- ; gcrRegs +[rcx]
- call [System.IO.Path:GetDirectoryName(System.String):System.String]
- ; gcrRegs -[rcx] +[rax]
- ; gcr arg pop 0
- test rax, rax
- jne SHORT G_M50179_IG04
- ;; size=13 bbWeight=1 PerfScore 4.50
-G_M50179_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ ;; size=0 bbWeight=1 PerfScore 0.00
+G_M50179_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M50179_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, 0xD1FFAB1E ; <unknown method>
- call [<unknown method>]
- ; gcrRegs -[rdx]
- ; gcr arg pop 0
- mov rcx, rax
- ; gcrRegs +[rcx]
- call CORINFO_HELP_THROW
- ; gcrRegs -[rax rcx]
- ; gcr arg pop 0
- int3
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 50, prolog size 4, PerfScore 6.00, instruction count 13, allocated bytes for code 50 (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)
; ============================================================
Unwind Info:
@@ -53,9 +30,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
-45 (-97.83%) : 209771.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
@@ -2,14 +2,16 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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>
-; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.EntityHandle>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.EntityHandle>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Reflection.Metadata.EntityHandle>
@@ -54,252 +56,239 @@
;* V43 tmp42 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Reflection.Metadata.EntityHandle>
;* V44 tmp43 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V45 tmp44 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V48 tmp47 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V49 tmp48 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V50 tmp49 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V51 tmp50 [V51 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V52 tmp51 [V52 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V55 tmp54 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp55 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V58 tmp57 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V59 tmp58 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V62 tmp61 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V63 tmp62 [V63 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V64 tmp63 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V65 tmp64 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V66 tmp65 [V66 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V69 tmp68 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V70 tmp69 [V70 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V71 tmp70 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V72 tmp71 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V73 tmp72 [V73 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V76 tmp75 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V77 tmp76 [V77 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V78 tmp77 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V79 tmp78 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V80 tmp79 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V83 tmp82 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V84 tmp83 [V84 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V85 tmp84 [V85 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V86 tmp85 [V86 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V87 tmp86 [V87 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V90 tmp89 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V91 tmp90 [V91 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V92 tmp91 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V93 tmp92 [V93 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V94 tmp93 [V94 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V97 tmp96 [V97 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V98 tmp97 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V99 tmp98 [V99 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V100 tmp99 [V100 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V101 tmp100 [V101 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* 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 ) int -> zero-ref "Inlining Arg"
;* V104 tmp103 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V105 tmp104 [V105 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V106 tmp105 [V106 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V107 tmp106 [V107 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V108 tmp107 [V108 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V113 tmp112 [V113 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V114 tmp113 [V114 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V115 tmp114 [V115 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V120 tmp119 [V120 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V121 tmp120 [V121 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V122 tmp121 [V122 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V127 tmp126 [V127 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V128 tmp127 [V128 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
;* V129 tmp128 [V129 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V134 tmp133 [V134 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Reflection.Metadata.EntityHandle>
-;* V135 tmp134 [V135 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;* V140 tmp139 [V140 ] ( 0, 0 ) int -> zero-ref single-def "field V02._vToken (fldOffset=0x0)" P-INDEP
-;* V141 tmp140 [V141 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V05._vToken (fldOffset=0x0)" P-INDEP
-;* V144 tmp143 [V144 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V08._vToken (fldOffset=0x0)" P-INDEP
-;* V147 tmp146 [V147 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V11._vToken (fldOffset=0x0)" P-INDEP
-;* V150 tmp149 [V150 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V14._vToken (fldOffset=0x0)" P-INDEP
-;* V153 tmp152 [V153 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V17._vToken (fldOffset=0x0)" P-INDEP
-;* V156 tmp155 [V156 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V20._vToken (fldOffset=0x0)" P-INDEP
-;* V159 tmp158 [V159 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V23._vToken (fldOffset=0x0)" P-INDEP
-;* V162 tmp161 [V162 ] ( 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 ] ( 0, 0 ) int -> zero-ref single-def "field V26._vToken (fldOffset=0x0)" P-INDEP
-;* V165 tmp164 [V165 ] ( 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,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V185 tmp184 [V185,T16] ( 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,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP
-;* V191 tmp190 [V191,T18] ( 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,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP
-;* V197 tmp196 [V197,T20] ( 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,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP
-;* V203 tmp202 [V203,T22] ( 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,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP
-;* V209 tmp208 [V209,T24] ( 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,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP
-;* V215 tmp214 [V215,T26] ( 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,T27] ( 0, 0 ) ubyte -> zero-ref single-def "field V91.hasValue (fldOffset=0x0)" P-INDEP
-;* V221 tmp220 [V221,T28] ( 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,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V98.hasValue (fldOffset=0x0)" P-INDEP
-;* V227 tmp226 [V227,T30] ( 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,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V105.hasValue (fldOffset=0x0)" P-INDEP
-;* V233 tmp232 [V233,T32] ( 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,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V112.hasValue (fldOffset=0x0)" P-INDEP
-;* V239 tmp238 [V239,T34] ( 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,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V119.hasValue (fldOffset=0x0)" P-INDEP
-;* V245 tmp244 [V245,T36] ( 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,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V126.hasValue (fldOffset=0x0)" P-INDEP
-;* V251 tmp250 [V251,T38] ( 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,T39] ( 0, 0 ) ubyte -> zero-ref single-def "field V133.hasValue (fldOffset=0x0)" P-INDEP
-;* V257 tmp256 [V257,T40] ( 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
...
-45 (-97.83%) : 209772.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
@@ -2,14 +2,16 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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>
-; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.Handle>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.Handle>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Reflection.Metadata.Handle>
@@ -54,294 +56,281 @@
;* 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V50 tmp49 [V50 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V57 tmp56 [V57 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V64 tmp63 [V64 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V71 tmp70 [V71 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V78 tmp77 [V78 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V85 tmp84 [V85 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V92 tmp91 [V92 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V99 tmp98 [V99 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V106 tmp105 [V106 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V113 tmp112 [V113 ] ( 0, 0 ) struct ( 8) 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 ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V120 tmp119 [V120 ] ( 0, 0 ) struct ( 8) 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 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 ) long -> zero-ref "Inlining Arg"
;* V125 tmp124 [V125 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V126 tmp125 [V126 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V127 tmp126 [V127 ] ( 0, 0 ) struct ( 8) 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 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 ) long -> zero-ref "Inlining Arg"
;* V132 tmp131 [V132 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V133 tmp132 [V133 ] ( 0, 0 ) struct ( 8) 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 ( 8) 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 ] ( 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 ] ( 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,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V227 tmp226 [V227,T16] ( 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,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V56.hasValue (fldOffset=0x0)" P-INDEP
-;* V233 tmp232 [V233,T18] ( 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,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V63.hasValue (fldOffset=0x0)" P-INDEP
-;* V239 tmp238 [V239,T20] ( 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,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V70.hasValue (fldOffset=0x0)" P-INDEP
-;* V245 tmp244 [V245,T22] ( 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,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V77.hasValue (fldOffset=0x0)" P-INDEP
-;* V251 tmp250 [V251,T24] ( 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,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V84.hasValue (fldOffset=0x0)" P-INDEP
-;* V257 tmp256 [V257,T26] ( 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
...
+22 (+40.00%) : 46050.dasm - LamarCodeGeneration.Util.ImHashMap2+Leaf5[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap
2+Entry[System.Canon,System.Canon]:this (FullOpts)
@@ -2,20 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 5 ) ref -> rcx this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf5[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 7, 5 ) int -> rdx single-def
+; V00 this [V00,T00] ( 12, 6.15) ref -> rcx this class-hnd single-def <LamarCodeGeneration.Util.ImHashMap`2+Leaf5[System.__Canon,System.__Canon]>
+; V01 arg1 [V01,T01] ( 7, 5.36) int -> rdx single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 6, 6 ) ref -> rax "Single return block return value"
-; V04 cse0 [V04,T04] ( 3, 1.50) ref -> rax "CSE - moderate"
-; V05 cse1 [V05,T05] ( 3, 1.50) ref -> rax "CSE - moderate"
-; V06 cse2 [V06,T06] ( 3, 1.50) ref -> rax "CSE - moderate"
-; V07 cse3 [V07,T07] ( 3, 1.50) ref -> rax "CSE - moderate"
-; V08 cse4 [V08,T03] ( 3, 2.50) ref -> rax "CSE - aggressive"
+; V03 tmp1 [V03,T02] ( 6, 3.15) ref -> rax "Single return block return value"
;
; Lcl frame size = 0
@@ -28,43 +25,77 @@ G_M48799_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
cmp edx, dword ptr [rax+0x08]
je SHORT G_M48799_IG09
;; size=9 bbWeight=1 PerfScore 6.00
-G_M48799_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M48799_IG03: ; bbWeight=0.80, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov rax, gword ptr [rcx+0x10]
; gcrRegs +[rax]
cmp edx, dword ptr [rax+0x08]
- je SHORT G_M48799_IG08
+ je SHORT G_M48799_IG12
+ ;; size=9 bbWeight=0.80 PerfScore 4.80
+G_M48799_IG04: ; bbWeight=0.64, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
cmp edx, dword ptr [rax+0x08]
- je SHORT G_M48799_IG07
+ je SHORT G_M48799_IG13
+ ;; size=9 bbWeight=0.64 PerfScore 3.84
+G_M48799_IG05: ; bbWeight=0.51, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov rax, gword ptr [rcx+0x20]
+ ; gcrRegs +[rax]
cmp edx, dword ptr [rax+0x08]
- je SHORT G_M48799_IG06
+ je SHORT G_M48799_IG14
+ ;; size=9 bbWeight=0.51 PerfScore 3.07
+G_M48799_IG06: ; bbWeight=0.41, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
mov rax, gword ptr [rcx+0x28]
+ ; gcrRegs +[rax]
cmp edx, dword ptr [rax+0x08]
- je SHORT G_M48799_IG05
+ je SHORT G_M48799_IG11
+ ;; size=9 bbWeight=0.41 PerfScore 2.46
+G_M48799_IG07: ; bbWeight=0.21, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rcx]
xor rax, rax
- ;; size=38 bbWeight=0.50 PerfScore 12.12
-G_M48799_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.21 PerfScore 0.05
+G_M48799_IG08: ; bbWeight=0.21, epilog, nogc, extend
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M48799_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=1 bbWeight=0.21 PerfScore 0.21
+G_M48799_IG09: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x08]
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=0.20 PerfScore 0.40
+G_M48799_IG10: ; bbWeight=0.79, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
- jmp SHORT G_M48799_IG09
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48799_IG06: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M48799_IG09
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48799_IG07: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M48799_IG09
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M48799_IG08: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ;; size=0 bbWeight=0.50 PerfScore 0.00
-G_M48799_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
+ ;; size=1 bbWeight=0.79 PerfScore 0.79
+G_M48799_IG11: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rcx]
+ mov rax, gword ptr [rcx+0x28]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M48799_IG10
+ ;; size=6 bbWeight=0.20 PerfScore 0.79
+G_M48799_IG12: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rcx+0x10]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M48799_IG10
+ ;; size=6 bbWeight=0.16 PerfScore 0.64
+G_M48799_IG13: ; bbWeight=0.13, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rcx+0x18]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M48799_IG10
+ ;; size=6 bbWeight=0.13 PerfScore 0.51
+G_M48799_IG14: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rcx+0x20]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M48799_IG10
+ ;; size=6 bbWeight=0.10 PerfScore 0.41
-; Total bytes of code 55, prolog size 0, PerfScore 22.12, instruction count 22, allocated bytes for code 55 (MethodHash=71654160) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf5[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
+; Total bytes of code 77, prolog size 0, PerfScore 23.97, instruction count 27, allocated bytes for code 77 (MethodHash=71654160) for method LamarCodeGeneration.Util.ImHashMap`2+Leaf5[System.__Canon,System.__Canon]:GetEntryOrNull(int):LamarCodeGeneration.Util.ImHashMap`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
; ============================================================
Unwind Info:
+20 (+74.07%) : 113734.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
@@ -2,13 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
-; fully interruptible
+; 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 -> rcx single-def
+; V00 arg0 [V00,T00] ( 7, 6.22) int -> rcx single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 1.27) ubyte -> rax "Inline return value spill temp"
;
; Lcl frame size = 0
@@ -19,20 +23,36 @@ G_M19192_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ja SHORT G_M19192_IG03
mov eax, 0x55F
bt eax, ecx
- jae SHORT G_M19192_IG04
+ jae SHORT G_M19192_IG08
;; size=15 bbWeight=1 PerfScore 3.00
-G_M19192_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- tail.jmp [System.Data.ExpressionNode:IsFloat(int):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M19192_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19192_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, 13
+ je SHORT G_M19192_IG06
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M19192_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M19192_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=5 bbWeight=0.58 PerfScore 0.15
+G_M19192_IG07: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
+ ;; size=1 bbWeight=0.27 PerfScore 0.27
+G_M19192_IG08: ; bbWeight=0.73, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.73 PerfScore 0.18
+G_M19192_IG09: ; bbWeight=0.73, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.73 PerfScore 0.73
-; Total bytes of code 27, prolog size 0, PerfScore 4.62, instruction count 8, allocated bytes for code 27 (MethodHash=62adb507) for method System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
+; Total bytes of code 47, prolog size 0, PerfScore 8.04, instruction count 17, allocated bytes for code 47 (MethodHash=62adb507) for method System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
+20 (+74.07%) : 106771.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
@@ -2,13 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
-; fully interruptible
+; 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 -> rcx single-def
+; V00 arg0 [V00,T00] ( 7, 6.22) int -> rcx single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V02 tmp1 [V02,T01] ( 3, 1.27) ubyte -> rax "Inline return value spill temp"
;
; Lcl frame size = 0
@@ -19,20 +23,36 @@ G_M19192_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ja SHORT G_M19192_IG03
mov eax, 0x55F
bt eax, ecx
- jae SHORT G_M19192_IG04
+ jae SHORT G_M19192_IG08
;; size=15 bbWeight=1 PerfScore 3.00
-G_M19192_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- tail.jmp [System.Data.ExpressionNode:IsFloat(int):ubyte]
- ; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M19192_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19192_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp ecx, 13
+ je SHORT G_M19192_IG06
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M19192_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref
mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M19192_IG05: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=5 bbWeight=0.58 PerfScore 0.15
+G_M19192_IG07: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
+ ;; size=1 bbWeight=0.27 PerfScore 0.27
+G_M19192_IG08: ; bbWeight=0.73, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.73 PerfScore 0.18
+G_M19192_IG09: ; bbWeight=0.73, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.73 PerfScore 0.73
-; Total bytes of code 27, prolog size 0, PerfScore 4.62, instruction count 8, allocated bytes for code 27 (MethodHash=62adb507) for method System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
+; Total bytes of code 47, prolog size 0, PerfScore 8.04, instruction count 17, allocated bytes for code 47 (MethodHash=62adb507) for method System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
; ============================================================
Unwind Info:
realworld.run.windows.x64.checked.mch
-14 (-21.88%) : 23368.dasm - System.Text.RegularExpressions.RegexNode:g_CanJoinLengthCheck|600(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
@@ -2,15 +2,17 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rcx class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V01 loc0 [V01,T03] ( 3, 2 ) ubyte -> rax
-; V02 loc1 [V02,T02] ( 3, 2.50) ubyte -> rax
+; V00 arg0 [V00,T00] ( 5, 4.18) ref -> rcx class-hnd single-def <System.Text.RegularExpressions.RegexNode>
+; V01 loc0 [V01,T03] ( 3, 1.60) ubyte -> rax
+; V02 loc1 [V02,T02] ( 3, 2.09) ubyte -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
; V05 rat0 [V05,T01] ( 3, 6 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
@@ -24,51 +26,39 @@ G_M17774_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
movzx rax, byte ptr [rcx+0x2E]
lea edx, [rax-0x03]
cmp edx, 9
- ja SHORT G_M17774_IG03
- mov eax, edx
- lea rdx, [reloc @RWD00]
- mov edx, dword ptr [rdx+4*rax]
- lea r8, G_M17774_IG02
- add rdx, r8
- jmp rdx
- ;; size=36 bbWeight=1 PerfScore 9.75
-G_M17774_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, 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=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov eax, 1
- jmp SHORT G_M17774_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M17774_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx]
+ 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=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rcx+0x20]
cmp eax, dword ptr [rcx+0x24]
- je SHORT G_M17774_IG04
- ;; size=8 bbWeight=0.50 PerfScore 3.00
-G_M17774_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M17774_IG06
+ ;; size=8 bbWeight=0.59 PerfScore 3.53
+G_M17774_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17774_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.33 PerfScore 0.08
+G_M17774_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
;; size=1 bbWeight=1 PerfScore 1.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
+G_M17774_IG06: ; bbWeight=0.27, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
+ 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=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ jmp SHORT G_M17774_IG04
+ ;; size=2 bbWeight=0.05 PerfScore 0.09
-
-; Total bytes of code 64, prolog size 0, PerfScore 16.75, instruction count 21, allocated bytes for code 64 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
+; Total bytes of code 50, prolog size 0, PerfScore 10.96, instruction count 18, allocated bytes for code 50 (MethodHash=3c48ba91) for method System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
; ============================================================
Unwind Info:
-20 (-17.09%) : 33933.dasm - Microsoft.CodeAnalysis.CommonMethodWellKnownAttributeData:get_MethodImplAttributes():int:this (FullOpts)
@@ -2,19 +2,18 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 11, 8 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CommonMethodWellKnownAttributeData>
-; V01 loc0 [V01,T01] ( 6, 4 ) int -> rdx
+; V00 this [V00,T00] ( 15, 7.88) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CommonMethodWellKnownAttributeData>
+; V01 loc0 [V01,T01] ( 6, 3.94) int -> rax
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 cse0 [V03,T06] ( 3, 2.50) int -> r8 "CSE - aggressive"
-; V04 cse1 [V04,T02] ( 6, 4 ) int -> r9 "CSE - aggressive"
-; V05 cse2 [V05,T04] ( 4, 3 ) int -> rax "CSE - aggressive"
-; V06 cse3 [V06,T05] ( 5, 2.50) int -> r8 multi-def "CSE - aggressive"
-; V07 cse4 [V07,T03] ( 7, 3.50) int -> r10 multi-def "CSE - aggressive"
+; V03 cse0 [V03,T03] ( 3, 2.80) int -> rdx "CSE - aggressive"
+; V04 cse1 [V04,T02] ( 6, 2.81) int -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -23,67 +22,76 @@ G_M51457_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M51457_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov eax, dword ptr [rcx+0x20]
- mov edx, eax
- movzx r8, byte ptr [rcx+0x29]
- test r8d, r8d
+ movzx rdx, byte ptr [rcx+0x29]
+ test edx, edx
jne SHORT G_M51457_IG04
- ;; size=15 bbWeight=1 PerfScore 5.50
-G_M51457_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, dword ptr [rcx+0x24]
- test r10d, r10d
+ ;; size=11 bbWeight=1 PerfScore 5.25
+G_M51457_IG03: ; bbWeight=0.52, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rcx+0x24], 0
jl SHORT G_M51457_IG05
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M51457_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- or edx, 128
- ;; size=6 bbWeight=0.50 PerfScore 0.12
+ ;; size=6 bbWeight=0.52 PerfScore 2.08
+G_M51457_IG04: ; bbWeight=0.75, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ or eax, 128
+ ;; size=5 bbWeight=0.75 PerfScore 0.19
G_M51457_IG05: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r9d, dword ptr [rcx+0x18]
- test r9d, r9d
- jl SHORT G_M51457_IG10
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M51457_IG06: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ mov r8d, dword ptr [rcx+0x18]
test r8d, r8d
- jne SHORT G_M51457_IG10
+ jl SHORT G_M51457_IG18
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M51457_IG06: ; bbWeight=0.80, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ test edx, edx
+ jne SHORT G_M51457_IG18
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M51457_IG07: ; bbWeight=0.64, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rcx+0x28], 0
- je SHORT G_M51457_IG08
- mov r10d, dword ptr [rcx+0x24]
- cmp r10d, -1
- je SHORT G_M51457_IG07
- cmp r9d, r10d
- jge SHORT G_M51457_IG10
- ;; size=26 bbWeight=0.50 PerfScore 4.88
-G_M51457_IG07: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r8d, dword ptr [rcx+0x1C]
- cmp r8d, -1
- je SHORT G_M51457_IG09
- test al, 128
- je SHORT G_M51457_IG09
- cmp r9d, r8d
- jge SHORT G_M51457_IG10
- jmp SHORT G_M51457_IG09
- ;; size=21 bbWeight=0.50 PerfScore 3.88
-G_M51457_IG08: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r10d, dword ptr [rcx+0x24]
- cmp r9d, r10d
- jle SHORT G_M51457_IG10
- mov r8d, dword ptr [rcx+0x1C]
- cmp r9d, r8d
- jg SHORT G_M51457_IG09
- test al, 128
- jne SHORT G_M51457_IG10
- ;; size=22 bbWeight=0.50 PerfScore 3.88
-G_M51457_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ je SHORT G_M51457_IG14
+ ;; size=6 bbWeight=0.64 PerfScore 2.56
+G_M51457_IG08: ; bbWeight=0.33, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rcx+0x24], -1
+ je SHORT G_M51457_IG10
+ ;; size=6 bbWeight=0.33 PerfScore 1.33
+G_M51457_IG09: ; bbWeight=0.17, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, dword ptr [rcx+0x24]
+ jge SHORT G_M51457_IG18
+ ;; size=6 bbWeight=0.17 PerfScore 0.69
+G_M51457_IG10: ; bbWeight=0.30, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rcx+0x1C], -1
+ je SHORT G_M51457_IG17
+ ;; size=6 bbWeight=0.30 PerfScore 1.19
+G_M51457_IG11: ; bbWeight=0.16, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ test byte ptr [rcx+0x20], 128
+ je SHORT G_M51457_IG17
+ ;; size=6 bbWeight=0.16 PerfScore 0.62
+G_M51457_IG12: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, dword ptr [rcx+0x1C]
+ jge SHORT G_M51457_IG18
+ ;; size=6 bbWeight=0.08 PerfScore 0.32
+G_M51457_IG13: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- and edx, -129
- ;; size=6 bbWeight=0.50 PerfScore 0.12
-G_M51457_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, edx
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M51457_IG11: ; bbWeight=1, epilog, nogc, extend
+ jmp SHORT G_M51457_IG17
+ ;; size=2 bbWeight=0.28 PerfScore 0.56
+G_M51457_IG14: ; bbWeight=0.31, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
+ cmp r8d, dword ptr [rcx+0x24]
+ jle SHORT G_M51457_IG18
+ ;; size=6 bbWeight=0.31 PerfScore 1.23
+G_M51457_IG15: ; bbWeight=0.25, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ cmp r8d, dword ptr [rcx+0x1C]
+ jg SHORT G_M51457_IG17
+ ;; size=6 bbWeight=0.25 PerfScore 0.98
+G_M51457_IG16: ; bbWeight=0.13, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ test byte ptr [rcx+0x20], 128
+ jne SHORT G_M51457_IG18
+ ;; size=6 bbWeight=0.13 PerfScore 0.51
+G_M51457_IG17: ; bbWeight=0.22, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx]
+ and eax, -129
+ ;; size=5 bbWeight=0.22 PerfScore 0.06
+G_M51457_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ret
;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 117, prolog size 0, PerfScore 24.50, instruction count 40, allocated bytes for code 117 (MethodHash=bd7036fe) for method Microsoft.CodeAnalysis.CommonMethodWellKnownAttributeData:get_MethodImplAttributes():int:this (FullOpts)
+; Total bytes of code 97, prolog size 0, PerfScore 22.83, instruction count 33, allocated bytes for code 97 (MethodHash=bd7036fe) for method Microsoft.CodeAnalysis.CommonMethodWellKnownAttributeData:get_MethodImplAttributes():int:this (FullOpts)
; ============================================================
Unwind Info:
-10 (-15.38%) : 22080.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTypeModifierOrTypeKeyword(ushort):ubyte (FullOpts)
@@ -2,68 +2,55 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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] ( 3, 3 ) ushort -> rcx single-def
+; V00 arg0 [V00,T01] ( 5, 3.12) ushort -> rcx single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T02] ( 4, 3 ) int -> rax "CSE - aggressive"
-; V03 rat0 [V03,T00] ( 3, 6 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
+; V02 rat0 [V02,T00] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 0
-G_M64870_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M64870_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M64870_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rax, cx
- lea ecx, [rax-0x2097]
- cmp ecx, 13
- ja SHORT G_M64870_IG03
- mov eax, ecx
- lea rcx, [reloc @RWD00]
- mov ecx, dword ptr [rcx+4*rax]
- lea rdx, G_M64870_IG02
- add rcx, rdx
- jmp rcx
- ;; size=38 bbWeight=1 PerfScore 8.00
-G_M64870_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- lea ecx, [rax-0x20B6]
- cmp ecx, 4
- jbe SHORT G_M64870_IG04
- cmp eax, 0x20BD
- jne SHORT G_M64870_IG06
- ;; size=18 bbWeight=0.50 PerfScore 1.50
-G_M64870_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M64870_IG05: ; bbWeight=0.50, epilog, nogc, extend
- ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M64870_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ add eax, -0x2097
+ cmp eax, 13
+ ja SHORT G_M64870_IG05
+ mov ecx, 0x285F
+ bt ecx, eax
+ jb SHORT G_M64870_IG07
+ ;; size=23 bbWeight=1 PerfScore 3.50
+G_M64870_IG03: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M64870_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=0.43 PerfScore 0.11
+G_M64870_IG04: ; bbWeight=0.43, epilog, nogc, extend
ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-RWD00 dd G_M64870_IG04 - G_M64870_IG02
- dd G_M64870_IG04 - G_M64870_IG02
- dd G_M64870_IG04 - G_M64870_IG02
- dd G_M64870_IG04 - G_M64870_IG02
- dd G_M64870_IG04 - G_M64870_IG02
- dd G_M64870_IG06 - G_M64870_IG02
- dd G_M64870_IG04 - G_M64870_IG02
- dd G_M64870_IG06 - G_M64870_IG02
- dd G_M64870_IG06 - G_M64870_IG02
- dd G_M64870_IG06 - G_M64870_IG02
- dd G_M64870_IG06 - G_M64870_IG02
- dd G_M64870_IG04 - G_M64870_IG02
- dd G_M64870_IG06 - G_M64870_IG02
- dd G_M64870_IG04 - G_M64870_IG02
+ ;; size=1 bbWeight=0.43 PerfScore 0.43
+G_M64870_IG05: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ movzx rax, cx
+ add eax, -0x20B6
+ cmp eax, 4
+ jbe SHORT G_M64870_IG07
+ ;; size=13 bbWeight=0.07 PerfScore 0.12
+G_M64870_IG06: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx rax, cx
+ cmp eax, 0x20BD
+ jne SHORT G_M64870_IG03
+ ;; size=10 bbWeight=0.05 PerfScore 0.08
+G_M64870_IG07: ; bbWeight=0.57, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 1
+ ;; size=5 bbWeight=0.57 PerfScore 0.14
+G_M64870_IG08: ; bbWeight=0.57, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.57 PerfScore 0.57
-
-; Total bytes of code 65, prolog size 0, PerfScore 10.75, instruction count 19, allocated bytes for code 65 (MethodHash=b5960299) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTypeModifierOrTypeKeyword(ushort):ubyte (FullOpts)
+; Total bytes of code 55, prolog size 0, PerfScore 4.95, instruction count 18, allocated bytes for code 55 (MethodHash=b5960299) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTypeModifierOrTypeKeyword(ushort):ubyte (FullOpts)
; ============================================================
Unwind Info:
+37 (+28.68%) : 36347.dasm - System.Management.Automation.Language.NamedBlockAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
@@ -2,31 +2,36 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; partially 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; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) ref -> rsi this class-hnd single-def <System.Management.Automation.Language.NamedBlockAst>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> rbx class-hnd single-def <System.Management.Automation.Language.AstVisitor>
-; V02 loc0 [V02,T02] ( 5, 3.50) int -> rax
+; V00 this [V00,T01] ( 7, 5.24) ref -> rsi this class-hnd single-def <System.Management.Automation.Language.NamedBlockAst>
+; V01 arg1 [V01,T00] ( 7, 6.64) ref -> rbx class-hnd single-def <System.Management.Automation.Language.AstVisitor>
+; V02 loc0 [V02,T04] ( 5, 4.44) int -> rdi
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.Language.TrapStatementAst]>
-; V05 tmp2 [V05,T03] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V05 tmp2 [V05,T02] ( 3, 4.96) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
+; V07 tmp4 [V07,T03] ( 3, 4.96) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rdi
push rsi
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
G_M548_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -37,10 +42,9 @@ G_M548_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, b
call [rax+0x08]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- cmp eax, 1
+ mov edi, eax
+ cmp edi, 1
jne SHORT G_M548_IG06
- ;; size=21 bbWeight=1 PerfScore 8.75
-G_M548_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -49,6 +53,8 @@ G_M548_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}
; gcr arg pop 0
test rax, rax
je SHORT G_M548_IG04
+ ;; size=46 bbWeight=1 PerfScore 11.75
+G_M548_IG03: ; bbWeight=0.48, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
mov rcx, rax
; gcrRegs +[rcx]
mov rdx, rsi
@@ -57,20 +63,23 @@ G_M548_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}
call [r11]<unknown method>
; gcrRegs -[rax rcx rdx rsi]
; gcr arg pop 0
- ;; size=42 bbWeight=0.50 PerfScore 3.25
-G_M548_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=0.48 PerfScore 1.80
+G_M548_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M548_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M548_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M548_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 2.75
+G_M548_IG06: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
- test eax, eax
- jne SHORT G_M548_IG07
+ test edi, edi
+ jne SHORT G_M548_IG08
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M548_IG07: ; bbWeight=0.64, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov r8, gword ptr [rsi+0x20]
; gcrRegs +[r8]
mov rdx, gword ptr [rsi+0x28]
@@ -81,23 +90,40 @@ G_M548_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048
call [System.Management.Automation.Language.StatementBlockAst:InternalVisit(System.Management.Automation.Language.AstVisitor,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.Language.TrapStatementAst],System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.Language.StatementAst],int):int]
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
- ;; size=24 bbWeight=0.50 PerfScore 4.38
-G_M548_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov rcx, rbx
+ mov edi, eax
+ ;; size=22 bbWeight=0.64 PerfScore 4.96
+G_M548_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx rbx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ je SHORT G_M548_IG10
+ ;; size=23 bbWeight=1 PerfScore 2.75
+G_M548_IG09: ; bbWeight=0.48, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
+ mov rcx, rax
; gcrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
- mov r8d, eax
- ;; size=9 bbWeight=0.50 PerfScore 0.38
-G_M548_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rax rcx rdx rsi]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=0.48 PerfScore 1.80
+G_M548_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, edi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M548_IG11: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rsi
- tail.jmp [System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.62
+ pop rdi
+ ret
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 129, prolog size 6, PerfScore 22.38, instruction count 40, allocated bytes for code 129 (MethodHash=ee36fddb) for method System.Management.Automation.Language.NamedBlockAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 166, prolog size 7, PerfScore 33.81, instruction count 52, allocated bytes for code 166 (MethodHash=ee36fddb) for method System.Management.Automation.Language.NamedBlockAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -105,11 +131,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+37 (+29.37%) : 38090.dasm - System.Management.Automation.Language.ArrayExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
@@ -2,31 +2,36 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp based frame
; partially 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
+; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 4.50) ref -> rsi this class-hnd single-def <System.Management.Automation.Language.ArrayExpressionAst>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> rbx class-hnd single-def <System.Management.Automation.Language.AstVisitor>
-; V02 loc0 [V02,T02] ( 5, 3.50) int -> rax
+; V00 this [V00,T01] ( 6, 4.60) ref -> rsi this class-hnd single-def <System.Management.Automation.Language.ArrayExpressionAst>
+; V01 arg1 [V01,T00] ( 7, 6.64) ref -> rbx class-hnd single-def <System.Management.Automation.Language.AstVisitor>
+; V02 loc0 [V02,T04] ( 5, 4.44) int -> rdi
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V04 tmp1 [V04,T02] ( 3, 4.96) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T04] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
+; V06 tmp3 [V06,T03] ( 3, 4.96) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
+; V08 tmp5 [V08,T05] ( 3, 3.84) ref -> rcx single-def "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M58853_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rdi
push rsi
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
G_M58853_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -37,10 +42,9 @@ G_M58853_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
call [rax+0x08]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- cmp eax, 1
+ mov edi, eax
+ cmp edi, 1
jne SHORT G_M58853_IG06
- ;; size=21 bbWeight=1 PerfScore 8.75
-G_M58853_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -49,6 +53,8 @@ G_M58853_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
test rax, rax
je SHORT G_M58853_IG04
+ ;; size=46 bbWeight=1 PerfScore 11.75
+G_M58853_IG03: ; bbWeight=0.48, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
mov rcx, rax
; gcrRegs +[rcx]
mov rdx, rsi
@@ -57,20 +63,23 @@ G_M58853_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rax rcx rdx rsi]
; gcr arg pop 0
- ;; size=42 bbWeight=0.50 PerfScore 3.25
-G_M58853_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=0.48 PerfScore 1.80
+G_M58853_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M58853_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M58853_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M58853_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 2.75
+G_M58853_IG06: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
- test eax, eax
- jne SHORT G_M58853_IG07
+ test edi, edi
+ jne SHORT G_M58853_IG08
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M58853_IG07: ; bbWeight=0.64, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rsi+0x20]
; gcrRegs +[rcx]
mov rdx, rbx
@@ -80,23 +89,40 @@ G_M58853_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004
call [rax+0x30]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=21 bbWeight=0.50 PerfScore 5.25
-G_M58853_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov rcx, rbx
+ mov edi, eax
+ ;; size=19 bbWeight=0.64 PerfScore 6.08
+G_M58853_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx rbx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ je SHORT G_M58853_IG10
+ ;; size=23 bbWeight=1 PerfScore 2.75
+G_M58853_IG09: ; bbWeight=0.48, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
+ mov rcx, rax
; gcrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
- mov r8d, eax
- ;; size=9 bbWeight=0.50 PerfScore 0.38
-G_M58853_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rax rcx rdx rsi]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=0.48 PerfScore 1.80
+G_M58853_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, edi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M58853_IG11: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rsi
- tail.jmp [System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.62
+ pop rdi
+ ret
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 126, prolog size 6, PerfScore 23.25, instruction count 40, allocated bytes for code 126 (MethodHash=d0431a1a) for method System.Management.Automation.Language.ArrayExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 163, prolog size 7, PerfScore 34.93, instruction count 52, allocated bytes for code 163 (MethodHash=d0431a1a) for method System.Management.Automation.Language.ArrayExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -104,11 +130,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+37 (+30.83%) : 36351.dasm - System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
@@ -2,30 +2,35 @@
; Emitting BLENDED_CODE for X64 with AVX512 - Windows
; FullOpts code
; optimized code
+; optimized using Synthesized PGO
; rsp 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 -> rsi this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst>
-; V01 arg1 [V01,T00] ( 7, 5.50) ref -> rbx class-hnd single-def <System.Management.Automation.Language.AstVisitor>
-; V02 loc0 [V02,T02] ( 5, 3.50) int -> rax
+; V00 this [V00,T01] ( 6, 4.60) ref -> rsi this class-hnd single-def <System.Management.Automation.Language.InvokeMemberExpressionAst>
+; V01 arg1 [V01,T00] ( 7, 6.64) ref -> rbx class-hnd single-def <System.Management.Automation.Language.AstVisitor>
+; V02 loc0 [V02,T04] ( 5, 4.44) int -> rdi
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 3, 3 ) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+; V04 tmp1 [V04,T02] ( 3, 4.96) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
+; V06 tmp3 [V06,T03] ( 3, 4.96) ref -> rax class-hnd single-def "dup spill" <System.Management.Automation.Language.AstVisitor>
+;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M63420_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rdi
push rsi
push rbx
- sub rsp, 40
+ sub rsp, 32
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=12 bbWeight=1 PerfScore 2.75
+ ;; size=13 bbWeight=1 PerfScore 3.75
G_M63420_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -36,10 +41,9 @@ G_M63420_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
call [rax]<unknown method>
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- cmp eax, 1
+ mov edi, eax
+ cmp edi, 1
jne SHORT G_M63420_IG06
- ;; size=20 bbWeight=1 PerfScore 8.75
-G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -48,6 +52,8 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcr arg pop 0
test rax, rax
je SHORT G_M63420_IG04
+ ;; size=45 bbWeight=1 PerfScore 11.75
+G_M63420_IG03: ; bbWeight=0.48, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
mov rcx, rax
; gcrRegs +[rcx]
mov rdx, rsi
@@ -56,20 +62,23 @@ G_M63420_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
call [r11]<unknown method>
; gcrRegs -[rax rcx rdx rsi]
; gcr arg pop 0
- ;; size=42 bbWeight=0.50 PerfScore 3.25
-G_M63420_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=0.48 PerfScore 1.80
+G_M63420_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M63420_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M63420_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M63420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=1 PerfScore 2.75
+G_M63420_IG06: ; bbWeight=0.80, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
- test eax, eax
- jne SHORT G_M63420_IG07
+ test edi, edi
+ jne SHORT G_M63420_IG08
+ ;; size=4 bbWeight=0.80 PerfScore 1.00
+G_M63420_IG07: ; bbWeight=0.64, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, rbx
@@ -77,23 +86,40 @@ G_M63420_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004
call [System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisitChildren(System.Management.Automation.Language.AstVisitor):int:this]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.38
-G_M63420_IG07: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov rcx, rbx
+ mov edi, eax
+ ;; size=14 bbWeight=0.64 PerfScore 2.40
+G_M63420_IG08: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ mov rcx, 0xD1FFAB1E ; <unknown class>
+ call CORINFO_HELP_ISINSTANCEOFINTERFACE
+ ; gcrRegs -[rdx rbx] +[rax]
+ ; gcr arg pop 0
+ test rax, rax
+ je SHORT G_M63420_IG10
+ ;; size=23 bbWeight=1 PerfScore 2.75
+G_M63420_IG09: ; bbWeight=0.48, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref
+ mov rcx, rax
; gcrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
- mov r8d, eax
- ;; size=9 bbWeight=0.50 PerfScore 0.38
-G_M63420_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ mov r11, 0xD1FFAB1E ; code for <unknown method>
+ call [r11]<unknown method>
+ ; gcrRegs -[rax rcx rdx rsi]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=0.48 PerfScore 1.80
+G_M63420_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, edi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M63420_IG11: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
pop rsi
- tail.jmp [System.Management.Automation.Language.AstVisitor:CheckForPostAction(System.Management.Automation.Language.Ast,int):int:this]
- ; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.62
+ pop rdi
+ ret
+ ;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 120, prolog size 6, PerfScore 20.38, instruction count 38, allocated bytes for code 120 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
+; Total bytes of code 157, prolog size 7, PerfScore 31.25, instruction count 50, allocated bytes for code 157 (MethodHash=bd710843) for method System.Management.Automation.Language.InvokeMemberExpressionAst:InternalVisit(System.Management.Automation.Language.AstVisitor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -101,11 +127,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
smoke_tests.nativeaot.windows.x64.checked.mch
-14 (-11.86%) : 12019.dasm - System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
@@ -5,18 +5,19 @@
; optimized code
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.DateTime>
-; V01 arg1 [V01,T00] ( 3, 2.50) ref -> rdx class-hnd exact single-def <System.Globalization.DateTimeFormatInfo>
+; V01 arg1 [V01,T00] ( 3, 2.80) ref -> rdx class-hnd exact single-def <System.Globalization.DateTimeFormatInfo>
;* V02 loc0 [V02 ] ( 0, 0 ) ubyte -> zero-ref
-; V03 loc1 [V03,T02] ( 4, 3.50) ubyte -> rax
-; V04 loc2 [V04,T05] ( 4, 2 ) ushort -> rax
-; V05 loc3 [V05,T06] ( 3, 1.50) ubyte -> rax
+; V03 loc1 [V03,T04] ( 4, 3.80) ubyte -> rax
+; V04 loc2 [V04,T05] ( 4, 1.77) ushort -> rax
+; V05 loc3 [V05,T06] ( 3, 1.60) ubyte -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T01] ( 2, 2 ) long -> rcx single-def "field V00._dateData (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V09 rat0 [V09,T04] ( 3, 3 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
+; V07 tmp1 [V07,T03] ( 2, 2 ) long -> rcx single-def "field V00._dateData (fldOffset=0x0)" P-INDEP
+; V08 tmp2 [V08,T01] ( 3, 4.80) ref -> rax single-def "argument with side effect"
+; V09 rat0 [V09,T02] ( 3, 4.80) int -> rcx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 40
@@ -32,9 +33,9 @@ G_M20361_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
setl al
movzx rax, al
test eax, eax
- je SHORT G_M20361_IG07
+ je SHORT G_M20361_IG05
;; size=36 bbWeight=1 PerfScore 3.50
-G_M20361_IG03: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M20361_IG03: ; bbWeight=0.80, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, rdx
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -50,41 +51,33 @@ G_M20361_IG03: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {},
; gcr arg pop 0
lea ecx, [rax-0x03]
cmp ecx, 5
- ja SHORT G_M20361_IG04
- mov eax, ecx
- lea rcx, [reloc @RWD00]
- mov ecx, dword ptr [rcx+4*rax]
- lea rdx, G_M20361_IG02
- add rcx, rdx
- jmp rcx
- ;; size=51 bbWeight=0.50 PerfScore 8.62
-G_M20361_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp eax, 13
- je SHORT G_M20361_IG05
- add eax, -22
- cmp eax, 1
ja SHORT G_M20361_IG06
- ;; size=13 bbWeight=0.50 PerfScore 1.38
-G_M20361_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov eax, 1
- jmp SHORT G_M20361_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M20361_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 43
+ bt eax, ecx
+ jb SHORT G_M20361_IG08
+ ;; size=37 bbWeight=0.80 PerfScore 10.40
+G_M20361_IG04: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M20361_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.26 PerfScore 0.06
+G_M20361_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-RWD00 dd G_M20361_IG05 - G_M20361_IG02
- dd G_M20361_IG05 - G_M20361_IG02
- dd G_M20361_IG06 - G_M20361_IG02
- dd G_M20361_IG05 - G_M20361_IG02
- dd G_M20361_IG06 - G_M20361_IG02
- dd G_M20361_IG05 - G_M20361_IG02
+G_M20361_IG06: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp eax, 13
+ je SHORT G_M20361_IG08
+ ;; size=5 bbWeight=0.11 PerfScore 0.14
+G_M20361_IG07: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ add eax, -22
+ cmp eax, 1
+ ja SHORT G_M20361_IG04
+ ;; size=8 bbWeight=0.06 PerfScore 0.09
+G_M20361_IG08: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov eax, 1
+ jmp SHORT G_M20361_IG05
+ ;; size=7 bbWeight=0.54 PerfScore 1.22
-
-; Total bytes of code 118, prolog size 4, PerfScore 16.25, instruction count 34, allocated bytes for code 118 (MethodHash=f593b076) for method System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
+; Total bytes of code 104, prolog size 4, PerfScore 16.92, instruction count 31, allocated bytes for code 104 (MethodHash=f593b076) for method System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
; ============================================================
Unwind Info:
-14 (-11.20%) : 6295.dasm - System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
@@ -5,19 +5,20 @@
; optimized code
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; control-flow guard enabled
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.DateTime>
-; V01 arg1 [V01,T00] ( 3, 2.50) ref -> rdx class-hnd exact single-def <System.Globalization.DateTimeFormatInfo>
+; V01 arg1 [V01,T00] ( 3, 2.80) ref -> rdx class-hnd exact single-def <System.Globalization.DateTimeFormatInfo>
;* V02 loc0 [V02 ] ( 0, 0 ) ubyte -> zero-ref
-; V03 loc1 [V03,T02] ( 4, 3.50) ubyte -> rax
-; V04 loc2 [V04,T05] ( 4, 2 ) ushort -> rax
-; V05 loc3 [V05,T06] ( 3, 1.50) ubyte -> rax
+; V03 loc1 [V03,T04] ( 4, 3.80) ubyte -> rax
+; V04 loc2 [V04,T05] ( 4, 1.77) ushort -> rax
+; V05 loc3 [V05,T06] ( 3, 1.60) ubyte -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T01] ( 2, 2 ) long -> rcx single-def "field V00._dateData (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08,T03] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V09 rat0 [V09,T04] ( 3, 3 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
+; V07 tmp1 [V07,T03] ( 2, 2 ) long -> rcx single-def "field V00._dateData (fldOffset=0x0)" P-INDEP
+; V08 tmp2 [V08,T01] ( 3, 4.80) ref -> rax single-def "argument with side effect"
+; V09 rat0 [V09,T02] ( 3, 4.80) int -> rcx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 40
@@ -33,9 +34,9 @@ G_M20361_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
setl al
movzx rax, al
test eax, eax
- je SHORT G_M20361_IG07
+ je SHORT G_M20361_IG05
;; size=36 bbWeight=1 PerfScore 3.50
-G_M20361_IG03: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+G_M20361_IG03: ; bbWeight=0.80, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
mov rcx, rdx
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -52,41 +53,33 @@ G_M20361_IG03: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0000 {},
; gcr arg pop 0
lea ecx, [rax-0x03]
cmp ecx, 5
- ja SHORT G_M20361_IG04
- mov eax, ecx
- lea rcx, [reloc @RWD00]
- mov ecx, dword ptr [rcx+4*rax]
- lea rdx, G_M20361_IG02
- add rcx, rdx
- jmp rcx
- ;; size=58 bbWeight=0.50 PerfScore 9.62
-G_M20361_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp eax, 13
- je SHORT G_M20361_IG05
- add eax, -22
- cmp eax, 1
ja SHORT G_M20361_IG06
- ;; size=13 bbWeight=0.50 PerfScore 1.38
-G_M20361_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov eax, 1
- jmp SHORT G_M20361_IG07
- ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M20361_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, 43
+ bt eax, ecx
+ jb SHORT G_M20361_IG08
+ ;; size=44 bbWeight=0.80 PerfScore 12.00
+G_M20361_IG04: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M20361_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.26 PerfScore 0.06
+G_M20361_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-RWD00 dd G_M20361_IG05 - G_M20361_IG02
- dd G_M20361_IG05 - G_M20361_IG02
- dd G_M20361_IG06 - G_M20361_IG02
- dd G_M20361_IG05 - G_M20361_IG02
- dd G_M20361_IG06 - G_M20361_IG02
- dd G_M20361_IG05 - G_M20361_IG02
+G_M20361_IG06: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp eax, 13
+ je SHORT G_M20361_IG08
+ ;; size=5 bbWeight=0.11 PerfScore 0.14
+G_M20361_IG07: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ add eax, -22
+ cmp eax, 1
+ ja SHORT G_M20361_IG04
+ ;; size=8 bbWeight=0.06 PerfScore 0.09
+G_M20361_IG08: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov eax, 1
+ jmp SHORT G_M20361_IG05
+ ;; size=7 bbWeight=0.54 PerfScore 1.22
-
-; Total bytes of code 125, prolog size 4, PerfScore 17.25, instruction count 35, allocated bytes for code 125 (MethodHash=f593b076) for method System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
+; Total bytes of code 111, prolog size 4, PerfScore 18.52, instruction count 32, allocated bytes for code 111 (MethodHash=f593b076) for method System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
; ============================================================
Unwind Info:
-49 (-10.68%) : 9807.dasm - System.AppContextConfigHelper:GetInt32Config(System.String,int,ubyte):int (FullOpts)
@@ -5,230 +5,125 @@
; optimized code
; rbp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are invalid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 3, 3 ) ref -> rcx class-hnd exact single-def <System.String>
-; V01 arg1 [V01,T02] ( 6, 4 ) int -> [rbp+0x18] EH-live single-def
-; V02 arg2 [V02,T07] ( 3, 3 ) ubyte -> rbx single-def
-; V03 loc0 [V03,T04] ( 6, 5.50) ref -> rsi class-hnd single-def <<unknown class>>
-; V04 loc1 [V04,T01] ( 8, 8 ) int -> rdi
-; V05 loc2 [V05,T21] ( 2, 2 ) int -> rdi
-; V06 loc3 [V06,T00] ( 10, 9.50) ref -> r15 class-hnd exact <System.String>
-; V07 loc4 [V07,T13] ( 3, 3 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V08 loc5 [V08,T16] ( 4, 2 ) int -> [rbp-0x2C] do-not-enreg[Z] EH-live
+; V00 arg0 [V00,T03] ( 3, 3 ) ref -> rcx class-hnd exact single-def <System.String>
+; V01 arg1 [V01,T01] ( 6, 3.25) int -> [rbp+0x18] EH-live single-def
+; V02 arg2 [V02,T04] ( 3, 3 ) ubyte -> rbx single-def
+; V03 loc0 [V03,T09] ( 5, 3.48) ref -> rax class-hnd single-def <<unknown class>>
+; V04 loc1 [V04,T05] ( 8, 4.03) int -> rsi
+; V05 loc2 [V05,T19] ( 2, 1.04) int -> rsi
+; V06 loc3 [V06,T08] ( 10, 3.73) ref -> rdi class-hnd exact <System.String>
+; V07 loc4 [V07,T18] ( 3, 1.08) ref -> rdi class-hnd single-def <<unknown class>>
+; V08 loc5 [V08,T13] ( 4, 2.00) int -> [rbp-0x1C] do-not-enreg[Z] EH-live
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T05] ( 3, 5 ) ref -> rcx class-hnd exact "spilling QMark2" <<unknown class>>
+; V10 tmp1 [V10,T00] ( 3, 5 ) ref -> rcx class-hnd exact "spilling QMark2" <<unknown class>>
;* V11 tmp2 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <System.String>
-; V12 tmp3 [V12,T15] ( 3, 3 ) int -> rdi
+; V12 tmp3 [V12,T15] ( 3, 2.00) int -> rsi
;* V13 tmp4 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impSpillSpecialSideEff" <<unknown class>>
;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
-; V15 tmp6 [V15,T03] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Globalization.NumberFormatInfo>
+; V15 tmp6 [V15,T02] ( 3, 5.04) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Globalization.NumberFormatInfo>
;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp10 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp11 [V20,T11] ( 2, 4 ) int -> rsi "Inlining Arg"
-; V21 tmp12 [V21,T09] ( 2, 4 ) byref -> r14 single-def "Inlining Arg"
+; V20 tmp11 [V20,T07] ( 2, 4 ) int -> rdi "Inlining Arg"
+; V21 tmp12 [V21,T06] ( 2, 4 ) byref -> rsi single-def "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V24 tmp15 [V24,T14] ( 3, 3 ) ref -> rax class-hnd exact "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V25 tmp16 [V25 ] ( 2, 2 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V26 tmp17 [V26,T18] ( 3, 2 ) int -> rax "Inline stloc first use temp"
+; V24 tmp15 [V24,T14] ( 3, 2 ) ref -> rax class-hnd exact "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V25 tmp16 [V25 ] ( 2, 2 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+; V26 tmp17 [V26,T10] ( 3, 3 ) int -> rax "Inline stloc first use temp"
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V30 tmp21 [V30,T17] ( 3, 2 ) byref -> r14 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp22 [V31,T19] ( 3, 2 ) int -> rsi "field V17._length (fldOffset=0x8)" P-INDEP
-; V32 tmp23 [V32,T20] ( 2, 2 ) byref -> r14 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp24 [V33,T22] ( 2, 2 ) int -> rsi "field V18._length (fldOffset=0x8)" P-INDEP
+; V30 tmp21 [V30,T11] ( 3, 2.80) byref -> rsi single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp22 [V31,T12] ( 3, 2.80) int -> rdi "field V17._length (fldOffset=0x8)" P-INDEP
+; V32 tmp23 [V32,T16] ( 2, 2 ) byref -> rsi single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp24 [V33,T17] ( 2, 2 ) int -> rdi "field V18._length (fldOffset=0x8)" P-INDEP
;* V34 tmp25 [V34 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
-; V36 tmp27 [V36 ] ( 6, 6 ) struct (16) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp28 [V37,T10] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V38 cse0 [V38,T12] ( 5, 3 ) long -> r14 multi-def "CSE - moderate"
-; V39 cse1 [V39,T08] ( 4, 4 ) int -> rsi multi-def "CSE - aggressive"
+; V36 tmp27 [V36 ] ( 6, 10.80) struct (16) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V37 tmp28 [V37,T20] ( 2, 0.48) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 72
G_M14829_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
- push r15
- push r14
push rdi
push rsi
push rbx
sub rsp, 72
- lea rbp, [rsp+0x70]
+ lea rbp, [rsp+0x60]
xor eax, eax
- mov qword ptr [rbp-0x48], rax
+ mov qword ptr [rbp-0x38], rax
mov dword ptr [rbp+0x18], edx
mov ebx, r8d
- ;; size=29 bbWeight=1 PerfScore 9.25
-G_M14829_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=25 bbWeight=1 PerfScore 7.25
+G_M14829_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
call <unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
mov edx, dword ptr [rbp+0x18]
- mov edi, edx
- mov rcx, rsi
+ mov esi, edx
+ mov rcx, rax
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M14829_IG04
- ;; size=21 bbWeight=1 PerfScore 4.00
-G_M14829_IG03: ; bbWeight=0.50, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M14829_IG18
+ ;; size=22 bbWeight=1 PerfScore 3.75
+G_M14829_IG03: ; bbWeight=0.50, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref
+ lea r8, [(reloc)] ; <unknown class>
+ cmp qword ptr [rcx], r8
+ jne G_M14829_IG18
+ ;; size=16 bbWeight=0.50 PerfScore 2.25
+G_M14829_IG04: ; bbWeight=0.52, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx]
+ mov esi, dword ptr [rax+0x08]
+ jmp SHORT G_M14829_IG14
+ ;; size=5 bbWeight=0.52 PerfScore 2.08
+G_M14829_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- mov r14, qword ptr [rcx]
- lea rcx, [(reloc)] ; <unknown class>
- ; gcrRegs -[rcx]
- cmp r14, rcx
- je SHORT G_M14829_IG09
- ;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M14829_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov r15, rsi
- ; gcrRegs +[r15]
- test r15, r15
- je SHORT G_M14829_IG06
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M14829_IG05: ; bbWeight=0.50, gcrefRegs=8040 {rsi r15}, byrefRegs=0000 {}, byref, isz
- mov r14, qword ptr [r15]
- lea rcx, [(reloc)] ; System.String
- cmp r14, rcx
- je SHORT G_M14829_IG12
- ;; size=15 bbWeight=0.50 PerfScore 1.88
-G_M14829_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- mov rdx, rsi
- ; gcrRegs +[rdx]
- lea rcx, [(reloc)] ; <unknown class>
- call CORINFO_HELP_ISINSTANCEOFINTERFACE
- ; gcrRegs -[rdx rsi] +[rax]
- ; gcr arg pop 0
- mov r15, rax
- ; gcrRegs +[r15]
- test r15, r15
- je SHORT G_M14829_IG07
- call System.Globalization.NumberFormatInfo:get_InvariantInfo():System.Globalization.NumberFormatInfo
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- mov rcx, r15
- ; gcrRegs +[rcx]
- lea r10, [(reloc)] ; function address
- call [r10]<unknown method>
- ; gcrRegs -[rax rcx rdx r15]
- ; gcr arg pop 0
- mov edi, eax
- ;; size=46 bbWeight=1 PerfScore 8.50
-G_M14829_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test bl, bl
- jne SHORT G_M14829_IG08
- test edi, edi
- jl G_M14829_IG19
- ;; size=12 bbWeight=1 PerfScore 2.50
-G_M14829_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov dword ptr [rbp-0x2C], edi
- jmp G_M14829_IG20
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M14829_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rsi]
- lea rcx, [(reloc)] ; <unknown class>
- cmp r14, rcx
- je SHORT G_M14829_IG11
- ;; size=12 bbWeight=1 PerfScore 1.75
-G_M14829_IG10: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- mov rdx, rsi
- ; gcrRegs +[rdx]
- lea rcx, [(reloc)] ; <unknown class>
- call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx]
- ; gcr arg pop 0
- ;; size=15 bbWeight=0.50 PerfScore 0.88
-G_M14829_IG11: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [rsi+0x08]
- jmp SHORT G_M14829_IG07
- ;; size=5 bbWeight=1 PerfScore 4.00
-G_M14829_IG12: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi] +[r15]
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov edx, 48
- call System.String:StartsWith(ushort):ubyte:this
- ; gcrRegs -[rcx]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M14829_IG16
- mov esi, dword ptr [r15+0x08]
- cmp esi, 2
- jl SHORT G_M14829_IG15
- cmp word ptr [r15+0x0E], 120
- jne SHORT G_M14829_IG15
- mov rcx, r15
- ; gcrRegs +[rcx]
- mov edx, 16
- call System.Convert:ToInt32(System.String,int):int
- ; gcrRegs -[rcx r15]
- ; gcr arg pop 0
- mov edi, eax
- jmp SHORT G_M14829_IG07
- ;; size=51 bbWeight=1 PerfScore 13.75
-G_M14829_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs +[r14]
- cmp eax, 1
- jne SHORT G_M14829_IG14
- mov bword ptr [rbp-0x48], r14
- mov dword ptr [rbp-0x40], esi
- lea rcx, [rbp-0x48]
- call <unknown method>
- ; byrRegs -[r14]
- ; gcr arg pop 0
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M14829_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call System.Number:ThrowOverflowException[int]()
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M14829_IG15: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r15]
- mov rcx, r15
+G_M14829_IG06: ; bbWeight=0.09, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi]
+ mov rcx, rdi
; gcrRegs +[rcx]
mov edx, 8
call System.Convert:ToInt32(System.String,int):int
- ; gcrRegs -[rcx r15]
+ ; gcrRegs -[rcx rdi]
; gcr arg pop 0
- mov edi, eax
- jmp G_M14829_IG07
- ;; size=20 bbWeight=1 PerfScore 3.75
-G_M14829_IG16: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r15]
+ mov esi, eax
...
+9 (+20.93%) : 6350.dasm - Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
@@ -5,52 +5,61 @@
; optimized code
; rsp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; control-flow guard enabled
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd exact single-def <Internal.TypeSystem.MethodForInstantiatedType>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref "guarded devirt return temp" <Internal.TypeSystem.Instantiation>
-; V03 tmp2 [V03,T00] ( 6, 6.33) ref -> rcx single-def "guarded devirt arg temp"
+; V03 tmp2 [V03,T00] ( 5, 6 ) ref -> rcx single-def "guarded devirt arg temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.NoMetadata.RuntimeMethodDesc>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedMethod>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V07 tmp6 [V07,T02] ( 2, 1 ) ref -> rax single-def "field V02._genericParameters (fldOffset=0x0)" P-INDEP
+; V07 tmp6 [V07,T03] ( 2, 0.66) ref -> rax single-def "field V02._genericParameters (fldOffset=0x0)" P-INDEP
+; V08 cse0 [V08,T02] ( 3, 2.66) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 0
G_M20372_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbx
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M20372_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x20]
+ mov rbx, qword ptr [rcx]
lea rax, [(reloc)]
- cmp qword ptr [rcx], rax
- jne SHORT G_M20372_IG04
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M20372_IG03: ; bbWeight=0.17, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
- jmp Internal.TypeSystem.NoMetadata.RuntimeMethodDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this
- ; gcr arg pop 0
- ;; size=5 bbWeight=0.17 PerfScore 0.34
-G_M20372_IG04: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp rbx, rax
+ je SHORT G_M20372_IG05
+ ;; size=19 bbWeight=1 PerfScore 5.75
+G_M20372_IG03: ; bbWeight=0.66, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
lea rax, [(reloc)]
- cmp qword ptr [rcx], rax
- jne SHORT G_M20372_IG07
- ;; size=12 bbWeight=0.33 PerfScore 1.49
-G_M20372_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ cmp rbx, rax
+ jne SHORT G_M20372_IG06
+ ;; size=12 bbWeight=0.66 PerfScore 1.16
+G_M20372_IG04: ; bbWeight=0.33, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rcx+0x50]
; gcrRegs +[rax]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M20372_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M20372_IG07: ; bbWeight=0.17, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp SHORT G_M20372_IG07
+ ;; size=6 bbWeight=0.33 PerfScore 1.32
+G_M20372_IG05: ; bbWeight=0.34, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
+ pop rbx
+ jmp Internal.TypeSystem.NoMetadata.RuntimeMethodDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this
+ ; gcr arg pop 0
+ ;; size=6 bbWeight=0.34 PerfScore 0.85
+G_M20372_IG06: ; bbWeight=0.33, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbx
jmp Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this
; gcr arg pop 0
- ;; size=5 bbWeight=0.17 PerfScore 0.33
+ ;; size=6 bbWeight=0.33 PerfScore 0.83
+G_M20372_IG07: ; bbWeight=0.33, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rcx] +[rax]
+ pop rbx
+ ret
+ ;; size=2 bbWeight=0.33 PerfScore 0.49
-; Total bytes of code 43, prolog size 0, PerfScore 10.15, instruction count 11, allocated bytes for code 43 (MethodHash=05d3b06b) for method Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
+; Total bytes of code 52, prolog size 1, PerfScore 11.39, instruction count 17, allocated bytes for code 52 (MethodHash=05d3b06b) for method Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
; ============================================================
Unwind Info:
@@ -58,8 +67,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+9 (+20.93%) : 11590.dasm - Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
@@ -5,51 +5,60 @@
; optimized code
; rsp based frame
; fully interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; Final local variable assignments
;
; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd exact single-def <Internal.TypeSystem.MethodForInstantiatedType>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref "guarded devirt return temp" <Internal.TypeSystem.Instantiation>
-; V03 tmp2 [V03,T00] ( 6, 6.33) ref -> rcx single-def "guarded devirt arg temp"
+; V03 tmp2 [V03,T00] ( 5, 6 ) ref -> rcx single-def "guarded devirt arg temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.NoMetadata.RuntimeMethodDesc>
;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.InstantiatedMethod>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Internal.TypeSystem.MethodForInstantiatedType>
-; V07 tmp6 [V07,T02] ( 2, 1 ) ref -> rax single-def "field V02._genericParameters (fldOffset=0x0)" P-INDEP
+; V07 tmp6 [V07,T03] ( 2, 0.66) ref -> rax single-def "field V02._genericParameters (fldOffset=0x0)" P-INDEP
+; V08 cse0 [V08,T02] ( 3, 2.66) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 0
G_M20372_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbx
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M20372_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x20]
+ mov rbx, qword ptr [rcx]
lea rax, [(reloc)]
- cmp qword ptr [rcx], rax
- jne SHORT G_M20372_IG04
- ;; size=16 bbWeight=1 PerfScore 6.50
-G_M20372_IG03: ; bbWeight=0.17, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
- jmp Internal.TypeSystem.NoMetadata.RuntimeMethodDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this
- ; gcr arg pop 0
- ;; size=5 bbWeight=0.17 PerfScore 0.34
-G_M20372_IG04: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp rbx, rax
+ je SHORT G_M20372_IG05
+ ;; size=19 bbWeight=1 PerfScore 5.75
+G_M20372_IG03: ; bbWeight=0.66, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
lea rax, [(reloc)]
- cmp qword ptr [rcx], rax
- jne SHORT G_M20372_IG07
- ;; size=12 bbWeight=0.33 PerfScore 1.49
-G_M20372_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ cmp rbx, rax
+ jne SHORT G_M20372_IG06
+ ;; size=12 bbWeight=0.66 PerfScore 1.16
+G_M20372_IG04: ; bbWeight=0.33, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rcx+0x50]
; gcrRegs +[rax]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M20372_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ret
- ;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M20372_IG07: ; bbWeight=0.17, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp SHORT G_M20372_IG07
+ ;; size=6 bbWeight=0.33 PerfScore 1.32
+G_M20372_IG05: ; bbWeight=0.34, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
+ pop rbx
+ jmp Internal.TypeSystem.NoMetadata.RuntimeMethodDesc:get_Instantiation():Internal.TypeSystem.Instantiation:this
+ ; gcr arg pop 0
+ ;; size=6 bbWeight=0.34 PerfScore 0.85
+G_M20372_IG06: ; bbWeight=0.33, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbx
jmp Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this
; gcr arg pop 0
- ;; size=5 bbWeight=0.17 PerfScore 0.33
+ ;; size=6 bbWeight=0.33 PerfScore 0.83
+G_M20372_IG07: ; bbWeight=0.33, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ; gcrRegs -[rcx] +[rax]
+ pop rbx
+ ret
+ ;; size=2 bbWeight=0.33 PerfScore 0.49
-; Total bytes of code 43, prolog size 0, PerfScore 10.15, instruction count 11, allocated bytes for code 43 (MethodHash=05d3b06b) for method Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
+; Total bytes of code 52, prolog size 1, PerfScore 11.39, instruction count 17, allocated bytes for code 52 (MethodHash=05d3b06b) for method Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
; ============================================================
Unwind Info:
@@ -57,8 +66,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+49 (+23.67%) : 23281.dasm - System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller:ConvertToUnmanaged(System.String):ulong (FullOpts)
@@ -5,37 +5,38 @@
; optimized code
; rsp based frame
; partially interruptible
+; with Synthesized PGO: edge weights are valid, and fgCalledCount is 100
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 6, 4.50) ref -> rbx class-hnd exact single-def <System.String>
-; V01 loc0 [V01,T01] ( 4, 2 ) int -> rdi
-; V02 loc1 [V02,T08] ( 3, 1.50) long -> rbp
+; V00 arg0 [V00,T00] ( 7, 6 ) ref -> rbx class-hnd exact single-def <System.String>
+; V01 loc0 [V01,T01] ( 7, 4 ) int -> rdi
+; V02 loc1 [V02,T07] ( 4, 3 ) long -> rbp
;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
-; V04 loc3 [V04,T09] ( 3, 1.50) int -> rax
+; V04 loc3 [V04,T09] ( 3, 3 ) int -> rax
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 2, 2 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V06 tmp1 [V06,T03] ( 2, 4 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V09 tmp4 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V11 tmp6 [V11,T05] ( 2, 2 ) int -> r8 "Inlining Arg"
-; V12 tmp7 [V12,T03] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
+; V11 tmp6 [V11,T05] ( 2, 4 ) int -> r8 "Inlining Arg"
+; V12 tmp7 [V12,T04] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
;* V13 tmp8 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp9 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp10 [V15,T06] ( 3, 1.50) byref -> r14 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp11 [V16,T10] ( 3, 1.50) int -> rdi "field V03._length (fldOffset=0x8)" P-INDEP
+; V15 tmp10 [V15,T08] ( 3, 3 ) byref -> r14 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp11 [V16,T10] ( 3, 3 ) int -> rdi "field V03._length (fldOffset=0x8)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V19 tmp14 [V19,T11] ( 2, 1 ) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V20 tmp15 [V20,T13] ( 2, 1 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
-; V21 tmp16 [V21,T12] ( 2, 1 ) byref -> rdx single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp17 [V22,T14] ( 2, 1 ) int -> r8 "field V09._length (fldOffset=0x8)" P-INDEP
+; V19 tmp14 [V19,T11] ( 2, 2 ) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp15 [V20,T13] ( 2, 2 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T12] ( 2, 2 ) byref -> rdx single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp17 [V22,T14] ( 2, 2 ) int -> r8 "field V09._length (fldOffset=0x8)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V25 tmp20 [V25,T04] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V26 tmp21 [V26 ] ( 3, 3 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 tmp22 [V27 ] ( 3, 3 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
-; V28 cse0 [V28,T07] ( 3, 1.50) byref -> rsi "CSE - moderate"
+; V25 tmp20 [V25,T02] ( 4, 4 ) ref -> rcx single-def "argument with side effect"
+; V26 tmp21 [V26 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V27 tmp22 [V27 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
+; V28 cse0 [V28,T06] ( 5, 3 ) byref -> rsi "CSE - aggressive"
;
; Lcl frame size = 64
@@ -54,28 +55,10 @@ G_M52761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=26 bbWeight=1 PerfScore 9.83
G_M52761_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- jne SHORT G_M52761_IG05
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M52761_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M52761_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M52761_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[rbx]
+ je G_M52761_IG05
lea rcx, [(reloc)]
cmp qword ptr [rcx-0x08], 0
- jne G_M52761_IG10
- ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M52761_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M52761_IG09
mov rsi, qword ptr [(reloc)]
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
@@ -88,13 +71,15 @@ G_M52761_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
mov edi, eax
add edi, 1
- jo SHORT G_M52761_IG09
+ jo SHORT G_M52761_IG08
mov ecx, edi
call System.Runtime.InteropServices.Marshal:AllocCoTaskMem(int):long
; gcr arg pop 0
mov rbp, rax
test edi, edi
- jl SHORT G_M52761_IG11
+ jl G_M52761_IG10
+ ;; size=73 bbWeight=1 PerfScore 18.25
+G_M52761_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
mov r14, rbp
; byrRegs +[r14]
mov rcx, gword ptr [rsi+0x08]
@@ -115,12 +100,12 @@ G_M52761_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; byrRegs -[rsi]
; gcr arg pop 0
cmp eax, edi
- jae SHORT G_M52761_IG08
+ jae SHORT G_M52761_IG07
mov eax, eax
mov byte ptr [r14+rax], 0
mov rax, rbp
- ;; size=107 bbWeight=0.50 PerfScore 14.50
-G_M52761_IG07: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=65 bbWeight=1 PerfScore 16.50
+G_M52761_IG04: ; bbWeight=1, epilog, nogc, extend
add rsp, 64
pop rbx
pop rbp
@@ -128,33 +113,63 @@ G_M52761_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rdi
pop r14
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
-G_M52761_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M52761_IG05: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[r14]
+ xor eax, eax
+ ;; size=2 bbWeight=0.52 PerfScore 0.13
+G_M52761_IG06: ; bbWeight=0.52, epilog, nogc, extend
+ add rsp, 64
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=11 bbWeight=0.52 PerfScore 1.95
+G_M52761_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M52761_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52761_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M52761_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M52761_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
call CORINFO_HELP_READYTORUN_GCSTATIC_BASE
; byrRegs +[rax]
; gcr arg pop 0
- jmp G_M52761_IG06
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M52761_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rsi, qword ptr [(reloc)]
+ mov rcx, gword ptr [rsi+0x08]
+ ; gcrRegs +[rcx]
+ mov rdx, rbx
+ ; gcrRegs +[rdx]
+ cmp dword ptr [rcx], ecx
+ call <unknown method>
+ ; gcrRegs -[rcx rdx]
+ ; byrRegs -[rax] +[rsi]
+ ; gcr arg pop 0
+ mov edi, eax
+ add edi, 1
+ jo SHORT G_M52761_IG08
+ mov ecx, edi
+ call System.Runtime.InteropServices.Marshal:AllocCoTaskMem(int):long
+ ; gcr arg pop 0
+ mov rbp, rax
+ test edi, edi
+ jge G_M52761_IG03
+ ;; size=51 bbWeight=0 PerfScore 0.00
+G_M52761_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- ; byrRegs -[rax]
+ ; byrRegs -[rsi]
call System.ThrowHelper:ThrowArgumentOutOfRangeException()
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 207, prolog size 23, PerfScore 31.71, instruction count 67, allocated bytes for code 207 (MethodHash=6c1331e6) for method System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller:ConvertToUnmanaged(System.String):ulong (FullOpts)
+; Total bytes of code 256, prolog size 23, PerfScore 50.41, instruction count 79, allocated bytes for code 256 (MethodHash=6c1331e6) for method System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller:ConvertToUnmanaged(System.String):ulong (FullOpts)
; ============================================================
Unwind Info:
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
aspnet.run.windows.x64.checked.mch |
16,915 |
3,659 |
7,677 |
5,579 |
-304,547 |
+176,725 |
benchmarks.run.windows.x64.checked.mch |
12,982 |
3,053 |
6,463 |
3,466 |
-20,478 |
+201,717 |
benchmarks.run_pgo.windows.x64.checked.mch |
8,241 |
1,575 |
3,089 |
3,577 |
-47,602 |
+99,626 |
benchmarks.run_tiered.windows.x64.checked.mch |
8,223 |
1,727 |
2,280 |
4,216 |
-9,584 |
+68,404 |
coreclr_tests.run.windows.x64.checked.mch |
80,062 |
21,634 |
33,255 |
25,173 |
-214,169 |
+620,750 |
libraries.crossgen2.windows.x64.checked.mch |
50,608 |
9,049 |
22,465 |
19,094 |
-72,755 |
+345,525 |
libraries.pmi.windows.x64.checked.mch |
71,023 |
13,263 |
32,165 |
25,595 |
-116,263 |
+727,693 |
libraries_tests.run.windows.x64.Release.mch |
13,247 |
1,622 |
5,688 |
5,937 |
-33,255 |
+157,054 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
90,509 |
30,612 |
41,794 |
18,103 |
-430,919 |
+1,225,060 |
realworld.run.windows.x64.checked.mch |
12,577 |
2,158 |
7,027 |
3,392 |
-20,407 |
+235,612 |
smoke_tests.nativeaot.windows.x64.checked.mch |
10,204 |
1,114 |
4,385 |
4,705 |
-13,690 |
+72,466 |
|
374,591 |
89,466 |
166,288 |
118,837 |
-1,283,669 |
+3,930,632 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
aspnet.run.windows.x64.checked.mch |
127,009 |
61,677 |
65,332 |
56 (0.04%) |
2,269 (1.75%) |
benchmarks.run.windows.x64.checked.mch |
34,137 |
6 |
34,131 |
9 (0.02%) |
2,804 (7.59%) |
benchmarks.run_pgo.windows.x64.checked.mch |
106,685 |
68,114 |
38,571 |
11 (0.01%) |
1,292 (1.20%) |
benchmarks.run_tiered.windows.x64.checked.mch |
82,099 |
62,052 |
20,047 |
10 (0.01%) |
844 (1.02%) |
coreclr_tests.run.windows.x64.checked.mch |
487,804 |
273,478 |
214,326 |
48 (0.01%) |
4,495 (0.91%) |
libraries.crossgen2.windows.x64.checked.mch |
257,985 |
15 |
257,970 |
0 (0.00%) |
16,126 (5.88%) |
libraries.pmi.windows.x64.checked.mch |
325,738 |
6 |
325,732 |
69 (0.02%) |
18,239 (5.30%) |
libraries_tests.run.windows.x64.Release.mch |
119,421 |
100,260 |
19,161 |
2 (0.00%) |
824 (0.69%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
308,593 |
21,947 |
286,646 |
166 (0.05%) |
35,316 (10.27%) |
realworld.run.windows.x64.checked.mch |
35,571 |
3 |
35,568 |
2 (0.01%) |
3,185 (8.22%) |
smoke_tests.nativeaot.windows.x64.checked.mch |
30,652 |
11 |
30,641 |
0 (0.00%) |
1,782 (5.49%) |
|
1,915,694 |
587,569 |
1,328,125 |
373 (0.02%) |
87,176 (4.35%) |
jit-analyze output
aspnet.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 44258494 (overridden on cmd)
Total bytes of diff: 44130672 (overridden on cmd)
Total bytes of delta: -127822 (-0.29 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1071 : 123952.dasm (6.79 % of base)
1028 : 90748.dasm (16.93 % of base)
948 : 113877.dasm (13.07 % of base)
944 : 124949.dasm (62.52 % of base)
920 : 124894.dasm (40.48 % of base)
882 : 126975.dasm (9.02 % of base)
882 : 115887.dasm (9.02 % of base)
859 : 124901.dasm (46.11 % of base)
852 : 124913.dasm (48.94 % of base)
842 : 98951.dasm (9.44 % of base)
836 : 124882.dasm (39.90 % of base)
834 : 124900.dasm (39.58 % of base)
834 : 124885.dasm (40.88 % of base)
834 : 124888.dasm (40.51 % of base)
806 : 124926.dasm (56.32 % of base)
792 : 124872.dasm (66.61 % of base)
792 : 124909.dasm (66.61 % of base)
792 : 124948.dasm (66.61 % of base)
792 : 124923.dasm (66.61 % of base)
788 : 121002.dasm (73.58 % of base)
Top file improvements (bytes):
-1087 : 82191.dasm (-46.83 % of base)
-1077 : 49313.dasm (-46.60 % of base)
-1061 : 79798.dasm (-54.89 % of base)
-1056 : 80636.dasm (-54.63 % of base)
-1045 : 52096.dasm (-45.02 % of base)
-1013 : 741.dasm (-57.07 % of base)
-1006 : 101490.dasm (-56.71 % of base)
-1006 : 8941.dasm (-56.68 % of base)
-1006 : 9839.dasm (-56.68 % of base)
-1006 : 129065.dasm (-56.71 % of base)
-1006 : 20695.dasm (-56.71 % of base)
-994 : 80325.dasm (-42.62 % of base)
-987 : 11947.dasm (-66.82 % of base)
-986 : 79513.dasm (-42.32 % of base)
-985 : 67949.dasm (-42.29 % of base)
-983 : 81193.dasm (-42.28 % of base)
-980 : 29540.dasm (-42.02 % of base)
-973 : 64412.dasm (-41.87 % of base)
-969 : 119219.dasm (-55.82 % of base)
-969 : 15808.dasm (-55.82 % of base)
81 total files with Code Size differences (45 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
1071 (6.79 % of base) : 123952.dasm - AngleSharp.Html.HtmlElementFactory:.ctor():this (FullOpts)
1028 (16.93 % of base) : 90748.dasm - Esprima.ParserExtensions:TryGetInternedString(System.ReadOnlySpan`1[ushort]):System.String (FullOpts)
948 (13.07 % of base) : 113877.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
944 (62.52 % of base) : 124949.dasm - OrchardCore.Themes.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
920 (40.48 % of base) : 124894.dasm - OrchardCore.Users.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
882 (9.02 % of base) : 126975.dasm - OrchardCore.Resources.Liquid.ScriptTag+<WriteToAsync>d__1:MoveNext():this (FullOpts)
882 (9.02 % of base) : 115887.dasm - OrchardCore.Resources.Liquid.ScriptTag+<WriteToAsync>d__1:MoveNext():this (Tier1)
859 (46.11 % of base) : 124901.dasm - OrchardCore.Deployment.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
852 (48.94 % of base) : 124913.dasm - OrchardCore.Layers.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
842 (9.44 % of base) : 98951.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestHeaders:TryGetValueFast(System.String,byref):ubyte:this (Instrumented Tier1)
836 (39.90 % of base) : 124882.dasm - OrchardCore.Contents.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
834 (40.51 % of base) : 124888.dasm - OrchardCore.AdminMenu.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
834 (40.88 % of base) : 124885.dasm - OrchardCore.ContentTypes.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
834 (39.58 % of base) : 124900.dasm - OrchardCore.Deployment.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
806 (56.32 % of base) : 124926.dasm - OrchardCore.Queries.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
792 (66.61 % of base) : 124909.dasm - OrchardCore.Features.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
792 (66.61 % of base) : 124923.dasm - OrchardCore.Menu.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
792 (66.61 % of base) : 124872.dasm - OrchardCore.Shortcodes.ShortcodeTemplatesStartup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
792 (66.61 % of base) : 124948.dasm - OrchardCore.Taxonomies.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
788 (73.58 % of base) : 121002.dasm - OrchardCore.Recipes.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
Top method improvements (bytes):
-1087 (-46.83 % of base) : 82191.dasm - Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary:SetModel(System.Object):this (Tier1)
-1077 (-46.60 % of base) : 49313.dasm - Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary:SetModel(System.Object):this (Tier1)
-1061 (-54.89 % of base) : 79798.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-1056 (-54.63 % of base) : 80636.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-1045 (-45.02 % of base) : 52096.dasm - Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary:SetModel(System.Object):this (Tier1)
-1013 (-57.07 % of base) : 741.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-1006 (-56.71 % of base) : 101490.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-1006 (-56.68 % of base) : 8941.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-1006 (-56.68 % of base) : 9839.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-1006 (-56.71 % of base) : 129065.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-1006 (-56.71 % of base) : 20695.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-994 (-42.62 % of base) : 80325.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection:ParseRequest(byref):ubyte:this (Tier1)
-987 (-66.82 % of base) : 11947.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpParser`1[Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1ParsingHandler]:TryTakeSingleHeader(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1ParsingHandler,System.ReadOnlySpan`1[ubyte]):ubyte (Tier1)
-986 (-42.32 % of base) : 79513.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection:ParseRequest(byref):ubyte:this (Tier1)
-985 (-42.29 % of base) : 67949.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection:ParseRequest(byref):ubyte:this (Tier1)
-983 (-42.28 % of base) : 81193.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection:ParseRequest(byref):ubyte:this (Tier1)
-980 (-42.02 % of base) : 29540.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection:ParseRequest(byref):ubyte:this (Tier1)
-973 (-41.87 % of base) : 64412.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1Connection:ParseRequest(byref):ubyte:this (Tier1)
-969 (-55.82 % of base) : 119219.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
-969 (-55.82 % of base) : 15808.dasm - System.Net.Sockets.SocketAsyncEventArgs:ProcessIOCPResult(ubyte,int,byref,System.Memory`1[ubyte],System.Threading.CancellationToken):int:this (Tier1)
Top method regressions (percentages):
21 (233.33 % of base) : 122503.dasm - Parlot.Fluent.TextLiteral+<>c:<.ctor>b__2_0(ushort):ubyte:this (FullOpts)
496 (88.41 % of base) : 126712.dasm - AngleSharp.Html.Parser.HtmlTokenizer:EmitTag(AngleSharp.Html.Parser.Tokens.HtmlTagToken):AngleSharp.Html.Parser.Tokens.HtmlToken:this (FullOpts)
475 (83.92 % of base) : 34159.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1-OSR)
475 (83.92 % of base) : 56312.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1-OSR)
475 (83.92 % of base) : 57477.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1-OSR)
475 (83.92 % of base) : 29821.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1-OSR)
475 (83.92 % of base) : 58844.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1-OSR)
475 (83.92 % of base) : 77240.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1-OSR)
788 (73.58 % of base) : 121002.dasm - OrchardCore.Recipes.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
792 (66.61 % of base) : 124909.dasm - OrchardCore.Features.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
792 (66.61 % of base) : 124923.dasm - OrchardCore.Menu.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
792 (66.61 % of base) : 124872.dasm - OrchardCore.Shortcodes.ShortcodeTemplatesStartup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
792 (66.61 % of base) : 124948.dasm - OrchardCore.Taxonomies.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
944 (62.52 % of base) : 124949.dasm - OrchardCore.Themes.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
191 (60.44 % of base) : 25368.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.IO.Stream+<ReadAtLeastAsyncCore>d__46]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this (Tier1)
191 (60.44 % of base) : 25619.dasm - System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1+StateMachineBox`1[int,System.IO.Stream+<ReadAtLeastAsyncCore>d__46]:System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(short):int:this (Tier1)
806 (56.32 % of base) : 124926.dasm - OrchardCore.Queries.Startup:Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Routing.IEndpointRouteBuilder,System.IServiceProvider):this (FullOpts)
97 (53.01 % of base) : 128736.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CheckPropertyName(Newtonsoft.Json.JsonReader,System.String):ubyte:this (Tier1)
97 (53.01 % of base) : 118841.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CheckPropertyName(Newtonsoft.Json.JsonReader,System.String):ubyte:this (Tier1)
97 (53.01 % of base) : 100912.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CheckPropertyName(Newtonsoft.Json.JsonReader,System.String):ubyte:this (Tier1)
Top method improvements (percentages):
-333 (-83.46 % of base) : 11957.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 54694.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 67926.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 70751.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 71247.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 80198.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 81046.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 28389.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 29566.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 64351.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-333 (-83.46 % of base) : 50173.dasm - Microsoft.Extensions.Primitives.StringValues:ToString():System.String:this (Tier1)
-350 (-81.78 % of base) : 1552.dasm - System.Threading.PreAllocatedOverlapped:Dispose():this (Tier1)
-350 (-81.78 % of base) : 12279.dasm - System.Threading.PreAllocatedOverlapped:Dispose():this (Tier1)
-917 (-80.51 % of base) : 28938.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-915 (-80.33 % of base) : 64758.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-915 (-80.33 % of base) : 55077.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-889 (-79.87 % of base) : 82599.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-889 (-79.87 % of base) : 52385.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-889 (-79.87 % of base) : 49956.dasm - System.Threading.Channels.UnboundedChannel`1+UnboundedChannelReader[System.__Canon]:TryRead(byref):ubyte:this (Tier1)
-602 (-74.32 % of base) : 82486.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadTo(byref,ubyte,ubyte):ubyte:this (Tier1)
benchmarks.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 9258280 (overridden on cmd)
Total bytes of diff: 9439519 (overridden on cmd)
Total bytes of delta: 181239 (1.96 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
6262 : 6798.dasm (24.79 % of base)
1236 : 19676.dasm (482.81 % of base)
1145 : 24896.dasm (32.07 % of base)
1143 : 34926.dasm (34.44 % of base)
1035 : 28118.dasm (18.09 % of base)
965 : 27174.dasm (19.75 % of base)
769 : 15190.dasm (16.61 % of base)
736 : 3902.dasm (7.95 % of base)
736 : 17176.dasm (7.95 % of base)
733 : 30170.dasm (6.07 % of base)
700 : 17319.dasm (15.96 % of base)
700 : 1988.dasm (15.96 % of base)
686 : 34810.dasm (11.84 % of base)
686 : 28095.dasm (15.77 % of base)
645 : 21837.dasm (5.40 % of base)
643 : 32700.dasm (14.90 % of base)
641 : 15136.dasm (10.71 % of base)
641 : 6130.dasm (10.71 % of base)
634 : 27566.dasm (5.01 % of base)
598 : 29398.dasm (15.04 % of base)
Top file improvements (bytes):
-324 : 2644.dasm (-30.28 % of base)
-170 : 7250.dasm (-4.30 % of base)
-135 : 28356.dasm (-16.15 % of base)
-131 : 27811.dasm (-2.16 % of base)
-119 : 35182.dasm (-18.92 % of base)
-113 : 2751.dasm (-7.76 % of base)
-111 : 17632.dasm (-7.31 % of base)
-111 : 5458.dasm (-7.31 % of base)
-106 : 2908.dasm (-4.54 % of base)
-106 : 28109.dasm (-9.17 % of base)
-104 : 28593.dasm (-2.14 % of base)
-100 : 1870.dasm (-18.08 % of base)
-100 : 13411.dasm (-18.08 % of base)
-96 : 3793.dasm (-10.76 % of base)
-96 : 18877.dasm (-10.76 % of base)
-95 : 25151.dasm (-32.99 % of base)
-95 : 3060.dasm (-23.87 % of base)
-95 : 17915.dasm (-4.13 % of base)
-95 : 14280.dasm (-23.87 % of base)
-93 : 18510.dasm (-1.83 % of base)
83 total files with Code Size differences (42 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
6262 (24.79 % of base) : 6798.dasm - Jil.JSON:GetWriterAction[System.__Canon](Jil.Options):System.Action`3[System.__Canon,System.__Canon,int] (FullOpts)
1236 (482.81 % of base) : 19676.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
1145 (32.07 % of base) : 24896.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1143 (34.44 % of base) : 34926.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1035 (18.09 % of base) : 28118.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
965 (19.75 % of base) : 27174.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
769 (16.61 % of base) : 15190.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLength4To7,System.Buffers.StringSearchValuesHelper+CaseSensitive]:IndexOf(byref,int):int:this (FullOpts)
736 (7.95 % of base) : 3902.dasm - Product:CreateLists() (FullOpts)
736 (7.95 % of base) : 17176.dasm - Product:CreateLists() (FullOpts)
733 (6.07 % of base) : 30170.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
700 (15.96 % of base) : 17319.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
700 (15.96 % of base) : 1988.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
686 (11.84 % of base) : 34810.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
686 (15.77 % of base) : 28095.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindReturn(Microsoft.CodeAnalysis.CSharp.Syntax.ReturnStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
645 (5.40 % of base) : 21837.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
643 (14.90 % of base) : 32700.dasm - System.Security.Cryptography.CryptoConfig:get_DefaultNameHT():System.Collections.Generic.Dictionary`2[System.String,System.Object] (FullOpts)
641 (10.71 % of base) : 15136.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
641 (10.71 % of base) : 6130.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
634 (5.01 % of base) : 27566.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 (FullOpts)
598 (15.04 % of base) : 29398.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_LocationFormatter1:.ctor():this (FullOpts)
Top method improvements (bytes):
-324 (-30.28 % of base) : 2644.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ubyte,System.Text.Ascii+PlainLoader`1[ubyte]](byref,byref,ulong):ubyte (FullOpts)
-170 (-4.30 % of base) : 7250.dasm - Jil.Deserialize.InlineDeserializer`1[System.__Canon]:ReadObjectAutomata(System.Type):this (FullOpts)
-135 (-16.15 % of base) : 28356.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)
-131 (-2.16 % of base) : 27811.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-119 (-18.92 % of base) : 35182.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-113 (-7.76 % of base) : 2751.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
-111 (-7.31 % of base) : 17632.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
-111 (-7.31 % of base) : 5458.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
-106 (-9.17 % of base) : 28109.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (FullOpts)
-106 (-4.54 % of base) : 2908.dasm - System.Net.Security.SafeDeleteContext:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int (FullOpts)
-104 (-2.14 % of base) : 28593.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:InterceptCallAndAdjustArguments(byref,byref,byref,byref,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax):this (FullOpts)
-100 (-18.08 % of base) : 1870.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-100 (-18.08 % of base) : 13411.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (FullOpts)
-96 (-10.76 % of base) : 3793.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitILConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type):ubyte (FullOpts)
-96 (-10.76 % of base) : 18877.dasm - System.Linq.Expressions.Compiler.ILGen:TryEmitILConstant(System.Reflection.Emit.ILGenerator,System.Object,System.Type):ubyte (FullOpts)
-95 (-4.13 % of base) : 17915.dasm - System.Net.Security.SafeDeleteContext:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int (FullOpts)
-95 (-32.99 % of base) : 25151.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
-95 (-23.87 % of base) : 3060.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-95 (-23.87 % of base) : 14280.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-93 (-1.83 % of base) : 18510.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:.cctor() (FullOpts)
Top method regressions (percentages):
1236 (482.81 % of base) : 19676.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
388 (50.32 % of base) : 28247.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
189 (45.00 % of base) : 10695.dasm - System.Formats.Cbor.CborWriter:PushDataItem(ubyte,System.Nullable`1[int]):this (FullOpts)
189 (45.00 % of base) : 12716.dasm - System.Formats.Cbor.CborWriter:PushDataItem(ubyte,System.Nullable`1[int]):this (FullOpts)
26 (43.33 % of base) : 34701.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlySpanFromArrayStartLength():System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
158 (40.93 % of base) : 3512.dasm - System.Formats.Cbor.CborReader:PushDataItem(ubyte,System.Nullable`1[int]):this (FullOpts)
79 (39.30 % of base) : 19711.dasm - SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
79 (39.30 % of base) : 19028.dasm - SIMD.ConsoleMandel:XBench(int,int) (FullOpts)
323 (38.87 % of base) : 28969.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
115 (38.46 % of base) : 655.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
115 (38.46 % of base) : 11989.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
150 (36.76 % of base) : 562.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
150 (36.76 % of base) : 12321.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
26 (36.62 % of base) : 11386.dasm - System.Memory.Constructors`1[System.__Canon]:ReadOnlyMemoryFromArrayStartLength():System.ReadOnlyMemory`1[System.__Canon]:this (FullOpts)
1143 (34.44 % of base) : 34926.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
117 (33.72 % of base) : 13494.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
117 (33.72 % of base) : 1978.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int64TryParse(ushort[],int,int,byref):int (FullOpts)
218 (32.98 % of base) : 28577.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
1145 (32.07 % of base) : 24896.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
116 (31.87 % of base) : 8431.dasm - Newtonsoft.Json.Utilities.ConvertUtils:Int32TryParse(ushort[],int,int,byref):int (FullOpts)
Top method improvements (percentages):
-95 (-32.99 % of base) : 25151.dasm - System.Numerics.Tests.Perf_BigInteger:Parse(System.Numerics.Tests.Perf_BigInteger+BigIntegerData):System.Numerics.BigInteger:this (FullOpts)
-324 (-30.28 % of base) : 2644.dasm - System.Text.Ascii:EqualsIgnoreCase[ubyte,ubyte,System.Text.Ascii+PlainLoader`1[ubyte]](byref,byref,ulong):ubyte (FullOpts)
-72 (-30.00 % of base) : 10170.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (FullOpts)
-72 (-30.00 % of base) : 15996.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:GenerateMethod(System.Xml.Serialization.TypeMapping):this (FullOpts)
-82 (-24.40 % of base) : 11557.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-82 (-24.40 % of base) : 13149.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanBE():System.Span`1[ubyte] (FullOpts)
-95 (-23.87 % of base) : 3060.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-95 (-23.87 % of base) : 14280.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-68 (-23.53 % of base) : 13147.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-68 (-23.53 % of base) : 11555.dasm - System.Buffers.Binary.Tests.BinaryReadAndWriteTests:GetSpanLE():System.Span`1[ubyte] (FullOpts)
-14 (-21.88 % of base) : 14884.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
-14 (-21.88 % of base) : 4186.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
-86 (-20.92 % of base) : 32060.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
-83 (-20.15 % of base) : 22035.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
-10 (-19.61 % of base) : 31585.dasm - (dynamicClass):NumGetter(System.Object):int (FullOpts)
-10 (-19.61 % of base) : 6609.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<LargeStructWithPropertiesPropInit>b__60_14(System.Object):int:this (FullOpts)
-10 (-19.61 % of base) : 31633.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<SimpleStructWithPropertiesPropInit>b__101_0(System.Object):int:this (FullOpts)
-10 (-19.61 % of base) : 4702.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<SimpleStructWithPropertiesPropInit>b__101_0(System.Object):int:this (FullOpts)
-10 (-19.61 % of base) : 5082.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_0(System.Object):int:this (FullOpts)
-10 (-19.61 % of base) : 5085.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext+<>c:<StructRecordPropInit>b__107_6(System.Object):int:this (FullOpts)
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 32800681 (overridden on cmd)
Total bytes of diff: 32852705 (overridden on cmd)
Total bytes of delta: 52024 (0.16 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
3993 : 65307.dasm (105.11 % of base)
1066 : 70034.dasm (28.99 % of base)
1064 : 96169.dasm (31.03 % of base)
658 : 51101.dasm (5.52 % of base)
645 : 102868.dasm (5.40 % of base)
615 : 96135.dasm (10.90 % of base)
496 : 105975.dasm (7.45 % of base)
402 : 89719.dasm (17.83 % of base)
401 : 86980.dasm (12.06 % of base)
369 : 97406.dasm (6.68 % of base)
368 : 89036.dasm (7.80 % of base)
368 : 32005.dasm (7.80 % of base)
363 : 19808.dasm (11.77 % of base)
360 : 105972.dasm (12.00 % of base)
350 : 89159.dasm (7.60 % of base)
341 : 101164.dasm (10.96 % of base)
322 : 91589.dasm (6.74 % of base)
318 : 68036.dasm (3.72 % of base)
293 : 71743.dasm (26.49 % of base)
285 : 26983.dasm (3.51 % of base)
Top file improvements (bytes):
-783 : 85123.dasm (-50.16 % of base)
-783 : 98453.dasm (-50.16 % of base)
-772 : 64942.dasm (-48.98 % of base)
-772 : 91925.dasm (-48.98 % of base)
-731 : 100920.dasm (-30.06 % of base)
-588 : 73679.dasm (-17.75 % of base)
-526 : 87026.dasm (-38.01 % of base)
-498 : 92074.dasm (-35.98 % of base)
-426 : 99364.dasm (-16.03 % of base)
-375 : 102614.dasm (-17.44 % of base)
-359 : 102446.dasm (-20.33 % of base)
-327 : 97986.dasm (-18.52 % of base)
-282 : 34970.dasm (-45.05 % of base)
-282 : 74597.dasm (-45.05 % of base)
-277 : 34973.dasm (-44.32 % of base)
-277 : 74600.dasm (-44.32 % of base)
-255 : 8544.dasm (-57.82 % of base)
-255 : 29666.dasm (-57.82 % of base)
-255 : 9310.dasm (-57.82 % of base)
-249 : 92281.dasm (-8.74 % of base)
76 total files with Code Size differences (40 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
3993 (105.11 % of base) : 65307.dasm - System.Buffers.Text.Base64:Avx2Encode(byref,byref,ulong,int,int,ulong,ulong) (Tier1-OSR)
1066 (28.99 % of base) : 70034.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1064 (31.03 % of base) : 96169.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
658 (5.52 % of base) : 51101.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
645 (5.40 % of base) : 102868.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
615 (10.90 % of base) : 96135.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
496 (7.45 % of base) : 105975.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
402 (17.83 % of base) : 89719.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
401 (12.06 % of base) : 86980.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
369 (6.68 % of base) : 97406.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
368 (7.80 % of base) : 89036.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
368 (7.80 % of base) : 32005.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
363 (11.77 % of base) : 19808.dasm - (dynamicClass):_DynamicMethod4(System.IO.TextReader):int (FullOpts)
360 (12.00 % of base) : 105972.dasm - (dynamicClass):ReadMyEventsListerViewModelFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
350 (7.60 % of base) : 89159.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
341 (10.96 % of base) : 101164.dasm - (dynamicClass):_DynamicMethod4(System.IO.TextReader):int (FullOpts)
322 (6.74 % of base) : 91589.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
318 (3.72 % of base) : 68036.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
293 (26.49 % of base) : 71743.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
285 (3.51 % of base) : 26983.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
Top method improvements (bytes):
-783 (-50.16 % of base) : 85123.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-783 (-50.16 % of base) : 98453.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-772 (-48.98 % of base) : 64942.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-772 (-48.98 % of base) : 91925.dasm - System.IO.StreamReader:ReadToEnd():System.String:this (Tier1-OSR)
-731 (-30.06 % of base) : 100920.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
-588 (-17.75 % of base) : 73679.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier1-OSR)
-526 (-38.01 % of base) : 87026.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
-498 (-35.98 % of base) : 92074.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Clear():this (Tier1)
-426 (-16.03 % of base) : 99364.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (Tier1-OSR)
-375 (-17.44 % of base) : 102614.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[System.__Canon]:MoveNext():this (Tier1-OSR)
-359 (-20.33 % of base) : 102446.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
-327 (-18.52 % of base) : 97986.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
-282 (-45.05 % of base) : 34970.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareKeys(int,int):int:this (Tier1)
-282 (-45.05 % of base) : 74597.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareKeys(int,int):int:this (Tier1)
-277 (-44.32 % of base) : 34973.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareAnyKeys(int,int):int:this (Tier1)
-277 (-44.32 % of base) : 74600.dasm - System.Linq.EnumerableSorter`2[System.__Canon,System.Decimal]:CompareAnyKeys(int,int):int:this (Tier1)
-255 (-57.82 % of base) : 8544.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-255 (-57.82 % of base) : 29666.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-255 (-57.82 % of base) : 9310.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-249 (-8.74 % of base) : 92281.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<MultipleSerial>d__23[System.__Canon]:MoveNext():this (Tier1-OSR)
Top method regressions (percentages):
3993 (105.11 % of base) : 65307.dasm - System.Buffers.Text.Base64:Avx2Encode(byref,byref,ulong,int,int,ulong,ulong) (Tier1-OSR)
98 (50.26 % of base) : 56056.dasm - System.Diagnostics.ActivityTagsCollection:FindIndex(System.String):int:this (Tier1-OSR)
27 (36.99 % of base) : 80316.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (Tier1)
1064 (31.03 % of base) : 96169.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1066 (28.99 % of base) : 70034.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
249 (27.30 % of base) : 67184.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
293 (26.49 % of base) : 71743.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
153 (22.43 % of base) : 102794.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
67 (20.94 % of base) : 58732.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
161 (20.46 % of base) : 19576.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
161 (20.46 % of base) : 51140.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
62 (19.38 % of base) : 47950.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
128 (18.96 % of base) : 61658.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
128 (18.96 % of base) : 76712.dasm - System.String:Concat(System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier0-FullOpts)
402 (17.83 % of base) : 89719.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
195 (15.53 % of base) : 85159.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
104 (15.48 % of base) : 100856.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex12_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
109 (14.53 % of base) : 61433.dasm - ProtoBuf.Serializers.RepeatedSerializer`2[System.__Canon,System.__Canon]:Write[System.Collections.Generic.List`1+Enumerator[System.__Canon]](byref,int,int,int,byref,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):this (FullOpts)
109 (14.53 % of base) : 52276.dasm - ProtoBuf.Serializers.RepeatedSerializer`2[System.__Canon,System.__Canon]:Write[System.Collections.Generic.List`1+Enumerator[System.__Canon]](byref,int,int,int,byref,ProtoBuf.Serializers.ISerializer`1[System.__Canon]):this (FullOpts)
10 (13.70 % of base) : 69967.dasm - System.Reflection.Associates:IncludeAccessor(System.Reflection.MethodInfo,ubyte):ubyte (Tier1)
Top method improvements (percentages):
-255 (-57.82 % of base) : 8544.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-255 (-57.82 % of base) : 29666.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-255 (-57.82 % of base) : 9310.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-202 (-52.06 % of base) : 88126.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 107405.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 40840.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 48981.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 24056.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 32010.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 51378.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 61201.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 71571.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 91671.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 32049.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 42180.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 53808.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 58923.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 64283.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 87229.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
-201 (-51.94 % of base) : 92271.dasm - System.Globalization.NumberFormatInfo:GetInstance(System.IFormatProvider):System.Globalization.NumberFormatInfo (Tier1)
benchmarks.run_tiered.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 18809905 (overridden on cmd)
Total bytes of diff: 18868725 (overridden on cmd)
Total bytes of delta: 58820 (0.31 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
1153 : 47809.dasm (32.22 % of base)
1143 : 77738.dasm (34.44 % of base)
708 : 77707.dasm (13.01 % of base)
645 : 24967.dasm (5.40 % of base)
641 : 82044.dasm (10.71 % of base)
641 : 20192.dasm (10.71 % of base)
639 : 25046.dasm (16.32 % of base)
639 : 82556.dasm (10.61 % of base)
586 : 77725.dasm (10.39 % of base)
549 : 30598.dasm (14.47 % of base)
538 : 36428.dasm (6.32 % of base)
529 : 75239.dasm (12.99 % of base)
527 : 47062.dasm (13.23 % of base)
409 : 30616.dasm (15.06 % of base)
396 : 13878.dasm (4.58 % of base)
390 : 68687.dasm (11.85 % of base)
386 : 73266.dasm (8.75 % of base)
363 : 8828.dasm (11.77 % of base)
362 : 77711.dasm (12.80 % of base)
360 : 82536.dasm (12.00 % of base)
Top file improvements (bytes):
-403 : 79022.dasm (-18.02 % of base)
-326 : 25694.dasm (-30.30 % of base)
-106 : 77124.dasm (-4.54 % of base)
-106 : 57242.dasm (-9.62 % of base)
-100 : 47847.dasm (-18.42 % of base)
-95 : 36992.dasm (-33.10 % of base)
-95 : 28910.dasm (-33.10 % of base)
-95 : 73242.dasm (-4.13 % of base)
-93 : 36990.dasm (-13.94 % of base)
-90 : 28908.dasm (-13.47 % of base)
-86 : 36991.dasm (-20.92 % of base)
-83 : 28909.dasm (-20.15 % of base)
-65 : 36263.dasm (-11.46 % of base)
-65 : 9942.dasm (-11.46 % of base)
-62 : 20296.dasm (-13.11 % of base)
-55 : 24128.dasm (-7.14 % of base)
-47 : 68156.dasm (-3.08 % of base)
-47 : 25420.dasm (-5.99 % of base)
-45 : 46313.dasm (-4.01 % of base)
-43 : 24108.dasm (-5.26 % of base)
78 total files with Code Size differences (36 improved, 42 regressed), 20 unchanged.
Top method regressions (bytes):
1153 (32.22 % of base) : 47809.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
1143 (34.44 % of base) : 77738.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
708 (13.01 % of base) : 77707.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
645 (5.40 % of base) : 24967.dasm - (dynamicClass):_DynamicMethod0(System.IO.TextWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives,int) (FullOpts)
641 (10.71 % of base) : 82044.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier1)
641 (10.71 % of base) : 20192.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (Tier1)
639 (16.32 % of base) : 25046.dasm - (dynamicClass):ReadLocationFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
639 (10.61 % of base) : 82556.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
586 (10.39 % of base) : 77725.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
549 (14.47 % of base) : 30598.dasm - (dynamicClass):ReadActiveOrUpcomingEventFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
538 (6.32 % of base) : 36428.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (Tier0-FullOpts)
529 (12.99 % of base) : 75239.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
527 (13.23 % of base) : 47062.dasm - (dynamicClass):ReadMyEventsListerItemFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
409 (15.06 % of base) : 30616.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
396 (4.58 % of base) : 13878.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1-OSR)
390 (11.85 % of base) : 68687.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
386 (8.75 % of base) : 73266.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
363 (11.77 % of base) : 8828.dasm - (dynamicClass):_DynamicMethod4(System.IO.TextReader):int (FullOpts)
362 (12.80 % of base) : 77711.dasm - (dynamicClass):ReadCampaignSummaryViewModelFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
360 (12.00 % of base) : 82536.dasm - (dynamicClass):ReadMyEventsListerViewModelFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
Top method improvements (bytes):
-403 (-18.02 % of base) : 79022.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
-326 (-30.30 % of base) : 25694.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-106 (-9.62 % of base) : 57242.dasm - Microsoft.CodeAnalysis.ConstantValue:Create(System.Object,ubyte):Microsoft.CodeAnalysis.ConstantValue (Tier1)
-106 (-4.54 % of base) : 77124.dasm - System.Net.Security.SafeDeleteContext:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int (Tier1)
-100 (-18.42 % of base) : 47847.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (Tier1)
-95 (-4.13 % of base) : 73242.dasm - System.Net.Security.SafeDeleteContext:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int (Tier1)
-95 (-33.10 % of base) : 36992.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-95 (-33.10 % of base) : 28910.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-93 (-13.94 % of base) : 36990.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (Tier1)
-90 (-13.47 % of base) : 28908.dasm - System.Numerics.Tests.Perf_BigInteger+<NumberStrings>d__0:MoveNext():ubyte:this (Tier1)
-86 (-20.92 % of base) : 36991.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-83 (-20.15 % of base) : 28909.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-65 (-11.46 % of base) : 36263.dasm - System.AppContextConfigHelper:GetInt16Config(System.String,short,ubyte):short (Tier1)
-65 (-11.46 % of base) : 9942.dasm - System.AppContextConfigHelper:GetInt16Config(System.String,short,ubyte):short (Tier1)
-62 (-13.11 % of base) : 20296.dasm - System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte (Tier1)
-55 (-7.14 % of base) : 24128.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1)
-47 (-3.08 % of base) : 68156.dasm - Benchstone.BenchF.MatInv4:MinV2(float[],byref,byref,float[],float[]) (Tier1-OSR)
-47 (-5.99 % of base) : 25420.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
-45 (-4.01 % of base) : 46313.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
-43 (-5.26 % of base) : 24108.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
Top method regressions (percentages):
115 (38.46 % of base) : 2972.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
115 (38.46 % of base) : 35113.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
150 (36.76 % of base) : 61336.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
150 (36.76 % of base) : 57435.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (Tier1)
1143 (34.44 % of base) : 77738.dasm - (dynamicClass):_DynamicMethod7(byref):int (FullOpts)
1153 (32.22 % of base) : 47809.dasm - (dynamicClass):_DynamicMethod3(byref):int (FullOpts)
70 (30.57 % of base) : 3011.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
70 (30.57 % of base) : 35017.dasm - System.String:Concat(System.String,System.String):System.String (Tier1)
111 (24.83 % of base) : 19937.dasm - System.SpanHelpers:IndexOf(byref,int,byref,int):int (Tier1-OSR)
26 (23.85 % of base) : 23603.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier1)
182 (23.82 % of base) : 70266.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
182 (23.82 % of base) : 8609.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.Object[]):System.String (Tier0-FullOpts)
72 (23.61 % of base) : 66733.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanMultiLineComment(byref):ubyte:this (Tier1)
302 (22.47 % of base) : 17724.dasm - System.Buffers.SingleStringSearchValuesThreeChars`2[System.Buffers.StringSearchValuesHelper+ValueLengthLessThan4,System.Buffers.StringSearchValuesHelper+CaseInsensitiveAsciiLetters]:IndexOf(byref,int):int:this (Tier1-OSR)
10 (21.74 % of base) : 77016.dasm - System.LocalAppContextSwitches:get_EnableUnsafeUTF7Encoding():ubyte (Tier1)
10 (21.74 % of base) : 73109.dasm - System.LocalAppContextSwitches:get_EnableUnsafeUTF7Encoding():ubyte (Tier1)
10 (21.74 % of base) : 2756.dasm - System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
10 (21.74 % of base) : 34467.dasm - System.LocalAppContextSwitches:get_ForceEmitInvoke():ubyte (Tier1)
10 (21.74 % of base) : 34466.dasm - System.LocalAppContextSwitches:get_ForceInterpretedInvoke():ubyte (Tier1)
10 (21.74 % of base) : 2755.dasm - System.LocalAppContextSwitches:get_ForceInterpretedInvoke():ubyte (Tier1)
Top method improvements (percentages):
-95 (-33.10 % of base) : 36992.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-95 (-33.10 % of base) : 28910.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (Tier1)
-326 (-30.30 % of base) : 25694.dasm - System.Text.Ascii:EqualsIgnoreCase[ushort,ushort,System.Text.Ascii+PlainLoader`1[ushort]](byref,byref,ulong):ubyte (Tier1)
-14 (-21.88 % of base) : 25590.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (Tier1)
-86 (-20.92 % of base) : 36991.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-83 (-20.15 % of base) : 28909.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (Tier1)
-10 (-19.61 % of base) : 16866.dasm - (dynamicClass):Int1Getter(System.Object):int (FullOpts)
-10 (-19.61 % of base) : 45745.dasm - (dynamicClass):NumGetter(System.Object):int (FullOpts)
-10 (-19.23 % of base) : 72273.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
-10 (-19.23 % of base) : 18767.dasm - (dynamicClass):Param2Getter(System.Object):ubyte (FullOpts)
-10 (-19.23 % of base) : 16865.dasm - (dynamicClass):String1Getter(System.Object):System.String (FullOpts)
-10 (-19.23 % of base) : 45746.dasm - (dynamicClass):TextGetter(System.Object):System.String (FullOpts)
-100 (-18.42 % of base) : 47847.dasm - Newtonsoft.Json.Utilities.EnumUtils:ToUInt64(System.Object):ulong (Tier1)
-10 (-18.18 % of base) : 18565.dasm - (dynamicClass):Int1Setter(System.Object,int) (FullOpts)
-10 (-18.18 % of base) : 59692.dasm - (dynamicClass):NumSetter(System.Object,int) (FullOpts)
-403 (-18.02 % of base) : 79022.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.Span`1[uint],System.Span`1[uint]) (Tier1-OSR)
-10 (-17.86 % of base) : 18768.dasm - (dynamicClass):Param2Setter(System.Object,ubyte) (FullOpts)
-10 (-17.86 % of base) : 73504.dasm - (dynamicClass):Param2Setter(System.Object,ubyte) (FullOpts)
-10 (-15.15 % of base) : 18564.dasm - (dynamicClass):String1Setter(System.Object,System.String) (FullOpts)
-10 (-15.15 % of base) : 59693.dasm - (dynamicClass):TextSetter(System.Object,System.String) (FullOpts)
coreclr_tests.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 291190967 (overridden on cmd)
Total bytes of diff: 291597548 (overridden on cmd)
Total bytes of delta: 406581 (0.14 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
5778 : 230002.dasm (6.25 % of base)
5778 : 237482.dasm (6.25 % of base)
5778 : 230016.dasm (6.25 % of base)
5778 : 237484.dasm (6.25 % of base)
3715 : 230441.dasm (4.15 % of base)
2722 : 230446.dasm (2.90 % of base)
2591 : 229795.dasm (2.87 % of base)
2426 : 230074.dasm (2.41 % of base)
2421 : 307728.dasm (12.92 % of base)
2381 : 230138.dasm (2.40 % of base)
2245 : 229788.dasm (2.62 % of base)
2140 : 230456.dasm (2.31 % of base)
1953 : 229809.dasm (2.11 % of base)
1853 : 311207.dasm (29.05 % of base)
1767 : 229601.dasm (1.08 % of base)
1767 : 229606.dasm (1.08 % of base)
1526 : 230106.dasm (1.66 % of base)
1488 : 230042.dasm (1.60 % of base)
1224 : 176590.dasm (24.97 % of base)
1168 : 230451.dasm (1.33 % of base)
Top file improvements (bytes):
-3043 : 230351.dasm (-26.66 % of base)
-1752 : 230864.dasm (-7.88 % of base)
-1193 : 425139.dasm (-56.33 % of base)
-996 : 425150.dasm (-52.61 % of base)
-835 : 294855.dasm (-21.13 % of base)
-724 : 294955.dasm (-19.07 % of base)
-724 : 294961.dasm (-19.07 % of base)
-462 : 428914.dasm (-31.17 % of base)
-461 : 484648.dasm (-31.21 % of base)
-459 : 489619.dasm (-31.20 % of base)
-458 : 318533.dasm (-31.14 % of base)
-457 : 484750.dasm (-30.98 % of base)
-456 : 456712.dasm (-30.98 % of base)
-453 : 427670.dasm (-30.80 % of base)
-453 : 491703.dasm (-30.80 % of base)
-452 : 326132.dasm (-30.79 % of base)
-452 : 427969.dasm (-30.79 % of base)
-452 : 429253.dasm (-30.79 % of base)
-450 : 452389.dasm (-32.94 % of base)
-448 : 281883.dasm (-3.45 % of base)
85 total files with Code Size differences (41 improved, 44 regressed), 20 unchanged.
Top method regressions (bytes):
5778 (6.25 % of base) : 230002.dasm - overlddiv:TestEntryPoint():int (FullOpts)
5778 (6.25 % of base) : 237482.dasm - overlddiv:TestEntryPoint():int (FullOpts)
5778 (6.25 % of base) : 230016.dasm - overldrem:TestEntryPoint():int (FullOpts)
5778 (6.25 % of base) : 237484.dasm - overldrem:TestEntryPoint():int (FullOpts)
3715 (4.15 % of base) : 230441.dasm - u4div:TestEntryPoint():int (FullOpts)
2722 (2.90 % of base) : 230446.dasm - u4rem:TestEntryPoint():int (FullOpts)
2591 (2.87 % of base) : 229795.dasm - i4rem:TestEntryPoint():int (FullOpts)
2426 (2.41 % of base) : 230074.dasm - r4rem:TestEntryPoint():int (FullOpts)
2421 (12.92 % of base) : 307728.dasm - CseTest.Test_Main:TestEntryPoint():int (FullOpts)
2381 (2.40 % of base) : 230138.dasm - r8rem:TestEntryPoint():int (FullOpts)
2245 (2.62 % of base) : 229788.dasm - i4div:TestEntryPoint():int (FullOpts)
2140 (2.31 % of base) : 230456.dasm - u8rem:TestEntryPoint():int (FullOpts)
1953 (2.11 % of base) : 229809.dasm - i8rem:TestEntryPoint():int (FullOpts)
1853 (29.05 % of base) : 311207.dasm - Program:Main():int (FullOpts)
1767 (1.08 % of base) : 229601.dasm - decimaldiv:TestEntryPoint():int (FullOpts)
1767 (1.08 % of base) : 229606.dasm - decimalrem:TestEntryPoint():int (FullOpts)
1526 (1.66 % of base) : 230106.dasm - r8div:TestEntryPoint():int (FullOpts)
1488 (1.60 % of base) : 230042.dasm - r4div:TestEntryPoint():int (FullOpts)
1224 (24.97 % of base) : 176590.dasm - TailcallVerify.Program:Run(System.String):int (FullOpts)
1168 (1.33 % of base) : 230451.dasm - u8div:TestEntryPoint():int (FullOpts)
Top method improvements (bytes):
-3043 (-26.66 % of base) : 230351.dasm - Test_throwinfinally_50_cs.Class1:foo(int) (FullOpts)
-1752 (-7.88 % of base) : 230864.dasm - LongMulOn32BitTest:Main():int (FullOpts)
-1193 (-56.33 % of base) : 425139.dasm - BenchmarksGame.KNucleotide_9:countEnding(int,long,ubyte):System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper] (Tier1-OSR)
-996 (-52.61 % of base) : 425150.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-835 (-21.13 % of base) : 294855.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-724 (-19.07 % of base) : 294955.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-724 (-19.07 % of base) : 294961.dasm - HFATest.TestCase:TestEntryPoint():int (FullOpts)
-462 (-31.17 % of base) : 428914.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-461 (-31.21 % of base) : 484648.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-459 (-31.20 % of base) : 489619.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-458 (-31.14 % of base) : 318533.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-457 (-30.98 % of base) : 484750.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-456 (-30.98 % of base) : 456712.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-453 (-30.80 % of base) : 427670.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-453 (-30.80 % of base) : 491703.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-452 (-30.79 % of base) : 326132.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-452 (-30.79 % of base) : 427969.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-452 (-30.79 % of base) : 429253.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-450 (-32.94 % of base) : 452389.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
-448 (-3.45 % of base) : 281883.dasm - Generated719:MethodCallingTest() (FullOpts)
Top method regressions (percentages):
359 (46.87 % of base) : 240804.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
363 (45.37 % of base) : 189788.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
43 (43.43 % of base) : 315698.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int):this (FullOpts)
124 (42.18 % of base) : 193683.dasm - System.Xml.XmlConverter:ToChars(double,ubyte[],int):int (FullOpts)
72 (40.91 % of base) : 185160.dasm - MainApp:TestEntryPoint():int (FullOpts)
326 (39.00 % of base) : 241543.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
1008 (38.93 % of base) : 5032.dasm - testout1:Sub_Funclet_0():int (FullOpts)
323 (38.87 % of base) : 190527.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
987 (37.06 % of base) : 247791.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
27 (36.99 % of base) : 441397.dasm - Microsoft.CodeAnalysis.PooledObjects.ObjectPool`1[System.__Canon]:Allocate():System.__Canon:this (Tier1)
90 (34.48 % of base) : 174814.dasm - Gen`1[double]:PassAsParameter(double,double) (FullOpts)
90 (34.48 % of base) : 174831.dasm - Gen`1[double]:PassAsParameter(double,double) (FullOpts)
90 (34.48 % of base) : 174670.dasm - Gen`1[double]:PassAsParameter(double,double):this (FullOpts)
90 (34.48 % of base) : 174687.dasm - Gen`1[double]:PassAsParameter(double,double):this (FullOpts)
90 (34.22 % of base) : 174819.dasm - Gen`1[double]:PassAsParameter(double,double) (FullOpts)
90 (34.22 % of base) : 174836.dasm - Gen`1[double]:PassAsParameter(double,double) (FullOpts)
90 (34.22 % of base) : 174692.dasm - Gen`1[double]:PassAsParameter(double,double):this (FullOpts)
90 (34.22 % of base) : 174675.dasm - Gen`1[double]:PassAsParameter(double,double):this (FullOpts)
5 (33.33 % of base) : 63112.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetByte:HasAllBitsSet(ubyte):ubyte:this (FullOpts)
5 (33.33 % of base) : 63136.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorAllBitsSet__AllBitsSetSByte:HasAllBitsSet(byte):ubyte:this (FullOpts)
Top method improvements (percentages):
-59 (-75.64 % of base) : 229402.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)
-59 (-75.64 % of base) : 235128.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)
-37 (-66.07 % of base) : 235118.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)
-29 (-60.42 % of base) : 229317.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 (-60.00 % of base) : 245204.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ubyte):int (FullOpts)
-6 (-60.00 % of base) : 245208.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(ushort):int (FullOpts)
-1193 (-56.33 % of base) : 425139.dasm - BenchmarksGame.KNucleotide_9:countEnding(int,long,ubyte):System.Collections.Generic.Dictionary`2[long,BenchmarksGame.Wrapper] (Tier1-OSR)
-23 (-54.76 % of base) : 235066.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 (-54.55 % of base) : 245201.dasm - Runtime_40607.Program:SignExtendsWrittenValue(byte):int (FullOpts)
-6 (-54.55 % of base) : 245205.dasm - Runtime_40607.Program:SignExtendsWrittenValue(short):int (FullOpts)
-6 (-54.55 % of base) : 245207.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ushort):int (FullOpts)
-996 (-52.61 % of base) : 425150.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-341 (-46.27 % of base) : 417697.dasm - System.IO.RandomAccess:WriteAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte],long) (Instrumented Tier1)
-6 (-42.86 % of base) : 173089.dasm - BringUpTest_Jmp1:Jmp1(int):int (FullOpts)
-6 (-42.86 % of base) : 245203.dasm - Runtime_40607.Program:SignExtendsWrittenValue(ubyte):int (FullOpts)
-6 (-42.86 % of base) : 245202.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(byte):int (FullOpts)
-6 (-42.86 % of base) : 245206.dasm - Runtime_40607.Program:ZeroExtendsWrittenValue(short):int (FullOpts)
-239 (-39.44 % of base) : 368966.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)
-13 (-38.24 % of base) : 251564.dasm - ILGEN_0x6a2f58fb:Main():int (FullOpts)
-352 (-35.63 % of base) : 481966.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
libraries.crossgen2.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38455544 (overridden on cmd)
Total bytes of diff: 38728314 (overridden on cmd)
Total bytes of delta: 272770 (0.71 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2164 : 1735.dasm (3.34 % of base)
1912 : 178330.dasm (41.60 % of base)
806 : 76996.dasm (58.96 % of base)
806 : 138282.dasm (58.96 % of base)
764 : 217486.dasm (5.70 % of base)
607 : 66337.dasm (5.70 % of base)
593 : 128346.dasm (5.55 % of base)
568 : 38571.dasm (14.07 % of base)
563 : 29518.dasm (148.16 % of base)
546 : 1217.dasm (4.73 % of base)
510 : 2696.dasm (13.26 % of base)
501 : 64645.dasm (14.04 % of base)
498 : 177975.dasm (6.65 % of base)
483 : 245280.dasm (10.25 % of base)
479 : 138390.dasm (11.61 % of base)
479 : 77108.dasm (11.57 % of base)
454 : 77081.dasm (77.08 % of base)
454 : 138367.dasm (77.08 % of base)
440 : 226445.dasm (52.01 % of base)
432 : 216354.dasm (10.48 % of base)
Top file improvements (bytes):
-304 : 37842.dasm (-1.18 % of base)
-246 : 153047.dasm (-9.18 % of base)
-246 : 234230.dasm (-9.18 % of base)
-200 : 820.dasm (-1.82 % of base)
-181 : 191719.dasm (-18.23 % of base)
-181 : 157061.dasm (-18.23 % of base)
-178 : 62884.dasm (-20.63 % of base)
-178 : 125306.dasm (-20.63 % of base)
-177 : 100262.dasm (-34.24 % of base)
-165 : 83160.dasm (-8.75 % of base)
-165 : 142751.dasm (-8.75 % of base)
-161 : 128769.dasm (-27.33 % of base)
-161 : 66841.dasm (-27.33 % of base)
-155 : 115104.dasm (-7.81 % of base)
-142 : 100227.dasm (-31.77 % of base)
-132 : 244725.dasm (-11.06 % of base)
-130 : 62755.dasm (-22.81 % of base)
-130 : 125214.dasm (-22.81 % of base)
-128 : 244730.dasm (-7.31 % of base)
-126 : 246682.dasm (-5.10 % of base)
74 total files with Code Size differences (36 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
2164 (3.34 % of base) : 1735.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
1912 (41.60 % of base) : 178330.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
806 (58.96 % of base) : 76996.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
806 (58.96 % of base) : 138282.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
764 (5.70 % of base) : 217486.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
607 (5.70 % of base) : 66337.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)
593 (5.55 % of base) : 128346.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)
568 (14.07 % of base) : 38571.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMostSpecific(System.Reflection.MethodBase,System.Reflection.MethodBase,int[],System.Object[],ubyte,int,int,System.Object[]):int:this (FullOpts)
563 (148.16 % of base) : 29518.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
546 (4.73 % of base) : 1217.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)
510 (13.26 % of base) : 2696.dasm - <StartupCode$FSharp-Core>.$Quotations:eq@237(Microsoft.FSharp.Quotations.Tree,Microsoft.FSharp.Quotations.Tree):ubyte (FullOpts)
501 (14.04 % of base) : 64645.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetSemanticSymbols(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.Binder,int,byref,byref,byref):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
498 (6.65 % of base) : 177975.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
483 (10.25 % of base) : 245280.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
479 (11.61 % of base) : 138390.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
479 (11.57 % of base) : 77108.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseExpressionContinued(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax,uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
454 (77.08 % of base) : 77081.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
454 (77.08 % of base) : 138367.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
440 (52.01 % of base) : 226445.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
432 (10.48 % of base) : 216354.dasm - System.Xml.Schema.Preprocessor:PreprocessRedefine(System.Xml.Schema.RedefineEntry):this (FullOpts)
Top method improvements (bytes):
-304 (-1.18 % of base) : 37842.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)
-246 (-9.18 % of base) : 153047.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
-246 (-9.18 % of base) : 234230.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
-200 (-1.82 % of base) : 820.dasm - Microsoft.FSharp.Quotations.FSharpExpr:GetLayout(ubyte):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
-181 (-18.23 % of base) : 191719.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-181 (-18.23 % of base) : 157061.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte],byref):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-178 (-20.63 % of base) : 62884.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)
-178 (-20.63 % of base) : 125306.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)
-177 (-34.24 % of base) : 100262.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundConversion:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,int,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.BoundExtendedConversionInfo,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundConversion:this (FullOpts)
-165 (-8.75 % of base) : 83160.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:MergeEquivalentTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,short,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):ubyte (FullOpts)
-165 (-8.75 % of base) : 142751.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:MergeEquivalentTypeArguments(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,short,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):ubyte (FullOpts)
-161 (-27.33 % of base) : 128769.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)
-161 (-27.33 % of base) : 66841.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)
-155 (-7.81 % of base) : 115104.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-142 (-31.77 % of base) : 100227.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator:Update(int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator:this (FullOpts)
-132 (-11.06 % of base) : 244725.dasm - System.Runtime.InteropServices.Marshalling.ComVariantMarshaller:ConvertToUnmanaged(System.Object):System.Runtime.InteropServices.Marshalling.ComVariant (FullOpts)
-130 (-22.81 % of base) : 62755.dasm - Microsoft.CodeAnalysis.CSharp.BoundFieldAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.ConstantValue,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundFieldAccess:this (FullOpts)
-130 (-22.81 % of base) : 125214.dasm - Microsoft.CodeAnalysis.CSharp.BoundFieldAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.ConstantValue,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundFieldAccess:this (FullOpts)
-128 (-7.31 % of base) : 244730.dasm - System.Runtime.InteropServices.Marshalling.ComVariantMarshaller+RefPropagate:ToUnmanaged():System.Runtime.InteropServices.Marshalling.ComVariant:this (FullOpts)
-126 (-5.10 % of base) : 246682.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:CreateLibrary(Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary,ubyte,System.Collections.Generic.Dictionary`2[System.String,Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+LibraryStub]):Internal.Microsoft.Extensions.DependencyModel.Library:this (FullOpts)
Top method regressions (percentages):
563 (148.16 % of base) : 29518.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
14 (107.69 % of base) : 113815.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
14 (107.69 % of base) : 113816.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
14 (107.69 % of base) : 113817.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
14 (107.69 % of base) : 113818.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
454 (77.08 % of base) : 77081.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
454 (77.08 % of base) : 138367.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseDesignation(ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.VariableDesignationSyntax:this (FullOpts)
23 (71.88 % of base) : 108213.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
23 (71.88 % of base) : 108219.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
273 (61.76 % of base) : 31081.dasm - System.Array+SorterObjectArray:PickPivotAndPartition(int,int):int:this (FullOpts)
806 (58.96 % of base) : 76996.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
806 (58.96 % of base) : 138282.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ScanFunctionPointerType(byref):int:this (FullOpts)
19 (55.88 % of base) : 244941.dasm - System.Numerics.BigIntegerCalculator:Gcd(System.ReadOnlySpan`1[uint],uint):uint (FullOpts)
440 (52.01 % of base) : 226445.dasm - System.Security.Cryptography.PemEncoding:WriteCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int (FullOpts)
16 (51.61 % of base) : 37225.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
415 (47.21 % of base) : 138261.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
415 (47.21 % of base) : 76975.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeArgumentList(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax],byref):this (FullOpts)
1912 (41.60 % of base) : 178330.dasm - System.Text.RegularExpressions.RegexWriter:EmitFragment(ubyte,System.Text.RegularExpressions.RegexNode,int):this (FullOpts)
411 (39.75 % of base) : 77258.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|210_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
411 (39.75 % of base) : 138539.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseFunctionPointerTypeSyntax>g__parseCallingConvention|211_1():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.FunctionPointerCallingConventionSyntax:this (FullOpts)
Top method improvements (percentages):
-177 (-34.24 % of base) : 100262.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundConversion:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,int,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.BoundExtendedConversionInfo,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundConversion:this (FullOpts)
-142 (-31.77 % of base) : 100227.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator:Update(int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator:this (FullOpts)
-18 (-31.03 % of base) : 120008.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExecutableStatementContext+_Closure$__:_Lambda$__2-0(ushort):ubyte:this (FullOpts)
-36 (-30.51 % of base) : 262147.dasm - System.Diagnostics.RandomNumberGenerator:Next():long:this (FullOpts)
-14 (-28.57 % of base) : 68804.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-14 (-28.57 % of base) : 130493.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:IsKeywordKind(ushort):ubyte (FullOpts)
-121 (-27.69 % of base) : 100357.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)
-161 (-27.33 % of base) : 128769.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)
-161 (-27.33 % of base) : 66841.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 (-26.87 % of base) : 138113.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-18 (-26.87 % of base) : 76824.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsSomeWord(ushort):ubyte (FullOpts)
-100 (-26.67 % of base) : 62532.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)
-100 (-26.67 % of base) : 125025.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)
-92 (-26.36 % of base) : 101210.dasm - Microsoft.CodeAnalysis.VisualBasic.UnboundLambda:Update(Microsoft.CodeAnalysis.VisualBasic.Binder,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+UnboundLambdaBindingCache):Microsoft.CodeAnalysis.VisualBasic.UnboundLambda:this (FullOpts)
-14 (-25.45 % of base) : 221517.dasm - System.Xml.XmlConverter:IsWhitespace(ushort):ubyte (FullOpts)
-106 (-25.36 % of base) : 11501.dasm - System.Guid:op_GreaterThan(System.Guid,System.Guid):ubyte (FullOpts)
-106 (-25.36 % of base) : 11499.dasm - System.Guid:op_LessThan(System.Guid,System.Guid):ubyte (FullOpts)
-106 (-25.18 % of base) : 11502.dasm - System.Guid:op_GreaterThanOrEqual(System.Guid,System.Guid):ubyte (FullOpts)
-106 (-25.18 % of base) : 11500.dasm - System.Guid:op_LessThanOrEqual(System.Guid,System.Guid):ubyte (FullOpts)
-24 (-24.49 % of base) : 37980.dasm - Microsoft.VisualBasic.FileIO.FileSystem:OpenTextFieldParser(System.String,int[]):Microsoft.VisualBasic.FileIO.TextFieldParser (FullOpts)
libraries.pmi.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 54873751 (overridden on cmd)
Total bytes of diff: 55485181 (overridden on cmd)
Total bytes of delta: 611430 (1.11 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
3628 : 136160.dasm (95.45 % of base)
1719 : 145529.dasm (42.03 % of base)
1703 : 278300.dasm (51.83 % of base)
1545 : 153739.dasm (32.16 % of base)
1476 : 333194.dasm (68.27 % of base)
1359 : 135634.dasm (17.00 % of base)
1305 : 217626.dasm (10.18 % of base)
1273 : 65978.dasm (32.62 % of base)
1222 : 175540.dasm (36.92 % of base)
1204 : 267052.dasm (472.16 % of base)
1204 : 267190.dasm (472.16 % of base)
1187 : 59233.dasm (19.46 % of base)
1159 : 131472.dasm (6.49 % of base)
1105 : 59693.dasm (12.68 % of base)
1038 : 267133.dasm (573.48 % of base)
1032 : 135479.dasm (28.49 % of base)
1031 : 267210.dasm (531.44 % of base)
1017 : 278157.dasm (30.85 % of base)
997 : 330813.dasm (17.59 % of base)
987 : 247402.dasm (37.06 % of base)
Top file improvements (bytes):
-915 : 62920.dasm (-8.07 % of base)
-790 : 131295.dasm (-18.25 % of base)
-778 : 131513.dasm (-3.39 % of base)
-706 : 138367.dasm (-7.39 % of base)
-572 : 90197.dasm (-10.98 % of base)
-482 : 307450.dasm (-5.80 % of base)
-306 : 224727.dasm (-2.20 % of base)
-292 : 215787.dasm (-55.62 % of base)
-292 : 181757.dasm (-55.62 % of base)
-289 : 274059.dasm (-2.56 % of base)
-284 : 154713.dasm (-12.84 % of base)
-277 : 333341.dasm (-5.23 % of base)
-262 : 307277.dasm (-6.51 % of base)
-256 : 59333.dasm (-11.71 % of base)
-255 : 157701.dasm (-13.30 % of base)
-206 : 303018.dasm (-6.42 % of base)
-206 : 221563.dasm (-6.42 % of base)
-205 : 137574.dasm (-35.28 % of base)
-205 : 30130.dasm (-27.74 % of base)
-205 : 124981.dasm (-27.74 % of base)
78 total files with Code Size differences (39 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
3628 (95.45 % of base) : 136160.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)
1719 (42.03 % of base) : 145529.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.DeclarationContext:ProcessSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this (FullOpts)
1703 (51.83 % of base) : 278300.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:ToString():System.String:this (FullOpts)
1545 (32.16 % of base) : 153739.dasm - Microsoft.CodeAnalysis.VisualBasic.IteratorRewriter:EnsureAllSymbolsAndSignature():ubyte:this (FullOpts)
1476 (68.27 % of base) : 333194.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
1359 (17.00 % of base) : 135634.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:GenerateVarianceDiagnosticsForTypeRecursively(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,short,int,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol+VarianceDiagnosticsTargetTypeParameter,int,byref):this (FullOpts)
1305 (10.18 % of base) : 217626.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1273 (32.62 % of base) : 65978.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1222 (36.92 % of base) : 175540.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)
1204 (472.16 % of base) : 267190.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1204 (472.16 % of base) : 267052.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
1187 (19.46 % of base) : 59233.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
1159 (6.49 % of base) : 131472.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)
1105 (12.68 % of base) : 59693.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
1038 (573.48 % of base) : 267133.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(ulong):this (FullOpts)
1032 (28.49 % of base) : 135479.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceDelegateMethodSymbol:MakeDelegateMembers(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
1031 (531.44 % of base) : 267210.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(ulong):this (FullOpts)
1017 (30.85 % of base) : 278157.dasm - ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall:ToString():System.String:this (FullOpts)
997 (17.59 % of base) : 330813.dasm - System.Globalization.FormatProvider+Number:NumberToStringFormat(byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
987 (37.06 % of base) : 247402.dasm - System.Xml.Xsl.XmlQueryTypeFactory:.cctor() (FullOpts)
Top method improvements (bytes):
-915 (-8.07 % of base) : 62920.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.CSharp.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
-790 (-18.25 % of base) : 131295.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)
-778 (-3.39 % of base) : 131513.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
-706 (-7.39 % of base) : 138367.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTreeVisitor`2[double,System.Nullable`1[int]]:VisitInternal(Microsoft.CodeAnalysis.VisualBasic.BoundNode,double):System.Nullable`1[int]:this (FullOpts)
-572 (-10.98 % of base) : 90197.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-482 (-5.80 % of base) : 307450.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-306 (-2.20 % of base) : 224727.dasm - System.DirectoryServices.ActiveDirectory.Utils:GetReplicaList(System.DirectoryServices.ActiveDirectory.DirectoryContext,System.String,System.String,ubyte,ubyte,ubyte):System.Collections.ArrayList (FullOpts)
-292 (-55.62 % of base) : 215787.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-292 (-55.62 % of base) : 181757.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-289 (-2.56 % of base) : 274059.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
-284 (-12.84 % of base) : 154713.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-277 (-5.23 % of base) : 333341.dasm - System.Security.Cryptography.Xml.KeyInfoX509Data:GetXml(System.Xml.XmlDocument):System.Xml.XmlElement:this (FullOpts)
-262 (-6.51 % of base) : 307277.dasm - System.Formats.Asn1.AsnDecoder:ParseGeneralizedTime(int,System.ReadOnlySpan`1[ubyte]):System.DateTimeOffset (FullOpts)
-256 (-11.71 % of base) : 59333.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldConstantNumericConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
-255 (-13.30 % of base) : 157701.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)
-206 (-6.42 % of base) : 303018.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
-206 (-6.42 % of base) : 221563.dasm - System.Data.Common.MultipartIdentifier:ParseMultipartIdentifier(System.String,System.String,System.String,ushort,int,ubyte,System.String,ubyte):System.String[] (FullOpts)
-205 (-35.28 % of base) : 137574.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundAggregateClause:Update(Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Binder],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundAggregateClause:this (FullOpts)
-205 (-27.74 % of base) : 30130.dasm - System.Runtime.Intrinsics.Vector512:Dot[long](System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):long (FullOpts)
-205 (-27.74 % of base) : 124981.dasm - System.Runtime.Intrinsics.Vector512:Dot[long](System.Runtime.Intrinsics.Vector512`1[long],System.Runtime.Intrinsics.Vector512`1[long]):long (FullOpts)
Top method regressions (percentages):
1038 (573.48 % of base) : 267133.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(ulong):this (FullOpts)
1031 (531.44 % of base) : 267210.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(ulong):this (FullOpts)
1204 (472.16 % of base) : 267190.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1204 (472.16 % of base) : 267052.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
27 (270.00 % of base) : 145831.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsValidStatementTerminator(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
27 (270.00 % of base) : 145837.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:MustEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken):ubyte:this (FullOpts)
20 (200.00 % of base) : 61005.dasm - Microsoft.CodeAnalysis.CSharp.Conversion:get_IsPointer():ubyte:this (FullOpts)
18 (200.00 % of base) : 153282.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDeclareStatementKeyword(ushort):ubyte (FullOpts)
18 (200.00 % of base) : 153283.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsDelegateStatementKeyword(ushort):ubyte (FullOpts)
18 (200.00 % of base) : 153284.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsLambdaHeaderKeyword(ushort):ubyte (FullOpts)
18 (200.00 % of base) : 153285.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsMethodStatementKeyword(ushort):ubyte (FullOpts)
174 (110.13 % of base) : 146149.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:StartsXmlDoc(int):ubyte:this (FullOpts)
32 (103.23 % of base) : 92485.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
30 (96.77 % of base) : 133887.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:get_MarshallingCharSet():int:this (FullOpts)
3628 (95.45 % of base) : 136160.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)
20 (74.07 % of base) : 20186.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
125 (71.02 % of base) : 240476.dasm - System.Xml.XmlUtf8RawTextWriter:EncodeChar(byref,ulong,byref):this (FullOpts)
64 (69.57 % of base) : 240475.dasm - System.Xml.XmlUtf8RawTextWriter:InvalidXmlChar(int,ulong,ubyte):ulong:this (FullOpts)
1476 (68.27 % of base) : 333194.dasm - System.Security.Cryptography.Xml.DSAKeyValue:LoadXml(System.Xml.XmlElement):this (FullOpts)
229 (58.57 % of base) : 86158.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataExpression(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataExpression:this (FullOpts)
Top method improvements (percentages):
-292 (-55.62 % of base) : 215787.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-292 (-55.62 % of base) : 181757.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock:TryOptimizeBranchToNextOrRet(Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock,byref):ubyte:this (FullOpts)
-53 (-43.44 % of base) : 331100.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],System.IFormatProvider,byref):ubyte (FullOpts)
-6 (-42.86 % of base) : 308539.dasm - System.IO.Compression.DeflateManagedStream:PurgeBuffers(ubyte):this (FullOpts)
-79 (-42.70 % of base) : 331099.dasm - System.Numerics.BigInteger:Parse(System.ReadOnlySpan`1[ushort],System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-53 (-41.41 % of base) : 330895.dasm - System.Numerics.BigInteger:TryParse(System.ReadOnlySpan`1[ushort],byref):ubyte (FullOpts)
-16 (-37.21 % of base) : 20190.dasm - System.Data.ExpressionNode:IsNumeric(int):ubyte (FullOpts)
-205 (-35.28 % of base) : 137574.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundAggregateClause:Update(Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Binder],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundAggregateClause:this (FullOpts)
-106 (-35.10 % of base) : 330888.dasm - System.Numerics.BigInteger:Parse(System.String):System.Numerics.BigInteger (FullOpts)
-194 (-35.08 % of base) : 137760.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundDoLoopStatement:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.LabelSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundDoLoopStatement:this (FullOpts)
-181 (-34.48 % of base) : 137723.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundConversion:Update(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,int,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.BoundExtendedConversionInfo,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundConversion:this (FullOpts)
-36 (-34.29 % of base) : 236381.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type,System.Collections.Generic.IEnumerable`1[System.Type]):this (FullOpts)
-36 (-33.33 % of base) : 236378.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:.ctor(System.Type):this (FullOpts)
-116 (-32.77 % of base) : 183479.dasm - Newtonsoft.Json.JsonTextReader:BigIntegerParse(System.String,System.Globalization.CultureInfo):System.Object (FullOpts)
-116 (-32.49 % of base) : 21560.dasm - System.Data.Common.BigIntegerStorage:ConvertXmlToObject(System.String):System.Object:this (FullOpts)
-105 (-32.41 % of base) : 330890.dasm - System.Numerics.BigInteger:Parse(System.String,System.IFormatProvider):System.Numerics.BigInteger (FullOpts)
-7 (-31.82 % of base) : 325535.dasm - System.Numerics.Tensors.TensorPrimitives+MaxMagnitudeOperator`1[ubyte]:Invoke(ubyte,ubyte):ubyte (FullOpts)
-7 (-31.82 % of base) : 325527.dasm - System.Numerics.Tensors.TensorPrimitives+MaxPropagateNaNOperator`1[ubyte]:Invoke(ubyte,ubyte):ubyte (FullOpts)
-142 (-31.49 % of base) : 137682.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator:Update(int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundBinaryOperator:this (FullOpts)
-56 (-30.77 % of base) : 331097.dasm - System.Numerics.BigInteger:TryParse(System.String,System.IFormatProvider,byref):ubyte (FullOpts)
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 41283781 (overridden on cmd)
Total bytes of diff: 41407580 (overridden on cmd)
Total bytes of delta: 123799 (0.30 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
568 : 72743.dasm (11.14 % of base)
518 : 59103.dasm (21.66 % of base)
320 : 1072.dasm (3.17 % of base)
301 : 8008.dasm (2.98 % of base)
296 : 40607.dasm (11.83 % of base)
296 : 41450.dasm (11.83 % of base)
295 : 77697.dasm (14.50 % of base)
294 : 90148.dasm (6.64 % of base)
292 : 95602.dasm (15.84 % of base)
278 : 90237.dasm (3.97 % of base)
274 : 83817.dasm (17.69 % of base)
272 : 90290.dasm (6.29 % of base)
261 : 107798.dasm (6.90 % of base)
232 : 52715.dasm (14.13 % of base)
232 : 90340.dasm (5.29 % of base)
221 : 109250.dasm (5.34 % of base)
221 : 42913.dasm (4.74 % of base)
218 : 62355.dasm (10.05 % of base)
216 : 3779.dasm (2.75 % of base)
199 : 26951.dasm (9.06 % of base)
Top file improvements (bytes):
-872 : 108693.dasm (-38.96 % of base)
-716 : 103741.dasm (-22.35 % of base)
-531 : 84268.dasm (-38.20 % of base)
-515 : 43685.dasm (-37.05 % of base)
-515 : 61884.dasm (-37.10 % of base)
-515 : 95562.dasm (-37.10 % of base)
-380 : 103859.dasm (-37.40 % of base)
-380 : 116362.dasm (-37.40 % of base)
-380 : 39780.dasm (-37.40 % of base)
-380 : 71760.dasm (-37.40 % of base)
-380 : 92729.dasm (-37.40 % of base)
-380 : 95459.dasm (-37.40 % of base)
-362 : 1402.dasm (-29.82 % of base)
-353 : 2195.dasm (-29.08 % of base)
-352 : 32895.dasm (-35.63 % of base)
-352 : 55994.dasm (-35.63 % of base)
-352 : 62189.dasm (-35.63 % of base)
-352 : 114002.dasm (-35.63 % of base)
-341 : 1403.dasm (-47.49 % of base)
-341 : 2196.dasm (-47.49 % of base)
62 total files with Code Size differences (26 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
568 (11.14 % of base) : 72743.dasm - System.Reflection.Emit.Tests.ILGeneratorEmit5:<MaxStackOverflowTest>g__GetCode|0_1(int):System.Reflection.MethodInfo (Tier1-OSR)
518 (21.66 % of base) : 59103.dasm - System.Buffers.Text.Base64:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (Instrumented Tier1)
320 (3.17 % of base) : 1072.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Instrumented Tier1)
301 (2.98 % of base) : 8008.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Instrumented Tier1)
296 (11.83 % of base) : 40607.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Instrumented Tier1)
296 (11.83 % of base) : 41450.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Instrumented Tier1)
295 (14.50 % of base) : 77697.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (Tier1-OSR)
294 (6.64 % of base) : 90148.dasm - (dynamicClass):ReadTupleOfintintintintintintintTupleOfintcd6ORBnmFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
292 (15.84 % of base) : 95602.dasm - System.Security.AccessControl.CommonAcl:QuickSort(int,int,ubyte):this (Tier1-OSR)
278 (3.97 % of base) : 90237.dasm - (dynamicClass):ReadWithNullablesFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
274 (17.69 % of base) : 83817.dasm - System.UInt128:<op_Division>g__DivideSlow|111_2(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)
272 (6.29 % of base) : 90290.dasm - (dynamicClass):ReadTypeWithAllPrimitivePropertiesFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
261 (6.90 % of base) : 107798.dasm - System.Text.DBCSCodePageEncoding:ReadBestFitTable():this (Tier1-OSR)
232 (5.29 % of base) : 90340.dasm - (dynamicClass):ReadDMA_1FromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
232 (14.13 % of base) : 52715.dasm - System.Net.Http.Headers.RangeHeaderValue:ToString():System.String:this (Tier0-FullOpts)
221 (4.74 % of base) : 42913.dasm - System.IO.Tests.StandaloneStreamConformanceTests+<Seek_RandomWalk_ReadConsistency>d__33:MoveNext():this (Tier1-OSR)
221 (5.34 % of base) : 109250.dasm - System.Text.RegularExpressions.RegexNode:ValidateFinalTreeInvariants():this (Tier1-OSR)
218 (10.05 % of base) : 62355.dasm - System.String:SplitWithPostProcessing(System.ReadOnlySpan`1[int],System.ReadOnlySpan`1[int],int,int,int):System.String[]:this (Instrumented Tier1)
216 (2.75 % of base) : 3779.dasm - Microsoft.DotNet.RemoteExecutor.RemoteInvokeHandle:Dispose(ubyte):this (Tier0-FullOpts)
199 (9.06 % of base) : 26951.dasm - (dynamicClass):ReadRectangleFFromXml(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
Top method improvements (bytes):
-872 (-38.96 % of base) : 108693.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-716 (-22.35 % of base) : 103741.dasm - System.Xml.DocumentXPathNodeIterator_ElemDescendants:MoveNext():ubyte:this (Tier1-OSR)
-531 (-38.20 % of base) : 84268.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-515 (-37.05 % of base) : 43685.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-515 (-37.10 % of base) : 61884.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-515 (-37.10 % of base) : 95562.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-380 (-37.40 % of base) : 103859.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 116362.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 39780.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 71760.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 92729.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 95459.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-362 (-29.82 % of base) : 1402.dasm - System.IO.Strategies.OSFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (Instrumented Tier1)
-353 (-29.08 % of base) : 2195.dasm - System.IO.Strategies.OSFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (Instrumented Tier1)
-352 (-35.63 % of base) : 32895.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-352 (-35.63 % of base) : 55994.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-352 (-35.63 % of base) : 62189.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-352 (-35.63 % of base) : 114002.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-341 (-47.49 % of base) : 1403.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
-341 (-47.49 % of base) : 2196.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
Top method regressions (percentages):
50 (24.15 % of base) : 40099.dasm - System.RuntimeType:GetEnumUnderlyingType():System.Type:this (Instrumented Tier1)
50 (24.15 % of base) : 41455.dasm - System.RuntimeType:GetEnumUnderlyingType():System.Type:this (Instrumented Tier1)
518 (21.66 % of base) : 59103.dasm - System.Buffers.Text.Base64:EncodeToUtf8(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref,byref,ubyte):int (Instrumented Tier1)
76 (19.64 % of base) : 86744.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
274 (17.69 % of base) : 83817.dasm - System.UInt128:<op_Division>g__DivideSlow|111_2(System.UInt128,System.UInt128):System.UInt128 (Tier0-FullOpts)
68 (17.57 % of base) : 31649.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
42 (16.47 % of base) : 3904.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
42 (16.47 % of base) : 7408.dasm - System.Globalization.CompareInfo:Compare(System.String,System.String,int):int:this (Instrumented Tier1)
14 (16.47 % of base) : 115155.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (16.47 % of base) : 60043.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
14 (16.47 % of base) : 82179.dasm - System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this (Tier1)
292 (15.84 % of base) : 95602.dasm - System.Security.AccessControl.CommonAcl:QuickSort(int,int,ubyte):this (Tier1-OSR)
42 (15.27 % of base) : 71766.dasm - System.Text.StringBuilder:AssertInvariants():this (Tier1)
42 (15.27 % of base) : 94192.dasm - System.Text.StringBuilder:AssertInvariants():this (Tier1)
59 (14.53 % of base) : 2153.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_CanSeek():ubyte:this (Instrumented Tier1)
59 (14.53 % of base) : 1119.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_CanSeek():ubyte:this (Instrumented Tier1)
295 (14.50 % of base) : 77697.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (Tier1-OSR)
33 (14.22 % of base) : 24803.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:FindEntry(System.__Canon,byref):int:this (Tier1)
39 (14.18 % of base) : 87624.dasm - System.Text.StringBuilder:AssertInvariants():this (Tier1)
39 (14.18 % of base) : 113264.dasm - System.Text.StringBuilder:AssertInvariants():this (Tier1)
Top method improvements (percentages):
-341 (-47.49 % of base) : 1403.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
-341 (-47.49 % of base) : 2196.dasm - System.IO.RandomAccess:ReadAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Instrumented Tier1)
-238 (-39.34 % of base) : 41337.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)
-238 (-39.34 % of base) : 57403.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)
-872 (-38.96 % of base) : 108693.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-531 (-38.20 % of base) : 84268.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-380 (-37.40 % of base) : 103859.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 116362.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 39780.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 71760.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 92729.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-380 (-37.40 % of base) : 95459.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-515 (-37.10 % of base) : 61884.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-515 (-37.10 % of base) : 95562.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-515 (-37.05 % of base) : 43685.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-352 (-35.63 % of base) : 32895.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-352 (-35.63 % of base) : 55994.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-352 (-35.63 % of base) : 62189.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-352 (-35.63 % of base) : 114002.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:CreateFile(System.String,int,int,int,int):Microsoft.Win32.SafeHandles.SafeFileHandle (Instrumented Tier1)
-314 (-34.81 % of base) : 108931.dasm - System.Linq.Enumerable+SelectArrayIterator`2[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 112234381 (overridden on cmd)
Total bytes of diff: 113028522 (overridden on cmd)
Total bytes of delta: 794141 (0.71 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2648 : 209472.dasm (38.13 % of base)
2328 : 72668.dasm (2.46 % of base)
2280 : 72507.dasm (2.46 % of base)
2280 : 72847.dasm (2.45 % of base)
2245 : 297418.dasm (61.46 % of base)
2052 : 280109.dasm (16.66 % of base)
1992 : 282723.dasm (16.66 % of base)
1819 : 65662.dasm (47.94 % of base)
1640 : 202588.dasm (10.43 % of base)
1640 : 342120.dasm (10.43 % of base)
1483 : 77647.dasm (1.71 % of base)
1480 : 272535.dasm (16.66 % of base)
1480 : 286575.dasm (16.66 % of base)
1464 : 108470.dasm (61.08 % of base)
1416 : 79225.dasm (1.65 % of base)
1385 : 45433.dasm (13.09 % of base)
1305 : 42211.dasm (10.18 % of base)
1298 : 202472.dasm (31.33 % of base)
1291 : 274961.dasm (62.98 % of base)
1277 : 67426.dasm (33.61 % of base)
Top file improvements (bytes):
-861 : 140863.dasm (-3.36 % of base)
-861 : 143643.dasm (-3.36 % of base)
-630 : 244364.dasm (-26.14 % of base)
-622 : 141149.dasm (-1.47 % of base)
-622 : 143430.dasm (-1.47 % of base)
-615 : 233667.dasm (-21.50 % of base)
-598 : 102448.dasm (-12.55 % of base)
-598 : 102446.dasm (-12.55 % of base)
-598 : 102363.dasm (-12.58 % of base)
-598 : 102447.dasm (-12.58 % of base)
-581 : 115073.dasm (-8.92 % of base)
-552 : 237965.dasm (-11.10 % of base)
-552 : 244945.dasm (-1.76 % of base)
-552 : 222415.dasm (-1.76 % of base)
-552 : 243527.dasm (-11.10 % of base)
-540 : 314930.dasm (-9.72 % of base)
-538 : 222679.dasm (-3.57 % of base)
-538 : 245100.dasm (-3.57 % of base)
-512 : 238246.dasm (-10.26 % of base)
-512 : 243342.dasm (-10.26 % of base)
81 total files with Code Size differences (40 improved, 41 regressed), 20 unchanged.
Top method regressions (bytes):
2648 (38.13 % of base) : 209472.dasm - System.Reflection.Metadata.Tests.BlobUtilitiesTests:GetUTF8ByteCount():this (FullOpts)
2328 (2.46 % of base) : 72668.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<OrObject_TestData>d__90:MoveNext():ubyte:this (FullOpts)
2280 (2.46 % of base) : 72507.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<AndObject_TestData>d__13:MoveNext():ubyte:this (FullOpts)
2280 (2.45 % of base) : 72847.dasm - Microsoft.VisualBasic.CompilerServices.Tests.OperatorsTests+<XorObject_TestData>d__116:MoveNext():ubyte:this (FullOpts)
2245 (61.46 % of base) : 297418.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
2052 (16.66 % of base) : 280109.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)
1992 (16.66 % of base) : 282723.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)
1819 (47.94 % of base) : 65662.dasm - Microsoft.Extensions.Options.Generators.SymbolLoader:TryLoad(Microsoft.CodeAnalysis.Compilation,byref):ubyte (FullOpts)
1640 (10.43 % of base) : 202588.dasm - XmlCoreTest.Common.FilePathUtil+<GetDataFiles>d__19:MoveNext():ubyte:this (FullOpts)
1640 (10.43 % of base) : 342120.dasm - XmlCoreTest.Common.FilePathUtil+<GetDataFiles>d__19:MoveNext():ubyte:this (FullOpts)
1483 (1.71 % of base) : 77647.dasm - System.CodeDom.Compiler.Tests.CSharpCodeGeneratorTests+<GenerateCodeFromType_TestData>d__25:MoveNext():ubyte:this (FullOpts)
1480 (16.66 % of base) : 286575.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)
1480 (16.66 % of base) : 272535.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)
1464 (61.08 % of base) : 108470.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
1416 (1.65 % of base) : 79225.dasm - System.CodeDom.Compiler.Tests.CodeValidatorTests+<ValidateIdentifiers_Valid_TestData>d__0:MoveNext():ubyte:this (FullOpts)
1385 (13.09 % of base) : 45433.dasm - DryIoc.WrappersSupport:BuildSupportedWrappers():ImTools.ImMap`1[ImTools.ImMap+KValue`1[System.Type]] (FullOpts)
1305 (10.18 % of base) : 42211.dasm - System.ComponentModel.CultureInfoConverter+CultureInfoMapper:CreateMap():System.Collections.Generic.Dictionary`2[System.String,System.String] (FullOpts)
1298 (31.33 % of base) : 202472.dasm - System.Xml.XmlConvertTests.ToTypeTests:ToType56():int:this (FullOpts)
1291 (62.98 % of base) : 274961.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
1277 (33.61 % of base) : 67426.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
Top method improvements (bytes):
-861 (-3.36 % of base) : 140863.dasm - System.Globalization.Tests.CultureInfoAll+<CultureInfo_TestData>d__102:MoveNext():ubyte:this (FullOpts)
-861 (-3.36 % of base) : 143643.dasm - System.Globalization.Tests.CultureInfoAll+<CultureInfo_TestData>d__102:MoveNext():ubyte:this (FullOpts)
-630 (-26.14 % of base) : 244364.dasm - System.Tests.ByteTests:ToStringTest(ubyte,System.String,System.IFormatProvider,System.String) (FullOpts)
-622 (-1.47 % of base) : 141149.dasm - System.Globalization.Tests.CultureInfoConstructor+<Ctor_String_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-622 (-1.47 % of base) : 143430.dasm - System.Globalization.Tests.CultureInfoConstructor+<Ctor_String_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-615 (-21.50 % of base) : 233667.dasm - System.Tests.UInt128Tests:ToStringTest(System.UInt128,System.String,System.IFormatProvider,System.String) (FullOpts)
-598 (-12.55 % of base) : 102446.dasm - System.ComponentModel.Tests.TypeDescriptorTests:AddProvider_InvokeObject_GetProviderReturnsExpected():this (FullOpts)
-598 (-12.58 % of base) : 102447.dasm - System.ComponentModel.Tests.TypeDescriptorTests:AddProvider_InvokeType_GetProviderReturnsExpected():this (FullOpts)
-598 (-12.55 % of base) : 102448.dasm - System.ComponentModel.Tests.TypeDescriptorTests:AddProviderTransparent_InvokeObject_GetProviderReturnsExpected():this (FullOpts)
-598 (-12.58 % of base) : 102363.dasm - System.ComponentModel.Tests.TypeDescriptorTests:AddProviderTransparent_InvokeType_GetProviderReturnsExpected():this (FullOpts)
-581 (-8.92 % of base) : 115073.dasm - System.Diagnostics.Tests.DiagnosticSourceEventSourceBridgeTests+<>c:<TestWildCardEventName>b__13_0():this (FullOpts)
-552 (-1.76 % of base) : 244945.dasm - System.Tests.ArrayTests+<Sort_SZArray_TestData>d__159:MoveNext():ubyte:this (FullOpts)
-552 (-1.76 % of base) : 222415.dasm - System.Tests.ArrayTests+<Sort_SZArray_TestData>d__159:MoveNext():ubyte:this (FullOpts)
-552 (-11.10 % of base) : 243527.dasm - System.Tests.NumberFormatTestHelper:TryFormatNumberTest[double](double,System.String,System.IFormatProvider,System.String,ubyte) (FullOpts)
-552 (-11.10 % of base) : 237965.dasm - System.Tests.NumberFormatTestHelper:TryFormatNumberTest[float](float,System.String,System.IFormatProvider,System.String,ubyte) (FullOpts)
-540 (-9.72 % of base) : 314930.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-538 (-3.57 % of base) : 222679.dasm - System.Tests.ArrayTests+<Copy_SZArray_Reliable_TestData>d__56:MoveNext():ubyte:this (FullOpts)
-538 (-3.57 % of base) : 245100.dasm - System.Tests.ArrayTests+<Copy_SZArray_Reliable_TestData>d__56:MoveNext():ubyte:this (FullOpts)
-512 (-10.26 % of base) : 238246.dasm - System.Tests.NumberFormatTestHelper:TryFormatNumberTest[ulong](ulong,System.String,System.IFormatProvider,System.String,ubyte) (FullOpts)
-512 (-10.26 % of base) : 243342.dasm - System.Tests.NumberFormatTestHelper:TryFormatNumberTest[ulong](ulong,System.String,System.IFormatProvider,System.String,ubyte) (FullOpts)
Top method regressions (percentages):
1034 (571.27 % of base) : 294318.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(ulong):this (FullOpts)
1027 (529.38 % of base) : 273496.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(ulong):this (FullOpts)
1209 (474.12 % of base) : 170005.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(long):this (FullOpts)
1209 (474.12 % of base) : 272565.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(long):this (FullOpts)
398 (100.51 % of base) : 170479.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetLatinTextInput(int,int):Xunit.TheoryData (FullOpts)
687 (74.76 % of base) : 298458.dasm - System.Text.Json.Tests.JsonEncodedTextTests:EqualsTest() (FullOpts)
20 (74.07 % of base) : 106771.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
20 (74.07 % of base) : 113734.dasm - System.Data.ExpressionNode:IsSigned(int):ubyte (FullOpts)
238 (73.91 % of base) : 147736.dasm - System.IO.Tests.FileSystemTest:get_TrailingSeparators():Xunit.TheoryData`1[System.String] (FullOpts)
1082 (69.63 % of base) : 15086.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.QueryExpressionFormattingRule:AddAnchorIndentationOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
398 (66.44 % of base) : 170513.dasm - System.Net.Http.Json.Functional.Tests.TranscodingReadStreamTest:GetUnicodeText(int):Xunit.TheoryData (FullOpts)
737 (64.93 % of base) : 198526.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
1291 (62.98 % of base) : 274961.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:ClassWithPropertyNamePermutationsSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.PropertyNameTests+ClassWithPropertyNamePermutations):this (FullOpts)
2245 (61.46 % of base) : 297418.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests:CreatingNestedJsonArray() (FullOpts)
1464 (61.08 % of base) : 108470.dasm - System.Data.Tests.DataSetTest2:ParentDataTableSchema():this (FullOpts)
921 (58.96 % of base) : 206309.dasm - System.Reflection.Emit.Tests.MethodBuilderDefineParameter:DefineParameter_AllAttributes():this (FullOpts)
359 (57.81 % of base) : 269283.dasm - System.Text.Json.WriteStack:PropertyPath():System.String:this (FullOpts)
333 (57.12 % of base) : 68551.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
735 (55.39 % of base) : 198136.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime) (FullOpts)
601 (52.86 % of base) : 210162.dasm - System.Reflection.Metadata.Ecma335.Tests.MetadataBuilderTests:ValidateLocalScopeTable():this (FullOpts)
Top method improvements (percentages):
-258 (-99.61 % of base) : 240530.dasm - System.Tests.SingleTests_GenericMath:IsPow2Test() (FullOpts)
-49 (-98.00 % of base) : 217026.dasm - System.IO.Tests.PathTests:GetDirectoryName_NullReturnsNull():this (FullOpts)
-45 (-97.83 % of base) : 209771.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareEntityHandles():this (FullOpts)
-45 (-97.83 % of base) : 209772.dasm - System.Reflection.Metadata.Tests.HandleComparerTests:CompareHandles():this (FullOpts)
-286 (-82.90 % of base) : 223758.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsCanonicalTest() (FullOpts)
-261 (-56.74 % of base) : 250503.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Equality():this (FullOpts)
-283 (-56.49 % of base) : 250500.dasm - System.Security.Cryptography.Cose.Tests.CoseHeaderLabelTests:CoseHeaderLabel_op_Inequality():this (FullOpts)
-261 (-51.58 % of base) : 223766.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsComplexNumberTest() (FullOpts)
-241 (-50.63 % of base) : 223649.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsZeroTest() (FullOpts)
-88 (-40.74 % of base) : 224510.dasm - System.Numerics.Tests.parseTest+<>c:<Parse_Hex32Bits>b__7_0():this (FullOpts)
-209 (-39.07 % of base) : 223658.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeTest() (FullOpts)
-130 (-39.04 % of base) : 218533.dasm - System.Runtime.InteropServices.Tests.GetExceptionCodeTests:GetExceptionCode_NormalExceptionInsideCatch_ReturnsExpected(int):this (FullOpts)
-209 (-37.66 % of base) : 223660.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsRealNumberTest() (FullOpts)
-130 (-36.41 % of base) : 218537.dasm - System.Runtime.InteropServices.Tests.GetExceptionCodeTests:GetExceptionCode_ComExceptionInsideCatch_ReturnsExpected(int):this (FullOpts)
-184 (-35.73 % of base) : 223849.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsImaginaryNumberTest() (FullOpts)
-169 (-35.58 % of base) : 223821.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsNegativeInfinityTest() (FullOpts)
-169 (-35.58 % of base) : 223789.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsPositiveInfinityTest() (FullOpts)
-113 (-34.35 % of base) : 224140.dasm - System.Numerics.Tests.ToStringTest+<>c__DisplayClass22_0:<RunFormatScientificNotationToBigIntegerThrowsException>b__0():System.Object:this (FullOpts)
-145 (-33.41 % of base) : 150403.dasm - System.IO.Packaging.PartBasedPackageProperties:WriteXmlStartTagsForPackageProperties():this (FullOpts)
-169 (-32.82 % of base) : 223598.dasm - System.Numerics.Tests.ComplexTests_GenericMath:IsPositiveTest() (FullOpts)
realworld.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11552376 (overridden on cmd)
Total bytes of diff: 11767581 (overridden on cmd)
Total bytes of delta: 215205 (1.86 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
2263 : 14577.dasm (6.90 % of base)
1946 : 16362.dasm (41.67 % of base)
1770 : 14317.dasm (54.18 % of base)
1598 : 28955.dasm (61.46 % of base)
1428 : 11587.dasm (11.89 % of base)
1277 : 28708.dasm (33.61 % of base)
1150 : 12041.dasm (10.89 % of base)
1096 : 9069.dasm (24.30 % of base)
1078 : 16688.dasm (19.00 % of base)
1044 : 23826.dasm (18.16 % of base)
1033 : 5267.dasm (12.13 % of base)
1017 : 1244.dasm (23.86 % of base)
999 : 5156.dasm (16.84 % of base)
942 : 34484.dasm (5.64 % of base)
913 : 25097.dasm (7.40 % of base)
898 : 1226.dasm (30.99 % of base)
826 : 35906.dasm (31.37 % of base)
825 : 9837.dasm (4.20 % of base)
769 : 13912.dasm (8.44 % of base)
742 : 3364.dasm (5.65 % of base)
Top file improvements (bytes):
-657 : 1391.dasm (-4.27 % of base)
-266 : 1363.dasm (-5.21 % of base)
-239 : 1117.dasm (-4.69 % of base)
-236 : 1364.dasm (-2.54 % of base)
-188 : 27772.dasm (-10.44 % of base)
-184 : 15918.dasm (-10.97 % of base)
-157 : 9391.dasm (-4.51 % of base)
-151 : 12525.dasm (-3.75 % of base)
-146 : 29617.dasm (-8.99 % of base)
-139 : 27959.dasm (-22.13 % of base)
-135 : 28092.dasm (-16.15 % of base)
-133 : 30720.dasm (-10.62 % of base)
-126 : 24152.dasm (-9.54 % of base)
-125 : 25256.dasm (-2.06 % of base)
-121 : 24259.dasm (-3.19 % of base)
-119 : 37598.dasm (-18.92 % of base)
-118 : 27817.dasm (-9.18 % of base)
-117 : 29659.dasm (-12.99 % of base)
-117 : 1232.dasm (-2.57 % of base)
-115 : 10452.dasm (-3.72 % of base)
85 total files with Code Size differences (40 improved, 45 regressed), 20 unchanged.
Top method regressions (bytes):
2263 (6.90 % of base) : 14577.dasm - FSharp.Compiler.CompilerDiagnostics:OutputExceptionR@597(System.Text.StringBuilder,ubyte,System.Text.StringBuilder,System.Exception) (FullOpts)
1946 (41.67 % of base) : 16362.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponentPostProcessor:CopyBlocksToColorBuffer(int):this (FullOpts)
1770 (54.18 % of base) : 14317.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)
1598 (61.46 % of base) : 28955.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
1428 (11.89 % of base) : 11587.dasm - FSharp.Compiler.AugmentWithHashCompare:CheckAugmentationAttribs(ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,FSharp.Compiler.TypedTree+Entity) (FullOpts)
1277 (33.61 % of base) : 28708.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
1150 (10.89 % of base) : 12041.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckExprOp(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+TOp,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
1096 (24.30 % of base) : 9069.dasm - FSharp.Compiler.CheckExpressions:TcConst(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.Syntax.SynConst):FSharp.Compiler.TypedTree+Const (FullOpts)
1078 (19.00 % of base) : 16688.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)
1044 (18.16 % of base) : 23826.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
1033 (12.13 % of base) : 5267.dasm - FSharp.Compiler.CompilerDiagnostics:RangeFromException@79(System.Exception):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range] (FullOpts)
1017 (23.86 % of base) : 1244.dasm - BepuPhysics.Trees.Tree:GetOverlaps[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+IntertreeOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref):this (FullOpts)
999 (16.84 % of base) : 5156.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:rulesForBothSoftWhiteAndHardWhite(FSharp.Compiler.LexFilter+TokenTup):ubyte:this (FullOpts)
942 (5.64 % of base) : 34484.dasm - System.Management.Automation.Runspaces.InitialSessionState:get_BuiltInAliases():System.Management.Automation.Runspaces.SessionStateAliasEntry[] (FullOpts)
913 (7.40 % of base) : 25097.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
898 (30.99 % of base) : 1226.dasm - BepuPhysics.Trees.Tree:GetOverlapsBetweenDifferentNodes[BepuPhysics.CollisionDetection.CollidableOverlapFinder`1+SelfOverlapHandler[DemoBenchmarks.ShapePileBenchmark+DemoNarrowPhaseCallbacks]](byref,byref,byref):this (FullOpts)
826 (31.37 % of base) : 35906.dasm - System.Management.Automation.Runspaces.PowerShellCore_Format_Ps1Xml+<ViewsOf_System_Management_Automation_CommandParameterSetInfo>d__34:MoveNext():ubyte:this (FullOpts)
825 (4.20 % of base) : 9837.dasm - FSharp.Compiler.ConstraintSolver+SolveMemberConstraint@1402-8:Invoke(Microsoft.FSharp.Core.Unit):FSharp.Compiler.ErrorLogger+OperationResult`1[FSharp.Compiler.ConstraintSolver+TraitConstraintSolution]:this (FullOpts)
769 (8.44 % of base) : 13912.dasm - FSharp.Compiler.ConstraintSolver:ReportNoCandidatesError[System.__Canon,System.__Canon](FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,int,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte]):FSharp.Compiler.ErrorLogger+OperationResult`1[System.__Canon] (FullOpts)
742 (5.65 % of base) : 3364.dasm - FSharp.Compiler.FxResolver:.ctor(ubyte,System.String,ubyte,ubyte,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.String]):this (FullOpts)
Top method improvements (bytes):
-657 (-4.27 % of base) : 1391.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-266 (-5.21 % of base) : 1363.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-239 (-4.69 % of base) : 1117.dasm - BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester:Test(byref,byref,byref,byref,byref,byref,byref,byref,byref,byref):this (FullOpts)
-236 (-2.54 % of base) : 1364.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
-188 (-10.44 % of base) : 27772.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckRestrictedTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-184 (-10.97 % of base) : 15918.dasm - SixLabors.ImageSharp.Benchmarks.Codecs.DecodeFilteredPng:ReadImages():this (FullOpts)
-157 (-4.51 % of base) : 9391.dasm - FSharp.Compiler.CheckExpressions:TcCtorItemThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.NameResolution+Item,System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Infos+MethInfo],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+AfterResolution,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-151 (-3.75 % of base) : 12525.dasm - FSharp.Compiler.Parser:tryMkSynMemberDefnMember@1863(ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynReturnInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynPat,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynMemberKind,FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList],FSharp.Compiler.Text.Range,FSharp.Compiler.Xml.PreXmlDoc,Microsoft.FSharp.Core.FSharpRef`1[ubyte],Microsoft.FSharp.Core.FSharpRef`1[ubyte],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.PropertyKeyword],ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList],System.Tuple`2[FSharp.Compiler.Syntax.SynPat,FSharp.Compiler.Text.Range],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynReturnInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Text.Range],FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberDefn] (FullOpts)
-146 (-8.99 % of base) : 29617.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindComplexElementInitializerExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundObjectOrCollectionValuePlaceholder):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-139 (-22.13 % of base) : 27959.dasm - Microsoft.CodeAnalysis.CSharp.BoundFieldAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.ConstantValue,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundFieldAccess:this (FullOpts)
-135 (-16.15 % of base) : 28092.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)
-133 (-10.62 % of base) : 30720.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckLocalRefEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundLocal,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-126 (-9.54 % of base) : 24152.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAttributeData:<GetTargetAttributeSignatureIndex>g__matches|28_0(ubyte[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref):ubyte:this (FullOpts)
-125 (-2.06 % of base) : 25256.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-121 (-3.19 % of base) : 24259.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentOutboundAssignmentsAndPostConditions(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.NullableWalker+CompareExchangeInfo):this (FullOpts)
-119 (-18.92 % of base) : 37598.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-118 (-9.18 % of base) : 27817.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromEqualsMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]):this (FullOpts)
-117 (-2.57 % of base) : 1232.dasm - BepuPhysics.CollisionDetection.DepthRefiner`6[BepuPhysics.Collidables.ConvexHull,BepuPhysics.Collidables.ConvexHullWide,BepuPhysics.Collidables.ConvexHullSupportFinder,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder]:GetNextNormal[BepuPhysics.CollisionDetection.DepthRefiner`6+HasNoNewSupport[BepuPhysics.Collidables.ConvexHull,BepuPhysics.Collidables.ConvexHullWide,BepuPhysics.Collidables.ConvexHullSupportFinder,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder]](byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
-117 (-12.99 % of base) : 29659.dasm - Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:Update(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer:this (FullOpts)
-115 (-3.72 % of base) : 10452.dasm - FSharp.Compiler.CheckExpressions:TcMethodItemThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.NameResolution+Item,System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Infos+MethInfo],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+AfterResolution,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
Top method regressions (percentages):
1598 (61.46 % of base) : 28955.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<LearnFromDecisionDag>g__gotoNodeWithCurrentState|449_4(Microsoft.CodeAnalysis.CSharp.BoundDecisionDagNode,ubyte,byref):this (FullOpts)
312 (56.62 % of base) : 31725.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:MarkReachableFromTry(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock],Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock) (FullOpts)
1770 (54.18 % of base) : 14317.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)
359 (50.85 % of base) : 27032.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
232 (48.33 % of base) : 28855.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)
140 (48.28 % of base) : 2676.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
188 (47.12 % of base) : 12932.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
703 (42.22 % of base) : 30087.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindBinaryPattern(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryPatternSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundPattern:this (FullOpts)
1946 (41.67 % of base) : 16362.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.JpegComponentPostProcessor:CopyBlocksToColorBuffer(int):this (FullOpts)
326 (39.00 % of base) : 33395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataNamedArgument(System.String,Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.IMetadataNamedArgument:this (FullOpts)
115 (38.46 % of base) : 636.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
150 (36.76 % of base) : 539.dasm - System.String:Concat(System.String,System.String,System.String,System.String):System.String (FullOpts)
534 (36.38 % of base) : 35763.dasm - System.Management.Automation.Runspaces.HelpV3_Format_Ps1Xml+<ViewsOf_ExtendedCmdletHelpInfo_ExamplesView>d__4:MoveNext():ubyte:this (FullOpts)
219 (35.96 % of base) : 31629.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
217 (35.75 % of base) : 27716.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeWalkerWithStackGuardWithoutRecursionOnTheLeftOfBinaryOperator:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
203 (34.35 % of base) : 10408.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadProperty(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,int,int):FSharp.Compiler.AbstractIL.IL+ILPropertyDef (FullOpts)
205 (34.22 % of base) : 31127.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
1277 (33.61 % of base) : 28708.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromAnyNullPatterns(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundPattern):this (FullOpts)
666 (33.42 % of base) : 26933.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
446 (31.56 % of base) : 35672.dasm - System.Management.Automation.Runspaces.Help_Format_Ps1Xml+<ViewsOf_MamlCommandHelpInfo_Example>d__13:MoveNext():ubyte:this (FullOpts)
Top method improvements (percentages):
-95 (-23.87 % of base) : 19161.dasm - System.TimeZoneInfo:GetLocalTimeZoneFromWin32Data(byref,ubyte):System.TimeZoneInfo (FullOpts)
-139 (-22.13 % of base) : 27959.dasm - Microsoft.CodeAnalysis.CSharp.BoundFieldAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.ConstantValue,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundFieldAccess:this (FullOpts)
-14 (-21.88 % of base) : 23368.dasm - System.Text.RegularExpressions.RegexNode:<TryGetJoinableLengthCheckChildRange>g__CanJoinLengthCheck|60_0(System.Text.RegularExpressions.RegexNode):ubyte (FullOpts)
-81 (-19.80 % of base) : 22224.dasm - Microsoft.CodeAnalysis.RealParser:AccumulateDecimalDigitsIntoBigInteger(Microsoft.CodeAnalysis.RealParser+DecimalFloatingPointString,uint,uint):System.Numerics.BigInteger (FullOpts)
-119 (-18.92 % of base) : 37598.dasm - System.Enum:ToUInt64(System.Object):ulong (FullOpts)
-20 (-17.09 % of base) : 33933.dasm - Microsoft.CodeAnalysis.CommonMethodWellKnownAttributeData:get_MethodImplAttributes():int:this (FullOpts)
-94 (-16.73 % of base) : 31983.dasm - Microsoft.CodeAnalysis.CSharp.BoundLoweredConditionalAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundLoweredConditionalAccess:this (FullOpts)
-135 (-16.15 % of base) : 28092.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)
-71 (-15.88 % of base) : 35298.dasm - System.Management.Automation.MshLog:CreateLogProvider(System.String):System.Collections.ObjectModel.Collection`1[System.Management.Automation.LogProvider] (FullOpts)
-82 (-15.68 % of base) : 27974.dasm - Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingOperator:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingOperator:this (FullOpts)
-10 (-15.38 % of base) : 22080.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTypeModifierOrTypeKeyword(ushort):ubyte (FullOpts)
-29 (-15.18 % of base) : 27732.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:get_HasAnyApplicableMember():ubyte:this (FullOpts)
-110 (-14.44 % of base) : 2895.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
-10 (-14.29 % of base) : 13992.dasm - FSharp.Compiler.Parser+_fsyacc_reductions@15831-1195:Invoke(Internal.Utilities.Text.Parsing.IParseState):System.Object:this (FullOpts)
-10 (-14.29 % of base) : 13991.dasm - FSharp.Compiler.Parser+_fsyacc_reductions@15842-1196:Invoke(Internal.Utilities.Text.Parsing.IParseState):System.Object:this (FullOpts)
-41 (-14.29 % of base) : 21406.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:<ParseTypeCore>g__canBeNullableType|202_0(byref):ubyte:this (FullOpts)
-10 (-14.08 % of base) : 37549.dasm - System.Management.Automation.Language.IsSafeValueVisitor:<VisitArrayLiteral>b__66_0(System.Management.Automation.Language.ExpressionAst):ubyte:this (FullOpts)
-65 (-13.98 % of base) : 29584.dasm - Microsoft.CodeAnalysis.CSharp.BoundConvertedTupleLiteral:Update(Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundConvertedTupleLiteral:this (FullOpts)
-10 (-13.33 % of base) : 35649.dasm - System.Collections.Specialized.OrderedDictionary:get_Item(int):System.Object:this (FullOpts)
-22 (-13.17 % of base) : 28597.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsTransitivelyOn(int,int):ubyte:this (FullOpts)
smoke_tests.nativeaot.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4353584 (overridden on cmd)
Total bytes of diff: 4412360 (overridden on cmd)
Total bytes of delta: 58776 (1.35 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
563 : 1632.dasm (152.57 % of base)
563 : 16767.dasm (152.57 % of base)
563 : 19394.dasm (152.57 % of base)
563 : 22052.dasm (152.57 % of base)
563 : 5317.dasm (152.57 % of base)
452 : 5987.dasm (32.66 % of base)
404 : 11224.dasm (29.99 % of base)
355 : 11979.dasm (6.56 % of base)
355 : 14938.dasm (6.55 % of base)
351 : 6270.dasm (6.41 % of base)
320 : 4647.dasm (7.78 % of base)
320 : 10631.dasm (7.78 % of base)
268 : 3485.dasm (9.71 % of base)
255 : 1456.dasm (6.70 % of base)
255 : 14724.dasm (6.69 % of base)
255 : 16574.dasm (6.70 % of base)
255 : 19201.dasm (6.70 % of base)
255 : 21892.dasm (6.70 % of base)
255 : 4935.dasm (6.70 % of base)
252 : 11871.dasm (26.58 % of base)
Top file improvements (bytes):
-1221 : 18960.dasm (-16.27 % of base)
-1217 : 4494.dasm (-16.21 % of base)
-1217 : 1082.dasm (-16.21 % of base)
-1209 : 16319.dasm (-16.09 % of base)
-1209 : 21621.dasm (-16.09 % of base)
-324 : 6365.dasm (-35.14 % of base)
-323 : 11598.dasm (-35.30 % of base)
-78 : 12972.dasm (-14.80 % of base)
-76 : 3870.dasm (-50.67 % of base)
-76 : 9585.dasm (-50.67 % of base)
-74 : 17544.dasm (-8.11 % of base)
-74 : 20179.dasm (-8.11 % of base)
-74 : 22827.dasm (-8.11 % of base)
-74 : 2468.dasm (-8.11 % of base)
-70 : 8027.dasm (-7.62 % of base)
-58 : 15471.dasm (-4.55 % of base)
-58 : 18173.dasm (-4.55 % of base)
-58 : 20828.dasm (-4.55 % of base)
-58 : 356.dasm (-4.55 % of base)
-54 : 4309.dasm (-10.89 % of base)
64 total files with Code Size differences (30 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
563 (152.57 % of base) : 1632.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
563 (152.57 % of base) : 16767.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
563 (152.57 % of base) : 19394.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
563 (152.57 % of base) : 22052.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
563 (152.57 % of base) : 5317.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
452 (32.66 % of base) : 5987.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
404 (29.99 % of base) : 11224.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
355 (6.56 % of base) : 11979.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
355 (6.55 % of base) : 14938.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
351 (6.41 % of base) : 6270.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
320 (7.78 % of base) : 4647.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
320 (7.78 % of base) : 10631.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
268 (9.71 % of base) : 3485.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
255 (6.70 % of base) : 1456.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
255 (6.69 % of base) : 14724.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
255 (6.70 % of base) : 16574.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
255 (6.70 % of base) : 19201.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
255 (6.70 % of base) : 21892.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
255 (6.70 % of base) : 4935.dasm - System.Threading.Lock:TryEnterSlow(int,System.Threading.Lock+ThreadId):System.Threading.Lock+ThreadId:this (FullOpts)
252 (26.58 % of base) : 11871.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.__Canon](System.Linq.Expressions.SwitchExpression):this (FullOpts)
Top method improvements (bytes):
-1221 (-16.27 % of base) : 18960.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-1217 (-16.21 % of base) : 4494.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-1217 (-16.21 % of base) : 1082.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-1209 (-16.09 % of base) : 16319.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-1209 (-16.09 % of base) : 21621.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-324 (-35.14 % of base) : 6365.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-323 (-35.30 % of base) : 11598.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-78 (-14.80 % of base) : 12972.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-76 (-50.67 % of base) : 3870.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-76 (-50.67 % of base) : 9585.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-74 (-8.11 % of base) : 17544.dasm - System.Globalization.JapaneseCalendar:NlsGetJapaneseEras():System.Globalization.EraInfo[] (FullOpts)
-74 (-8.11 % of base) : 20179.dasm - System.Globalization.JapaneseCalendar:NlsGetJapaneseEras():System.Globalization.EraInfo[] (FullOpts)
-74 (-8.11 % of base) : 22827.dasm - System.Globalization.JapaneseCalendar:NlsGetJapaneseEras():System.Globalization.EraInfo[] (FullOpts)
-74 (-8.11 % of base) : 2468.dasm - System.Globalization.JapaneseCalendar:NlsGetJapaneseEras():System.Globalization.EraInfo[] (FullOpts)
-70 (-7.62 % of base) : 8027.dasm - System.Globalization.JapaneseCalendar:NlsGetJapaneseEras():System.Globalization.EraInfo[] (FullOpts)
-58 (-4.55 % of base) : 15471.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,short](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
-58 (-4.55 % of base) : 18173.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,short](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
-58 (-4.55 % of base) : 20828.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,short](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
-58 (-4.55 % of base) : 356.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,short](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
-54 (-10.89 % of base) : 4309.dasm - System.AppContextConfigHelper:GetInt32Config(System.String,int,ubyte):int (FullOpts)
Top method regressions (percentages):
563 (152.57 % of base) : 1632.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
563 (152.57 % of base) : 16767.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
563 (152.57 % of base) : 19394.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
563 (152.57 % of base) : 22052.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
563 (152.57 % of base) : 5317.dasm - System.Sha1ForNonSecretPurposes:Finish(System.Span`1[ubyte]):this (FullOpts)
452 (32.66 % of base) : 5987.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
404 (29.99 % of base) : 11224.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
252 (26.58 % of base) : 11871.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.__Canon](System.Linq.Expressions.SwitchExpression):this (FullOpts)
49 (23.67 % of base) : 23281.dasm - System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller:ConvertToUnmanaged(System.String):ulong (FullOpts)
225 (22.50 % of base) : 11875.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[int](System.Linq.Expressions.SwitchExpression):this (FullOpts)
229 (21.56 % of base) : 11869.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileStringSwitchExpression(System.Linq.Expressions.SwitchExpression):this (FullOpts)
9 (20.93 % of base) : 6350.dasm - Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
9 (20.93 % of base) : 11590.dasm - Internal.TypeSystem.MethodForInstantiatedType:get_Instantiation():Internal.TypeSystem.Instantiation:this (FullOpts)
225 (19.95 % of base) : 13860.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
238 (19.90 % of base) : 6499.dasm - System.Diagnostics.NtProcessInfoHelper:GetProcessInfos(System.ReadOnlySpan`1[ubyte],System.Nullable`1[int],System.String):System.Diagnostics.ProcessInfo[] (FullOpts)
225 (19.89 % of base) : 15101.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
80 (19.28 % of base) : 18743.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (FullOpts)
98 (19.22 % of base) : 28439.dasm - System.Guid:TryFormatCore[ushort](System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
229 (17.66 % of base) : 8164.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:RegisterDynamicGenericTypesAndMethods(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+DynamicGenericsRegistrationData):this (FullOpts)
139 (16.99 % of base) : 19612.dasm - Internal.StackTraceMetadata.StackTraceMetadata+PerModuleMethodNameResolver:PopulateRvaToTokenMap(Internal.Runtime.TypeManagerHandle,ulong,uint):this (FullOpts)
Top method improvements (percentages):
-76 (-50.67 % of base) : 3870.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-76 (-50.67 % of base) : 9585.dasm - System.Reflection.Runtime.TypeInfos.NativeFormat.NativeFormatRuntimeGenericParameterTypeInfo:get_Name():System.String:this (FullOpts)
-323 (-35.30 % of base) : 11598.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-324 (-35.14 % of base) : 6365.dasm - Internal.TypeSystem.TypeSystemContext+RuntimeMethodKey+RuntimeMethodKeyHashtable:CompareValueToValue(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodDesc):ubyte:this (FullOpts)
-1221 (-16.27 % of base) : 18960.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-1217 (-16.21 % of base) : 4494.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-1217 (-16.21 % of base) : 1082.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-1209 (-16.09 % of base) : 16319.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-1209 (-16.09 % of base) : 21621.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (FullOpts)
-78 (-14.80 % of base) : 12972.dasm - System.Linq.Expressions.Expression:MakeUnary(int,System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression (FullOpts)
-14 (-11.86 % of base) : 12019.dasm - System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-14 (-11.20 % of base) : 6295.dasm - System.DateTimeFormat:IsTimeOnlySpecialCase(System.DateTime,System.Globalization.DateTimeFormatInfo):ubyte (FullOpts)
-54 (-10.89 % of base) : 4309.dasm - System.AppContextConfigHelper:GetInt32Config(System.String,int,ubyte):int (FullOpts)
-49 (-10.68 % of base) : 9807.dasm - System.AppContextConfigHelper:GetInt32Config(System.String,int,ubyte):int (FullOpts)
-24 (-10.04 % of base) : 8023.dasm - System.Text.DecoderDBCS:GetCharCount(ubyte[],int,int,ubyte):int:this (FullOpts)
-24 (-10.04 % of base) : 6955.dasm - System.Text.DecoderDBCS:GetCharCount(ubyte[],int,int,ubyte):int:this (FullOpts)
-8 (-8.99 % of base) : 11387.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMemberExpression(System.Linq.Expressions.Expression):this (FullOpts)
-32 (-8.96 % of base) : 30083.dasm - System.Reflection.DynamicInvokeInfo:CopyBackToSpan(System.Span`1[System.Object],System.Span`1[System.Object]):this (FullOpts)
-20 (-8.13 % of base) : 30464.dasm - System.Threading.AsyncFlowControl:Undo():this (FullOpts)
-74 (-8.11 % of base) : 17544.dasm - System.Globalization.JapaneseCalendar:NlsGetJapaneseEras():System.Globalization.EraInfo[] (FullOpts)