Assembly Diffs

linux arm

Diffs are based on 2,239,114 contexts (829,327 MinOpts, 1,409,787 FullOpts).

MISSED contexts: base: 71,275 (3.08%), diff: 71,546 (3.10%)

Overall (-171,254 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,281,610 -70
benchmarks.run_pgo.linux.arm.checked.mch 63,946,800 -826
benchmarks.run_tiered.linux.arm.checked.mch 21,537,614 -502
coreclr_tests.run.linux.arm.checked.mch 321,680,998 -39,846
libraries.crossgen2.linux.arm.checked.mch 34,522,532 -30
libraries.pmi.linux.arm.checked.mch 49,794,764 +7,174
libraries_tests.run.linux.arm.Release.mch 243,721,382 -72,548
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,387,740 -65,594
realworld.run.linux.arm.checked.mch 13,603,552 +988

MinOpts (-182,312 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 11,199,966 -818
benchmarks.run_tiered.linux.arm.checked.mch 8,653,000 -570
coreclr_tests.run.linux.arm.checked.mch 212,477,574 -42,638
libraries_tests.run.linux.arm.Release.mch 120,969,132 -72,750
librariestestsnotieredcompilation.run.linux.arm.Release.mch 10,070,736 -65,536

FullOpts (+11,058 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,892,408 -70
benchmarks.run_pgo.linux.arm.checked.mch 52,746,834 -8
benchmarks.run_tiered.linux.arm.checked.mch 12,884,614 +68
coreclr_tests.run.linux.arm.checked.mch 109,203,424 +2,792
libraries.crossgen2.linux.arm.checked.mch 34,521,302 -30
libraries.pmi.linux.arm.checked.mch 49,688,540 +7,174
libraries_tests.run.linux.arm.Release.mch 122,752,250 +202
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,317,004 -58
realworld.run.linux.arm.checked.mch 13,168,252 +988

Example diffs

benchmarks.run.linux.arm.checked.mch

-30 (-1.72%) : 26415.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)

@@ -5,157 +5,151 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 120 single block inlinees; 45 inlinees without PGO data
+; 0 inlinees with PGO data; 125 single block inlinees; 45 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 65, 33.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
-; V01 arg1 [V01,T11] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V02 loc0 [V02,T12] ( 6, 4.50) int -> r5 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V02 loc0 [V02,T13] ( 6, 4.50) int -> r5 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V05 tmp2 [V05,T50] ( 2, 2 ) int -> r5 "Inlining Arg" -; V06 tmp3 [V06,T56] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V07 tmp4 [V07,T13] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V05 tmp2 [V05,T52] ( 2, 2 ) int -> r5 "Inlining Arg" +; V06 tmp3 [V06,T58] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V07 tmp4 [V07,T14] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
; V08 tmp5 [V08,T02] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V11 tmp8 [V11,T20] ( 6, 3 ) int -> r7 "Inline stloc first use temp" ;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V19 tmp16 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V21 tmp18 [V21,T03] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V22 tmp19 [V22,T38] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V24 tmp21 [V24,T63] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V25 tmp22 [V25,T39] ( 3, 3 ) int -> r2 "Inlining Arg" -; V26 tmp23 [V26,T26] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V28 tmp25 [V28,T51] ( 2, 2 ) int -> r5 "Inlining Arg" -; V29 tmp26 [V29,T57] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V30 tmp27 [V30,T14] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V31 tmp28 [V31,T04] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V34 tmp31 [V34,T21] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V37 tmp34 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V17 tmp14 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V19 tmp16 [V19,T03] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V20 tmp17 [V20,T38] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V22 tmp19 [V22,T65] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V23 tmp20 [V23,T39] ( 3, 3 ) int -> r2 "Inlining Arg" +; V24 tmp21 [V24,T26] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V26 tmp23 [V26,T53] ( 2, 2 ) int -> r5 "Inlining Arg" +; V27 tmp24 [V27,T59] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V28 tmp25 [V28,T15] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V29 tmp26 [V29,T04] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V32 tmp29 [V32,T21] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V33 tmp30 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V36 tmp33 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V38 tmp35 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V40 tmp37 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V43 tmp40 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V44 tmp41 [V44,T05] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V45 tmp42 [V45,T40] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V47 tmp44 [V47,T64] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V48 tmp45 [V48,T41] ( 3, 3 ) int -> r2 "Inlining Arg" -; V49 tmp46 [V49,T27] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V50 tmp47 [V50 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V51 tmp48 [V51,T52] ( 2, 2 ) int -> r5 "Inlining Arg" -; V52 tmp49 [V52,T58] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V53 tmp50 [V53,T15] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V54 tmp51 [V54,T06] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V40 tmp37 [V40,T05] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V41 tmp38 [V41,T40] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V43 tmp40 [V43,T66] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V44 tmp41 [V44,T41] ( 3, 3 ) int -> r2 "Inlining Arg" +; V45 tmp42 [V45,T27] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V47 tmp44 [V47,T54] ( 2, 2 ) int -> r5 "Inlining Arg" +; V48 tmp45 [V48,T60] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V49 tmp46 [V49,T16] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V50 tmp47 [V50,T06] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V51 tmp48 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V52 tmp49 [V52 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V53 tmp50 [V53,T22] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V54 tmp51 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V57 tmp54 [V57,T22] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V58 tmp55 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V57 tmp54 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V59 tmp56 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V60 tmp57 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V61 tmp58 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V62 tmp59 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V63 tmp60 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V64 tmp61 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V65 tmp62 [V65 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V66 tmp63 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V67 tmp64 [V67,T07] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V68 tmp65 [V68,T42] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V69 tmp66 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V70 tmp67 [V70,T65] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V71 tmp68 [V71,T43] ( 3, 3 ) int -> r2 "Inlining Arg" -; V72 tmp69 [V72,T28] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V74 tmp71 [V74,T53] ( 2, 2 ) int -> r5 "Inlining Arg" -; V75 tmp72 [V75,T59] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V76 tmp73 [V76,T16] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V77 tmp74 [V77,T08] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V78 tmp75 [V78 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V60 tmp57 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V61 tmp58 [V61,T07] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V62 tmp59 [V62,T42] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V64 tmp61 [V64,T67] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V65 tmp62 [V65,T43] ( 3, 3 ) int -> r2 "Inlining Arg" +; V66 tmp63 [V66,T28] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V67 tmp64 [V67 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V68 tmp65 [V68,T55] ( 2, 2 ) int -> r5 "Inlining Arg" +; V69 tmp66 [V69,T61] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V70 tmp67 [V70,T17] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V71 tmp68 [V71,T08] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V74 tmp71 [V74,T23] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V75 tmp72 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V76 tmp73 [V76 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V77 tmp74 [V77 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V78 tmp75 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V79 tmp76 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V80 tmp77 [V80,T23] ( 6, 3 ) int -> r7 "Inline stloc first use temp"
+;* V80 tmp77 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V81 tmp78 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V82 tmp79 [V82 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V83 tmp80 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V84 tmp81 [V84 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V85 tmp82 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V86 tmp83 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V88 tmp85 [V88 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V89 tmp86 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V90 tmp87 [V90,T29] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" -;* V91 tmp88 [V91 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V92 tmp89 [V92,T54] ( 2, 2 ) int -> r6 "Inlining Arg" -; V93 tmp90 [V93,T60] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V94 tmp91 [V94,T17] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V95 tmp92 [V95,T09] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V96 tmp93 [V96 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V82 tmp79 [V82,T09] ( 6, 6 ) byref -> r3 single-def "Inlining Arg" +; V83 tmp80 [V83,T44] ( 3, 3 ) int -> r2 "impAppendStmt" +;* V84 tmp81 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V85 tmp82 [V85,T68] ( 3, 1.50) int -> r1 "Inline return value spill temp" +; V86 tmp83 [V86,T45] ( 3, 3 ) int -> r1 "Inlining Arg" +; V87 tmp84 [V87,T29] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" +;* V88 tmp85 [V88 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V89 tmp86 [V89,T56] ( 2, 2 ) int -> r6 "Inlining Arg" +; V90 tmp87 [V90,T62] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V91 tmp88 [V91,T18] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V92 tmp89 [V92,T10] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V93 tmp90 [V93 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V94 tmp91 [V94 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V95 tmp92 [V95,T24] ( 6, 3 ) int -> r8 "Inline stloc first use temp" +;* V96 tmp93 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V98 tmp95 [V98,T24] ( 6, 3 ) int -> r8 "Inline stloc first use temp"
+;* V98 tmp95 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V99 tmp96 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V100 tmp97 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V101 tmp98 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V102 tmp99 [V102 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V103 tmp100 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V104 tmp101 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V105 tmp102 [V105 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V106 tmp103 [V106 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V107 tmp104 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V108 tmp105 [V108,T30] ( 3, 3 ) byref -> r7 single-def "Inlining Arg" -;* V109 tmp106 [V109 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -; V110 tmp107 [V110,T61] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V111 tmp108 [V111,T18] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V112 tmp109 [V112,T10] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V113 tmp110 [V113 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -;* V114 tmp111 [V114 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V115 tmp112 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V116 tmp113 [V116,T25] ( 6, 3 ) int -> r6 "Inline stloc first use temp" -;* V117 tmp114 [V117 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V118 tmp115 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V119 tmp116 [V119 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V120 tmp117 [V120,T55] ( 2, 2 ) int -> r6 "Inlining Arg" -; V121 tmp118 [V121,T62] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V122 tmp119 [V122,T19] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V123 tmp120 [V123,T31] ( 3, 3 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V124 tmp121 [V124 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V125 tmp122 [V125 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V101 tmp98 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V102 tmp99 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V103 tmp100 [V103,T30] ( 3, 3 ) byref -> r7 single-def "Inlining Arg" +;* V104 tmp101 [V104 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +; V105 tmp102 [V105,T63] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V106 tmp103 [V106,T19] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V107 tmp104 [V107,T11] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V108 tmp105 [V108 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +;* V109 tmp106 [V109 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V110 tmp107 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V111 tmp108 [V111,T25] ( 6, 3 ) int -> r6 "Inline stloc first use temp" +;* V112 tmp109 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V113 tmp110 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V114 tmp111 [V114 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V115 tmp112 [V115,T57] ( 2, 2 ) int -> r6 "Inlining Arg" +; V116 tmp113 [V116,T64] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V117 tmp114 [V117,T31] ( 3, 3 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V118 tmp115 [V118 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V119 tmp116 [V119 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V120 tmp117 [V120 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V121 tmp118 [V121,T32] ( 3, 3 ) ref -> r0 single-def "arr expr" +; V122 tmp119 [V122,T33] ( 3, 3 ) ref -> r0 single-def "arr expr" +;* V123 tmp120 [V123 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V124 tmp121 [V124 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V125 tmp122 [V125,T34] ( 3, 3 ) ref -> r3 single-def "arr expr"
;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V127 tmp124 [V127,T32] ( 3, 3 ) ref -> r0 single-def "arr expr" -; V128 tmp125 [V128,T33] ( 3, 3 ) ref -> r0 single-def "arr expr"
+;* V127 tmp124 [V127 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V128 tmp125 [V128,T35] ( 3, 3 ) ref -> r0 single-def "arr expr"
;* V129 tmp126 [V129 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V130 tmp127 [V130 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V131 tmp128 [V131,T34] ( 3, 3 ) ref -> r0 single-def "arr expr"
...

-14 (-0.83%) : 26429.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)

@@ -5,157 +5,151 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 118 single block inlinees; 44 inlinees without PGO data
+; 0 inlinees with PGO data; 124 single block inlinees; 43 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 62, 32 ) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
-; V01 arg1 [V01,T11] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V02 loc0 [V02,T12] ( 6, 4.50) int -> r5 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V02 loc0 [V02,T13] ( 6, 4.50) int -> r5 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V05 tmp2 [V05,T50] ( 2, 2 ) int -> r5 "Inlining Arg" -; V06 tmp3 [V06,T56] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V07 tmp4 [V07,T13] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V05 tmp2 [V05,T53] ( 2, 2 ) int -> r5 "Inlining Arg" +; V06 tmp3 [V06,T59] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V07 tmp4 [V07,T14] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
; V08 tmp5 [V08,T02] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V11 tmp8 [V11,T19] ( 6, 3 ) int -> r7 "Inline stloc first use temp"
+; V11 tmp8 [V11,T20] ( 6, 3 ) int -> r7 "Inline stloc first use temp"
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V19 tmp16 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V21 tmp18 [V21,T03] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V22 tmp19 [V22,T37] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V24 tmp21 [V24,T62] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V25 tmp22 [V25,T38] ( 3, 3 ) int -> r2 "Inlining Arg" -; V26 tmp23 [V26,T25] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V28 tmp25 [V28,T51] ( 2, 2 ) int -> r5 "Inlining Arg" -; V29 tmp26 [V29,T57] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V30 tmp27 [V30,T14] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V31 tmp28 [V31,T04] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V34 tmp31 [V34,T20] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V37 tmp34 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V17 tmp14 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V19 tmp16 [V19,T03] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V20 tmp17 [V20,T37] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V22 tmp19 [V22,T65] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V23 tmp20 [V23,T38] ( 3, 3 ) int -> r2 "Inlining Arg" +; V24 tmp21 [V24,T26] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V26 tmp23 [V26,T54] ( 2, 2 ) int -> r5 "Inlining Arg" +; V27 tmp24 [V27,T60] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V28 tmp25 [V28,T15] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V29 tmp26 [V29,T04] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V32 tmp29 [V32,T21] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V33 tmp30 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V36 tmp33 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V38 tmp35 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V40 tmp37 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V43 tmp40 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V44 tmp41 [V44,T05] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V45 tmp42 [V45,T39] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V47 tmp44 [V47,T63] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V48 tmp45 [V48,T40] ( 3, 3 ) int -> r2 "Inlining Arg" -; V49 tmp46 [V49,T26] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V50 tmp47 [V50 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V51 tmp48 [V51,T52] ( 2, 2 ) int -> r5 "Inlining Arg" -; V52 tmp49 [V52,T58] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V53 tmp50 [V53,T15] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V54 tmp51 [V54,T06] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V40 tmp37 [V40,T05] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V41 tmp38 [V41,T39] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V43 tmp40 [V43,T66] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V44 tmp41 [V44,T40] ( 3, 3 ) int -> r2 "Inlining Arg" +; V45 tmp42 [V45,T27] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V47 tmp44 [V47,T55] ( 2, 2 ) int -> r5 "Inlining Arg" +; V48 tmp45 [V48,T61] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V49 tmp46 [V49,T16] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V50 tmp47 [V50,T06] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V51 tmp48 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V52 tmp49 [V52 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V53 tmp50 [V53,T22] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V54 tmp51 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V57 tmp54 [V57,T21] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V58 tmp55 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V57 tmp54 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V59 tmp56 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V60 tmp57 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V61 tmp58 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V62 tmp59 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V63 tmp60 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V64 tmp61 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V65 tmp62 [V65 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V66 tmp63 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V67 tmp64 [V67,T07] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V68 tmp65 [V68,T41] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V69 tmp66 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V70 tmp67 [V70,T64] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V71 tmp68 [V71,T42] ( 3, 3 ) int -> r2 "Inlining Arg" -; V72 tmp69 [V72,T27] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V74 tmp71 [V74,T53] ( 2, 2 ) int -> r5 "Inlining Arg" -; V75 tmp72 [V75,T59] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V76 tmp73 [V76,T16] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V77 tmp74 [V77,T08] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V78 tmp75 [V78 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V60 tmp57 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V61 tmp58 [V61,T07] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V62 tmp59 [V62,T41] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V64 tmp61 [V64,T67] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V65 tmp62 [V65,T42] ( 3, 3 ) int -> r2 "Inlining Arg" +; V66 tmp63 [V66,T28] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V67 tmp64 [V67 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V68 tmp65 [V68,T56] ( 2, 2 ) int -> r5 "Inlining Arg" +; V69 tmp66 [V69,T62] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V70 tmp67 [V70,T17] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V71 tmp68 [V71,T08] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V74 tmp71 [V74,T23] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V75 tmp72 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V76 tmp73 [V76 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V77 tmp74 [V77 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V78 tmp75 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V79 tmp76 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V80 tmp77 [V80,T22] ( 6, 3 ) int -> r7 "Inline stloc first use temp"
+;* V80 tmp77 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V81 tmp78 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V82 tmp79 [V82 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V83 tmp80 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V84 tmp81 [V84 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V85 tmp82 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V86 tmp83 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V88 tmp85 [V88 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V89 tmp86 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V90 tmp87 [V90,T28] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" -;* V91 tmp88 [V91 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V92 tmp89 [V92,T54] ( 2, 2 ) int -> r6 "Inlining Arg" -; V93 tmp90 [V93,T60] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V94 tmp91 [V94,T17] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V95 tmp92 [V95,T09] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V96 tmp93 [V96 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V82 tmp79 [V82,T09] ( 6, 6 ) byref -> r3 single-def "Inlining Arg" +; V83 tmp80 [V83,T43] ( 3, 3 ) int -> r2 "impAppendStmt" +;* V84 tmp81 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V85 tmp82 [V85,T68] ( 3, 1.50) int -> r1 "Inline return value spill temp" +; V86 tmp83 [V86,T44] ( 3, 3 ) int -> r1 "Inlining Arg" +; V87 tmp84 [V87,T29] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" +;* V88 tmp85 [V88 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V89 tmp86 [V89,T57] ( 2, 2 ) int -> r6 "Inlining Arg" +; V90 tmp87 [V90,T63] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V91 tmp88 [V91,T18] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V92 tmp89 [V92,T10] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V93 tmp90 [V93 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V94 tmp91 [V94 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V95 tmp92 [V95,T24] ( 6, 3 ) int -> r8 "Inline stloc first use temp" +;* V96 tmp93 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V98 tmp95 [V98,T23] ( 6, 3 ) int -> r8 "Inline stloc first use temp"
+;* V98 tmp95 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V99 tmp96 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V100 tmp97 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V101 tmp98 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V102 tmp99 [V102 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V103 tmp100 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V104 tmp101 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V105 tmp102 [V105 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V106 tmp103 [V106 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V107 tmp104 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V108 tmp105 [V108,T29] ( 3, 3 ) byref -> r7 single-def "Inlining Arg" -;* V109 tmp106 [V109 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -; V110 tmp107 [V110,T61] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V111 tmp108 [V111,T18] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V112 tmp109 [V112,T10] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V113 tmp110 [V113 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -;* V114 tmp111 [V114 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V115 tmp112 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V116 tmp113 [V116,T24] ( 6, 3 ) int -> r6 "Inline stloc first use temp" -;* V117 tmp114 [V117 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V118 tmp115 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V119 tmp116 [V119 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V120 tmp117 [V120,T55] ( 2, 2 ) int -> r6 "Inlining Arg" -;* V121 tmp118 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V122 tmp119 [V122,T30] ( 3, 3 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V123 tmp120 [V123 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V124 tmp121 [V124,T49] ( 2, 2 ) ref -> r1 single-def "argument with side effect" -;* V125 tmp122 [V125 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V101 tmp98 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V102 tmp99 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V103 tmp100 [V103,T30] ( 3, 3 ) byref -> r7 single-def "Inlining Arg" +;* V104 tmp101 [V104 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +; V105 tmp102 [V105,T64] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V106 tmp103 [V106,T19] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V107 tmp104 [V107,T11] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V108 tmp105 [V108 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +;* V109 tmp106 [V109 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V110 tmp107 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V111 tmp108 [V111,T25] ( 6, 3 ) int -> r6 "Inline stloc first use temp" +;* V112 tmp109 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V113 tmp110 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V114 tmp111 [V114 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V115 tmp112 [V115,T58] ( 2, 2 ) int -> r6 "Inlining Arg" +;* V116 tmp113 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V117 tmp114 [V117,T51] ( 2, 2 ) ref -> r1 single-def "argument with side effect" +; V118 tmp115 [V118,T52] ( 2, 2 ) ref -> r0 single-def "argument with side effect" +;* V119 tmp116 [V119 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V120 tmp117 [V120 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V121 tmp118 [V121,T31] ( 3, 3 ) ref -> r0 single-def "arr expr" +; V122 tmp119 [V122,T32] ( 3, 3 ) ref -> r0 single-def "arr expr" +;* V123 tmp120 [V123 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V124 tmp121 [V124 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V125 tmp122 [V125,T33] ( 3, 3 ) ref -> r3 single-def "arr expr"
;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V127 tmp124 [V127,T31] ( 3, 3 ) ref -> r0 single-def "arr expr" -; V128 tmp125 [V128,T32] ( 3, 3 ) ref -> r0 single-def "arr expr"
+;* V127 tmp124 [V127 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V128 tmp125 [V128,T34] ( 3, 3 ) ref -> r0 single-def "arr expr"
;* V129 tmp126 [V129 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V130 tmp127 [V130 ] ( 0, 0 ) ref -> zero-ref "arr expr" ...

-6 (-0.37%) : 19249.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

@@ -9,15 +9,15 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 8 ) ref -> r5 class-hnd single-def <System.String[]>
-; V01 loc0 [V01,T08] ( 18, 7 ) ref -> [sp+0x18] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
+; V01 loc0 [V01,T07] ( 18, 7 ) ref -> [sp+0x18] do-not-enreg[M] class-hnd EH-live <BenchmarkDotNet.Engines.IHost>
; V02 loc1 [V02 ] ( 2, 2 ) ref -> [sp+0x44] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ; V03 loc2 [V03 ] ( 2, 2 ) ref -> [sp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String> ; V04 loc3 [V04,T36] ( 2, 2 ) ref -> r6 class-hnd single-def <System.String>
-; V05 loc4 [V05,T38] ( 2, 2 ) int -> r7 single-def
+;* V05 loc4 [V05 ] ( 0, 0 ) int -> zero-ref single-def
; V06 loc5 [V06 ] ( 15, 15 ) struct (24) [sp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V07 loc6 [V07,T32] ( 4, 2 ) int -> [sp+0x24] do-not-enreg[M] EH-live
-; V08 loc7 [V08,T46] ( 6, 0 ) ref -> [sp+0x14] must-init class-hnd EH-live single-def <<unknown class>> -;* V09 loc8 [V09,T51] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
+; V08 loc7 [V08,T43] ( 6, 0 ) ref -> [sp+0x14] must-init class-hnd EH-live single-def <<unknown class>> +;* V09 loc8 [V09,T48] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>> ; V11 OutArgs [V11 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V12 tmp1 [V12,T09] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.NoAcknowledgementConsoleHost> @@ -29,15 +29,15 @@ ; V18 tmp7 [V18,T30] ( 3, 3 ) int -> r7 ;* V19 tmp8 [V19 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V20 tmp9 [V20,T19] ( 2, 4 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V21 tmp10 [V21,T05] ( 4, 8 ) ref -> r2 class-hnd exact single-def "dup spill" <System.Object[]>
+; V21 tmp10 [V21,T04] ( 4, 8 ) ref -> r2 class-hnd exact single-def "dup spill" <System.Object[]>
; V22 tmp11 [V22,T10] ( 3, 6 ) ref -> r4 class-hnd single-def "impSpillLclRefs" <System.Reflection.MethodInfo> ; V23 tmp12 [V23,T02] ( 5, 10 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V24 tmp13 [V24,T48] ( 3, 0 ) ref -> r5 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> -; V25 tmp14 [V25,T52] ( 2, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> -; V26 tmp15 [V26,T49] ( 3, 0 ) ref -> r5 class-hnd single-def "dup spill" <<unknown class>>
+; V24 tmp13 [V24,T45] ( 3, 0 ) ref -> r5 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> +; V25 tmp14 [V25,T49] ( 2, 0 ) ref -> r1 class-hnd single-def "impSpillSpecialSideEff" <System.Object> +; V26 tmp15 [V26,T46] ( 3, 0 ) ref -> r5 class-hnd single-def "dup spill" <<unknown class>>
;* V27 tmp16 [V27 ] ( 0, 0 ) ref -> zero-ref single-def
-; V28 tmp17 [V28,T47] ( 4, 0 ) int -> r0 -; V29 tmp18 [V29,T50] ( 3, 0 ) int -> r0
+; V28 tmp17 [V28,T44] ( 4, 0 ) int -> r0 +; V29 tmp18 [V29,T47] ( 3, 0 ) int -> r0
;* V30 tmp19 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <<unknown class>> ;* V31 tmp20 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Object> ; V32 tmp21 [V32,T11] ( 3, 6 ) ref -> r4 class-hnd exact single-def "NewObj constructor temp" <BenchmarkDotNet.Engines.AnonymousPipesHost> @@ -45,11 +45,11 @@ ; V34 tmp23 [V34,T28] ( 3, 3 ) ref -> r1 class-hnd "Inline return value spill temp" <<unknown class>> ;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V36 tmp25 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String[]>
-;* V37 tmp26 [V37,T41] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String[]>
+;* V37 tmp26 [V37,T40] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.String[]>
; V38 tmp27 [V38,T00] ( 6, 12 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V39 tmp28 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]> ; V40 tmp29 [V40 ] ( 1, 1 ) ubyte -> [sp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V41 tmp30 [V41,T06] ( 4, 8 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <System.String>
+; V41 tmp30 [V41,T05] ( 4, 8 ) ref -> r3 class-hnd exact single-def "Inlining Arg" <System.String>
;* V42 tmp31 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V43 tmp32 [V43 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp33 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -62,53 +62,53 @@ ; V51 tmp40 [V51 ] ( 2, 2 ) int -> [sp+0x1C] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V52 tmp41 [V52,T34] ( 3, 2 ) int -> r0 single-def "Inline stloc first use temp" ;* V53 tmp42 [V53 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V54 tmp43 [V54,T21] ( 2, 4 ) ref -> r0 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;* V54 tmp43 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
; V55 tmp44 [V55,T03] ( 5, 10 ) ref -> r0 class-hnd single-def "dup spill" <ushort[]> ;* V56 tmp45 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V57 tmp46 [V57,T43] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V58 tmp47 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V59 tmp48 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V60 tmp49 [V60 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V61 tmp50 [V61,T07] ( 4, 8 ) int -> r0 "Inlining Arg" -;* V62 tmp51 [V62 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V63 tmp52 [V63,T14] ( 3, 6 ) int -> r8 "Inlining Arg" -; V64 tmp53 [V64,T22] ( 2, 4 ) byref -> r5 single-def "Inlining Arg" -;* V65 tmp54 [V65,T39] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V66 tmp55 [V66 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V67 tmp56 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V68 tmp57 [V68,T23] ( 2, 4 ) byref -> r1 single-def "Inlining Arg" -; V69 tmp58 [V69,T13] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Type> -;* V70 tmp59 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V71 tmp60 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x4)" P-INDEP -; V72 tmp61 [V72,T33] ( 3, 2 ) byref -> r8 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V73 tmp62 [V73,T35] ( 3, 2 ) int -> r9 single-def "field V43._length (fldOffset=0x4)" P-INDEP -; V74 tmp63 [V74,T37] ( 2, 2 ) byref -> r8 single-def "field V44._reference (fldOffset=0x0)" P-INDEP -; V75 tmp64 [V75,T40] ( 2, 2 ) int -> r9 single-def "field V44._length (fldOffset=0x4)" P-INDEP -;* V76 tmp65 [V76 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP -;* V77 tmp66 [V77 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x4)" P-INDEP -; V78 tmp67 [V78,T29] ( 3, 3 ) byref -> r3 "field V59._reference (fldOffset=0x0)" P-INDEP -; V79 tmp68 [V79,T31] ( 3, 3 ) int -> r2 "field V59._length (fldOffset=0x4)" P-INDEP -;* V80 tmp69 [V80 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V81 tmp70 [V81 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x4)" P-INDEP -;* V82 tmp71 [V82 ] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP -;* V83 tmp72 [V83 ] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0x4)" P-INDEP -;* V84 tmp73 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP -;* V85 tmp74 [V85 ] ( 0, 0 ) int -> zero-ref single-def "field V66._length (fldOffset=0x4)" P-INDEP -;* V86 tmp75 [V86,T42] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..004)" -;* V87 tmp76 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[004..008)" -;* V88 tmp77 [V88 ] ( 0, 0 ) int -> zero-ref "V19.[008..012)" -;* V89 tmp78 [V89 ] ( 0, 0 ) ubyte -> zero-ref "V19.[012..013)" -;* V90 tmp79 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[016..020)" -;* V91 tmp80 [V91 ] ( 0, 0 ) int -> zero-ref single-def "V19.[020..024)" -; V92 tmp81 [V92,T24] ( 2, 4 ) ref -> r1 single-def "argument with side effect" -; V93 tmp82 [V93,T25] ( 2, 4 ) ref -> r3 single-def "argument with side effect"
+;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V58 tmp47 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V59 tmp48 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V60 tmp49 [V60,T06] ( 4, 8 ) int -> r0 "Inlining Arg" +;* V61 tmp50 [V61 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V62 tmp51 [V62,T14] ( 3, 6 ) int -> r8 "Inlining Arg" +; V63 tmp52 [V63,T21] ( 2, 4 ) byref -> r5 single-def "Inlining Arg" +;* V64 tmp53 [V64,T38] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V65 tmp54 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V66 tmp55 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V67 tmp56 [V67,T22] ( 2, 4 ) byref -> r1 single-def "Inlining Arg" +; V68 tmp57 [V68,T13] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <System.Type> +;* V69 tmp58 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP +;* V70 tmp59 [V70 ] ( 0, 0 ) int -> zero-ref single-def "field V42._length (fldOffset=0x4)" P-INDEP +; V71 tmp60 [V71,T33] ( 3, 2 ) byref -> r8 single-def "field V43._reference (fldOffset=0x0)" P-INDEP +; V72 tmp61 [V72,T35] ( 3, 2 ) int -> r9 single-def "field V43._length (fldOffset=0x4)" P-INDEP +; V73 tmp62 [V73,T37] ( 2, 2 ) byref -> r8 single-def "field V44._reference (fldOffset=0x0)" P-INDEP +; V74 tmp63 [V74,T39] ( 2, 2 ) int -> r9 single-def "field V44._length (fldOffset=0x4)" P-INDEP +;* V75 tmp64 [V75 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP +;* V76 tmp65 [V76 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x4)" P-INDEP +; V77 tmp66 [V77,T29] ( 3, 3 ) byref -> r3 "field V58._reference (fldOffset=0x0)" P-INDEP +; V78 tmp67 [V78,T31] ( 3, 3 ) int -> r2 "field V58._length (fldOffset=0x4)" P-INDEP +;* V79 tmp68 [V79 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP +;* V80 tmp69 [V80 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x4)" P-INDEP +;* V81 tmp70 [V81 ] ( 0, 0 ) byref -> zero-ref single-def "field V61._reference (fldOffset=0x0)" P-INDEP +;* V82 tmp71 [V82 ] ( 0, 0 ) int -> zero-ref single-def "field V61._length (fldOffset=0x4)" P-INDEP +;* V83 tmp72 [V83 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP +;* V84 tmp73 [V84 ] ( 0, 0 ) int -> zero-ref single-def "field V65._length (fldOffset=0x4)" P-INDEP +;* V85 tmp74 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[000..004)" +;* V86 tmp75 [V86 ] ( 0, 0 ) ref -> zero-ref single-def "V19.[004..008)" +;* V87 tmp76 [V87 ] ( 0, 0 ) int -> zero-ref "V19.[008..012)" +;* V88 tmp77 [V88 ] ( 0, 0 ) ubyte -> zero-ref "V19.[012..013)" +;* V89 tmp78 [V89 ] ( 0, 0 ) byref -> zero-ref single-def "V19.[016..020)" +;* V90 tmp79 [V90 ] ( 0, 0 ) int -> zero-ref single-def "V19.[020..024)" +; V91 tmp80 [V91,T23] ( 2, 4 ) ref -> r1 single-def "argument with side effect" +; V92 tmp81 [V92,T24] ( 2, 4 ) ref -> r3 single-def "argument with side effect" +; V93 tmp82 [V93,T25] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
; V94 tmp83 [V94,T26] ( 2, 4 ) ref -> r1 single-def "argument with side effect"
-; V95 tmp84 [V95,T53] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V96 tmp85 [V96,T54] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V97 tmp86 [V97,T55] ( 2, 0 ) ref -> r1 single-def "argument with side effect" -; V98 PSPSym [V98,T44] ( 1, 1 ) int -> [sp+0x48] do-not-enreg[V] "PSPSym" -;* V99 cse0 [V99,T45] ( 0, 0 ) int -> zero-ref "CSE - moderate" -; V100 cse1 [V100,T04] ( 8, 8 ) int -> registers multi-def "CSE - aggressive"
+; V95 tmp84 [V95,T50] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V96 tmp85 [V96,T51] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V97 tmp86 [V97,T52] ( 2, 0 ) ref -> r1 single-def "argument with side effect" +; V98 PSPSym [V98,T41] ( 1, 1 ) int -> [sp+0x48] do-not-enreg[V] "PSPSym" +;* V99 cse0 [V99,T42] ( 0, 0 ) int -> zero-ref "CSE - moderate" +; V100 cse1 [V100,T08] ( 7, 7 ) int -> registers multi-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x58] ; ; Lcl frame size = 76 @@ -129,8 +129,8 @@ G_M19825_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { mov r5, r0 ; gcrRegs +[r5] ;; size=32 bbWeight=1 PerfScore 13.00
-G_M19825_IG02: ; bbWeight=1, gcVars=0000400000000000 {V08}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V08 V46}
+G_M19825_IG02: ; bbWeight=1, gcVars=0000080000000000 {V08}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V08}
add r2, sp, 64 add r1, sp, 68 mov r0, r5 @@ -169,7 +169,7 @@ G_M19825_IG02: ; bbWeight=1, gcVars=0000400000000000 {V08}, gcrefRegs=002 ;; size=64 bbWeight=1 PerfScore 24.00 G_M19825_IG03: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; gcrRegs -[r4]
- ; GC ptr vars -{V01 V08 V46}
+ ; GC ptr vars -{V01}
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -198,9 +198,8 @@ G_M19825_IG03: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre str r4, [sp+0x18] // [V01 loc0] ; GC ptr vars +{V01} ;; size=50 bbWeight=1 PerfScore 17.00
-G_M19825_IG04: ; bbWeight=1, gcVars=0000400000000100 {V01 V08}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+G_M19825_IG04: ; bbWeight=1, gcVars=0000080000000080 {V01 V08}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r4]
- ; GC ptr vars +{V08}
ldr r0, [sp+0x18] // [V01 loc0] ; gcrRegs +[r0] movw r4, 0xd1ff @@ -217,7 +216,7 @@ G_M19825_IG05: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne G_M19825_IG23
+ bne G_M19825_IG22
;; size=20 bbWeight=1 PerfScore 6.00 G_M19825_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff @@ -240,7 +239,7 @@ G_M19825_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ldr r1, [r1] ; gcrRegs +[r1] cmp r1, 0
- beq G_M19825_IG22
+ beq G_M19825_IG21
adds r0, r4, 4 ; gcrRegs -[r0] ; byrRegs +[r0] @@ -263,12 +262,12 @@ G_M19825_IG06: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ;; size=92 bbWeight=1 PerfScore 29.00 G_M19825_IG07: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz cmp r5, 0
- beq G_M19825_IG21 - cmp r4, 0
beq G_M19825_IG20
+ cmp r4, 0 + beq G_M19825_IG19
ldr r6, [r5+0x04] cmp r6, 0
- bne G_M19825_IG25
+ bne G_M19825_IG24
movw r0, 0xd1ff movt r0, 0xd1ff movs r1, 13 @@ -314,16 +313,10 @@ G_M19825_IG08: ; bbWeight=1, gcrefRegs=0022 {r1 r5}, byrefRegs=0000 {}, b ;; size=60 bbWeight=1 PerfScore 20.00 G_M19825_IG09: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] +[r6]
- ldr r3, [r5+0x04] - mov r4, r3 - cmp r4, 0 - bne G_M19825_IG26
+ ldr r0, [r5+0x04] + cmp r0, 0 + bne G_M19825_IG25
movs r7, 0
- ;; size=12 bbWeight=1 PerfScore 5.00 -G_M19825_IG10: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r5] - cmp r4, 0 - bne SHORT G_M19825_IG11
ldr r0, [sp+0x18] // [V01 loc0] ; gcrRegs +[r0] movw r4, 0xd1ff @@ -332,10 +325,10 @@ G_M19825_IG10: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre movt r1, 0xd1ff ldr r3, [r4] blx r3 // <unknown method>
- ; gcrRegs -[r0]
+ ; gcrRegs -[r0 r5]
; gcr arg pop 0
- ;; size=26 bbWeight=1 PerfScore 9.00 -G_M19825_IG11: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 11.00 +G_M19825_IG10: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
...

+2 (+0.48%) : 30741.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong]:get_BoundaryAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:this (FullOpts)

@@ -15,7 +15,7 @@ ; V04 tmp2 [V04,T05] ( 4, 3.50) ref -> r0 ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V07 tmp5 [V07,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V07 tmp5 [V07,T15] ( 2, 1 ) ref -> r5 class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
;* V08 tmp6 [V08,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V09 tmp7 [V09 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V10 tmp8 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -27,7 +27,7 @@ ;* V16 tmp14 [V16 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op double-align "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V17 tmp15 [V17,T06] ( 5, 2.50) ref -> r8 ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V18 tmp16 [V18,T00] ( 10, 10 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V19 tmp17 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V19 tmp17 [V19,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V20 tmp18 [V20,T08] ( 3, 3 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V21 tmp19 [V21,T02] ( 7, 7 ) struct (32) [sp+0x40] do-not-enreg[S] must-init double-align "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V22 tmp20 [V22,T13] ( 3, 1.50) byref -> r0 single-def "Inline stloc first use temp" @@ -39,7 +39,7 @@ ; V28 tmp26 [V28,T03] ( 7, 7 ) struct (32) [sp+0x20] do-not-enreg[S] must-init double-align "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V30 tmp28 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V31 tmp29 [V31,T07] ( 6, 3 ) int -> r5 "field V12._info (fldOffset=0x0)" P-INDEP
+; V31 tmp29 [V31,T07] ( 6, 3 ) int -> r6 "field V12._info (fldOffset=0x0)" P-INDEP
;* V32 tmp30 [V32 ] ( 0, 0 ) int -> zero-ref "field V23._info (fldOffset=0x0)" P-INDEP ;* V33 tmp31 [V33 ] ( 0, 0 ) long -> zero-ref "V16.[000..008)" ;* V34 tmp32 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[008..012)" @@ -48,11 +48,11 @@ ;* V37 tmp35 [V37 ] ( 0, 0 ) int -> zero-ref "V16.[020..024)" ;* V38 tmp36 [V38 ] ( 0, 0 ) int -> zero-ref "V16.[024..028)" ;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "V16.[028..032)"
-;* V40 rat0 [V40,T19] ( 0, 0 ) int -> zero-ref "field V09.lo (fldOffset=0x0)" P-INDEP -;* V41 rat1 [V41,T20] ( 0, 0 ) int -> zero-ref "field V09.hi (fldOffset=0x4)" P-INDEP
+;* V40 rat0 [V40 ] ( 0, 0 ) int -> zero-ref "field V09.lo (fldOffset=0x0)" P-INDEP +;* V41 rat1 [V41 ] ( 0, 0 ) int -> zero-ref "field V09.hi (fldOffset=0x4)" P-INDEP
;* V42 rat2 [V42 ] ( 0, 0 ) int -> zero-ref "field V11.lo (fldOffset=0x0)" P-INDEP ;* V43 rat3 [V43 ] ( 0, 0 ) int -> zero-ref "field V11.hi (fldOffset=0x4)" P-INDEP
-; V44 rat4 [V44,T11] ( 4, 2 ) int -> r6 "field V14.lo (fldOffset=0x0)" P-INDEP
+; V44 rat4 [V44,T11] ( 4, 2 ) int -> r5 "field V14.lo (fldOffset=0x0)" P-INDEP
; V45 rat5 [V45,T12] ( 4, 2 ) int -> r7 "field V14.hi (fldOffset=0x4)" P-INDEP ;* V46 rat6 [V46 ] ( 0, 0 ) int -> zero-ref "field V15.lo (fldOffset=0x0)" P-INDEP ;* V47 rat7 [V47 ] ( 0, 0 ) int -> zero-ref "field V15.hi (fldOffset=0x4)" P-INDEP @@ -84,16 +84,18 @@ G_M62798_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=8 bbWeight=1 PerfScore 3.00 G_M62798_IG03: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; gcrRegs -[r0]
+ mov r5, r4 + ; gcrRegs +[r5]
movs r2, 1 str r2, [sp] str r2, [sp+0x04] movs r2, 0 str r2, [sp+0x08]
- ;; size=10 bbWeight=0.50 PerfScore 2.50 -G_M62798_IG04: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=0.50 PerfScore 3.00 +G_M62798_IG04: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
str r2, [sp+0x0C] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M62798_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M62798_IG05: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
movs r3, 0 movs r0, 0 movs r1, 1 @@ -101,8 +103,8 @@ G_M62798_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method>
- mov r5, r0 - mov r0, r4
+ mov r6, r0 + mov r0, r5
; gcrRegs +[r0] movs r1, 11 movs r2, 0 @@ -111,19 +113,19 @@ G_M62798_IG05: ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b movt lr, 0xd1ff ldr lr, [lr] blx lr // <unknown method>
- ; gcrRegs -[r0] - mov r6, r0
+ ; gcrRegs -[r0 r5] + mov r5, r0
mov r7, r1 ldr r0, [r4+0x58] ; gcrRegs +[r0]
- str r6, [sp+0x40]
+ str r5, [sp+0x40]
str r7, [sp+0x44] movs r3, 11 str r3, [sp+0x50] mov r3, -1 str r3, [sp+0x54] str r3, [sp+0x58]
- str r5, [sp+0x5C]
+ str r6, [sp+0x5C]
ldrsb r3, [r0] ldr r2, [sp+0x48] ; gcrRegs +[r2] @@ -177,14 +179,14 @@ G_M62798_IG07: ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {} str r0, [r8+0x24] add r0, r8, 8 ; byrRegs +[r0]
- str r6, [r0]
+ str r5, [r0]
str r7, [r0+0x04]
- str r5, [r8+0x28] - ands r0, r5, 32
+ str r6, [r8+0x28] + ands r0, r6, 32
; byrRegs -[r0] cmp r0, 0 beq SHORT G_M62798_IG08
- ands r0, r5, 8
+ ands r0, r6, 8
cmp r0, 0 bne SHORT G_M62798_IG09 ;; size=44 bbWeight=0.50 PerfScore 7.00 @@ -214,14 +216,14 @@ G_M62798_IG10: ; bbWeight=0.50, gcrefRegs=0112 {r1 r4 r8}, byrefRegs=0000 ; byrRegs -[r0] ldr r0, [r4+0x58] ; gcrRegs +[r0]
- str r6, [sp+0x20]
+ str r5, [sp+0x20]
str r7, [sp+0x24] movs r3, 11 str r3, [sp+0x30] mov r3, -1 str r3, [sp+0x34] str r3, [sp+0x38]
- str r5, [sp+0x3C]
+ str r6, [sp+0x3C]
ldrsb r3, [r0] str r8, [sp+0x18] movs r3, 1 @@ -277,7 +279,7 @@ G_M62798_IG12: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre pop {r4,r5,r6,r7,r8,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 414, prolog size 26, PerfScore 86.00, instruction count 156, allocated bytes for code 414 (MethodHash=03450ab1) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_BoundaryAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
+; Total bytes of code 416, prolog size 26, PerfScore 86.50, instruction count 157, allocated bytes for code 416 (MethodHash=03450ab1) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_BoundaryAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
; ============================================================ Unwind Info: @@ -289,7 +291,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 207 (0x000cf) Actual length = 414 (0x00019e)
+ Function Length : 208 (0x000d0) Actual length = 416 (0x0001a0)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+2 (+0.86%) : 434.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)

@@ -13,10 +13,10 @@ ; V02 arg2 [V02,T05] ( 3, 3 ) int -> r5 single-def ; V03 arg3 [V03,T06] ( 3, 3 ) int -> r6 single-def ; V04 arg4 [V04,T07] ( 1, 1 ) ubyte -> [sp+0x18] single-def
-; V05 loc0 [V05,T00] ( 21, 11.50) int -> r7
+; V05 loc0 [V05,T00] ( 19, 10.50) int -> r7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 rat0 [V07,T02] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; V08 rat1 [V08,T01] ( 4, 8 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V07 rat0 [V07,T01] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V08 rat1 [V08,T02] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -58,7 +58,7 @@ G_M31052_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne SHORT G_M31052_IG22
+ bne SHORT G_M31052_IG21
;; size=18 bbWeight=0.50 PerfScore 3.00 G_M31052_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff @@ -82,7 +82,7 @@ G_M31052_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne SHORT G_M31052_IG23
+ bne SHORT G_M31052_IG22
;; size=22 bbWeight=0.50 PerfScore 3.50 G_M31052_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff @@ -96,47 +96,48 @@ G_M31052_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr orr r7, r7, 96 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M31052_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- subs r1, r4, 1 - cmp r1, 2 - bhi SHORT G_M31052_IG16 - cmp r1, 1 - beq SHORT G_M31052_IG15 - cmp r1, 2 - beq SHORT G_M31052_IG14 - ;; size=14 bbWeight=1 PerfScore 7.00
+ subs r0, r4, 1 + cmp r0, 2 + bhi SHORT G_M31052_IG15 + movw r1, LOW ADDRESS J_M31052_DS24 + movt r1, HIGH ADDRESS J_M31052_DS24 + + J_M31052_DS24 LABEL DWORD + DD G_M31052_IG15 + DD G_M31052_IG14 + DD G_M31052_IG13 + ldr pc, [r1+4*r0] + ;; size=18 bbWeight=1 PerfScore 6.00
G_M31052_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M31052_IG16 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M31052_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
orr r7, r7, 2
- b SHORT G_M31052_IG16
+ b SHORT G_M31052_IG15
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M31052_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
orr r7, r7, 1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31052_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31052_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ands r0, r5, 16 cmp r0, 0
- bne SHORT G_M31052_IG18
+ bne SHORT G_M31052_IG17
;; size=8 bbWeight=1 PerfScore 3.00
-G_M31052_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
orr r7, r7, 16 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31052_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31052_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ands r0, r6, 0x80000000 cmp r0, 0
- beq SHORT G_M31052_IG20
+ beq SHORT G_M31052_IG19
;; size=8 bbWeight=1 PerfScore 3.00
-G_M31052_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
orr r7, r7, 256 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31052_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r7 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M31052_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M31052_IG20: ; bbWeight=1, epilog, nogc, extend
pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M31052_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M31052_IG21: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movs r1, 42 @@ -145,7 +146,7 @@ G_M31052_IG22: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref blx r3 // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE b SHORT G_M31052_IG06 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M31052_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31052_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movs r1, 42 @@ -160,9 +161,12 @@ RWD00 dd G_M31052_IG11 dd G_M31052_IG08 dd G_M31052_IG05 dd G_M31052_IG08
+RWD24 dd G_M31052_IG15 + dd G_M31052_IG14 + dd G_M31052_IG13
-; Total bytes of code 232, prolog size 8, PerfScore 48.00, instruction count 80, allocated bytes for code 232 (MethodHash=393f86b3) for method Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
+; Total bytes of code 234, prolog size 8, PerfScore 46.50, instruction count 78, allocated bytes for code 234 (MethodHash=393f86b3) for method Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
; ============================================================ Unwind Info: @@ -174,7 +178,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 116 (0x00074) Actual length = 232 (0x0000e8)
+ Function Length : 117 (0x00075) Actual length = 234 (0x0000ea)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+2.75%) : 271.dasm - System.Runtime.CompilerServices.ConditionalWeakTable2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable2[System.Canon,System.Canon]):this (FullOpts)

@@ -15,12 +15,11 @@ ; V04 tmp1 [V04,T07] ( 3, 4 ) int -> r1 "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V07 tmp4 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp5 [V08,T00] ( 3, 24 ) ref -> r3 "arr expr" ; V09 cse0 [V09,T02] ( 4, 10 ) ref -> r1 "CSE - aggressive"
-; V10 cse1 [V10,T08] ( 3, 1.50) ref -> r1 "CSE - aggressive" -; V11 rat0 [V11,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" -; V12 rat1 [V12,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V10 rat0 [V10,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" +; V11 rat1 [V11,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
; TEMP_01 ref -> [r11-0x10] ; ; Lcl frame size = 8 @@ -41,17 +40,16 @@ G_M9941_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by bne SHORT G_M9941_IG04 ;; size=4 bbWeight=1 PerfScore 2.00 G_M9941_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=22 bbWeight=0.50 PerfScore 3.50
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M9941_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -158,7 +156,7 @@ G_M9941_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 218, prolog size 20, PerfScore 102.50, instruction count 79, allocated bytes for code 218 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
+; Total bytes of code 224, prolog size 20, PerfScore 103.00, instruction count 80, allocated bytes for code 224 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
; ============================================================ Unwind Info: @@ -170,7 +168,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 218 (0x0000da)
+ Function Length : 112 (0x00070) Actual length = 224 (0x0000e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_pgo.linux.arm.checked.mch

-28 (-45.16%) : 785.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)

@@ -5,47 +5,31 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[]
+; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [sp+0x00] do-not-enreg[]
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; TEMP_01 byref -> [r11-0x14]
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M18678_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r10,r11,lr} - sub sp, 16 - add r11, sp, 24 - movs r1, 0 - str r1, [sp+0x04]
+ push {r2,r3,r4,r10,r11,lr} + add r11, sp, 16
str r0, [r11-0x0C]
- str r0, [sp+0x08] - ;; size=20 bbWeight=1 PerfScore 7.00
+ str r0, [sp] + ;; size=14 bbWeight=1 PerfScore 4.00
G_M18678_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x08]
+ ldr r0, [sp]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_GETGENERICS_NONGCSTATIC_BASE ; byrRegs +[r0]
- mov r3, r0 - ; byrRegs +[r3] - str r3, [sp+0x04] - mov r0, 512 - ; byrRegs -[r0] - movs r1, 4 - movw r2, 0xd1ff - movt r2, 0xd1ff - blx r2 // CORINFO_HELP_UDIV - ; byrRegs -[r3] - ldr r3, [sp+0x04] - ; byrRegs +[r3] - str r0, [r3+0x08] - ;; size=36 bbWeight=1 PerfScore 13.00
+ movs r3, 128 + str r3, [r0+0x08] + ;; size=16 bbWeight=1 PerfScore 6.00
G_M18678_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 18, PerfScore 22.00, instruction count 22, allocated bytes for code 62 (MethodHash=e282b709) for method System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
+; Total bytes of code 34, prolog size 12, PerfScore 11.00, instruction count 11, allocated bytes for code 34 (MethodHash=e282b709) for method System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
; ============================================================ Unwind Info: @@ -57,11 +41,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - AC 10 pop {r4,r10,r11,lr} ; opsize 32
+ AC 1C pop {r2,r3,r4,r10,r11,lr} ; opsize 32 + FF end
FF end

-6 (-42.86%) : 49872.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data @@ -11,22 +11,20 @@ ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V01 tmp1 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune> ;* V02 tmp2 [V02 ] ( 0, 0 ) int -> zero-ref "field V01._value (fldOffset=0x0)" P-INDEP
-;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7284_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M7284_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r0, 0xd1ff ;; size=4 bbWeight=1 PerfScore 1.00 G_M7284_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 14, prolog size 6, PerfScore 4.00, instruction count 4, allocated bytes for code 14 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
+; Total bytes of code 8, prolog size 2, PerfScore 3.00, instruction count 3, allocated bytes for code 8 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
; ============================================================ Unwind Info: @@ -38,11 +36,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ Function Length : 4 (0x00004) Actual length = 8 (0x000008)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-38 (-33.33%) : 2999.dasm - System.Span`1[ubyte]:Clear():this (Tier0)

@@ -5,22 +5,16 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00 ] ( 1, 1 ) byref -> [sp+0x0C] do-not-enreg[] this
+; V00 this [V00 ] ( 1, 1 ) byref -> [sp+0x04] do-not-enreg[] this
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[] "argument with side effect" -; V03 tmp2 [V03 ] ( 1, 1 ) byref -> [sp+0x04] do-not-enreg[] must-init "argument with side effect" -; TEMP_01 int -> [r11-0x18]
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M36683_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r10,r11,lr} - sub sp, 16 - add r11, sp, 24 - movs r1, 0 - str r1, [sp+0x04] // [V03 tmp2] - str r0, [sp+0x0C] // [V00 this] - ;; size=16 bbWeight=1 PerfScore 6.00
+ push {r2,r3,r4,r10,r11,lr} + add r11, sp, 16 + str r0, [sp+0x04] + ;; size=10 bbWeight=1 PerfScore 3.00
G_M36683_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff @@ -28,41 +22,31 @@ G_M36683_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blx r3 // <unknown method> cmp r0, 0 beq SHORT G_M36683_IG04
- ldr r3, [sp+0x0C]
+ ldr r3, [sp+0x04]
; byrRegs +[r3]
- ldr r3, [r3] - str r3, [sp+0x04] // [V03 tmp2] - ldr r3, [sp+0x0C] // [V00 this]
ldr r3, [r3+0x04] ; byrRegs -[r3]
- str r3, [sp] // [TEMP_01] - movs r0, 1 - movs r1, 4 - movw r2, 0xd1ff - movt r2, 0xd1ff - blx r2 // CORINFO_HELP_UDIV - ldr r3, [sp] // [TEMP_01] - mul r3, r3, r0 - str r3, [sp+0x08] // [V02 tmp1] - ldr r1, [sp+0x08] // [V02 tmp1] - ldr r0, [sp+0x04] // [V03 tmp2]
+ movs r1, 0 + ldr r3, [sp+0x04] + ; byrRegs +[r3] + ldr r0, [r3]
; byrRegs +[r0] movw r3, 0xd1ff
+ ; byrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0]
- ;; size=66 bbWeight=1 PerfScore 26.00
+ ;; size=38 bbWeight=1 PerfScore 15.00
G_M36683_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
G_M36683_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ldr r3, [sp+0x0C] // [V00 this]
+ ldr r3, [sp+0x04]
; byrRegs +[r3] ldr r0, [r3] ; byrRegs +[r0]
- ldr r3, [sp+0x0C] // [V00 this]
+ ldr r3, [sp+0x04]
ldr r1, [r3+0x04] movw r3, 0xd1ff ; byrRegs -[r3] @@ -72,11 +56,10 @@ G_M36683_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref ; byrRegs -[r0] ;; size=20 bbWeight=1 PerfScore 8.00 G_M36683_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 114, prolog size 14, PerfScore 44.00, instruction count 44, allocated bytes for code 114 (MethodHash=0cfe70b4) for method System.Span`1[ubyte]:Clear():this (Tier0)
+; Total bytes of code 76, prolog size 8, PerfScore 28.00, instruction count 28, allocated bytes for code 76 (MethodHash=0cfe70b4) for method System.Span`1[ubyte]:Clear():this (Tier0)
; ============================================================ Unwind Info: @@ -88,7 +71,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 57 (0x00039) Actual length = 114 (0x000072)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -100,7 +83,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - AC 10 pop {r4,r10,r11,lr} ; opsize 32
+ AC 1C pop {r2,r3,r4,r10,r11,lr} ; opsize 32 + FF end
FF end

+2 (+0.29%) : 18553.dasm - System.Text.Encodings.Web.OptimizedInboxTextEncoder:Encode(System.ReadOnlySpan1[ushort],System.Span1[ushort],byref,byref,ubyte):int:this (Tier0-FullOpts)

@@ -106,13 +106,11 @@ ; V95 tmp79 [V95,T26] ( 3, 11 ) int -> r7 "V01.[004..008)" ; V96 tmp80 [V96,T07] ( 5,141 ) byref -> r8 single-def "V02.[000..004)" ; V97 tmp81 [V97,T06] ( 7,149 ) int -> r9 "V02.[004..008)"
-;* V98 tmp82 [V98 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -;* V99 tmp83 [V99 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -; V100 rat0 [V100,T02] ( 8,428 ) int -> r2 "field V10.lo (fldOffset=0x0)" P-INDEP -; V101 rat1 [V101,T01] ( 7,436 ) int -> r0 "field V10.hi (fldOffset=0x4)" P-INDEP -; V102 rat2 [V102,T04] ( 3,384 ) int -> r1 "field V22.lo (fldOffset=0x0)" P-INDEP -; V103 rat3 [V103,T05] ( 2,256 ) int -> r0 "field V22.hi (fldOffset=0x4)" P-INDEP -; V104 rat4 [V104,T20] ( 3, 24 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+; V98 rat0 [V98,T02] ( 8,428 ) int -> r2 "field V10.lo (fldOffset=0x0)" P-INDEP +; V99 rat1 [V99,T01] ( 7,436 ) int -> r0 "field V10.hi (fldOffset=0x4)" P-INDEP +; V100 rat2 [V100,T04] ( 3,384 ) int -> r1 "field V22.lo (fldOffset=0x0)" P-INDEP +; V101 rat3 [V101,T05] ( 2,256 ) int -> r0 "field V22.hi (fldOffset=0x4)" P-INDEP +; V102 rat4 [V102,T20] ( 3, 24 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
; TEMP_02 ref -> [r11-0x4C] ; TEMP_01 int -> [r11-0x50] ; @@ -142,7 +140,7 @@ G_M40789_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ;; size=22 bbWeight=1 PerfScore 7.00 G_M40789_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0140 {r6 r8}, byref, isz cmp r10, r7
- bhs G_M40789_IG32
+ bhs G_M40789_IG29
;; size=6 bbWeight=8 PerfScore 16.00 G_M40789_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0140 {r6 r8}, byref, isz lsl r0, r10, 1 @@ -158,7 +156,7 @@ G_M40789_IG04: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0140 {r6 r8}, ldr r0, [r0+0x04] ; byrRegs -[r0] cmp r3, r9
- bhs G_M40789_IG33
+ bhs G_M40789_IG32
lsls r1, r3, 1 uxtb lr, r2 strh lr, [r8+r1] @@ -181,7 +179,7 @@ G_M40789_IG07: ; bbWeight=16, gcrefRegs=0010 {r4}, byrefRegs=0140 {r6 r8} ;; size=10 bbWeight=16 PerfScore 64.00 G_M40789_IG08: ; bbWeight=128, gcrefRegs=0010 {r4}, byrefRegs=0140 {r6 r8}, byref, isz cmp r1, r9
- bhs G_M40789_IG33
+ bhs G_M40789_IG32
add lr, r1, 1 lsls r1, r1, 1 uxtb r12, r2 @@ -254,8 +252,8 @@ G_M40789_IG13: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0140 {r6 r8}, sub r2, r2, 0xd800 movw r0, 0xd1ff cmp r2, r0
- bls SHORT G_M40789_IG29 - ;; size=22 bbWeight=2 PerfScore 14.00
+ bls G_M40789_IG33 + ;; size=24 bbWeight=2 PerfScore 14.00
G_M40789_IG14: ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0140 {r6 r8}, byref, isz movw lr, 0xd1ff str r3, [sp+0x34] // [V07 loc1] @@ -297,7 +295,7 @@ G_M40789_IG17: ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0140 {r6 r8}, ;; size=32 bbWeight=4 PerfScore 40.00 G_M40789_IG18: ; bbWeight=4, gcVars=0000000000008000 {V49}, gcrefRegs=0010 {r4}, byrefRegs=4140 {r6 r8 lr}, gcvars, byref, isz cmp r12, 0
- beq SHORT G_M40789_IG33
+ beq SHORT G_M40789_IG32
;; size=6 bbWeight=4 PerfScore 8.00 G_M40789_IG19: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=4140 {r6 r8 lr}, byref, isz strh r2, [lr] @@ -397,10 +395,10 @@ G_M40789_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs -[r4] ; byrRegs -[r6 r8] ldr r3, [sp+0x34] // [V07 loc1]
- b SHORT G_M40789_IG33
+ b SHORT G_M40789_IG32
;; size=4 bbWeight=2 PerfScore 4.00 G_M40789_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r0, 2
+ movs r0, 0
;; size=2 bbWeight=0.50 PerfScore 0.50 G_M40789_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r4, [sp+0x6C] // [V03 arg3] @@ -417,11 +415,11 @@ G_M40789_IG31: ; bbWeight=1, epilog, nogc, extend ;; size=10 bbWeight=1 PerfScore 4.00 G_M40789_IG32: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; byrRegs -[r4]
- movs r0, 0
+ movs r0, 1
b SHORT G_M40789_IG30 ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M40789_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movs r0, 1
+ movs r0, 2
b SHORT G_M40789_IG30 ;; size=4 bbWeight=0.50 PerfScore 1.00 G_M40789_IG34: ; bbWeight=0, gcVars=0000000000008000 {V49}, gcrefRegs=0010 {r4}, byrefRegs=4140 {r6 r8 lr}, gcvars, byref, isz @@ -508,7 +506,7 @@ G_M40789_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 686, prolog size 20, PerfScore 2606.50, instruction count 256, allocated bytes for code 686 (MethodHash=94fc60aa) for method System.Text.Encodings.Web.OptimizedInboxTextEncoder:Encode(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier0-FullOpts)
+; Total bytes of code 688, prolog size 20, PerfScore 2606.50, instruction count 256, allocated bytes for code 688 (MethodHash=94fc60aa) for method System.Text.Encodings.Web.OptimizedInboxTextEncoder:Encode(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -520,7 +518,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 343 (0x00157) Actual length = 686 (0x0002ae)
+ Function Length : 344 (0x00158) Actual length = 688 (0x0002b0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+0.35%) : 29970.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 43,194.50) ref -> r5 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.RegexNodeConverter> ; V01 arg1 [V01,T219] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V02 loc0 [V02,T236] ( 6, 4 ) ref -> [sp+0xD0] class-hnd exact spill-single-def <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
+; V02 loc0 [V02,T236] ( 6, 4 ) ref -> [sp+0xC0] class-hnd exact spill-single-def <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
; V03 loc1 [V03,T17] ( 20,125 ) ref -> r7 class-hnd exact single-def <<unknown class>> ; V04 loc2 [V04 ] ( 7, 32 ) struct (12) [sp+0x3A4] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ; V05 loc3 [V05,T04] ( 26,150.50) ref -> r8 class-hnd <System.Text.RegularExpressions.RegexNode> ; V06 loc4 [V06,T08] ( 19,132 ) ref -> r9 class-hnd <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
-; V07 loc5 [V07,T09] ( 10,132 ) ref -> [sp+0xCC] class-hnd spill-single-def <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V07 loc5 [V07,T09] ( 10,132 ) ref -> [sp+0xBC] class-hnd spill-single-def <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
;* V08 loc6 [V08 ] ( 0, 0 ) ubyte -> zero-ref ;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V10 loc8 [V10,T31] ( 4, 72 ) ref -> r4 class-hnd exact <System.String> @@ -24,17 +24,17 @@ ; V13 loc11 [V13,T00] ( 14,276 ) int -> r9 ; V14 loc12 [V14,T134] ( 5, 14 ) ref -> r4 class-hnd <System.Text.RegularExpressions.Symbolic.BDD> ; V15 loc13 [V15,T208] ( 2, 8 ) ref -> r9 class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
-; V16 loc14 [V16,T209] ( 2, 8 ) ref -> [sp+0xC8] class-hnd exact spill-single-def <<unknown class>>
+; V16 loc14 [V16,T209] ( 2, 8 ) ref -> [sp+0xB8] class-hnd exact spill-single-def <<unknown class>>
;* V17 loc15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V18 loc16 [V18 ] ( 0, 0 ) ubyte -> zero-ref ; V19 loc17 [V19,T207] ( 3, 8 ) ubyte -> r2 ;* V20 loc18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V21 loc19 [V21,T185] ( 3, 10 ) ref -> r4 class-hnd exact <System.Text.RegularExpressions.Symbolic.BDD>
-; V22 loc20 [V22,T314] ( 2, 0.50) ref -> r6 class-hnd exact <System.String> -; V23 loc21 [V23,T315] ( 10, 0 ) ref -> r4 class-hnd <System.String> -; V24 loc22 [V24,T312] ( 6, 1.50) ubyte -> r3
+; V22 loc20 [V22,T310] ( 2, 0.50) ref -> r6 class-hnd exact <System.String> +; V23 loc21 [V23,T311] ( 10, 0 ) ref -> r4 class-hnd <System.String> +; V24 loc22 [V24,T308] ( 6, 1.50) ubyte -> r3
;* V25 loc23 [V25 ] ( 0, 0 ) ubyte -> zero-ref
-; V26 loc24 [V26,T69] ( 2, 36 ) ref -> r4 class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V26 loc24 [V26,T65] ( 2, 36 ) ref -> r4 class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V27 loc25 [V27,T11] ( 5,132 ) int -> r8 ;* V28 loc26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]> ; V29 loc27 [V29,T71] ( 6, 24 ) ref -> r8 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -50,17 +50,17 @@ ; V39 tmp2 [V39,T220] ( 3, 6 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V40 tmp3 [V40 ] ( 0, 0 ) struct (12) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ; V41 tmp4 [V41,T12] ( 2,128 ) ref -> r1 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
-; V42 tmp5 [V42,T20] ( 3, 96 ) ref -> [sp+0xC4] class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode> -; V43 tmp6 [V43,T13] ( 2,128 ) ref -> [sp+0xC0] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
+; V42 tmp5 [V42,T20] ( 3, 96 ) ref -> [sp+0xB4] class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode> +; V43 tmp6 [V43,T13] ( 2,128 ) ref -> [sp+0xB0] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
;* V44 tmp7 [V44 ] ( 0, 0 ) struct (12) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]>
-; V45 tmp8 [V45,T316] ( 3, 0 ) ref -> r5 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V46 tmp9 [V46,T03] ( 4,160 ) ref -> [sp+0xBC] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> -; V47 tmp10 [V47,T84] ( 4, 24 ) ref -> [sp+0xB8] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V45 tmp8 [V45,T312] ( 3, 0 ) ref -> r5 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V46 tmp9 [V46,T03] ( 4,160 ) ref -> [sp+0xAC] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> +; V47 tmp10 [V47,T84] ( 4, 24 ) ref -> [sp+0xA8] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
;* V48 tmp11 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[System.__Canon]> ;* V49 tmp12 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.CharSetSolver> ; V50 tmp13 [V50,T85] ( 4, 24 ) ref -> r4 class-hnd exact "impAppendStmt" <<unknown class>> ;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.CharSetSolver>
-; V52 tmp15 [V52,T115] ( 2, 16 ) ref -> [sp+0xB4] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V52 tmp15 [V52,T115] ( 2, 16 ) ref -> [sp+0xA4] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
;* V53 tmp16 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V54 tmp17 [V54 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V55 tmp18 [V55 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" @@ -70,17 +70,17 @@ ;* V59 tmp22 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> ;* V60 tmp23 [V60 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V62 tmp25 [V62,T33] ( 14, 64 ) ref -> [sp+0xB0]
+; V62 tmp25 [V62,T33] ( 14, 64 ) ref -> [sp+0xA0]
; V63 tmp26 [V63,T72] ( 6, 24 ) ref -> r8
-; V64 tmp27 [V64,T253] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V64 tmp27 [V64,T257] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V65 tmp28 [V65,T237] ( 3, 5 ) int -> r0 "Inlining Arg"
-; V66 tmp29 [V66,T250] ( 4, 3 ) int -> r2 "Inline stloc first use temp" -; V67 tmp30 [V67,T252] ( 3, 2.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V66 tmp29 [V66,T254] ( 4, 3 ) int -> r2 "Inline stloc first use temp" +; V67 tmp30 [V67,T256] ( 3, 2.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V68 tmp31 [V68 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ;* V69 tmp32 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V70 tmp33 [V70,T105] ( 3, 20 ) ref -> r8 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD> ; V71 tmp34 [V71 ] ( 1, 4 ) ubyte -> [sp+0x39C] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V72 tmp35 [V72,T186] ( 3, 10 ) byref -> [sp+0xAC] spill-single-def "Inline stloc first use temp"
+; V72 tmp35 [V72,T186] ( 3, 10 ) byref -> [sp+0x9C] spill-single-def "Inline stloc first use temp"
; V73 tmp36 [V73,T116] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> ; V74 tmp37 [V74,T135] ( 4, 14 ) ref -> r1 ;* V75 tmp38 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -92,16 +92,16 @@ ;* V81 tmp44 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V82 tmp45 [V82 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V83 tmp46 [V83 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V84 tmp47 [V84,T144] ( 5, 10 ) ref -> [sp+0xA8] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V84 tmp47 [V84,T144] ( 5, 10 ) ref -> [sp+0x98] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V85 tmp48 [V85,T50] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V86 tmp49 [V86,T239] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V86 tmp49 [V86,T243] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V87 tmp50 [V87,T163] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V88 tmp51 [V88,T95] ( 5, 20 ) struct (28) [sp+0x380] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V89 tmp52 [V89,T221] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V90 tmp53 [V90 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V91 tmp54 [V91,T256] ( 0, 0 ) ref -> zero-ref
+;* V91 tmp54 [V91,T260] ( 0, 0 ) ref -> zero-ref
;* V92 tmp55 [V92 ] ( 0, 0 ) ref -> zero-ref
-;* V93 tmp56 [V93,T257] ( 0, 0 ) ref -> zero-ref
+;* V93 tmp56 [V93,T261] ( 0, 0 ) ref -> zero-ref
; V94 tmp57 [V94,T164] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V95 tmp58 [V95,T96] ( 5, 20 ) struct (28) [sp+0x364] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V96 tmp59 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -109,7 +109,7 @@ ;* V98 tmp61 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V99 tmp62 [V99,T106] ( 3, 20 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon> ; V100 tmp63 [V100 ] ( 1, 4 ) ubyte -> [sp+0x360] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V101 tmp64 [V101,T187] ( 3, 10 ) byref -> [sp+0xA4] spill-single-def "Inline stloc first use temp"
+; V101 tmp64 [V101,T187] ( 3, 10 ) byref -> [sp+0x94] spill-single-def "Inline stloc first use temp"
; V102 tmp65 [V102,T117] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> ; V103 tmp66 [V103,T136] ( 4, 14 ) ref -> r1 ;* V104 tmp67 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -121,16 +121,16 @@ ;* V110 tmp73 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V111 tmp74 [V111 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V112 tmp75 [V112 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V113 tmp76 [V113,T145] ( 5, 10 ) ref -> [sp+0xA0] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V113 tmp76 [V113,T145] ( 5, 10 ) ref -> [sp+0x90] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V114 tmp77 [V114,T51] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V115 tmp78 [V115,T240] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V115 tmp78 [V115,T244] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V116 tmp79 [V116,T165] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V117 tmp80 [V117,T97] ( 5, 20 ) struct (28) [sp+0x344] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V118 tmp81 [V118,T222] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V119 tmp82 [V119 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V120 tmp83 [V120,T258] ( 0, 0 ) ref -> zero-ref
+;* V120 tmp83 [V120,T262] ( 0, 0 ) ref -> zero-ref
;* V121 tmp84 [V121 ] ( 0, 0 ) ref -> zero-ref
-;* V122 tmp85 [V122,T259] ( 0, 0 ) ref -> zero-ref
+;* V122 tmp85 [V122,T263] ( 0, 0 ) ref -> zero-ref
; V123 tmp86 [V123,T166] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V124 tmp87 [V124,T98] ( 5, 20 ) struct (28) [sp+0x328] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V125 tmp88 [V125 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -141,7 +141,7 @@ ;* V130 tmp93 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V131 tmp94 [V131,T107] ( 3, 20 ) ref -> r4 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD> ; V132 tmp95 [V132 ] ( 1, 4 ) ubyte -> [sp+0x324] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V133 tmp96 [V133,T188] ( 3, 10 ) byref -> [sp+0x9C] spill-single-def "Inline stloc first use temp"
+; V133 tmp96 [V133,T188] ( 3, 10 ) byref -> [sp+0x8C] spill-single-def "Inline stloc first use temp"
; V134 tmp97 [V134,T118] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> ; V135 tmp98 [V135,T137] ( 4, 14 ) ref -> r1 ;* V136 tmp99 [V136 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -153,22 +153,22 @@ ;* V142 tmp105 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V143 tmp106 [V143 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V144 tmp107 [V144 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V145 tmp108 [V145,T146] ( 5, 10 ) ref -> [sp+0x98] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V145 tmp108 [V145,T146] ( 5, 10 ) ref -> [sp+0x88] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V146 tmp109 [V146,T52] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V147 tmp110 [V147,T241] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V147 tmp110 [V147,T245] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V148 tmp111 [V148,T167] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V149 tmp112 [V149,T99] ( 5, 20 ) struct (28) [sp+0x308] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V150 tmp113 [V150,T223] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V151 tmp114 [V151 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V152 tmp115 [V152,T260] ( 0, 0 ) ref -> zero-ref
+;* V152 tmp115 [V152,T264] ( 0, 0 ) ref -> zero-ref
;* V153 tmp116 [V153 ] ( 0, 0 ) ref -> zero-ref
-;* V154 tmp117 [V154,T261] ( 0, 0 ) ref -> zero-ref
+;* V154 tmp117 [V154,T265] ( 0, 0 ) ref -> zero-ref
; V155 tmp118 [V155,T168] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V156 tmp119 [V156,T100] ( 5, 20 ) struct (28) [sp+0x2EC] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V157 tmp120 [V157 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V158 tmp121 [V158 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V159 tmp122 [V159 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V160 tmp123 [V160,T06] ( 3,144 ) ref -> [sp+0x94] class-hnd exact spill-single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
+; V160 tmp123 [V160,T06] ( 3,144 ) ref -> [sp+0x84] class-hnd exact spill-single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
; V161 tmp124 [V161 ] ( 1, 32 ) ubyte -> [sp+0x2E8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V162 tmp125 [V162,T32] ( 3, 72 ) byref -> r6 "Inline stloc first use temp" ; V163 tmp126 [V163,T14] ( 2,128 ) ref -> r1 class-hnd "dup spill" <System.Object> @@ -182,8 +182,8 @@ ;* V171 tmp134 [V171 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V172 tmp135 [V172 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V173 tmp136 [V173 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V174 tmp137 [V174,T37] ( 5, 40 ) ref -> [sp+0x90] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V175 tmp138 [V175,T02] ( 10,160 ) ref -> [sp+0x8C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V174 tmp137 [V174,T37] ( 5, 40 ) ref -> [sp+0x80] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V175 tmp138 [V175,T02] ( 10,160 ) ref -> [sp+0x7C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
;* V176 tmp139 [V176,T133] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V177 tmp140 [V177,T41] ( 3, 48 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V178 tmp141 [V178,T23] ( 5, 80 ) struct (28) [sp+0x2CC] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> @@ -202,14 +202,14 @@ ; V191 tmp154 [V191,T15] ( 2,128 ) ref -> r3 "CASTCLASS eval op1" ;* V192 tmp155 [V192 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V193 tmp156 [V193,T26] ( 4, 76 ) ref -> r3 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V194 tmp157 [V194,T67] ( 3, 36 ) ref -> r3 "CASTCLASS eval op1"
+; V194 tmp157 [V194,T63] ( 3, 36 ) ref -> r3 "CASTCLASS eval op1"
; V195 tmp158 [V195,T108] ( 3, 20 ) int -> r12 "fgMakeTemp is creating a new local variable" ; V196 tmp159 [V196,T28] ( 6, 76 ) ref -> lr class-hnd "spilling QMark2" <<unknown class>> ; V197 tmp160 [V197,T43] ( 3, 48 ) ref -> r0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode> ; V198 tmp161 [V198,T16] ( 2,128 ) ref -> r0 "CASTCLASS eval op1" ;* V199 tmp162 [V199 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V200 tmp163 [V200,T27] ( 4, 76 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V201 tmp164 [V201,T68] ( 3, 36 ) ref -> r1 "CASTCLASS eval op1"
+; V201 tmp164 [V201,T64] ( 3, 36 ) ref -> r1 "CASTCLASS eval op1"
; V202 tmp165 [V202,T109] ( 3, 20 ) int -> r12 "fgMakeTemp is creating a new local variable" ; V203 tmp166 [V203,T29] ( 6, 76 ) ref -> lr class-hnd "spilling QMark2" <<unknown class>> ; V204 tmp167 [V204,T44] ( 3, 48 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]> @@ -218,7 +218,7 @@ ; V207 tmp170 [V207,T25] ( 4, 80 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V208 tmp171 [V208 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ;* V209 tmp172 [V209 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V210 tmp173 [V210,T87] ( 4, 24 ) ref -> [sp+0x88] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
+; V210 tmp173 [V210,T87] ( 4, 24 ) ref -> [sp+0x78] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
; V211 tmp174 [V211 ] ( 1, 4 ) ubyte -> [sp+0x2A4] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V212 tmp175 [V212,T190] ( 3, 10 ) byref -> r6 "Inline stloc first use temp" ; V213 tmp176 [V213,T119] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> @@ -232,21 +232,21 @@ ;* V221 tmp184 [V221 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V222 tmp185 [V222 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V223 tmp186 [V223 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V224 tmp187 [V224,T147] ( 5, 10 ) ref -> [sp+0x84] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V224 tmp187 [V224,T147] ( 5, 10 ) ref -> [sp+0x74] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V225 tmp188 [V225,T53] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V226 tmp189 [V226,T242] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V226 tmp189 [V226,T246] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V227 tmp190 [V227,T169] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V228 tmp191 [V228,T101] ( 5, 20 ) struct (28) [sp+0x288] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V229 tmp192 [V229,T224] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V230 tmp193 [V230 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V231 tmp194 [V231,T262] ( 0, 0 ) ref -> zero-ref
+;* V231 tmp194 [V231,T266] ( 0, 0 ) ref -> zero-ref
;* V232 tmp195 [V232 ] ( 0, 0 ) ref -> zero-ref
-;* V233 tmp196 [V233,T263] ( 0, 0 ) ref -> zero-ref
+;* V233 tmp196 [V233,T267] ( 0, 0 ) ref -> zero-ref
; V234 tmp197 [V234,T170] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V235 tmp198 [V235,T102] ( 5, 20 ) struct (28) [sp+0x26C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V236 tmp199 [V236 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V237 tmp200 [V237 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V238 tmp201 [V238,T88] ( 4, 24 ) ref -> [sp+0x80] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
+; V238 tmp201 [V238,T88] ( 4, 24 ) ref -> [sp+0x70] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
; V239 tmp202 [V239 ] ( 1, 4 ) ubyte -> [sp+0x268] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V240 tmp203 [V240,T191] ( 3, 10 ) byref -> r6 "Inline stloc first use temp" ; V241 tmp204 [V241,T120] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> @@ -260,147 +260,147 @@ ;* V249 tmp212 [V249 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V250 tmp213 [V250 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V251 tmp214 [V251 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V252 tmp215 [V252,T148] ( 5, 10 ) ref -> [sp+0x7C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V252 tmp215 [V252,T148] ( 5, 10 ) ref -> [sp+0x6C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V253 tmp216 [V253,T54] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V254 tmp217 [V254,T243] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V254 tmp217 [V254,T247] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V255 tmp218 [V255,T171] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V256 tmp219 [V256,T103] ( 5, 20 ) struct (28) [sp+0x24C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V257 tmp220 [V257,T225] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V258 tmp221 [V258 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ...

+10 (+1.47%) : 93376.dasm - System.Threading.Tasks.TaskReplicator+Replica:.ctor(System.Threading.Tasks.TaskReplicator,int,long):this (Tier1)

@@ -17,7 +17,7 @@ ; V05 tmp1 [V05,T16] ( 2, 4 ) ref -> r5 class-hnd single-def "dup spill" <System.Action`1[System.Object]> ; V06 tmp2 [V06,T19] ( 2, 2 ) ref -> r6 single-def ; V07 tmp3 [V07,T13] ( 5, 4 ) ref -> r5
-; V08 tmp4 [V08,T05] ( 15, 18 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
+; V08 tmp4 [V08,T05] ( 16, 18 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
; V09 tmp5 [V09,T25] ( 4, 0 ) ref -> r5 class-hnd exact single-def "NewObj constructor temp" <System.Action`1[System.Object]> ;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken> ;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Threading.CancellationToken> @@ -35,31 +35,27 @@ ;* V23 tmp19 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp21 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V26 tmp22 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V27 tmp23 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V28 tmp24 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V29 tmp25 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V30 tmp26 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Threading.ExecutionContext> -; V31 tmp27 [V31,T10] ( 9, 5 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.Threading.ExecutionContext> -; V32 tmp28 [V32,T17] ( 2, 4 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Threading.Thread> -; V33 tmp29 [V33,T14] ( 4, 4 ) ref -> r3 -; V34 tmp30 [V34,T15] ( 3, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>> -;* V35 tmp31 [V35,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V36 tmp32 [V36,T00] ( 5, 52 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]> -; V37 tmp33 [V37,T07] ( 3, 17 ) ref -> r5 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V38 tmp34 [V38,T01] ( 7, 49 ) int -> r7 "Inline stloc first use temp" -; V39 tmp35 [V39,T03] ( 3, 24 ) int -> r1 "Inline stloc first use temp" -;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V41 tmp37 [V41,T04] ( 3, 24 ) int -> r10 "Inline stloc first use temp" -; V42 tmp38 [V42,T02] ( 3, 48 ) byref -> r0 "Inlining Arg" -;* V43 tmp39 [V43 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._source (fldOffset=0x0)" P-INDEP -;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._source (fldOffset=0x0)" P-INDEP -;* V46 tmp42 [V46,T22] ( 0, 0 ) ref -> zero-ref single-def "field V19._source (fldOffset=0x0)" P-INDEP -; V47 cse0 [V47,T06] ( 4, 18 ) byref -> r8 "CSE - aggressive" -; V48 rat0 [V48,T23] ( 1, 1 ) int -> [sp+0x28] do-not-enreg[] "field V03.lo (fldOffset=0x0)" P-DEP -; V49 rat1 [V49,T24] ( 1, 1 ) int -> [sp+0x2C] do-not-enreg[] "field V03.hi (fldOffset=0x4)" P-DEP -; V50 rat2 [V50,T09] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
+;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline return value spill temp" <System.Threading.ExecutionContext> +; V27 tmp23 [V27,T10] ( 9, 5 ) ref -> r8 class-hnd "Inline stloc first use temp" <System.Threading.ExecutionContext> +; V28 tmp24 [V28,T17] ( 2, 4 ) ref -> r3 class-hnd exact single-def "dup spill" <System.Threading.Thread> +; V29 tmp25 [V29,T14] ( 4, 4 ) ref -> r3 +; V30 tmp26 [V30,T15] ( 3, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <<unknown class>> +;* V31 tmp27 [V31,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V32 tmp28 [V32,T00] ( 5, 52 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]> +; V33 tmp29 [V33,T07] ( 3, 17 ) ref -> r7 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V34 tmp30 [V34,T01] ( 7, 49 ) int -> r5 "Inline stloc first use temp" +; V35 tmp31 [V35,T03] ( 3, 24 ) int -> r1 "Inline stloc first use temp" +;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V37 tmp33 [V37,T04] ( 3, 24 ) int -> r10 "Inline stloc first use temp" +; V38 tmp34 [V38,T02] ( 3, 48 ) byref -> r0 "Inlining Arg" +;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._source (fldOffset=0x0)" P-INDEP +;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._source (fldOffset=0x0)" P-INDEP +;* V42 tmp38 [V42,T22] ( 0, 0 ) ref -> zero-ref single-def "field V19._source (fldOffset=0x0)" P-INDEP +; V43 cse0 [V43,T06] ( 4, 18 ) byref -> r8 "CSE - aggressive" +; V44 rat0 [V44,T23] ( 1, 1 ) int -> [sp+0x28] do-not-enreg[] "field V03.lo (fldOffset=0x0)" P-DEP +; V45 rat1 [V45,T24] ( 1, 1 ) int -> [sp+0x2C] do-not-enreg[] "field V03.hi (fldOffset=0x4)" P-DEP +; V46 rat2 [V46,T09] ( 3, 6 ) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 4 @@ -132,29 +128,22 @@ G_M30571_IG03: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {} ldr r0, [r7+0x1C] dmb 15 cmp r0, 0
- beq SHORT G_M30571_IG04 - movw r0, 0xd1ff - movt r0, 0xd1ff - movw r1, 0xd1ff - movt r1, 0xd1ff - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcr arg pop 0 - ;; size=98 bbWeight=1 PerfScore 32.00 -G_M30571_IG04: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+ bne G_M30571_IG20
ldr r0, [r7+0x04] ; gcrRegs +[r0] cmp r0, 0
- beq G_M30571_IG20
+ beq G_M30571_IG21 + ;; size=80 bbWeight=1 PerfScore 27.00 +G_M30571_IG04: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0]
movs r5, 0 dmb 15 str r5, [r7+0x1C] ldr r0, [r7+0x14]
+ ; gcrRegs +[r0]
cmp r0, 0
- bne G_M30571_IG21 - ;; size=24 bbWeight=1 PerfScore 9.00
+ bne G_M30571_IG22 + ;; size=16 bbWeight=1 PerfScore 6.00
G_M30571_IG05: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] movw r0, 0xd1ff @@ -185,7 +174,7 @@ G_M30571_IG06: ; bbWeight=1, gcrefRegs=0098 {r3 r4 r7}, byrefRegs=0000 {} ldr r8, [r3+0x04] ; gcrRegs +[r8] cmp r8, 0
- bne G_M30571_IG24
+ bne G_M30571_IG25
movw r1, 0xd1ff movt r1, 0xd1ff ldr r8, [r1] @@ -193,7 +182,7 @@ G_M30571_IG06: ; bbWeight=1, gcrefRegs=0098 {r3 r4 r7}, byrefRegs=0000 {} G_M30571_IG07: ; bbWeight=1, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3] cmp r8, 0
- beq G_M30571_IG25
+ beq G_M30571_IG26
;; size=8 bbWeight=1 PerfScore 2.00 G_M30571_IG08: ; bbWeight=1, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz movw r1, 0xd1ff @@ -201,7 +190,7 @@ G_M30571_IG08: ; bbWeight=1, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {} ldr r1, [r1] ; gcrRegs +[r1] cmp r8, r1
- bne G_M30571_IG26
+ bne G_M30571_IG27
;; size=16 bbWeight=1 PerfScore 5.00 G_M30571_IG09: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref ; gcrRegs -[r1 r8] @@ -221,54 +210,54 @@ G_M30571_IG09: ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b ldr r6, [r9+0x08] ; gcrRegs +[r6] dmb 15
- ldr r5, [r6+0x04] - ; gcrRegs +[r5]
+ ldr r7, [r6+0x04] + ; gcrRegs +[r7]
;; size=32 bbWeight=1 PerfScore 10.00
-G_M30571_IG10: ; bbWeight=8, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
+G_M30571_IG10: ; bbWeight=8, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r1]
- ldr r7, [r6+0x94]
+ ldr r5, [r6+0x94]
dmb 15 ldr r1, [r6+0x0C]
- ands r1, r7 - ldr r0, [r5+0x04]
+ ands r1, r5 + ldr r0, [r7+0x04]
cmp r1, r0 bhs SHORT G_M30571_IG17 lsls r1, r1, 3 adds r1, 8
- add r8, r5, r1
+ add r8, r7, r1
; byrRegs +[r8] ldr r1, [r8+0x04] dmb 15
- sub r10, r1, r7
+ sub r10, r1, r5
cmp r10, 0 bne SHORT G_M30571_IG12 add r0, r6, 148 ; byrRegs +[r0] cmp r0, 0 beq SHORT G_M30571_IG14
- adds r1, r7, 1 - mov r2, r7
+ adds r1, r5, 1 + mov r2, r5
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method> ; byrRegs -[r0] ; gcr arg pop 0
- cmp r0, r7
+ cmp r0, r5
bne SHORT G_M30571_IG10 ;; size=70 bbWeight=8 PerfScore 200.00 G_M30571_IG11: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0100 {r8}, byref, isz
- ; gcrRegs -[r5-r6 r9]
+ ; gcrRegs -[r6-r7 r9]
b SHORT G_M30571_IG15 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M30571_IG12: ; bbWeight=8, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r5-r6 r9]
+G_M30571_IG12: ; bbWeight=8, gcrefRegs=02D0 {r4 r6 r7 r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r6-r7 r9]
; byrRegs -[r8] cmp r10, 0 bge SHORT G_M30571_IG10 ;; size=6 bbWeight=8 PerfScore 16.00 G_M30571_IG13: ; bbWeight=1, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r5-r6] - b SHORT G_M30571_IG27
+ ; gcrRegs -[r6-r7] + b SHORT G_M30571_IG28
;; size=2 bbWeight=1 PerfScore 1.00 G_M30571_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[r4 r9] @@ -291,7 +280,7 @@ G_M30571_IG15: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0100 {r8}, by blx r12 // CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[r1 r4] ; byrRegs -[r0]
- adds r0, r7, 1
+ adds r0, r5, 1
dmb 15 str r0, [r8+0x04] ;; size=24 bbWeight=1 PerfScore 8.00 @@ -351,6 +340,22 @@ G_M30571_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=16 bbWeight=0 PerfScore 0.00 G_M30571_IG20: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r4 r7]
+ movw r0, 0xd1ff + movt r0, 0xd1ff + movw r1, 0xd1ff + movt r1, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcr arg pop 0 + ldr r0, [r7+0x04] + ; gcrRegs +[r0] + cmp r0, 0 + bne G_M30571_IG04 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M30571_IG21: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0]
mov r5, 0x2000000 dmb 15 str r5, [r7+0x1C] @@ -359,21 +364,21 @@ G_M30571_IG20: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, b cmp r0, 0 beq G_M30571_IG05 ;; size=18 bbWeight=0 PerfScore 0.00
-G_M30571_IG21: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M30571_IG22: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldr r0, [r7+0x14] ; gcrRegs +[r0] ldr r0, [r0+0x04] cmp r0, 0
- beq SHORT G_M30571_IG22
+ beq SHORT G_M30571_IG23
movs r0, 0 ; gcrRegs -[r0]
- b SHORT G_M30571_IG23
+ b SHORT G_M30571_IG24
;; size=12 bbWeight=0 PerfScore 0.00
-G_M30571_IG22: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
+G_M30571_IG23: ; bbWeight=0, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
...

benchmarks.run_tiered.linux.arm.checked.mch

-28 (-45.16%) : 747.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)

@@ -5,47 +5,31 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[]
+; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [sp+0x00] do-not-enreg[]
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; TEMP_01 byref -> [r11-0x14]
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M18678_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r10,r11,lr} - sub sp, 16 - add r11, sp, 24 - movs r1, 0 - str r1, [sp+0x04]
+ push {r2,r3,r4,r10,r11,lr} + add r11, sp, 16
str r0, [r11-0x0C]
- str r0, [sp+0x08] - ;; size=20 bbWeight=1 PerfScore 7.00
+ str r0, [sp] + ;; size=14 bbWeight=1 PerfScore 4.00
G_M18678_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x08]
+ ldr r0, [sp]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_GETGENERICS_NONGCSTATIC_BASE ; byrRegs +[r0]
- mov r3, r0 - ; byrRegs +[r3] - str r3, [sp+0x04] - mov r0, 512 - ; byrRegs -[r0] - movs r1, 4 - movw r2, 0xd1ff - movt r2, 0xd1ff - blx r2 // CORINFO_HELP_UDIV - ; byrRegs -[r3] - ldr r3, [sp+0x04] - ; byrRegs +[r3] - str r0, [r3+0x08] - ;; size=36 bbWeight=1 PerfScore 13.00
+ movs r3, 128 + str r3, [r0+0x08] + ;; size=16 bbWeight=1 PerfScore 6.00
G_M18678_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 18, PerfScore 22.00, instruction count 22, allocated bytes for code 62 (MethodHash=e282b709) for method System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
+; Total bytes of code 34, prolog size 12, PerfScore 11.00, instruction count 11, allocated bytes for code 34 (MethodHash=e282b709) for method System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
; ============================================================ Unwind Info: @@ -57,11 +41,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - AC 10 pop {r4,r10,r11,lr} ; opsize 32
+ AC 1C pop {r2,r3,r4,r10,r11,lr} ; opsize 32 + FF end
FF end

-6 (-42.86%) : 18293.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data @@ -12,23 +12,20 @@ ;* V01 tmp1 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune> ;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V03 tmp3 [V03 ] ( 0, 0 ) int -> zero-ref "field V01._value (fldOffset=0x0)" P-INDEP
-;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7284_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M7284_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r0, 0xd1ff ;; size=4 bbWeight=1 PerfScore 1.00 G_M7284_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 14, prolog size 6, PerfScore 4.00, instruction count 4, allocated bytes for code 14 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
+; Total bytes of code 8, prolog size 2, PerfScore 3.00, instruction count 3, allocated bytes for code 8 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
; ============================================================ Unwind Info: @@ -40,11 +37,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ Function Length : 4 (0x00004) Actual length = 8 (0x000008)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-38 (-33.33%) : 5704.dasm - System.Span`1[ubyte]:Clear():this (Tier0)

@@ -5,22 +5,16 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 this [V00 ] ( 1, 1 ) byref -> [sp+0x0C] do-not-enreg[] this
+; V00 this [V00 ] ( 1, 1 ) byref -> [sp+0x04] do-not-enreg[] this
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[] "argument with side effect" -; V03 tmp2 [V03 ] ( 1, 1 ) byref -> [sp+0x04] do-not-enreg[] must-init "argument with side effect" -; TEMP_01 int -> [r11-0x18]
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M36683_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r4,r10,r11,lr} - sub sp, 16 - add r11, sp, 24 - movs r1, 0 - str r1, [sp+0x04] // [V03 tmp2] - str r0, [sp+0x0C] // [V00 this] - ;; size=16 bbWeight=1 PerfScore 6.00
+ push {r2,r3,r4,r10,r11,lr} + add r11, sp, 16 + str r0, [sp+0x04] + ;; size=10 bbWeight=1 PerfScore 3.00
G_M36683_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff @@ -28,41 +22,31 @@ G_M36683_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, blx r3 // <unknown method> cmp r0, 0 beq SHORT G_M36683_IG04
- ldr r3, [sp+0x0C]
+ ldr r3, [sp+0x04]
; byrRegs +[r3]
- ldr r3, [r3] - str r3, [sp+0x04] // [V03 tmp2] - ldr r3, [sp+0x0C] // [V00 this]
ldr r3, [r3+0x04] ; byrRegs -[r3]
- str r3, [sp] // [TEMP_01] - movs r0, 1 - movs r1, 4 - movw r2, 0xd1ff - movt r2, 0xd1ff - blx r2 // CORINFO_HELP_UDIV - ldr r3, [sp] // [TEMP_01] - mul r3, r3, r0 - str r3, [sp+0x08] // [V02 tmp1] - ldr r1, [sp+0x08] // [V02 tmp1] - ldr r0, [sp+0x04] // [V03 tmp2]
+ movs r1, 0 + ldr r3, [sp+0x04] + ; byrRegs +[r3] + ldr r0, [r3]
; byrRegs +[r0] movw r3, 0xd1ff
+ ; byrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ; byrRegs -[r0]
- ;; size=66 bbWeight=1 PerfScore 26.00
+ ;; size=38 bbWeight=1 PerfScore 15.00
G_M36683_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
G_M36683_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ldr r3, [sp+0x0C] // [V00 this]
+ ldr r3, [sp+0x04]
; byrRegs +[r3] ldr r0, [r3] ; byrRegs +[r0]
- ldr r3, [sp+0x0C] // [V00 this]
+ ldr r3, [sp+0x04]
ldr r1, [r3+0x04] movw r3, 0xd1ff ; byrRegs -[r3] @@ -72,11 +56,10 @@ G_M36683_IG04: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref ; byrRegs -[r0] ;; size=20 bbWeight=1 PerfScore 8.00 G_M36683_IG05: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 114, prolog size 14, PerfScore 44.00, instruction count 44, allocated bytes for code 114 (MethodHash=0cfe70b4) for method System.Span`1[ubyte]:Clear():this (Tier0)
+; Total bytes of code 76, prolog size 8, PerfScore 28.00, instruction count 28, allocated bytes for code 76 (MethodHash=0cfe70b4) for method System.Span`1[ubyte]:Clear():this (Tier0)
; ============================================================ Unwind Info: @@ -88,7 +71,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 57 (0x00039) Actual length = 114 (0x000072)
+ Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -100,7 +83,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - AC 10 pop {r4,r10,r11,lr} ; opsize 32
+ AC 1C pop {r2,r3,r4,r10,r11,lr} ; opsize 32 + FF end
FF end

+24 (+0.35%) : 22656.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 43,194.50) ref -> r5 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.RegexNodeConverter> ; V01 arg1 [V01,T219] ( 4, 4 ) ref -> r4 class-hnd single-def <System.Text.RegularExpressions.RegexNode>
-; V02 loc0 [V02,T236] ( 6, 4 ) ref -> [sp+0xD0] class-hnd exact spill-single-def <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
+; V02 loc0 [V02,T236] ( 6, 4 ) ref -> [sp+0xC0] class-hnd exact spill-single-def <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
; V03 loc1 [V03,T17] ( 20,125 ) ref -> r7 class-hnd exact single-def <<unknown class>> ; V04 loc2 [V04 ] ( 7, 32 ) struct (12) [sp+0x3A4] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ; V05 loc3 [V05,T04] ( 26,150.50) ref -> r8 class-hnd <System.Text.RegularExpressions.RegexNode> ; V06 loc4 [V06,T08] ( 19,132 ) ref -> r9 class-hnd <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
-; V07 loc5 [V07,T09] ( 10,132 ) ref -> [sp+0xCC] class-hnd spill-single-def <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V07 loc5 [V07,T09] ( 10,132 ) ref -> [sp+0xBC] class-hnd spill-single-def <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
;* V08 loc6 [V08 ] ( 0, 0 ) ubyte -> zero-ref ;* V09 loc7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V10 loc8 [V10,T31] ( 4, 72 ) ref -> r8 class-hnd exact <System.String> @@ -24,17 +24,17 @@ ; V13 loc11 [V13,T00] ( 14,276 ) int -> r9 ; V14 loc12 [V14,T134] ( 5, 14 ) ref -> r4 class-hnd <System.Text.RegularExpressions.Symbolic.BDD> ; V15 loc13 [V15,T208] ( 2, 8 ) ref -> r9 class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
-; V16 loc14 [V16,T209] ( 2, 8 ) ref -> [sp+0xC8] class-hnd exact spill-single-def <<unknown class>>
+; V16 loc14 [V16,T209] ( 2, 8 ) ref -> [sp+0xB8] class-hnd exact spill-single-def <<unknown class>>
;* V17 loc15 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V18 loc16 [V18 ] ( 0, 0 ) ubyte -> zero-ref ; V19 loc17 [V19,T207] ( 3, 8 ) ubyte -> r2 ;* V20 loc18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V21 loc19 [V21,T185] ( 3, 10 ) ref -> r4 class-hnd exact <System.Text.RegularExpressions.Symbolic.BDD>
-; V22 loc20 [V22,T314] ( 2, 0.50) ref -> r6 class-hnd exact <System.String> -; V23 loc21 [V23,T315] ( 10, 0 ) ref -> r4 class-hnd <System.String> -; V24 loc22 [V24,T312] ( 6, 1.50) ubyte -> r3
+; V22 loc20 [V22,T310] ( 2, 0.50) ref -> r6 class-hnd exact <System.String> +; V23 loc21 [V23,T311] ( 10, 0 ) ref -> r4 class-hnd <System.String> +; V24 loc22 [V24,T308] ( 6, 1.50) ubyte -> r3
;* V25 loc23 [V25 ] ( 0, 0 ) ubyte -> zero-ref
-; V26 loc24 [V26,T69] ( 2, 36 ) ref -> r4 class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V26 loc24 [V26,T65] ( 2, 36 ) ref -> r4 class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V27 loc25 [V27,T11] ( 5,132 ) int -> r8 ;* V28 loc26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]> ; V29 loc27 [V29,T71] ( 6, 24 ) ref -> r8 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -50,17 +50,17 @@ ; V39 tmp2 [V39,T220] ( 3, 6 ) ref -> r7 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ;* V40 tmp3 [V40 ] ( 0, 0 ) struct (12) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ; V41 tmp4 [V41,T12] ( 2,128 ) ref -> r1 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
-; V42 tmp5 [V42,T20] ( 3, 96 ) ref -> [sp+0xC4] class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode> -; V43 tmp6 [V43,T13] ( 2,128 ) ref -> [sp+0xC0] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
+; V42 tmp5 [V42,T20] ( 3, 96 ) ref -> [sp+0xB4] class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode> +; V43 tmp6 [V43,T13] ( 2,128 ) ref -> [sp+0xB0] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]>
;* V44 tmp7 [V44 ] ( 0, 0 ) struct (12) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]>
-; V45 tmp8 [V45,T316] ( 3, 0 ) ref -> r5 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V46 tmp9 [V46,T03] ( 4,160 ) ref -> [sp+0xBC] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> -; V47 tmp10 [V47,T84] ( 4, 24 ) ref -> [sp+0xB8] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V45 tmp8 [V45,T312] ( 3, 0 ) ref -> r5 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V46 tmp9 [V46,T03] ( 4,160 ) ref -> [sp+0xAC] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> +; V47 tmp10 [V47,T84] ( 4, 24 ) ref -> [sp+0xA8] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
;* V48 tmp11 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[System.__Canon]> ;* V49 tmp12 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.CharSetSolver> ; V50 tmp13 [V50,T85] ( 4, 24 ) ref -> r4 class-hnd exact "impAppendStmt" <<unknown class>> ;* V51 tmp14 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.CharSetSolver>
-; V52 tmp15 [V52,T115] ( 2, 16 ) ref -> [sp+0xB4] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V52 tmp15 [V52,T115] ( 2, 16 ) ref -> [sp+0xA4] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
;* V53 tmp16 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V54 tmp17 [V54 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V55 tmp18 [V55 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" @@ -70,17 +70,17 @@ ;* V59 tmp22 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> ;* V60 tmp23 [V60 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V61 tmp24 [V61 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V62 tmp25 [V62,T33] ( 14, 64 ) ref -> [sp+0xB0]
+; V62 tmp25 [V62,T33] ( 14, 64 ) ref -> [sp+0xA0]
; V63 tmp26 [V63,T72] ( 6, 24 ) ref -> r8
-; V64 tmp27 [V64,T253] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V64 tmp27 [V64,T257] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V65 tmp28 [V65,T237] ( 3, 5 ) int -> r0 "Inlining Arg"
-; V66 tmp29 [V66,T250] ( 4, 3 ) int -> r2 "Inline stloc first use temp" -; V67 tmp30 [V67,T252] ( 3, 2.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V66 tmp29 [V66,T254] ( 4, 3 ) int -> r2 "Inline stloc first use temp" +; V67 tmp30 [V67,T256] ( 3, 2.50) ref -> r0 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V68 tmp31 [V68 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ;* V69 tmp32 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V70 tmp33 [V70,T105] ( 3, 20 ) ref -> r8 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD> ; V71 tmp34 [V71 ] ( 1, 4 ) ubyte -> [sp+0x39C] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V72 tmp35 [V72,T186] ( 3, 10 ) byref -> [sp+0xAC] spill-single-def "Inline stloc first use temp"
+; V72 tmp35 [V72,T186] ( 3, 10 ) byref -> [sp+0x9C] spill-single-def "Inline stloc first use temp"
; V73 tmp36 [V73,T116] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> ; V74 tmp37 [V74,T135] ( 4, 14 ) ref -> r1 ;* V75 tmp38 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -92,16 +92,16 @@ ;* V81 tmp44 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V82 tmp45 [V82 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V83 tmp46 [V83 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V84 tmp47 [V84,T144] ( 5, 10 ) ref -> [sp+0xA8] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V84 tmp47 [V84,T144] ( 5, 10 ) ref -> [sp+0x98] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V85 tmp48 [V85,T50] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V86 tmp49 [V86,T239] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V86 tmp49 [V86,T243] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V87 tmp50 [V87,T163] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V88 tmp51 [V88,T95] ( 5, 20 ) struct (28) [sp+0x380] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V89 tmp52 [V89,T221] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V90 tmp53 [V90 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V91 tmp54 [V91,T256] ( 0, 0 ) ref -> zero-ref
+;* V91 tmp54 [V91,T260] ( 0, 0 ) ref -> zero-ref
;* V92 tmp55 [V92 ] ( 0, 0 ) ref -> zero-ref
-;* V93 tmp56 [V93,T257] ( 0, 0 ) ref -> zero-ref
+;* V93 tmp56 [V93,T261] ( 0, 0 ) ref -> zero-ref
; V94 tmp57 [V94,T164] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V95 tmp58 [V95,T96] ( 5, 20 ) struct (28) [sp+0x364] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V96 tmp59 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -109,7 +109,7 @@ ;* V98 tmp61 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V99 tmp62 [V99,T106] ( 3, 20 ) ref -> r8 class-hnd "Inlining Arg" <System.__Canon> ; V100 tmp63 [V100 ] ( 1, 4 ) ubyte -> [sp+0x360] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V101 tmp64 [V101,T187] ( 3, 10 ) byref -> [sp+0xA4] spill-single-def "Inline stloc first use temp"
+; V101 tmp64 [V101,T187] ( 3, 10 ) byref -> [sp+0x94] spill-single-def "Inline stloc first use temp"
; V102 tmp65 [V102,T117] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> ; V103 tmp66 [V103,T136] ( 4, 14 ) ref -> r1 ;* V104 tmp67 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -121,16 +121,16 @@ ;* V110 tmp73 [V110 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V111 tmp74 [V111 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V112 tmp75 [V112 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V113 tmp76 [V113,T145] ( 5, 10 ) ref -> [sp+0xA0] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V113 tmp76 [V113,T145] ( 5, 10 ) ref -> [sp+0x90] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V114 tmp77 [V114,T51] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V115 tmp78 [V115,T240] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V115 tmp78 [V115,T244] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V116 tmp79 [V116,T165] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V117 tmp80 [V117,T97] ( 5, 20 ) struct (28) [sp+0x344] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V118 tmp81 [V118,T222] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V119 tmp82 [V119 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V120 tmp83 [V120,T258] ( 0, 0 ) ref -> zero-ref
+;* V120 tmp83 [V120,T262] ( 0, 0 ) ref -> zero-ref
;* V121 tmp84 [V121 ] ( 0, 0 ) ref -> zero-ref
-;* V122 tmp85 [V122,T259] ( 0, 0 ) ref -> zero-ref
+;* V122 tmp85 [V122,T263] ( 0, 0 ) ref -> zero-ref
; V123 tmp86 [V123,T166] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V124 tmp87 [V124,T98] ( 5, 20 ) struct (28) [sp+0x328] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V125 tmp88 [V125 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -141,7 +141,7 @@ ;* V130 tmp93 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V131 tmp94 [V131,T107] ( 3, 20 ) ref -> r4 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD> ; V132 tmp95 [V132 ] ( 1, 4 ) ubyte -> [sp+0x324] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V133 tmp96 [V133,T188] ( 3, 10 ) byref -> [sp+0x9C] spill-single-def "Inline stloc first use temp"
+; V133 tmp96 [V133,T188] ( 3, 10 ) byref -> [sp+0x8C] spill-single-def "Inline stloc first use temp"
; V134 tmp97 [V134,T118] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> ; V135 tmp98 [V135,T137] ( 4, 14 ) ref -> r1 ;* V136 tmp99 [V136 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -153,22 +153,22 @@ ;* V142 tmp105 [V142 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V143 tmp106 [V143 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V144 tmp107 [V144 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V145 tmp108 [V145,T146] ( 5, 10 ) ref -> [sp+0x98] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V145 tmp108 [V145,T146] ( 5, 10 ) ref -> [sp+0x88] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V146 tmp109 [V146,T52] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V147 tmp110 [V147,T241] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V147 tmp110 [V147,T245] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V148 tmp111 [V148,T167] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V149 tmp112 [V149,T99] ( 5, 20 ) struct (28) [sp+0x308] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V150 tmp113 [V150,T223] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V151 tmp114 [V151 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V152 tmp115 [V152,T260] ( 0, 0 ) ref -> zero-ref
+;* V152 tmp115 [V152,T264] ( 0, 0 ) ref -> zero-ref
;* V153 tmp116 [V153 ] ( 0, 0 ) ref -> zero-ref
-;* V154 tmp117 [V154,T261] ( 0, 0 ) ref -> zero-ref
+;* V154 tmp117 [V154,T265] ( 0, 0 ) ref -> zero-ref
; V155 tmp118 [V155,T168] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V156 tmp119 [V156,T100] ( 5, 20 ) struct (28) [sp+0x2EC] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V157 tmp120 [V157 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V158 tmp121 [V158 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V159 tmp122 [V159 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V160 tmp123 [V160,T06] ( 3,144 ) ref -> [sp+0x94] class-hnd exact spill-single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
+; V160 tmp123 [V160,T06] ( 3,144 ) ref -> [sp+0x84] class-hnd exact spill-single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD>
; V161 tmp124 [V161 ] ( 1, 32 ) ubyte -> [sp+0x2E8] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V162 tmp125 [V162,T32] ( 3, 72 ) byref -> r6 "Inline stloc first use temp" ; V163 tmp126 [V163,T14] ( 2,128 ) ref -> r1 class-hnd "dup spill" <System.Object> @@ -182,8 +182,8 @@ ;* V171 tmp134 [V171 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V172 tmp135 [V172 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V173 tmp136 [V173 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V174 tmp137 [V174,T37] ( 5, 40 ) ref -> [sp+0x90] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V175 tmp138 [V175,T02] ( 10,160 ) ref -> [sp+0x8C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V174 tmp137 [V174,T37] ( 5, 40 ) ref -> [sp+0x80] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V175 tmp138 [V175,T02] ( 10,160 ) ref -> [sp+0x7C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
;* V176 tmp139 [V176,T133] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V177 tmp140 [V177,T41] ( 3, 48 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V178 tmp141 [V178,T23] ( 5, 80 ) struct (28) [sp+0x2CC] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> @@ -202,14 +202,14 @@ ; V191 tmp154 [V191,T15] ( 2,128 ) ref -> r3 "CASTCLASS eval op1" ;* V192 tmp155 [V192 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V193 tmp156 [V193,T26] ( 4, 76 ) ref -> r3 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V194 tmp157 [V194,T67] ( 3, 36 ) ref -> r3 "CASTCLASS eval op1"
+; V194 tmp157 [V194,T63] ( 3, 36 ) ref -> r3 "CASTCLASS eval op1"
; V195 tmp158 [V195,T108] ( 3, 20 ) int -> r12 "fgMakeTemp is creating a new local variable" ; V196 tmp159 [V196,T28] ( 6, 76 ) ref -> lr class-hnd "spilling QMark2" <<unknown class>> ; V197 tmp160 [V197,T43] ( 3, 48 ) ref -> r0 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode> ; V198 tmp161 [V198,T16] ( 2,128 ) ref -> r0 "CASTCLASS eval op1" ;* V199 tmp162 [V199 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V200 tmp163 [V200,T27] ( 4, 76 ) ref -> r0 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V201 tmp164 [V201,T68] ( 3, 36 ) ref -> r1 "CASTCLASS eval op1"
+; V201 tmp164 [V201,T64] ( 3, 36 ) ref -> r1 "CASTCLASS eval op1"
; V202 tmp165 [V202,T109] ( 3, 20 ) int -> r12 "fgMakeTemp is creating a new local variable" ; V203 tmp166 [V203,T29] ( 6, 76 ) ref -> lr class-hnd "spilling QMark2" <<unknown class>> ; V204 tmp167 [V204,T44] ( 3, 48 ) ref -> r2 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]> @@ -218,7 +218,7 @@ ; V207 tmp170 [V207,T25] ( 4, 80 ) ref -> r0 class-hnd "Inline stloc first use temp" <<unknown class>> ;* V208 tmp171 [V208 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ;* V209 tmp172 [V209 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V210 tmp173 [V210,T87] ( 4, 24 ) ref -> [sp+0x88] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
+; V210 tmp173 [V210,T87] ( 4, 24 ) ref -> [sp+0x78] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
; V211 tmp174 [V211 ] ( 1, 4 ) ubyte -> [sp+0x2A4] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V212 tmp175 [V212,T190] ( 3, 10 ) byref -> r6 "Inline stloc first use temp" ; V213 tmp176 [V213,T119] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> @@ -232,21 +232,21 @@ ;* V221 tmp184 [V221 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V222 tmp185 [V222 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V223 tmp186 [V223 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V224 tmp187 [V224,T147] ( 5, 10 ) ref -> [sp+0x84] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V224 tmp187 [V224,T147] ( 5, 10 ) ref -> [sp+0x74] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V225 tmp188 [V225,T53] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V226 tmp189 [V226,T242] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V226 tmp189 [V226,T246] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V227 tmp190 [V227,T169] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V228 tmp191 [V228,T101] ( 5, 20 ) struct (28) [sp+0x288] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V229 tmp192 [V229,T224] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V230 tmp193 [V230 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V231 tmp194 [V231,T262] ( 0, 0 ) ref -> zero-ref
+;* V231 tmp194 [V231,T266] ( 0, 0 ) ref -> zero-ref
;* V232 tmp195 [V232 ] ( 0, 0 ) ref -> zero-ref
-;* V233 tmp196 [V233,T263] ( 0, 0 ) ref -> zero-ref
+;* V233 tmp196 [V233,T267] ( 0, 0 ) ref -> zero-ref
; V234 tmp197 [V234,T170] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V235 tmp198 [V235,T102] ( 5, 20 ) struct (28) [sp+0x26C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V236 tmp199 [V236 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V237 tmp200 [V237 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V238 tmp201 [V238,T88] ( 4, 24 ) ref -> [sp+0x80] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
+; V238 tmp201 [V238,T88] ( 4, 24 ) ref -> [sp+0x70] class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
; V239 tmp202 [V239 ] ( 1, 4 ) ubyte -> [sp+0x268] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" ; V240 tmp203 [V240,T191] ( 3, 10 ) byref -> r6 "Inline stloc first use temp" ; V241 tmp204 [V241,T120] ( 2, 16 ) ref -> r1 class-hnd "dup spill" <System.Object> @@ -260,147 +260,147 @@ ;* V249 tmp212 [V249 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V250 tmp213 [V250 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V251 tmp214 [V251 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-; V252 tmp215 [V252,T148] ( 5, 10 ) ref -> [sp+0x7C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
+; V252 tmp215 [V252,T148] ( 5, 10 ) ref -> [sp+0x6C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
; V253 tmp216 [V253,T54] ( 10, 40 ) ref -> r2 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V254 tmp217 [V254,T243] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V254 tmp217 [V254,T247] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V255 tmp218 [V255,T171] ( 3, 12 ) ref -> r0 class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V256 tmp219 [V256,T103] ( 5, 20 ) struct (28) [sp+0x24C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V257 tmp220 [V257,T225] ( 3, 6 ) byref -> r0 "Inline stloc first use temp" ;* V258 tmp221 [V258 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ...

+2 (+1.85%) : 9281.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier1)

@@ -13,10 +13,10 @@ ; V02 arg2 [V02,T05] ( 3, 3 ) int -> r2 single-def ; V03 arg3 [V03,T06] ( 3, 3 ) int -> r3 single-def ; V04 arg4 [V04,T07] ( 1, 1 ) ubyte -> [sp+0x08] single-def
-; V05 loc0 [V05,T00] ( 17, 9.50) int -> lr
+; V05 loc0 [V05,T00] ( 15, 8.50) int -> lr
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 rat0 [V07,T02] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" -; V08 rat1 [V08,T01] ( 4, 8 ) int -> r1 "ReplaceWithLclVar is creating a new local variable"
+; V07 rat0 [V07,T01] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V08 rat1 [V08,T02] ( 3, 6 ) int -> r0 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 0 @@ -57,44 +57,45 @@ G_M31052_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr orr lr, lr, 96 ;; size=4 bbWeight=0.50 PerfScore 0.50 G_M31052_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- subs r1, r1, 1 - cmp r1, 2 - bhi SHORT G_M31052_IG11 - cmp r1, 1 - beq SHORT G_M31052_IG10 - cmp r1, 2 - beq SHORT G_M31052_IG09 - ;; size=14 bbWeight=1 PerfScore 7.00
+ subs r0, r1, 1 + cmp r0, 2 + bhi SHORT G_M31052_IG10 + movw r1, LOW ADDRESS J_M31052_DS24 + movt r1, HIGH ADDRESS J_M31052_DS24 + + J_M31052_DS24 LABEL DWORD + DD G_M31052_IG10 + DD G_M31052_IG09 + DD G_M31052_IG08 + ldr pc, [r1+4*r0] + ;; size=18 bbWeight=1 PerfScore 6.00
G_M31052_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- b SHORT G_M31052_IG11 - ;; size=2 bbWeight=0.50 PerfScore 0.50 -G_M31052_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
orr lr, lr, 2
- b SHORT G_M31052_IG11
+ b SHORT G_M31052_IG10
;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M31052_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
orr lr, lr, 1 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31052_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31052_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ands r0, r2, 16 cmp r0, 0
- bne SHORT G_M31052_IG13
+ bne SHORT G_M31052_IG12
;; size=8 bbWeight=1 PerfScore 3.00
-G_M31052_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
orr lr, lr, 16 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31052_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31052_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ands r0, r3, 0x80000000 cmp r0, 0
- beq SHORT G_M31052_IG15
+ beq SHORT G_M31052_IG14
;; size=8 bbWeight=1 PerfScore 3.00
-G_M31052_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
orr lr, lr, 256 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M31052_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, lr ;; size=2 bbWeight=1 PerfScore 1.00
-G_M31052_IG16: ; bbWeight=1, epilog, nogc, extend
+G_M31052_IG15: ; bbWeight=1, epilog, nogc, extend
pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00 RWD00 dd G_M31052_IG06 @@ -103,9 +104,12 @@ RWD00 dd G_M31052_IG06 dd G_M31052_IG05 dd G_M31052_IG07 dd G_M31052_IG05
+RWD24 dd G_M31052_IG10 + dd G_M31052_IG09 + dd G_M31052_IG08
-; Total bytes of code 108, prolog size 6, PerfScore 32.00, instruction count 37, allocated bytes for code 108 (MethodHash=393f86b3) for method Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier1)
+; Total bytes of code 110, prolog size 6, PerfScore 30.50, instruction count 35, allocated bytes for code 110 (MethodHash=393f86b3) for method Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier1)
; ============================================================ Unwind Info: @@ -117,7 +121,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
+ Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+6 (+2.75%) : 638.dasm - System.Runtime.CompilerServices.ConditionalWeakTable2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable2[System.Canon,System.Canon]):this (Tier0-FullOpts)

@@ -15,12 +15,11 @@ ; V04 tmp1 [V04,T07] ( 3, 4 ) int -> r1 "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V07 tmp4 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp5 [V08,T00] ( 3, 24 ) ref -> r3 "arr expr" ; V09 cse0 [V09,T02] ( 4, 10 ) ref -> r1 "CSE - aggressive"
-; V10 cse1 [V10,T08] ( 3, 1.50) ref -> r1 "CSE - aggressive" -; V11 rat0 [V11,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" -; V12 rat1 [V12,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V10 rat0 [V10,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" +; V11 rat1 [V11,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
; TEMP_01 ref -> [r11-0x10] ; ; Lcl frame size = 8 @@ -41,17 +40,16 @@ G_M9941_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by bne SHORT G_M9941_IG04 ;; size=4 bbWeight=1 PerfScore 2.00 G_M9941_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=22 bbWeight=0.50 PerfScore 3.50
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M9941_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -158,7 +156,7 @@ G_M9941_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 218, prolog size 20, PerfScore 102.50, instruction count 79, allocated bytes for code 218 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
+; Total bytes of code 224, prolog size 20, PerfScore 103.00, instruction count 80, allocated bytes for code 224 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -170,7 +168,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 218 (0x0000da)
+ Function Length : 112 (0x00070) Actual length = 224 (0x0000e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.linux.arm.checked.mch

-40 (-74.07%) : 199093.dasm - _simple:main():int (Tier0)

@@ -13,39 +13,14 @@ G_M64434_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r4,r10,r11,lr} add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M64434_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r3, -1 - rsbs r3, r3, 0 - cmp r3, 1 - beq SHORT G_M64434_IG03 - movs r3, 0 - b SHORT G_M64434_IG04 - ;; size=14 bbWeight=1 PerfScore 6.00 -G_M64434_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movs r3, 1
+G_M64434_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 100
;; size=2 bbWeight=1 PerfScore 1.00
-G_M64434_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - subs r3, r3, 1 - movs r2, 1 - rsbs r2, r2, 0 - cmp r2, -1 - beq SHORT G_M64434_IG05 - movs r2, 0 - b SHORT G_M64434_IG06 - ;; size=16 bbWeight=1 PerfScore 7.00 -G_M64434_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movs r2, 1 - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M64434_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - subs r2, r2, 1 - orrs r3, r2 - add r0, r3, 100 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M64434_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M64434_IG03: ; bbWeight=1, epilog, nogc, extend
pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 21.00, instruction count 21, allocated bytes for code 54 (MethodHash=c6a5044d) for method _simple:main():int (Tier0)
+; Total bytes of code 14, prolog size 8, PerfScore 4.00, instruction count 4, allocated bytes for code 14 (MethodHash=c6a5044d) for method _simple:main():int (Tier0)
; ============================================================ Unwind Info: @@ -57,7 +32,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-38 (-73.08%) : 210363.dasm - ILGEN_0x45f9b5e5:Main():int (Tier0)

@@ -13,47 +13,27 @@ G_M23300_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r4,r10,r11,lr} add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M23300_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - movs r3, 2 - movs r2, 1 - umull r3, r1, r3, r2 - cmp r1, 0 - bne SHORT G_M23300_IG04 - mov r0, r3 - movs r1, 2 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_DIV - adds r0, 99 - ;; size=28 bbWeight=1 PerfScore 11.00
+G_M23300_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 100 + ;; size=2 bbWeight=1 PerfScore 1.00
G_M23300_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M23300_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_OVERFLOW - bkpt - ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 52, prolog size 8, PerfScore 14.00, instruction count 18, allocated bytes for code 52 (MethodHash=d304a4fb) for method ILGEN_0x45f9b5e5:Main():int (Tier0)
+; Total bytes of code 14, prolog size 8, PerfScore 4.00, instruction count 4, allocated bytes for code 14 (MethodHash=d304a4fb) for method ILGEN_0x45f9b5e5:Main():int (Tier0)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- AC 10 pop {r4,r10,r11,lr} ; opsize 32

-38 (-73.08%) : 211464.dasm - ILGEN_0x77e9b0c3:Main():int (Tier0)

@@ -14,22 +14,13 @@ G_M54563_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M54563_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov r3, 0x40800000 - vmov.i2f s8, r3 - movw r3, 0xd1ff - movt r3, 0xd1ff - vmov.i2f s9, r3 - vadd s8, s8, s9 - vneg s8, s8 - vcvt.f2i s9, s8 - vmov.f2i r3, s9 - add r0, r3, 109 - ;; size=40 bbWeight=1 PerfScore 10.00
+ movs r0, 100 + ;; size=2 bbWeight=1 PerfScore 1.00
G_M54563_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 52 (MethodHash=44ec2adc) for method ILGEN_0x77e9b0c3:Main():int (Tier0)
+; Total bytes of code 14, prolog size 8, PerfScore 4.00, instruction count 4, allocated bytes for code 14 (MethodHash=44ec2adc) for method ILGEN_0x77e9b0c3:Main():int (Tier0)
; ============================================================ Unwind Info: @@ -41,7 +32,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+2 (+2.38%) : 306116.dasm - ILCompiler.DependencyAnalysis.Relocation:PutThumb2Imm16(uint,ushort) (Tier1)

@@ -8,14 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 6 ) int -> r0 single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) ushort -> r1 single-def
+; V01 arg1 [V01,T03] ( 4, 4 ) ushort -> r1 single-def
; V02 loc0 [V02,T01] ( 6, 6 ) int -> r3 ; V03 loc1 [V03,T02] ( 6, 6 ) int -> r2 ;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref ;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 cse0 [V08,T03] ( 5, 5 ) int -> r1 "CSE - aggressive"
+; V08 cse0 [V08,T04] ( 4, 4 ) int -> lr "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,26 +32,26 @@ G_M25974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw lr, 0xd1ff movt lr, 0xd1ff and r2, r2, lr
- uxth r1, r1 - and lr, r1, 0xf000 - lsr lr, lr, 12 - orr r3, r3, lr - and lr, r1, 0x800 - lsr lr, lr, 1 - orr r3, r3, lr - and lr, r1, 0x700
+ uxth lr, r1 + and r12, lr, 0xf000 + lsr r12, r12, 12 + orr r3, r3, r12 + and r12, lr, 0x800 + lsr r12, r12, 1 + orr r3, r3, r12 + and lr, lr, 0x700
lsl lr, lr, 4 orr r2, r2, lr uxtb r1, r1 orrs r2, r1 strh r3, [r0] strh r2, [r0+0x02]
- ;; size=74 bbWeight=1 PerfScore 22.00
+ ;; size=76 bbWeight=1 PerfScore 22.00
G_M25974_IG03: ; bbWeight=1, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 84, prolog size 6, PerfScore 25.00, instruction count 25, allocated bytes for code 84 (MethodHash=94659a89) for method ILCompiler.DependencyAnalysis.Relocation:PutThumb2Imm16(uint,ushort) (Tier1)
+; Total bytes of code 86, prolog size 6, PerfScore 25.00, instruction count 25, allocated bytes for code 86 (MethodHash=94659a89) for method ILCompiler.DependencyAnalysis.Relocation:PutThumb2Imm16(uint,ushort) (Tier1)
; ============================================================ Unwind Info: @@ -63,7 +63,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+30 (+4.46%) : 366168.dasm - negr4.neg:main():int (FullOpts)

@@ -9,58 +9,51 @@ ; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T06] ( 3, 2 ) int -> r0
+; V01 tmp1 [V01,T02] ( 3, 2 ) int -> r0
;* V02 tmp2 [V02 ] ( 0, 0 ) float -> zero-ref "dup spill" ;* V03 tmp3 [V03 ] ( 0, 0 ) float -> zero-ref
-;* V04 tmp4 [V04,T12] ( 0, 0 ) int -> zero-ref
+;* V04 tmp4 [V04,T05] ( 0, 0 ) int -> zero-ref
;* V05 tmp5 [V05 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V06 tmp6 [V06 ] ( 0, 0 ) float -> zero-ref "dup spill" ;* V07 tmp7 [V07 ] ( 0, 0 ) float -> zero-ref
-;* V08 tmp8 [V08,T13] ( 0, 0 ) int -> zero-ref
+;* V08 tmp8 [V08,T06] ( 0, 0 ) int -> zero-ref
;* V09 tmp9 [V09 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V10 tmp10 [V10 ] ( 0, 0 ) float -> zero-ref "dup spill" ;* V11 tmp11 [V11 ] ( 0, 0 ) float -> zero-ref
-;* V12 tmp12 [V12,T14] ( 0, 0 ) int -> zero-ref
+;* V12 tmp12 [V12,T07] ( 0, 0 ) int -> zero-ref
;* V13 tmp13 [V13 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-;* V14 tmp14 [V14,T09] ( 0, 0 ) float -> zero-ref "dup spill" -;* V15 tmp15 [V15 ] ( 0, 0 ) float -> zero-ref -;* V16 tmp16 [V16,T15] ( 0, 0 ) int -> zero-ref -;* V17 tmp17 [V17 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V18 tmp18 [V18,T10] ( 0, 0 ) float -> zero-ref "dup spill" -;* V19 tmp19 [V19 ] ( 0, 0 ) float -> zero-ref -;* V20 tmp20 [V20,T16] ( 0, 0 ) int -> zero-ref -;* V21 tmp21 [V21 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V22 tmp22 [V22 ] ( 0, 0 ) float -> zero-ref "dup spill" -;* V23 tmp23 [V23 ] ( 0, 0 ) float -> zero-ref -;* V24 tmp24 [V24,T17] ( 0, 0 ) int -> zero-ref -;* V25 tmp25 [V25 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V26 tmp26 [V26 ] ( 0, 0 ) float -> zero-ref "dup spill" -;* V27 tmp27 [V27 ] ( 0, 0 ) float -> zero-ref -;* V28 tmp28 [V28,T18] ( 0, 0 ) int -> zero-ref -;* V29 tmp29 [V29 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V30 tmp30 [V30 ] ( 0, 0 ) float -> zero-ref "dup spill" -;* V31 tmp31 [V31 ] ( 0, 0 ) float -> zero-ref -;* V32 tmp32 [V32,T19] ( 0, 0 ) int -> zero-ref -;* V33 tmp33 [V33 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V34 tmp34 [V34,T11] ( 0, 0 ) float -> zero-ref "dup spill" -;* V35 tmp35 [V35 ] ( 0, 0 ) float -> zero-ref -;* V36 tmp36 [V36,T20] ( 0, 0 ) int -> zero-ref -;* V37 tmp37 [V37 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V38 cse0 [V38,T01] ( 4, 2 ) float -> [sp+0x1C] spill-single-def "CSE - aggressive" -; V39 cse1 [V39,T02] ( 4, 2 ) float -> [sp+0x18] spill-single-def "CSE - aggressive" -; V40 cse2 [V40,T07] ( 2, 1 ) float -> [sp+0x14] spill-single-def "CSE - aggressive" -; V41 cse3 [V41,T08] ( 2, 1 ) float -> [sp+0x10] spill-single-def "CSE - aggressive" -; V42 cse4 [V42,T03] ( 4, 2 ) float -> [sp+0x0C] spill-single-def "CSE - aggressive" -; V43 cse5 [V43,T04] ( 4, 2 ) float -> [sp+0x08] spill-single-def "CSE - aggressive" -; V44 cse6 [V44,T05] ( 4, 2 ) float -> [sp+0x04] spill-single-def "CSE - aggressive" -; V45 cse7 [V45,T00] ( 4, 3 ) float -> [sp+0x00] spill-single-def "CSE - aggressive"
+;* V14 tmp14 [V14,T08] ( 0, 0 ) float -> zero-ref +;* V15 tmp15 [V15,T09] ( 0, 0 ) int -> zero-ref +;* V16 tmp16 [V16 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V17 tmp17 [V17,T03] ( 0, 0 ) float -> zero-ref "dup spill" +;* V18 tmp18 [V18 ] ( 0, 0 ) float -> zero-ref +;* V19 tmp19 [V19,T10] ( 0, 0 ) int -> zero-ref +;* V20 tmp20 [V20 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V21 tmp21 [V21 ] ( 0, 0 ) float -> zero-ref "dup spill" +;* V22 tmp22 [V22 ] ( 0, 0 ) float -> zero-ref +;* V23 tmp23 [V23,T11] ( 0, 0 ) int -> zero-ref +;* V24 tmp24 [V24 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V25 tmp25 [V25 ] ( 0, 0 ) float -> zero-ref "dup spill" +;* V26 tmp26 [V26 ] ( 0, 0 ) float -> zero-ref +;* V27 tmp27 [V27,T12] ( 0, 0 ) int -> zero-ref +;* V28 tmp28 [V28 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V29 tmp29 [V29 ] ( 0, 0 ) float -> zero-ref "dup spill" +;* V30 tmp30 [V30 ] ( 0, 0 ) float -> zero-ref +;* V31 tmp31 [V31,T13] ( 0, 0 ) int -> zero-ref +;* V32 tmp32 [V32 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V33 tmp33 [V33,T04] ( 0, 0 ) float -> zero-ref "dup spill" +;* V34 tmp34 [V34 ] ( 0, 0 ) float -> zero-ref +;* V35 tmp35 [V35,T14] ( 0, 0 ) int -> zero-ref +;* V36 tmp36 [V36 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V37 cse0 [V37,T01] ( 3, 1.50) float -> [sp+0x04] spill-single-def "CSE - aggressive" +; V38 cse1 [V38,T00] ( 4, 3 ) float -> [sp+0x00] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 36
+; Lcl frame size = 12
G_M30443_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r11,lr}
- sub sp, 36 - add r11, sp, 40
+ sub sp, 12 + add r11, sp, 16
;; size=10 bbWeight=1 PerfScore 3.00 G_M30443_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz mov r3, 0x7f800000 @@ -74,13 +67,13 @@ G_M30443_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, beq SHORT G_M30443_IG04 ;; size=28 bbWeight=1 PerfScore 9.00 G_M30443_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vldr s0, [sp] // [V45 cse7]
+ vldr s0, [sp] // [V38 cse1]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> mov r4, r0
- vldr s0, [sp] // [V45 cse7]
+ vldr s0, [sp] // [V38 cse1]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -92,20 +85,48 @@ G_M30443_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr movw r3, 0xd1ff movt r3, 0xd1ff vmov.i2f s0, r3
- vstr s0, [sp+0x1C] // [V38 cse0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> cmp r0, 0 beq SHORT G_M30443_IG05
- vldr s0, [sp+0x1C] // [V38 cse0]
+ movw r3, 0xd1ff + movt r3, 0xd1ff + vmov.i2f s0, r3
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> mov r4, r0
- vldr s0, [sp+0x1C] // [V38 cse0]
+ movw r3, 0xd1ff + movt r3, 0xd1ff + vmov.i2f s0, r3 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + cmp r4, r0 + bne G_M30443_IG12 + ;; size=84 bbWeight=0.50 PerfScore 13.00 +G_M30443_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov r3, 0x3f800000 + vmov.i2f s0, r3 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + cmp r0, 0 + beq SHORT G_M30443_IG06 + mov r3, 0x3f800000 + vmov.i2f s0, r3 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + mov r4, r0 + mov r3, 0x3f800000 + vmov.i2f s0, r3
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -113,36 +134,10 @@ G_M30443_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr cmp r4, r0 bne G_M30443_IG12 ;; size=72 bbWeight=0.50 PerfScore 11.50
-G_M30443_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov r3, 0x3f800000 - vmov.i2f s0, r3 - vstr s0, [sp+0x18] // [V39 cse1] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - cmp r0, 0 - beq SHORT G_M30443_IG06 - vldr s0, [sp+0x18] // [V39 cse1] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - mov r4, r0 - vldr s0, [sp+0x18] // [V39 cse1] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - cmp r4, r0 - bne G_M30443_IG12 - ;; size=68 bbWeight=0.50 PerfScore 11.00
G_M30443_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movs r3, 0 vmov.i2f s0, r3
- vstr s0, [sp+0x14] // [V40 cse2] - movs r3, 0 - vmov.i2f s0, r3
+ vstr s0, [sp+0x04] // [V37 cse0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -156,18 +151,15 @@ G_M30443_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr r3, [r3] blx r3 // <unknown method> mov r4, r0
- vldr s0, [sp+0x14] // [V40 cse2]
+ vldr s0, [sp+0x04] // [V37 cse0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> cmp r4, r0 bne G_M30443_IG12
- ;; size=74 bbWeight=0.50 PerfScore 12.50
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M30443_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r3, 0x80000000 - vmov.i2f s0, r3 - vstr s0, [sp+0x10] // [V41 cse3]
mov r3, 0x80000000 vmov.i2f s0, r3 movw r3, 0xd1ff @@ -183,81 +175,61 @@ G_M30443_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr r3, [r3] blx r3 // <unknown method> mov r4, r0
- vldr s0, [sp+0x10] // [V41 cse3]
+ mov r3, 0x80000000 + vmov.i2f s0, r3
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> cmp r4, r0 bne G_M30443_IG12
- ;; size=80 bbWeight=0.50 PerfScore 12.50
+ ;; size=72 bbWeight=0.50 PerfScore 11.50
G_M30443_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz movw r3, 0xd1ff movt r3, 0xd1ff vmov.i2f s0, r3
- vstr s0, [sp+0x0C] // [V42 cse4]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> cmp r0, 0 beq SHORT G_M30443_IG09
- vldr s0, [sp+0x0C] // [V42 cse4]
+ movw r3, 0xd1ff + movt r3, 0xd1ff + vmov.i2f s0, r3
movw r3, 0xd1ff movt r3, 0xd1ff ...

+34 (+4.89%) : 424467.dasm - ILGEN0xa691ee4d:Method0xf329b3e5(long):int (FullOpts)

@@ -19,48 +19,44 @@ ; V09 tmp5 [V09,T02] ( 3, 0 ) ref -> r2 class-hnd single-def "impAppendStmt" <<unknown class>> ;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V11 tmp7 [V11 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-;* V12 tmp8 [V12 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" -;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -; V14 tmp10 [V14,T09] ( 2, 0 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <<unknown class>> -;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "impSpillStackEnsure" -;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillStackEnsure" <<unknown class>>
+;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" +; V13 tmp9 [V13,T09] ( 2, 0 ) ref -> r4 class-hnd exact single-def "impAppendStmt" <<unknown class>> +;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "impSpillStackEnsure" +;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillStackEnsure" <<unknown class>> +;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store"
+;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store" +;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> -;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> -; V26 tmp22 [V26,T10] ( 2, 0 ) ref -> r0 single-def "arr expr" -; V27 tmp23 [V27,T03] ( 3, 0 ) ref -> r2 single-def "arr expr" -; V28 tmp24 [V28,T04] ( 3, 0 ) ref -> r3 single-def "arr expr" -; V29 tmp25 [V29,T11] ( 2, 0 ) ref -> r1 single-def "arr expr" -; V30 tmp26 [V30,T05] ( 3, 0 ) ref -> r3 single-def "arr expr" -; V31 tmp27 [V31,T12] ( 2, 0 ) int -> r0 "index expr" -;* V32 tmp28 [V32,T19] ( 0, 0 ) ref -> zero-ref single-def "arr expr" -;* V33 tmp29 [V33,T20] ( 0, 0 ) int -> zero-ref "argument with side effect" -;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V35 tmp31 [V35 ] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "index expr" -;* V37 tmp33 [V37 ] ( 0, 0 ) long -> zero-ref "argument with side effect"
+;* V23 tmp19 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>> +;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>> +; V25 tmp21 [V25,T10] ( 2, 0 ) ref -> r0 single-def "arr expr" +; V26 tmp22 [V26,T03] ( 3, 0 ) ref -> r2 single-def "arr expr" +; V27 tmp23 [V27,T04] ( 3, 0 ) ref -> r3 single-def "arr expr" +; V28 tmp24 [V28,T11] ( 2, 0 ) ref -> r1 single-def "arr expr" +; V29 tmp25 [V29,T05] ( 3, 0 ) ref -> r3 single-def "arr expr" +;* V30 tmp26 [V30,T18] ( 0, 0 ) ref -> zero-ref single-def "arr expr" +;* V31 tmp27 [V31,T19] ( 0, 0 ) int -> zero-ref "argument with side effect" +;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V33 tmp29 [V33 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V34 tmp30 [V34 ] ( 0, 0 ) int -> zero-ref "index expr" +;* V35 tmp31 [V35 ] ( 0, 0 ) long -> zero-ref "argument with side effect" +;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref "index expr"
;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref "index expr" -;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V41 tmp37 [V41 ] ( 0, 0 ) double -> zero-ref "argument with side effect" -; V42 rat0 [V42,T00] ( 4, 2 ) int -> [sp+0x10] do-not-enreg[] "field V00.lo (fldOffset=0x0)" P-DEP -; V43 rat1 [V43,T01] ( 4, 2 ) int -> [sp+0x14] do-not-enreg[] "field V00.hi (fldOffset=0x4)" P-DEP -; V44 rat2 [V44,T13] ( 2, 0 ) int -> r3 "field V10.lo (fldOffset=0x0)" P-INDEP -; V45 rat3 [V45,T14] ( 2, 0 ) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP -; V46 rat4 [V46,T15] ( 2, 0 ) int -> r0 "field V11.lo (fldOffset=0x0)" P-INDEP -; V47 rat5 [V47,T16] ( 2, 0 ) int -> r1 "field V11.hi (fldOffset=0x4)" P-INDEP -;* V48 rat6 [V48 ] ( 0, 0 ) int -> zero-ref "field V12.lo (fldOffset=0x0)" P-INDEP -;* V49 rat7 [V49 ] ( 0, 0 ) int -> zero-ref "field V12.hi (fldOffset=0x4)" P-INDEP -; V50 rat8 [V50,T06] ( 3, 0 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable" -; V51 rat9 [V51 ] ( 1, 0 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V52 rat10 [V52,T17] ( 2, 0 ) int -> r0 "field V51.lo (fldOffset=0x0)" P-INDEP -; V53 rat11 [V53,T18] ( 2, 0 ) int -> r1 "field V51.hi (fldOffset=0x4)" P-INDEP
+;* V39 tmp35 [V39 ] ( 0, 0 ) double -> zero-ref "argument with side effect" +; V40 rat0 [V40,T00] ( 4, 2 ) int -> [sp+0x10] do-not-enreg[] "field V00.lo (fldOffset=0x0)" P-DEP +; V41 rat1 [V41,T01] ( 4, 2 ) int -> [sp+0x14] do-not-enreg[] "field V00.hi (fldOffset=0x4)" P-DEP +; V42 rat2 [V42,T12] ( 2, 0 ) int -> r3 "field V10.lo (fldOffset=0x0)" P-INDEP +; V43 rat3 [V43,T13] ( 2, 0 ) int -> r2 "field V10.hi (fldOffset=0x4)" P-INDEP +; V44 rat4 [V44,T14] ( 2, 0 ) int -> r0 "field V11.lo (fldOffset=0x0)" P-INDEP +; V45 rat5 [V45,T15] ( 2, 0 ) int -> r1 "field V11.hi (fldOffset=0x4)" P-INDEP +; V46 rat6 [V46,T06] ( 3, 0 ) byref -> r2 "ReplaceWithLclVar is creating a new local variable" +; V47 rat7 [V47 ] ( 1, 0 ) long -> [sp+0x08] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V48 rat8 [V48,T16] ( 2, 0 ) int -> r0 "field V47.lo (fldOffset=0x0)" P-INDEP +; V49 rat9 [V49,T17] ( 2, 0 ) int -> r1 "field V47.hi (fldOffset=0x4)" P-INDEP
; TEMP_01 ref -> [r11-0x1C] ; ; Lcl frame size = 24 @@ -249,14 +245,14 @@ G_M20612_IG06: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b mov r0, 320 movs r1, 255 cmp r0, r1
- bhs SHORT G_M20612_IG09
+ bhs G_M20612_IG09
movs r0, 1 strb r0, [r4+0x148] mvn r0, 62 movs r1, 0 subs r0, r3, r0 sbcs r1, r2, r1
- bvs SHORT G_M20612_IG10
+ bvs G_M20612_IG10
movs r2, 0 str r2, [r5+0x0C] movw r2, 0xd1ff @@ -299,7 +295,7 @@ G_M20612_IG06: ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b tst r0, r0 bne SHORT G_M20612_IG10 b SHORT G_M20612_IG08
- ;; size=292 bbWeight=0 PerfScore 0.00
+ ;; size=296 bbWeight=0 PerfScore 0.00
G_M20612_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz cmp r0, -1 bne SHORT G_M20612_IG10 @@ -335,20 +331,28 @@ G_M20612_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, movt r3, 0xd1ff blx r3 // CORINFO_HELP_DBL2INT_OVF ; gcrRegs -[r0]
- uxth r0, r0 - ldr r3, [r4+0x04] - cmp r0, r3
+ uxth r3, r0 + ldr r2, [r4+0x04] + cmp r3, r2
bhs SHORT G_M20612_IG09
+ movw r2, 0xd1ff + movt r2, 0xd1ff + movw r3, 0xd1ff + movt r3, 0xd1ff + vmov.i2d d0, r2, r3 + movw r3, 0xd1ff + movt r3, 0xd1ff + blx r3 // CORINFO_HELP_DBL2INT_OVF + ; gcrRegs -[r4]
movs r0, 0 movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_OVERFLOW
- ; gcrRegs -[r4]
mvn r3, 2 movs r2, 0 cmp r3, r2 bhs SHORT G_M20612_IG09
- ;; size=108 bbWeight=0 PerfScore 0.00
+ ;; size=138 bbWeight=0 PerfScore 0.00
G_M20612_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff movt r3, 0xd1ff @@ -361,7 +365,7 @@ G_M20612_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 696, prolog size 14, PerfScore 0.00, instruction count 234, allocated bytes for code 696 (MethodHash=4747af7b) for method ILGEN_0xa691ee4d:Method_0xf329b3e5(long):int (FullOpts)
+; Total bytes of code 730, prolog size 14, PerfScore 0.00, instruction count 242, allocated bytes for code 730 (MethodHash=4747af7b) for method ILGEN_0xa691ee4d:Method_0xf329b3e5(long):int (FullOpts)
; ============================================================ Unwind Info: @@ -373,7 +377,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 348 (0x0015c) Actual length = 696 (0x0002b8)
+ Function Length : 365 (0x0016d) Actual length = 730 (0x0002da)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----

libraries.crossgen2.linux.arm.checked.mch

-6 (-42.86%) : 7289.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)

@@ -3,7 +3,7 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data @@ -13,23 +13,20 @@ ;* V01 tmp1 [V01 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune> ;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V03 tmp3 [V03 ] ( 0, 0 ) int -> zero-ref "field V01._value (fldOffset=0x0)" P-INDEP
-;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -;* V05 tmp5 [V05 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7284_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M7284_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r0, 0xd1ff ;; size=4 bbWeight=1 PerfScore 1.00 G_M7284_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 14, prolog size 6, PerfScore 4.00, instruction count 4, allocated bytes for code 14 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)
+; Total bytes of code 8, prolog size 2, PerfScore 3.00, instruction count 3, allocated bytes for code 8 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)
; ============================================================ Unwind Info: @@ -41,11 +38,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ Function Length : 4 (0x00004) Actual length = 8 (0x000008)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-4 (-20.00%) : 152083.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)

@@ -8,7 +8,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
+; V00 this [V00,T00] ( 3, 3 ) byref -> r0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4 @@ -18,14 +18,13 @@ G_M60978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=2 bbWeight=1 PerfScore 1.00 G_M60978_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz ; byrRegs +[r0]
- ldrsb r3, [r0]
ldr r0, [r0+0x08] ; byrRegs -[r0] cmp r0, 0 blt SHORT G_M60978_IG03 movs r0, 0 b SHORT G_M60978_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=10 bbWeight=1 PerfScore 5.00
G_M60978_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 @@ -33,7 +32,7 @@ G_M60978_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 20, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 20 (MethodHash=310211cd) for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)
+; Total bytes of code 16, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 16 (MethodHash=310211cd) for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -45,7 +44,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
+ Function Length : 8 (0x00008) Actual length = 16 (0x000010)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-2 (-2.63%) : 129224.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)

@@ -8,15 +8,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 3 ) ushort -> r5 single-def -; V01 loc0 [V01,T07] ( 2, 2 ) ubyte -> r3 single-def
+; V00 arg0 [V00,T00] ( 4, 4 ) ushort -> r5 single-def +; V01 loc0 [V01,T06] ( 2, 2 ) ubyte -> r3 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> r3 single-def "arr expr" -; V04 tmp2 [V04,T01] ( 3, 6 ) ref -> r0 single-def "arr expr" -; V05 tmp3 [V05,T02] ( 3, 6 ) int -> r3 "index expr"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> r3 single-def "arr expr" +; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> r0 single-def "arr expr" +; V05 tmp3 [V05,T03] ( 3, 6 ) int -> r3 "index expr"
; V06 cse0 [V06,T04] ( 3, 3 ) byref -> r0 "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 3, 3 ) int -> r1 "CSE - aggressive" -; V08 cse2 [V08,T06] ( 3, 3 ) int -> r2 "CSE - aggressive"
+; V07 cse1 [V07,T05] ( 3, 3 ) int -> r2 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -35,20 +34,20 @@ G_M53790_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r3, [r0+0x784] ; gcrRegs +[r3] uxth r2, r5
- asrs r1, r2, 8 - ldr lr, [r3+0x04] - cmp r1, lr
+ asrs r2, r2, 8 + ldr r1, [r3+0x04] + cmp r2, r1
bhs SHORT G_M53790_IG04 adds r3, 8 ; gcrRegs -[r3] ; byrRegs +[r3]
- ldrb r3, [r3+r1]
+ ldrb r3, [r3+r2]
; byrRegs -[r3] ldr r0, [r0+0x788] ; gcrRegs +[r0] ; byrRegs -[r0] lsls r3, r3, 8
- uxtb r2, r2
+ uxtb r2, r5
adds r3, r3, r2 ldr r2, [r0+0x04] cmp r3, r2 @@ -58,7 +57,7 @@ G_M53790_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[r0] ldrb r0, [r0+r3] ; byrRegs -[r0]
- ;; size=54 bbWeight=1 PerfScore 22.00
+ ;; size=52 bbWeight=1 PerfScore 22.00
G_M53790_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r5,pc} ;; size=2 bbWeight=1 PerfScore 1.00 @@ -72,7 +71,7 @@ G_M53790_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 2, PerfScore 25.00, instruction count 31, allocated bytes for code 76 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
+; Total bytes of code 74, prolog size 2, PerfScore 25.00, instruction count 31, allocated bytes for code 74 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -84,7 +83,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 37 (0x00025) Actual length = 74 (0x00004a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 4619.dasm - System.Version:GetHashCode():int:this (FullOpts)

No diffs found?

+0 (0.00%) : 65547.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceDelegateMethodSymbol+InvokeMethod:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)

@@ -6,14 +6,14 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 28 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 26 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 17, 15.50) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceDelegateMethodSymbol+InvokeMethod>
-; V01 arg1 [V01,T07] ( 3, 3 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.ConversionsBase>
+; V01 arg1 [V01,T08] ( 3, 3 ) ref -> r7 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.ConversionsBase>
; V02 arg2 [V02,T02] ( 10, 7.50) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
-; V03 loc0 [V03,T13] ( 4, 2.50) ref -> r9 class-hnd exact single-def <<unknown class>> -; V04 loc1 [V04,T00] ( 26, 18 ) ref -> r8 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
+;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <<unknown class>> +; V04 loc1 [V04,T00] ( 26, 19 ) ref -> r8 class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
;* V05 loc2 [V05 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op <System.Threading.CancellationToken> ;* V06 loc3 [V06 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ; V07 OutArgs [V07 ] ( 1, 1 ) struct (28) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -23,43 +23,43 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]> ;* V12 tmp5 [V12 ] ( 0, 0 ) struct ( 4) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]> ; V13 tmp6 [V13,T03] ( 4, 8 ) ref -> r0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.DelegateDeclarationSyntax>
-; V14 tmp7 [V14,T04] ( 3, 6 ) ref -> r8 class-hnd single-def "Inlining Arg" <System.__Canon> -; V15 tmp8 [V15,T05] ( 3, 6 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V14 tmp7 [V14,T05] ( 3, 6 ) ref -> r8 class-hnd single-def "Inlining Arg" <System.__Canon> +; V15 tmp8 [V15,T04] ( 5, 7 ) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V16 tmp9 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V17 tmp10 [V17 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V18 tmp11 [V18,T21] ( 3, 1.50) ref -> [sp+0x38] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V18 tmp11 [V18,T20] ( 3, 1.50) ref -> [sp+0x38] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "dup spill" <<unknown class>> ;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref single-def
-; V21 tmp14 [V21,T22] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V21 tmp14 [V21,T21] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
;* V22 tmp15 [V22 ] ( 0, 0 ) struct (12) zero-ref multireg-arg "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V23 tmp16 [V23,T17] ( 2, 2 ) ref -> r3 class-hnd single-def "dup spill" <<unknown class>>
+; V23 tmp16 [V23,T16] ( 2, 2 ) ref -> r3 class-hnd single-def "dup spill" <<unknown class>>
;* V24 tmp17 [V24 ] ( 0, 0 ) struct (12) zero-ref <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> ;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref single-def
-; V26 tmp19 [V26,T15] ( 4, 2 ) ref -> r3
+; V26 tmp19 [V26,T14] ( 4, 2 ) ref -> r3
; V27 tmp20 [V27,T10] ( 4, 4 ) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T18] ( 2, 2 ) ref -> [sp+0x30] class-hnd exact spill-single-def "finalizable newobj spill" <<unknown class>> -;* V29 tmp22 [V29,T29] ( 0, 0 ) ref -> zero-ref single-def "field V05._source (fldOffset=0x0)" P-INDEP
+; V28 tmp21 [V28,T17] ( 2, 2 ) ref -> [sp+0x30] class-hnd exact spill-single-def "finalizable newobj spill" <<unknown class>> +;* V29 tmp22 [V29,T28] ( 0, 0 ) ref -> zero-ref single-def "field V05._source (fldOffset=0x0)" P-INDEP
;* V30 tmp23 [V30 ] ( 0, 0 ) ref -> zero-ref "field V06.DefaultType (fldOffset=0x0)" P-INDEP ;* V31 tmp24 [V31 ] ( 0, 0 ) ref -> zero-ref "field V06._extensions (fldOffset=0x4)" P-INDEP ;* V32 tmp25 [V32 ] ( 0, 0 ) ubyte -> zero-ref "field V06.NullableAnnotation (fldOffset=0x8)" P-INDEP
-; V33 tmp26 [V33,T23] ( 2, 1.50) ref -> r1 "field V09.array (fldOffset=0x0)" P-INDEP -; V34 tmp27 [V34,T24] ( 2, 1.50) ref -> [sp+0x2C] spill-single-def "field V10.array (fldOffset=0x0)" P-INDEP -; V35 tmp28 [V35,T19] ( 2, 2 ) ref -> r1 "field V11.array (fldOffset=0x0)" P-INDEP -; V36 tmp29 [V36,T20] ( 2, 2 ) ref -> r2 "field V12.array (fldOffset=0x0)" P-INDEP -; V37 tmp30 [V37,T25] ( 2, 1.50) ref -> r1 single-def "field V17.DefaultType (fldOffset=0x0)" P-INDEP -; V38 tmp31 [V38,T14] ( 3, 2.50) ref -> r0 single-def "field V17._extensions (fldOffset=0x4)" P-INDEP
+; V33 tmp26 [V33,T22] ( 2, 1.50) ref -> r1 "field V09.array (fldOffset=0x0)" P-INDEP +; V34 tmp27 [V34,T23] ( 2, 1.50) ref -> [sp+0x2C] spill-single-def "field V10.array (fldOffset=0x0)" P-INDEP +; V35 tmp28 [V35,T18] ( 2, 2 ) ref -> r1 "field V11.array (fldOffset=0x0)" P-INDEP +; V36 tmp29 [V36,T19] ( 2, 2 ) ref -> r2 "field V12.array (fldOffset=0x0)" P-INDEP +; V37 tmp30 [V37,T24] ( 2, 1.50) ref -> r1 single-def "field V17.DefaultType (fldOffset=0x0)" P-INDEP +; V38 tmp31 [V38,T13] ( 3, 2.50) ref -> r0 single-def "field V17._extensions (fldOffset=0x4)" P-INDEP
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "field V17.NullableAnnotation (fldOffset=0x8)" P-INDEP
-; V40 tmp33 [V40,T26] ( 2, 1 ) ref -> [sp+0x28] spill-single-def "field V22.DefaultType (fldOffset=0x0)" P-INDEP -; V41 tmp34 [V41,T27] ( 2, 1 ) ref -> [sp+0x24] spill-single-def "field V22._extensions (fldOffset=0x4)" P-INDEP -; V42 tmp35 [V42,T28] ( 2, 1 ) ubyte -> [sp+0x44] spill-single-def "field V22.NullableAnnotation (fldOffset=0x8)" P-INDEP
+; V40 tmp33 [V40,T25] ( 2, 1 ) ref -> [sp+0x28] spill-single-def "field V22.DefaultType (fldOffset=0x0)" P-INDEP +; V41 tmp34 [V41,T26] ( 2, 1 ) ref -> [sp+0x24] spill-single-def "field V22._extensions (fldOffset=0x4)" P-INDEP +; V42 tmp35 [V42,T27] ( 2, 1 ) ubyte -> [sp+0x44] spill-single-def "field V22.NullableAnnotation (fldOffset=0x8)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ref -> zero-ref single-def "field V24.DefaultType (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) ref -> zero-ref single-def "field V24._extensions (fldOffset=0x4)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V24.NullableAnnotation (fldOffset=0x8)" P-INDEP ; V46 tmp39 [V46,T12] ( 2, 4 ) ref -> r0 single-def "argument with side effect"
-; V47 cse0 [V47,T16] ( 4, 2 ) byref -> [sp+0x20] spill-single-def "CSE - moderate" -; V48 cse1 [V48,T06] ( 5, 5 ) int -> r7 "CSE - aggressive" -; V49 cse2 [V49,T08] ( 5, 4.50) int -> [sp+0x40] spill-single-def "CSE - moderate" -; V50 cse3 [V50,T09] ( 6, 4 ) int -> [sp+0x3C] multi-def "CSE - moderate"
+; V47 cse0 [V47,T15] ( 4, 2 ) byref -> [sp+0x20] spill-single-def "CSE - moderate" +; V48 cse1 [V48,T06] ( 5, 5 ) int -> [sp+0x40] spill-single-def "CSE - aggressive" +; V49 cse2 [V49,T07] ( 5, 5 ) int -> r7 "CSE - aggressive" +; V50 cse3 [V50,T09] ( 6, 4.50) int -> [sp+0x3C] multi-def "CSE - moderate"
; ; Lcl frame size = 76 @@ -257,7 +257,7 @@ G_M52476_IG09: ; bbWeight=1, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0 movt r0, HIGH RELOC 0xD1FFAB1E add r0, pc ldr r3, [r0]
- str r3, [sp+0x40] // [V49 cse2]
+ str r3, [sp+0x40] // [V48 cse1]
ldr r0, [r8+r3] ; gcrRegs +[r0] cmp r0, 0 @@ -265,7 +265,7 @@ G_M52476_IG09: ; bbWeight=1, gcrefRegs=0370 {r4 r5 r6 r8 r9}, byrefRegs=0 ; GC ptr vars +{V18} bne SHORT G_M52476_IG11 ;; size=28 bbWeight=1 PerfScore 10.00
-G_M52476_IG10: ; bbWeight=0.50, gcVars=00200000 {V18}, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, gcvars, byref
+G_M52476_IG10: ; bbWeight=0.50, gcVars=00100000 {V18}, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0 r4] movw r0, LOW RELOC 0xD1FFAB1E movt r0, HIGH RELOC 0xD1FFAB1E @@ -290,7 +290,7 @@ G_M52476_IG11: ; bbWeight=1, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 ldr r2, [r0] str r2, [sp+0x3C] // [V50 cse3] ldr r0, [r8+r2]
- ldr r3, [sp+0x40] // [V49 cse2]
+ ldr r3, [sp+0x40] // [V48 cse1]
ldr r0, [r8+r3] ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E @@ -357,12 +357,12 @@ G_M52476_IG13: ; bbWeight=1, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 ; gcrRegs -[r1] +[r0] str r0, [sp+0x2C] // [V34 tmp27] ; GC ptr vars +{V34}
- ldr r3, [sp+0x40] // [V49 cse2]
+ ldr r3, [sp+0x40] // [V48 cse1]
ldr r0, [r8+r3] cmp r0, 0 bne SHORT G_M52476_IG15 ;; size=30 bbWeight=1 PerfScore 12.00
-G_M52476_IG14: ; bbWeight=0.50, gcVars=01000000 {V34}, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, gcvars, byref
+G_M52476_IG14: ; bbWeight=0.50, gcVars=00800000 {V34}, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r0] ldr r2, [sp+0x3C] // [V50 cse3] ldr r0, [r8+r2] @@ -377,10 +377,10 @@ G_M52476_IG14: ; bbWeight=0.50, gcVars=01000000 {V34}, gcrefRegs=0360 {r5 blx lr // Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:CreateSourceAssemblyForCompilation(Microsoft.CodeAnalysis.CSharp.CSharpCompilation):this ; gcrRegs -[r0-r1] ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M52476_IG15: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M52476_IG15: ; bbWeight=1, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [sp+0x3C] // [V50 cse3] ldr r0, [r8+r0]
- ldr r3, [sp+0x40] // [V49 cse2]
+ ldr r3, [sp+0x40] // [V48 cse1]
ldr r0, [r8+r3] ; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E @@ -391,7 +391,9 @@ G_M52476_IG15: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 blx r3 // Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol:get_RuntimeSupportsNumericIntPtr():ubyte:this ; gcrRegs -[r0] cmp r0, 0
- bne SHORT G_M52476_IG16
+ bne SHORT G_M52476_IG17 + ;; size=32 bbWeight=1 PerfScore 12.00 +G_M52476_IG16: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
movs r2, 0 ; gcrRegs +[r2] str r2, [sp] // [V07 OutArgs] @@ -408,8 +410,8 @@ G_M52476_IG15: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 ; GC ptr vars -{V34} blx lr // Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNativeIntegerAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) ; gcrRegs -[r0-r2]
- ;; size=60 bbWeight=0.50 PerfScore 11.50 -G_M52476_IG16: ; bbWeight=1, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=0.50 PerfScore 5.50 +G_M52476_IG17: ; bbWeight=1, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r1, [r5+0x44] ; gcrRegs +[r1] mov r0, r7 @@ -444,9 +446,9 @@ G_M52476_IG16: ; bbWeight=1, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 blx r3 // Microsoft.CodeAnalysis.CSharp.CSharpCompilation:ShouldEmitNullableAttributes(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte:this ; gcrRegs -[r0-r1] cmp r0, 0
- beq SHORT G_M52476_IG25
+ beq SHORT G_M52476_IG26
;; size=68 bbWeight=1 PerfScore 27.00
-G_M52476_IG17: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M52476_IG18: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
ldr r4, [r5+0x48] ; gcrRegs +[r4] str r4, [sp+0x28] // [V40 tmp33] @@ -473,7 +475,7 @@ G_M52476_IG17: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 ldr r3, [r4+r3] ; gcrRegs +[r3] cmp r3, 0
- bne SHORT G_M52476_IG18
+ bne SHORT G_M52476_IG19
movw r3, 0xd1ff ; gcrRegs -[r3] ldr r3, [r4+r3] @@ -520,7 +522,7 @@ G_M52476_IG17: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 mov r3, r1 ; gcrRegs +[r3] ;; size=116 bbWeight=0.50 PerfScore 22.00
-G_M52476_IG18: ; bbWeight=0.50, gcVars=0C000000 {V40 V41}, gcrefRegs=0368 {r3 r5 r6 r8 r9}, byrefRegs=0000 {}, gcvars, byref
+G_M52476_IG19: ; bbWeight=0.50, gcVars=06000000 {V40 V41}, gcrefRegs=0368 {r3 r5 r6 r8 r9}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r1] ; GC ptr vars -{V27} movs r1, 0 @@ -528,20 +530,20 @@ G_M52476_IG18: ; bbWeight=0.50, gcVars=0C000000 {V40 V41}, gcrefRegs=0368 str r1, [sp] // [V07 OutArgs] str r3, [sp+0x04] // [V07 OutArgs+0x04] ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M52476_IG19: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
+G_M52476_IG20: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r1 r3] str r1, [sp+0x08] // [V07 OutArgs+0x08] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M52476_IG20: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
+G_M52476_IG21: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
str r1, [sp+0x0C] // [V07 OutArgs+0x0c] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M52476_IG21: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
+G_M52476_IG22: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
str r1, [sp+0x10] // [V07 OutArgs+0x10] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M52476_IG22: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
+G_M52476_IG23: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref
str r1, [sp+0x14] // [V07 OutArgs+0x14] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M52476_IG23: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
+G_M52476_IG24: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0000 {}, byref, isz
str r1, [sp+0x18] // [V07 OutArgs+0x18] ldr r1, [sp+0x28] // [V40 tmp33] ; gcrRegs +[r1] @@ -560,7 +562,7 @@ G_M52476_IG23: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 blx lr // <unknown method> ; gcrRegs -[r1-r2] +[r0] cmp r0, 0
- beq SHORT G_M52476_IG25
+ beq SHORT G_M52476_IG26
mov r0, r8 mov r2, r6 ; gcrRegs +[r2] @@ -575,7 +577,7 @@ G_M52476_IG23: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 ; gcrRegs -[r0 r2-r3 r9] ands r0, r0, 1 cmp r0, 0
- beq SHORT G_M52476_IG24
+ beq SHORT G_M52476_IG25
movw r0, LOW RELOC 0xD1FFAB1E movt r0, HIGH RELOC 0xD1FFAB1E add r0, pc @@ -590,7 +592,7 @@ G_M52476_IG23: ; bbWeight=0.50, gcrefRegs=0360 {r5 r6 r8 r9}, byrefRegs=0 blx r3 // <unknown method> ; byrRegs -[r0] ;; size=104 bbWeight=0.50 PerfScore 19.00
-G_M52476_IG24: ; bbWeight=0.50, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
+G_M52476_IG25: ; bbWeight=0.50, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
movw r1, LOW RELOC 0xD1FFAB1E movt r1, HIGH RELOC 0xD1FFAB1E add r1, pc @@ -598,7 +600,7 @@ G_M52476_IG24: ; bbWeight=0.50, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 movs r0, 1 strb r0, [r8+r1] ;; size=18 bbWeight=0.50 PerfScore 3.00
-G_M52476_IG25: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
+G_M52476_IG26: ; bbWeight=1, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref
...

+2 (+2.17%) : 104108.dasm - System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)

@@ -8,12 +8,11 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> r0 single-def
+; V00 arg0 [V00,T00] ( 4, 4 ) ushort -> r5 single-def
; V01 loc0 [V01 ] ( 4, 4 ) int -> [sp+0x04] do-not-enreg[X] addr-exposed ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T01] ( 2, 4 ) ref -> r6 class-hnd single-def "impAppendStmt" <System.String> ; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
-; V05 cse0 [V05,T03] ( 3, 3 ) int -> r5 "CSE - aggressive"
; ; Lcl frame size = 12 @@ -21,10 +20,11 @@ G_M13548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r4,r5,r6,r11,lr} sub sp, 12 add r11, sp, 24
- ;; size=10 bbWeight=1 PerfScore 3.00
+ mov r5, r0 + ;; size=12 bbWeight=1 PerfScore 4.00
G_M13548_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxth r5, r0 - asrs r0, r5, 8
+ uxth r0, r5 + asrs r0, r0, 8
str r0, [sp+0x04] // [V01 loc0] add r0, sp, 4 // [V01 loc0] movw r4, LOW RELOC 0xD1FFAB1E @@ -66,7 +66,7 @@ G_M13548_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r6,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 92, prolog size 10, PerfScore 35.00, instruction count 35, allocated bytes for code 92 (MethodHash=b0eecb13) for method System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)
+; Total bytes of code 94, prolog size 10, PerfScore 36.00, instruction count 36, allocated bytes for code 94 (MethodHash=b0eecb13) for method System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -78,7 +78,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 46 (0x0002e) Actual length = 92 (0x00005c)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

libraries.pmi.linux.arm.checked.mch

-4 (-20.00%) : 228976.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)

@@ -7,7 +7,7 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
+; V00 this [V00,T00] ( 3, 3 ) byref -> r0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4 @@ -17,14 +17,13 @@ G_M60978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=2 bbWeight=1 PerfScore 1.00 G_M60978_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz ; byrRegs +[r0]
- ldrsb r3, [r0]
ldr r0, [r0+0x08] ; byrRegs -[r0] cmp r0, 0 blt SHORT G_M60978_IG03 movs r0, 0 b SHORT G_M60978_IG04
- ;; size=14 bbWeight=1 PerfScore 6.00
+ ;; size=10 bbWeight=1 PerfScore 5.00
G_M60978_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00 @@ -32,7 +31,7 @@ G_M60978_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 20, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 20 (MethodHash=310211cd) for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)
+; Total bytes of code 16, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 16 (MethodHash=310211cd) for method System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -44,7 +43,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
+ Function Length : 8 (0x00008) Actual length = 16 (0x000010)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-2 (-14.29%) : 21959.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:ResetHighWatermark():this (FullOpts)

@@ -8,9 +8,10 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 5 ) byref -> r0 this single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V02 tmp1 [V02 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
+; V03 cse0 [V03,T01] ( 3, 3 ) int -> r3 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -20,16 +21,15 @@ G_M10371_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M10371_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref ; byrRegs +[r0] ldrh r3, [r0]
- ldrh r2, [r0] - lsls r2, r2, 16
+ lsls r2, r3, 16
orrs r3, r2 str r3, [r0]
- ;; size=10 bbWeight=1 PerfScore 5.00
+ ;; size=8 bbWeight=1 PerfScore 4.00
G_M10371_IG03: ; bbWeight=1, epilog, nogc, extend pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 14, prolog size 2, PerfScore 7.00, instruction count 7, allocated bytes for code 14 (MethodHash=1becd77c) for method System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:ResetHighWatermark():this (FullOpts)
+; Total bytes of code 12, prolog size 2, PerfScore 6.00, instruction count 6, allocated bytes for code 12 (MethodHash=1becd77c) for method System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:ResetHighWatermark():this (FullOpts)
; ============================================================ Unwind Info: @@ -41,7 +41,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
+ Function Length : 6 (0x00006) Actual length = 12 (0x00000c)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-16 (-4.19%) : 158415.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator+RowCounts:ToString():System.String:this (FullOpts)

@@ -11,57 +11,58 @@ ; V00 this [V00,T03] ( 4, 4 ) byref -> r4 this single-def ; V01 loc0 [V01 ] ( 20, 16.00) struct (24) [sp+0x00] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T06] ( 2, 4 ) ref -> r0 class-hnd exact single-def "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr" ; V05 tmp3 [V05,T00] ( 5, 8 ) ref -> r0 class-hnd single-def "dup spill" <ushort[]> ;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V07 tmp5 [V07,T17] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V11 tmp9 [V11,T01] ( 4, 8.00) int -> r0 "Inlining Arg" -;* V12 tmp10 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V13 tmp11 [V13,T04] ( 3, 6.00) int -> r6 "Inlining Arg" -; V14 tmp12 [V14,T09] ( 2, 3.00) byref -> r5 single-def "Inlining Arg"
+;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V10 tmp8 [V10,T01] ( 4, 8.00) int -> r0 "Inlining Arg" +;* V11 tmp9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V12 tmp10 [V12,T04] ( 3, 6.00) int -> r6 "Inlining Arg" +; V13 tmp11 [V13,T10] ( 2, 3.00) byref -> r5 single-def "Inlining Arg" +;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V16 tmp14 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V17 tmp15 [V17,T15] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V18 tmp16 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V19 tmp17 [V19 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V20 tmp18 [V20,T11] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -;* V21 tmp19 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V22 tmp20 [V22,T02] ( 4, 8.00) int -> r0 "Inlining Arg" -;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V24 tmp22 [V24,T05] ( 3, 6.00) int -> r6 "Inlining Arg" -; V25 tmp23 [V25,T10] ( 2, 3.00) byref -> r5 single-def "Inlining Arg"
+;* V16 tmp14 [V16,T16] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V18 tmp16 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V19 tmp17 [V19,T12] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" +;* V20 tmp18 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V21 tmp19 [V21,T02] ( 4, 8.00) int -> r0 "Inlining Arg" +;* V22 tmp20 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V23 tmp21 [V23,T05] ( 3, 6.00) int -> r7 "Inlining Arg" +; V24 tmp22 [V24,T11] ( 2, 3.00) byref -> r6 single-def "Inlining Arg" +;* V25 tmp23 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp24 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp25 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V28 tmp26 [V28,T16] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V29 tmp27 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V31 tmp29 [V31,T12] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -; V32 tmp30 [V32,T13] ( 3, 1.50) byref -> r5 "field V09._reference (fldOffset=0x0)" P-INDEP -; V33 tmp31 [V33,T14] ( 3, 1.50) int -> r6 "field V09._length (fldOffset=0x4)" P-INDEP -;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP -;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP -;* V36 tmp34 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP -;* V37 tmp35 [V37 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x4)" P-INDEP -;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP -;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP -;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP -;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP -;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x4)" P-INDEP -;* V44 tmp42 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP -;* V45 tmp43 [V45 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP -; V46 cse0 [V46,T07] ( 3, 3.00) int -> r1 "CSE - moderate" -; V47 cse1 [V47,T08] ( 3, 3.00) int -> r1 "CSE - moderate"
+;* V27 tmp25 [V27,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V28 tmp26 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V29 tmp27 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V30 tmp28 [V30,T13] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" +; V31 tmp29 [V31,T14] ( 3, 1.50) byref -> r5 "field V08._reference (fldOffset=0x0)" P-INDEP +; V32 tmp30 [V32,T15] ( 3, 1.50) int -> r6 "field V08._length (fldOffset=0x4)" P-INDEP +;* V33 tmp31 [V33 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP +;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP +;* V35 tmp33 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP +;* V36 tmp34 [V36 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x4)" P-INDEP +;* V37 tmp35 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP +;* V38 tmp36 [V38 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x4)" P-INDEP +;* V39 tmp37 [V39 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP +;* V40 tmp38 [V40 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP +;* V41 tmp39 [V41 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP +;* V42 tmp40 [V42 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP +;* V43 tmp41 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP +;* V44 tmp42 [V44 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x4)" P-INDEP +; V45 cse0 [V45,T08] ( 3, 3.00) int -> r1 "CSE - aggressive" +; V46 cse1 [V46,T09] ( 3, 3.00) int -> r1 "CSE - aggressive" +; V47 cse2 [V47,T06] ( 6, 3.00) ref -> r1 multi-def "CSE - aggressive" +; V48 cse3 [V48,T07] ( 3, 3.00) ref -> r5 "CSE - aggressive"
;
-; Lcl frame size = 28
+; Lcl frame size = 24
G_M18082_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r11,lr} - sub sp, 28
+ push {r4,r5,r6,r7,r11,lr} + sub sp, 24
add r11, sp, 40 sub r3, r11, 40 movs r1, 0 @@ -119,15 +120,16 @@ G_M18082_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b ;; size=12 bbWeight=1.00 PerfScore 6.00 G_M18082_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref ; byrRegs -[r3]
- movw r0, 0xd1ff - movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
+ mov r0, r1 + ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ; gcrRegs -[r0] + ;; size=22 bbWeight=0.50 PerfScore 3.50
G_M18082_IG08: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz cmp r6, 3 blo SHORT G_M18082_IG17 @@ -150,66 +152,71 @@ G_M18082_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5} G_M18082_IG10: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ldr r1, [r4] add r0, sp, 0
- movw r2, 0xd1ff - movt r2, 0xd1ff
+ movw r5, 0xd1ff + movt r5, 0xd1ff + mov r2, r5 + ; gcrRegs +[r2]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
+ ; gcrRegs -[r2] +[r5]
ldr r0, [sp+0x08] ldr r1, [sp+0x14] cmp r0, r1 bhi SHORT G_M18082_IG20
- ;; size=32 bbWeight=1.00 PerfScore 12.00 -G_M18082_IG11: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ ;; size=34 bbWeight=1.00 PerfScore 13.00 +G_M18082_IG11: ; bbWeight=1.00, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
ldr r3, [sp+0x10] ; byrRegs +[r3] lsls r2, r0, 1
- adds r5, r3, r2 - ; byrRegs +[r5] - subs r6, r1, r0 - cmp r6, 0
+ adds r6, r3, r2 + ; byrRegs +[r6] + subs r7, r1, r0 + cmp r7, 0
bge SHORT G_M18082_IG13 ;; size=12 bbWeight=1.00 PerfScore 6.00
-G_M18082_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
+G_M18082_IG12: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref
; byrRegs -[r3]
- movw r0, 0xd1ff - movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
+ mov r0, r1 + ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ;; size=28 bbWeight=0.50 PerfScore 4.00 -G_M18082_IG13: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz - cmp r6, 4
+ ; gcrRegs -[r0] + ;; size=22 bbWeight=0.50 PerfScore 3.50 +G_M18082_IG13: ; bbWeight=1.00, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref, isz + cmp r7, 4
blo SHORT G_M18082_IG18 ;; size=4 bbWeight=1.00 PerfScore 2.00
-G_M18082_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref
+G_M18082_IG14: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0050 {r4 r6}, byref
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r5
+ mov r0, r6
; byrRegs +[r0] movs r2, 8 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; byrRegs -[r0 r5]
+ ; byrRegs -[r0 r6]
ldr r0, [sp+0x08] adds r0, r0, 4 str r0, [sp+0x08] ;; size=30 bbWeight=0.50 PerfScore 5.48
-G_M18082_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M18082_IG15: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
ldr r1, [r4+0x04] add r0, sp, 0
- movw r2, 0xd1ff - movt r2, 0xd1ff
+ mov r2, r5 + ; gcrRegs +[r2]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
+ ; gcrRegs -[r2 r5]
; byrRegs -[r4] add r0, sp, 0 movw r3, 0xd1ff @@ -217,10 +224,10 @@ G_M18082_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre ldr r3, [r3] blx r3 // System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this ; gcrRegs +[r0]
- ;; size=38 bbWeight=1 PerfScore 13.00
+ ;; size=32 bbWeight=1 PerfScore 12.00
G_M18082_IG16: ; bbWeight=1, epilog, nogc, extend
- add sp, 28 - pop {r4,r5,r6,r11,pc}
+ add sp, 24 + pop {r4,r5,r6,r7,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00 G_M18082_IG17: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz ; gcrRegs -[r0] @@ -234,7 +241,8 @@ G_M18082_IG17: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0000 {}, by blx r3 // <unknown method> b SHORT G_M18082_IG10 ;; size=24 bbWeight=0.00 PerfScore 0.02
-G_M18082_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M18082_IG18: ; bbWeight=0.00, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz + ; gcrRegs +[r5]
add r0, sp, 0 movw r1, 0xd1ff movt r1, 0xd1ff @@ -245,6 +253,7 @@ G_M18082_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, b b SHORT G_M18082_IG15 ;; size=24 bbWeight=0.00 PerfScore 0.02 G_M18082_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+ ; gcrRegs -[r5]
movs r5, 0 movs r6, 0 b SHORT G_M18082_IG04 @@ -258,7 +267,7 @@ G_M18082_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00 ...

+34 (+1.10%) : 81746.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitIndirectStore(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)

@@ -5,238 +5,222 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 3 inlinees with PGO data; 180 single block inlinees; 57 inlinees without PGO data
+; 3 inlinees with PGO data; 180 single block inlinees; 58 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T09] ( 15, 8.50) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator> ; V01 arg1 [V01,T11] ( 11, 7.50) ref -> r4 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V02 arg2 [V02,T22] ( 4, 3 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02,T23] ( 4, 3 ) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T72] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable" -; V06 tmp2 [V06,T43] ( 4, 3 ) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
+; V05 tmp1 [V05,T74] ( 3, 2.50) int -> r1 "fgMakeTemp is creating a new local variable" +; V06 tmp2 [V06,T44] ( 4, 3 ) ref -> r0 class-hnd "spilling QMark2" <<unknown class>>
; V07 tmp3 [V07,T00] ( 12, 12 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> ;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V09 tmp5 [V09,T78] ( 2, 2 ) int -> r5 "Inlining Arg" -; V10 tmp6 [V10,T87] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V11 tmp7 [V11,T23] ( 4, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V09 tmp5 [V09,T80] ( 2, 2 ) int -> r5 "Inlining Arg" +; V10 tmp6 [V10,T89] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V11 tmp7 [V11,T24] ( 4, 4 ) ref -> r8 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
; V12 tmp8 [V12,T12] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> ;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V15 tmp11 [V15,T37] ( 6, 3 ) int -> r6 "Inline stloc first use temp" ;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V18 tmp14 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V21 tmp17 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V25 tmp21 [V25,T13] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V26 tmp22 [V26,T69] ( 3, 2.80) int -> r3 "impAppendStmt" -;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V28 tmp24 [V28,T101] ( 3, 1 ) int -> r2 "Inline return value spill temp" -; V29 tmp25 [V29,T73] ( 3, 2.20) int -> r2 "Inlining Arg" -; V30 tmp26 [V30,T44] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V31 tmp27 [V31,T01] ( 12, 12 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V32 tmp28 [V32 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V33 tmp29 [V33,T79] ( 2, 2 ) int -> r5 "Inlining Arg" -; V34 tmp30 [V34,T88] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V35 tmp31 [V35,T24] ( 4, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V36 tmp32 [V36,T14] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V37 tmp33 [V37 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V38 tmp34 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V39 tmp35 [V39,T38] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V40 tmp36 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V42 tmp38 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V23 tmp19 [V23,T13] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V24 tmp20 [V24,T71] ( 3, 2.80) int -> r3 "impAppendStmt" +;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V26 tmp22 [V26,T102] ( 3, 1 ) int -> r2 "Inline return value spill temp" +; V27 tmp23 [V27,T75] ( 3, 2.20) int -> r2 "Inlining Arg" +; V28 tmp24 [V28,T45] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V29 tmp25 [V29,T01] ( 12, 12 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V31 tmp27 [V31,T81] ( 2, 2 ) int -> r5 "Inlining Arg" +; V32 tmp28 [V32,T90] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V33 tmp29 [V33,T25] ( 4, 4 ) ref -> r9 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V34 tmp30 [V34,T14] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V35 tmp31 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V36 tmp32 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V37 tmp33 [V37,T38] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V39 tmp35 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V42 tmp38 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V43 tmp39 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V44 tmp40 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V45 tmp41 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V46 tmp42 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V49 tmp45 [V49,T15] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V50 tmp46 [V50,T70] ( 3, 2.80) int -> r3 "impAppendStmt" -;* V51 tmp47 [V51 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V52 tmp48 [V52,T102] ( 3, 1 ) int -> r2 "Inline return value spill temp" -; V53 tmp49 [V53,T74] ( 3, 2.20) int -> r2 "Inlining Arg" -; V54 tmp50 [V54,T45] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V55 tmp51 [V55,T02] ( 12, 12 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V56 tmp52 [V56 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V57 tmp53 [V57,T80] ( 2, 2 ) int -> r5 "Inlining Arg" -; V58 tmp54 [V58,T89] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V59 tmp55 [V59,T25] ( 4, 4 ) ref -> r10 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V60 tmp56 [V60,T16] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V61 tmp57 [V61 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V45 tmp41 [V45,T15] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V46 tmp42 [V46,T72] ( 3, 2.80) int -> r3 "impAppendStmt" +;* V47 tmp43 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V48 tmp44 [V48,T103] ( 3, 1 ) int -> r2 "Inline return value spill temp" +; V49 tmp45 [V49,T76] ( 3, 2.20) int -> r2 "Inlining Arg" +; V50 tmp46 [V50,T46] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V51 tmp47 [V51,T02] ( 12, 12 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V52 tmp48 [V52 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V53 tmp49 [V53,T82] ( 2, 2 ) int -> r5 "Inlining Arg" +; V54 tmp50 [V54,T91] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V55 tmp51 [V55,T26] ( 4, 4 ) ref -> r10 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V56 tmp52 [V56,T16] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V57 tmp53 [V57 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V59 tmp55 [V59,T39] ( 6, 3 ) int -> r8 "Inline stloc first use temp" +;* V60 tmp56 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V61 tmp57 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V63 tmp59 [V63,T39] ( 6, 3 ) int -> r8 "Inline stloc first use temp" -;* V64 tmp60 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V63 tmp59 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V64 tmp60 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V65 tmp61 [V65 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V66 tmp62 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V68 tmp64 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V69 tmp65 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V70 tmp66 [V70 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V71 tmp67 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V73 tmp69 [V73,T17] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V74 tmp70 [V74,T71] ( 3, 2.80) int -> r3 "impAppendStmt" -;* V75 tmp71 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V76 tmp72 [V76,T103] ( 3, 1 ) int -> r2 "Inline return value spill temp" -; V77 tmp73 [V77,T75] ( 3, 2.20) int -> r2 "Inlining Arg" -; V78 tmp74 [V78,T46] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V79 tmp75 [V79,T03] ( 12, 12 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V81 tmp77 [V81,T81] ( 2, 2 ) int -> r5 "Inlining Arg" -; V82 tmp78 [V82,T90] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V83 tmp79 [V83,T26] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V84 tmp80 [V84,T18] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V85 tmp81 [V85 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V66 tmp62 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V67 tmp63 [V67,T17] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V68 tmp64 [V68,T73] ( 3, 2.80) int -> r3 "impAppendStmt" +;* V69 tmp65 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V70 tmp66 [V70,T104] ( 3, 1 ) int -> r2 "Inline return value spill temp" +; V71 tmp67 [V71,T77] ( 3, 2.20) int -> r2 "Inlining Arg" +; V72 tmp68 [V72,T47] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V73 tmp69 [V73,T03] ( 12, 12 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V74 tmp70 [V74 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V75 tmp71 [V75,T83] ( 2, 2 ) int -> r5 "Inlining Arg" +; V76 tmp72 [V76,T92] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V77 tmp73 [V77,T27] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V78 tmp74 [V78,T18] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V79 tmp75 [V79 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V80 tmp76 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V81 tmp77 [V81,T40] ( 6, 3 ) int -> r6 "Inline stloc first use temp" +;* V82 tmp78 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V83 tmp79 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V84 tmp80 [V84 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V85 tmp81 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V86 tmp82 [V86 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V87 tmp83 [V87,T40] ( 6, 3 ) int -> r6 "Inline stloc first use temp"
+;* V87 tmp83 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V88 tmp84 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V89 tmp85 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V90 tmp86 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V91 tmp87 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V92 tmp88 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V93 tmp89 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V94 tmp90 [V94 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V95 tmp91 [V95 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V96 tmp92 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V97 tmp93 [V97,T47] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V98 tmp94 [V98,T04] ( 12, 12 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V99 tmp95 [V99 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V100 tmp96 [V100,T82] ( 2, 2 ) int -> r5 "Inlining Arg" -; V101 tmp97 [V101,T91] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V102 tmp98 [V102,T27] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V103 tmp99 [V103,T19] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V104 tmp100 [V104 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V105 tmp101 [V105 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V106 tmp102 [V106,T41] ( 6, 3 ) int -> r9 "Inline stloc first use temp" -;* V107 tmp103 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V108 tmp104 [V108 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V109 tmp105 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V110 tmp106 [V110 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V111 tmp107 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V112 tmp108 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V113 tmp109 [V113 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V89 tmp85 [V89,T48] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V90 tmp86 [V90,T04] ( 12, 12 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V91 tmp87 [V91 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V92 tmp88 [V92,T84] ( 2, 2 ) int -> r5 "Inlining Arg" +; V93 tmp89 [V93,T93] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V94 tmp90 [V94,T28] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V95 tmp91 [V95,T19] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V96 tmp92 [V96 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V97 tmp93 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V98 tmp94 [V98,T41] ( 6, 3 ) int -> r9 "Inline stloc first use temp" +;* V99 tmp95 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V100 tmp96 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V101 tmp97 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V102 tmp98 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V103 tmp99 [V103 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V104 tmp100 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V105 tmp101 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V106 tmp102 [V106,T49] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V107 tmp103 [V107,T05] ( 12, 12 ) ref -> r9 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V108 tmp104 [V108 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V109 tmp105 [V109,T85] ( 2, 2 ) int -> r5 "Inlining Arg" +; V110 tmp106 [V110,T94] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V111 tmp107 [V111,T29] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V112 tmp108 [V112,T20] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V113 tmp109 [V113 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V114 tmp110 [V114 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V115 tmp111 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V116 tmp112 [V116,T48] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V117 tmp113 [V117,T05] ( 12, 12 ) ref -> r9 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V118 tmp114 [V118 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V119 tmp115 [V119,T83] ( 2, 2 ) int -> r5 "Inlining Arg" -; V120 tmp116 [V120,T92] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V121 tmp117 [V121,T28] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V122 tmp118 [V122,T20] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V123 tmp119 [V123 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V124 tmp120 [V124 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V125 tmp121 [V125,T42] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V126 tmp122 [V126 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V127 tmp123 [V127 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V128 tmp124 [V128 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V129 tmp125 [V129 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V130 tmp126 [V130 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V131 tmp127 [V131 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V132 tmp128 [V132 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V133 tmp129 [V133 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V134 tmp130 [V134 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V135 tmp131 [V135,T49] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V136 tmp132 [V136,T06] ( 12, 12 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V137 tmp133 [V137 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V138 tmp134 [V138,T84] ( 2, 2 ) int -> r5 "Inlining Arg" -; V139 tmp135 [V139,T93] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V140 tmp136 [V140,T29] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V141 tmp137 [V141,T30] ( 4, 4 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V142 tmp138 [V142 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V143 tmp139 [V143,T97] ( 3, 1.50) int -> r0 single-def "Inline stloc first use temp" -;* V144 tmp140 [V144 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V145 tmp141 [V145 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
...

+2 (+2.38%) : 184595.dasm - ILCompiler.DependencyAnalysis.Relocation:PutThumb2Imm16(uint,ushort) (FullOpts)

@@ -8,14 +8,14 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 6, 6 ) int -> r0 single-def
-; V01 arg1 [V01,T04] ( 3, 3 ) ushort -> r1 single-def
+; V01 arg1 [V01,T03] ( 4, 4 ) ushort -> r1 single-def
; V02 loc0 [V02,T01] ( 6, 6 ) int -> r3 ; V03 loc1 [V03,T02] ( 6, 6 ) int -> r2 ;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref ;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 cse0 [V08,T03] ( 5, 5 ) int -> r1 "CSE - aggressive"
+; V08 cse0 [V08,T04] ( 4, 4 ) int -> lr "CSE - aggressive"
; ; Lcl frame size = 0 @@ -32,26 +32,26 @@ G_M25974_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw lr, 0xd1ff movt lr, 0xd1ff and r2, r2, lr
- uxth r1, r1 - and lr, r1, 0xf000 - lsr lr, lr, 12 - orr r3, r3, lr - and lr, r1, 0x800 - lsr lr, lr, 1 - orr r3, r3, lr - and lr, r1, 0x700
+ uxth lr, r1 + and r12, lr, 0xf000 + lsr r12, r12, 12 + orr r3, r3, r12 + and r12, lr, 0x800 + lsr r12, r12, 1 + orr r3, r3, r12 + and lr, lr, 0x700
lsl lr, lr, 4 orr r2, r2, lr uxtb r1, r1 orrs r2, r1 strh r3, [r0] strh r2, [r0+0x02]
- ;; size=74 bbWeight=1 PerfScore 22.00
+ ;; size=76 bbWeight=1 PerfScore 22.00
G_M25974_IG03: ; bbWeight=1, epilog, nogc, extend pop {r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 84, prolog size 6, PerfScore 25.00, instruction count 25, allocated bytes for code 84 (MethodHash=94659a89) for method ILCompiler.DependencyAnalysis.Relocation:PutThumb2Imm16(uint,ushort) (FullOpts)
+; Total bytes of code 86, prolog size 6, PerfScore 25.00, instruction count 25, allocated bytes for code 86 (MethodHash=94659a89) for method ILCompiler.DependencyAnalysis.Relocation:PutThumb2Imm16(uint,ushort) (FullOpts)
; ============================================================ Unwind Info: @@ -63,7 +63,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 43 (0x0002b) Actual length = 86 (0x000056)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+2 (+2.94%) : 155994.dasm - System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> r0 single-def
+; V00 arg0 [V00,T00] ( 4, 4 ) ushort -> r4 single-def
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ; V04 tmp2 [V04,T01] ( 2, 4 ) ref -> r5 single-def "argument with side effect" ; V05 tmp3 [V05,T02] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
-; V06 cse0 [V06,T03] ( 3, 3 ) int -> r4 "CSE - aggressive"
; ; Lcl frame size = 0 G_M13548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r11,lr} add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ mov r4, r0 + ;; size=10 bbWeight=1 PerfScore 3.00
G_M13548_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxth r4, r0 - asrs r0, r4, 8
+ uxth r0, r4 + asrs r0, r0, 8
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -54,7 +54,7 @@ G_M13548_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 68, prolog size 8, PerfScore 23.00, instruction count 23, allocated bytes for code 68 (MethodHash=b0eecb13) for method System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)
+; Total bytes of code 70, prolog size 8, PerfScore 24.00, instruction count 24, allocated bytes for code 70 (MethodHash=b0eecb13) for method System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +66,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 35 (0x00023) Actual length = 70 (0x000046)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

libraries_tests.run.linux.arm.Release.mch

-14 (-50.00%) : 72426.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:get_BufferSize():int (Tier0)

@@ -14,17 +14,13 @@ G_M52681_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M52681_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov r0, 512 - movs r1, 4 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_UDIV - ;; size=16 bbWeight=1 PerfScore 5.00
+ movs r0, 128 + ;; size=2 bbWeight=1 PerfScore 1.00
G_M52681_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 28, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 28 (MethodHash=81b63236) for method System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:get_BufferSize():int (Tier0)
+; Total bytes of code 14, prolog size 8, PerfScore 4.00, instruction count 4, allocated bytes for code 14 (MethodHash=81b63236) for method System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:get_BufferSize():int (Tier0)
; ============================================================ Unwind Info: @@ -36,7 +32,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 28 (0x00001c)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-14 (-50.00%) : 464087.dasm - TestType:meth1():int (Tier0)

@@ -14,20 +14,13 @@ G_M16291_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00 G_M16291_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movs r3, 1 - adds r3, r3, 1 - movs r2, 1 - adds r2, r2, 1 - adds r2, r2, 1 - adds r3, r3, r2 - adds r3, r3, 2 - adds r0, r3, 1 - ;; size=16 bbWeight=1 PerfScore 8.00
+ movs r0, 8 + ;; size=2 bbWeight=1 PerfScore 1.00
G_M16291_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 28, prolog size 8, PerfScore 11.00, instruction count 11, allocated bytes for code 28 (MethodHash=b58cc05c) for method TestType:meth1():int (Tier0)
+; Total bytes of code 14, prolog size 8, PerfScore 4.00, instruction count 4, allocated bytes for code 14 (MethodHash=b58cc05c) for method TestType:meth1():int (Tier0)
; ============================================================ Unwind Info: @@ -39,7 +32,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 28 (0x00001c)
+ Function Length : 7 (0x00007) Actual length = 14 (0x00000e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-28 (-45.16%) : 3428.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)

@@ -5,47 +5,31 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [sp+0x08] do-not-enreg[]
+; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [sp+0x00] do-not-enreg[]
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; TEMP_01 byref -> [r11-0x14]
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M28933_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r10,r11,lr} - sub sp, 16 - add r11, sp, 24 - movs r1, 0 - str r1, [sp+0x04]
+ push {r2,r3,r4,r10,r11,lr} + add r11, sp, 16
str r0, [r11-0x0C]
- str r0, [sp+0x08] - ;; size=20 bbWeight=1 PerfScore 7.00
+ str r0, [sp] + ;; size=14 bbWeight=1 PerfScore 4.00
G_M28933_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x08]
+ ldr r0, [sp]
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_GETGENERICS_NONGCSTATIC_BASE ; byrRegs +[r0]
- mov r3, r0 - ; byrRegs +[r3] - str r3, [sp+0x04] - mov r0, 512 - ; byrRegs -[r0] - movs r1, 4 - movw r2, 0xd1ff - movt r2, 0xd1ff - blx r2 // CORINFO_HELP_UDIV - ; byrRegs -[r3] - ldr r3, [sp+0x04] - ; byrRegs +[r3] - str r0, [r3+0x08] - ;; size=36 bbWeight=1 PerfScore 13.00
+ movs r3, 128 + str r3, [r0+0x08] + ;; size=16 bbWeight=1 PerfScore 6.00
G_M28933_IG03: ; bbWeight=1, epilog, nogc, extend
- add sp, 16 - pop {r4,r10,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00
+ pop {r2,r3,r4,r10,r11,pc} + ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 18, PerfScore 22.00, instruction count 22, allocated bytes for code 62 (MethodHash=381d8efa) for method System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
+; Total bytes of code 34, prolog size 12, PerfScore 11.00, instruction count 11, allocated bytes for code 34 (MethodHash=381d8efa) for method System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
; ============================================================ Unwind Info: @@ -57,11 +41,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 62 (0x00003e)
+ Function Length : 17 (0x00011) Actual length = 34 (0x000022)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 04 add sp, sp, #16 ; opsize 16 - AC 10 pop {r4,r10,r11,lr} ; opsize 32
+ AC 1C pop {r2,r3,r4,r10,r11,lr} ; opsize 32 + FF end
FF end

+4 (+4.44%) : 278530.dasm - System.Drawing.PrimitivesTests.PointTests:SingleIntConstructorTest(int):this (Tier0)

@@ -34,8 +34,10 @@ G_M34188_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref blx r3 // <unknown method> ldr r3, [sp+0x10] asrs r3, r3, 16
+ uxth r3, r3
sxth r2, r3 ldr r3, [sp+0x10]
+ uxth r3, r3
sxth r1, r3 add r0, sp, 0 movw r3, 0xd1ff @@ -50,13 +52,13 @@ G_M34188_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r4, 0xd1ff ldr r4, [r4] blx r4 // <unknown method>
- ;; size=60 bbWeight=1 PerfScore 24.00
+ ;; size=64 bbWeight=1 PerfScore 26.00
G_M34188_IG03: ; bbWeight=1, epilog, nogc, extend add sp, 24 pop {r4,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 90, prolog size 20, PerfScore 36.00, instruction count 36, allocated bytes for code 90 (MethodHash=f76a7a73) for method System.Drawing.PrimitivesTests.PointTests:SingleIntConstructorTest(int):this (Tier0)
+; Total bytes of code 94, prolog size 20, PerfScore 38.00, instruction count 38, allocated bytes for code 94 (MethodHash=f76a7a73) for method System.Drawing.PrimitivesTests.PointTests:SingleIntConstructorTest(int):this (Tier0)
; ============================================================ Unwind Info: @@ -68,7 +70,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 45 (0x0002d) Actual length = 90 (0x00005a)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+2 (+10.00%) : 278533.dasm - System.Drawing.Point:HighInt16(int):short (Tier0)

@@ -18,13 +18,14 @@ G_M7017_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M7017_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r3, [sp+0x04] asrs r3, r3, 16
+ uxth r3, r3
sxth r0, r3
- ;; size=6 bbWeight=1 PerfScore 3.00
+ ;; size=8 bbWeight=1 PerfScore 4.00
G_M7017_IG03: ; bbWeight=1, epilog, nogc, extend pop {r2,r3,r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 20, prolog size 8, PerfScore 7.00, instruction count 7, allocated bytes for code 20 (MethodHash=7b2de496) for method System.Drawing.Point:HighInt16(int):short (Tier0)
+; Total bytes of code 22, prolog size 8, PerfScore 8.00, instruction count 8, allocated bytes for code 22 (MethodHash=7b2de496) for method System.Drawing.Point:HighInt16(int):short (Tier0)
; ============================================================ Unwind Info: @@ -36,7 +37,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
+ Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+2 (+11.11%) : 278532.dasm - System.Drawing.Point:LowInt16(int):short (Tier0)

@@ -17,13 +17,14 @@ G_M39123_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=10 bbWeight=1 PerfScore 3.00 G_M39123_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ldr r3, [sp+0x04]
+ uxth r3, r3
sxth r0, r3
- ;; size=4 bbWeight=1 PerfScore 2.00
+ ;; size=6 bbWeight=1 PerfScore 3.00
G_M39123_IG03: ; bbWeight=1, epilog, nogc, extend pop {r2,r3,r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 18, prolog size 8, PerfScore 6.00, instruction count 6, allocated bytes for code 18 (MethodHash=96ed672c) for method System.Drawing.Point:LowInt16(int):short (Tier0)
+; Total bytes of code 20, prolog size 8, PerfScore 7.00, instruction count 7, allocated bytes for code 20 (MethodHash=96ed672c) for method System.Drawing.Point:LowInt16(int):short (Tier0)
; ============================================================ Unwind Info: @@ -35,7 +36,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 9 (0x00009) Actual length = 18 (0x000012)
+ Function Length : 10 (0x0000a) Actual length = 20 (0x000014)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-6 (-20.00%) : 232301.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:TryEncodeUnicodeScalar_DisallowedSupplementaryChar():this (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data @@ -13,12 +13,11 @@ ;* V02 tmp1 [V02 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune> ;* V03 tmp2 [V03,T01] ( 0, 0 ) int -> zero-ref "field V02._value (fldOffset=0x0)" P-INDEP ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M12600_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M12600_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0] movw r1, 0xd1ff @@ -28,12 +27,13 @@ G_M12600_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r0]
+ ; gcr arg pop 0
;; size=20 bbWeight=1 PerfScore 6.00 G_M12600_IG03: ; bbWeight=1, epilog, nogc, extend
- pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00
+ pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 30, prolog size 6, PerfScore 9.00, instruction count 9, allocated bytes for code 30 (MethodHash=d8a2cec7) for method System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:TryEncodeUnicodeScalar_DisallowedSupplementaryChar():this (FullOpts)
+; Total bytes of code 24, prolog size 2, PerfScore 8.00, instruction count 8, allocated bytes for code 24 (MethodHash=d8a2cec7) for method System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:TryEncodeUnicodeScalar_DisallowedSupplementaryChar():this (FullOpts)
; ============================================================ Unwind Info: @@ -45,11 +45,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 15 (0x0000f) Actual length = 30 (0x00001e)
+ Function Length : 12 (0x0000c) Actual length = 24 (0x000018)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-4 (-18.18%) : 202921.dasm - System.Tests.StringTests+<>c:b_1652():System.Object:this (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 1 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data @@ -13,12 +13,12 @@ ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>> ;* V03 tmp2 [V03 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V04 tmp3 [V04 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V08 tmp7 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V09 tmp8 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp10 [V11 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x4)" P-INDEP ;* V13 tmp12 [V13 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP @@ -28,22 +28,22 @@ ;* V17 tmp16 [V17 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V18 tmp17 [V18 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M10777_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=0 PerfScore 0.00
+ push {r3,lr} + ;; size=2 bbWeight=0 PerfScore 0.00
G_M10777_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 92 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.ThrowHelper:ThrowArgumentNullException(int)
+ ; gcr arg pop 0
bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 22, prolog size 6, PerfScore 0.00, instruction count 8, allocated bytes for code 22 (MethodHash=5a86d5e6) for method System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__165_2():System.Object:this (FullOpts)
+; Total bytes of code 18, prolog size 2, PerfScore 0.00, instruction count 7, allocated bytes for code 18 (MethodHash=5a86d5e6) for method System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__165_2():System.Object:this (FullOpts)
; ============================================================ Unwind Info: @@ -55,11 +55,11 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
+ Function Length : 9 (0x00009) Actual length = 18 (0x000012)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-4 (-18.18%) : 214333.dasm - System.Tests.DateTimeTests+<>c:b_1361():System.Object:this (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data ; 1 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data @@ -26,22 +26,22 @@ ;* V15 tmp14 [V15 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP ;* V16 tmp15 [V16 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x4)" P-INDEP ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M20455_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=0 PerfScore 0.00
+ push {r3,lr} + ;; size=2 bbWeight=0 PerfScore 0.00
G_M20455_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movs r0, 17 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // System.ThrowHelper:ThrowArgumentNullException(int)
+ ; gcr arg pop 0
bkpt ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 22, prolog size 6, PerfScore 0.00, instruction count 8, allocated bytes for code 22 (MethodHash=3679b018) for method System.Tests.DateTimeTests+<>c:<ParseExact_InvalidArguments_Throws>b__136_1():System.Object:this (FullOpts)
+; Total bytes of code 18, prolog size 2, PerfScore 0.00, instruction count 7, allocated bytes for code 18 (MethodHash=3679b018) for method System.Tests.DateTimeTests+<>c:<ParseExact_InvalidArguments_Throws>b__136_1():System.Object:this (FullOpts)
; ============================================================ Unwind Info: @@ -53,11 +53,11 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 11 (0x0000b) Actual length = 22 (0x000016)
+ Function Length : 9 (0x00009) Actual length = 18 (0x000012)
---- Epilog scopes ---- No epilogs ---- Unwind codes ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+32 (+2.33%) : 160756.dasm - System.Numerics.Tests.QuaternionTests:QuaternionSlerpTest():this (FullOpts)

@@ -10,18 +10,18 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Numerics.Tests.QuaternionTests> ;* V01 loc0 [V01 ] ( 0, 0 ) struct (12) zero-ref HFA(float) <System.Numerics.Vector3>
-;* V02 loc1 [V02,T15] ( 0, 0 ) struct (16) zero-ref HFA(float) do-not-enreg[SA] multireg-arg <System.Numerics.Quaternion>
+;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref HFA(float) do-not-enreg[S] <System.Numerics.Quaternion>
;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref HFA(float) do-not-enreg[S] <System.Numerics.Quaternion>
-;* V04 loc3 [V04,T54] ( 0, 0 ) float -> zero-ref single-def -;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref HFA(float) multireg-arg <System.Numerics.Quaternion>
+;* V04 loc3 [V04 ] ( 0, 0 ) float -> zero-ref single-def +;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref HFA(float) <System.Numerics.Quaternion>
;* V06 loc5 [V06 ] ( 0, 0 ) struct (16) zero-ref HFA(float) multireg-arg multireg-ret <System.Numerics.Quaternion> ; V07 loc6 [V07 ] ( 42, 33.99) struct (24) [sp+0x08] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (12) zero-ref HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> ;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref HFA(float) do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Numerics.Quaternion>
-; V11 tmp3 [V11,T20] ( 3, 4 ) int -> r4 "impAppendStmt"
+; V11 tmp3 [V11,T15] ( 3, 4 ) int -> r4 "impAppendStmt"
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref HFA(float) do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Numerics.Quaternion>
-; V13 tmp5 [V13,T21] ( 3, 4 ) int -> r5 "impAppendStmt"
+; V13 tmp5 [V13,T16] ( 3, 4 ) int -> r5 "impAppendStmt"
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (12) zero-ref HFA(float) ld-addr-op "Inlining Arg" <System.Numerics.Vector3> ;* V15 tmp7 [V15 ] ( 0, 0 ) struct (12) zero-ref HFA(float) "impAppendStmt" <System.Numerics.Vector3> ;* V16 tmp8 [V16 ] ( 0, 0 ) float -> zero-ref "Inline stloc first use temp" @@ -29,182 +29,175 @@ ;* V18 tmp10 [V18 ] ( 0, 0 ) struct (12) zero-ref HFA(float) "Inlining Arg" <System.Numerics.Vector3> ;* V19 tmp11 [V19 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ;* V20 tmp12 [V20 ] ( 0, 0 ) struct (12) zero-ref HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3>
-;* V21 tmp13 [V21,T41] ( 0, 0 ) float -> zero-ref "Inlining Arg"
+;* V21 tmp13 [V21,T29] ( 0, 0 ) float -> zero-ref "Inlining Arg"
;* V22 tmp14 [V22 ] ( 0, 0 ) struct (12) zero-ref HFA(float) "Inlining Arg" <System.Numerics.Vector3> ;* V23 tmp15 [V23 ] ( 0, 0 ) struct (12) zero-ref HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> ;* V24 tmp16 [V24 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ;* V25 tmp17 [V25 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ;* V26 tmp18 [V26 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ;* V27 tmp19 [V27 ] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp"
-;* V28 tmp20 [V28,T55] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp" -;* V29 tmp21 [V29,T56] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp"
+;* V28 tmp20 [V28,T42] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp" +;* V29 tmp21 [V29,T43] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp"
;* V30 tmp22 [V30 ] ( 0, 0 ) struct (16) zero-ref HFA(float) multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.Numerics.Quaternion> ;* V31 tmp23 [V31 ] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp"
-;* V32 tmp24 [V32,T57] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp" -;* V33 tmp25 [V33,T58] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp"
+;* V32 tmp24 [V32,T44] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp" +;* V33 tmp25 [V33,T45] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp"
;* V34 tmp26 [V34 ] ( 0, 0 ) struct (16) zero-ref HFA(float) multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.Numerics.Quaternion> ;* V35 tmp27 [V35 ] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp"
-;* V36 tmp28 [V36,T59] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp" -;* V37 tmp29 [V37,T60] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp" -;* V38 tmp30 [V38 ] ( 0, 0 ) struct (16) zero-ref HFA(float) ld-addr-op "Inline ldloca(s) first use temp" <System.Numerics.Quaternion> -; V39 tmp31 [V39,T22] ( 2, 4 ) ref -> r0 class-hnd exact single-def "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
+;* V36 tmp28 [V36,T46] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp" +;* V37 tmp29 [V37,T47] ( 0, 0 ) float -> zero-ref single-def "Inline stloc first use temp" +;* V38 tmp30 [V38 ] ( 0, 0 ) struct (16) zero-ref HFA(float) multireg-arg ld-addr-op "Inline ldloca(s) first use temp" <System.Numerics.Quaternion> +;* V39 tmp31 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V40 tmp32 [V40 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr" ; V41 tmp33 [V41,T01] ( 5, 8 ) ref -> r0 class-hnd single-def "dup spill" <ushort[]> ;* V42 tmp34 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V43 tmp35 [V43,T61] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V44 tmp36 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V45 tmp37 [V45 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V46 tmp38 [V46 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V47 tmp39 [V47,T03] ( 4, 8.00) int -> r0 "Inlining Arg" -;* V48 tmp40 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V49 tmp41 [V49,T08] ( 3, 6.00) int -> r6 "Inlining Arg" -; V50 tmp42 [V50,T31] ( 2, 3.00) byref -> r5 single-def "Inlining Arg"
+;* V43 tmp35 [V43 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V44 tmp36 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V45 tmp37 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V46 tmp38 [V46,T03] ( 4, 8.00) int -> r0 "Inlining Arg" +;* V47 tmp39 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V48 tmp40 [V48,T08] ( 3, 6.00) int -> r6 "Inlining Arg" +; V49 tmp41 [V49,T23] ( 2, 3.00) byref -> r5 single-def "Inlining Arg" +;* V50 tmp42 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V51 tmp43 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V52 tmp44 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V53 tmp45 [V53,T50] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V54 tmp46 [V54 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V56 tmp48 [V56,T42] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -;* V57 tmp49 [V57 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V58 tmp50 [V58,T04] ( 4, 8.00) int -> r0 "Inlining Arg" -;* V59 tmp51 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V60 tmp52 [V60,T09] ( 3, 6.00) int -> r6 "Inlining Arg" -; V61 tmp53 [V61,T32] ( 2, 3.00) byref -> r5 single-def "Inlining Arg"
+;* V52 tmp44 [V52,T38] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V53 tmp45 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V54 tmp46 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V55 tmp47 [V55,T30] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" +;* V56 tmp48 [V56 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V57 tmp49 [V57,T04] ( 4, 8.00) int -> r0 "Inlining Arg" +;* V58 tmp50 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V59 tmp51 [V59,T09] ( 3, 6.00) int -> r6 "Inlining Arg" +; V60 tmp52 [V60,T24] ( 2, 3.00) byref -> r5 single-def "Inlining Arg" +;* V61 tmp53 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V62 tmp54 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V63 tmp55 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V64 tmp56 [V64,T51] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V65 tmp57 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V66 tmp58 [V66 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V67 tmp59 [V67,T43] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -;* V68 tmp60 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V69 tmp61 [V69 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> -; V70 tmp62 [V70,T23] ( 2, 4 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String> -;* V71 tmp63 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V72 tmp64 [V72,T24] ( 2, 4 ) ref -> r0 class-hnd exact single-def "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> -;* V73 tmp65 [V73 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr" -; V74 tmp66 [V74,T02] ( 5, 8 ) ref -> r0 class-hnd single-def "dup spill" <ushort[]> -;* V75 tmp67 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> -;* V76 tmp68 [V76,T62] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V77 tmp69 [V77 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V78 tmp70 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V79 tmp71 [V79 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V80 tmp72 [V80,T05] ( 4, 8.00) int -> r0 "Inlining Arg" -;* V81 tmp73 [V81 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V82 tmp74 [V82,T10] ( 3, 6.00) int -> r6 "Inlining Arg" -; V83 tmp75 [V83,T33] ( 2, 3.00) byref -> r4 single-def "Inlining Arg" -;* V84 tmp76 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V85 tmp77 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V86 tmp78 [V86,T52] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V87 tmp79 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V88 tmp80 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V89 tmp81 [V89,T44] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -;* V90 tmp82 [V90 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V91 tmp83 [V91,T06] ( 4, 8.00) int -> r0 "Inlining Arg" -;* V92 tmp84 [V92 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V93 tmp85 [V93,T11] ( 3, 6.00) int -> r6 "Inlining Arg" -; V94 tmp86 [V94,T34] ( 2, 3.00) byref -> r4 single-def "Inlining Arg" -;* V95 tmp87 [V95 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V96 tmp88 [V96 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V97 tmp89 [V97,T53] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V98 tmp90 [V98 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V99 tmp91 [V99 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V100 tmp92 [V100,T45] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -;* V101 tmp93 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V102 tmp94 [V102 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> -; V103 tmp95 [V103,T25] ( 2, 4 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String> -;* V104 tmp96 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V105 tmp97 [V105 ] ( 0, 0 ) float -> zero-ref single-def "field V01.X (fldOffset=0x0)" P-INDEP -;* V106 tmp98 [V106 ] ( 0, 0 ) float -> zero-ref single-def "field V01.Y (fldOffset=0x4)" P-INDEP -;* V107 tmp99 [V107 ] ( 0, 0 ) float -> zero-ref single-def "field V01.Z (fldOffset=0x8)" P-INDEP -;* V108 tmp100 [V108,T35] ( 0, 0 ) float -> zero-ref "field V05.X (fldOffset=0x0)" P-INDEP -;* V109 tmp101 [V109,T36] ( 0, 0 ) float -> zero-ref "field V05.Y (fldOffset=0x4)" P-INDEP -;* V110 tmp102 [V110,T37] ( 0, 0 ) float -> zero-ref "field V05.Z (fldOffset=0x8)" P-INDEP -;* V111 tmp103 [V111,T38] ( 0, 0 ) float -> zero-ref "field V05.W (fldOffset=0xc)" P-INDEP -; V112 tmp104 [V112,T07] ( 6, 6 ) float -> f16 "field V06.X (fldOffset=0x0)" P-INDEP -; V113 tmp105 [V113,T12] ( 6, 5 ) float -> f17 "field V06.Y (fldOffset=0x4)" P-INDEP -; V114 tmp106 [V114,T13] ( 6, 5 ) float -> f18 "field V06.Z (fldOffset=0x8)" P-INDEP -; V115 tmp107 [V115,T14] ( 6, 5 ) float -> f19 "field V06.W (fldOffset=0xc)" P-INDEP -;* V116 tmp108 [V116 ] ( 0, 0 ) float -> zero-ref single-def "field V09.X (fldOffset=0x0)" P-INDEP -;* V117 tmp109 [V117 ] ( 0, 0 ) float -> zero-ref single-def "field V09.Y (fldOffset=0x4)" P-INDEP -;* V118 tmp110 [V118 ] ( 0, 0 ) float -> zero-ref single-def "field V09.Z (fldOffset=0x8)" P-INDEP -;* V119 tmp111 [V119 ] ( 0, 0 ) float -> zero-ref single-def "field V14.X (fldOffset=0x0)" P-INDEP -;* V120 tmp112 [V120 ] ( 0, 0 ) float -> zero-ref single-def "field V14.Y (fldOffset=0x4)" P-INDEP -;* V121 tmp113 [V121 ] ( 0, 0 ) float -> zero-ref single-def "field V14.Z (fldOffset=0x8)" P-INDEP -;* V122 tmp114 [V122 ] ( 0, 0 ) float -> zero-ref single-def "field V15.X (fldOffset=0x0)" P-INDEP -;* V123 tmp115 [V123 ] ( 0, 0 ) float -> zero-ref single-def "field V15.Y (fldOffset=0x4)" P-INDEP -;* V124 tmp116 [V124 ] ( 0, 0 ) float -> zero-ref single-def "field V15.Z (fldOffset=0x8)" P-INDEP -;* V125 tmp117 [V125 ] ( 0, 0 ) float -> zero-ref single-def "field V17.X (fldOffset=0x0)" P-INDEP -;* V126 tmp118 [V126 ] ( 0, 0 ) float -> zero-ref single-def "field V17.Y (fldOffset=0x4)" P-INDEP -;* V127 tmp119 [V127 ] ( 0, 0 ) float -> zero-ref single-def "field V17.Z (fldOffset=0x8)" P-INDEP -;* V128 tmp120 [V128 ] ( 0, 0 ) float -> zero-ref single-def "field V18.X (fldOffset=0x0)" P-INDEP -;* V129 tmp121 [V129 ] ( 0, 0 ) float -> zero-ref single-def "field V18.Y (fldOffset=0x4)" P-INDEP -;* V130 tmp122 [V130 ] ( 0, 0 ) float -> zero-ref single-def "field V18.Z (fldOffset=0x8)" P-INDEP -;* V131 tmp123 [V131 ] ( 0, 0 ) float -> zero-ref single-def "field V20.X (fldOffset=0x0)" P-INDEP -;* V132 tmp124 [V132 ] ( 0, 0 ) float -> zero-ref single-def "field V20.Y (fldOffset=0x4)" P-INDEP -;* V133 tmp125 [V133 ] ( 0, 0 ) float -> zero-ref single-def "field V20.Z (fldOffset=0x8)" P-INDEP -;* V134 tmp126 [V134 ] ( 0, 0 ) float -> zero-ref single-def "field V22.X (fldOffset=0x0)" P-INDEP -;* V135 tmp127 [V135 ] ( 0, 0 ) float -> zero-ref single-def "field V22.Y (fldOffset=0x4)" P-INDEP -;* V136 tmp128 [V136 ] ( 0, 0 ) float -> zero-ref single-def "field V22.Z (fldOffset=0x8)" P-INDEP -;* V137 tmp129 [V137,T63] ( 0, 0 ) float -> zero-ref single-def "field V23.X (fldOffset=0x0)" P-INDEP -;* V138 tmp130 [V138,T64] ( 0, 0 ) float -> zero-ref single-def "field V23.Y (fldOffset=0x4)" P-INDEP -;* V139 tmp131 [V139,T65] ( 0, 0 ) float -> zero-ref single-def "field V23.Z (fldOffset=0x8)" P-INDEP -;* V140 tmp132 [V140,T66] ( 0, 0 ) float -> zero-ref single-def "field V30.X (fldOffset=0x0)" P-INDEP -;* V141 tmp133 [V141,T67] ( 0, 0 ) float -> zero-ref single-def "field V30.Y (fldOffset=0x4)" P-INDEP -;* V142 tmp134 [V142,T68] ( 0, 0 ) float -> zero-ref single-def "field V30.Z (fldOffset=0x8)" P-INDEP -;* V143 tmp135 [V143,T69] ( 0, 0 ) float -> zero-ref single-def "field V30.W (fldOffset=0xc)" P-INDEP -;* V144 tmp136 [V144,T70] ( 0, 0 ) float -> zero-ref single-def "field V34.X (fldOffset=0x0)" P-INDEP -;* V145 tmp137 [V145,T71] ( 0, 0 ) float -> zero-ref single-def "field V34.Y (fldOffset=0x4)" P-INDEP -;* V146 tmp138 [V146,T72] ( 0, 0 ) float -> zero-ref single-def "field V34.Z (fldOffset=0x8)" P-INDEP -;* V147 tmp139 [V147,T73] ( 0, 0 ) float -> zero-ref single-def "field V34.W (fldOffset=0xc)" P-INDEP -;* V148 tmp140 [V148,T74] ( 0, 0 ) float -> zero-ref single-def "field V38.X (fldOffset=0x0)" P-INDEP -;* V149 tmp141 [V149,T75] ( 0, 0 ) float -> zero-ref single-def "field V38.Y (fldOffset=0x4)" P-INDEP -;* V150 tmp142 [V150,T76] ( 0, 0 ) float -> zero-ref single-def "field V38.Z (fldOffset=0x8)" P-INDEP -;* V151 tmp143 [V151,T77] ( 0, 0 ) float -> zero-ref single-def "field V38.W (fldOffset=0xc)" P-INDEP -; V152 tmp144 [V152,T46] ( 3, 1.50) byref -> r5 "field V45._reference (fldOffset=0x0)" P-INDEP -; V153 tmp145 [V153,T48] ( 3, 1.50) int -> r6 "field V45._length (fldOffset=0x4)" P-INDEP -;* V154 tmp146 [V154 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP -;* V155 tmp147 [V155 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x4)" P-INDEP -;* V156 tmp148 [V156 ] ( 0, 0 ) byref -> zero-ref single-def "field V48._reference (fldOffset=0x0)" P-INDEP -;* V157 tmp149 [V157 ] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x4)" P-INDEP -;* V158 tmp150 [V158 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP -;* V159 tmp151 [V159 ] ( 0, 0 ) int -> zero-ref single-def "field V54._length (fldOffset=0x4)" P-INDEP -;* V160 tmp152 [V160 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP -;* V161 tmp153 [V161 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x4)" P-INDEP -;* V162 tmp154 [V162 ] ( 0, 0 ) byref -> zero-ref single-def "field V59._reference (fldOffset=0x0)" P-INDEP -;* V163 tmp155 [V163 ] ( 0, 0 ) int -> zero-ref single-def "field V59._length (fldOffset=0x4)" P-INDEP -;* V164 tmp156 [V164 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP -;* V165 tmp157 [V165 ] ( 0, 0 ) int -> zero-ref single-def "field V65._length (fldOffset=0x4)" P-INDEP -;* V166 tmp158 [V166,T78] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.hasValue (fldOffset=0x0)" P-INDEP -; V167 tmp159 [V167,T39] ( 2, 2 ) ubyte -> r0 single-def "field V69.value (fldOffset=0x1)" P-INDEP -; V168 tmp160 [V168,T47] ( 3, 1.50) byref -> r6 "field V78._reference (fldOffset=0x0)" P-INDEP -; V169 tmp161 [V169,T49] ( 3, 1.50) int -> r7 "field V78._length (fldOffset=0x4)" P-INDEP -;* V170 tmp162 [V170 ] ( 0, 0 ) byref -> zero-ref "field V79._reference (fldOffset=0x0)" P-INDEP -;* V171 tmp163 [V171 ] ( 0, 0 ) int -> zero-ref "field V79._length (fldOffset=0x4)" P-INDEP -;* V172 tmp164 [V172 ] ( 0, 0 ) byref -> zero-ref single-def "field V81._reference (fldOffset=0x0)" P-INDEP -;* V173 tmp165 [V173 ] ( 0, 0 ) int -> zero-ref single-def "field V81._length (fldOffset=0x4)" P-INDEP -;* V174 tmp166 [V174 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP -;* V175 tmp167 [V175 ] ( 0, 0 ) int -> zero-ref single-def "field V87._length (fldOffset=0x4)" P-INDEP -;* V176 tmp168 [V176 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP -;* V177 tmp169 [V177 ] ( 0, 0 ) int -> zero-ref "field V90._length (fldOffset=0x4)" P-INDEP -;* V178 tmp170 [V178 ] ( 0, 0 ) byref -> zero-ref single-def "field V92._reference (fldOffset=0x0)" P-INDEP -;* V179 tmp171 [V179 ] ( 0, 0 ) int -> zero-ref single-def "field V92._length (fldOffset=0x4)" P-INDEP -;* V180 tmp172 [V180 ] ( 0, 0 ) byref -> zero-ref single-def "field V98._reference (fldOffset=0x0)" P-INDEP -;* V181 tmp173 [V181 ] ( 0, 0 ) int -> zero-ref single-def "field V98._length (fldOffset=0x4)" P-INDEP -;* V182 tmp174 [V182,T79] ( 0, 0 ) ubyte -> zero-ref single-def "field V102.hasValue (fldOffset=0x0)" P-INDEP -; V183 tmp175 [V183,T40] ( 2, 2 ) ubyte -> r0 single-def "field V102.value (fldOffset=0x1)" P-INDEP -; V184 tmp176 [V184,T00] ( 5, 10 ) struct ( 4) [sp+0x04] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V185 cse0 [V185,T16] ( 3, 3 ) float -> f0 "CSE - moderate" -; V186 cse1 [V186,T17] ( 3, 3 ) float -> f1 "CSE - moderate" -; V187 cse2 [V187,T18] ( 3, 3 ) float -> f2 "CSE - moderate" -; V188 cse3 [V188,T19] ( 3, 3 ) float -> f3 "CSE - moderate" -; V189 cse4 [V189,T26] ( 3, 3.00) int -> r1 "CSE - moderate" -; V190 cse5 [V190,T27] ( 3, 3.00) int -> r1 "CSE - moderate" -; V191 cse6 [V191,T28] ( 3, 3.00) int -> r1 "CSE - moderate" -; V192 cse7 [V192,T29] ( 3, 3.00) int -> r1 "CSE - moderate" -;* V193 cse8 [V193,T80] ( 0, 0 ) float -> zero-ref "CSE - moderate" -;* V194 cse9 [V194,T81] ( 0, 0 ) float -> zero-ref "CSE - moderate" -;* V195 cse10 [V195,T82] ( 0, 0 ) float -> zero-ref "CSE - moderate" -; V196 cse11 [V196,T30] ( 2, 2 ) float -> f8 "CSE - moderate"
+;* V63 tmp55 [V63,T39] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V64 tmp56 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V65 tmp57 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V66 tmp58 [V66,T31] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" +;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V68 tmp60 [V68 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> +; V69 tmp61 [V69,T17] ( 2, 4 ) ref -> r1 class-hnd exact single-def "Inlining Arg" <System.String> +;* V70 tmp62 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V71 tmp63 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]> +;* V72 tmp64 [V72 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr" +; V73 tmp65 [V73,T02] ( 5, 8 ) ref -> r0 class-hnd single-def "dup spill" <ushort[]> +;* V74 tmp66 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]> +;* V75 tmp67 [V75 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V76 tmp68 [V76 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V77 tmp69 [V77 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V78 tmp70 [V78,T05] ( 4, 8.00) int -> r0 "Inlining Arg" +;* V79 tmp71 [V79 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V80 tmp72 [V80,T10] ( 3, 6.00) int -> r6 "Inlining Arg" +; V81 tmp73 [V81,T25] ( 2, 3.00) byref -> r4 single-def "Inlining Arg"
...

+14 (+2.93%) : 83571.dasm - System.ComponentModel.TypeConverterTests.SizeConverterTests:ConvertToInvariantString(int,int):this (FullOpts)

@@ -11,7 +11,7 @@ ; V00 this [V00,T08] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.ComponentModel.TypeConverterTests.SizeConverterTests> ; V01 arg1 [V01,T04] ( 4, 4 ) int -> r4 single-def ; V02 arg2 [V02,T05] ( 4, 4 ) int -> r5 single-def
-; V03 loc0 [V03,T13] ( 6, 3 ) ref -> r6 class-hnd exact single-def <System.String>
+; V03 loc0 [V03,T12] ( 5, 3 ) ref -> r7 class-hnd exact single-def <System.String>
; V04 loc1 [V04 ] ( 15, 13.00) struct (24) [sp+0x10] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V05 OutArgs [V05 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Drawing.Size> @@ -21,77 +21,76 @@ ;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Globalization.CultureInfo> ;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Drawing.Size> ; V12 tmp7 [V12,T10] ( 3, 4 ) ref -> r1 single-def "CASTCLASS eval op1"
-; V13 tmp8 [V13,T25] ( 3, 1 ) int -> r3 "fgMakeTemp is creating a new local variable" -; V14 tmp9 [V14,T06] ( 4, 6.50) ref -> r6 class-hnd single-def "spilling QMark2" <System.String> -; V15 tmp10 [V15,T11] ( 2, 4 ) ref -> r0 class-hnd exact single-def "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
+; V13 tmp8 [V13,T24] ( 3, 1 ) int -> r3 "fgMakeTemp is creating a new local variable" +; V14 tmp9 [V14,T06] ( 5, 6.50) ref -> r6 class-hnd single-def "spilling QMark2" <System.String> +;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr" ; V17 tmp12 [V17,T00] ( 5, 8 ) ref -> r0 class-hnd single-def "dup spill" <ushort[]> ;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V19 tmp14 [V19,T34] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V21 tmp16 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V22 tmp17 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V23 tmp18 [V23,T03] ( 4, 8.00) int -> r0 "Inlining Arg" -;* V24 tmp19 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V25 tmp20 [V25,T09] ( 3, 6.00) int -> r7 "Inlining Arg" -; V26 tmp21 [V26,T15] ( 2, 3.00) byref -> r4 single-def "Inlining Arg"
+;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V20 tmp15 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V21 tmp16 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V22 tmp17 [V22,T03] ( 4, 8.00) int -> r0 "Inlining Arg" +;* V23 tmp18 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V24 tmp19 [V24,T09] ( 3, 6.00) int -> r8 "Inlining Arg" +; V25 tmp20 [V25,T14] ( 2, 3.00) byref -> r4 single-def "Inlining Arg" +;* V26 tmp21 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp22 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V28 tmp23 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V29 tmp24 [V29,T24] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V30 tmp25 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V31 tmp26 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V32 tmp27 [V32,T20] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" -; V33 tmp28 [V33,T07] ( 5, 6 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.String> -;* V34 tmp29 [V34 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> -;* V35 tmp30 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> -;* V36 tmp31 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V37 tmp32 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V38 tmp33 [V38,T18] ( 2, 2 ) int -> r0 "Inlining Arg" -; V39 tmp34 [V39,T16] ( 2, 2 ) byref -> r1 single-def "Inlining Arg"
+;* V28 tmp23 [V28,T23] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V29 tmp24 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V30 tmp25 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V31 tmp26 [V31,T19] ( 2, 1.99) byref -> r1 single-def "Inlining Arg" +; V32 tmp27 [V32,T07] ( 5, 6 ) ref -> r0 class-hnd exact single-def "Inlining Arg" <System.String> +;* V33 tmp28 [V33 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> +;* V34 tmp29 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> +;* V35 tmp30 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V36 tmp31 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V37 tmp32 [V37,T17] ( 2, 2 ) int -> r0 "Inlining Arg" +; V38 tmp33 [V38,T15] ( 2, 2 ) byref -> r1 single-def "Inlining Arg" +;* V39 tmp34 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V40 tmp35 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp36 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V42 tmp37 [V42 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> -;* V43 tmp38 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> -;* V44 tmp39 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -; V45 tmp40 [V45,T19] ( 2, 2 ) int -> r3 "Inlining Arg" -; V46 tmp41 [V46,T17] ( 2, 2 ) byref -> r0 single-def "Inlining Arg"
+;* V41 tmp36 [V41 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> +;* V42 tmp37 [V42 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> +;* V43 tmp38 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +; V44 tmp39 [V44,T18] ( 2, 2 ) int -> r3 "Inlining Arg" +; V45 tmp40 [V45,T16] ( 2, 2 ) byref -> r0 single-def "Inlining Arg" +;* V46 tmp41 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp42 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V48 tmp43 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V49 tmp44 [V49,T35] ( 0, 0 ) int -> zero-ref single-def "field V06.width (fldOffset=0x0)" P-INDEP -;* V50 tmp45 [V50,T36] ( 0, 0 ) int -> zero-ref single-def "field V06.height (fldOffset=0x4)" P-INDEP -; V51 tmp46 [V51,T21] ( 3, 1.50) byref -> r7 "field V21._reference (fldOffset=0x0)" P-INDEP -; V52 tmp47 [V52,T23] ( 3, 1.50) int -> r8 "field V21._length (fldOffset=0x4)" P-INDEP -;* V53 tmp48 [V53 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP -;* V54 tmp49 [V54 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP -;* V55 tmp50 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "field V24._reference (fldOffset=0x0)" P-INDEP -;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref single-def "field V24._length (fldOffset=0x4)" P-INDEP -;* V57 tmp52 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP -;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref single-def "field V30._length (fldOffset=0x4)" P-INDEP -; V59 tmp54 [V59,T26] ( 2, 1 ) byref -> r1 single-def "field V34._reference (fldOffset=0x0)" P-INDEP -; V60 tmp55 [V60,T30] ( 2, 1 ) int -> r2 single-def "field V34._length (fldOffset=0x4)" P-INDEP -;* V61 tmp56 [V61 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP -;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP -; V63 tmp58 [V63,T27] ( 2, 1 ) byref -> r1 single-def "field V36._reference (fldOffset=0x0)" P-INDEP -; V64 tmp59 [V64,T31] ( 2, 1 ) int -> r0 single-def "field V36._length (fldOffset=0x4)" P-INDEP -;* V65 tmp60 [V65 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP -;* V66 tmp61 [V66 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x4)" P-INDEP -; V67 tmp62 [V67,T28] ( 2, 1 ) byref -> lr "field V42._reference (fldOffset=0x0)" P-INDEP -; V68 tmp63 [V68,T32] ( 2, 1 ) int -> r3 "field V42._length (fldOffset=0x4)" P-INDEP -; V69 tmp64 [V69,T29] ( 2, 1 ) byref -> r0 single-def "field V43._reference (fldOffset=0x0)" P-INDEP -; V70 tmp65 [V70,T33] ( 2, 1 ) int -> r3 single-def "field V43._length (fldOffset=0x4)" P-INDEP -;* V71 tmp66 [V71 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP -;* V72 tmp67 [V72 ] ( 0, 0 ) int -> zero-ref single-def "field V44._length (fldOffset=0x4)" P-INDEP -; V73 tmp68 [V73,T12] ( 2, 4 ) ref -> r2 single-def "argument with side effect" -; V74 cse0 [V74,T14] ( 3, 3.00) int -> r1 "CSE - moderate" -; V75 cse1 [V75,T22] ( 3, 1.50) ref -> r1 "CSE - moderate"
+;* V48 tmp43 [V48,T33] ( 0, 0 ) int -> zero-ref single-def "field V06.width (fldOffset=0x0)" P-INDEP +;* V49 tmp44 [V49,T34] ( 0, 0 ) int -> zero-ref single-def "field V06.height (fldOffset=0x4)" P-INDEP +; V50 tmp45 [V50,T20] ( 3, 1.50) byref -> r8 "field V20._reference (fldOffset=0x0)" P-INDEP +; V51 tmp46 [V51,T22] ( 3, 1.50) int -> r9 "field V20._length (fldOffset=0x4)" P-INDEP +;* V52 tmp47 [V52 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP +;* V53 tmp48 [V53 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP +;* V54 tmp49 [V54 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP +;* V55 tmp50 [V55 ] ( 0, 0 ) int -> zero-ref single-def "field V23._length (fldOffset=0x4)" P-INDEP +;* V56 tmp51 [V56 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP +;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref single-def "field V29._length (fldOffset=0x4)" P-INDEP +; V58 tmp53 [V58,T25] ( 2, 1 ) byref -> r1 single-def "field V33._reference (fldOffset=0x0)" P-INDEP +; V59 tmp54 [V59,T29] ( 2, 1 ) int -> r2 single-def "field V33._length (fldOffset=0x4)" P-INDEP +;* V60 tmp55 [V60 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP +;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP +; V62 tmp57 [V62,T26] ( 2, 1 ) byref -> r1 single-def "field V35._reference (fldOffset=0x0)" P-INDEP +; V63 tmp58 [V63,T30] ( 2, 1 ) int -> r0 single-def "field V35._length (fldOffset=0x4)" P-INDEP +;* V64 tmp59 [V64 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP +;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x4)" P-INDEP +; V66 tmp61 [V66,T27] ( 2, 1 ) byref -> lr "field V41._reference (fldOffset=0x0)" P-INDEP +; V67 tmp62 [V67,T31] ( 2, 1 ) int -> r3 "field V41._length (fldOffset=0x4)" P-INDEP +; V68 tmp63 [V68,T28] ( 2, 1 ) byref -> r0 single-def "field V42._reference (fldOffset=0x0)" P-INDEP +; V69 tmp64 [V69,T32] ( 2, 1 ) int -> r3 single-def "field V42._length (fldOffset=0x4)" P-INDEP +;* V70 tmp65 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP +;* V71 tmp66 [V71 ] ( 0, 0 ) int -> zero-ref single-def "field V43._length (fldOffset=0x4)" P-INDEP +; V72 tmp67 [V72,T11] ( 2, 4 ) ref -> r2 single-def "argument with side effect" +; V73 cse0 [V73,T13] ( 3, 3.00) int -> r1 "CSE - moderate" +; V74 cse1 [V74,T21] ( 3, 1.50) ref -> r1 "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 44
G_M37518_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r10,r11,lr} - sub sp, 40 - add r11, sp, 64 - sub r5, r11, 48
+ push {r4,r5,r6,r7,r8,r9,r10,r11,lr} + sub sp, 44 + add r11, sp, 72 + sub r5, r11, 56
movs r3, 0 movs r4, 0 stm r5!, {r3,r4} @@ -147,6 +146,8 @@ G_M37518_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre ;; size=90 bbWeight=1 PerfScore 33.00 G_M37518_IG03: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0-r1]
+ mov r7, r6 + ; gcrRegs +[r7]
movs r0, 0 str r0, [sp+0x10] movw r0, 0xd1ff @@ -161,22 +162,22 @@ G_M37518_IG03: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre blx r3 // <unknown method> str r0, [sp+0x14] cmp r0, 0
- beq SHORT G_M37518_IG20 - ;; size=38 bbWeight=1 PerfScore 14.00 -G_M37518_IG04: ; bbWeight=0.50, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref - add r7, r0, 8 - ; byrRegs +[r7] - ldr r8, [r0+0x04]
+ beq G_M37518_IG20 + ;; size=42 bbWeight=1 PerfScore 15.00 +G_M37518_IG04: ; bbWeight=0.50, gcrefRegs=00C1 {r0 r6 r7}, byrefRegs=0000 {}, byref + add r8, r0, 8 + ; byrRegs +[r8] + ldr r9, [r0+0x04]
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M37518_IG05: ; bbWeight=1.00, gcrefRegs=0040 {r6}, byrefRegs=0080 {r7}, byref
+G_M37518_IG05: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0100 {r8}, byref
; gcrRegs -[r0]
- str r7, [sp+0x20] - str r8, [sp+0x24]
+ str r8, [sp+0x20] + str r9, [sp+0x24]
movs r0, 0 str r0, [sp+0x18]
- ;; size=10 bbWeight=1.00 PerfScore 4.00 -G_M37518_IG06: ; bbWeight=1.00, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r7]
+ ;; size=12 bbWeight=1.00 PerfScore 4.00 +G_M37518_IG06: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r8]
strb r0, [sp+0x1C] add r0, sp, 16 mov r1, r4 @@ -189,17 +190,17 @@ G_M37518_IG06: ; bbWeight=1.00, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, b cmp r0, r1 bhi SHORT G_M37518_IG22 ;; size=28 bbWeight=1.00 PerfScore 11.00
-G_M37518_IG07: ; bbWeight=1.00, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M37518_IG07: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
ldr r3, [sp+0x20] ; byrRegs +[r3] lsls r2, r0, 1 adds r4, r3, r2 ; byrRegs +[r4]
- subs r7, r1, r0 - cmp r7, 0
+ sub r8, r1, r0 + cmp r8, 0
bge SHORT G_M37518_IG09
- ;; size=12 bbWeight=1.00 PerfScore 6.00 -G_M37518_IG08: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, byref
+ ;; size=16 bbWeight=1.00 PerfScore 6.00 +G_M37518_IG08: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, byref
; byrRegs -[r3] movw r1, 0xd1ff movt r1, 0xd1ff @@ -211,11 +212,11 @@ G_M37518_IG08: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M37518_IG09: ; bbWeight=1.00, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, byref, isz - cmp r7, 2
+G_M37518_IG09: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, byref, isz + cmp r8, 2
blo SHORT G_M37518_IG15
- ;; size=4 bbWeight=1.00 PerfScore 2.00 -G_M37518_IG10: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, byref
+ ;; size=6 bbWeight=1.00 PerfScore 2.00 +G_M37518_IG10: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0010 {r4}, byref
movw r1, 0xd1ff movt r1, 0xd1ff mov r0, r4 @@ -230,7 +231,7 @@ G_M37518_IG10: ; bbWeight=0.50, gcrefRegs=0040 {r6}, byrefRegs=0010 {r4}, adds r0, r0, 2 str r0, [sp+0x18] ;; size=30 bbWeight=0.50 PerfScore 5.48
-G_M37518_IG11: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+G_M37518_IG11: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
add r0, sp, 16 mov r1, r5 movw r3, 0xd1ff @@ -246,14 +247,14 @@ G_M37518_IG11: ; bbWeight=1, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre cmp r0, 0 bne SHORT G_M37518_IG16 ;; size=34 bbWeight=1 PerfScore 13.00
-G_M37518_IG12: ; bbWeight=0.50, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz - cmp r6, 0
+G_M37518_IG12: ; bbWeight=0.50, gcrefRegs=00C1 {r0 r6 r7}, byrefRegs=0000 {}, byref, isz + cmp r7, 0
bne SHORT G_M37518_IG23 ;; size=4 bbWeight=0.50 PerfScore 1.00 ...

+2 (+2.94%) : 183648.dasm - System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> r0 single-def
+; V00 arg0 [V00,T00] ( 4, 4 ) ushort -> r4 single-def
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ld-addr-op ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String> ; V04 tmp2 [V04,T01] ( 2, 4 ) ref -> r5 single-def "argument with side effect" ; V05 tmp3 [V05,T02] ( 2, 4 ) ref -> r2 single-def "argument with side effect"
-; V06 cse0 [V06,T03] ( 3, 3 ) int -> r4 "CSE - aggressive"
; ; Lcl frame size = 0 G_M13548_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r11,lr} add r11, sp, 8
- ;; size=8 bbWeight=1 PerfScore 2.00
+ mov r4, r0 + ;; size=10 bbWeight=1 PerfScore 3.00
G_M13548_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- uxth r4, r0 - asrs r0, r4, 8
+ uxth r0, r4 + asrs r0, r0, 8
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -54,7 +54,7 @@ G_M13548_IG03: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 68, prolog size 8, PerfScore 23.00, instruction count 23, allocated bytes for code 68 (MethodHash=b0eecb13) for method System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)
+; Total bytes of code 70, prolog size 8, PerfScore 24.00, instruction count 24, allocated bytes for code 70 (MethodHash=b0eecb13) for method System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -66,7 +66,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ Function Length : 35 (0x00023) Actual length = 70 (0x000046)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

realworld.run.linux.arm.checked.mch

-18 (-2.34%) : 16947.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:WriteTree(SixLabors.ImageSharp.Compression.Zlib.DeflaterPendingBuffer,SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree):this (FullOpts)

@@ -120,8 +120,7 @@ G_M27027_IG05: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} beq SHORT G_M27027_IG07 ldr r12, [r2+0x24] lsls r3, r4, 1
- ldrsh r3, [r12+r3] - uxth r3, r3
+ ldrh r3, [r12+r3]
ldr r12, [r2+0x30] ldrb r12, [r12+r4] ldr r6, [r1+0x14] @@ -152,7 +151,7 @@ G_M27027_IG05: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} ldr r3, [r1+0x18] subs r3, 16 str r3, [r1+0x18]
- ;; size=100 bbWeight=2 PerfScore 74.00
+ ;; size=98 bbWeight=2 PerfScore 72.00
G_M27027_IG06: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref mov r12, 0 ;; size=4 bbWeight=2 PerfScore 2.00 @@ -190,8 +189,7 @@ G_M27027_IG12: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} G_M27027_IG13: ; bbWeight=8, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz ldr r12, [r2+0x24] lsls r5, r3, 1
- ldrsh r12, [r12+r5] - uxth r12, r12
+ ldrh r12, [r12+r5]
ldr r5, [r2+0x30] ldrb r5, [r5+r3] ldr r6, [r1+0x14] @@ -223,7 +221,7 @@ G_M27027_IG13: ; bbWeight=8, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} ldr r4, [r1+0x18] subs r4, 16 str r4, [r1+0x18]
- ;; size=90 bbWeight=8 PerfScore 280.00
+ ;; size=86 bbWeight=8 PerfScore 272.00
G_M27027_IG14: ; bbWeight=16, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz add r4, r12, -1 cmp r12, 0 @@ -234,8 +232,7 @@ G_M27027_IG15: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} ;; size=2 bbWeight=2 PerfScore 2.00 G_M27027_IG16: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz ldr r4, [r2+0x24]
- ldrsh r4, [r4+0x20] - uxth r4, r4
+ ldrh r4, [r4+0x20]
ldr r5, [r2+0x30] ldrb r5, [r5+0x10] ldr r6, [r1+0x14] @@ -266,7 +263,7 @@ G_M27027_IG16: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} ldr r4, [r1+0x18] subs r4, 16 str r4, [r1+0x18]
- ;; size=72 bbWeight=2 PerfScore 66.00
+ ;; size=68 bbWeight=2 PerfScore 64.00
G_M27027_IG17: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz ldr r4, [r1+0x14] sub r12, r12, 3 @@ -297,8 +294,7 @@ G_M27027_IG18: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} cmp r12, 10 bgt SHORT G_M27027_IG20 ldr r4, [r2+0x24]
- ldrsh r4, [r4+0x22] - uxth r4, r4
+ ldrh r4, [r4+0x22]
ldr r5, [r2+0x30] ldrb r5, [r5+0x11] ldr r6, [r1+0x14] @@ -329,7 +325,7 @@ G_M27027_IG18: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} ldr r4, [r1+0x18] subs r4, 16 str r4, [r1+0x18]
- ;; size=78 bbWeight=2 PerfScore 70.00
+ ;; size=74 bbWeight=2 PerfScore 68.00
G_M27027_IG19: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz ldr r4, [r1+0x14] sub r12, r12, 3 @@ -358,8 +354,7 @@ G_M27027_IG19: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} ;; size=70 bbWeight=2 PerfScore 48.00 G_M27027_IG20: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz ldr r4, [r2+0x24]
- ldrsh r4, [r4+0x24] - uxth r4, r4
+ ldrh r4, [r4+0x24]
ldr r5, [r2+0x30] ldrb r5, [r5+0x12] ldr r6, [r1+0x14] @@ -390,7 +385,7 @@ G_M27027_IG20: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {} ldr r4, [r1+0x18] subs r4, 16 str r4, [r1+0x18]
- ;; size=72 bbWeight=2 PerfScore 66.00
+ ;; size=68 bbWeight=2 PerfScore 64.00
G_M27027_IG21: ; bbWeight=2, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz ldr r4, [r1+0x14] sub r12, r12, 11 @@ -434,7 +429,7 @@ G_M27027_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop {r3,r4,r5,r6,r7,r8,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 770, prolog size 8, PerfScore 996.00, instruction count 292, allocated bytes for code 770 (MethodHash=fe7a966c) for method SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:WriteTree(SixLabors.ImageSharp.Compression.Zlib.DeflaterPendingBuffer,SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree):this (FullOpts)
+; Total bytes of code 752, prolog size 8, PerfScore 980.00, instruction count 287, allocated bytes for code 752 (MethodHash=fe7a966c) for method SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:WriteTree(SixLabors.ImageSharp.Compression.Zlib.DeflaterPendingBuffer,SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree):this (FullOpts)
; ============================================================ Unwind Info: @@ -446,7 +441,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 385 (0x00181) Actual length = 770 (0x000302)
+ Function Length : 376 (0x00178) Actual length = 752 (0x0002f0)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

-2 (-1.82%) : 21203.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)

@@ -7,16 +7,15 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 3 ) ushort -> r4 single-def -; V01 loc0 [V01,T07] ( 2, 2 ) ubyte -> r1 single-def
+; V00 arg0 [V00,T00] ( 4, 4 ) ushort -> r4 single-def +; V01 loc0 [V01,T06] ( 2, 2 ) ubyte -> r1 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T00] ( 3, 6 ) ref -> r1 single-def "arr expr" -; V04 tmp2 [V04,T01] ( 3, 6 ) ref -> r0 single-def "arr expr" -; V05 tmp3 [V05,T02] ( 3, 6 ) int -> r1 "index expr" -;* V06 cse0 [V06,T08] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -; V07 cse1 [V07,T04] ( 3, 3 ) int -> r2 "CSE - aggressive" -; V08 cse2 [V08,T05] ( 3, 3 ) int -> r3 "CSE - aggressive" -; V09 cse3 [V09,T06] ( 3, 3 ) int -> r0 "CSE - aggressive"
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> r1 single-def "arr expr" +; V04 tmp2 [V04,T02] ( 3, 6 ) ref -> r0 single-def "arr expr" +; V05 tmp3 [V05,T03] ( 3, 6 ) int -> r1 "index expr" +;* V06 cse0 [V06,T07] ( 0, 0 ) int -> zero-ref "CSE - aggressive" +; V07 cse1 [V07,T04] ( 3, 3 ) int -> r3 "CSE - aggressive" +; V08 cse2 [V08,T05] ( 3, 3 ) int -> r0 "CSE - aggressive"
; ; Lcl frame size = 4 @@ -39,19 +38,19 @@ G_M53790_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldr r1, [r0] ; gcrRegs +[r1] uxth r3, r4
- asrs r2, r3, 8 - ldr lr, [r1+0x04] - cmp r2, lr
+ asrs r3, r3, 8 + ldr r2, [r1+0x04] + cmp r3, r2
bhs SHORT G_M53790_IG05 adds r1, 8 ; gcrRegs -[r1] ; byrRegs +[r1]
- ldrb r1, [r1+r2]
+ ldrb r1, [r1+r3]
; byrRegs -[r1] ldr r0, [r0+0x04] ; gcrRegs +[r0] lsls r1, r1, 8
- uxtb r3, r3
+ uxtb r3, r4
adds r1, r1, r3 ldr r3, [r0+0x04] cmp r1, r3 @@ -61,7 +60,7 @@ G_M53790_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; byrRegs +[r0] ldrb r0, [r0+r1] ; byrRegs -[r0]
- ;; size=44 bbWeight=1 PerfScore 19.00
+ ;; size=42 bbWeight=1 PerfScore 19.00
G_M53790_IG04: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00 @@ -80,7 +79,7 @@ G_M53790_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, b SHORT G_M53790_IG03 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 110, prolog size 8, PerfScore 29.00, instruction count 39, allocated bytes for code 110 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
+; Total bytes of code 108, prolog size 8, PerfScore 29.00, instruction count 39, allocated bytes for code 108 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -92,7 +91,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 110 (0x00006e)
+ Function Length : 54 (0x00036) Actual length = 108 (0x00006c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-30 (-1.72%) : 31400.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)

@@ -5,157 +5,151 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 120 single block inlinees; 45 inlinees without PGO data
+; 0 inlinees with PGO data; 125 single block inlinees; 45 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 65, 33.50) ref -> r4 this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
-; V01 arg1 [V01,T11] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V02 loc0 [V02,T12] ( 6, 4.50) int -> r5 single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) ref -> r1 class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V02 loc0 [V02,T13] ( 6, 4.50) int -> r5 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V05 tmp2 [V05,T50] ( 2, 2 ) int -> r5 "Inlining Arg" -; V06 tmp3 [V06,T56] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V07 tmp4 [V07,T13] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V05 tmp2 [V05,T52] ( 2, 2 ) int -> r5 "Inlining Arg" +; V06 tmp3 [V06,T58] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V07 tmp4 [V07,T14] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
; V08 tmp5 [V08,T02] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V11 tmp8 [V11,T20] ( 6, 3 ) int -> r7 "Inline stloc first use temp" ;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V19 tmp16 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V21 tmp18 [V21,T03] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V22 tmp19 [V22,T38] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V24 tmp21 [V24,T63] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V25 tmp22 [V25,T39] ( 3, 3 ) int -> r2 "Inlining Arg" -; V26 tmp23 [V26,T26] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V28 tmp25 [V28,T51] ( 2, 2 ) int -> r5 "Inlining Arg" -; V29 tmp26 [V29,T57] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V30 tmp27 [V30,T14] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V31 tmp28 [V31,T04] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V34 tmp31 [V34,T21] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V37 tmp34 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V17 tmp14 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V19 tmp16 [V19,T03] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V20 tmp17 [V20,T38] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V22 tmp19 [V22,T65] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V23 tmp20 [V23,T39] ( 3, 3 ) int -> r2 "Inlining Arg" +; V24 tmp21 [V24,T26] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V25 tmp22 [V25 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V26 tmp23 [V26,T53] ( 2, 2 ) int -> r5 "Inlining Arg" +; V27 tmp24 [V27,T59] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V28 tmp25 [V28,T15] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V29 tmp26 [V29,T04] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V32 tmp29 [V32,T21] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V33 tmp30 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V36 tmp33 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V38 tmp35 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V39 tmp36 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V40 tmp37 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V43 tmp40 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V44 tmp41 [V44,T05] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V45 tmp42 [V45,T40] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V47 tmp44 [V47,T64] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V48 tmp45 [V48,T41] ( 3, 3 ) int -> r2 "Inlining Arg" -; V49 tmp46 [V49,T27] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V50 tmp47 [V50 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V51 tmp48 [V51,T52] ( 2, 2 ) int -> r5 "Inlining Arg" -; V52 tmp49 [V52,T58] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V53 tmp50 [V53,T15] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V54 tmp51 [V54,T06] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V40 tmp37 [V40,T05] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V41 tmp38 [V41,T40] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V42 tmp39 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V43 tmp40 [V43,T66] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V44 tmp41 [V44,T41] ( 3, 3 ) int -> r2 "Inlining Arg" +; V45 tmp42 [V45,T27] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V46 tmp43 [V46 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V47 tmp44 [V47,T54] ( 2, 2 ) int -> r5 "Inlining Arg" +; V48 tmp45 [V48,T60] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V49 tmp46 [V49,T16] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V50 tmp47 [V50,T06] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V51 tmp48 [V51 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V52 tmp49 [V52 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V53 tmp50 [V53,T22] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V54 tmp51 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V57 tmp54 [V57,T22] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V58 tmp55 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V57 tmp54 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V59 tmp56 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V60 tmp57 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V61 tmp58 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V62 tmp59 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V63 tmp60 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V64 tmp61 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V65 tmp62 [V65 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V66 tmp63 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V67 tmp64 [V67,T07] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V68 tmp65 [V68,T42] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V69 tmp66 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V70 tmp67 [V70,T65] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V71 tmp68 [V71,T43] ( 3, 3 ) int -> r2 "Inlining Arg" -; V72 tmp69 [V72,T28] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V74 tmp71 [V74,T53] ( 2, 2 ) int -> r5 "Inlining Arg" -; V75 tmp72 [V75,T59] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V76 tmp73 [V76,T16] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V77 tmp74 [V77,T08] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V78 tmp75 [V78 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V60 tmp57 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V61 tmp58 [V61,T07] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V62 tmp59 [V62,T42] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V64 tmp61 [V64,T67] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V65 tmp62 [V65,T43] ( 3, 3 ) int -> r2 "Inlining Arg" +; V66 tmp63 [V66,T28] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +;* V67 tmp64 [V67 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V68 tmp65 [V68,T55] ( 2, 2 ) int -> r5 "Inlining Arg" +; V69 tmp66 [V69,T61] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V70 tmp67 [V70,T17] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V71 tmp68 [V71,T08] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V74 tmp71 [V74,T23] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V75 tmp72 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V76 tmp73 [V76 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V77 tmp74 [V77 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V78 tmp75 [V78 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V79 tmp76 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V80 tmp77 [V80,T23] ( 6, 3 ) int -> r7 "Inline stloc first use temp"
+;* V80 tmp77 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V81 tmp78 [V81 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V82 tmp79 [V82 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V83 tmp80 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V84 tmp81 [V84 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V85 tmp82 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V86 tmp83 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V88 tmp85 [V88 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V89 tmp86 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V90 tmp87 [V90,T29] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" -;* V91 tmp88 [V91 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V92 tmp89 [V92,T54] ( 2, 2 ) int -> r6 "Inlining Arg" -; V93 tmp90 [V93,T60] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V94 tmp91 [V94,T17] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V95 tmp92 [V95,T09] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V96 tmp93 [V96 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V82 tmp79 [V82,T09] ( 6, 6 ) byref -> r3 single-def "Inlining Arg" +; V83 tmp80 [V83,T44] ( 3, 3 ) int -> r2 "impAppendStmt" +;* V84 tmp81 [V84 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V85 tmp82 [V85,T68] ( 3, 1.50) int -> r1 "Inline return value spill temp" +; V86 tmp83 [V86,T45] ( 3, 3 ) int -> r1 "Inlining Arg" +; V87 tmp84 [V87,T29] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" +;* V88 tmp85 [V88 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V89 tmp86 [V89,T56] ( 2, 2 ) int -> r6 "Inlining Arg" +; V90 tmp87 [V90,T62] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V91 tmp88 [V91,T18] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V92 tmp89 [V92,T10] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V93 tmp90 [V93 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V94 tmp91 [V94 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V95 tmp92 [V95,T24] ( 6, 3 ) int -> r8 "Inline stloc first use temp" +;* V96 tmp93 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V98 tmp95 [V98,T24] ( 6, 3 ) int -> r8 "Inline stloc first use temp"
+;* V98 tmp95 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V99 tmp96 [V99 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V100 tmp97 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V101 tmp98 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V102 tmp99 [V102 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V103 tmp100 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V104 tmp101 [V104 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V105 tmp102 [V105 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V106 tmp103 [V106 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V107 tmp104 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V108 tmp105 [V108,T30] ( 3, 3 ) byref -> r7 single-def "Inlining Arg" -;* V109 tmp106 [V109 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -; V110 tmp107 [V110,T61] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V111 tmp108 [V111,T18] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V112 tmp109 [V112,T10] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V113 tmp110 [V113 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -;* V114 tmp111 [V114 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V115 tmp112 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V116 tmp113 [V116,T25] ( 6, 3 ) int -> r6 "Inline stloc first use temp" -;* V117 tmp114 [V117 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V118 tmp115 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V119 tmp116 [V119 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V120 tmp117 [V120,T55] ( 2, 2 ) int -> r6 "Inlining Arg" -; V121 tmp118 [V121,T62] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V122 tmp119 [V122,T19] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V123 tmp120 [V123,T31] ( 3, 3 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V124 tmp121 [V124 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V125 tmp122 [V125 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V101 tmp98 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V102 tmp99 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V103 tmp100 [V103,T30] ( 3, 3 ) byref -> r7 single-def "Inlining Arg" +;* V104 tmp101 [V104 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +; V105 tmp102 [V105,T63] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V106 tmp103 [V106,T19] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V107 tmp104 [V107,T11] ( 6, 6 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V108 tmp105 [V108 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +;* V109 tmp106 [V109 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V110 tmp107 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V111 tmp108 [V111,T25] ( 6, 3 ) int -> r6 "Inline stloc first use temp" +;* V112 tmp109 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V113 tmp110 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V114 tmp111 [V114 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V115 tmp112 [V115,T57] ( 2, 2 ) int -> r6 "Inlining Arg" +; V116 tmp113 [V116,T64] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V117 tmp114 [V117,T31] ( 3, 3 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V118 tmp115 [V118 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V119 tmp116 [V119 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V120 tmp117 [V120 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V121 tmp118 [V121,T32] ( 3, 3 ) ref -> r0 single-def "arr expr" +; V122 tmp119 [V122,T33] ( 3, 3 ) ref -> r0 single-def "arr expr" +;* V123 tmp120 [V123 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V124 tmp121 [V124 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V125 tmp122 [V125,T34] ( 3, 3 ) ref -> r3 single-def "arr expr"
;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V127 tmp124 [V127,T32] ( 3, 3 ) ref -> r0 single-def "arr expr" -; V128 tmp125 [V128,T33] ( 3, 3 ) ref -> r0 single-def "arr expr"
+;* V127 tmp124 [V127 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V128 tmp125 [V128,T35] ( 3, 3 ) ref -> r0 single-def "arr expr"
;* V129 tmp126 [V129 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V130 tmp127 [V130 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V131 tmp128 [V131,T34] ( 3, 3 ) ref -> r0 single-def "arr expr"
...

+20 (+1.04%) : 31993.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitDefaultValue(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)

@@ -5,169 +5,161 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 115 single block inlinees; 43 inlinees without PGO data
+; 0 inlinees with PGO data; 115 single block inlinees; 44 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 18, 10 ) ref -> r5 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator> ; V01 arg1 [V01,T08] ( 11, 6.50) ref -> r4 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V02 arg2 [V02,T17] ( 3, 3 ) ubyte -> r2 single-def -; V03 arg3 [V03,T16] ( 5, 3.50) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> -; V04 loc0 [V04,T55] ( 5, 2.50) ref -> r8 class-hnd single-def <Microsoft.CodeAnalysis.ConstantValue>
+; V02 arg2 [V02,T18] ( 3, 3 ) ubyte -> r2 single-def +; V03 arg3 [V03,T17] ( 5, 3.50) ref -> r6 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode> +; V04 loc0 [V04,T56] ( 5, 2.50) ref -> r8 class-hnd single-def <Microsoft.CodeAnalysis.ConstantValue>
; V05 OutArgs [V05 ] ( 1, 1 ) struct ( 4) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T74] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
+; V06 tmp1 [V06,T76] ( 2, 1 ) ubyte -> r0 "Inline return value spill temp"
; V07 tmp2 [V07,T01] ( 12, 12 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> ;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V09 tmp4 [V09,T62] ( 2, 2 ) int -> r6 "Inlining Arg" -; V10 tmp5 [V10,T67] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V11 tmp6 [V11,T18] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V09 tmp4 [V09,T64] ( 2, 2 ) int -> r6 "Inlining Arg" +; V10 tmp5 [V10,T69] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V11 tmp6 [V11,T19] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
; V12 tmp7 [V12,T09] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> ;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V15 tmp10 [V15,T25] ( 6, 3 ) int -> r8 "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V19 tmp14 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V21 tmp16 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V22 tmp17 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V24 tmp19 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V25 tmp20 [V25,T10] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V26 tmp21 [V26,T43] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V28 tmp23 [V28,T75] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V29 tmp24 [V29,T44] ( 3, 3 ) int -> r2 "Inlining Arg" -; V30 tmp25 [V30,T31] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V31 tmp26 [V31,T02] ( 12, 12 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V33 tmp28 [V33,T63] ( 2, 2 ) int -> r4 "Inlining Arg" -; V34 tmp29 [V34,T68] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V35 tmp30 [V35,T19] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V36 tmp31 [V36,T11] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V39 tmp34 [V39,T26] ( 6, 3 ) int -> r7 "Inline stloc first use temp" -;* V40 tmp35 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V41 tmp36 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V42 tmp37 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V19 tmp14 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V21 tmp16 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V23 tmp18 [V23,T10] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V24 tmp19 [V24,T43] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V26 tmp21 [V26,T77] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V27 tmp22 [V27,T44] ( 3, 3 ) int -> r2 "Inlining Arg" +; V28 tmp23 [V28,T31] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V29 tmp24 [V29,T02] ( 12, 12 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V31 tmp26 [V31,T65] ( 2, 2 ) int -> r4 "Inlining Arg" +; V32 tmp27 [V32,T70] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V33 tmp28 [V33,T20] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V34 tmp29 [V34,T11] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V37 tmp32 [V37,T26] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V38 tmp33 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V41 tmp36 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V44 tmp39 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V45 tmp40 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V46 tmp41 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V48 tmp43 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V49 tmp44 [V49,T12] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V50 tmp45 [V50,T45] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V51 tmp46 [V51 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V52 tmp47 [V52,T76] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V53 tmp48 [V53,T46] ( 3, 3 ) int -> r2 "Inlining Arg" -; V54 tmp49 [V54,T32] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V55 tmp50 [V55,T03] ( 12, 12 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V57 tmp52 [V57,T64] ( 2, 2 ) int -> r6 "Inlining Arg" -; V58 tmp53 [V58,T69] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V59 tmp54 [V59,T20] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V60 tmp55 [V60,T13] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V45 tmp40 [V45,T12] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V46 tmp41 [V46,T45] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V47 tmp42 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V48 tmp43 [V48,T78] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V49 tmp44 [V49,T46] ( 3, 3 ) int -> r2 "Inlining Arg" +; V50 tmp45 [V50,T32] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V51 tmp46 [V51,T03] ( 12, 12 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V52 tmp47 [V52 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V53 tmp48 [V53,T66] ( 2, 2 ) int -> r6 "Inlining Arg" +; V54 tmp49 [V54,T71] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V55 tmp50 [V55,T21] ( 4, 4 ) ref -> r7 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V56 tmp51 [V56,T13] ( 6, 6 ) ref -> r7 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V57 tmp52 [V57 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V59 tmp54 [V59,T27] ( 6, 3 ) int -> r8 "Inline stloc first use temp" +;* V60 tmp55 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V61 tmp56 [V61 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V62 tmp57 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V63 tmp58 [V63,T27] ( 6, 3 ) int -> r8 "Inline stloc first use temp" -;* V64 tmp59 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V63 tmp58 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V65 tmp60 [V65 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V66 tmp61 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V67 tmp62 [V67 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V68 tmp63 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V69 tmp64 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V70 tmp65 [V70 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V71 tmp66 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V72 tmp67 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V73 tmp68 [V73,T14] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" -; V74 tmp69 [V74,T47] ( 3, 3 ) int -> r3 "impAppendStmt" -;* V75 tmp70 [V75 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V76 tmp71 [V76,T77] ( 3, 1.50) int -> r2 "Inline return value spill temp" -; V77 tmp72 [V77,T48] ( 3, 3 ) int -> r2 "Inlining Arg" -; V78 tmp73 [V78,T33] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" -; V79 tmp74 [V79,T04] ( 12, 12 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V80 tmp75 [V80 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V81 tmp76 [V81,T65] ( 2, 2 ) int -> r4 "Inlining Arg" -; V82 tmp77 [V82,T70] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V83 tmp78 [V83,T21] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V84 tmp79 [V84,T15] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V85 tmp80 [V85 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V66 tmp61 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V67 tmp62 [V67,T14] ( 6, 6 ) byref -> r0 single-def "Inlining Arg" +; V68 tmp63 [V68,T47] ( 3, 3 ) int -> r3 "impAppendStmt" +;* V69 tmp64 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V70 tmp65 [V70,T79] ( 3, 1.50) int -> r2 "Inline return value spill temp" +; V71 tmp66 [V71,T48] ( 3, 3 ) int -> r2 "Inlining Arg" +; V72 tmp67 [V72,T33] ( 3, 3 ) byref -> r0 single-def "Inlining Arg" +; V73 tmp68 [V73,T04] ( 12, 12 ) ref -> r5 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V74 tmp69 [V74 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V75 tmp70 [V75,T67] ( 2, 2 ) int -> r4 "Inlining Arg" +; V76 tmp71 [V76,T72] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V77 tmp72 [V77,T22] ( 4, 4 ) ref -> r6 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V78 tmp73 [V78,T15] ( 6, 6 ) ref -> r6 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V79 tmp74 [V79 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V80 tmp75 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V81 tmp76 [V81,T28] ( 6, 3 ) int -> r7 "Inline stloc first use temp" +;* V82 tmp77 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V83 tmp78 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V84 tmp79 [V84 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V85 tmp80 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V86 tmp81 [V86 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V87 tmp82 [V87,T28] ( 6, 3 ) int -> r7 "Inline stloc first use temp"
+;* V87 tmp82 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V88 tmp83 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V89 tmp84 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V90 tmp85 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V91 tmp86 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V92 tmp87 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V93 tmp88 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V94 tmp89 [V94 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V95 tmp90 [V95 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V96 tmp91 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V97 tmp92 [V97,T34] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" -; V98 tmp93 [V98,T57] ( 4, 2 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V99 tmp94 [V99,T58] ( 2, 2 ) ref -> r7 class-hnd exact single-def "non-inline candidate call" <Microsoft.CodeAnalysis.CodeGen.LocalSlotManager> -;* V100 tmp95 [V100 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]> -; V101 tmp96 [V101,T59] ( 2, 2 ) ref -> r1 class-hnd single-def "impAppendStmt" <Microsoft.Cci.ITypeReference> -;* V102 tmp97 [V102 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[System.String]> -;* V103 tmp98 [V103 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[ubyte]> -; V104 tmp99 [V104,T05] ( 12, 12 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V105 tmp100 [V105 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V106 tmp101 [V106,T66] ( 2, 2 ) int -> r9 "Inlining Arg" -; V107 tmp102 [V107,T71] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V108 tmp103 [V108,T22] ( 4, 4 ) ref -> r10 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V109 tmp104 [V109,T06] ( 10, 10 ) ref -> r10 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V110 tmp105 [V110 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V111 tmp106 [V111 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V112 tmp107 [V112 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V113 tmp108 [V113 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V114 tmp109 [V114 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V115 tmp110 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V116 tmp111 [V116,T29] ( 6, 3 ) int -> r3 "Inline stloc first use temp" -;* V117 tmp112 [V117 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V118 tmp113 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V119 tmp114 [V119 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V120 tmp115 [V120,T30] ( 6, 3 ) int -> r3 "Inline stloc first use temp" -;* V121 tmp116 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V122 tmp117 [V122,T35] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" -; V123 tmp118 [V123,T60] ( 2, 2 ) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.Cci.ITypeReference> -; V124 tmp119 [V124,T07] ( 10, 10 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -; V125 tmp120 [V125,T36] ( 3, 3 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>> -;* V126 tmp121 [V126 ] ( 0, 0 ) ref -> zero-ref single-def -; V127 tmp122 [V127,T61] ( 2, 2 ) ref -> r3 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticBag> -; V128 tmp123 [V128,T78] ( 3, 1.50) int -> r9 -;* V129 tmp124 [V129 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" -; V130 tmp125 [V130,T72] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V131 tmp126 [V131,T23] ( 4, 4 ) ref -> r4 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V132 tmp127 [V132,T24] ( 4, 4 ) ref -> r4 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -; V133 tmp128 [V133,T79] ( 2, 1 ) int -> r1 single-def "Inline stloc first use temp" -;* V134 tmp129 [V134 ] ( 0, 0 ) ref -> zero-ref single-def "field V100.array (fldOffset=0x0)" P-INDEP -;* V135 tmp130 [V135,T80] ( 0, 0 ) ref -> zero-ref single-def "field V102.array (fldOffset=0x0)" P-INDEP -;* V136 tmp131 [V136,T81] ( 0, 0 ) ref -> zero-ref single-def "field V103.array (fldOffset=0x0)" P-INDEP -; V137 tmp132 [V137,T37] ( 3, 3 ) ref -> r1 single-def "arr expr" -; V138 tmp133 [V138,T38] ( 3, 3 ) ref -> r0 single-def "arr expr" -;* V139 tmp134 [V139 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V89 tmp84 [V89,T34] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" +; V90 tmp85 [V90,T59] ( 4, 2 ) ref -> r7 class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V91 tmp86 [V91,T60] ( 2, 2 ) ref -> r7 class-hnd exact single-def "non-inline candidate call" <Microsoft.CodeAnalysis.CodeGen.LocalSlotManager> +;* V92 tmp87 [V92 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]> +; V93 tmp88 [V93,T61] ( 2, 2 ) ref -> r1 class-hnd single-def "impAppendStmt" <Microsoft.Cci.ITypeReference> +;* V94 tmp89 [V94 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[System.String]> +;* V95 tmp90 [V95 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[ubyte]> +; V96 tmp91 [V96,T05] ( 12, 12 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V97 tmp92 [V97 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V98 tmp93 [V98,T68] ( 2, 2 ) int -> r9 "Inlining Arg" +; V99 tmp94 [V99,T73] ( 3, 1.50) ref -> r1 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V100 tmp95 [V100,T23] ( 4, 4 ) ref -> r10 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V101 tmp96 [V101,T06] ( 10, 10 ) ref -> r10 class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V102 tmp97 [V102 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V103 tmp98 [V103 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V104 tmp99 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V105 tmp100 [V105 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V106 tmp101 [V106 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V107 tmp102 [V107,T29] ( 6, 3 ) int -> r3 "Inline stloc first use temp" +;* V108 tmp103 [V108 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V109 tmp104 [V109 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V110 tmp105 [V110,T30] ( 6, 3 ) int -> r3 "Inline stloc first use temp" +;* V111 tmp106 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V112 tmp107 [V112,T35] ( 3, 3 ) byref -> r3 single-def "Inlining Arg" +; V113 tmp108 [V113,T62] ( 2, 2 ) ref -> r1 class-hnd single-def "Inlining Arg" <Microsoft.Cci.ITypeReference> +; V114 tmp109 [V114,T07] ( 10, 10 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +; V115 tmp110 [V115,T36] ( 3, 3 ) ref -> r0 class-hnd single-def "dup spill" <<unknown class>> +;* V116 tmp111 [V116 ] ( 0, 0 ) ref -> zero-ref single-def +; V117 tmp112 [V117,T63] ( 2, 2 ) ref -> r3 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticBag> +; V118 tmp113 [V118,T80] ( 3, 1.50) int -> r9
...

+6 (+2.75%) : 271.dasm - System.Runtime.CompilerServices.ConditionalWeakTable2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable2[System.Canon,System.Canon]):this (FullOpts)

@@ -15,12 +15,11 @@ ; V04 tmp1 [V04,T07] ( 3, 4 ) int -> r1 "spilling helperCall" ;* V05 tmp2 [V05 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V06 tmp3 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V07 tmp4 [V07,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V07 tmp4 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V08 tmp5 [V08,T00] ( 3, 24 ) ref -> r3 "arr expr" ; V09 cse0 [V09,T02] ( 4, 10 ) ref -> r1 "CSE - aggressive"
-; V10 cse1 [V10,T08] ( 3, 1.50) ref -> r1 "CSE - aggressive" -; V11 rat0 [V11,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" -; V12 rat1 [V12,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
+; V10 rat0 [V10,T06] ( 3, 4.40) int -> r0 "Spilling to split statement for tree" +; V11 rat1 [V11,T05] ( 3, 5.60) int -> r1 "fgMakeTemp is creating a new local variable"
; TEMP_01 ref -> [r11-0x10] ; ; Lcl frame size = 8 @@ -41,17 +40,16 @@ G_M9941_IG02: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, by bne SHORT G_M9941_IG04 ;; size=4 bbWeight=1 PerfScore 2.00 G_M9941_IG03: ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+ movw r0, 0xd1ff + movt r0, 0xd1ff
movw r1, 0xd1ff movt r1, 0xd1ff
- mov r0, r1 - ; gcrRegs +[r0]
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcrRegs -[r0]
; gcr arg pop 0
- ;; size=22 bbWeight=0.50 PerfScore 3.50
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
G_M9941_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff movt r0, 0xd1ff @@ -158,7 +156,7 @@ G_M9941_IG11: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byre bkpt ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 218, prolog size 20, PerfScore 102.50, instruction count 79, allocated bytes for code 218 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
+; Total bytes of code 224, prolog size 20, PerfScore 103.00, instruction count 80, allocated bytes for code 224 (MethodHash=9205d92a) for method System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
; ============================================================ Unwind Info: @@ -170,7 +168,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 109 (0x0006d) Actual length = 218 (0x0000da)
+ Function Length : 112 (0x00070) Actual length = 224 (0x0000e0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+3.57%) : 2101.dasm - BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)

@@ -8,35 +8,36 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 10 ) byref -> r4 this single-def
+; V00 this [V00,T00] ( 11, 9 ) byref -> r4 this single-def
; V01 arg1 [V01,T02] ( 3, 3 ) int -> r6 single-def ; V02 arg2 [V02,T01] ( 6, 4 ) ref -> r5 class-hnd single-def <BepuUtilities.Memory.IUnmanagedMemoryPool> ; V03 loc0 [V03 ] ( 3, 1.50) struct (12) [sp+0x04] do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Memory.Buffer`1[int]> ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V06 tmp2 [V06,T04] ( 3, 3 ) int -> r7 "impAppendStmt" -; V07 tmp3 [V07,T07] ( 2, 2 ) int -> r3 "VirtualCall through function pointer" -; V08 tmp4 [V08,T08] ( 2, 2 ) int -> r3 "VirtualCall through function pointer"
+; V06 tmp2 [V06,T05] ( 3, 3 ) int -> r8 "impAppendStmt" +; V07 tmp3 [V07,T09] ( 2, 2 ) int -> r3 "VirtualCall through function pointer" +; V08 tmp4 [V08,T10] ( 2, 2 ) int -> r3 "VirtualCall through function pointer"
;* V09 tmp5 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T09] ( 3, 1.50) int -> r8 "Inline return value spill temp" -; V12 tmp8 [V12,T05] ( 3, 3 ) int -> r8 "Inlining Arg" -;* V13 tmp9 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V11 tmp7 [V11,T14] ( 3, 1.50) int -> r9 "Inline return value spill temp" +; V12 tmp8 [V12,T06] ( 3, 3 ) int -> r9 "Inlining Arg" +; V13 tmp9 [V13,T08] ( 2, 2 ) byref -> r7 single-def "Inlining Arg" +; V14 tmp10 [V14,T11] ( 2, 2 ) int -> r2 "Inlining Arg" +; V15 tmp11 [V15,T12] ( 2, 2 ) int -> r0 "Inlining Arg" +; V16 tmp12 [V16,T13] ( 2, 2 ) int -> r1 "Inlining Arg"
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V18 tmp14 [V18,T06] ( 3, 3 ) int -> r2 "Inline stloc first use temp" -; V19 tmp15 [V19,T03] ( 2, 4 ) byref -> r3 single-def "impAppendStmt"
+; V18 tmp14 [V18,T07] ( 3, 3 ) int -> r2 "Inline stloc first use temp" +; V19 tmp15 [V19,T04] ( 2, 4 ) byref -> r3 single-def "impAppendStmt"
; V20 tmp16 [V20 ] ( 3, 1.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V03.Memory (fldOffset=0x0)" P-DEP ; V21 tmp17 [V21 ] ( 2, 1 ) int -> [sp+0x08] do-not-enreg[X] addr-exposed "field V03.length (fldOffset=0x4)" P-DEP ; V22 tmp18 [V22 ] ( 2, 1 ) int -> [sp+0x0C] do-not-enreg[X] addr-exposed "field V03.Id (fldOffset=0x8)" P-DEP
+; V23 cse0 [V23,T03] ( 6, 4 ) byref -> r7 multi-def "CSE - aggressive"
;
-; Lcl frame size = 20
+; Lcl frame size = 16
G_M19315_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,r5,r6,r7,r8,r11,lr} - sub sp, 20
+ push {r4,r5,r6,r7,r8,r9,r11,lr} + sub sp, 16
add r11, sp, 40 mov r4, r0 ; byrRegs +[r4] @@ -51,23 +52,25 @@ G_M19315_IG02: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, by bne SHORT G_M19315_IG06 ;; size=8 bbWeight=1 PerfScore 4.00 G_M19315_IG03: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref, isz
- ldr r0, [r4+0x08]
+ add r7, r4, 8 + ; byrRegs +[r7] + ldr r0, [r7]
str r0, [sp+0x04]
- ldr r0, [r4+0x0C]
+ ldr r0, [r7+0x04]
str r0, [sp+0x08]
- ldr r0, [r4+0x10]
+ ldr r0, [r7+0x08]
str r0, [sp+0x0C] ldr r0, [r4+0x04]
- lsls r7, r0, 1 - ldr r8, [r4+0x0C] - cmp r7, r8
+ lsl r8, r0, 1 + ldr r9, [r4+0x0C] + cmp r8, r9
bge SHORT G_M19315_IG04 b SHORT G_M19315_IG05
- ;; size=26 bbWeight=0.50 PerfScore 6.00 -G_M19315_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref - mov r8, r7
+ ;; size=32 bbWeight=0.50 PerfScore 6.50 +G_M19315_IG04: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref + mov r9, r8
;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M19315_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, byref
+G_M19315_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0090 {r4 r7}, byref
mov r0, r5 ; gcrRegs +[r0] movw r1, 0xd1ff @@ -79,21 +82,22 @@ G_M19315_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, blx r3 // CORINFO_HELP_VIRTUAL_FUNC_PTR ; gcrRegs -[r0] mov r3, r0
- add r2, r4, 8
+ mov r2, r7
; byrRegs +[r2] mov r0, r5 ; gcrRegs +[r0]
- mov r1, r8
+ mov r1, r9
blx r3 ; gcrRegs -[r0] ; byrRegs -[r2]
- ldr r0, [r4+0x08] - ldr r1, [sp+0x04]
ldr r2, [r4+0x04]
+ ldr r0, [r7] + ldr r1, [sp+0x04]
lsls r2, r2, 2 movw r12, 0xd1ff movt r12, 0xd1ff blx r12 // CORINFO_HELP_MEMCPY
+ ; byrRegs -[r7]
mov r0, r5 ; gcrRegs +[r0] movw r1, 0xd1ff @@ -110,9 +114,11 @@ G_M19315_IG05: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0010 {r4}, ; gcrRegs +[r0] blx r3 ; gcrRegs -[r0 r5]
- ;; size=94 bbWeight=0.50 PerfScore 16.00
+ ;; size=92 bbWeight=0.50 PerfScore 16.00
G_M19315_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
- add r3, r4, 8
+ add r7, r4, 8 + ; byrRegs +[r7] + mov r3, r7
; byrRegs +[r3] ldr r2, [r4+0x04] adds r1, r2, 1 @@ -121,13 +127,13 @@ G_M19315_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre ; byrRegs -[r3] lsls r2, r2, 2 str r6, [r3+r2]
- ;; size=16 bbWeight=1 PerfScore 7.00
+ ;; size=18 bbWeight=1 PerfScore 8.00
G_M19315_IG07: ; bbWeight=1, epilog, nogc, extend
- add sp, 20 - pop {r4,r5,r6,r7,r8,r11,pc}
+ add sp, 16 + pop {r4,r5,r6,r7,r8,r9,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 168, prolog size 10, PerfScore 41.50, instruction count 64, allocated bytes for code 168 (MethodHash=9a7fb48c) for method BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)
+; Total bytes of code 174, prolog size 10, PerfScore 43.00, instruction count 66, allocated bytes for code 174 (MethodHash=9a7fb48c) for method BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)
; ============================================================ Unwind Info: @@ -139,11 +145,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 84 (0x00054) Actual length = 168 (0x0000a8)
+ Function Length : 87 (0x00057) Actual length = 174 (0x0000ae)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- 05 add sp, sp, #20 ; opsize 16 - A9 F0 pop {r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ 04 add sp, sp, #16 ; opsize 16 + AB F0 pop {r4,r5,r6,r7,r8,r9,r11,lr} ; opsize 32
FF end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 35 16 12 7 -128 +58
benchmarks.run_pgo.linux.arm.checked.mch 125 108 4 13 -866 +40
benchmarks.run_tiered.linux.arm.checked.mch 79 65 8 6 -620 +118
coreclr_tests.run.linux.arm.checked.mch 3,249 2,124 222 903 -44,318 +4,472
libraries.crossgen2.linux.arm.checked.mch 13 6 1 6 -32 +2
libraries.pmi.linux.arm.checked.mch 170 55 75 40 -702 +7,876
libraries_tests.run.linux.arm.Release.mch 749 656 38 55 -73,612 +1,064
librariestestsnotieredcompilation.run.linux.arm.Release.mch 181 70 39 72 -67,122 +1,528
realworld.run.linux.arm.checked.mch 40 12 15 13 -116 +1,104
4,641 3,112 414 1,115 -187,516 +16,262

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 45,955 5,344 40,611 1,203 (2.55%) 1,211 (2.57%)
benchmarks.run_pgo.linux.arm.checked.mch 159,504 56,729 102,775 3,201 (1.97%) 3,210 (1.97%)
benchmarks.run_tiered.linux.arm.checked.mch 80,090 43,607 36,483 1,086 (1.34%) 1,095 (1.35%)
coreclr_tests.run.linux.arm.checked.mch 471,977 259,194 212,783 7,172 (1.50%) 7,184 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 188,191 14 188,177 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,346 6 272,340 7,786 (2.78%) 7,799 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,122 442,672 267,450 16,195 (2.23%) 16,304 (2.24%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,523 21,604 252,919 33,224 (10.79%) 33,334 (10.83%)
realworld.run.linux.arm.checked.mch 36,406 157 36,249 1,408 (3.72%) 1,409 (3.73%)
2,239,114 829,327 1,409,787 71,275 (3.08%) 71,546 (3.10%)

jit-analyze output

benchmarks.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15281610 (overridden on cmd)
Total bytes of diff: 15281540 (overridden on cmd)
Total bytes of delta: -70 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          24 : 10988.dasm (0.35 % of base)
           6 : 271.dasm (2.75 % of base)
           4 : 11087.dasm (0.25 % of base)
           4 : 11056.dasm (0.20 % of base)
           4 : 17618.dasm (0.28 % of base)
           4 : 23511.dasm (0.23 % of base)
           2 : 11965.dasm (0.48 % of base)
           2 : 24124.dasm (0.48 % of base)
           2 : 24125.dasm (0.48 % of base)
           2 : 30741.dasm (0.48 % of base)
           2 : 434.dasm (0.86 % of base)
           2 : 11966.dasm (0.48 % of base)

Top file improvements (bytes):
         -30 : 26415.dasm (-1.72 % of base)
         -14 : 26429.dasm (-0.83 % of base)
          -6 : 115.dasm (-0.37 % of base)
          -6 : 15235.dasm (-0.37 % of base)
          -6 : 32415.dasm (-0.37 % of base)
          -6 : 38878.dasm (-0.37 % of base)
          -6 : 45405.dasm (-0.37 % of base)
          -6 : 9880.dasm (-0.37 % of base)
          -6 : 22123.dasm (-0.37 % of base)
          -6 : 30853.dasm (-0.37 % of base)
          -6 : 35792.dasm (-0.37 % of base)
          -6 : 37356.dasm (-0.37 % of base)
          -6 : 19249.dasm (-0.37 % of base)
          -6 : 29145.dasm (-0.37 % of base)
          -6 : 33988.dasm (-0.37 % of base)
          -6 : 40732.dasm (-0.37 % of base)

28 total files with Code Size differences (16 improved, 12 regressed), 7 unchanged.

Top method regressions (bytes):
          24 (0.35 % of base) : 10988.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
           6 (2.75 % of base) : 271.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
           4 (0.20 % of base) : 11056.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           4 (0.25 % of base) : 11087.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           4 (0.23 % of base) : 23511.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (FullOpts)
           4 (0.28 % of base) : 17618.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (FullOpts)
           2 (0.86 % of base) : 434.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
           2 (0.48 % of base) : 24124.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_BolAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.48 % of base) : 30741.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_BoundaryAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.48 % of base) : 11965.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_EndAnchorZ():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.48 % of base) : 11966.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_EndAnchorZReverse():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.48 % of base) : 24125.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_EolAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)

Top method improvements (bytes):
         -30 (-1.72 % of base) : 26415.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -14 (-0.83 % of base) : 26429.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
          -6 (-0.37 % of base) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 15235.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 32415.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 38878.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 45405.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 9880.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 22123.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 30853.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 35792.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 37356.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 19249.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 29145.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 33988.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 40732.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

Top method regressions (percentages):
           6 (2.75 % of base) : 271.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
           2 (0.86 % of base) : 434.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
           2 (0.48 % of base) : 30741.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_BoundaryAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.48 % of base) : 24124.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_BolAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.48 % of base) : 11965.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_EndAnchorZ():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.48 % of base) : 11966.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_EndAnchorZReverse():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.48 % of base) : 24125.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]:get_EolAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
          24 (0.35 % of base) : 10988.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
           4 (0.28 % of base) : 17618.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (FullOpts)
           4 (0.25 % of base) : 11087.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           4 (0.23 % of base) : 23511.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (FullOpts)
           4 (0.20 % of base) : 11056.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)

Top method improvements (percentages):
         -30 (-1.72 % of base) : 26415.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -14 (-0.83 % of base) : 26429.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
          -6 (-0.37 % of base) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 15235.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 32415.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 38878.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 45405.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 9880.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 22123.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 30853.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 35792.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 37356.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 19249.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 29145.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 33988.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 40732.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)

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


benchmarks.run_pgo.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 63946800 (overridden on cmd)
Total bytes of diff: 63945974 (overridden on cmd)
Total bytes of delta: -826 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          24 : 29970.dasm (0.35 % of base)
          10 : 93376.dasm (1.47 % of base)
           4 : 30172.dasm (0.20 % of base)
           2 : 18553.dasm (0.29 % of base)

Top file improvements (bytes):
         -62 : 24537.dasm (-13.54 % of base)
         -38 : 2999.dasm (-33.33 % of base)
         -38 : 3633.dasm (-25.33 % of base)
         -34 : 13874.dasm (-20.00 % of base)
         -34 : 13903.dasm (-16.50 % of base)
         -30 : 121055.dasm (-3.25 % of base)
         -28 : 131430.dasm (-3.23 % of base)
         -28 : 785.dasm (-45.16 % of base)
         -26 : 11425.dasm (-5.33 % of base)
         -26 : 10981.dasm (-5.99 % of base)
         -26 : 119150.dasm (-7.22 % of base)
         -18 : 30279.dasm (-1.06 % of base)
         -16 : 134024.dasm (-2.62 % of base)
         -16 : 18358.dasm (-5.67 % of base)
         -16 : 18411.dasm (-4.52 % of base)
         -12 : 35082.dasm (-9.68 % of base)
         -12 : 68437.dasm (-0.59 % of base)
         -12 : 35236.dasm (-6.82 % of base)
         -12 : 7585.dasm (-0.77 % of base)
         -10 : 369.dasm (-1.83 % of base)

52 total files with Code Size differences (48 improved, 4 regressed), 13 unchanged.

Top method regressions (bytes):
          24 (0.35 % of base) : 29970.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
          10 (1.47 % of base) : 93376.dasm - System.Threading.Tasks.TaskReplicator+Replica:.ctor(System.Threading.Tasks.TaskReplicator,int,long):this (Tier1)
           4 (0.20 % of base) : 30172.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
           2 (0.29 % of base) : 18553.dasm - System.Text.Encodings.Web.OptimizedInboxTextEncoder:Encode(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier0-FullOpts)

Top method improvements (bytes):
         -62 (-13.54 % of base) : 24537.dasm - System.Numerics.Tests.Perf_VectorConvert:.cctor() (Tier0)
         -38 (-25.33 % of base) : 3633.dasm - System.Span`1[ubyte]:Clear():this (Instrumented Tier0)
         -38 (-33.33 % of base) : 2999.dasm - System.Span`1[ubyte]:Clear():this (Tier0)
         -34 (-16.50 % of base) : 13903.dasm - System.Span`1[System.__Canon]:Clear():this (Instrumented Tier0)
         -34 (-20.00 % of base) : 13874.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0)
         -30 (-3.25 % of base) : 121055.dasm - System.DateTimeFormat:TryFormatR[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -28 (-3.23 % of base) : 131430.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this (Tier0)
         -28 (-45.16 % of base) : 785.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
         -26 (-7.22 % of base) : 119150.dasm - System.DateTimeFormat:TryFormatS[ushort](System.DateTime,System.Span`1[ushort],byref):ubyte (Tier0)
         -26 (-5.33 % of base) : 11425.dasm - System.DateTimeFormat:TryFormatu[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Instrumented Tier0)
         -26 (-5.99 % of base) : 10981.dasm - System.DateTimeFormat:TryFormatu[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -18 (-1.06 % of base) : 30279.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
         -16 (-2.62 % of base) : 134024.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:FormattedMessage(int,int,System.String,int,System.String,System.String):this (Tier0)
         -16 (-4.52 % of base) : 18411.dasm - V8.Crypto.BigInteger:invDigit():int:this (Instrumented Tier0)
         -16 (-5.67 % of base) : 18358.dasm - V8.Crypto.BigInteger:invDigit():int:this (Tier0)
         -12 (-6.82 % of base) : 35236.dasm - <>f__AnonymousType0`2[int,int]:GetHashCode():int:this (Instrumented Tier0)
         -12 (-9.68 % of base) : 35082.dasm - <>f__AnonymousType0`2[int,int]:GetHashCode():int:this (Tier0)
         -12 (-0.59 % of base) : 68437.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Instrumented Tier0)
         -12 (-0.77 % of base) : 7585.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier0)
         -10 (-1.83 % of base) : 369.dasm - System.Globalization.IcuLocaleData:GetLocaleDataNumericPart(System.String,int):int (Tier0)

Top method regressions (percentages):
          10 (1.47 % of base) : 93376.dasm - System.Threading.Tasks.TaskReplicator+Replica:.ctor(System.Threading.Tasks.TaskReplicator,int,long):this (Tier1)
          24 (0.35 % of base) : 29970.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
           2 (0.29 % of base) : 18553.dasm - System.Text.Encodings.Web.OptimizedInboxTextEncoder:Encode(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (Tier0-FullOpts)
           4 (0.20 % of base) : 30172.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

Top method improvements (percentages):
         -28 (-45.16 % of base) : 785.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
          -6 (-42.86 % of base) : 49872.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
         -38 (-33.33 % of base) : 2999.dasm - System.Span`1[ubyte]:Clear():this (Tier0)
         -38 (-25.33 % of base) : 3633.dasm - System.Span`1[ubyte]:Clear():this (Instrumented Tier0)
          -6 (-25.00 % of base) : 90303.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ModeOf(int):int (Instrumented Tier0)
          -6 (-25.00 % of base) : 90141.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ModeOf(int):int (Tier0)
         -34 (-20.00 % of base) : 13874.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0)
         -34 (-16.50 % of base) : 13903.dasm - System.Span`1[System.__Canon]:Clear():this (Instrumented Tier0)
          -4 (-15.38 % of base) : 128669.dasm - System.Xml.Schema.XsdDateTime:get_ZoneMinute():int:this (Tier0)
         -62 (-13.54 % of base) : 24537.dasm - System.Numerics.Tests.Perf_VectorConvert:.cctor() (Tier0)
          -6 (-13.04 % of base) : 14576.dasm - System.Threading.Tasks.Task:OptionsMethod(int):int (Instrumented Tier0)
          -6 (-13.04 % of base) : 14434.dasm - System.Threading.Tasks.Task:OptionsMethod(int):int (Tier0)
          -8 (-12.90 % of base) : 555.dasm - System.Runtime.CompilerServices.MethodTable:get_IsMultiDimensionalArray():ubyte:this (Instrumented Tier0)
          -8 (-12.90 % of base) : 87.dasm - System.Runtime.CompilerServices.MethodTable:get_IsMultiDimensionalArray():ubyte:this (Tier0)
          -6 (-10.71 % of base) : 128416.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasErrors():ubyte:this (Tier0)
          -4 (-10.53 % of base) : 92138.dasm - System.Reflection.Metadata.Ecma335.TypeOrMethodDefTag:ConvertTypeDefRowIdToTag(System.Reflection.Metadata.TypeDefinitionHandle):uint (Instrumented Tier0)
          -4 (-10.53 % of base) : 92054.dasm - System.Reflection.Metadata.Ecma335.TypeOrMethodDefTag:ConvertTypeDefRowIdToTag(System.Reflection.Metadata.TypeDefinitionHandle):uint (Tier0)
          -2 (-10.00 % of base) : 94798.dasm - Microsoft.CodeAnalysis.CSharp.OperatorKindExtensions:OperandTypes(int):int (Instrumented Tier0)
          -2 (-10.00 % of base) : 94735.dasm - Microsoft.CodeAnalysis.CSharp.OperatorKindExtensions:OperandTypes(int):int (Tier0)
          -4 (-10.00 % of base) : 1764.dasm - System.Reflection.Metadata.StringHandle:FromOffset(int):System.Reflection.Metadata.StringHandle (Instrumented Tier0)


benchmarks.run_tiered.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 21537614 (overridden on cmd)
Total bytes of diff: 21537112 (overridden on cmd)
Total bytes of delta: -502 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          70 : 47573.dasm (1.92 % of base)
          24 : 22656.dasm (0.35 % of base)
           6 : 638.dasm (2.75 % of base)
           4 : 22811.dasm (0.20 % of base)
           4 : 34398.dasm (0.28 % of base)
           4 : 45952.dasm (0.23 % of base)
           4 : 22878.dasm (0.25 % of base)
           2 : 9281.dasm (1.85 % of base)

Top file improvements (bytes):
         -62 : 3830.dasm (-13.54 % of base)
         -38 : 5704.dasm (-33.33 % of base)
         -34 : 21737.dasm (-20.00 % of base)
         -30 : 64511.dasm (-3.25 % of base)
         -30 : 54930.dasm (-1.72 % of base)
         -28 : 67741.dasm (-3.23 % of base)
         -28 : 747.dasm (-45.16 % of base)
         -26 : 12115.dasm (-5.99 % of base)
         -26 : 63861.dasm (-7.22 % of base)
         -16 : 15967.dasm (-5.67 % of base)
         -16 : 69255.dasm (-2.62 % of base)
         -14 : 54946.dasm (-0.83 % of base)
         -14 : 7957.dasm (-4.29 % of base)
         -12 : 24634.dasm (-9.68 % of base)
         -12 : 21858.dasm (-0.77 % of base)
         -10 : 350.dasm (-1.83 % of base)
          -8 : 67727.dasm (-1.76 % of base)
          -8 : 52581.dasm (-9.52 % of base)
          -8 : 1128.dasm (-3.28 % of base)
          -8 : 81.dasm (-12.90 % of base)

50 total files with Code Size differences (42 improved, 8 regressed), 6 unchanged.

Top method regressions (bytes):
          70 (1.92 % of base) : 47573.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
          24 (0.35 % of base) : 22656.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
           6 (2.75 % of base) : 638.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
           4 (0.20 % of base) : 22811.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
           4 (0.25 % of base) : 22878.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
           4 (0.23 % of base) : 45952.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (Tier1)
           4 (0.28 % of base) : 34398.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (Tier1)
           2 (1.85 % of base) : 9281.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier1)

Top method improvements (bytes):
         -62 (-13.54 % of base) : 3830.dasm - System.Numerics.Tests.Perf_VectorConvert:.cctor() (Tier0)
         -38 (-33.33 % of base) : 5704.dasm - System.Span`1[ubyte]:Clear():this (Tier0)
         -34 (-20.00 % of base) : 21737.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0)
         -30 (-1.72 % of base) : 54930.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (Tier1)
         -30 (-3.25 % of base) : 64511.dasm - System.DateTimeFormat:TryFormatR[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -28 (-3.23 % of base) : 67741.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this (Tier0)
         -28 (-45.16 % of base) : 747.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
         -26 (-7.22 % of base) : 63861.dasm - System.DateTimeFormat:TryFormatS[ushort](System.DateTime,System.Span`1[ushort],byref):ubyte (Tier0)
         -26 (-5.99 % of base) : 12115.dasm - System.DateTimeFormat:TryFormatu[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -16 (-2.62 % of base) : 69255.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:FormattedMessage(int,int,System.String,int,System.String,System.String):this (Tier0)
         -16 (-5.67 % of base) : 15967.dasm - V8.Crypto.BigInteger:invDigit():int:this (Tier0)
         -14 (-0.83 % of base) : 54946.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (Tier1)
         -14 (-4.29 % of base) : 7957.dasm - System.Number:FormatExponent[ushort](byref,System.Globalization.NumberFormatInfo,int,ushort,int,ubyte) (Tier0)
         -12 (-9.68 % of base) : 24634.dasm - <>f__AnonymousType0`2[int,int]:GetHashCode():int:this (Tier0)
         -12 (-0.77 % of base) : 21858.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier0)
         -10 (-1.83 % of base) : 350.dasm - System.Globalization.IcuLocaleData:GetLocaleDataNumericPart(System.String,int):int (Tier0)
          -8 (-1.76 % of base) : 67727.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:ActivityJsonStart(int,int,System.String,System.String):this (Tier0)
          -8 (-3.28 % of base) : 1128.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier0)
          -8 (-12.90 % of base) : 81.dasm - System.Runtime.CompilerServices.MethodTable:get_IsMultiDimensionalArray():ubyte:this (Tier0)
          -8 (-9.52 % of base) : 52581.dasm - System.Version:GetHashCode():int:this (Tier0)

Top method regressions (percentages):
           6 (2.75 % of base) : 638.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Tier0-FullOpts)
          70 (1.92 % of base) : 47573.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
           2 (1.85 % of base) : 9281.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier1)
          24 (0.35 % of base) : 22656.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
           4 (0.28 % of base) : 34398.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (Tier1)
           4 (0.25 % of base) : 22878.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
           4 (0.23 % of base) : 45952.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (Tier1)
           4 (0.20 % of base) : 22811.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

Top method improvements (percentages):
         -28 (-45.16 % of base) : 747.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
          -6 (-42.86 % of base) : 18293.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
         -38 (-33.33 % of base) : 5704.dasm - System.Span`1[ubyte]:Clear():this (Tier0)
          -6 (-25.00 % of base) : 47200.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ModeOf(int):int (Tier0)
         -34 (-20.00 % of base) : 21737.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0)
          -4 (-15.38 % of base) : 66693.dasm - System.Xml.Schema.XsdDateTime:get_ZoneMinute():int:this (Tier0)
         -62 (-13.54 % of base) : 3830.dasm - System.Numerics.Tests.Perf_VectorConvert:.cctor() (Tier0)
          -6 (-13.04 % of base) : 10108.dasm - System.Threading.Tasks.Task:OptionsMethod(int):int (Tier0)
          -8 (-12.90 % of base) : 81.dasm - System.Runtime.CompilerServices.MethodTable:get_IsMultiDimensionalArray():ubyte:this (Tier0)
          -6 (-10.71 % of base) : 66536.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasErrors():ubyte:this (Tier0)
          -4 (-10.53 % of base) : 48948.dasm - System.Reflection.Metadata.Ecma335.TypeOrMethodDefTag:ConvertTypeDefRowIdToTag(System.Reflection.Metadata.TypeDefinitionHandle):uint (Tier0)
          -2 (-10.00 % of base) : 51164.dasm - Microsoft.CodeAnalysis.CSharp.OperatorKindExtensions:OperandTypes(int):int (Tier0)
          -4 (-10.00 % of base) : 1587.dasm - System.Reflection.Metadata.StringHandle:FromOffset(int):System.Reflection.Metadata.StringHandle (Tier0)
         -12 (-9.68 % of base) : 24634.dasm - <>f__AnonymousType0`2[int,int]:GetHashCode():int:this (Tier0)
          -8 (-9.52 % of base) : 52581.dasm - System.Version:GetHashCode():int:this (Tier0)
          -6 (-9.09 % of base) : 5633.dasm - System.Runtime.CompilerServices.MethodTable:get_MultiDimensionalArrayRank():int:this (Tier0)
         -26 (-7.22 % of base) : 63861.dasm - System.DateTimeFormat:TryFormatS[ushort](System.DateTime,System.Span`1[ushort],byref):ubyte (Tier0)
          -4 (-7.14 % of base) : 1841.dasm - System.Runtime.InteropServices.MemoryMarshal:GetArrayDataReference(System.Array):byref (Tier0)
         -26 (-5.99 % of base) : 12115.dasm - System.DateTimeFormat:TryFormatu[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -16 (-5.67 % of base) : 15967.dasm - V8.Crypto.BigInteger:invDigit():int:this (Tier0)


coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321680998 (overridden on cmd)
Total bytes of diff: 321641152 (overridden on cmd)
Total bytes of delta: -39846 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         548 : 463050.dasm (7.71 % of base)
         540 : 463041.dasm (6.69 % of base)
         532 : 273167.dasm (6.36 % of base)
         208 : 1167.dasm (4.96 % of base)
         208 : 315545.dasm (4.98 % of base)
         138 : 299706.dasm (8.56 % of base)
         138 : 474717.dasm (8.60 % of base)
         102 : 333660.dasm (1.11 % of base)
          92 : 365149.dasm (1.78 % of base)
          88 : 475489.dasm (2.61 % of base)
          76 : 479055.dasm (0.72 % of base)
          72 : 473742.dasm (0.98 % of base)
          58 : 365153.dasm (0.90 % of base)
          34 : 424467.dasm (4.89 % of base)
          30 : 366168.dasm (4.46 % of base)
          16 : 477739.dasm (0.73 % of base)
          14 : 333733.dasm (1.95 % of base)
          14 : 398406.dasm (1.90 % of base)
          14 : 425064.dasm (0.70 % of base)
          14 : 425420.dasm (0.56 % of base)

Top file improvements (bytes):
       -1556 : 210728.dasm (-99.11 % of base)
        -458 : 212592.dasm (-25.99 % of base)
        -420 : 192581.dasm (-13.40 % of base)
        -408 : 13979.dasm (-33.72 % of base)
        -392 : 13792.dasm (-44.04 % of base)
        -384 : 12271.dasm (-44.04 % of base)
        -384 : 12769.dasm (-44.04 % of base)
        -360 : 192564.dasm (-12.78 % of base)
        -354 : 190191.dasm (-4.06 % of base)
        -342 : 200687.dasm (-21.24 % of base)
        -320 : 211706.dasm (-11.54 % of base)
        -318 : 212394.dasm (-4.22 % of base)
        -288 : 13650.dasm (-35.64 % of base)
        -288 : 13680.dasm (-34.95 % of base)
        -288 : 212368.dasm (-7.63 % of base)
        -284 : 13867.dasm (-30.02 % of base)
        -284 : 211867.dasm (-9.77 % of base)
        -278 : 17791.dasm (-28.37 % of base)
        -268 : 16083.dasm (-40.73 % of base)
        -268 : 16581.dasm (-40.73 % of base)

81 total files with Code Size differences (51 improved, 30 regressed), 20 unchanged.

Top method regressions (bytes):
         548 (7.71 % of base) : 463050.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.CopiedCorHeaderNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         540 (6.69 % of base) : 463041.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         532 (6.36 % of base) : 273167.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier0-FullOpts)
         208 (4.98 % of base) : 315545.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
         208 (4.96 % of base) : 1167.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
         138 (8.60 % of base) : 474717.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (FullOpts)
         138 (8.56 % of base) : 299706.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier0-FullOpts)
         102 (1.11 % of base) : 333660.dasm - FPBehaviorApp.Program:TestBitValue(uint,System.Nullable`1[double],System.Nullable`1[int]) (FullOpts)
          92 (1.78 % of base) : 365149.dasm - div_r4._div:main():int (FullOpts)
          88 (2.61 % of base) : 475489.dasm - Program:ExplicitlySizedStructTest():ubyte (FullOpts)
          76 (0.72 % of base) : 479055.dasm - Tracing.Tests.ProcessInfoValidation.ProcessInfoValidation:TestEntryPoint() (FullOpts)
          72 (0.98 % of base) : 473742.dasm - SlowPathELTTests.SlowPathELTHelpers:RunTest():int (FullOpts)
          58 (0.90 % of base) : 365153.dasm - div_r8._div:main():int (FullOpts)
          34 (4.89 % of base) : 424467.dasm - ILGEN_0xa691ee4d:Method_0xf329b3e5(long):int (FullOpts)
          30 (4.46 % of base) : 366168.dasm - neg_r4._neg:main():int (FullOpts)
          16 (0.73 % of base) : 477739.dasm - Program:<Main>$(System.String[]):int (FullOpts)
          14 (1.95 % of base) : 333733.dasm - Program:<Main>$(System.String[]):int (FullOpts)
          14 (1.90 % of base) : 398406.dasm - Program:<Main>$(System.String[]):int (FullOpts)
          14 (0.70 % of base) : 425064.dasm - Program:<Main>$(System.String[]):int (FullOpts)
          14 (0.56 % of base) : 425420.dasm - Program:<Main>$(System.String[]):int (FullOpts)

Top method improvements (bytes):
       -1556 (-99.11 % of base) : 210728.dasm - ILGEN_0xca1e3399:Method_0x8f2f764c():uint (Tier0)
        -458 (-25.99 % of base) : 212592.dasm - ILGEN_0x8259d717:Method_0xea14afe6():ushort (Tier0)
        -420 (-13.40 % of base) : 192581.dasm - convr8d:Main():int (Tier0)
        -408 (-33.72 % of base) : 13979.dasm - testout1:Sub_Funclet_384():double (Tier0)
        -392 (-44.04 % of base) : 13792.dasm - testout1:Sub_Funclet_192():double (Tier0)
        -384 (-44.04 % of base) : 12271.dasm - testout1:Sub_Funclet_0():double (Tier0)
        -384 (-44.04 % of base) : 12769.dasm - testout1:Sub_Funclet_0():double (Tier0)
        -360 (-12.78 % of base) : 192564.dasm - convr4a:Main():int (Tier0)
        -354 (-4.06 % of base) : 190191.dasm - ILGEN_0x52ea038a:Method_0xc9efd6b0(uint,int,double,ushort,uint,ubyte,double,ubyte,ushort,byte):ushort (Tier0)
        -342 (-21.24 % of base) : 200687.dasm - ILGEN_0xcd4c3cc0:main():int (Tier0)
        -320 (-11.54 % of base) : 211706.dasm - ILGEN_0x1dd8d826:Method_0x1830b93d(uint):int (Tier0)
        -318 (-4.22 % of base) : 212394.dasm - ILGEN_0x977f9ed2:Method_0xf6b7353b():float (Tier0)
        -288 (-7.63 % of base) : 212368.dasm - ILGEN_0x2193e4b5:Method_0xeffa27b5(ubyte,long,float,float,byte,double,uint,ubyte,short):int (Tier0)
        -288 (-35.64 % of base) : 13650.dasm - testout1:Sub_Funclet_13():double (Tier0)
        -288 (-34.95 % of base) : 13680.dasm - testout1:Sub_Funclet_77():double (Tier0)
        -284 (-9.77 % of base) : 211867.dasm - ILGEN_0xa691ee4d:Method_0xf329b3e5(long):int (Tier0)
        -284 (-30.02 % of base) : 13867.dasm - testout1:Sub_Funclet_269():double (Tier0)
        -278 (-28.37 % of base) : 17791.dasm - testout1:Sub_Funclet_384():float (Tier0)
        -268 (-40.73 % of base) : 16083.dasm - testout1:Sub_Funclet_0():float (Tier0)
        -268 (-40.73 % of base) : 16581.dasm - testout1:Sub_Funclet_0():float (Tier0)

Top method regressions (percentages):
         138 (8.60 % of base) : 474717.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (FullOpts)
         138 (8.56 % of base) : 299706.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier0-FullOpts)
         548 (7.71 % of base) : 463050.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.CopiedCorHeaderNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         540 (6.69 % of base) : 463041.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         532 (6.36 % of base) : 273167.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier0-FullOpts)
         208 (4.98 % of base) : 315545.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
         208 (4.96 % of base) : 1167.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
          34 (4.89 % of base) : 424467.dasm - ILGEN_0xa691ee4d:Method_0xf329b3e5(long):int (FullOpts)
          30 (4.46 % of base) : 366168.dasm - neg_r4._neg:main():int (FullOpts)
          88 (2.61 % of base) : 475489.dasm - Program:ExplicitlySizedStructTest():ubyte (FullOpts)
           2 (2.38 % of base) : 306116.dasm - ILCompiler.DependencyAnalysis.Relocation:PutThumb2Imm16(uint,ushort) (Tier1)
           6 (2.33 % of base) : 1482.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Instrumented Tier1)
           6 (2.27 % of base) : 297665.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
          14 (1.95 % of base) : 333733.dasm - Program:<Main>$(System.String[]):int (FullOpts)
          14 (1.95 % of base) : 383773.dasm - Program:<Main>$(System.String[]):int (FullOpts)
          14 (1.90 % of base) : 398406.dasm - Program:<Main>$(System.String[]):int (FullOpts)
          12 (1.81 % of base) : 337308.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (FullOpts)
          12 (1.81 % of base) : 71752.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (Tier0-FullOpts)
          12 (1.81 % of base) : 351811.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (FullOpts)
          12 (1.81 % of base) : 351846.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (FullOpts)

Top method improvements (percentages):
       -1556 (-99.11 % of base) : 210728.dasm - ILGEN_0xca1e3399:Method_0x8f2f764c():uint (Tier0)
        -138 (-90.79 % of base) : 199149.dasm - _simple:main():int (Tier0)
        -170 (-85.86 % of base) : 210716.dasm - ILGEN_0xdbcacf66:Method_0x8216365b():ulong (Tier0)
         -66 (-82.50 % of base) : 199142.dasm - _simple:main():int (Tier0)
         -62 (-81.58 % of base) : 200682.dasm - ILGEN_0xa7db44c0:main():int (Tier0)
         -60 (-81.08 % of base) : 210770.dasm - s:main():int (Tier0)
         -52 (-78.79 % of base) : 210762.dasm - _n:main():int (Tier0)
         -40 (-74.07 % of base) : 199093.dasm - _simple:main():int (Tier0)
         -38 (-73.08 % of base) : 210363.dasm - ILGEN_0x45f9b5e5:Main():int (Tier0)
         -38 (-73.08 % of base) : 211464.dasm - ILGEN_0x77e9b0c3:Main():int (Tier0)
        -142 (-71.72 % of base) : 210722.dasm - ILGEN_0x71d10697:Method_0x77f6a2f8():ulong (Tier0)
        -156 (-70.91 % of base) : 7402.dasm - _add:main():int (Tier0)
         -34 (-70.83 % of base) : 210448.dasm - ILGEN_0xd3a45436:Main():int (Tier0)
         -32 (-69.57 % of base) : 210473.dasm - ILGEN_0xc766623d:Main():int (Tier0)
         -30 (-68.18 % of base) : 199147.dasm - _simple:main():int (Tier0)
         -34 (-60.71 % of base) : 199110.dasm - _simple:main():int (Tier0)
         -26 (-59.09 % of base) : 294666.dasm - Overflow:test2():long (Tier0)
         -20 (-58.82 % of base) : 210760.dasm - _shl:main():int (Tier0)
         -20 (-58.82 % of base) : 199089.dasm - _simple:main():int (Tier0)
        -156 (-54.17 % of base) : 7397.dasm - _add:main():int (Tier0)


libraries.crossgen2.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34522532 (overridden on cmd)
Total bytes of diff: 34522502 (overridden on cmd)
Total bytes of delta: -30 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           2 : 104108.dasm (2.17 % of base)

Top file improvements (bytes):
         -16 : 59732.dasm (-0.40 % of base)
          -6 : 7289.dasm (-42.86 % of base)
          -4 : 152083.dasm (-20.00 % of base)
          -2 : 120083.dasm (-1.30 % of base)
          -2 : 10469.dasm (-0.24 % of base)
          -2 : 129224.dasm (-2.63 % of base)

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

Top method regressions (bytes):
           2 (2.17 % of base) : 104108.dasm - System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)

Top method improvements (bytes):
         -16 (-0.40 % of base) : 59732.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          -6 (-42.86 % of base) : 7289.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)
          -4 (-20.00 % of base) : 152083.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)
          -2 (-2.63 % of base) : 129224.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          -2 (-0.24 % of base) : 10469.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefinePInvokeMethodCore(System.String,System.String,System.String,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)
          -2 (-1.30 % of base) : 120083.dasm - System.Runtime.Caching.ExpiresBucket:GetFreeExpiresEntry():System.Runtime.Caching.ExpiresEntryRef:this (FullOpts)

Top method regressions (percentages):
           2 (2.17 % of base) : 104108.dasm - System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)

Top method improvements (percentages):
          -6 (-42.86 % of base) : 7289.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)
          -4 (-20.00 % of base) : 152083.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)
          -2 (-2.63 % of base) : 129224.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          -2 (-1.30 % of base) : 120083.dasm - System.Runtime.Caching.ExpiresBucket:GetFreeExpiresEntry():System.Runtime.Caching.ExpiresEntryRef:this (FullOpts)
         -16 (-0.40 % of base) : 59732.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          -2 (-0.24 % of base) : 10469.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefinePInvokeMethodCore(System.String,System.String,System.String,int,int,System.Type,System.Type[],System.Type[],System.Type[],System.Type[][],System.Type[][],int,int):System.Reflection.Emit.MethodBuilder:this (FullOpts)

7 total methods with Code Size differences (6 improved, 1 regressed).


libraries.pmi.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49794764 (overridden on cmd)
Total bytes of diff: 49801938 (overridden on cmd)
Total bytes of delta: 7174 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         828 : 215630.dasm (9.12 % of base)
         652 : 185047.dasm (51.10 % of base)
         590 : 184963.dasm (8.33 % of base)
         530 : 184932.dasm (6.32 % of base)
         466 : 185046.dasm (31.87 % of base)
         358 : 183431.dasm (14.07 % of base)
         338 : 183459.dasm (11.10 % of base)
         322 : 183433.dasm (13.18 % of base)
         318 : 183430.dasm (13.54 % of base)
         246 : 81654.dasm (3.26 % of base)
         216 : 183454.dasm (9.72 % of base)
         216 : 183434.dasm (10.50 % of base)
         214 : 183461.dasm (15.55 % of base)
         214 : 183462.dasm (16.14 % of base)
         208 : 91.dasm (4.96 % of base)
         184 : 183445.dasm (11.26 % of base)
         168 : 120927.dasm (12.52 % of base)
         160 : 183439.dasm (14.31 % of base)
         140 : 177240.dasm (10.59 % of base)
         138 : 183563.dasm (8.60 % of base)

Top file improvements (bytes):
         -72 : 215658.dasm (-3.53 % of base)
         -52 : 81807.dasm (-2.01 % of base)
         -34 : 180793.dasm (-1.81 % of base)
         -34 : 241502.dasm (-1.81 % of base)
         -34 : 161141.dasm (-1.81 % of base)
         -34 : 179402.dasm (-1.81 % of base)
         -34 : 192192.dasm (-1.78 % of base)
         -34 : 194435.dasm (-1.78 % of base)
         -34 : 244486.dasm (-1.81 % of base)
         -18 : 276147.dasm (-3.60 % of base)
         -18 : 185045.dasm (-0.84 % of base)
         -16 : 199328.dasm (-2.73 % of base)
         -16 : 158415.dasm (-4.19 % of base)
         -16 : 215660.dasm (-0.89 % of base)
         -14 : 144319.dasm (-3.54 % of base)
         -14 : 144293.dasm (-3.54 % of base)
         -14 : 177787.dasm (-3.66 % of base)
         -14 : 215657.dasm (-0.73 % of base)
         -14 : 144280.dasm (-3.54 % of base)
         -14 : 144327.dasm (-3.54 % of base)

60 total files with Code Size differences (28 improved, 32 regressed), 20 unchanged.

Top method regressions (bytes):
         828 (9.12 % of base) : 215630.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         652 (51.10 % of base) : 185047.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         590 (8.33 % of base) : 184963.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.CopiedCorHeaderNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         530 (6.32 % of base) : 184932.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         466 (31.87 % of base) : 185046.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         358 (14.07 % of base) : 183431.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:TransformNativeToManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         338 (11.10 % of base) : 183459.dasm - Internal.TypeSystem.Interop.SafeHandleMarshaller:EmitMarshalArgumentManagedToNative():this (FullOpts)
         322 (13.18 % of base) : 183433.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:EmitCleanupManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         318 (13.54 % of base) : 183430.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         246 (3.26 % of base) : 81654.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
         216 (10.50 % of base) : 183434.dasm - Internal.TypeSystem.Interop.BlittableArrayMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         216 (9.72 % of base) : 183454.dasm - Internal.TypeSystem.Interop.UTF8StringMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         214 (15.55 % of base) : 183461.dasm - Internal.TypeSystem.Interop.DelegateMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         214 (16.14 % of base) : 183462.dasm - Internal.TypeSystem.Interop.DelegateMarshaller:TransformNativeToManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         208 (4.96 % of base) : 91.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
         184 (11.26 % of base) : 183445.dasm - Internal.TypeSystem.Interop.UnicodeStringMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         168 (12.52 % of base) : 120927.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:TryEmitComparison(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte):ubyte:this (FullOpts)
         160 (14.31 % of base) : 183439.dasm - Internal.TypeSystem.Interop.BooleanMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         140 (10.59 % of base) : 177240.dasm - Internal.IL.UnsafeAccessors:GenerateAccessorSpecificFailure(byref,System.String,ubyte):Internal.IL.MethodIL (FullOpts)
         138 (8.60 % of base) : 183563.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (FullOpts)

Top method improvements (bytes):
         -72 (-3.53 % of base) : 215658.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -52 (-2.01 % of base) : 81807.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int,int):this (FullOpts)
         -34 (-1.81 % of base) : 180793.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.81 % of base) : 241502.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.81 % of base) : 161141.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.81 % of base) : 179402.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.78 % of base) : 192192.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.78 % of base) : 194435.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.81 % of base) : 244486.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -18 (-0.84 % of base) : 185045.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         -18 (-3.60 % of base) : 276147.dasm - System.Collections.Specialized.BitVector32+Section:ToString(System.Collections.Specialized.BitVector32+Section):System.String (FullOpts)
         -16 (-0.89 % of base) : 215660.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLoadArgumentOpcode(int):this (FullOpts)
         -16 (-2.73 % of base) : 199328.dasm - System.Linq.ParallelEnumerable:Aggregate[System.Numerics.Vector`1[float]](System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]],System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float] (FullOpts)
         -16 (-4.19 % of base) : 158415.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator+RowCounts:ToString():System.String:this (FullOpts)
         -14 (-3.66 % of base) : 177787.dasm - Internal.TypeSystem.TargetDetails:ToString():System.String:this (FullOpts)
         -14 (-0.73 % of base) : 215657.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -14 (-3.54 % of base) : 144319.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+OutputAvailableAsyncTarget`1[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -14 (-3.54 % of base) : 144327.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+OutputAvailableAsyncTarget`1[ubyte]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -14 (-3.54 % of base) : 144280.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ReceiveTarget`1[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -14 (-3.54 % of base) : 144293.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ReceiveTarget`1[ubyte]:get_DebuggerDisplayContent():System.Object:this (FullOpts)

Top method regressions (percentages):
         652 (51.10 % of base) : 185047.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         102 (31.87 % of base) : 177254.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int,Internal.IL.Stubs.ILCodeLabel):this (FullOpts)
         466 (31.87 % of base) : 185046.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         104 (18.18 % of base) : 177158.dasm - Internal.IL.HelperExtensions:EmitCallThrowHelper(Internal.IL.Stubs.ILCodeStream,Internal.IL.Stubs.ILEmitter,Internal.TypeSystem.MethodDesc) (FullOpts)
         104 (18.18 % of base) : 183532.dasm - Internal.IL.HelperExtensions:EmitCallThrowHelper(Internal.IL.Stubs.ILCodeStream,Internal.IL.Stubs.ILEmitter,Internal.TypeSystem.MethodDesc) (FullOpts)
         108 (17.36 % of base) : 183450.dasm - Internal.TypeSystem.Interop.AnsiStringMarshaller:EmitCleanupManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         108 (17.09 % of base) : 183447.dasm - Internal.TypeSystem.Interop.UnicodeStringMarshaller:EmitCleanupManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         214 (16.14 % of base) : 183462.dasm - Internal.TypeSystem.Interop.DelegateMarshaller:TransformNativeToManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         214 (15.55 % of base) : 183461.dasm - Internal.TypeSystem.Interop.DelegateMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         160 (14.31 % of base) : 183439.dasm - Internal.TypeSystem.Interop.BooleanMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         358 (14.07 % of base) : 183431.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:TransformNativeToManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         318 (13.54 % of base) : 183430.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         322 (13.18 % of base) : 183433.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:EmitCleanupManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         168 (12.52 % of base) : 120927.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:TryEmitComparison(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte):ubyte:this (FullOpts)
         184 (11.26 % of base) : 183445.dasm - Internal.TypeSystem.Interop.UnicodeStringMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         338 (11.10 % of base) : 183459.dasm - Internal.TypeSystem.Interop.SafeHandleMarshaller:EmitMarshalArgumentManagedToNative():this (FullOpts)
         100 (11.09 % of base) : 177241.dasm - Internal.IL.UnsafeAccessors:GenerateAccessorBadImageFailure(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (FullOpts)
         140 (10.59 % of base) : 177240.dasm - Internal.IL.UnsafeAccessors:GenerateAccessorSpecificFailure(byref,System.String,ubyte):Internal.IL.MethodIL (FullOpts)
         216 (10.50 % of base) : 183434.dasm - Internal.TypeSystem.Interop.BlittableArrayMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         106 (9.98 % of base) : 183429.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:AllocManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)

Top method improvements (percentages):
          -4 (-20.00 % of base) : 228976.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:get_HasOverflow():ubyte:this (FullOpts)
          -2 (-14.29 % of base) : 21959.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:ResetHighWatermark():this (FullOpts)
         -16 (-4.19 % of base) : 158415.dasm - System.Reflection.Metadata.Ecma335.MetadataAggregator+RowCounts:ToString():System.String:this (FullOpts)
         -14 (-3.66 % of base) : 177787.dasm - Internal.TypeSystem.TargetDetails:ToString():System.String:this (FullOpts)
         -18 (-3.60 % of base) : 276147.dasm - System.Collections.Specialized.BitVector32+Section:ToString(System.Collections.Specialized.BitVector32+Section):System.String (FullOpts)
         -14 (-3.54 % of base) : 144319.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+OutputAvailableAsyncTarget`1[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -14 (-3.54 % of base) : 144327.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+OutputAvailableAsyncTarget`1[ubyte]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -14 (-3.54 % of base) : 144280.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ReceiveTarget`1[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -14 (-3.54 % of base) : 144293.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ReceiveTarget`1[ubyte]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -72 (-3.53 % of base) : 215658.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -12 (-3.19 % of base) : 145551.dasm - System.Threading.Tasks.Dataflow.Internal.BatchedJoinBlockTarget`1[System.__Canon]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
         -12 (-3.19 % of base) : 145559.dasm - System.Threading.Tasks.Dataflow.Internal.BatchedJoinBlockTarget`1[ubyte]:get_DebuggerDisplayContent():System.Object:this (FullOpts)
          -4 (-2.86 % of base) : 228987.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection:GetEnumerator():System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection+Enumerator:this (FullOpts)
         -16 (-2.73 % of base) : 199328.dasm - System.Linq.ParallelEnumerable:Aggregate[System.Numerics.Vector`1[float]](System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]],System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float] (FullOpts)
         -52 (-2.01 % of base) : 81807.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int,int):this (FullOpts)
          -2 (-1.85 % of base) : 243766.dasm - System.Runtime.Caching.ExpiresBucket:GetFreeExpiresEntry():System.Runtime.Caching.ExpiresEntryRef:this (FullOpts)
          -2 (-1.82 % of base) : 208233.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
         -34 (-1.81 % of base) : 180793.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.81 % of base) : 241502.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.81 % of base) : 161141.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 243721382 (overridden on cmd)
Total bytes of diff: 243648834 (overridden on cmd)
Total bytes of delta: -72548 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         208 : 762.dasm (4.96 % of base)
         188 : 178719.dasm (5.58 % of base)
         144 : 177525.dasm (1.45 % of base)
         106 : 383654.dasm (1.60 % of base)
          70 : 152966.dasm (1.93 % of base)
          70 : 139466.dasm (1.88 % of base)
          58 : 669415.dasm (2.43 % of base)
          26 : 84752.dasm (0.33 % of base)
          24 : 656685.dasm (0.36 % of base)
          20 : 671003.dasm (1.28 % of base)
          16 : 675173.dasm (0.47 % of base)
          14 : 408218.dasm (0.32 % of base)
          14 : 666752.dasm (1.08 % of base)
          10 : 408792.dasm (0.78 % of base)
          10 : 382087.dasm (0.75 % of base)
           8 : 171532.dasm (0.34 % of base)
           8 : 327033.dasm (1.42 % of base)
           8 : 543688.dasm (0.62 % of base)
           6 : 55772.dasm (0.61 % of base)
           6 : 55773.dasm (0.58 % of base)

Top file improvements (bytes):
      -65536 : 464049.dasm (-39.99 % of base)
       -4096 : 463975.dasm (-39.91 % of base)
        -342 : 464088.dasm (-96.07 % of base)
        -128 : 463967.dasm (-37.43 % of base)
        -128 : 70138.dasm (-1.72 % of base)
         -72 : 424347.dasm (-5.37 % of base)
         -62 : 667909.dasm (-4.47 % of base)
         -52 : 404908.dasm (-5.57 % of base)
         -52 : 545941.dasm (-4.68 % of base)
         -52 : 547222.dasm (-4.53 % of base)
         -50 : 667761.dasm (-1.47 % of base)
         -48 : 361540.dasm (-0.99 % of base)
         -48 : 361984.dasm (-18.75 % of base)
         -40 : 83610.dasm (-5.81 % of base)
         -40 : 324674.dasm (-5.73 % of base)
         -40 : 83545.dasm (-14.39 % of base)
         -40 : 90506.dasm (-14.39 % of base)
         -40 : 90517.dasm (-14.39 % of base)
         -40 : 91251.dasm (-5.81 % of base)
         -40 : 324602.dasm (-14.39 % of base)

73 total files with Code Size differences (48 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
         208 (4.96 % of base) : 762.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
         188 (5.58 % of base) : 178719.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOrPatternForIsOperator():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode:this (Tier1)
         144 (1.45 % of base) : 177525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
         106 (1.60 % of base) : 383654.dasm - System.Net.Primitives.Functional.Tests.IPEndPointParsing:Parse_InvalidPort_Throws(System.String,ubyte):this (Tier0-FullOpts)
          70 (1.93 % of base) : 152966.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
          70 (1.88 % of base) : 139466.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
          58 (2.43 % of base) : 669415.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (Tier1)
          26 (0.33 % of base) : 84752.dasm - Microsoft.Interop.LibraryImportGenerator:CreateTargetDllImportAsLocalStatement(Microsoft.Interop.PInvokeStubCodeGenerator,Microsoft.Interop.LibraryImportGeneratorOptions,Microsoft.Interop.LibraryImportData,System.String,System.String):Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax (Tier1)
          24 (0.36 % of base) : 656685.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
          20 (1.28 % of base) : 671003.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitShortCircuitingOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte,ubyte,ubyte):this (Tier1)
          16 (0.47 % of base) : 675173.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOrPatternForIsOperator():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode:this (Tier1)
          14 (1.08 % of base) : 666752.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
          14 (0.32 % of base) : 408218.dasm - System.Net.WebSockets.Tests.WebSocketDeflateTests+<Duplex>d__13:MoveNext():this (Tier0-FullOpts)
          10 (0.75 % of base) : 382087.dasm - System.Net.NetworkInformation.Tests.PingTest:PingResultValidator(System.Net.NetworkInformation.PingReply,System.Net.IPAddress[],Xunit.Abstractions.ITestOutputHelper) (Tier0-FullOpts)
          10 (0.78 % of base) : 408792.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[byte]:<IndexOfMin_AllLengths>b__165_0(int):this (Tier0-FullOpts)
           8 (0.34 % of base) : 171532.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.SyntaxTokenList,int,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
           8 (1.42 % of base) : 327033.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (Tier0-FullOpts)
           8 (0.62 % of base) : 543688.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaSignatureFormatTests+<LocalGenerateTestKeys>d__4:MoveNext():ubyte:this (Tier1)
           6 (0.61 % of base) : 55772.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ReportDiagnosticsForSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
           6 (0.58 % of base) : 55773.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ReportDiagnosticsForUnsafeSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)

Top method improvements (bytes):
      -65536 (-39.99 % of base) : 464049.dasm - TestType:meth1():int (Tier0)
       -4096 (-39.91 % of base) : 463975.dasm - TestType:meth1():int (Tier0)
        -342 (-96.07 % of base) : 464088.dasm - TestType:meth1():int (Tier0)
        -128 (-1.72 % of base) : 70138.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
        -128 (-37.43 % of base) : 463967.dasm - TestType:meth1():int (Tier0)
         -72 (-5.37 % of base) : 424347.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4FieldOffsetTest():this (Tier0)
         -62 (-4.47 % of base) : 667909.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (Tier1)
         -52 (-5.57 % of base) : 404908.dasm - System.Net.NetEventSource:WriteEvent(int,System.String,int,int,int,int,int,int,int):this (Tier0)
         -52 (-4.53 % of base) : 547222.dasm - System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests:VerifyExpectedRequest(System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest,ubyte) (Instrumented Tier0)
         -52 (-4.68 % of base) : 545941.dasm - System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests:VerifyExpectedRequest(System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest,ubyte) (Tier0)
         -50 (-1.47 % of base) : 667761.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldLoad(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,ubyte):this (Tier1)
         -48 (-0.99 % of base) : 361540.dasm - System.SpanTests.ReadOnlySpanTests:.cctor() (Tier0)
         -48 (-18.75 % of base) : 361984.dasm - System.SpanTests.SpanTests:.cctor() (Tier0)
         -40 (-14.39 % of base) : 90506.dasm - System.IO.Hashing.XxHashShared:InitializeAccumulators(uint) (Instrumented Tier0)
         -40 (-14.39 % of base) : 90517.dasm - System.IO.Hashing.XxHashShared:InitializeAccumulators(uint) (Instrumented Tier0)
         -40 (-14.39 % of base) : 83545.dasm - System.IO.Hashing.XxHashShared:InitializeAccumulators(uint) (Tier0)
         -40 (-14.39 % of base) : 324602.dasm - System.IO.Hashing.XxHashShared:InitializeAccumulators(uint) (Tier0)
         -40 (-5.81 % of base) : 91251.dasm - System.IO.Hashing.XxHashShared:MergeAccumulators(uint,uint,ulong):ulong (Instrumented Tier0)
         -40 (-5.81 % of base) : 83610.dasm - System.IO.Hashing.XxHashShared:MergeAccumulators(uint,uint,ulong):ulong (Tier0)
         -40 (-5.73 % of base) : 324674.dasm - System.IO.Hashing.XxHashShared:MergeAccumulators(uint,uint,ulong):ulong (Tier0)

Top method regressions (percentages):
           2 (11.11 % of base) : 278532.dasm - System.Drawing.Point:LowInt16(int):short (Tier0)
           2 (10.00 % of base) : 278533.dasm - System.Drawing.Point:HighInt16(int):short (Tier0)
         188 (5.58 % of base) : 178719.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOrPatternForIsOperator():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode:this (Tier1)
         208 (4.96 % of base) : 762.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
           4 (4.44 % of base) : 278530.dasm - System.Drawing.PrimitivesTests.PointTests:SingleIntConstructorTest(int):this (Tier0)
          58 (2.43 % of base) : 669415.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (Tier1)
           6 (2.33 % of base) : 966.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (Instrumented Tier1)
          70 (1.93 % of base) : 152966.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
          70 (1.88 % of base) : 139466.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
         106 (1.60 % of base) : 383654.dasm - System.Net.Primitives.Functional.Tests.IPEndPointParsing:Parse_InvalidPort_Throws(System.String,ubyte):this (Tier0-FullOpts)
         144 (1.45 % of base) : 177525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
           8 (1.42 % of base) : 327033.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (Tier0-FullOpts)
          20 (1.28 % of base) : 671003.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitShortCircuitingOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte,ubyte,ubyte):this (Tier1)
          14 (1.08 % of base) : 666752.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
          10 (0.78 % of base) : 408792.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[byte]:<IndexOfMin_AllLengths>b__165_0(int):this (Tier0-FullOpts)
           4 (0.75 % of base) : 338745.dasm - System.Threading.ManualResetEventSlim:Set(ubyte):this (Tier1)
          10 (0.75 % of base) : 382087.dasm - System.Net.NetworkInformation.Tests.PingTest:PingResultValidator(System.Net.NetworkInformation.PingReply,System.Net.IPAddress[],Xunit.Abstractions.ITestOutputHelper) (Tier0-FullOpts)
           8 (0.62 % of base) : 543688.dasm - System.Security.Cryptography.EcDsa.Tests.ECDsaSignatureFormatTests+<LocalGenerateTestKeys>d__4:MoveNext():ubyte:this (Tier1)
           6 (0.61 % of base) : 55772.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ReportDiagnosticsForSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
           6 (0.58 % of base) : 55773.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ReportDiagnosticsForUnsafeSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)

Top method improvements (percentages):
        -342 (-96.07 % of base) : 464088.dasm - TestType:meth1():int (Tier0)
         -14 (-50.00 % of base) : 72426.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:get_BufferSize():int (Tier0)
         -14 (-50.00 % of base) : 464087.dasm - TestType:meth1():int (Tier0)
         -28 (-45.16 % of base) : 3428.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
      -65536 (-39.99 % of base) : 464049.dasm - TestType:meth1():int (Tier0)
       -4096 (-39.91 % of base) : 463975.dasm - TestType:meth1():int (Tier0)
        -128 (-37.43 % of base) : 463967.dasm - TestType:meth1():int (Tier0)
         -14 (-36.84 % of base) : 3351.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:.cctor() (Tier0)
         -14 (-36.84 % of base) : 72343.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[SharedTypes.BoolStruct,SharedTypes.BoolStructMarshaller+BoolStructNative]:.cctor() (Tier0)
         -38 (-32.76 % of base) : 362937.dasm - System.Span`1[System.TestHelpers+TestValueTypeWithReference]:Clear():this (Tier0)
         -12 (-31.58 % of base) : 423406.dasm - System.Numerics.Vector`1[ushort]:get_Count():int (Tier0)
          -6 (-30.00 % of base) : 464085.dasm - TestType:meth1():int (Tier0)
          -6 (-25.00 % of base) : 17756.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ModeOf(int):int (Instrumented Tier0)
          -6 (-25.00 % of base) : 10461.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ModeOf(int):int (Tier0)
         -34 (-21.79 % of base) : 388746.dasm - System.Span`1[System.Security.Cryptography.X509Certificates.OpenSslX509ChainProcessor+ErrorCollection]:Clear():this (Instrumented Tier0)
         -32 (-18.82 % of base) : 83529.dasm - System.Span`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]:Clear():this (Tier0)
         -48 (-18.75 % of base) : 361984.dasm - System.SpanTests.SpanTests:.cctor() (Tier0)
          -4 (-18.18 % of base) : 477403.dasm - System.Runtime.Caching.ExpiresEntryRef:get_Index():int:this (Instrumented Tier0)
          -4 (-18.18 % of base) : 476868.dasm - System.Runtime.Caching.ExpiresEntryRef:get_Index():int:this (Tier0)
          -8 (-18.18 % of base) : 462508.dasm - System.Xml.XmlEncodedRawTextWriter:RawEndCData(uint):uint (Tier0)


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 94387740 (overridden on cmd)
Total bytes of diff: 94322146 (overridden on cmd)
Total bytes of delta: -65594 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         630 : 56702.dasm (7.98 % of base)
         208 : 233.dasm (4.96 % of base)
         102 : 195435.dasm (8.95 % of base)
         100 : 97288.dasm (4.47 % of base)
          58 : 93040.dasm (0.74 % of base)
          52 : 183418.dasm (3.43 % of base)
          36 : 46532.dasm (0.86 % of base)
          34 : 270024.dasm (0.77 % of base)
          32 : 160756.dasm (2.33 % of base)
          32 : 160830.dasm (2.33 % of base)
          24 : 269178.dasm (0.35 % of base)
          22 : 269894.dasm (0.84 % of base)
          22 : 56474.dasm (0.58 % of base)
          22 : 269887.dasm (0.67 % of base)
          20 : 56792.dasm (1.04 % of base)
          14 : 158488.dasm (0.32 % of base)
          14 : 83571.dasm (2.93 % of base)
          12 : 83804.dasm (1.40 % of base)
          10 : 151705.dasm (0.75 % of base)
           8 : 203397.dasm (0.51 % of base)

Top file improvements (bytes):
      -65536 : 179024.dasm (-39.99 % of base)
        -878 : 190361.dasm (-35.98 % of base)
        -146 : 183512.dasm (-5.91 % of base)
         -34 : 151091.dasm (-1.74 % of base)
         -34 : 151926.dasm (-1.74 % of base)
         -30 : 54909.dasm (-1.72 % of base)
         -22 : 53458.dasm (-2.65 % of base)
         -18 : 142532.dasm (-2.37 % of base)
         -18 : 142839.dasm (-2.37 % of base)
         -18 : 72768.dasm (-3.60 % of base)
         -16 : 54984.dasm (-1.04 % of base)
         -14 : 137848.dasm (-4.02 % of base)
         -14 : 42081.dasm (-3.80 % of base)
         -14 : 47875.dasm (-3.80 % of base)
         -14 : 137853.dasm (-4.02 % of base)
         -14 : 54937.dasm (-0.83 % of base)
         -12 : 46661.dasm (-4.20 % of base)
         -12 : 51797.dasm (-4.20 % of base)
         -12 : 160801.dasm (-2.45 % of base)
         -12 : 57525.dasm (-3.16 % of base)

58 total files with Code Size differences (36 improved, 22 regressed), 20 unchanged.

Top method regressions (bytes):
         630 (7.98 % of base) : 56702.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         208 (4.96 % of base) : 233.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
         102 (8.95 % of base) : 195435.dasm - DataContractJsonSerializerTests:DCJS_TypeWithOptionalField() (FullOpts)
         100 (4.47 % of base) : 97288.dasm - System.Diagnostics.Tests.DiagnosticSourceEventSourceBridgeTests+<>c:<TestDefaultActivitySource>b__3_0(System.String,System.String,System.String):this (FullOpts)
          58 (0.74 % of base) : 93040.dasm - System.Data.Tests.SqlTypes.SqlDateTimeTest:SqlStringToSqlDateTime():this (FullOpts)
          52 (3.43 % of base) : 183418.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests:SignatureTypeEncoder_FunctionPointer():this (FullOpts)
          36 (0.86 % of base) : 46532.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
          34 (0.77 % of base) : 270024.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitArrayElementLoad(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess,ubyte):this (FullOpts)
          32 (2.33 % of base) : 160830.dasm - System.Numerics.Tests.QuaternionTests:QuaternionLerpTest():this (FullOpts)
          32 (2.33 % of base) : 160756.dasm - System.Numerics.Tests.QuaternionTests:QuaternionSlerpTest():this (FullOpts)
          24 (0.35 % of base) : 269178.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
          22 (0.58 % of base) : 56474.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
          22 (0.84 % of base) : 269894.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitIndirectStore(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          22 (0.67 % of base) : 269887.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoadIndirect(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          20 (1.04 % of base) : 56792.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitDefaultValue(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          14 (2.93 % of base) : 83571.dasm - System.ComponentModel.TypeConverterTests.SizeConverterTests:ConvertToInvariantString(int,int):this (FullOpts)
          14 (0.32 % of base) : 158488.dasm - System.Net.WebSockets.Tests.WebSocketDeflateTests+<Duplex>d__13:MoveNext():this (FullOpts)
          12 (1.40 % of base) : 83804.dasm - System.ComponentModel.TypeConverterTests.RectangleConverterTests:ConvertFrom(int,int,int,int):this (FullOpts)
          10 (0.75 % of base) : 151705.dasm - System.Net.NetworkInformation.Tests.PingTest:PingResultValidator(System.Net.NetworkInformation.PingReply,System.Net.IPAddress[],Xunit.Abstractions.ITestOutputHelper) (FullOpts)
           8 (1.44 % of base) : 127319.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)

Top method improvements (bytes):
      -65536 (-39.99 % of base) : 179024.dasm - TestType:meth1():int (Tier0-MinOpts)
        -878 (-35.98 % of base) : 190361.dasm - System.Runtime.InteropServices.Tests.StructureToPtrTests:StructureToPtr_NonBlittableStruct_WithBlittableFixedBuffer_Success():this (FullOpts)
        -146 (-5.91 % of base) : 183512.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests:CustomAttributeElementTypeEncoder_PrimitiveType():this (FullOpts)
         -34 (-1.74 % of base) : 151091.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -34 (-1.74 % of base) : 151926.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -30 (-1.72 % of base) : 54909.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -22 (-2.65 % of base) : 53458.dasm - Microsoft.Extensions.Logging.Test.FormattedLogValuesTest:CachedFormattersAreCapped():this (FullOpts)
         -18 (-3.60 % of base) : 72768.dasm - System.Collections.Specialized.BitVector32+Section:ToString(System.Collections.Specialized.BitVector32+Section):System.String (FullOpts)
         -18 (-2.37 % of base) : 142839.dasm - System.TestHelpers:AssertThrows[System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.TestHelpers+AssertThrowsActionReadOnly`1[System.__Canon]) (FullOpts)
         -18 (-2.37 % of base) : 142532.dasm - System.TestHelpers:AssertThrows[System.__Canon,ubyte](System.Span`1[ubyte],System.TestHelpers+AssertThrowsAction`1[ubyte]) (FullOpts)
         -16 (-1.04 % of base) : 54984.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLoadArgumentOpcode(int):this (FullOpts)
         -14 (-0.83 % of base) : 54937.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -14 (-3.80 % of base) : 42081.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
         -14 (-3.80 % of base) : 47875.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
         -14 (-4.02 % of base) : 137848.dasm - System.Linq.Tests.AggregateByTests+<>c:<AggregateBy_TestData>b__9_30(int):System.String:this (FullOpts)
         -14 (-4.02 % of base) : 137853.dasm - System.Linq.Tests.AggregateByTests+<>c:<AggregateBy_TestData>b__9_33(int):System.String:this (FullOpts)
         -12 (-4.20 % of base) : 46661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:MakeModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):uint:this (FullOpts)
         -12 (-4.20 % of base) : 51797.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:MakeModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):uint:this (FullOpts)
         -12 (-3.16 % of base) : 57525.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_Compare_Lesser(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer):this (FullOpts)
         -12 (-2.45 % of base) : 160801.dasm - System.Numerics.Tests.QuaternionTests:QuaternionNormalizeTest1():this (FullOpts)

Top method regressions (percentages):
         102 (8.95 % of base) : 195435.dasm - DataContractJsonSerializerTests:DCJS_TypeWithOptionalField() (FullOpts)
         630 (7.98 % of base) : 56702.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         208 (4.96 % of base) : 233.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
         100 (4.47 % of base) : 97288.dasm - System.Diagnostics.Tests.DiagnosticSourceEventSourceBridgeTests+<>c:<TestDefaultActivitySource>b__3_0(System.String,System.String,System.String):this (FullOpts)
          52 (3.43 % of base) : 183418.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests:SignatureTypeEncoder_FunctionPointer():this (FullOpts)
           2 (2.94 % of base) : 183648.dasm - System.Reflection.Metadata.PortablePdbVersions:Format(ushort):System.String (FullOpts)
          14 (2.93 % of base) : 83571.dasm - System.ComponentModel.TypeConverterTests.SizeConverterTests:ConvertToInvariantString(int,int):this (FullOpts)
          32 (2.33 % of base) : 160830.dasm - System.Numerics.Tests.QuaternionTests:QuaternionLerpTest():this (FullOpts)
          32 (2.33 % of base) : 160756.dasm - System.Numerics.Tests.QuaternionTests:QuaternionSlerpTest():this (FullOpts)
           8 (1.44 % of base) : 127319.dasm - System.IO.Packaging.Tests.ReflectionTests:<Verify_GeneralPurposeBitFlag_NotSetTo_Unicode>g__CheckCharacters|0_0(System.String) (FullOpts)
          12 (1.40 % of base) : 83804.dasm - System.ComponentModel.TypeConverterTests.RectangleConverterTests:ConvertFrom(int,int,int,int):this (FullOpts)
          20 (1.04 % of base) : 56792.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitDefaultValue(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          36 (0.86 % of base) : 46532.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
          22 (0.84 % of base) : 269894.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitIndirectStore(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          34 (0.77 % of base) : 270024.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitArrayElementLoad(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess,ubyte):this (FullOpts)
          10 (0.75 % of base) : 151705.dasm - System.Net.NetworkInformation.Tests.PingTest:PingResultValidator(System.Net.NetworkInformation.PingReply,System.Net.IPAddress[],Xunit.Abstractions.ITestOutputHelper) (FullOpts)
          58 (0.74 % of base) : 93040.dasm - System.Data.Tests.SqlTypes.SqlDateTimeTest:SqlStringToSqlDateTime():this (FullOpts)
          22 (0.67 % of base) : 269887.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoadIndirect(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          22 (0.58 % of base) : 56474.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
           8 (0.51 % of base) : 203397.dasm - System.Tests.StringTests:ZeroLengthContains_StringComparison() (FullOpts)

Top method improvements (percentages):
      -65536 (-39.99 % of base) : 179024.dasm - TestType:meth1():int (Tier0-MinOpts)
        -878 (-35.98 % of base) : 190361.dasm - System.Runtime.InteropServices.Tests.StructureToPtrTests:StructureToPtr_NonBlittableStruct_WithBlittableFixedBuffer_Success():this (FullOpts)
          -6 (-20.00 % of base) : 232301.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:TryEncodeUnicodeScalar_DisallowedSupplementaryChar():this (FullOpts)
          -4 (-18.18 % of base) : 214431.dasm - System.Tests.DateTimeTests+<>c:<Parse_InvalidArguments_Throws>b__134_2():System.Object:this (FullOpts)
          -4 (-18.18 % of base) : 214333.dasm - System.Tests.DateTimeTests+<>c:<ParseExact_InvalidArguments_Throws>b__136_1():System.Object:this (FullOpts)
          -4 (-18.18 % of base) : 214339.dasm - System.Tests.DateTimeTests+<>c:<ParseExact_InvalidArguments_Throws>b__136_7():System.Object:this (FullOpts)
          -4 (-18.18 % of base) : 202920.dasm - System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__165_1():System.Object:this (FullOpts)
          -4 (-18.18 % of base) : 202921.dasm - System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__165_2():System.Object:this (FullOpts)
          -4 (-16.67 % of base) : 202998.dasm - System.Tests.StringTests+<>c:<IndexOf_Invalid>b__117_12():System.Object:this (FullOpts)
          -4 (-16.67 % of base) : 203009.dasm - System.Tests.StringTests+<>c:<IndexOf_Invalid>b__117_24():System.Object:this (FullOpts)
          -4 (-16.67 % of base) : 203011.dasm - System.Tests.StringTests+<>c:<IndexOf_Invalid>b__117_26():System.Object:this (FullOpts)
          -4 (-16.67 % of base) : 202992.dasm - System.Tests.StringTests+<>c:<IndexOf_Invalid>b__117_6():System.Object:this (FullOpts)
          -4 (-8.70 % of base) : 183513.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass40_0:<CustomAttributeElementTypeEncoder_PrimitiveType>b__0():this (FullOpts)
        -146 (-5.91 % of base) : 183512.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests:CustomAttributeElementTypeEncoder_PrimitiveType():this (FullOpts)
         -12 (-4.20 % of base) : 46661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:MakeModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):uint:this (FullOpts)
         -12 (-4.20 % of base) : 51797.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:MakeModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):uint:this (FullOpts)
         -14 (-4.02 % of base) : 137848.dasm - System.Linq.Tests.AggregateByTests+<>c:<AggregateBy_TestData>b__9_30(int):System.String:this (FullOpts)
         -14 (-4.02 % of base) : 137853.dasm - System.Linq.Tests.AggregateByTests+<>c:<AggregateBy_TestData>b__9_33(int):System.String:this (FullOpts)
         -14 (-3.80 % of base) : 42081.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)
         -14 (-3.80 % of base) : 47875.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M3Struct:ToString():System.String:this (FullOpts)


realworld.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13603552 (overridden on cmd)
Total bytes of diff: 13604540 (overridden on cmd)
Total bytes of delta: 988 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         630 : 31657.dasm (7.98 % of base)
         198 : 32215.dasm (2.89 % of base)
          70 : 21407.dasm (1.94 % of base)
          52 : 31992.dasm (1.27 % of base)
          34 : 31658.dasm (0.77 % of base)
          22 : 31687.dasm (0.84 % of base)
          22 : 31690.dasm (0.67 % of base)
          22 : 31386.dasm (0.57 % of base)
          20 : 31993.dasm (1.04 % of base)
           8 : 31643.dasm (0.22 % of base)
           6 : 2101.dasm (3.57 % of base)
           6 : 271.dasm (2.75 % of base)
           6 : 31535.dasm (0.30 % of base)
           6 : 31789.dasm (0.42 % of base)
           2 : 432.dasm (0.86 % of base)

Top file improvements (bytes):
         -30 : 31400.dasm (-1.72 % of base)
         -18 : 16947.dasm (-2.34 % of base)
         -16 : 31392.dasm (-1.04 % of base)
         -14 : 31404.dasm (-0.83 % of base)
          -8 : 16948.dasm (-1.21 % of base)
          -6 : 115.dasm (-0.37 % of base)
          -6 : 2647.dasm (-0.37 % of base)
          -6 : 16241.dasm (-0.37 % of base)
          -6 : 16085.dasm (-0.37 % of base)
          -2 : 16939.dasm (-0.16 % of base)
          -2 : 21203.dasm (-1.82 % of base)
          -2 : 19447.dasm (-0.49 % of base)

27 total files with Code Size differences (12 improved, 15 regressed), 13 unchanged.

Top method regressions (bytes):
         630 (7.98 % of base) : 31657.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         198 (2.89 % of base) : 32215.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
          70 (1.94 % of base) : 21407.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
          52 (1.27 % of base) : 31992.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoweredConditionalAccessExpression(Microsoft.CodeAnalysis.CSharp.BoundLoweredConditionalAccess,ubyte):this (FullOpts)
          34 (0.77 % of base) : 31658.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitArrayElementLoad(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess,ubyte):this (FullOpts)
          22 (0.57 % of base) : 31386.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
          22 (0.84 % of base) : 31687.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitIndirectStore(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          22 (0.67 % of base) : 31690.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoadIndirect(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          20 (1.04 % of base) : 31993.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitDefaultValue(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
           8 (0.22 % of base) : 31643.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryOperatorInstruction(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):this (FullOpts)
           6 (3.57 % of base) : 2101.dasm - BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)
           6 (0.30 % of base) : 31535.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldLoadNoIndirection(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,ubyte):this (FullOpts)
           6 (0.42 % of base) : 31789.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingOperator,ubyte):this (FullOpts)
           6 (2.75 % of base) : 271.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
           2 (0.86 % of base) : 432.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)

Top method improvements (bytes):
         -30 (-1.72 % of base) : 31400.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -18 (-2.34 % of base) : 16947.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:WriteTree(SixLabors.ImageSharp.Compression.Zlib.DeflaterPendingBuffer,SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree):this (FullOpts)
         -16 (-1.04 % of base) : 31392.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLoadArgumentOpcode(int):this (FullOpts)
         -14 (-0.83 % of base) : 31404.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
          -8 (-1.21 % of base) : 16948.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman:CompressBlock():this (FullOpts)
          -6 (-0.37 % of base) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 2647.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 16241.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 16085.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -2 (-1.82 % of base) : 21203.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          -2 (-0.49 % of base) : 19447.dasm - Microsoft.ML.Transforms.RowShufflingTransformer:GetRowCursorCore(System.Collections.Generic.IEnumerable`1[Microsoft.ML.DataViewSchema+Column],System.Random):Microsoft.ML.DataViewRowCursor:this (FullOpts)
          -2 (-0.16 % of base) : 16939.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)

Top method regressions (percentages):
         630 (7.98 % of base) : 31657.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
           6 (3.57 % of base) : 2101.dasm - BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)
         198 (2.89 % of base) : 32215.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
           6 (2.75 % of base) : 271.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Container[System.__Canon,System.__Canon]:.ctor(System.Runtime.CompilerServices.ConditionalWeakTable`2[System.__Canon,System.__Canon]):this (FullOpts)
          70 (1.94 % of base) : 21407.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (FullOpts)
          52 (1.27 % of base) : 31992.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoweredConditionalAccessExpression(Microsoft.CodeAnalysis.CSharp.BoundLoweredConditionalAccess,ubyte):this (FullOpts)
          20 (1.04 % of base) : 31993.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitDefaultValue(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
           2 (0.86 % of base) : 432.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (FullOpts)
          22 (0.84 % of base) : 31687.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitIndirectStore(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          34 (0.77 % of base) : 31658.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitArrayElementLoad(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess,ubyte):this (FullOpts)
          22 (0.67 % of base) : 31690.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoadIndirect(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
          22 (0.57 % of base) : 31386.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
           6 (0.42 % of base) : 31789.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingOperator,ubyte):this (FullOpts)
           6 (0.30 % of base) : 31535.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldLoadNoIndirection(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,ubyte):this (FullOpts)
           8 (0.22 % of base) : 31643.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryOperatorInstruction(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):this (FullOpts)

Top method improvements (percentages):
         -18 (-2.34 % of base) : 16947.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:WriteTree(SixLabors.ImageSharp.Compression.Zlib.DeflaterPendingBuffer,SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree):this (FullOpts)
          -2 (-1.82 % of base) : 21203.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
         -30 (-1.72 % of base) : 31400.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
          -8 (-1.21 % of base) : 16948.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman:CompressBlock():this (FullOpts)
         -16 (-1.04 % of base) : 31392.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLoadArgumentOpcode(int):this (FullOpts)
         -14 (-0.83 % of base) : 31404.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
          -2 (-0.49 % of base) : 19447.dasm - Microsoft.ML.Transforms.RowShufflingTransformer:GetRowCursorCore(System.Collections.Generic.IEnumerable`1[Microsoft.ML.DataViewSchema+Column],System.Random):Microsoft.ML.DataViewRowCursor:this (FullOpts)
          -6 (-0.37 % of base) : 115.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 2647.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 16241.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -6 (-0.37 % of base) : 16085.dasm - BenchmarkDotNet.Autogenerated.UniqueProgramName:AfterAssemblyLoadingAttached(System.String[]):int (FullOpts)
          -2 (-0.16 % of base) : 16939.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)

27 total methods with Code Size differences (12 improved, 15 regressed).



windows x86

Diffs are based on 2,293,125 contexts (839,657 MinOpts, 1,453,468 FullOpts).

MISSED contexts: base: 47 (0.00%), diff: 369 (0.02%)

Overall (-134,970 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,107,468 -60
benchmarks.run_pgo.windows.x86.checked.mch 44,954,112 -841
benchmarks.run_tiered.windows.x86.checked.mch 9,456,972 -657
coreclr_tests.run.windows.x86.checked.mch 309,306,753 -73,049
libraries.crossgen2.windows.x86.checked.mch 31,715,821 -44
libraries.pmi.windows.x86.checked.mch 49,209,656 +8,800
libraries_tests.run.windows.x86.Release.mch 186,454,825 -37,182
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,643,834 -32,634
realworld.run.windows.x86.checked.mch 11,348,723 +697

MinOpts (-149,310 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,588,631 -870
benchmarks.run_tiered.windows.x86.checked.mch 4,269,821 -727
coreclr_tests.run.windows.x86.checked.mch 201,787,888 -77,353
libraries_tests.run.windows.x86.Release.mch 98,273,632 -37,592
librariestestsnotieredcompilation.run.windows.x86.Release.mch 8,680,064 -32,768

FullOpts (+14,340 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,107,187 -60
benchmarks.run_pgo.windows.x86.checked.mch 38,365,481 +29
benchmarks.run_tiered.windows.x86.checked.mch 5,187,151 +70
coreclr_tests.run.windows.x86.checked.mch 107,518,865 +4,304
libraries.crossgen2.windows.x86.checked.mch 31,714,761 -44
libraries.pmi.windows.x86.checked.mch 49,114,423 +8,800
libraries_tests.run.windows.x86.Release.mch 88,181,193 +410
librariestestsnotieredcompilation.run.windows.x86.Release.mch 94,963,770 +134
realworld.run.windows.x86.checked.mch 11,053,009 +697

Example diffs

benchmarks.run.windows.x86.checked.mch

-38 (-2.21%) : 20661.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (FullOpts)

@@ -9,12 +9,12 @@ ; Final local variable assignments ; ; V00 RetBuf [V00,T09] ( 5, 3.50) byref -> esi single-def
-; V01 arg0 [V01 ] ( 10, 6 ) struct (12) [ebp+0x08] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.Xml.Schema.XsdDateTime>
+; V01 arg0 [V01 ] ( 14, 8 ) struct (12) [ebp+0x08] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.Xml.Schema.XsdDateTime>
; V02 loc0 [V02 ] ( 17, 8.50) struct ( 8) [ebp-0x14] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime> ;* V03 loc1 [V03 ] ( 0, 0 ) long -> zero-ref ; V04 loc2 [V04 ] ( 4, 2 ) struct ( 8) [ebp-0x1C] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime> ;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.TimeSpan>
-; V06 loc4 [V06,T21] ( 3, 2.50) int -> ecx
+; V06 loc4 [V06,T20] ( 3, 2.50) int -> ecx
; V07 loc5 [V07 ] ( 5, 2.50) struct ( 8) [ebp-0x24] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime> ;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref ; V09 loc7 [V09 ] ( 12, 6 ) struct ( 8) [ebp-0x2C] do-not-enreg[XS] addr-exposed ld-addr-op <System.TimeSpan> @@ -37,33 +37,33 @@ ;* V26 tmp16 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.DateTime> ; V27 tmp17 [V27,T04] ( 7, 7 ) int -> edi "impAppendStmt" ; V28 tmp18 [V28,T07] ( 6, 6 ) int -> ebx "impAppendStmt"
-; V29 tmp19 [V29,T11] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V29 tmp19 [V29,T10] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V30 tmp20 [V30 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[uint]> ;* V31 tmp21 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
-; V32 tmp22 [V32,T67] ( 2, 1 ) int -> eax "Inline stloc first use temp" -;* V33 tmp23 [V33,T68] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V32 tmp22 [V32,T66] ( 2, 1 ) int -> eax "Inline stloc first use temp" +;* V33 tmp23 [V33,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V34 tmp24 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]> ;* V35 tmp25 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
-; V36 tmp26 [V36,T31] ( 3, 1.50) int -> edi "Inline stloc first use temp" -; V37 tmp27 [V37,T32] ( 3, 1.50) int -> edx "Inline stloc first use temp" -; V38 tmp28 [V38,T12] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V36 tmp26 [V36,T30] ( 3, 1.50) int -> edi "Inline stloc first use temp" +; V37 tmp27 [V37,T31] ( 3, 1.50) int -> edx "Inline stloc first use temp" +; V38 tmp28 [V38,T11] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V39 tmp29 [V39 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[uint]> ;* V40 tmp30 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
-; V41 tmp31 [V41,T69] ( 2, 1 ) int -> eax "Inline stloc first use temp" -;* V42 tmp32 [V42,T70] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V41 tmp31 [V41,T68] ( 2, 1 ) int -> eax "Inline stloc first use temp" +;* V42 tmp32 [V42,T69] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V43 tmp33 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]> ;* V44 tmp34 [V44 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
-; V45 tmp35 [V45,T33] ( 3, 1.50) int -> edi "Inline stloc first use temp" -; V46 tmp36 [V46,T34] ( 3, 1.50) int -> edx "Inline stloc first use temp" -; V47 tmp37 [V47,T13] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V45 tmp35 [V45,T32] ( 3, 1.50) int -> edi "Inline stloc first use temp" +; V46 tmp36 [V46,T33] ( 3, 1.50) int -> edx "Inline stloc first use temp" +; V47 tmp37 [V47,T12] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V48 tmp38 [V48 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[uint]> ;* V49 tmp39 [V49 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
-; V50 tmp40 [V50,T71] ( 2, 1 ) int -> eax "Inline stloc first use temp" -;* V51 tmp41 [V51,T72] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp40 [V50,T70] ( 2, 1 ) int -> eax "Inline stloc first use temp" +;* V51 tmp41 [V51,T71] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V52 tmp42 [V52 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]> ;* V53 tmp43 [V53 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
-; V54 tmp44 [V54,T35] ( 3, 1.50) int -> edi "Inline stloc first use temp" -; V55 tmp45 [V55,T36] ( 3, 1.50) int -> edx "Inline stloc first use temp"
+; V54 tmp44 [V54,T34] ( 3, 1.50) int -> edi "Inline stloc first use temp" +; V55 tmp45 [V55,T35] ( 3, 1.50) int -> edx "Inline stloc first use temp"
;* V56 tmp46 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V57 tmp47 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V58 tmp48 [V58 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" @@ -73,95 +73,94 @@ ;* V62 tmp52 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V63 tmp53 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V64 tmp54 [V64 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V65 tmp55 [V65,T14] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.TimeZoneInfo+CachedData> -; V66 tmp56 [V66,T29] ( 2, 2 ) ref -> eax class-hnd exact single-def "dup spill" <System.TimeZoneInfo> -; V67 tmp57 [V67,T19] ( 5, 2.50) ref -> eax
+; V65 tmp55 [V65,T13] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.TimeZoneInfo+CachedData> +; V66 tmp56 [V66,T28] ( 2, 2 ) ref -> eax class-hnd exact single-def "dup spill" <System.TimeZoneInfo> +; V67 tmp57 [V67,T18] ( 5, 2.50) ref -> eax
;* V68 tmp58 [V68 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime> ;* V69 tmp59 [V69 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V70 tmp60 [V70 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V71 tmp61 [V71 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V72 tmp62 [V72,T15] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.TimeZoneInfo+CachedData> -; V73 tmp63 [V73,T30] ( 2, 2 ) ref -> eax class-hnd exact single-def "dup spill" <System.TimeZoneInfo> -; V74 tmp64 [V74,T20] ( 5, 2.50) ref -> eax
+; V72 tmp62 [V72,T14] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.TimeZoneInfo+CachedData> +; V73 tmp63 [V73,T29] ( 2, 2 ) ref -> eax class-hnd exact single-def "dup spill" <System.TimeZoneInfo> +; V74 tmp64 [V74,T19] ( 5, 2.50) ref -> eax
;* V75 tmp65 [V75 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime> ; V76 tmp66 [V76 ] ( 17, 8.50) long -> [ebp-0x14] do-not-enreg[XR] multireg-ret addr-exposed "field V02._dateData (fldOffset=0x0)" P-DEP ; V77 tmp67 [V77 ] ( 4, 2 ) long -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V04._dateData (fldOffset=0x0)" P-DEP ;* V78 tmp68 [V78 ] ( 0, 0 ) long -> zero-ref "field V05._ticks (fldOffset=0x0)" P-INDEP ; V79 tmp69 [V79 ] ( 5, 2.50) long -> [ebp-0x24] do-not-enreg[X] addr-exposed "field V07._dateData (fldOffset=0x0)" P-DEP ; V80 tmp70 [V80 ] ( 12, 6 ) long -> [ebp-0x2C] do-not-enreg[X] addr-exposed "field V09._ticks (fldOffset=0x0)" P-DEP
-; V81 tmp71 [V81,T37] ( 3, 1.50) long -> [ebp-0x34] do-not-enreg[BR] multireg-ret "field V12._dateData (fldOffset=0x0)" P-INDEP
+; V81 tmp71 [V81,T36] ( 3, 1.50) long -> [ebp-0x34] do-not-enreg[BR] multireg-ret "field V12._dateData (fldOffset=0x0)" P-INDEP
;* V82 tmp72 [V82 ] ( 0, 0 ) long -> zero-ref "field V13._dateData (fldOffset=0x0)" P-INDEP
-; V83 tmp73 [V83,T38] ( 3, 1.50) long -> [ebp-0x3C] do-not-enreg[FR] multireg-ret "field V16._dateData (fldOffset=0x0)" P-INDEP -; V84 tmp74 [V84,T39] ( 3, 1.50) long -> [ebp-0x44] do-not-enreg[FR] multireg-ret "field V19._ticks (fldOffset=0x0)" P-INDEP -; V85 tmp75 [V85,T40] ( 3, 1.50) long -> [ebp-0x4C] do-not-enreg[F] "field V20._dateData (fldOffset=0x0)" P-INDEP -; V86 tmp76 [V86,T41] ( 3, 1.50) long -> [ebp-0x54] do-not-enreg[F] "field V21._dateData (fldOffset=0x0)" P-INDEP -; V87 tmp77 [V87,T42] ( 3, 1.50) long -> [ebp-0x5C] do-not-enreg[FR] multireg-ret "field V24._ticks (fldOffset=0x0)" P-INDEP -; V88 tmp78 [V88,T43] ( 3, 1.50) long -> [ebp-0x64] do-not-enreg[F] "field V25._dateData (fldOffset=0x0)" P-INDEP -; V89 tmp79 [V89,T44] ( 3, 1.50) long -> [ebp-0x6C] do-not-enreg[F] "field V26._dateData (fldOffset=0x0)" P-INDEP -; V90 tmp80 [V90,T22] ( 4, 2 ) byref -> eax "field V30._reference (fldOffset=0x0)" P-INDEP -;* V91 tmp81 [V91,T73] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
+; V83 tmp73 [V83,T37] ( 3, 1.50) long -> [ebp-0x3C] do-not-enreg[FR] multireg-ret "field V16._dateData (fldOffset=0x0)" P-INDEP +; V84 tmp74 [V84,T38] ( 3, 1.50) long -> [ebp-0x44] do-not-enreg[FR] multireg-ret "field V19._ticks (fldOffset=0x0)" P-INDEP +; V85 tmp75 [V85,T39] ( 3, 1.50) long -> [ebp-0x4C] do-not-enreg[F] "field V20._dateData (fldOffset=0x0)" P-INDEP +; V86 tmp76 [V86,T40] ( 3, 1.50) long -> [ebp-0x54] do-not-enreg[F] "field V21._dateData (fldOffset=0x0)" P-INDEP +; V87 tmp77 [V87,T41] ( 3, 1.50) long -> [ebp-0x5C] do-not-enreg[FR] multireg-ret "field V24._ticks (fldOffset=0x0)" P-INDEP +; V88 tmp78 [V88,T42] ( 3, 1.50) long -> [ebp-0x64] do-not-enreg[F] "field V25._dateData (fldOffset=0x0)" P-INDEP +; V89 tmp79 [V89,T43] ( 3, 1.50) long -> [ebp-0x6C] do-not-enreg[F] "field V26._dateData (fldOffset=0x0)" P-INDEP +; V90 tmp80 [V90,T21] ( 4, 2 ) byref -> eax "field V30._reference (fldOffset=0x0)" P-INDEP +;* V91 tmp81 [V91,T72] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
;* V92 tmp82 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP ;* V93 tmp83 [V93 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x4)" P-INDEP
-; V94 tmp84 [V94,T61] ( 2, 1 ) byref -> eax single-def "field V34._reference (fldOffset=0x0)" P-INDEP -;* V95 tmp85 [V95,T80] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP -; V96 tmp86 [V96,T62] ( 2, 1 ) byref -> eax single-def "field V35._reference (fldOffset=0x0)" P-INDEP -;* V97 tmp87 [V97,T81] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP -; V98 tmp88 [V98,T23] ( 4, 2 ) byref -> eax "field V39._reference (fldOffset=0x0)" P-INDEP -;* V99 tmp89 [V99,T74] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP
+; V94 tmp84 [V94,T60] ( 2, 1 ) byref -> eax single-def "field V34._reference (fldOffset=0x0)" P-INDEP +;* V95 tmp85 [V95,T79] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP +; V96 tmp86 [V96,T61] ( 2, 1 ) byref -> eax single-def "field V35._reference (fldOffset=0x0)" P-INDEP +;* V97 tmp87 [V97,T80] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x4)" P-INDEP +; V98 tmp88 [V98,T22] ( 4, 2 ) byref -> eax "field V39._reference (fldOffset=0x0)" P-INDEP +;* V99 tmp89 [V99,T73] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP
;* V100 tmp90 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP ;* V101 tmp91 [V101 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x4)" P-INDEP
-; V102 tmp92 [V102,T63] ( 2, 1 ) byref -> eax single-def "field V43._reference (fldOffset=0x0)" P-INDEP -;* V103 tmp93 [V103,T82] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP -; V104 tmp94 [V104,T64] ( 2, 1 ) byref -> eax single-def "field V44._reference (fldOffset=0x0)" P-INDEP -;* V105 tmp95 [V105,T83] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x4)" P-INDEP -; V106 tmp96 [V106,T24] ( 4, 2 ) byref -> eax "field V48._reference (fldOffset=0x0)" P-INDEP -;* V107 tmp97 [V107,T75] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x4)" P-INDEP
+; V102 tmp92 [V102,T62] ( 2, 1 ) byref -> eax single-def "field V43._reference (fldOffset=0x0)" P-INDEP +;* V103 tmp93 [V103,T81] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP +; V104 tmp94 [V104,T63] ( 2, 1 ) byref -> eax single-def "field V44._reference (fldOffset=0x0)" P-INDEP +;* V105 tmp95 [V105,T82] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x4)" P-INDEP +; V106 tmp96 [V106,T23] ( 4, 2 ) byref -> eax "field V48._reference (fldOffset=0x0)" P-INDEP +;* V107 tmp97 [V107,T74] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x4)" P-INDEP
;* V108 tmp98 [V108 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP ;* V109 tmp99 [V109 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x4)" P-INDEP
-; V110 tmp100 [V110,T65] ( 2, 1 ) byref -> eax single-def "field V52._reference (fldOffset=0x0)" P-INDEP -;* V111 tmp101 [V111,T84] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP -; V112 tmp102 [V112,T66] ( 2, 1 ) byref -> eax single-def "field V53._reference (fldOffset=0x0)" P-INDEP -;* V113 tmp103 [V113,T85] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x4)" P-INDEP
+; V110 tmp100 [V110,T64] ( 2, 1 ) byref -> eax single-def "field V52._reference (fldOffset=0x0)" P-INDEP +;* V111 tmp101 [V111,T83] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP +; V112 tmp102 [V112,T65] ( 2, 1 ) byref -> eax single-def "field V53._reference (fldOffset=0x0)" P-INDEP +;* V113 tmp103 [V113,T84] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x4)" P-INDEP
;* V114 tmp104 [V114 ] ( 0, 0 ) long -> zero-ref "field V56._dateData (fldOffset=0x0)" P-INDEP ;* V115 tmp105 [V115 ] ( 0, 0 ) long -> zero-ref "field V57._dateData (fldOffset=0x0)" P-INDEP
-; V116 tmp106 [V116,T45] ( 3, 1.50) long -> [ebp-0x74] do-not-enreg[F] "field V59._ticks (fldOffset=0x0)" P-INDEP -; V117 tmp107 [V117,T46] ( 3, 1.50) long -> [ebp-0x7C] do-not-enreg[F] "field V68._dateData (fldOffset=0x0)" P-INDEP -; V118 tmp108 [V118,T47] ( 3, 1.50) long -> [ebp-0x84] do-not-enreg[F] "field V75._dateData (fldOffset=0x0)" P-INDEP -; V119 cse0 [V119,T48] ( 3, 1.50) int -> ebx "CSE - conservative" -; V120 cse1 [V120,T49] ( 3, 1.50) int -> ebx "CSE - conservative" -; V121 cse2 [V121,T50] ( 3, 1.50) int -> ebx "CSE - conservative" -; V122 cse3 [V122,T10] ( 6, 4 ) int -> ebx "CSE - moderate" -; V123 rat0 [V123,T01] ( 18, 9 ) int -> edi "field V03.lo (fldOffset=0x0)" P-INDEP -; V124 rat1 [V124,T00] ( 20, 10 ) int -> ebx "field V03.hi (fldOffset=0x4)" P-INDEP -; V125 rat2 [V125,T76] ( 2, 1 ) int -> [ebp-0x88] spill-single-def "field V17.lo (fldOffset=0x0)" P-INDEP -; V126 rat3 [V126,T77] ( 2, 1 ) int -> [ebp-0x8C] spill-single-def "field V17.hi (fldOffset=0x4)" P-INDEP -; V127 rat4 [V127,T78] ( 2, 1 ) int -> [ebp-0x90] spill-single-def "field V22.lo (fldOffset=0x0)" P-INDEP -; V128 rat5 [V128,T79] ( 2, 1 ) int -> [ebp-0x94] spill-single-def "field V22.hi (fldOffset=0x4)" P-INDEP -; V129 rat6 [V129,T51] ( 3, 1.50) int -> eax "field V61.lo (fldOffset=0x0)" P-INDEP -; V130 rat7 [V130,T52] ( 3, 1.50) int -> edx "field V61.hi (fldOffset=0x4)" P-INDEP -; V131 rat8 [V131,T25] ( 4, 2 ) int -> eax "field V64.lo (fldOffset=0x0)" P-INDEP -; V132 rat9 [V132,T26] ( 4, 2 ) int -> edx "field V64.hi (fldOffset=0x4)" P-INDEP -; V133 rat10 [V133,T27] ( 4, 2 ) int -> eax "field V71.lo (fldOffset=0x0)" P-INDEP -; V134 rat11 [V134,T28] ( 4, 2 ) int -> edx "field V71.hi (fldOffset=0x4)" P-INDEP -; V135 rat12 [V135,T08] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable" -; V136 rat13 [V136 ] ( 1, 1 ) long -> [ebp-0x9C] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V137 rat14 [V137,T53] ( 2, 1.50) int -> [ebp-0xA0] spill-single-def "field V136.lo (fldOffset=0x0)" P-INDEP -; V138 rat15 [V138,T54] ( 2, 1.50) int -> [ebp-0xA4] spill-single-def "field V136.hi (fldOffset=0x4)" P-INDEP -; V139 rat16 [V139 ] ( 1, 1 ) long -> [ebp-0xAC] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V140 rat17 [V140,T55] ( 2, 1.50) int -> eax "field V139.lo (fldOffset=0x0)" P-INDEP -; V141 rat18 [V141,T56] ( 2, 1.50) int -> edx "field V139.hi (fldOffset=0x4)" P-INDEP -; V142 rat19 [V142,T16] ( 3, 3 ) byref -> eax "ReplaceWithLclVar is creating a new local variable" -; V143 rat20 [V143 ] ( 1, 1 ) long -> [ebp-0xB4] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V144 rat21 [V144,T57] ( 2, 1.50) int -> [ebp-0xB8] spill-single-def "field V143.lo (fldOffset=0x0)" P-INDEP -; V145 rat22 [V145,T58] ( 2, 1.50) int -> [ebp-0xBC] spill-single-def "field V143.hi (fldOffset=0x4)" P-INDEP -; V146 rat23 [V146 ] ( 1, 1 ) long -> [ebp-0xC4] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V147 rat24 [V147,T59] ( 2, 1.50) int -> eax "field V146.lo (fldOffset=0x0)" P-INDEP -; V148 rat25 [V148,T60] ( 2, 1.50) int -> edx "field V146.hi (fldOffset=0x4)" P-INDEP -; V149 rat26 [V149,T17] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V150 rat27 [V150,T18] ( 3, 3 ) byref -> esi "ReplaceWithLclVar is creating a new local variable" -; TEMP_01 int -> [ebp-0xC8]
+; V116 tmp106 [V116,T44] ( 3, 1.50) long -> [ebp-0x74] do-not-enreg[F] "field V59._ticks (fldOffset=0x0)" P-INDEP +; V117 tmp107 [V117,T45] ( 3, 1.50) long -> [ebp-0x7C] do-not-enreg[F] "field V68._dateData (fldOffset=0x0)" P-INDEP +; V118 tmp108 [V118,T46] ( 3, 1.50) long -> [ebp-0x84] do-not-enreg[F] "field V75._dateData (fldOffset=0x0)" P-INDEP +; V119 cse0 [V119,T47] ( 3, 1.50) int -> ebx "CSE - conservative" +; V120 cse1 [V120,T48] ( 3, 1.50) int -> ebx "CSE - conservative" +; V121 cse2 [V121,T49] ( 3, 1.50) int -> ebx "CSE - conservative" +; V122 rat0 [V122,T01] ( 18, 9 ) int -> edi "field V03.lo (fldOffset=0x0)" P-INDEP +; V123 rat1 [V123,T00] ( 20, 10 ) int -> ebx "field V03.hi (fldOffset=0x4)" P-INDEP +; V124 rat2 [V124,T75] ( 2, 1 ) int -> edi "field V17.lo (fldOffset=0x0)" P-INDEP +; V125 rat3 [V125,T76] ( 2, 1 ) int -> [ebp-0x88] spill-single-def "field V17.hi (fldOffset=0x4)" P-INDEP +; V126 rat4 [V126,T77] ( 2, 1 ) int -> edi "field V22.lo (fldOffset=0x0)" P-INDEP +; V127 rat5 [V127,T78] ( 2, 1 ) int -> [ebp-0x8C] spill-single-def "field V22.hi (fldOffset=0x4)" P-INDEP +; V128 rat6 [V128,T50] ( 3, 1.50) int -> eax "field V61.lo (fldOffset=0x0)" P-INDEP +; V129 rat7 [V129,T51] ( 3, 1.50) int -> edx "field V61.hi (fldOffset=0x4)" P-INDEP +; V130 rat8 [V130,T24] ( 4, 2 ) int -> eax "field V64.lo (fldOffset=0x0)" P-INDEP +; V131 rat9 [V131,T25] ( 4, 2 ) int -> edx "field V64.hi (fldOffset=0x4)" P-INDEP +; V132 rat10 [V132,T26] ( 4, 2 ) int -> eax "field V71.lo (fldOffset=0x0)" P-INDEP +; V133 rat11 [V133,T27] ( 4, 2 ) int -> edx "field V71.hi (fldOffset=0x4)" P-INDEP +; V134 rat12 [V134,T08] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable" +; V135 rat13 [V135 ] ( 1, 1 ) long -> [ebp-0x94] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V136 rat14 [V136,T52] ( 2, 1.50) int -> ecx "field V135.lo (fldOffset=0x0)" P-INDEP +; V137 rat15 [V137,T53] ( 2, 1.50) int -> [ebp-0x98] spill-single-def "field V135.hi (fldOffset=0x4)" P-INDEP +; V138 rat16 [V138 ] ( 1, 1 ) long -> [ebp-0xA0] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V139 rat17 [V139,T54] ( 2, 1.50) int -> eax "field V138.lo (fldOffset=0x0)" P-INDEP +; V140 rat18 [V140,T55] ( 2, 1.50) int -> edx "field V138.hi (fldOffset=0x4)" P-INDEP +; V141 rat19 [V141,T15] ( 3, 3 ) byref -> eax "ReplaceWithLclVar is creating a new local variable" +; V142 rat20 [V142 ] ( 1, 1 ) long -> [ebp-0xA8] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V143 rat21 [V143,T56] ( 2, 1.50) int -> ecx "field V142.lo (fldOffset=0x0)" P-INDEP +; V144 rat22 [V144,T57] ( 2, 1.50) int -> [ebp-0xAC] spill-single-def "field V142.hi (fldOffset=0x4)" P-INDEP +; V145 rat23 [V145 ] ( 1, 1 ) long -> [ebp-0xB4] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V146 rat24 [V146,T58] ( 2, 1.50) int -> eax "field V145.lo (fldOffset=0x0)" P-INDEP +; V147 rat25 [V147,T59] ( 2, 1.50) int -> edx "field V145.hi (fldOffset=0x4)" P-INDEP +; V148 rat26 [V148,T16] ( 3, 3 ) byref -> ecx "ReplaceWithLclVar is creating a new local variable" +; V149 rat27 [V149,T17] ( 3, 3 ) byref -> esi "ReplaceWithLclVar is creating a new local variable" +; TEMP_01 int -> [ebp-0xB8]
;
-; Lcl frame size = 188
+; Lcl frame size = 172
G_M33150_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -169,7 +168,7 @@ G_M33150_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 188
+ sub esp, 172
mov esi, ecx ; byrRegs +[esi] ;; size=14 bbWeight=1 PerfScore 4.75 @@ -232,12 +231,12 @@ G_M33150_IG06: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000041 cmp ebx, 13 jae G_M33150_IG31 mov edx, dword ptr [eax+4*ebx]
- mov dword ptr [ebp-0xC8], edx
+ mov dword ptr [ebp-0xB8], edx
lea edx, [ebx-0x01] cmp edx, 13 jae G_M33150_IG31 mov ebx, dword ptr [eax+4*ebx-0x04]
- mov edx, dword ptr [ebp-0xC8]
+ mov edx, dword ptr [ebp-0xB8]
sub edx, ebx ...

-25 (-1.77%) : 19605.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)

@@ -5,158 +5,152 @@ ; ebp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 120 single block inlinees; 45 inlinees without PGO data
+; 0 inlinees with PGO data; 125 single block inlinees; 45 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 65, 33.50) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
-; V01 arg1 [V01,T11] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V02 loc0 [V02,T12] ( 6, 4.50) int -> ebx single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V02 loc0 [V02,T13] ( 6, 4.50) int -> ebx single-def
;* V03 tmp0 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V04 tmp1 [V04,T50] ( 2, 2 ) int -> edi "Inlining Arg" -; V05 tmp2 [V05,T56] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V06 tmp3 [V06,T13] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V04 tmp1 [V04,T52] ( 2, 2 ) int -> edi "Inlining Arg" +; V05 tmp2 [V05,T58] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V06 tmp3 [V06,T14] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
; V07 tmp4 [V07,T02] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V10 tmp7 [V10,T20] ( 6, 3 ) int -> eax "Inline stloc first use temp" ;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V17 tmp14 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V20 tmp17 [V20,T03] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V21 tmp18 [V21,T38] ( 3, 3 ) int -> eax "impAppendStmt" -;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V23 tmp20 [V23,T63] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V24 tmp21 [V24,T39] ( 3, 3 ) int -> edx "Inlining Arg" -; V25 tmp22 [V25,T26] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V27 tmp24 [V27,T51] ( 2, 2 ) int -> edi "Inlining Arg" -; V28 tmp25 [V28,T57] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V29 tmp26 [V29,T14] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V30 tmp27 [V30,T04] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V33 tmp30 [V33,T21] ( 6, 3 ) int -> eax "Inline stloc first use temp" -;* V34 tmp31 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V36 tmp33 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V18 tmp15 [V18,T03] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V19 tmp16 [V19,T38] ( 3, 3 ) int -> eax "impAppendStmt" +;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V21 tmp18 [V21,T65] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V22 tmp19 [V22,T39] ( 3, 3 ) int -> edx "Inlining Arg" +; V23 tmp20 [V23,T26] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V25 tmp22 [V25,T53] ( 2, 2 ) int -> edi "Inlining Arg" +; V26 tmp23 [V26,T59] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V27 tmp24 [V27,T15] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V28 tmp25 [V28,T04] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V31 tmp28 [V31,T21] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V32 tmp29 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V38 tmp35 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V39 tmp36 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V40 tmp37 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V43 tmp40 [V43,T05] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V44 tmp41 [V44,T40] ( 3, 3 ) int -> eax "impAppendStmt" -;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V46 tmp43 [V46,T64] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V47 tmp44 [V47,T41] ( 3, 3 ) int -> edx "Inlining Arg" -; V48 tmp45 [V48,T27] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V49 tmp46 [V49 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V50 tmp47 [V50,T52] ( 2, 2 ) int -> edi "Inlining Arg" -; V51 tmp48 [V51,T58] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V52 tmp49 [V52,T15] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V53 tmp50 [V53,T06] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V39 tmp36 [V39,T05] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V40 tmp37 [V40,T40] ( 3, 3 ) int -> eax "impAppendStmt" +;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V42 tmp39 [V42,T66] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V43 tmp40 [V43,T41] ( 3, 3 ) int -> edx "Inlining Arg" +; V44 tmp41 [V44,T27] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V46 tmp43 [V46,T54] ( 2, 2 ) int -> edi "Inlining Arg" +; V47 tmp44 [V47,T60] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V48 tmp45 [V48,T16] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V49 tmp46 [V49,T06] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V50 tmp47 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V51 tmp48 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V52 tmp49 [V52,T22] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V53 tmp50 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V56 tmp53 [V56,T22] ( 6, 3 ) int -> eax "Inline stloc first use temp" -;* V57 tmp54 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V56 tmp53 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V57 tmp54 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V59 tmp56 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V60 tmp57 [V60 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V61 tmp58 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V62 tmp59 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V64 tmp61 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V65 tmp62 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V66 tmp63 [V66,T07] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V67 tmp64 [V67,T42] ( 3, 3 ) int -> eax "impAppendStmt" -;* V68 tmp65 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V69 tmp66 [V69,T65] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V70 tmp67 [V70,T43] ( 3, 3 ) int -> edx "Inlining Arg" -; V71 tmp68 [V71,T28] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V73 tmp70 [V73,T53] ( 2, 2 ) int -> edi "Inlining Arg" -; V74 tmp71 [V74,T59] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V75 tmp72 [V75,T16] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V76 tmp73 [V76,T08] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V77 tmp74 [V77 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V59 tmp56 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V60 tmp57 [V60,T07] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V61 tmp58 [V61,T42] ( 3, 3 ) int -> eax "impAppendStmt" +;* V62 tmp59 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V63 tmp60 [V63,T67] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V64 tmp61 [V64,T43] ( 3, 3 ) int -> edx "Inlining Arg" +; V65 tmp62 [V65,T28] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V66 tmp63 [V66 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V67 tmp64 [V67,T55] ( 2, 2 ) int -> edi "Inlining Arg" +; V68 tmp65 [V68,T61] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V69 tmp66 [V69,T17] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V70 tmp67 [V70,T08] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V71 tmp68 [V71 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V73 tmp70 [V73,T23] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V74 tmp71 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V75 tmp72 [V75 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V76 tmp73 [V76 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V77 tmp74 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V78 tmp75 [V78 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V79 tmp76 [V79,T23] ( 6, 3 ) int -> eax "Inline stloc first use temp"
+;* V79 tmp76 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V80 tmp77 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V81 tmp78 [V81 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V82 tmp79 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V84 tmp81 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V85 tmp82 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V86 tmp83 [V86 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V88 tmp85 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V89 tmp86 [V89,T29] ( 3, 3 ) byref -> eax single-def "Inlining Arg" -;* V90 tmp87 [V90 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V91 tmp88 [V91,T54] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "Inlining Arg" -; V92 tmp89 [V92,T60] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V93 tmp90 [V93,T17] ( 4, 4 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V94 tmp91 [V94,T09] ( 6, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V95 tmp92 [V95 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V81 tmp78 [V81,T09] ( 6, 6 ) byref -> eax single-def "Inlining Arg" +; V82 tmp79 [V82,T44] ( 3, 3 ) int -> edx "impAppendStmt" +;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V84 tmp81 [V84,T68] ( 2, 1 ) int -> edx "Inline return value spill temp" +; V85 tmp82 [V85,T45] ( 3, 3 ) int -> ecx "Inlining Arg" +; V86 tmp83 [V86,T29] ( 3, 3 ) byref -> eax single-def "Inlining Arg" +;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V88 tmp85 [V88,T56] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "Inlining Arg" +; V89 tmp86 [V89,T62] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V90 tmp87 [V90,T18] ( 4, 4 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V91 tmp88 [V91,T10] ( 6, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V92 tmp89 [V92 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V93 tmp90 [V93 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V94 tmp91 [V94,T24] ( 6, 3 ) int -> edx "Inline stloc first use temp" +;* V95 tmp92 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V96 tmp93 [V96 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V97 tmp94 [V97,T24] ( 6, 3 ) int -> edx "Inline stloc first use temp"
+;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V98 tmp95 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V99 tmp96 [V99 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V100 tmp97 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V101 tmp98 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V102 tmp99 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V103 tmp100 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V104 tmp101 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V105 tmp102 [V105 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V106 tmp103 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V107 tmp104 [V107,T30] ( 3, 3 ) byref -> edi single-def "Inlining Arg" -;* V108 tmp105 [V108 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -; V109 tmp106 [V109,T61] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V110 tmp107 [V110,T18] ( 4, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V111 tmp108 [V111,T10] ( 6, 6 ) ref -> esi class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V112 tmp109 [V112 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V114 tmp111 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V115 tmp112 [V115,T25] ( 6, 3 ) int -> edi "Inline stloc first use temp" -;* V116 tmp113 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V117 tmp114 [V117 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V118 tmp115 [V118 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V119 tmp116 [V119,T55] ( 2, 2 ) int -> edi "Inlining Arg" -; V120 tmp117 [V120,T62] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V121 tmp118 [V121,T19] ( 4, 4 ) ref -> [ebp-0x1C] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V122 tmp119 [V122,T31] ( 3, 3 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V123 tmp120 [V123 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V124 tmp121 [V124 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V100 tmp97 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V101 tmp98 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V102 tmp99 [V102,T30] ( 3, 3 ) byref -> edi single-def "Inlining Arg" +;* V103 tmp100 [V103 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +; V104 tmp101 [V104,T63] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V105 tmp102 [V105,T19] ( 4, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V106 tmp103 [V106,T11] ( 6, 6 ) ref -> esi class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V107 tmp104 [V107 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +;* V108 tmp105 [V108 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V109 tmp106 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V110 tmp107 [V110,T25] ( 6, 3 ) int -> edi "Inline stloc first use temp" +;* V111 tmp108 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V112 tmp109 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V114 tmp111 [V114,T57] ( 2, 2 ) int -> edi "Inlining Arg" +; V115 tmp112 [V115,T64] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V116 tmp113 [V116,T31] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V117 tmp114 [V117 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V118 tmp115 [V118 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V119 tmp116 [V119 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V120 tmp117 [V120,T32] ( 3, 3 ) ref -> ecx single-def "arr expr" +; V121 tmp118 [V121,T33] ( 3, 3 ) ref -> ecx single-def "arr expr" +;* V122 tmp119 [V122 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V123 tmp120 [V123 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V124 tmp121 [V124,T34] ( 3, 3 ) ref -> edx single-def "arr expr"
;* V125 tmp122 [V125 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V126 tmp123 [V126,T32] ( 3, 3 ) ref -> ecx single-def "arr expr" -; V127 tmp124 [V127,T33] ( 3, 3 ) ref -> ecx single-def "arr expr"
+;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V127 tmp124 [V127,T35] ( 3, 3 ) ref -> ecx single-def "arr expr"
;* V128 tmp125 [V128 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V129 tmp126 [V129 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V130 tmp127 [V130,T34] ( 3, 3 ) ref -> ecx single-def "arr expr"
+; V130 tmp127 [V130,T36] ( 3, 3 ) ref -> ecx single-def "arr expr"
...

-15 (-1.10%) : 19619.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)

@@ -5,158 +5,152 @@ ; ebp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 118 single block inlinees; 44 inlinees without PGO data
+; 0 inlinees with PGO data; 124 single block inlinees; 43 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 62, 32 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
-; V01 arg1 [V01,T11] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V02 loc0 [V02,T12] ( 6, 4.50) int -> ebx single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V02 loc0 [V02,T13] ( 6, 4.50) int -> ebx single-def
;* V03 tmp0 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V04 tmp1 [V04,T50] ( 2, 2 ) int -> edi "Inlining Arg" -; V05 tmp2 [V05,T56] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V06 tmp3 [V06,T13] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V04 tmp1 [V04,T53] ( 2, 2 ) int -> edi "Inlining Arg" +; V05 tmp2 [V05,T59] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V06 tmp3 [V06,T14] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
; V07 tmp4 [V07,T02] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V10 tmp7 [V10,T19] ( 6, 3 ) int -> eax "Inline stloc first use temp"
+; V10 tmp7 [V10,T20] ( 6, 3 ) int -> eax "Inline stloc first use temp"
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V17 tmp14 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V20 tmp17 [V20,T03] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V21 tmp18 [V21,T37] ( 3, 3 ) int -> eax "impAppendStmt" -;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V23 tmp20 [V23,T62] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V24 tmp21 [V24,T38] ( 3, 3 ) int -> edx "Inlining Arg" -; V25 tmp22 [V25,T25] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V27 tmp24 [V27,T51] ( 2, 2 ) int -> edi "Inlining Arg" -; V28 tmp25 [V28,T57] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V29 tmp26 [V29,T14] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V30 tmp27 [V30,T04] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V33 tmp30 [V33,T20] ( 6, 3 ) int -> eax "Inline stloc first use temp" -;* V34 tmp31 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V36 tmp33 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V18 tmp15 [V18,T03] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V19 tmp16 [V19,T37] ( 3, 3 ) int -> eax "impAppendStmt" +;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V21 tmp18 [V21,T65] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V22 tmp19 [V22,T38] ( 3, 3 ) int -> edx "Inlining Arg" +; V23 tmp20 [V23,T26] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V25 tmp22 [V25,T54] ( 2, 2 ) int -> edi "Inlining Arg" +; V26 tmp23 [V26,T60] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V27 tmp24 [V27,T15] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V28 tmp25 [V28,T04] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V31 tmp28 [V31,T21] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V32 tmp29 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V38 tmp35 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V39 tmp36 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V40 tmp37 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V43 tmp40 [V43,T05] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V44 tmp41 [V44,T39] ( 3, 3 ) int -> eax "impAppendStmt" -;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V46 tmp43 [V46,T63] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V47 tmp44 [V47,T40] ( 3, 3 ) int -> edx "Inlining Arg" -; V48 tmp45 [V48,T26] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V49 tmp46 [V49 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V50 tmp47 [V50,T52] ( 2, 2 ) int -> edi "Inlining Arg" -; V51 tmp48 [V51,T58] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V52 tmp49 [V52,T15] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V53 tmp50 [V53,T06] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V39 tmp36 [V39,T05] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V40 tmp37 [V40,T39] ( 3, 3 ) int -> eax "impAppendStmt" +;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V42 tmp39 [V42,T66] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V43 tmp40 [V43,T40] ( 3, 3 ) int -> edx "Inlining Arg" +; V44 tmp41 [V44,T27] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V46 tmp43 [V46,T55] ( 2, 2 ) int -> edi "Inlining Arg" +; V47 tmp44 [V47,T61] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V48 tmp45 [V48,T16] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V49 tmp46 [V49,T06] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V50 tmp47 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V51 tmp48 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V52 tmp49 [V52,T22] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V53 tmp50 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V56 tmp53 [V56,T21] ( 6, 3 ) int -> eax "Inline stloc first use temp" -;* V57 tmp54 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V56 tmp53 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V57 tmp54 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V59 tmp56 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V60 tmp57 [V60 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V61 tmp58 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V62 tmp59 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V64 tmp61 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V65 tmp62 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V66 tmp63 [V66,T07] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V67 tmp64 [V67,T41] ( 3, 3 ) int -> eax "impAppendStmt" -;* V68 tmp65 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V69 tmp66 [V69,T64] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V70 tmp67 [V70,T42] ( 3, 3 ) int -> edx "Inlining Arg" -; V71 tmp68 [V71,T27] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V73 tmp70 [V73,T53] ( 2, 2 ) int -> edi "Inlining Arg" -; V74 tmp71 [V74,T59] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V75 tmp72 [V75,T16] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V76 tmp73 [V76,T08] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V77 tmp74 [V77 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V59 tmp56 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V60 tmp57 [V60,T07] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V61 tmp58 [V61,T41] ( 3, 3 ) int -> eax "impAppendStmt" +;* V62 tmp59 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V63 tmp60 [V63,T67] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V64 tmp61 [V64,T42] ( 3, 3 ) int -> edx "Inlining Arg" +; V65 tmp62 [V65,T28] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V66 tmp63 [V66 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V67 tmp64 [V67,T56] ( 2, 2 ) int -> edi "Inlining Arg" +; V68 tmp65 [V68,T62] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V69 tmp66 [V69,T17] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V70 tmp67 [V70,T08] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V71 tmp68 [V71 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V73 tmp70 [V73,T23] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V74 tmp71 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V75 tmp72 [V75 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V76 tmp73 [V76 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V77 tmp74 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V78 tmp75 [V78 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V79 tmp76 [V79,T22] ( 6, 3 ) int -> eax "Inline stloc first use temp"
+;* V79 tmp76 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V80 tmp77 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V81 tmp78 [V81 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V82 tmp79 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V84 tmp81 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V85 tmp82 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V86 tmp83 [V86 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V88 tmp85 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V89 tmp86 [V89,T28] ( 3, 3 ) byref -> eax single-def "Inlining Arg" -;* V90 tmp87 [V90 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V91 tmp88 [V91,T54] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "Inlining Arg" -; V92 tmp89 [V92,T60] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V93 tmp90 [V93,T17] ( 4, 4 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V94 tmp91 [V94,T09] ( 6, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V95 tmp92 [V95 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V81 tmp78 [V81,T09] ( 6, 6 ) byref -> eax single-def "Inlining Arg" +; V82 tmp79 [V82,T43] ( 3, 3 ) int -> edx "impAppendStmt" +;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V84 tmp81 [V84,T68] ( 2, 1 ) int -> edx "Inline return value spill temp" +; V85 tmp82 [V85,T44] ( 3, 3 ) int -> ecx "Inlining Arg" +; V86 tmp83 [V86,T29] ( 3, 3 ) byref -> eax single-def "Inlining Arg" +;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V88 tmp85 [V88,T57] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "Inlining Arg" +; V89 tmp86 [V89,T63] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V90 tmp87 [V90,T18] ( 4, 4 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V91 tmp88 [V91,T10] ( 6, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V92 tmp89 [V92 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V93 tmp90 [V93 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V94 tmp91 [V94,T24] ( 6, 3 ) int -> edx "Inline stloc first use temp" +;* V95 tmp92 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V96 tmp93 [V96 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V97 tmp94 [V97,T23] ( 6, 3 ) int -> edx "Inline stloc first use temp"
+;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V98 tmp95 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V99 tmp96 [V99 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V100 tmp97 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V101 tmp98 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V102 tmp99 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V103 tmp100 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V104 tmp101 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V105 tmp102 [V105 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V106 tmp103 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V107 tmp104 [V107,T29] ( 3, 3 ) byref -> edi single-def "Inlining Arg" -;* V108 tmp105 [V108 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -; V109 tmp106 [V109,T61] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V110 tmp107 [V110,T18] ( 4, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V111 tmp108 [V111,T10] ( 6, 6 ) ref -> esi class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V112 tmp109 [V112 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V114 tmp111 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V115 tmp112 [V115,T24] ( 6, 3 ) int -> edi "Inline stloc first use temp" -;* V116 tmp113 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V117 tmp114 [V117 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V118 tmp115 [V118 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V119 tmp116 [V119,T55] ( 2, 2 ) int -> edi "Inlining Arg" -;* V120 tmp117 [V120 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V121 tmp118 [V121,T30] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V122 tmp119 [V122 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V123 tmp120 [V123,T49] ( 2, 2 ) ref -> edx single-def "argument with side effect" -;* V124 tmp121 [V124 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V100 tmp97 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V101 tmp98 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V102 tmp99 [V102,T30] ( 3, 3 ) byref -> edi single-def "Inlining Arg" +;* V103 tmp100 [V103 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +; V104 tmp101 [V104,T64] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V105 tmp102 [V105,T19] ( 4, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V106 tmp103 [V106,T11] ( 6, 6 ) ref -> esi class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V107 tmp104 [V107 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +;* V108 tmp105 [V108 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V109 tmp106 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V110 tmp107 [V110,T25] ( 6, 3 ) int -> edi "Inline stloc first use temp" +;* V111 tmp108 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V112 tmp109 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V114 tmp111 [V114,T58] ( 2, 2 ) int -> edi "Inlining Arg" +;* V115 tmp112 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V116 tmp113 [V116,T51] ( 2, 2 ) ref -> edx single-def "argument with side effect" +; V117 tmp114 [V117,T52] ( 2, 2 ) ref -> ecx single-def "argument with side effect" +;* V118 tmp115 [V118 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V119 tmp116 [V119 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V120 tmp117 [V120,T31] ( 3, 3 ) ref -> ecx single-def "arr expr" +; V121 tmp118 [V121,T32] ( 3, 3 ) ref -> ecx single-def "arr expr" +;* V122 tmp119 [V122 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V123 tmp120 [V123 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V124 tmp121 [V124,T33] ( 3, 3 ) ref -> edx single-def "arr expr"
;* V125 tmp122 [V125 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V126 tmp123 [V126,T31] ( 3, 3 ) ref -> ecx single-def "arr expr" -; V127 tmp124 [V127,T32] ( 3, 3 ) ref -> ecx single-def "arr expr"
+;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V127 tmp124 [V127,T34] ( 3, 3 ) ref -> ecx single-def "arr expr"
;* V128 tmp125 [V128 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V129 tmp126 [V129 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V130 tmp127 [V130,T33] ( 3, 3 ) ref -> ecx single-def "arr expr"
...

+2 (+0.15%) : 14805.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (FullOpts)

@@ -9,12 +9,12 @@ ; Final local variable assignments ; ; V00 RetBuf [V00,T07] ( 3, 3 ) byref -> esi single-def
-; V01 arg0 [V01 ] ( 10, 6 ) struct (12) [ebp+0x08] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.Xml.Schema.XsdDateTime>
+; V01 arg0 [V01 ] ( 14, 8 ) struct (12) [ebp+0x08] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.Xml.Schema.XsdDateTime>
; V02 loc0 [V02 ] ( 13, 6.50) struct ( 8) [ebp-0x14] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime> ; V03 loc1 [V03 ] ( 5, 3 ) struct (12) [ebp-0x20] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTimeOffset> ; V04 loc2 [V04 ] ( 4, 2 ) struct ( 8) [ebp-0x28] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime> ;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref <System.TimeSpan>
-; V06 loc4 [V06,T14] ( 3, 2.50) int -> ecx
+; V06 loc4 [V06,T13] ( 3, 2.50) int -> ecx
; V07 loc5 [V07 ] ( 2, 1 ) struct ( 8) [ebp-0x30] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime> ;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref ; V09 loc7 [V09,T00] ( 7, 7 ) int -> edi "impAppendStmt" @@ -36,33 +36,33 @@ ; V25 tmp16 [V25 ] ( 2, 2 ) struct ( 8) [ebp-0x38] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.TimeSpan> ; V26 tmp17 [V26,T02] ( 7, 7 ) int -> edi "impAppendStmt" ; V27 tmp18 [V27,T05] ( 6, 6 ) int -> ebx "impAppendStmt"
-; V28 tmp19 [V28,T09] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V28 tmp19 [V28,T08] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V29 tmp20 [V29 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[uint]> ;* V30 tmp21 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
-; V31 tmp22 [V31,T57] ( 2, 1 ) int -> eax "Inline stloc first use temp" -;* V32 tmp23 [V32,T58] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V31 tmp22 [V31,T56] ( 2, 1 ) int -> eax "Inline stloc first use temp" +;* V32 tmp23 [V32,T57] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp24 [V33 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]> ;* V34 tmp25 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
-; V35 tmp26 [V35,T24] ( 3, 1.50) int -> edi "Inline stloc first use temp" -; V36 tmp27 [V36,T25] ( 3, 1.50) int -> edx "Inline stloc first use temp" -; V37 tmp28 [V37,T10] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V35 tmp26 [V35,T23] ( 3, 1.50) int -> edi "Inline stloc first use temp" +; V36 tmp27 [V36,T24] ( 3, 1.50) int -> edx "Inline stloc first use temp" +; V37 tmp28 [V37,T09] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V38 tmp29 [V38 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[uint]> ;* V39 tmp30 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
-; V40 tmp31 [V40,T59] ( 2, 1 ) int -> eax "Inline stloc first use temp" -;* V41 tmp32 [V41,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V40 tmp31 [V40,T58] ( 2, 1 ) int -> eax "Inline stloc first use temp" +;* V41 tmp32 [V41,T59] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V42 tmp33 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]> ;* V43 tmp34 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
-; V44 tmp35 [V44,T26] ( 3, 1.50) int -> edi "Inline stloc first use temp" -; V45 tmp36 [V45,T27] ( 3, 1.50) int -> edx "Inline stloc first use temp" -; V46 tmp37 [V46,T11] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V44 tmp35 [V44,T25] ( 3, 1.50) int -> edi "Inline stloc first use temp" +; V45 tmp36 [V45,T26] ( 3, 1.50) int -> edx "Inline stloc first use temp" +; V46 tmp37 [V46,T10] ( 4, 4 ) int -> ecx "Inlining Arg"
;* V47 tmp38 [V47 ] ( 0, 0 ) struct ( 8) zero-ref <System.ReadOnlySpan`1[uint]> ;* V48 tmp39 [V48 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
-; V49 tmp40 [V49,T61] ( 2, 1 ) int -> eax "Inline stloc first use temp" -;* V50 tmp41 [V50,T62] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V49 tmp40 [V49,T60] ( 2, 1 ) int -> eax "Inline stloc first use temp" +;* V50 tmp41 [V50,T61] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V51 tmp42 [V51 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]> ;* V52 tmp43 [V52 ] ( 0, 0 ) struct ( 8) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]>
-; V53 tmp44 [V53,T28] ( 3, 1.50) int -> edi "Inline stloc first use temp" -; V54 tmp45 [V54,T29] ( 3, 1.50) int -> edx "Inline stloc first use temp"
+; V53 tmp44 [V53,T27] ( 3, 1.50) int -> edi "Inline stloc first use temp" +; V54 tmp45 [V54,T28] ( 3, 1.50) int -> edx "Inline stloc first use temp"
;* V55 tmp46 [V55 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V56 tmp47 [V56 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.DateTime> ;* V57 tmp48 [V57 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" @@ -75,75 +75,74 @@ ;* V64 tmp55 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V65 tmp56 [V65 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V66 tmp57 [V66 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V67 tmp58 [V67,T12] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.TimeZoneInfo+CachedData> -; V68 tmp59 [V68,T22] ( 2, 2 ) ref -> eax class-hnd exact single-def "dup spill" <System.TimeZoneInfo> -; V69 tmp60 [V69,T13] ( 5, 2.50) ref -> eax
+; V67 tmp58 [V67,T11] ( 3, 3 ) ref -> ecx class-hnd exact single-def "Inlining Arg" <System.TimeZoneInfo+CachedData> +; V68 tmp59 [V68,T21] ( 2, 2 ) ref -> eax class-hnd exact single-def "dup spill" <System.TimeZoneInfo> +; V69 tmp60 [V69,T12] ( 5, 2.50) ref -> eax
;* V70 tmp61 [V70 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.DateTime> ; V71 tmp62 [V71 ] ( 13, 6.50) long -> [ebp-0x14] do-not-enreg[XR] multireg-ret addr-exposed "field V02._dateData (fldOffset=0x0)" P-DEP ; V72 tmp63 [V72 ] ( 4, 2 ) long -> [ebp-0x28] do-not-enreg[X] addr-exposed "field V04._dateData (fldOffset=0x0)" P-DEP ;* V73 tmp64 [V73 ] ( 0, 0 ) long -> zero-ref "field V05._ticks (fldOffset=0x0)" P-INDEP ; V74 tmp65 [V74 ] ( 2, 1 ) long -> [ebp-0x30] do-not-enreg[X] addr-exposed "field V07._dateData (fldOffset=0x0)" P-DEP
-; V75 tmp66 [V75,T30] ( 3, 1.50) long -> [ebp-0x40] do-not-enreg[BR] multireg-ret "field V11._dateData (fldOffset=0x0)" P-INDEP
+; V75 tmp66 [V75,T29] ( 3, 1.50) long -> [ebp-0x40] do-not-enreg[BR] multireg-ret "field V11._dateData (fldOffset=0x0)" P-INDEP
;* V76 tmp67 [V76 ] ( 0, 0 ) long -> zero-ref "field V12._dateData (fldOffset=0x0)" P-INDEP
-; V77 tmp68 [V77,T31] ( 3, 1.50) long -> [ebp-0x48] do-not-enreg[FR] multireg-ret "field V15._dateData (fldOffset=0x0)" P-INDEP -; V78 tmp69 [V78,T32] ( 3, 1.50) long -> [ebp-0x50] do-not-enreg[F] "field V16._dateData (fldOffset=0x0)" P-INDEP -; V79 tmp70 [V79,T33] ( 3, 1.50) long -> [ebp-0x58] do-not-enreg[FR] multireg-ret "field V18._ticks (fldOffset=0x0)" P-INDEP -; V80 tmp71 [V80,T34] ( 3, 1.50) long -> [ebp-0x60] do-not-enreg[F] "field V19._dateData (fldOffset=0x0)" P-INDEP -; V81 tmp72 [V81,T35] ( 3, 1.50) long -> [ebp-0x68] do-not-enreg[FR] multireg-ret "field V21._ticks (fldOffset=0x0)" P-INDEP -;* V82 tmp73 [V82,T66] ( 0, 0 ) long -> zero-ref "field V22._ticks (fldOffset=0x0)" P-INDEP -; V83 tmp74 [V83,T36] ( 3, 1.50) long -> [ebp-0x70] do-not-enreg[F] "field V23._dateData (fldOffset=0x0)" P-INDEP -; V84 tmp75 [V84,T37] ( 3, 1.50) long -> [ebp-0x78] do-not-enreg[F] "field V24._dateData (fldOffset=0x0)" P-INDEP -; V85 tmp76 [V85,T23] ( 2, 2 ) long -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V25._ticks (fldOffset=0x0)" P-DEP -; V86 tmp77 [V86,T15] ( 4, 2 ) byref -> eax "field V29._reference (fldOffset=0x0)" P-INDEP -;* V87 tmp78 [V87,T63] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
+; V77 tmp68 [V77,T30] ( 3, 1.50) long -> [ebp-0x48] do-not-enreg[FR] multireg-ret "field V15._dateData (fldOffset=0x0)" P-INDEP +; V78 tmp69 [V78,T31] ( 3, 1.50) long -> [ebp-0x50] do-not-enreg[F] "field V16._dateData (fldOffset=0x0)" P-INDEP +; V79 tmp70 [V79,T32] ( 3, 1.50) long -> [ebp-0x58] do-not-enreg[FR] multireg-ret "field V18._ticks (fldOffset=0x0)" P-INDEP +; V80 tmp71 [V80,T33] ( 3, 1.50) long -> [ebp-0x60] do-not-enreg[F] "field V19._dateData (fldOffset=0x0)" P-INDEP +; V81 tmp72 [V81,T34] ( 3, 1.50) long -> [ebp-0x68] do-not-enreg[FR] multireg-ret "field V21._ticks (fldOffset=0x0)" P-INDEP +;* V82 tmp73 [V82,T65] ( 0, 0 ) long -> zero-ref "field V22._ticks (fldOffset=0x0)" P-INDEP +; V83 tmp74 [V83,T35] ( 3, 1.50) long -> [ebp-0x70] do-not-enreg[F] "field V23._dateData (fldOffset=0x0)" P-INDEP +; V84 tmp75 [V84,T36] ( 3, 1.50) long -> [ebp-0x78] do-not-enreg[F] "field V24._dateData (fldOffset=0x0)" P-INDEP +; V85 tmp76 [V85,T22] ( 2, 2 ) long -> [ebp-0x38] do-not-enreg[H] hidden-struct-arg "field V25._ticks (fldOffset=0x0)" P-DEP +; V86 tmp77 [V86,T14] ( 4, 2 ) byref -> eax "field V29._reference (fldOffset=0x0)" P-INDEP +;* V87 tmp78 [V87,T62] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x4)" P-INDEP
;* V88 tmp79 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP ;* V89 tmp80 [V89 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x4)" P-INDEP
-; V90 tmp81 [V90,T51] ( 2, 1 ) byref -> eax single-def "field V33._reference (fldOffset=0x0)" P-INDEP -;* V91 tmp82 [V91,T67] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP -; V92 tmp83 [V92,T52] ( 2, 1 ) byref -> eax single-def "field V34._reference (fldOffset=0x0)" P-INDEP -;* V93 tmp84 [V93,T68] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP -; V94 tmp85 [V94,T16] ( 4, 2 ) byref -> eax "field V38._reference (fldOffset=0x0)" P-INDEP -;* V95 tmp86 [V95,T64] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
+; V90 tmp81 [V90,T50] ( 2, 1 ) byref -> eax single-def "field V33._reference (fldOffset=0x0)" P-INDEP +;* V91 tmp82 [V91,T66] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x4)" P-INDEP +; V92 tmp83 [V92,T51] ( 2, 1 ) byref -> eax single-def "field V34._reference (fldOffset=0x0)" P-INDEP +;* V93 tmp84 [V93,T67] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x4)" P-INDEP +; V94 tmp85 [V94,T15] ( 4, 2 ) byref -> eax "field V38._reference (fldOffset=0x0)" P-INDEP +;* V95 tmp86 [V95,T63] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x4)" P-INDEP
;* V96 tmp87 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V39._reference (fldOffset=0x0)" P-INDEP ;* V97 tmp88 [V97 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x4)" P-INDEP
-; V98 tmp89 [V98,T53] ( 2, 1 ) byref -> eax single-def "field V42._reference (fldOffset=0x0)" P-INDEP -;* V99 tmp90 [V99,T69] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP -; V100 tmp91 [V100,T54] ( 2, 1 ) byref -> eax single-def "field V43._reference (fldOffset=0x0)" P-INDEP -;* V101 tmp92 [V101,T70] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP -; V102 tmp93 [V102,T17] ( 4, 2 ) byref -> eax "field V47._reference (fldOffset=0x0)" P-INDEP -;* V103 tmp94 [V103,T65] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x4)" P-INDEP
+; V98 tmp89 [V98,T52] ( 2, 1 ) byref -> eax single-def "field V42._reference (fldOffset=0x0)" P-INDEP +;* V99 tmp90 [V99,T68] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x4)" P-INDEP +; V100 tmp91 [V100,T53] ( 2, 1 ) byref -> eax single-def "field V43._reference (fldOffset=0x0)" P-INDEP +;* V101 tmp92 [V101,T69] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP +; V102 tmp93 [V102,T16] ( 4, 2 ) byref -> eax "field V47._reference (fldOffset=0x0)" P-INDEP +;* V103 tmp94 [V103,T64] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x4)" P-INDEP
;* V104 tmp95 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V48._reference (fldOffset=0x0)" P-INDEP ;* V105 tmp96 [V105 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x4)" P-INDEP
-; V106 tmp97 [V106,T55] ( 2, 1 ) byref -> eax single-def "field V51._reference (fldOffset=0x0)" P-INDEP -;* V107 tmp98 [V107,T71] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x4)" P-INDEP -; V108 tmp99 [V108,T56] ( 2, 1 ) byref -> eax single-def "field V52._reference (fldOffset=0x0)" P-INDEP -;* V109 tmp100 [V109,T72] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP
+; V106 tmp97 [V106,T54] ( 2, 1 ) byref -> eax single-def "field V51._reference (fldOffset=0x0)" P-INDEP +;* V107 tmp98 [V107,T70] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x4)" P-INDEP +; V108 tmp99 [V108,T55] ( 2, 1 ) byref -> eax single-def "field V52._reference (fldOffset=0x0)" P-INDEP +;* V109 tmp100 [V109,T71] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x4)" P-INDEP
;* V110 tmp101 [V110 ] ( 0, 0 ) long -> zero-ref "field V55._dateData (fldOffset=0x0)" P-INDEP ;* V111 tmp102 [V111 ] ( 0, 0 ) long -> zero-ref "field V56._dateData (fldOffset=0x0)" P-INDEP
-; V112 tmp103 [V112,T38] ( 3, 1.50) long -> [ebp-0x80] do-not-enreg[F] "field V58._ticks (fldOffset=0x0)" P-INDEP -; V113 tmp104 [V113,T39] ( 3, 1.50) long -> [ebp-0x88] do-not-enreg[F] "field V70._dateData (fldOffset=0x0)" P-INDEP -;* V114 cse0 [V114,T73] ( 0, 0 ) int -> zero-ref "CSE - conservative" -; V115 cse1 [V115,T40] ( 3, 1.50) int -> ebx "CSE - conservative" -; V116 cse2 [V116,T41] ( 3, 1.50) int -> ebx "CSE - conservative" -; V117 cse3 [V117,T42] ( 3, 1.50) int -> ebx "CSE - conservative" -; V118 cse4 [V118,T08] ( 6, 4 ) int -> ebx "CSE - moderate" -; V119 rat0 [V119,T18] ( 4, 2 ) int -> eax "field V62.lo (fldOffset=0x0)" P-INDEP -; V120 rat1 [V120,T19] ( 4, 2 ) int -> edx "field V62.hi (fldOffset=0x4)" P-INDEP -; V121 rat2 [V121,T20] ( 4, 2 ) int -> eax "field V66.lo (fldOffset=0x0)" P-INDEP -; V122 rat3 [V122,T21] ( 4, 2 ) int -> edx "field V66.hi (fldOffset=0x4)" P-INDEP -; V123 rat4 [V123,T06] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable" -; V124 rat5 [V124 ] ( 1, 1 ) long -> [ebp-0x90] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V125 rat6 [V125,T43] ( 2, 1.50) int -> ecx "field V124.lo (fldOffset=0x0)" P-INDEP -; V126 rat7 [V126,T44] ( 2, 1.50) int -> edi "field V124.hi (fldOffset=0x4)" P-INDEP -; V127 rat8 [V127 ] ( 1, 1 ) long -> [ebp-0x98] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V128 rat9 [V128,T45] ( 2, 1.50) int -> eax "field V127.lo (fldOffset=0x0)" P-INDEP -; V129 rat10 [V129,T46] ( 2, 1.50) int -> edx "field V127.hi (fldOffset=0x4)" P-INDEP -; V130 rat11 [V130 ] ( 1, 1 ) long -> [ebp-0xA0] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V131 rat12 [V131,T47] ( 2, 1.50) int -> ecx "field V130.lo (fldOffset=0x0)" P-INDEP -; V132 rat13 [V132,T48] ( 2, 1.50) int -> edi "field V130.hi (fldOffset=0x4)" P-INDEP -; V133 rat14 [V133 ] ( 1, 1 ) long -> [ebp-0xA8] multireg-ret "ReplaceWithLclVar is creating a new local variable" -; V134 rat15 [V134,T49] ( 2, 1.50) int -> eax "field V133.lo (fldOffset=0x0)" P-INDEP -; V135 rat16 [V135,T50] ( 2, 1.50) int -> edx "field V133.hi (fldOffset=0x4)" P-INDEP
+; V112 tmp103 [V112,T37] ( 3, 1.50) long -> [ebp-0x80] do-not-enreg[F] "field V58._ticks (fldOffset=0x0)" P-INDEP +; V113 tmp104 [V113,T38] ( 3, 1.50) long -> [ebp-0x88] do-not-enreg[F] "field V70._dateData (fldOffset=0x0)" P-INDEP +;* V114 cse0 [V114,T72] ( 0, 0 ) int -> zero-ref "CSE - conservative" +; V115 cse1 [V115,T39] ( 3, 1.50) int -> ebx "CSE - conservative" +; V116 cse2 [V116,T40] ( 3, 1.50) int -> ebx "CSE - conservative" +; V117 cse3 [V117,T41] ( 3, 1.50) int -> ebx "CSE - conservative" +; V118 rat0 [V118,T17] ( 4, 2 ) int -> eax "field V62.lo (fldOffset=0x0)" P-INDEP +; V119 rat1 [V119,T18] ( 4, 2 ) int -> edx "field V62.hi (fldOffset=0x4)" P-INDEP +; V120 rat2 [V120,T19] ( 4, 2 ) int -> eax "field V66.lo (fldOffset=0x0)" P-INDEP +; V121 rat3 [V121,T20] ( 4, 2 ) int -> edx "field V66.hi (fldOffset=0x4)" P-INDEP +; V122 rat4 [V122,T06] ( 3, 6 ) int -> eax "ReplaceWithLclVar is creating a new local variable" +; V123 rat5 [V123 ] ( 1, 1 ) long -> [ebp-0x90] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V124 rat6 [V124,T42] ( 2, 1.50) int -> ecx "field V123.lo (fldOffset=0x0)" P-INDEP +; V125 rat7 [V125,T43] ( 2, 1.50) int -> edi "field V123.hi (fldOffset=0x4)" P-INDEP +; V126 rat8 [V126 ] ( 1, 1 ) long -> [ebp-0x98] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V127 rat9 [V127,T44] ( 2, 1.50) int -> eax "field V126.lo (fldOffset=0x0)" P-INDEP +; V128 rat10 [V128,T45] ( 2, 1.50) int -> edx "field V126.hi (fldOffset=0x4)" P-INDEP +; V129 rat11 [V129 ] ( 1, 1 ) long -> [ebp-0xA0] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V130 rat12 [V130,T46] ( 2, 1.50) int -> ecx "field V129.lo (fldOffset=0x0)" P-INDEP +; V131 rat13 [V131,T47] ( 2, 1.50) int -> edi "field V129.hi (fldOffset=0x4)" P-INDEP +; V132 rat14 [V132 ] ( 1, 1 ) long -> [ebp-0xA8] multireg-ret "ReplaceWithLclVar is creating a new local variable" +; V133 rat15 [V133,T48] ( 2, 1.50) int -> eax "field V132.lo (fldOffset=0x0)" P-INDEP +; V134 rat16 [V134,T49] ( 2, 1.50) int -> edx "field V132.hi (fldOffset=0x4)" P-INDEP
; TEMP_01 int -> [ebp-0xAC] ; ; Lcl frame size = 160 @@ -426,8 +425,7 @@ G_M18003_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 mov dword ptr [ebp-0x10], edx ;; size=12 bbWeight=0.50 PerfScore 2.00 G_M18003_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
- mov ebx, dword ptr [ebp+0x10] - mov eax, ebx
+ mov eax, dword ptr [ebp+0x10]
and eax, 0xD1FFAB1E shr eax, 16 cmp eax, 3 @@ -437,20 +435,20 @@ G_M18003_IG16: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e lea ecx, G_M18003_IG02 add edx, ecx jmp edx
- ;; size=41 bbWeight=1 PerfScore 9.00
+ ;; size=39 bbWeight=1 PerfScore 8.75
G_M18003_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref mov eax, dword ptr [ebp-0x14] mov edx, dword ptr [ebp-0x10] mov dword ptr [ebp-0x50], eax mov dword ptr [ebp-0x4C], edx
- mov eax, ebx
+ mov eax, dword ptr [ebp+0x10]
and eax, 0xFF00 shr eax, 8 mov ecx, 0xE10 imul edx:eax, ecx mov ecx, eax mov edi, edx
- movzx eax, bl
+ movzx eax, byte ptr [ebp+0x10]
mov edx, 60 imul edx:eax, edx add eax, ecx @@ -477,13 +475,13 @@ G_M18003_IG17: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 lea ecx, [ebp-0x20] call [System.DateTimeOffset:.ctor(System.DateTime,System.TimeSpan):this] jmp G_M18003_IG23
- ;; size=131 bbWeight=0.50 PerfScore 16.75
+ ;; size=133 bbWeight=0.50 PerfScore 17.50
G_M18003_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref mov eax, dword ptr [ebp-0x14] mov edx, dword ptr [ebp-0x10] mov dword ptr [ebp-0x60], eax mov dword ptr [ebp-0x5C], edx
- mov eax, ebx
+ mov eax, dword ptr [ebp+0x10]
and eax, 0xFF00 shr eax, 8 neg eax @@ -491,7 +489,7 @@ G_M18003_IG18: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 imul edx:eax, ecx mov ecx, eax mov edi, edx
- movzx eax, bl
+ movzx eax, byte ptr [ebp+0x10]
...

+4 (+0.19%) : 1360.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],System.Func3[System.Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 this [V00,T09] ( 9, 9 ) ref -> [ebp-0x10C] this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]> ; V01 arg1 [V01,T08] ( 16, 9 ) ref -> esi class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
-; V02 arg2 [V02,T01] ( 40, 23.50) ref -> ebx class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V02 arg2 [V02,T02] ( 40, 23.50) ref -> ebx class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
; V03 arg3 [V03,T18] ( 8, 7.50) ref -> [ebp+0x0C] class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,ulong]> ; V04 TypeCtx [V04,T15] ( 12, 8.96) int -> [ebp+0x08] single-def ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref @@ -31,7 +31,7 @@ ;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V23 tmp13 [V23,T84] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V23 tmp13 [V23,T81] ( 2, 1 ) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
;* V24 tmp14 [V24,T86] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V25 tmp15 [V25 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V26 tmp16 [V26,T87] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -43,7 +43,7 @@ ;* V32 tmp22 [V32 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V33 tmp23 [V33,T25] ( 5, 2.50) ref -> [ebp-0x11C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V34 tmp24 [V34,T10] ( 10, 10 ) ref -> [ebp-0x120] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V35 tmp25 [V35,T81] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp25 [V35,T83] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V36 tmp26 [V36,T30] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V37 tmp27 [V37,T20] ( 7, 7 ) struct (32) [ebp-0x40] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V38 tmp28 [V38,T71] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp" @@ -61,7 +61,7 @@ ;* V50 tmp40 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V52 tmp42 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V53 tmp43 [V53,T85] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V53 tmp43 [V53,T82] ( 2, 1 ) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
;* V54 tmp44 [V54,T88] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V55 tmp45 [V55 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V56 tmp46 [V56,T89] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -73,7 +73,7 @@ ;* V62 tmp52 [V62 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V63 tmp53 [V63,T26] ( 5, 2.50) ref -> [ebp-0x124] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V64 tmp54 [V64,T11] ( 10, 10 ) ref -> [ebp-0x128] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V65 tmp55 [V65,T82] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V65 tmp55 [V65,T84] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V66 tmp56 [V66,T32] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V67 tmp57 [V67,T22] ( 7, 7 ) struct (32) [ebp-0x88] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V68 tmp58 [V68,T73] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp" @@ -105,7 +105,7 @@ ;* V94 tmp84 [V94 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V95 tmp85 [V95,T44] ( 4, 2 ) ref -> [ebp-0x12C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V96 tmp86 [V96,T12] ( 10, 10 ) ref -> [ebp-0x130] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V97 tmp87 [V97,T83] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V97 tmp87 [V97,T85] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V98 tmp88 [V98,T35] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V99 tmp89 [V99,T16] ( 8, 8 ) struct (32) [ebp-0xD0] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V100 tmp90 [V100,T76] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp" @@ -118,9 +118,9 @@ ;* V107 tmp97 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V108 tmp98 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V109 tmp99 [V109,T04] ( 19, 19 ) ref -> eax "Single return block return value"
-; V110 tmp100 [V110,T27] ( 6, 3 ) int -> esi "field V28._info (fldOffset=0x0)" P-INDEP
+; V110 tmp100 [V110,T27] ( 6, 3 ) int -> edi "field V28._info (fldOffset=0x0)" P-INDEP
;* V111 tmp101 [V111 ] ( 0, 0 ) int -> zero-ref "field V39._info (fldOffset=0x0)" P-INDEP
-; V112 tmp102 [V112,T28] ( 6, 3 ) int -> esi "field V58._info (fldOffset=0x0)" P-INDEP
+; V112 tmp102 [V112,T28] ( 6, 3 ) int -> edi "field V58._info (fldOffset=0x0)" P-INDEP
;* V113 tmp103 [V113 ] ( 0, 0 ) int -> zero-ref "field V69._info (fldOffset=0x0)" P-INDEP ; V114 tmp104 [V114,T29] ( 6, 3 ) int -> edi "field V94._info (fldOffset=0x0)" P-INDEP ;* V115 tmp105 [V115 ] ( 0, 0 ) int -> zero-ref "field V101._info (fldOffset=0x0)" P-INDEP @@ -150,7 +150,7 @@ ; V139 tmp129 [V139,T65] ( 2, 2 ) ref -> edx single-def "argument with side effect" ; V140 tmp130 [V140,T66] ( 2, 2 ) ref -> [ebp-0x134] spill-single-def "argument with side effect" ; V141 tmp131 [V141,T67] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V142 tmp132 [V142,T02] ( 3, 24 ) ref -> edx "arr expr"
+; V142 tmp132 [V142,T01] ( 3, 24 ) ref -> edx "arr expr"
; V143 tmp133 [V143,T06] ( 2, 16 ) ref -> edx "argument with side effect" ; V144 cse0 [V144,T07] ( 3, 12 ) int -> edx "CSE - moderate" ; V145 cse1 [V145,T78] ( 3, 1.50) ref -> eax "CSE - conservative" @@ -161,19 +161,19 @@ ; V150 rat4 [V150,T58] ( 3, 2 ) int -> edx "runtime lookup" ; V151 rat5 [V151,T43] ( 3, 2.80) int -> ecx "spilling expr" ; V152 rat6 [V152,T46] ( 3, 2.24) int -> edx "fgMakeTemp is creating a new local variable"
-;* V153 rat7 [V153,T90] ( 0, 0 ) int -> zero-ref "field V25.lo (fldOffset=0x0)" P-INDEP -;* V154 rat8 [V154,T91] ( 0, 0 ) int -> zero-ref "field V25.hi (fldOffset=0x4)" P-INDEP
+;* V153 rat7 [V153 ] ( 0, 0 ) int -> zero-ref "field V25.lo (fldOffset=0x0)" P-INDEP +;* V154 rat8 [V154 ] ( 0, 0 ) int -> zero-ref "field V25.hi (fldOffset=0x4)" P-INDEP
;* V155 rat9 [V155 ] ( 0, 0 ) int -> zero-ref "field V27.lo (fldOffset=0x0)" P-INDEP ;* V156 rat10 [V156 ] ( 0, 0 ) int -> zero-ref "field V27.hi (fldOffset=0x4)" P-INDEP
-; V157 rat11 [V157,T50] ( 4, 2 ) int -> edi "field V30.lo (fldOffset=0x0)" P-INDEP
+; V157 rat11 [V157,T50] ( 4, 2 ) int -> esi "field V30.lo (fldOffset=0x0)" P-INDEP
; V158 rat12 [V158,T51] ( 4, 2 ) int -> [ebp-0xF4] spill-single-def "field V30.hi (fldOffset=0x4)" P-INDEP ;* V159 rat13 [V159 ] ( 0, 0 ) int -> zero-ref "field V31.lo (fldOffset=0x0)" P-INDEP ;* V160 rat14 [V160 ] ( 0, 0 ) int -> zero-ref "field V31.hi (fldOffset=0x4)" P-INDEP
-;* V161 rat15 [V161,T92] ( 0, 0 ) int -> zero-ref "field V55.lo (fldOffset=0x0)" P-INDEP -;* V162 rat16 [V162,T93] ( 0, 0 ) int -> zero-ref "field V55.hi (fldOffset=0x4)" P-INDEP
+;* V161 rat15 [V161 ] ( 0, 0 ) int -> zero-ref "field V55.lo (fldOffset=0x0)" P-INDEP +;* V162 rat16 [V162 ] ( 0, 0 ) int -> zero-ref "field V55.hi (fldOffset=0x4)" P-INDEP
;* V163 rat17 [V163 ] ( 0, 0 ) int -> zero-ref "field V57.lo (fldOffset=0x0)" P-INDEP ;* V164 rat18 [V164 ] ( 0, 0 ) int -> zero-ref "field V57.hi (fldOffset=0x4)" P-INDEP
-; V165 rat19 [V165,T52] ( 4, 2 ) int -> edi "field V60.lo (fldOffset=0x0)" P-INDEP
+; V165 rat19 [V165,T52] ( 4, 2 ) int -> esi "field V60.lo (fldOffset=0x0)" P-INDEP
; V166 rat20 [V166,T53] ( 4, 2 ) int -> [ebp-0xF8] spill-single-def "field V60.hi (fldOffset=0x4)" P-INDEP ;* V167 rat21 [V167 ] ( 0, 0 ) int -> zero-ref "field V61.lo (fldOffset=0x0)" P-INDEP ;* V168 rat22 [V168 ] ( 0, 0 ) int -> zero-ref "field V61.hi (fldOffset=0x4)" P-INDEP @@ -341,6 +341,8 @@ G_M44013_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; gcrRegs +[eax] test eax, eax jne G_M44013_IG25
+ mov esi, ebx + ; gcrRegs +[esi]
push 0 push 0 push 1 @@ -351,25 +353,25 @@ G_M44013_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 mov edx, 1 call [<unknown method>] ; gcrRegs -[eax]
- mov esi, eax
+ mov edi, eax
push 0 push 0
- mov ecx, ebx
+ mov ecx, esi
; gcrRegs +[ecx] mov edx, 5 call [<unknown method>]
- ; gcrRegs -[ecx] - mov edi, eax
+ ; gcrRegs -[ecx esi] + mov esi, eax
mov eax, edx mov dword ptr [ebp-0xF4], edx mov ecx, gword ptr [ebx+0x54] ; gcrRegs +[ecx]
- mov dword ptr [ebp-0x40], edi
+ mov dword ptr [ebp-0x40], esi
mov dword ptr [ebp-0x3C], eax mov dword ptr [ebp-0x30], 5 mov dword ptr [ebp-0x2C], -1 mov dword ptr [ebp-0x28], -1
- mov dword ptr [ebp-0x24], esi
+ mov dword ptr [ebp-0x24], edi
cmp byte ptr [ecx], cl push dword ptr [ebp-0x24] push dword ptr [ebp-0x28] @@ -384,12 +386,12 @@ G_M44013_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; byrRegs +[eax] test eax, eax je SHORT G_M44013_IG19
- mov esi, gword ptr [eax] - ; gcrRegs +[esi]
+ mov edi, gword ptr [eax] + ; gcrRegs +[edi]
jmp G_M44013_IG24
- ;; size=141 bbWeight=0.50 PerfScore 23.62
+ ;; size=143 bbWeight=0.50 PerfScore 23.75
G_M44013_IG19: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] call CORINFO_HELP_NEWSFAST @@ -408,13 +410,13 @@ G_M44013_IG20: ; bbWeight=0.50, gcVars=000000000000000000000400 {V34}, gc mov dword ptr [eax+0x20], -1 lea ecx, bword ptr [eax+0x04] ; byrRegs +[ecx]
- mov dword ptr [ecx], edi
+ mov dword ptr [ecx], esi
mov edx, dword ptr [ebp-0xF4] mov dword ptr [ecx+0x04], edx
- mov dword ptr [eax+0x24], esi - test esi, 32
+ mov dword ptr [eax+0x24], edi + test edi, 32
je SHORT G_M44013_IG21
- test esi, 8
+ test edi, 8
jne SHORT G_M44013_IG22 ;; size=50 bbWeight=0.50 PerfScore 5.00 G_M44013_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz @@ -444,13 +446,13 @@ G_M44013_IG23: ; bbWeight=0.50, gcrefRegs=0000000A {ecx ebx}, byrefRegs=0 ; byrRegs -[edx] mov ecx, gword ptr [ebx+0x54] ; gcrRegs +[ecx]
- mov dword ptr [ebp-0x60], edi - mov edi, dword ptr [ebp-0xF4] - mov dword ptr [ebp-0x5C], edi
+ mov dword ptr [ebp-0x60], esi + mov esi, dword ptr [ebp-0xF4] + mov dword ptr [ebp-0x5C], esi
mov dword ptr [ebp-0x50], 5 mov dword ptr [ebp-0x4C], -1 mov dword ptr [ebp-0x48], -1
- mov dword ptr [ebp-0x44], esi
+ mov dword ptr [ebp-0x44], edi
cmp byte ptr [ecx], cl push dword ptr [ebp-0x44] push dword ptr [ebp-0x48] @@ -476,37 +478,39 @@ G_M44013_IG23: ; bbWeight=0.50, gcrefRegs=0000000A {ecx ebx}, byrefRegs=0 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov esi, gword ptr [ebp-0x11C] - ; gcrRegs +[esi]
+ mov edi, gword ptr [ebp-0x11C] + ; gcrRegs +[edi]
;; size=121 bbWeight=0.50 PerfScore 16.75
-G_M44013_IG24: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M44013_IG24: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V33} lea edx, bword ptr [ebx+0x30] ; byrRegs +[edx]
- call CORINFO_HELP_ASSIGN_REF_ESI
+ call CORINFO_HELP_ASSIGN_REF_EDI
; gcrRegs -[ebx] ; byrRegs -[edx]
- mov eax, esi
+ mov eax, edi
; gcrRegs +[eax] ;; size=10 bbWeight=0.50 PerfScore 0.88 G_M44013_IG25: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
jmp G_M44013_IG52 ;; size=5 bbWeight=0.50 PerfScore 1.00 G_M44013_IG26: ; bbWeight=0.25, gcVars=000000000000000002000000 {V33}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax] +[ebx] ; GC ptr vars +{V33}
- mov esi, gword ptr [ebp-0x11C] - ; gcrRegs +[esi]
+ mov edi, gword ptr [ebp-0x11C] + ; gcrRegs +[edi]
jmp SHORT G_M44013_IG24 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M44013_IG27: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
; GC ptr vars -{V33} mov eax, gword ptr [ebx+0x34] ; gcrRegs +[eax] test eax, eax jne G_M44013_IG34
+ mov esi, ebx + ; gcrRegs +[esi]
push 0 push 0 push 1 @@ -517,25 +521,25 @@ G_M44013_IG27: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcref mov edx, 1 call [<unknown method>] ; gcrRegs -[eax]
- mov esi, eax
+ mov edi, eax
...

+40 (+0.57%) : 1293.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)

@@ -30,11 +30,11 @@ ; V19 loc17 [V19,T198] ( 3, 8 ) ubyte -> ecx ;* V20 loc18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V21 loc19 [V21,T178] ( 3, 10 ) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.Text.RegularExpressions.Symbolic.BDD>
-; V22 loc20 [V22,T301] ( 2, 0.50) ref -> ebx class-hnd exact <System.String> -; V23 loc21 [V23,T302] ( 10, 0 ) ref -> esi class-hnd <System.String> -; V24 loc22 [V24,T299] ( 6, 1.50) ubyte -> eax
+; V22 loc20 [V22,T297] ( 2, 0.50) ref -> ebx class-hnd exact <System.String> +; V23 loc21 [V23,T298] ( 10, 0 ) ref -> esi class-hnd <System.String> +; V24 loc22 [V24,T295] ( 6, 1.50) ubyte -> eax
;* V25 loc23 [V25 ] ( 0, 0 ) ubyte -> zero-ref
-; V26 loc24 [V26,T63] ( 2, 36 ) ref -> edi class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V26 loc24 [V26,T59] ( 2, 36 ) ref -> edi class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V27 loc25 [V27,T11] ( 5,132 ) int -> ebx ;* V28 loc26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]> ; V29 loc27 [V29,T66] ( 6, 24 ) ref -> edi class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -52,7 +52,7 @@ ; V41 tmp4 [V41,T20] ( 3, 96 ) ref -> [ebp-0x2B4] class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode> ; V42 tmp5 [V42,T13] ( 2,128 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]> ;* V43 tmp6 [V43 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]>
-; V44 tmp7 [V44,T303] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V44 tmp7 [V44,T299] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
; V45 tmp8 [V45,T04] ( 4,160 ) ref -> [ebp-0x2BC] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> ; V46 tmp9 [V46,T77] ( 4, 24 ) ref -> ebx class-hnd exact "impAppendStmt" <<unknown class>> ;* V47 tmp10 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[System.__Canon]> @@ -71,10 +71,10 @@ ;* V60 tmp23 [V60 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V61 tmp24 [V61,T33] ( 14, 64 ) ref -> [ebp-0x2C4] ; V62 tmp25 [V62,T67] ( 6, 24 ) ref -> edi
-; V63 tmp26 [V63,T240] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V63 tmp26 [V63,T244] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V64 tmp27 [V64,T226] ( 3, 5 ) int -> eax "Inlining Arg"
-; V65 tmp28 [V65,T237] ( 4, 3 ) int -> [ebp-0x20] spill-single-def "Inline stloc first use temp" -; V66 tmp29 [V66,T239] ( 3, 2.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V65 tmp28 [V65,T241] ( 4, 3 ) int -> [ebp-0x20] spill-single-def "Inline stloc first use temp" +; V66 tmp29 [V66,T243] ( 3, 2.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V67 tmp30 [V67 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ;* V68 tmp31 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V69 tmp32 [V69,T97] ( 3, 20 ) ref -> edi class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD> @@ -93,14 +93,14 @@ ;* V82 tmp45 [V82 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V83 tmp46 [V83,T142] ( 5, 10 ) ref -> [ebp-0x2CC] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V84 tmp47 [V84,T48] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V85 tmp48 [V85,T228] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V85 tmp48 [V85,T232] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V86 tmp49 [V86,T157] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V87 tmp50 [V87,T87] ( 5, 20 ) struct (28) [ebp-0x40] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V88 tmp51 [V88,T212] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V89 tmp52 [V89 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V90 tmp53 [V90,T243] ( 0, 0 ) ref -> zero-ref
+;* V90 tmp53 [V90,T247] ( 0, 0 ) ref -> zero-ref
;* V91 tmp54 [V91 ] ( 0, 0 ) ref -> zero-ref
-;* V92 tmp55 [V92,T244] ( 0, 0 ) ref -> zero-ref
+;* V92 tmp55 [V92,T248] ( 0, 0 ) ref -> zero-ref
; V93 tmp56 [V93,T158] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V94 tmp57 [V94,T88] ( 5, 20 ) struct (28) [ebp-0x5C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V95 tmp58 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -122,14 +122,14 @@ ;* V111 tmp74 [V111 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V112 tmp75 [V112,T143] ( 5, 10 ) ref -> [ebp-0x2D4] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V113 tmp76 [V113,T49] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V114 tmp77 [V114,T229] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V114 tmp77 [V114,T233] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V115 tmp78 [V115,T159] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V116 tmp79 [V116,T89] ( 5, 20 ) struct (28) [ebp-0x7C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V117 tmp80 [V117,T213] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V118 tmp81 [V118 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V119 tmp82 [V119,T245] ( 0, 0 ) ref -> zero-ref
+;* V119 tmp82 [V119,T249] ( 0, 0 ) ref -> zero-ref
;* V120 tmp83 [V120 ] ( 0, 0 ) ref -> zero-ref
-;* V121 tmp84 [V121,T246] ( 0, 0 ) ref -> zero-ref
+;* V121 tmp84 [V121,T250] ( 0, 0 ) ref -> zero-ref
; V122 tmp85 [V122,T160] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V123 tmp86 [V123,T90] ( 5, 20 ) struct (28) [ebp-0x98] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V124 tmp87 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -154,14 +154,14 @@ ;* V143 tmp106 [V143 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V144 tmp107 [V144,T144] ( 5, 10 ) ref -> [ebp-0x2DC] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V145 tmp108 [V145,T50] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V146 tmp109 [V146,T230] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V146 tmp109 [V146,T234] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V147 tmp110 [V147,T161] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V148 tmp111 [V148,T91] ( 5, 20 ) struct (28) [ebp-0xB8] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V149 tmp112 [V149,T214] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V150 tmp113 [V150 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V151 tmp114 [V151,T247] ( 0, 0 ) ref -> zero-ref
+;* V151 tmp114 [V151,T251] ( 0, 0 ) ref -> zero-ref
;* V152 tmp115 [V152 ] ( 0, 0 ) ref -> zero-ref
-;* V153 tmp116 [V153,T248] ( 0, 0 ) ref -> zero-ref
+;* V153 tmp116 [V153,T252] ( 0, 0 ) ref -> zero-ref
; V154 tmp117 [V154,T162] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V155 tmp118 [V155,T92] ( 5, 20 ) struct (28) [ebp-0xD4] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V156 tmp119 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -201,14 +201,14 @@ ; V190 tmp153 [V190,T15] ( 2,128 ) ref -> eax "CASTCLASS eval op1" ;* V191 tmp154 [V191 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V192 tmp155 [V192,T26] ( 4, 76 ) ref -> eax class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V193 tmp156 [V193,T61] ( 3, 36 ) ref -> [ebp-0x2EC] spill-single-def "CASTCLASS eval op1"
+; V193 tmp156 [V193,T57] ( 3, 36 ) ref -> [ebp-0x2EC] spill-single-def "CASTCLASS eval op1"
; V194 tmp157 [V194,T100] ( 3, 20 ) int -> edx "fgMakeTemp is creating a new local variable" ; V195 tmp158 [V195,T28] ( 6, 76 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>> ; V196 tmp159 [V196,T41] ( 3, 48 ) ref -> ecx class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode> ; V197 tmp160 [V197,T16] ( 2,128 ) ref -> ecx "CASTCLASS eval op1" ;* V198 tmp161 [V198 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V199 tmp162 [V199,T27] ( 4, 76 ) ref -> ecx class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V200 tmp163 [V200,T62] ( 3, 36 ) ref -> [ebp-0x2F0] spill-single-def "CASTCLASS eval op1"
+; V200 tmp163 [V200,T58] ( 3, 36 ) ref -> [ebp-0x2F0] spill-single-def "CASTCLASS eval op1"
; V201 tmp164 [V201,T101] ( 3, 20 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V202 tmp165 [V202,T29] ( 6, 76 ) ref -> [ebp-0x2F4] class-hnd "spilling QMark2" <<unknown class>> ; V203 tmp166 [V203,T42] ( 3, 48 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]> @@ -233,14 +233,14 @@ ;* V222 tmp185 [V222 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V223 tmp186 [V223,T145] ( 5, 10 ) ref -> [ebp-0x300] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V224 tmp187 [V224,T51] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V225 tmp188 [V225,T231] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V225 tmp188 [V225,T235] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V226 tmp189 [V226,T163] ( 3, 12 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V227 tmp190 [V227,T93] ( 5, 20 ) struct (28) [ebp-0x138] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V228 tmp191 [V228,T215] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V229 tmp192 [V229 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V230 tmp193 [V230,T249] ( 0, 0 ) ref -> zero-ref
+;* V230 tmp193 [V230,T253] ( 0, 0 ) ref -> zero-ref
;* V231 tmp194 [V231 ] ( 0, 0 ) ref -> zero-ref
-;* V232 tmp195 [V232,T250] ( 0, 0 ) ref -> zero-ref
+;* V232 tmp195 [V232,T254] ( 0, 0 ) ref -> zero-ref
; V233 tmp196 [V233,T164] ( 3, 12 ) ref -> eax class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V234 tmp197 [V234,T94] ( 5, 20 ) struct (28) [ebp-0x154] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V235 tmp198 [V235 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -261,38 +261,38 @@ ;* V250 tmp213 [V250 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V251 tmp214 [V251,T146] ( 5, 10 ) ref -> [ebp-0x30C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V252 tmp215 [V252,T52] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V253 tmp216 [V253,T232] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V253 tmp216 [V253,T236] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V254 tmp217 [V254,T165] ( 3, 12 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V255 tmp218 [V255,T95] ( 5, 20 ) struct (28) [ebp-0x174] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V256 tmp219 [V256,T216] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V257 tmp220 [V257 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V258 tmp221 [V258,T251] ( 0, 0 ) ref -> zero-ref
+;* V258 tmp221 [V258,T255] ( 0, 0 ) ref -> zero-ref
;* V259 tmp222 [V259 ] ( 0, 0 ) ref -> zero-ref
-;* V260 tmp223 [V260,T252] ( 0, 0 ) ref -> zero-ref
+;* V260 tmp223 [V260,T256] ( 0, 0 ) ref -> zero-ref
; V261 tmp224 [V261,T166] ( 3, 12 ) ref -> eax class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V262 tmp225 [V262,T96] ( 5, 20 ) struct (28) [ebp-0x190] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V263 tmp226 [V263 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V264 tmp227 [V264 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V265 tmp228 [V265 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V266 tmp229 [V266,T57] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V266 tmp229 [V266,T60] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V267 tmp230 [V267,T111] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V268 tmp231 [V268,T138] ( 4, 14 ) ref -> edx ;* V269 tmp232 [V269 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V270 tmp233 [V270 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V271 tmp234 [V271 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V272 tmp235 [V272,T253] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V273 tmp236 [V273,T271] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V274 tmp237 [V274,T254] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V275 tmp238 [V275,T272] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V272 tmp235 [V272,T228] ( 2, 4 ) ref -> [ebp-0x310] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V273 tmp236 [V273,T267] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V274 tmp237 [V274 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V275 tmp238 [V275,T268] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V276 tmp239 [V276 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V277 tmp240 [V277 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V278 tmp241 [V278 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V279 tmp242 [V279,T185] ( 4, 8 ) ref -> [ebp-0x310] spill-single-def
+; V279 tmp242 [V279,T185] ( 4, 8 ) ref -> [ebp-0x314] spill-single-def
;* V280 tmp243 [V280 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V281 tmp244 [V281 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V282 tmp245 [V282,T147] ( 5, 10 ) ref -> [ebp-0x314] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V283 tmp246 [V283,T53] ( 10, 40 ) ref -> [ebp-0x318] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V284 tmp247 [V284,T233] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V282 tmp245 [V282,T147] ( 5, 10 ) ref -> [ebp-0x318] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V283 tmp246 [V283,T53] ( 10, 40 ) ref -> [ebp-0x31C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V284 tmp247 [V284,T237] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V285 tmp248 [V285,T167] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V286 tmp249 [V286,T68] ( 6, 24 ) struct (28) [ebp-0x1AC] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V287 tmp250 [V287,T217] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -305,25 +305,25 @@ ;* V294 tmp257 [V294 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V295 tmp258 [V295 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V296 tmp259 [V296 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V297 tmp260 [V297,T58] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V297 tmp260 [V297,T61] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V298 tmp261 [V298,T112] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V299 tmp262 [V299,T139] ( 4, 14 ) ref -> edx ;* V300 tmp263 [V300 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V301 tmp264 [V301 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V302 tmp265 [V302 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V303 tmp266 [V303,T255] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V304 tmp267 [V304,T273] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V305 tmp268 [V305,T256] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V306 tmp269 [V306,T274] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V303 tmp266 [V303,T229] ( 2, 4 ) ref -> [ebp-0x320] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V304 tmp267 [V304,T269] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V305 tmp268 [V305 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V306 tmp269 [V306,T270] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V307 tmp270 [V307 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V308 tmp271 [V308 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V309 tmp272 [V309 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V310 tmp273 [V310,T186] ( 4, 8 ) ref -> [ebp-0x31C] spill-single-def
+; V310 tmp273 [V310,T186] ( 4, 8 ) ref -> [ebp-0x324] spill-single-def
;* V311 tmp274 [V311 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V312 tmp275 [V312 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V313 tmp276 [V313,T148] ( 5, 10 ) ref -> [ebp-0x320] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V314 tmp277 [V314,T54] ( 10, 40 ) ref -> [ebp-0x324] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V315 tmp278 [V315,T234] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V313 tmp276 [V313,T148] ( 5, 10 ) ref -> [ebp-0x328] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V314 tmp277 [V314,T54] ( 10, 40 ) ref -> [ebp-0x32C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V315 tmp278 [V315,T238] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V316 tmp279 [V316,T169] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V317 tmp280 [V317,T70] ( 6, 24 ) struct (28) [ebp-0x1E4] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V318 tmp281 [V318,T219] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -336,25 +336,25 @@ ;* V325 tmp288 [V325 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V326 tmp289 [V326 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V327 tmp290 [V327 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V328 tmp291 [V328,T59] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V328 tmp291 [V328,T62] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V329 tmp292 [V329,T113] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V330 tmp293 [V330,T140] ( 4, 14 ) ref -> edx ;* V331 tmp294 [V331 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V332 tmp295 [V332 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V333 tmp296 [V333 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V334 tmp297 [V334,T257] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V335 tmp298 [V335,T275] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V336 tmp299 [V336,T258] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V337 tmp300 [V337,T276] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V334 tmp297 [V334,T230] ( 2, 4 ) ref -> [ebp-0x330] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V335 tmp298 [V335,T271] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V336 tmp299 [V336 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V337 tmp300 [V337,T272] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V338 tmp301 [V338 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V339 tmp302 [V339 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V340 tmp303 [V340 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V341 tmp304 [V341,T187] ( 4, 8 ) ref -> [ebp-0x328] spill-single-def
+; V341 tmp304 [V341,T187] ( 4, 8 ) ref -> [ebp-0x334] spill-single-def
;* V342 tmp305 [V342 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V343 tmp306 [V343 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V344 tmp307 [V344,T149] ( 5, 10 ) ref -> [ebp-0x32C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V345 tmp308 [V345,T55] ( 10, 40 ) ref -> [ebp-0x330] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V346 tmp309 [V346,T235] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V344 tmp307 [V344,T149] ( 5, 10 ) ref -> [ebp-0x338] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V345 tmp308 [V345,T55] ( 10, 40 ) ref -> [ebp-0x33C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V346 tmp309 [V346,T239] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V347 tmp310 [V347,T171] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V348 tmp311 [V348,T72] ( 6, 24 ) struct (28) [ebp-0x21C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V349 tmp312 [V349,T221] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -367,25 +367,25 @@ ...

benchmarks.run_pgo.windows.x86.checked.mch

-21 (-40.38%) : 743.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)

@@ -6,39 +6,28 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [ebp-0x08] do-not-enreg[]
-; TEMP_01 byref -> [ebp-0x0C]
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M18678_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- sub esp, 12 - xor eax, eax - mov dword ptr [ebp-0x0C], eax
+ sub esp, 8
mov dword ptr [ebp-0x04], ecx mov dword ptr [ebp-0x08], ecx
- ;; size=17 bbWeight=1 PerfScore 4.75
+ ;; size=12 bbWeight=1 PerfScore 3.50
G_M18678_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp-0x08] call CORINFO_HELP_GETGENERICS_NONGCSTATIC_BASE ; byrRegs +[eax]
- mov bword ptr [ebp-0x0C], eax - mov eax, 512 - ; byrRegs -[eax] - mov ecx, 4 - xor edx, edx - div edx:eax, ecx - mov edx, bword ptr [ebp-0x0C] - ; byrRegs +[edx] - mov dword ptr [edx+0x04], eax - ;; size=31 bbWeight=1 PerfScore 30.75
+ mov dword ptr [eax+0x04], 128 + ;; size=15 bbWeight=1 PerfScore 3.00
G_M18678_IG03: ; bbWeight=1, epilog, nogc, extend mov esp, ebp pop ebp ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 52, prolog size 14, PerfScore 37.25, instruction count 19, allocated bytes for code 52 (MethodHash=e282b709) for method System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
+; Total bytes of code 31, prolog size 9, PerfScore 8.25, instruction count 11, allocated bytes for code 31 (MethodHash=e282b709) for method System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
; ============================================================

-22 (-22.00%) : 13900.dasm - System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)

@@ -19,22 +19,14 @@ G_M35788_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b mov dword ptr [ebp-0x08], edx ;; size=12 bbWeight=1 PerfScore 3.50 G_M35788_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, 1 - mov edx, 4 - shl edx, 2 - mov ecx, 8 - shl ecx, 2 - dec ecx - and ecx, edx - shl eax, cl - mov dword ptr [ebp-0x0C], eax
+ mov dword ptr [ebp-0x0C], 0x10000
mov eax, dword ptr [ebp-0x08] cmp eax, dword ptr [ebp-0x0C] jae SHORT G_M35788_IG03 mov eax, dword ptr [ebp-0x04] cmp eax, dword ptr [ebp-0x0C] jb SHORT G_M35788_IG04
- ;; size=45 bbWeight=1 PerfScore 13.25
+ ;; size=23 bbWeight=1 PerfScore 9.00
G_M35788_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ebp-0x08], 0 je SHORT G_M35788_IG04 @@ -62,6 +54,6 @@ G_M35788_IG07: ; bbWeight=1, epilog, nogc, extend ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 100, prolog size 6, PerfScore 62.50, instruction count 36, allocated bytes for code 100 (MethodHash=0ddb7433) for method System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)
+; Total bytes of code 78, prolog size 6, PerfScore 58.25, instruction count 28, allocated bytes for code 78 (MethodHash=0ddb7433) for method System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)
; ============================================================

-15 (-19.74%) : 4543.dasm - System.Span`1[ubyte]:Clear():this (Tier0)

@@ -19,22 +19,18 @@ G_M36683_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] test eax, eax je SHORT G_M36683_IG04
- mov eax, 1 - mov ecx, 4
+ mov eax, bword ptr [ebp-0x04] + ; byrRegs +[eax] + mov eax, dword ptr [eax+0x04] + ; byrRegs -[eax]
xor edx, edx
- div edx:eax, ecx - mov edx, bword ptr [ebp-0x04] - ; byrRegs +[edx] - imul eax, dword ptr [edx+0x04] - mov edx, eax - ; byrRegs -[edx]
mov eax, bword ptr [ebp-0x04] ; byrRegs +[eax] mov ecx, bword ptr [eax] ; byrRegs +[ecx] call [<unknown method>] ; byrRegs -[eax ecx]
- ;; size=44 bbWeight=1 PerfScore 42.25
+ ;; size=29 bbWeight=1 PerfScore 13.50
G_M36683_IG03: ; bbWeight=1, epilog, nogc, extend mov esp, ebp pop ebp @@ -56,6 +52,6 @@ G_M36683_IG05: ; bbWeight=1, epilog, nogc, extend ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 76, prolog size 4, PerfScore 58.00, instruction count 28, allocated bytes for code 76 (MethodHash=0cfe70b4) for method System.Span`1[ubyte]:Clear():this (Tier0)
+; Total bytes of code 61, prolog size 4, PerfScore 29.25, instruction count 24, allocated bytes for code 61 (MethodHash=0cfe70b4) for method System.Span`1[ubyte]:Clear():this (Tier0)
; ============================================================

+4 (+0.22%) : 22216.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

@@ -30,7 +30,7 @@ ;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V22 tmp15 [V22,T60] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V22 tmp15 [V22,T57] ( 2, 1 ) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
;* V23 tmp16 [V23,T62] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V25 tmp18 [V25,T63] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -42,7 +42,7 @@ ;* V31 tmp24 [V31 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V32 tmp25 [V32,T28] ( 5, 2 ) ref -> [ebp-0xF8] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V33 tmp26 [V33,T04] ( 10, 10 ) ref -> [ebp-0xFC] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V34 tmp27 [V34,T57] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V34 tmp27 [V34,T59] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V35 tmp28 [V35,T18] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V36 tmp29 [V36,T12] ( 7, 7 ) struct (32) [ebp-0x34] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V37 tmp30 [V37,T50] ( 3, 1 ) byref -> eax single-def "Inline stloc first use temp" @@ -60,7 +60,7 @@ ;* V49 tmp42 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V50 tmp43 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V51 tmp44 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V52 tmp45 [V52,T61] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V52 tmp45 [V52,T58] ( 2, 1 ) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
;* V53 tmp46 [V53,T64] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V54 tmp47 [V54 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V55 tmp48 [V55,T65] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -72,7 +72,7 @@ ;* V61 tmp54 [V61 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V62 tmp55 [V62,T29] ( 5, 2 ) ref -> [ebp-0x104] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V63 tmp56 [V63,T05] ( 10, 10 ) ref -> [ebp-0x108] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V64 tmp57 [V64,T58] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V64 tmp57 [V64,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V65 tmp58 [V65,T20] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V66 tmp59 [V66,T14] ( 7, 7 ) struct (32) [ebp-0x7C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V67 tmp60 [V67,T52] ( 3, 1 ) byref -> eax single-def "Inline stloc first use temp" @@ -94,7 +94,7 @@ ;* V83 tmp76 [V83 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V84 tmp77 [V84,T33] ( 4, 1.50) ref -> [ebp-0x110] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V85 tmp78 [V85,T06] ( 10, 10 ) ref -> [ebp-0x114] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V86 tmp79 [V86,T59] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V86 tmp79 [V86,T61] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V87 tmp80 [V87,T22] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V88 tmp81 [V88,T08] ( 8, 8 ) struct (32) [ebp-0xC4] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V89 tmp82 [V89,T54] ( 3, 1 ) byref -> eax single-def "Inline stloc first use temp" @@ -137,16 +137,16 @@ ; V126 tmp119 [V126,T46] ( 2, 2 ) ref -> edi single-def "argument with side effect" ; V127 tmp120 [V127,T47] ( 2, 2 ) ref -> edx single-def "argument with side effect" ; V128 cse0 [V128,T49] ( 3, 1.50) ref -> eax "CSE - conservative"
-;* V129 rat0 [V129,T66] ( 0, 0 ) int -> zero-ref "field V24.lo (fldOffset=0x0)" P-INDEP -;* V130 rat1 [V130,T67] ( 0, 0 ) int -> zero-ref "field V24.hi (fldOffset=0x4)" P-INDEP
+;* V129 rat0 [V129 ] ( 0, 0 ) int -> zero-ref "field V24.lo (fldOffset=0x0)" P-INDEP +;* V130 rat1 [V130 ] ( 0, 0 ) int -> zero-ref "field V24.hi (fldOffset=0x4)" P-INDEP
;* V131 rat2 [V131 ] ( 0, 0 ) int -> zero-ref "field V26.lo (fldOffset=0x0)" P-INDEP ;* V132 rat3 [V132 ] ( 0, 0 ) int -> zero-ref "field V26.hi (fldOffset=0x4)" P-INDEP ; V133 rat4 [V133,T37] ( 4, 2 ) int -> esi "field V29.lo (fldOffset=0x0)" P-INDEP ; V134 rat5 [V134,T38] ( 4, 2 ) int -> [ebp-0xE8] spill-single-def "field V29.hi (fldOffset=0x4)" P-INDEP ;* V135 rat6 [V135 ] ( 0, 0 ) int -> zero-ref "field V30.lo (fldOffset=0x0)" P-INDEP ;* V136 rat7 [V136 ] ( 0, 0 ) int -> zero-ref "field V30.hi (fldOffset=0x4)" P-INDEP
-;* V137 rat8 [V137,T68] ( 0, 0 ) int -> zero-ref "field V54.lo (fldOffset=0x0)" P-INDEP -;* V138 rat9 [V138,T69] ( 0, 0 ) int -> zero-ref "field V54.hi (fldOffset=0x4)" P-INDEP
+;* V137 rat8 [V137 ] ( 0, 0 ) int -> zero-ref "field V54.lo (fldOffset=0x0)" P-INDEP +;* V138 rat9 [V138 ] ( 0, 0 ) int -> zero-ref "field V54.hi (fldOffset=0x4)" P-INDEP
;* V139 rat10 [V139 ] ( 0, 0 ) int -> zero-ref "field V56.lo (fldOffset=0x0)" P-INDEP ;* V140 rat11 [V140 ] ( 0, 0 ) int -> zero-ref "field V56.hi (fldOffset=0x4)" P-INDEP ; V141 rat12 [V141,T39] ( 4, 2 ) int -> esi "field V59.lo (fldOffset=0x0)" P-INDEP @@ -358,6 +358,8 @@ G_M31232_IG12: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; gcrRegs +[eax] test eax, eax jne G_M31232_IG17
+ mov esi, ebx + ; gcrRegs +[esi]
push 0 push 0 push 1 @@ -371,11 +373,11 @@ G_M31232_IG12: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 mov edi, eax push 0 push 0
- mov ecx, ebx
+ mov ecx, esi
; gcrRegs +[ecx] mov edx, 6 call [<unknown method>]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[ecx esi]
mov esi, eax mov eax, edx mov dword ptr [ebp-0xE8], edx @@ -411,7 +413,7 @@ G_M31232_IG12: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 xor edx, edx ; gcrRegs +[edx] mov gword ptr [eax+0x0C], edx
- ;; size=166 bbWeight=0.50 PerfScore 23.88
+ ;; size=168 bbWeight=0.50 PerfScore 24.00
G_M31232_IG13: ; bbWeight=0.50, gcVars=000000000000000000000010 {V33}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[edx] mov gword ptr [eax+0x10], edx @@ -494,6 +496,8 @@ G_M31232_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; gcrRegs +[eax] test eax, eax jne G_M31232_IG23
+ mov esi, ebx + ; gcrRegs +[esi]
push 0 push 0 push 1 @@ -507,11 +511,11 @@ G_M31232_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 mov edi, eax push 0 push 0
- mov ecx, ebx
+ mov ecx, esi
; gcrRegs +[ecx] mov edx, 5 call [<unknown method>]
- ; gcrRegs -[ecx]
+ ; gcrRegs -[ecx esi]
mov esi, eax mov eax, edx mov dword ptr [ebp-0xEC], edx @@ -547,7 +551,7 @@ G_M31232_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 xor edx, edx ; gcrRegs +[edx] mov gword ptr [eax+0x0C], edx
- ;; size=166 bbWeight=0.50 PerfScore 23.88
+ ;; size=168 bbWeight=0.50 PerfScore 24.00
G_M31232_IG19: ; bbWeight=0.50, gcVars=000000000000000000000020 {V63}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[edx] mov gword ptr [eax+0x10], edx @@ -942,6 +946,6 @@ RWD00 dd G_M31232_IG33 - G_M31232_IG02 dd G_M31232_IG28 - G_M31232_IG02
-; Total bytes of code 1839, prolog size 52, PerfScore 319.21, instruction count 447, allocated bytes for code 1839 (MethodHash=10b885ff) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
+; Total bytes of code 1843, prolog size 52, PerfScore 319.46, instruction count 449, allocated bytes for code 1843 (MethodHash=10b885ff) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
; ============================================================

+19 (+0.50%) : 17478.dasm - System.Net.Http.RedirectHandler+d__4:MoveNext():this (Tier0-FullOpts)

@@ -5,7 +5,7 @@ ; ebp based frame ; partially interruptible ; No matching PGO data
-; 83 inlinees with PGO data; 118 single block inlinees; 12 inlinees without PGO data
+; 84 inlinees with PGO data; 119 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 47,106 ) byref -> [ebp-0xC8] this EH-live single-def @@ -76,334 +76,323 @@ ;* V65 tmp49 [V65 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V66 tmp50 [V66 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V67 tmp51 [V67,T121] ( 2, 4 ) byref -> edx "Inlining Arg"
-;* V68 tmp52 [V68 ] ( 0, 0 ) int -> zero-ref "spilling arg" -;* V69 tmp53 [V69 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> -;* V70 tmp54 [V70 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V71 tmp55 [V71,T90] ( 4, 8 ) int -> ecx "Inlining Arg" -;* V72 tmp56 [V72 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V73 tmp57 [V73,T114] ( 3, 6 ) int -> [ebp-0xAC] spill-single-def "Inlining Arg" -; V74 tmp58 [V74,T122] ( 2, 4 ) byref -> edi "Inlining Arg"
+;* V68 tmp52 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> +;* V69 tmp53 [V69 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V70 tmp54 [V70,T90] ( 4, 8 ) int -> ecx "Inlining Arg" +;* V71 tmp55 [V71 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V72 tmp56 [V72,T114] ( 3, 6 ) int -> [ebp-0xAC] spill-single-def "Inlining Arg" +; V73 tmp57 [V73,T122] ( 2, 4 ) byref -> edi "Inlining Arg" +;* V74 tmp58 [V74 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V75 tmp59 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V76 tmp60 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V77 tmp61 [V77,T149] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V78 tmp62 [V78 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V79 tmp63 [V79 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V80 tmp64 [V80,T123] ( 2, 4 ) byref -> edx "Inlining Arg" -;* V81 tmp65 [V81 ] ( 0, 0 ) int -> zero-ref "spilling arg" -;* V82 tmp66 [V82 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V83 tmp67 [V83,T91] ( 4, 8 ) int -> ecx "Inlining Arg" -;* V84 tmp68 [V84 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V85 tmp69 [V85,T115] ( 3, 6 ) int -> [ebp-0xB0] spill-single-def "Inlining Arg" -; V86 tmp70 [V86,T124] ( 2, 4 ) byref -> edi "Inlining Arg" -;* V87 tmp71 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V88 tmp72 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V89 tmp73 [V89,T150] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V90 tmp74 [V90 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V91 tmp75 [V91 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V92 tmp76 [V92,T125] ( 2, 4 ) byref -> edx "Inlining Arg" -;* V93 tmp77 [V93 ] ( 0, 0 ) int -> zero-ref "spilling arg" -; V94 tmp78 [V94,T136] ( 2, 4 ) int -> [ebp-0xB4] spill-single-def "Inlining Arg" -; V95 tmp79 [V95,T110] ( 3, 6 ) ref -> [ebp-0xDC] class-hnd exact spill-single-def "impAppendStmt" <System.Net.NetEventSource> -;* V96 tmp80 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType> -; V97 tmp81 [V97,T126] ( 2, 4 ) ref -> eax class-hnd exact "Inlining Arg" <System.String> -;* V98 tmp82 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Net.Http.Headers.HttpRequestHeaders> -; V99 tmp83 [V99,T23] ( 3, 24 ) ref -> ebx class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> -; V100 tmp84 [V100,T48] ( 2, 16 ) ref -> ecx class-hnd exact "dup spill" <System.Net.Http.Headers.HttpRequestHeaders> -; V101 tmp85 [V101,T44] ( 5, 20 ) ref -> ecx -; V102 tmp86 [V102,T04] ( 4, 32 ) ref -> ecx class-hnd exact "NewObj constructor temp" <System.Net.Http.Headers.HttpRequestHeaders> -;* V103 tmp87 [V103 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Net.Http.Headers.HttpRequestHeaders> -;* V104 tmp88 [V104 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Net.Http.Headers.HeaderDescriptor> -; V105 tmp89 [V105,T24] ( 3, 24 ) ref -> eax class-hnd exact "Inlining Arg" <System.Net.Http.Headers.KnownHeader> -;* V106 tmp90 [V106 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Net.Http.Headers.HeaderDescriptor> -;* V107 tmp91 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.Http.HttpTelemetry> -; V108 tmp92 [V108,T49] ( 2, 16 ) ref -> eax class-hnd exact "Inlining Arg" <System.String> -;* V109 tmp93 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> -;* V110 tmp94 [V110 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V111 tmp95 [V111,T05] ( 4, 32 ) int -> ecx "Inlining Arg" -;* V112 tmp96 [V112 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V113 tmp97 [V113,T33] ( 3, 24 ) int -> esi "Inlining Arg" -; V114 tmp98 [V114,T50] ( 2, 16 ) byref -> ebx "Inlining Arg" -;* V115 tmp99 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V116 tmp100 [V116 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V117 tmp101 [V117,T95] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V118 tmp102 [V118 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V119 tmp103 [V119 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V120 tmp104 [V120,T51] ( 2, 16 ) byref -> edx "Inlining Arg" -;* V121 tmp105 [V121 ] ( 0, 0 ) int -> zero-ref "spilling arg" -;* V122 tmp106 [V122 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> -;* V123 tmp107 [V123 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V124 tmp108 [V124,T06] ( 4, 32 ) int -> ecx "Inlining Arg" -;* V125 tmp109 [V125 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V126 tmp110 [V126,T34] ( 3, 24 ) int -> ebx "Inlining Arg" -; V127 tmp111 [V127,T52] ( 2, 16 ) byref -> edi "Inlining Arg" -;* V128 tmp112 [V128 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V129 tmp113 [V129 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V130 tmp114 [V130,T96] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V131 tmp115 [V131 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V132 tmp116 [V132 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V133 tmp117 [V133,T53] ( 2, 16 ) byref -> edx "Inlining Arg" -;* V134 tmp118 [V134 ] ( 0, 0 ) int -> zero-ref "spilling arg" -;* V135 tmp119 [V135 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V136 tmp120 [V136,T07] ( 4, 32 ) int -> ecx "Inlining Arg" -;* V137 tmp121 [V137 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V138 tmp122 [V138,T35] ( 3, 24 ) int -> edi "Inlining Arg" -; V139 tmp123 [V139,T54] ( 2, 16 ) byref -> ebx "Inlining Arg" -;* V140 tmp124 [V140 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V141 tmp125 [V141 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V142 tmp126 [V142,T97] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V143 tmp127 [V143 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V144 tmp128 [V144 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V145 tmp129 [V145,T55] ( 2, 16 ) byref -> edx "Inlining Arg" -;* V146 tmp130 [V146 ] ( 0, 0 ) int -> zero-ref "spilling arg" -;* V147 tmp131 [V147 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V148 tmp132 [V148,T08] ( 4, 32 ) int -> ecx "Inlining Arg" -;* V149 tmp133 [V149 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V150 tmp134 [V150,T36] ( 3, 24 ) int -> [ebp-0xB8] spill-single-def "Inlining Arg" -; V151 tmp135 [V151,T56] ( 2, 16 ) byref -> edi "Inlining Arg" -;* V152 tmp136 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V153 tmp137 [V153 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V154 tmp138 [V154,T98] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V155 tmp139 [V155 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V156 tmp140 [V156 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V157 tmp141 [V157,T57] ( 2, 16 ) byref -> edx "Inlining Arg" -;* V158 tmp142 [V158 ] ( 0, 0 ) int -> zero-ref "spilling arg" -;* V159 tmp143 [V159 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V160 tmp144 [V160,T09] ( 4, 32 ) int -> ecx "Inlining Arg" -;* V161 tmp145 [V161 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V162 tmp146 [V162,T37] ( 3, 24 ) int -> [ebp-0xBC] spill-single-def "Inlining Arg" -; V163 tmp147 [V163,T58] ( 2, 16 ) byref -> edi "Inlining Arg" -;* V164 tmp148 [V164 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V165 tmp149 [V165 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V166 tmp150 [V166,T99] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V167 tmp151 [V167 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V168 tmp152 [V168 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V169 tmp153 [V169,T59] ( 2, 16 ) byref -> edx "Inlining Arg" -;* V170 tmp154 [V170 ] ( 0, 0 ) int -> zero-ref "spilling arg" -; V171 tmp155 [V171,T81] ( 2, 16 ) int -> [ebp-0xC0] spill-single-def "Inlining Arg" -; V172 tmp156 [V172,T25] ( 3, 24 ) ref -> [ebp-0xE0] class-hnd exact spill-single-def "impAppendStmt" <System.Net.NetEventSource> -;* V173 tmp157 [V173 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType> -; V174 tmp158 [V174,T60] ( 2, 16 ) ref -> eax class-hnd exact "Inlining Arg" <System.String> -; V175 tmp159 [V175,T20] ( 4, 24 ) ref -> ecx class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage>
+;* V76 tmp60 [V76,T149] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V77 tmp61 [V77 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V78 tmp62 [V78 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V79 tmp63 [V79,T123] ( 2, 4 ) byref -> edx "Inlining Arg" +;* V80 tmp64 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V81 tmp65 [V81,T91] ( 4, 8 ) int -> ecx "Inlining Arg" +;* V82 tmp66 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V83 tmp67 [V83,T115] ( 3, 6 ) int -> [ebp-0xB0] spill-single-def "Inlining Arg" +; V84 tmp68 [V84,T124] ( 2, 4 ) byref -> edi "Inlining Arg" +;* V85 tmp69 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V86 tmp70 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V87 tmp71 [V87,T150] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V88 tmp72 [V88 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V89 tmp73 [V89 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V90 tmp74 [V90,T125] ( 2, 4 ) byref -> edx "Inlining Arg" +; V91 tmp75 [V91,T136] ( 2, 4 ) int -> [ebp-0xB4] spill-single-def "Inlining Arg" +; V92 tmp76 [V92,T110] ( 3, 6 ) ref -> [ebp-0xDC] class-hnd exact spill-single-def "impAppendStmt" <System.Net.NetEventSource> +;* V93 tmp77 [V93 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType> +; V94 tmp78 [V94,T126] ( 2, 4 ) ref -> eax class-hnd exact "Inlining Arg" <System.String> +;* V95 tmp79 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Net.Http.Headers.HttpRequestHeaders> +; V96 tmp80 [V96,T23] ( 3, 24 ) ref -> ebx class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> +; V97 tmp81 [V97,T48] ( 2, 16 ) ref -> ecx class-hnd exact "dup spill" <System.Net.Http.Headers.HttpRequestHeaders> +; V98 tmp82 [V98,T44] ( 5, 20 ) ref -> ecx +; V99 tmp83 [V99,T04] ( 4, 32 ) ref -> ecx class-hnd exact "NewObj constructor temp" <System.Net.Http.Headers.HttpRequestHeaders> +;* V100 tmp84 [V100 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Net.Http.Headers.HttpRequestHeaders> +;* V101 tmp85 [V101 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Net.Http.Headers.HeaderDescriptor> +; V102 tmp86 [V102,T24] ( 3, 24 ) ref -> eax class-hnd exact "Inlining Arg" <System.Net.Http.Headers.KnownHeader> +;* V103 tmp87 [V103 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Net.Http.Headers.HeaderDescriptor> +;* V104 tmp88 [V104 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.Http.HttpTelemetry> +; V105 tmp89 [V105,T49] ( 2, 16 ) ref -> eax class-hnd exact "Inlining Arg" <System.String> +;* V106 tmp90 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> +;* V107 tmp91 [V107 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V108 tmp92 [V108,T05] ( 4, 32 ) int -> ecx "Inlining Arg" +;* V109 tmp93 [V109 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V110 tmp94 [V110,T33] ( 3, 24 ) int -> esi "Inlining Arg" +; V111 tmp95 [V111,T50] ( 2, 16 ) byref -> ebx "Inlining Arg" +;* V112 tmp96 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V113 tmp97 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V114 tmp98 [V114,T95] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V115 tmp99 [V115 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V116 tmp100 [V116 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V117 tmp101 [V117,T51] ( 2, 16 ) byref -> edx "Inlining Arg" +;* V118 tmp102 [V118 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> +;* V119 tmp103 [V119 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V120 tmp104 [V120,T06] ( 4, 32 ) int -> ecx "Inlining Arg" +;* V121 tmp105 [V121 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V122 tmp106 [V122,T34] ( 3, 24 ) int -> ebx "Inlining Arg" +; V123 tmp107 [V123,T52] ( 2, 16 ) byref -> edi "Inlining Arg" +;* V124 tmp108 [V124 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V125 tmp109 [V125 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V126 tmp110 [V126,T96] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V127 tmp111 [V127 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V128 tmp112 [V128 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V129 tmp113 [V129,T53] ( 2, 16 ) byref -> edx "Inlining Arg" +;* V130 tmp114 [V130 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V131 tmp115 [V131,T07] ( 4, 32 ) int -> ecx "Inlining Arg" +;* V132 tmp116 [V132 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V133 tmp117 [V133,T35] ( 3, 24 ) int -> edi "Inlining Arg" +; V134 tmp118 [V134,T54] ( 2, 16 ) byref -> ebx "Inlining Arg" +;* V135 tmp119 [V135 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V136 tmp120 [V136 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V137 tmp121 [V137,T97] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V138 tmp122 [V138 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V139 tmp123 [V139 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V140 tmp124 [V140,T55] ( 2, 16 ) byref -> edx "Inlining Arg" +;* V141 tmp125 [V141 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V142 tmp126 [V142,T08] ( 4, 32 ) int -> ecx "Inlining Arg" +;* V143 tmp127 [V143 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V144 tmp128 [V144,T36] ( 3, 24 ) int -> [ebp-0xB8] spill-single-def "Inlining Arg" +; V145 tmp129 [V145,T56] ( 2, 16 ) byref -> edi "Inlining Arg" +;* V146 tmp130 [V146 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V147 tmp131 [V147 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V148 tmp132 [V148,T98] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V149 tmp133 [V149 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V150 tmp134 [V150 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V151 tmp135 [V151,T57] ( 2, 16 ) byref -> edx "Inlining Arg" +;* V152 tmp136 [V152 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V153 tmp137 [V153,T09] ( 4, 32 ) int -> ecx "Inlining Arg" +;* V154 tmp138 [V154 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V155 tmp139 [V155,T37] ( 3, 24 ) int -> [ebp-0xBC] spill-single-def "Inlining Arg" +; V156 tmp140 [V156,T58] ( 2, 16 ) byref -> edi "Inlining Arg" +;* V157 tmp141 [V157 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V158 tmp142 [V158 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V159 tmp143 [V159,T99] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V160 tmp144 [V160 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V161 tmp145 [V161 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V162 tmp146 [V162,T59] ( 2, 16 ) byref -> edx "Inlining Arg" +; V163 tmp147 [V163,T81] ( 2, 16 ) int -> [ebp-0xC0] spill-single-def "Inlining Arg" +; V164 tmp148 [V164,T25] ( 3, 24 ) ref -> [ebp-0xE0] class-hnd exact spill-single-def "impAppendStmt" <System.Net.NetEventSource> +;* V165 tmp149 [V165 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType> +; V166 tmp150 [V166,T60] ( 2, 16 ) ref -> eax class-hnd exact "Inlining Arg" <System.String> +; V167 tmp151 [V167,T20] ( 4, 24 ) ref -> ecx class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> +;* V168 tmp152 [V168 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V169 tmp153 [V169 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> +;* V170 tmp154 [V170 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> +;* V171 tmp155 [V171 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V172 tmp156 [V172,T10] ( 4, 32 ) int -> ecx "Inlining Arg" +;* V173 tmp157 [V173 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V174 tmp158 [V174,T38] ( 3, 24 ) int -> edi "Inlining Arg" +; V175 tmp159 [V175,T61] ( 2, 16 ) byref -> esi "Inlining Arg"
;* V176 tmp160 [V176 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V177 tmp161 [V177 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> -;* V178 tmp162 [V178 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Net.NetEventSource> -;* V179 tmp163 [V179 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V180 tmp164 [V180,T10] ( 4, 32 ) int -> ecx "Inlining Arg" -;* V181 tmp165 [V181 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V182 tmp166 [V182,T38] ( 3, 24 ) int -> edi "Inlining Arg" -; V183 tmp167 [V183,T61] ( 2, 16 ) byref -> esi "Inlining Arg" -;* V184 tmp168 [V184 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V185 tmp169 [V185 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V186 tmp170 [V186,T100] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V187 tmp171 [V187 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V188 tmp172 [V188 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V189 tmp173 [V189,T62] ( 2, 16 ) byref -> edx "Inlining Arg" -;* V190 tmp174 [V190 ] ( 0, 0 ) int -> zero-ref "spilling arg" -;* V191 tmp175 [V191 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Net.Http.HttpRequestMessage> -;* V192 tmp176 [V192 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V193 tmp177 [V193,T11] ( 4, 32 ) int -> ecx "Inlining Arg" -;* V194 tmp178 [V194 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V195 tmp179 [V195,T39] ( 3, 24 ) int -> edi "Inlining Arg" -; V196 tmp180 [V196,T63] ( 2, 16 ) byref -> ebx "Inlining Arg" -;* V197 tmp181 [V197 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
...

+40 (+0.57%) : 21999.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)

@@ -30,11 +30,11 @@ ; V19 loc17 [V19,T198] ( 3, 8 ) ubyte -> ecx ;* V20 loc18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V21 loc19 [V21,T178] ( 3, 10 ) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.Text.RegularExpressions.Symbolic.BDD>
-; V22 loc20 [V22,T301] ( 2, 0.50) ref -> ebx class-hnd exact <System.String> -; V23 loc21 [V23,T302] ( 10, 0 ) ref -> esi class-hnd <System.String> -; V24 loc22 [V24,T299] ( 6, 1.50) ubyte -> eax
+; V22 loc20 [V22,T297] ( 2, 0.50) ref -> ebx class-hnd exact <System.String> +; V23 loc21 [V23,T298] ( 10, 0 ) ref -> esi class-hnd <System.String> +; V24 loc22 [V24,T295] ( 6, 1.50) ubyte -> eax
;* V25 loc23 [V25 ] ( 0, 0 ) ubyte -> zero-ref
-; V26 loc24 [V26,T63] ( 2, 36 ) ref -> edi class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V26 loc24 [V26,T59] ( 2, 36 ) ref -> edi class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V27 loc25 [V27,T11] ( 5,132 ) int -> ebx ;* V28 loc26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]> ; V29 loc27 [V29,T66] ( 6, 24 ) ref -> edi class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -52,7 +52,7 @@ ; V41 tmp4 [V41,T20] ( 3, 96 ) ref -> [ebp-0x2B4] class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode> ; V42 tmp5 [V42,T13] ( 2,128 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]> ;* V43 tmp6 [V43 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]>
-; V44 tmp7 [V44,T303] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V44 tmp7 [V44,T299] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
; V45 tmp8 [V45,T04] ( 4,160 ) ref -> [ebp-0x2BC] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> ; V46 tmp9 [V46,T77] ( 4, 24 ) ref -> ebx class-hnd exact "impAppendStmt" <<unknown class>> ;* V47 tmp10 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[System.__Canon]> @@ -71,10 +71,10 @@ ;* V60 tmp23 [V60 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V61 tmp24 [V61,T33] ( 14, 64 ) ref -> [ebp-0x2C4] ; V62 tmp25 [V62,T67] ( 6, 24 ) ref -> edi
-; V63 tmp26 [V63,T240] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V63 tmp26 [V63,T244] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V64 tmp27 [V64,T226] ( 3, 5 ) int -> eax "Inlining Arg"
-; V65 tmp28 [V65,T237] ( 4, 3 ) int -> [ebp-0x20] spill-single-def "Inline stloc first use temp" -; V66 tmp29 [V66,T239] ( 3, 2.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V65 tmp28 [V65,T241] ( 4, 3 ) int -> [ebp-0x20] spill-single-def "Inline stloc first use temp" +; V66 tmp29 [V66,T243] ( 3, 2.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V67 tmp30 [V67 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ;* V68 tmp31 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V69 tmp32 [V69,T97] ( 3, 20 ) ref -> edi class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD> @@ -93,14 +93,14 @@ ;* V82 tmp45 [V82 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V83 tmp46 [V83,T142] ( 5, 10 ) ref -> [ebp-0x2CC] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V84 tmp47 [V84,T48] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V85 tmp48 [V85,T228] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V85 tmp48 [V85,T232] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V86 tmp49 [V86,T157] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V87 tmp50 [V87,T87] ( 5, 20 ) struct (28) [ebp-0x40] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V88 tmp51 [V88,T212] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V89 tmp52 [V89 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V90 tmp53 [V90,T243] ( 0, 0 ) ref -> zero-ref
+;* V90 tmp53 [V90,T247] ( 0, 0 ) ref -> zero-ref
;* V91 tmp54 [V91 ] ( 0, 0 ) ref -> zero-ref
-;* V92 tmp55 [V92,T244] ( 0, 0 ) ref -> zero-ref
+;* V92 tmp55 [V92,T248] ( 0, 0 ) ref -> zero-ref
; V93 tmp56 [V93,T158] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V94 tmp57 [V94,T88] ( 5, 20 ) struct (28) [ebp-0x5C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V95 tmp58 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -122,14 +122,14 @@ ;* V111 tmp74 [V111 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V112 tmp75 [V112,T143] ( 5, 10 ) ref -> [ebp-0x2D4] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V113 tmp76 [V113,T49] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V114 tmp77 [V114,T229] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V114 tmp77 [V114,T233] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V115 tmp78 [V115,T159] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V116 tmp79 [V116,T89] ( 5, 20 ) struct (28) [ebp-0x7C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V117 tmp80 [V117,T213] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V118 tmp81 [V118 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V119 tmp82 [V119,T245] ( 0, 0 ) ref -> zero-ref
+;* V119 tmp82 [V119,T249] ( 0, 0 ) ref -> zero-ref
;* V120 tmp83 [V120 ] ( 0, 0 ) ref -> zero-ref
-;* V121 tmp84 [V121,T246] ( 0, 0 ) ref -> zero-ref
+;* V121 tmp84 [V121,T250] ( 0, 0 ) ref -> zero-ref
; V122 tmp85 [V122,T160] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V123 tmp86 [V123,T90] ( 5, 20 ) struct (28) [ebp-0x98] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V124 tmp87 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -154,14 +154,14 @@ ;* V143 tmp106 [V143 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V144 tmp107 [V144,T144] ( 5, 10 ) ref -> [ebp-0x2DC] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V145 tmp108 [V145,T50] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V146 tmp109 [V146,T230] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V146 tmp109 [V146,T234] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V147 tmp110 [V147,T161] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V148 tmp111 [V148,T91] ( 5, 20 ) struct (28) [ebp-0xB8] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V149 tmp112 [V149,T214] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V150 tmp113 [V150 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V151 tmp114 [V151,T247] ( 0, 0 ) ref -> zero-ref
+;* V151 tmp114 [V151,T251] ( 0, 0 ) ref -> zero-ref
;* V152 tmp115 [V152 ] ( 0, 0 ) ref -> zero-ref
-;* V153 tmp116 [V153,T248] ( 0, 0 ) ref -> zero-ref
+;* V153 tmp116 [V153,T252] ( 0, 0 ) ref -> zero-ref
; V154 tmp117 [V154,T162] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V155 tmp118 [V155,T92] ( 5, 20 ) struct (28) [ebp-0xD4] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V156 tmp119 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -201,14 +201,14 @@ ; V190 tmp153 [V190,T15] ( 2,128 ) ref -> eax "CASTCLASS eval op1" ;* V191 tmp154 [V191 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V192 tmp155 [V192,T26] ( 4, 76 ) ref -> eax class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V193 tmp156 [V193,T61] ( 3, 36 ) ref -> [ebp-0x2EC] spill-single-def "CASTCLASS eval op1"
+; V193 tmp156 [V193,T57] ( 3, 36 ) ref -> [ebp-0x2EC] spill-single-def "CASTCLASS eval op1"
; V194 tmp157 [V194,T100] ( 3, 20 ) int -> edx "fgMakeTemp is creating a new local variable" ; V195 tmp158 [V195,T28] ( 6, 76 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>> ; V196 tmp159 [V196,T41] ( 3, 48 ) ref -> ecx class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode> ; V197 tmp160 [V197,T16] ( 2,128 ) ref -> ecx "CASTCLASS eval op1" ;* V198 tmp161 [V198 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V199 tmp162 [V199,T27] ( 4, 76 ) ref -> ecx class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V200 tmp163 [V200,T62] ( 3, 36 ) ref -> [ebp-0x2F0] spill-single-def "CASTCLASS eval op1"
+; V200 tmp163 [V200,T58] ( 3, 36 ) ref -> [ebp-0x2F0] spill-single-def "CASTCLASS eval op1"
; V201 tmp164 [V201,T101] ( 3, 20 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V202 tmp165 [V202,T29] ( 6, 76 ) ref -> [ebp-0x2F4] class-hnd "spilling QMark2" <<unknown class>> ; V203 tmp166 [V203,T42] ( 3, 48 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]> @@ -233,14 +233,14 @@ ;* V222 tmp185 [V222 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V223 tmp186 [V223,T145] ( 5, 10 ) ref -> [ebp-0x300] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V224 tmp187 [V224,T51] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V225 tmp188 [V225,T231] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V225 tmp188 [V225,T235] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V226 tmp189 [V226,T163] ( 3, 12 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V227 tmp190 [V227,T93] ( 5, 20 ) struct (28) [ebp-0x138] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V228 tmp191 [V228,T215] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V229 tmp192 [V229 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V230 tmp193 [V230,T249] ( 0, 0 ) ref -> zero-ref
+;* V230 tmp193 [V230,T253] ( 0, 0 ) ref -> zero-ref
;* V231 tmp194 [V231 ] ( 0, 0 ) ref -> zero-ref
-;* V232 tmp195 [V232,T250] ( 0, 0 ) ref -> zero-ref
+;* V232 tmp195 [V232,T254] ( 0, 0 ) ref -> zero-ref
; V233 tmp196 [V233,T164] ( 3, 12 ) ref -> eax class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V234 tmp197 [V234,T94] ( 5, 20 ) struct (28) [ebp-0x154] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V235 tmp198 [V235 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -261,38 +261,38 @@ ;* V250 tmp213 [V250 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V251 tmp214 [V251,T146] ( 5, 10 ) ref -> [ebp-0x30C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V252 tmp215 [V252,T52] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V253 tmp216 [V253,T232] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V253 tmp216 [V253,T236] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V254 tmp217 [V254,T165] ( 3, 12 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V255 tmp218 [V255,T95] ( 5, 20 ) struct (28) [ebp-0x174] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V256 tmp219 [V256,T216] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V257 tmp220 [V257 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V258 tmp221 [V258,T251] ( 0, 0 ) ref -> zero-ref
+;* V258 tmp221 [V258,T255] ( 0, 0 ) ref -> zero-ref
;* V259 tmp222 [V259 ] ( 0, 0 ) ref -> zero-ref
-;* V260 tmp223 [V260,T252] ( 0, 0 ) ref -> zero-ref
+;* V260 tmp223 [V260,T256] ( 0, 0 ) ref -> zero-ref
; V261 tmp224 [V261,T166] ( 3, 12 ) ref -> eax class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V262 tmp225 [V262,T96] ( 5, 20 ) struct (28) [ebp-0x190] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V263 tmp226 [V263 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V264 tmp227 [V264 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V265 tmp228 [V265 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V266 tmp229 [V266,T57] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V266 tmp229 [V266,T60] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V267 tmp230 [V267,T111] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V268 tmp231 [V268,T138] ( 4, 14 ) ref -> edx ;* V269 tmp232 [V269 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V270 tmp233 [V270 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V271 tmp234 [V271 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V272 tmp235 [V272,T253] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V273 tmp236 [V273,T271] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V274 tmp237 [V274,T254] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V275 tmp238 [V275,T272] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V272 tmp235 [V272,T228] ( 2, 4 ) ref -> [ebp-0x310] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V273 tmp236 [V273,T267] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V274 tmp237 [V274 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V275 tmp238 [V275,T268] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V276 tmp239 [V276 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V277 tmp240 [V277 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V278 tmp241 [V278 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V279 tmp242 [V279,T185] ( 4, 8 ) ref -> [ebp-0x310] spill-single-def
+; V279 tmp242 [V279,T185] ( 4, 8 ) ref -> [ebp-0x314] spill-single-def
;* V280 tmp243 [V280 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V281 tmp244 [V281 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V282 tmp245 [V282,T147] ( 5, 10 ) ref -> [ebp-0x314] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V283 tmp246 [V283,T53] ( 10, 40 ) ref -> [ebp-0x318] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V284 tmp247 [V284,T233] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V282 tmp245 [V282,T147] ( 5, 10 ) ref -> [ebp-0x318] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V283 tmp246 [V283,T53] ( 10, 40 ) ref -> [ebp-0x31C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V284 tmp247 [V284,T237] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V285 tmp248 [V285,T167] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V286 tmp249 [V286,T68] ( 6, 24 ) struct (28) [ebp-0x1AC] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V287 tmp250 [V287,T217] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -305,25 +305,25 @@ ;* V294 tmp257 [V294 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V295 tmp258 [V295 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V296 tmp259 [V296 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V297 tmp260 [V297,T58] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V297 tmp260 [V297,T61] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V298 tmp261 [V298,T112] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V299 tmp262 [V299,T139] ( 4, 14 ) ref -> edx ;* V300 tmp263 [V300 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V301 tmp264 [V301 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V302 tmp265 [V302 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V303 tmp266 [V303,T255] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V304 tmp267 [V304,T273] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V305 tmp268 [V305,T256] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V306 tmp269 [V306,T274] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V303 tmp266 [V303,T229] ( 2, 4 ) ref -> [ebp-0x320] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V304 tmp267 [V304,T269] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V305 tmp268 [V305 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V306 tmp269 [V306,T270] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V307 tmp270 [V307 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V308 tmp271 [V308 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V309 tmp272 [V309 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V310 tmp273 [V310,T186] ( 4, 8 ) ref -> [ebp-0x31C] spill-single-def
+; V310 tmp273 [V310,T186] ( 4, 8 ) ref -> [ebp-0x324] spill-single-def
;* V311 tmp274 [V311 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V312 tmp275 [V312 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V313 tmp276 [V313,T148] ( 5, 10 ) ref -> [ebp-0x320] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V314 tmp277 [V314,T54] ( 10, 40 ) ref -> [ebp-0x324] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V315 tmp278 [V315,T234] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V313 tmp276 [V313,T148] ( 5, 10 ) ref -> [ebp-0x328] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V314 tmp277 [V314,T54] ( 10, 40 ) ref -> [ebp-0x32C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V315 tmp278 [V315,T238] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V316 tmp279 [V316,T169] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V317 tmp280 [V317,T70] ( 6, 24 ) struct (28) [ebp-0x1E4] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V318 tmp281 [V318,T219] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -336,25 +336,25 @@ ;* V325 tmp288 [V325 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V326 tmp289 [V326 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V327 tmp290 [V327 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V328 tmp291 [V328,T59] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V328 tmp291 [V328,T62] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V329 tmp292 [V329,T113] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V330 tmp293 [V330,T140] ( 4, 14 ) ref -> edx ;* V331 tmp294 [V331 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V332 tmp295 [V332 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V333 tmp296 [V333 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V334 tmp297 [V334,T257] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V335 tmp298 [V335,T275] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V336 tmp299 [V336,T258] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V337 tmp300 [V337,T276] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V334 tmp297 [V334,T230] ( 2, 4 ) ref -> [ebp-0x330] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V335 tmp298 [V335,T271] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V336 tmp299 [V336 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V337 tmp300 [V337,T272] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V338 tmp301 [V338 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V339 tmp302 [V339 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V340 tmp303 [V340 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V341 tmp304 [V341,T187] ( 4, 8 ) ref -> [ebp-0x328] spill-single-def
+; V341 tmp304 [V341,T187] ( 4, 8 ) ref -> [ebp-0x334] spill-single-def
;* V342 tmp305 [V342 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V343 tmp306 [V343 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V344 tmp307 [V344,T149] ( 5, 10 ) ref -> [ebp-0x32C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V345 tmp308 [V345,T55] ( 10, 40 ) ref -> [ebp-0x330] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V346 tmp309 [V346,T235] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V344 tmp307 [V344,T149] ( 5, 10 ) ref -> [ebp-0x338] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V345 tmp308 [V345,T55] ( 10, 40 ) ref -> [ebp-0x33C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V346 tmp309 [V346,T239] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V347 tmp310 [V347,T171] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V348 tmp311 [V348,T72] ( 6, 24 ) struct (28) [ebp-0x21C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V349 tmp312 [V349,T221] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -367,25 +367,25 @@ ...

benchmarks.run_tiered.windows.x86.checked.mch

-21 (-40.38%) : 703.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)

@@ -6,39 +6,28 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [ebp-0x08] do-not-enreg[]
-; TEMP_01 byref -> [ebp-0x0C]
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M18678_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- sub esp, 12 - xor eax, eax - mov dword ptr [ebp-0x0C], eax
+ sub esp, 8
mov dword ptr [ebp-0x04], ecx mov dword ptr [ebp-0x08], ecx
- ;; size=17 bbWeight=1 PerfScore 4.75
+ ;; size=12 bbWeight=1 PerfScore 3.50
G_M18678_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp-0x08] call CORINFO_HELP_GETGENERICS_NONGCSTATIC_BASE ; byrRegs +[eax]
- mov bword ptr [ebp-0x0C], eax - mov eax, 512 - ; byrRegs -[eax] - mov ecx, 4 - xor edx, edx - div edx:eax, ecx - mov edx, bword ptr [ebp-0x0C] - ; byrRegs +[edx] - mov dword ptr [edx+0x04], eax - ;; size=31 bbWeight=1 PerfScore 30.75
+ mov dword ptr [eax+0x04], 128 + ;; size=15 bbWeight=1 PerfScore 3.00
G_M18678_IG03: ; bbWeight=1, epilog, nogc, extend mov esp, ebp pop ebp ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 52, prolog size 14, PerfScore 37.25, instruction count 19, allocated bytes for code 52 (MethodHash=e282b709) for method System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
+; Total bytes of code 31, prolog size 9, PerfScore 8.25, instruction count 11, allocated bytes for code 31 (MethodHash=e282b709) for method System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
; ============================================================

-4 (-40.00%) : 24304.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; Tier1 code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data @@ -10,22 +10,18 @@ ; ;* V00 tmp0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune> ;* V01 tmp1 [V01 ] ( 0, 0 ) int -> zero-ref "field V00._value (fldOffset=0x0)" P-INDEP
-;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; ; Lcl frame size = 0 G_M7284_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M7284_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, 0xFFFD ;; size=5 bbWeight=1 PerfScore 0.25 G_M7284_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ebp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 10, prolog size 3, PerfScore 3.00, instruction count 5, allocated bytes for code 10 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
+; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
; ============================================================

-22 (-22.00%) : 13147.dasm - System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)

@@ -19,22 +19,14 @@ G_M35788_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, b mov dword ptr [ebp-0x08], edx ;; size=12 bbWeight=1 PerfScore 3.50 G_M35788_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- mov eax, 1 - mov edx, 4 - shl edx, 2 - mov ecx, 8 - shl ecx, 2 - dec ecx - and ecx, edx - shl eax, cl - mov dword ptr [ebp-0x0C], eax
+ mov dword ptr [ebp-0x0C], 0x10000
mov eax, dword ptr [ebp-0x08] cmp eax, dword ptr [ebp-0x0C] jae SHORT G_M35788_IG03 mov eax, dword ptr [ebp-0x04] cmp eax, dword ptr [ebp-0x0C] jb SHORT G_M35788_IG04
- ;; size=45 bbWeight=1 PerfScore 13.25
+ ;; size=23 bbWeight=1 PerfScore 9.00
G_M35788_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz cmp dword ptr [ebp-0x08], 0 je SHORT G_M35788_IG04 @@ -62,6 +54,6 @@ G_M35788_IG07: ; bbWeight=1, epilog, nogc, extend ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 100, prolog size 6, PerfScore 62.50, instruction count 36, allocated bytes for code 100 (MethodHash=0ddb7433) for method System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)
+; Total bytes of code 78, prolog size 6, PerfScore 58.25, instruction count 28, allocated bytes for code 78 (MethodHash=0ddb7433) for method System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)
; ============================================================

+0 (0.00%) : 1816.dasm - System.SpanHelpers:Fillushort (Tier0-FullOpts)

@@ -13,7 +13,7 @@ ; V02 arg2 [V02,T02] ( 16, 36 ) ushort -> eax single-def ; V03 loc0 [V03,T00] ( 23, 50 ) int -> esi ;* V04 loc1 [V04 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op
-; V05 loc2 [V05,T11] ( 5, 9.50) simd32 -> mm0 ld-addr-op <System.Numerics.Vector`1[ubyte]>
+; V05 loc2 [V05,T10] ( 5, 9.50) simd32 -> mm0 ld-addr-op <System.Numerics.Vector`1[ubyte]>
; V06 loc3 [V06,T05] ( 5, 9.50) byref -> ecx single-def ; V07 loc4 [V07,T09] ( 4, 2 ) int -> eax ; V08 loc5 [V08,T07] ( 2, 4.50) int -> esi @@ -22,7 +22,7 @@ ; V11 loc8 [V11,T08] ( 2, 4.50) int -> edi ; V12 tmp0 [V12,T04] ( 2, 16 ) int -> esi "dup spill" ;* V13 tmp1 [V13 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[ushort]>
-;* V14 tmp2 [V14,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V14 tmp2 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; ; Lcl frame size = 0

+4 (+0.19%) : 3960.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],System.Func3[System.Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

@@ -10,7 +10,7 @@ ; ; V00 this [V00,T09] ( 9, 9 ) ref -> [ebp-0x10C] this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]> ; V01 arg1 [V01,T08] ( 16, 9 ) ref -> esi class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
-; V02 arg2 [V02,T01] ( 40, 23.50) ref -> ebx class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V02 arg2 [V02,T02] ( 40, 23.50) ref -> ebx class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
; V03 arg3 [V03,T18] ( 8, 7.50) ref -> [ebp+0x0C] class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,ulong]> ; V04 TypeCtx [V04,T15] ( 12, 8.96) int -> [ebp+0x08] single-def ;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref @@ -31,7 +31,7 @@ ;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V23 tmp13 [V23,T84] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V23 tmp13 [V23,T81] ( 2, 1 ) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
;* V24 tmp14 [V24,T86] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V25 tmp15 [V25 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V26 tmp16 [V26,T87] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -43,7 +43,7 @@ ;* V32 tmp22 [V32 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V33 tmp23 [V33,T25] ( 5, 2.50) ref -> [ebp-0x11C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V34 tmp24 [V34,T10] ( 10, 10 ) ref -> [ebp-0x120] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V35 tmp25 [V35,T81] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V35 tmp25 [V35,T83] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V36 tmp26 [V36,T30] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V37 tmp27 [V37,T20] ( 7, 7 ) struct (32) [ebp-0x40] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V38 tmp28 [V38,T71] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp" @@ -61,7 +61,7 @@ ;* V50 tmp40 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V51 tmp41 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V52 tmp42 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V53 tmp43 [V53,T85] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
+; V53 tmp43 [V53,T82] ( 2, 1 ) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]>
;* V54 tmp44 [V54,T88] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V55 tmp45 [V55 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V56 tmp46 [V56,T89] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" @@ -73,7 +73,7 @@ ;* V62 tmp52 [V62 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V63 tmp53 [V63,T26] ( 5, 2.50) ref -> [ebp-0x124] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V64 tmp54 [V64,T11] ( 10, 10 ) ref -> [ebp-0x128] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V65 tmp55 [V65,T82] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V65 tmp55 [V65,T84] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V66 tmp56 [V66,T32] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V67 tmp57 [V67,T22] ( 7, 7 ) struct (32) [ebp-0x88] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V68 tmp58 [V68,T73] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp" @@ -105,7 +105,7 @@ ;* V94 tmp84 [V94 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V95 tmp85 [V95,T44] ( 4, 2 ) ref -> [ebp-0x12C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V96 tmp86 [V96,T12] ( 10, 10 ) ref -> [ebp-0x130] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-;* V97 tmp87 [V97,T83] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V97 tmp87 [V97,T85] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V98 tmp88 [V98,T35] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>> ; V99 tmp89 [V99,T16] ( 8, 8 ) struct (32) [ebp-0xD0] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V100 tmp90 [V100,T76] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp" @@ -118,9 +118,9 @@ ;* V107 tmp97 [V107 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V108 tmp98 [V108 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V109 tmp99 [V109,T04] ( 19, 19 ) ref -> eax "Single return block return value"
-; V110 tmp100 [V110,T27] ( 6, 3 ) int -> esi "field V28._info (fldOffset=0x0)" P-INDEP
+; V110 tmp100 [V110,T27] ( 6, 3 ) int -> edi "field V28._info (fldOffset=0x0)" P-INDEP
;* V111 tmp101 [V111 ] ( 0, 0 ) int -> zero-ref "field V39._info (fldOffset=0x0)" P-INDEP
-; V112 tmp102 [V112,T28] ( 6, 3 ) int -> esi "field V58._info (fldOffset=0x0)" P-INDEP
+; V112 tmp102 [V112,T28] ( 6, 3 ) int -> edi "field V58._info (fldOffset=0x0)" P-INDEP
;* V113 tmp103 [V113 ] ( 0, 0 ) int -> zero-ref "field V69._info (fldOffset=0x0)" P-INDEP ; V114 tmp104 [V114,T29] ( 6, 3 ) int -> edi "field V94._info (fldOffset=0x0)" P-INDEP ;* V115 tmp105 [V115 ] ( 0, 0 ) int -> zero-ref "field V101._info (fldOffset=0x0)" P-INDEP @@ -150,7 +150,7 @@ ; V139 tmp129 [V139,T65] ( 2, 2 ) ref -> edx single-def "argument with side effect" ; V140 tmp130 [V140,T66] ( 2, 2 ) ref -> [ebp-0x134] spill-single-def "argument with side effect" ; V141 tmp131 [V141,T67] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V142 tmp132 [V142,T02] ( 3, 24 ) ref -> edx "arr expr"
+; V142 tmp132 [V142,T01] ( 3, 24 ) ref -> edx "arr expr"
; V143 tmp133 [V143,T06] ( 2, 16 ) ref -> edx "argument with side effect" ; V144 cse0 [V144,T07] ( 3, 12 ) int -> edx "CSE - moderate" ; V145 cse1 [V145,T78] ( 3, 1.50) ref -> eax "CSE - conservative" @@ -161,19 +161,19 @@ ; V150 rat4 [V150,T58] ( 3, 2 ) int -> edx "runtime lookup" ; V151 rat5 [V151,T43] ( 3, 2.80) int -> ecx "spilling expr" ; V152 rat6 [V152,T46] ( 3, 2.24) int -> edx "fgMakeTemp is creating a new local variable"
-;* V153 rat7 [V153,T90] ( 0, 0 ) int -> zero-ref "field V25.lo (fldOffset=0x0)" P-INDEP -;* V154 rat8 [V154,T91] ( 0, 0 ) int -> zero-ref "field V25.hi (fldOffset=0x4)" P-INDEP
+;* V153 rat7 [V153 ] ( 0, 0 ) int -> zero-ref "field V25.lo (fldOffset=0x0)" P-INDEP +;* V154 rat8 [V154 ] ( 0, 0 ) int -> zero-ref "field V25.hi (fldOffset=0x4)" P-INDEP
;* V155 rat9 [V155 ] ( 0, 0 ) int -> zero-ref "field V27.lo (fldOffset=0x0)" P-INDEP ;* V156 rat10 [V156 ] ( 0, 0 ) int -> zero-ref "field V27.hi (fldOffset=0x4)" P-INDEP
-; V157 rat11 [V157,T50] ( 4, 2 ) int -> edi "field V30.lo (fldOffset=0x0)" P-INDEP
+; V157 rat11 [V157,T50] ( 4, 2 ) int -> esi "field V30.lo (fldOffset=0x0)" P-INDEP
; V158 rat12 [V158,T51] ( 4, 2 ) int -> [ebp-0xF4] spill-single-def "field V30.hi (fldOffset=0x4)" P-INDEP ;* V159 rat13 [V159 ] ( 0, 0 ) int -> zero-ref "field V31.lo (fldOffset=0x0)" P-INDEP ;* V160 rat14 [V160 ] ( 0, 0 ) int -> zero-ref "field V31.hi (fldOffset=0x4)" P-INDEP
-;* V161 rat15 [V161,T92] ( 0, 0 ) int -> zero-ref "field V55.lo (fldOffset=0x0)" P-INDEP -;* V162 rat16 [V162,T93] ( 0, 0 ) int -> zero-ref "field V55.hi (fldOffset=0x4)" P-INDEP
+;* V161 rat15 [V161 ] ( 0, 0 ) int -> zero-ref "field V55.lo (fldOffset=0x0)" P-INDEP +;* V162 rat16 [V162 ] ( 0, 0 ) int -> zero-ref "field V55.hi (fldOffset=0x4)" P-INDEP
;* V163 rat17 [V163 ] ( 0, 0 ) int -> zero-ref "field V57.lo (fldOffset=0x0)" P-INDEP ;* V164 rat18 [V164 ] ( 0, 0 ) int -> zero-ref "field V57.hi (fldOffset=0x4)" P-INDEP
-; V165 rat19 [V165,T52] ( 4, 2 ) int -> edi "field V60.lo (fldOffset=0x0)" P-INDEP
+; V165 rat19 [V165,T52] ( 4, 2 ) int -> esi "field V60.lo (fldOffset=0x0)" P-INDEP
; V166 rat20 [V166,T53] ( 4, 2 ) int -> [ebp-0xF8] spill-single-def "field V60.hi (fldOffset=0x4)" P-INDEP ;* V167 rat21 [V167 ] ( 0, 0 ) int -> zero-ref "field V61.lo (fldOffset=0x0)" P-INDEP ;* V168 rat22 [V168 ] ( 0, 0 ) int -> zero-ref "field V61.hi (fldOffset=0x4)" P-INDEP @@ -341,6 +341,8 @@ G_M44013_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; gcrRegs +[eax] test eax, eax jne G_M44013_IG25
+ mov esi, ebx + ; gcrRegs +[esi]
push 0 push 0 push 1 @@ -351,25 +353,25 @@ G_M44013_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 mov edx, 1 call [<unknown method>] ; gcrRegs -[eax]
- mov esi, eax
+ mov edi, eax
push 0 push 0
- mov ecx, ebx
+ mov ecx, esi
; gcrRegs +[ecx] mov edx, 5 call [<unknown method>]
- ; gcrRegs -[ecx] - mov edi, eax
+ ; gcrRegs -[ecx esi] + mov esi, eax
mov eax, edx mov dword ptr [ebp-0xF4], edx mov ecx, gword ptr [ebx+0x54] ; gcrRegs +[ecx]
- mov dword ptr [ebp-0x40], edi
+ mov dword ptr [ebp-0x40], esi
mov dword ptr [ebp-0x3C], eax mov dword ptr [ebp-0x30], 5 mov dword ptr [ebp-0x2C], -1 mov dword ptr [ebp-0x28], -1
- mov dword ptr [ebp-0x24], esi
+ mov dword ptr [ebp-0x24], edi
cmp byte ptr [ecx], cl push dword ptr [ebp-0x24] push dword ptr [ebp-0x28] @@ -384,12 +386,12 @@ G_M44013_IG18: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000 ; byrRegs +[eax] test eax, eax je SHORT G_M44013_IG19
- mov esi, gword ptr [eax] - ; gcrRegs +[esi]
+ mov edi, gword ptr [eax] + ; gcrRegs +[edi]
jmp G_M44013_IG24
- ;; size=141 bbWeight=0.50 PerfScore 23.62
+ ;; size=143 bbWeight=0.50 PerfScore 23.75
G_M44013_IG19: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] call CORINFO_HELP_NEWSFAST @@ -408,13 +410,13 @@ G_M44013_IG20: ; bbWeight=0.50, gcVars=000000000000000000000400 {V34}, gc mov dword ptr [eax+0x20], -1 lea ecx, bword ptr [eax+0x04] ; byrRegs +[ecx]
- mov dword ptr [ecx], edi
+ mov dword ptr [ecx], esi
mov edx, dword ptr [ebp-0xF4] mov dword ptr [ecx+0x04], edx
- mov dword ptr [eax+0x24], esi - test esi, 32
+ mov dword ptr [eax+0x24], edi + test edi, 32
je SHORT G_M44013_IG21
- test esi, 8
+ test edi, 8
jne SHORT G_M44013_IG22 ;; size=50 bbWeight=0.50 PerfScore 5.00 G_M44013_IG21: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz @@ -444,13 +446,13 @@ G_M44013_IG23: ; bbWeight=0.50, gcrefRegs=0000000A {ecx ebx}, byrefRegs=0 ; byrRegs -[edx] mov ecx, gword ptr [ebx+0x54] ; gcrRegs +[ecx]
- mov dword ptr [ebp-0x60], edi - mov edi, dword ptr [ebp-0xF4] - mov dword ptr [ebp-0x5C], edi
+ mov dword ptr [ebp-0x60], esi + mov esi, dword ptr [ebp-0xF4] + mov dword ptr [ebp-0x5C], esi
mov dword ptr [ebp-0x50], 5 mov dword ptr [ebp-0x4C], -1 mov dword ptr [ebp-0x48], -1
- mov dword ptr [ebp-0x44], esi
+ mov dword ptr [ebp-0x44], edi
cmp byte ptr [ecx], cl push dword ptr [ebp-0x44] push dword ptr [ebp-0x48] @@ -476,37 +478,39 @@ G_M44013_IG23: ; bbWeight=0.50, gcrefRegs=0000000A {ecx ebx}, byrefRegs=0 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov esi, gword ptr [ebp-0x11C] - ; gcrRegs +[esi]
+ mov edi, gword ptr [ebp-0x11C] + ; gcrRegs +[edi]
;; size=121 bbWeight=0.50 PerfScore 16.75
-G_M44013_IG24: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M44013_IG24: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
; GC ptr vars -{V33} lea edx, bword ptr [ebx+0x30] ; byrRegs +[edx]
- call CORINFO_HELP_ASSIGN_REF_ESI
+ call CORINFO_HELP_ASSIGN_REF_EDI
; gcrRegs -[ebx] ; byrRegs -[edx]
- mov eax, esi
+ mov eax, edi
; gcrRegs +[eax] ;; size=10 bbWeight=0.50 PerfScore 0.88 G_M44013_IG25: ; bbWeight=0.50, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
jmp G_M44013_IG52 ;; size=5 bbWeight=0.50 PerfScore 1.00 G_M44013_IG26: ; bbWeight=0.25, gcVars=000000000000000002000000 {V33}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax] +[ebx] ; GC ptr vars +{V33}
- mov esi, gword ptr [ebp-0x11C] - ; gcrRegs +[esi]
+ mov edi, gword ptr [ebp-0x11C] + ; gcrRegs +[edi]
jmp SHORT G_M44013_IG24 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M44013_IG27: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; gcrRegs -[esi]
+ ; gcrRegs -[edi]
; GC ptr vars -{V33} mov eax, gword ptr [ebx+0x34] ; gcrRegs +[eax] test eax, eax jne G_M44013_IG34
+ mov esi, ebx + ; gcrRegs +[esi]
push 0 push 0 push 1 @@ -517,25 +521,25 @@ G_M44013_IG27: ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcref mov edx, 1 call [<unknown method>] ; gcrRegs -[eax]
- mov esi, eax
+ mov edi, eax
...

+40 (+0.57%) : 3836.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)

@@ -30,11 +30,11 @@ ; V19 loc17 [V19,T198] ( 3, 8 ) ubyte -> ecx ;* V20 loc18 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String> ; V21 loc19 [V21,T178] ( 3, 10 ) ref -> [ebp-0x2AC] class-hnd exact spill-single-def <System.Text.RegularExpressions.Symbolic.BDD>
-; V22 loc20 [V22,T301] ( 2, 0.50) ref -> ebx class-hnd exact <System.String> -; V23 loc21 [V23,T302] ( 10, 0 ) ref -> esi class-hnd <System.String> -; V24 loc22 [V24,T299] ( 6, 1.50) ubyte -> eax
+; V22 loc20 [V22,T297] ( 2, 0.50) ref -> ebx class-hnd exact <System.String> +; V23 loc21 [V23,T298] ( 10, 0 ) ref -> esi class-hnd <System.String> +; V24 loc22 [V24,T295] ( 6, 1.50) ubyte -> eax
;* V25 loc23 [V25 ] ( 0, 0 ) ubyte -> zero-ref
-; V26 loc24 [V26,T63] ( 2, 36 ) ref -> edi class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V26 loc24 [V26,T59] ( 2, 36 ) ref -> edi class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V27 loc25 [V27,T11] ( 5,132 ) int -> ebx ;* V28 loc26 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]> ; V29 loc27 [V29,T66] ( 6, 24 ) ref -> edi class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -52,7 +52,7 @@ ; V41 tmp4 [V41,T20] ( 3, 96 ) ref -> [ebp-0x2B4] class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.RegexNode> ; V42 tmp5 [V42,T13] ( 2,128 ) ref -> [ebp-0x2B8] class-hnd exact spill-single-def "impAppendStmt" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]]> ;* V43 tmp6 [V43 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]>
-; V44 tmp7 [V44,T303] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V44 tmp7 [V44,T299] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>>
; V45 tmp8 [V45,T04] ( 4,160 ) ref -> [ebp-0x2BC] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>> ; V46 tmp9 [V46,T77] ( 4, 24 ) ref -> ebx class-hnd exact "impAppendStmt" <<unknown class>> ;* V47 tmp10 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Text.RegularExpressions.Symbolic.ISolver`1[System.__Canon]> @@ -71,10 +71,10 @@ ;* V60 tmp23 [V60 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ; V61 tmp24 [V61,T33] ( 14, 64 ) ref -> [ebp-0x2C4] ; V62 tmp25 [V62,T67] ( 6, 24 ) ref -> edi
-; V63 tmp26 [V63,T240] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
+; V63 tmp26 [V63,T244] ( 3, 2 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]>
; V64 tmp27 [V64,T226] ( 3, 5 ) int -> eax "Inlining Arg"
-; V65 tmp28 [V65,T237] ( 4, 3 ) int -> [ebp-0x20] spill-single-def "Inline stloc first use temp" -; V66 tmp29 [V66,T239] ( 3, 2.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V65 tmp28 [V65,T241] ( 4, 3 ) int -> [ebp-0x20] spill-single-def "Inline stloc first use temp" +; V66 tmp29 [V66,T243] ( 3, 2.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V67 tmp30 [V67 ] ( 0, 0 ) struct (12) zero-ref "Inlining Arg" <System.ValueTuple`3[System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]],System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]]> ;* V68 tmp31 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V69 tmp32 [V69,T97] ( 3, 20 ) ref -> edi class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.BDD> @@ -93,14 +93,14 @@ ;* V82 tmp45 [V82 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V83 tmp46 [V83,T142] ( 5, 10 ) ref -> [ebp-0x2CC] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V84 tmp47 [V84,T48] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V85 tmp48 [V85,T228] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V85 tmp48 [V85,T232] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V86 tmp49 [V86,T157] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V87 tmp50 [V87,T87] ( 5, 20 ) struct (28) [ebp-0x40] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V88 tmp51 [V88,T212] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V89 tmp52 [V89 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V90 tmp53 [V90,T243] ( 0, 0 ) ref -> zero-ref
+;* V90 tmp53 [V90,T247] ( 0, 0 ) ref -> zero-ref
;* V91 tmp54 [V91 ] ( 0, 0 ) ref -> zero-ref
-;* V92 tmp55 [V92,T244] ( 0, 0 ) ref -> zero-ref
+;* V92 tmp55 [V92,T248] ( 0, 0 ) ref -> zero-ref
; V93 tmp56 [V93,T158] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V94 tmp57 [V94,T88] ( 5, 20 ) struct (28) [ebp-0x5C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V95 tmp58 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -122,14 +122,14 @@ ;* V111 tmp74 [V111 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V112 tmp75 [V112,T143] ( 5, 10 ) ref -> [ebp-0x2D4] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V113 tmp76 [V113,T49] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V114 tmp77 [V114,T229] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V114 tmp77 [V114,T233] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V115 tmp78 [V115,T159] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V116 tmp79 [V116,T89] ( 5, 20 ) struct (28) [ebp-0x7C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V117 tmp80 [V117,T213] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V118 tmp81 [V118 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V119 tmp82 [V119,T245] ( 0, 0 ) ref -> zero-ref
+;* V119 tmp82 [V119,T249] ( 0, 0 ) ref -> zero-ref
;* V120 tmp83 [V120 ] ( 0, 0 ) ref -> zero-ref
-;* V121 tmp84 [V121,T246] ( 0, 0 ) ref -> zero-ref
+;* V121 tmp84 [V121,T250] ( 0, 0 ) ref -> zero-ref
; V122 tmp85 [V122,T160] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V123 tmp86 [V123,T90] ( 5, 20 ) struct (28) [ebp-0x98] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V124 tmp87 [V124 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -154,14 +154,14 @@ ;* V143 tmp106 [V143 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V144 tmp107 [V144,T144] ( 5, 10 ) ref -> [ebp-0x2DC] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V145 tmp108 [V145,T50] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V146 tmp109 [V146,T230] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V146 tmp109 [V146,T234] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V147 tmp110 [V147,T161] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V148 tmp111 [V148,T91] ( 5, 20 ) struct (28) [ebp-0xB8] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V149 tmp112 [V149,T214] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V150 tmp113 [V150 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V151 tmp114 [V151,T247] ( 0, 0 ) ref -> zero-ref
+;* V151 tmp114 [V151,T251] ( 0, 0 ) ref -> zero-ref
;* V152 tmp115 [V152 ] ( 0, 0 ) ref -> zero-ref
-;* V153 tmp116 [V153,T248] ( 0, 0 ) ref -> zero-ref
+;* V153 tmp116 [V153,T252] ( 0, 0 ) ref -> zero-ref
; V154 tmp117 [V154,T162] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V155 tmp118 [V155,T92] ( 5, 20 ) struct (28) [ebp-0xD4] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V156 tmp119 [V156 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -201,14 +201,14 @@ ; V190 tmp153 [V190,T15] ( 2,128 ) ref -> eax "CASTCLASS eval op1" ;* V191 tmp154 [V191 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V192 tmp155 [V192,T26] ( 4, 76 ) ref -> eax class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V193 tmp156 [V193,T61] ( 3, 36 ) ref -> [ebp-0x2EC] spill-single-def "CASTCLASS eval op1"
+; V193 tmp156 [V193,T57] ( 3, 36 ) ref -> [ebp-0x2EC] spill-single-def "CASTCLASS eval op1"
; V194 tmp157 [V194,T100] ( 3, 20 ) int -> edx "fgMakeTemp is creating a new local variable" ; V195 tmp158 [V195,T28] ( 6, 76 ) ref -> eax class-hnd "spilling QMark2" <<unknown class>> ; V196 tmp159 [V196,T41] ( 3, 48 ) ref -> ecx class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode> ; V197 tmp160 [V197,T16] ( 2,128 ) ref -> ecx "CASTCLASS eval op1" ;* V198 tmp161 [V198 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V199 tmp162 [V199,T27] ( 4, 76 ) ref -> ecx class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode>
-; V200 tmp163 [V200,T62] ( 3, 36 ) ref -> [ebp-0x2F0] spill-single-def "CASTCLASS eval op1"
+; V200 tmp163 [V200,T58] ( 3, 36 ) ref -> [ebp-0x2F0] spill-single-def "CASTCLASS eval op1"
; V201 tmp164 [V201,T101] ( 3, 20 ) int -> ecx "fgMakeTemp is creating a new local variable" ; V202 tmp165 [V202,T29] ( 6, 76 ) ref -> [ebp-0x2F4] class-hnd "spilling QMark2" <<unknown class>> ; V203 tmp166 [V203,T42] ( 3, 48 ) ref -> eax class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.DoublyLinkedList`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]][]> @@ -233,14 +233,14 @@ ;* V222 tmp185 [V222 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V223 tmp186 [V223,T145] ( 5, 10 ) ref -> [ebp-0x300] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V224 tmp187 [V224,T51] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V225 tmp188 [V225,T231] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V225 tmp188 [V225,T235] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V226 tmp189 [V226,T163] ( 3, 12 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V227 tmp190 [V227,T93] ( 5, 20 ) struct (28) [ebp-0x138] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V228 tmp191 [V228,T215] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V229 tmp192 [V229 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V230 tmp193 [V230,T249] ( 0, 0 ) ref -> zero-ref
+;* V230 tmp193 [V230,T253] ( 0, 0 ) ref -> zero-ref
;* V231 tmp194 [V231 ] ( 0, 0 ) ref -> zero-ref
-;* V232 tmp195 [V232,T250] ( 0, 0 ) ref -> zero-ref
+;* V232 tmp195 [V232,T254] ( 0, 0 ) ref -> zero-ref
; V233 tmp196 [V233,T164] ( 3, 12 ) ref -> eax class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V234 tmp197 [V234,T94] ( 5, 20 ) struct (28) [ebp-0x154] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V235 tmp198 [V235 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> @@ -261,38 +261,38 @@ ;* V250 tmp213 [V250 ] ( 0, 0 ) struct ( 4) zero-ref "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ; V251 tmp214 [V251,T146] ( 5, 10 ) ref -> [ebp-0x30C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ; V252 tmp215 [V252,T52] ( 10, 40 ) ref -> eax class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V253 tmp216 [V253,T232] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V253 tmp216 [V253,T236] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V254 tmp217 [V254,T165] ( 3, 12 ) ref -> edx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V255 tmp218 [V255,T95] ( 5, 20 ) struct (28) [ebp-0x174] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V256 tmp219 [V256,T216] ( 3, 6 ) byref -> eax "Inline stloc first use temp" ;* V257 tmp220 [V257 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo>
-;* V258 tmp221 [V258,T251] ( 0, 0 ) ref -> zero-ref
+;* V258 tmp221 [V258,T255] ( 0, 0 ) ref -> zero-ref
;* V259 tmp222 [V259 ] ( 0, 0 ) ref -> zero-ref
-;* V260 tmp223 [V260,T252] ( 0, 0 ) ref -> zero-ref
+;* V260 tmp223 [V260,T256] ( 0, 0 ) ref -> zero-ref
; V261 tmp224 [V261,T166] ( 3, 12 ) ref -> eax class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V262 tmp225 [V262,T96] ( 5, 20 ) struct (28) [ebp-0x190] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ;* V263 tmp226 [V263 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V264 tmp227 [V264 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V265 tmp228 [V265 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V266 tmp229 [V266,T57] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V266 tmp229 [V266,T60] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V267 tmp230 [V267,T111] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V268 tmp231 [V268,T138] ( 4, 14 ) ref -> edx ;* V269 tmp232 [V269 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V270 tmp233 [V270 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V271 tmp234 [V271 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V272 tmp235 [V272,T253] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V273 tmp236 [V273,T271] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V274 tmp237 [V274,T254] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V275 tmp238 [V275,T272] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V272 tmp235 [V272,T228] ( 2, 4 ) ref -> [ebp-0x310] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V273 tmp236 [V273,T267] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V274 tmp237 [V274 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V275 tmp238 [V275,T268] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V276 tmp239 [V276 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V277 tmp240 [V277 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V278 tmp241 [V278 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V279 tmp242 [V279,T185] ( 4, 8 ) ref -> [ebp-0x310] spill-single-def
+; V279 tmp242 [V279,T185] ( 4, 8 ) ref -> [ebp-0x314] spill-single-def
;* V280 tmp243 [V280 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V281 tmp244 [V281 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V282 tmp245 [V282,T147] ( 5, 10 ) ref -> [ebp-0x314] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V283 tmp246 [V283,T53] ( 10, 40 ) ref -> [ebp-0x318] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V284 tmp247 [V284,T233] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V282 tmp245 [V282,T147] ( 5, 10 ) ref -> [ebp-0x318] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V283 tmp246 [V283,T53] ( 10, 40 ) ref -> [ebp-0x31C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V284 tmp247 [V284,T237] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V285 tmp248 [V285,T167] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V286 tmp249 [V286,T68] ( 6, 24 ) struct (28) [ebp-0x1AC] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V287 tmp250 [V287,T217] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -305,25 +305,25 @@ ;* V294 tmp257 [V294 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V295 tmp258 [V295 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V296 tmp259 [V296 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V297 tmp260 [V297,T58] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V297 tmp260 [V297,T61] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V298 tmp261 [V298,T112] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V299 tmp262 [V299,T139] ( 4, 14 ) ref -> edx ;* V300 tmp263 [V300 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V301 tmp264 [V301 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V302 tmp265 [V302 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V303 tmp266 [V303,T255] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V304 tmp267 [V304,T273] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V305 tmp268 [V305,T256] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V306 tmp269 [V306,T274] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V303 tmp266 [V303,T229] ( 2, 4 ) ref -> [ebp-0x320] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V304 tmp267 [V304,T269] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V305 tmp268 [V305 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V306 tmp269 [V306,T270] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V307 tmp270 [V307 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V308 tmp271 [V308 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V309 tmp272 [V309 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V310 tmp273 [V310,T186] ( 4, 8 ) ref -> [ebp-0x31C] spill-single-def
+; V310 tmp273 [V310,T186] ( 4, 8 ) ref -> [ebp-0x324] spill-single-def
;* V311 tmp274 [V311 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V312 tmp275 [V312 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V313 tmp276 [V313,T148] ( 5, 10 ) ref -> [ebp-0x320] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V314 tmp277 [V314,T54] ( 10, 40 ) ref -> [ebp-0x324] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V315 tmp278 [V315,T234] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V313 tmp276 [V313,T148] ( 5, 10 ) ref -> [ebp-0x328] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V314 tmp277 [V314,T54] ( 10, 40 ) ref -> [ebp-0x32C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V315 tmp278 [V315,T238] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V316 tmp279 [V316,T169] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V317 tmp280 [V317,T70] ( 6, 24 ) struct (28) [ebp-0x1E4] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V318 tmp281 [V318,T219] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -336,25 +336,25 @@ ;* V325 tmp288 [V325 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V326 tmp289 [V326 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V327 tmp290 [V327 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V328 tmp291 [V328,T59] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
+; V328 tmp291 [V328,T62] ( 6, 32 ) ref -> edi class-hnd exact "Inlining Arg" <<unknown class>>
; V329 tmp292 [V329,T113] ( 2, 16 ) ref -> edx class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V330 tmp293 [V330,T140] ( 4, 14 ) ref -> edx ;* V331 tmp294 [V331 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V332 tmp295 [V332 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> ;* V333 tmp296 [V333 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-;* V334 tmp297 [V334,T257] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>> -;* V335 tmp298 [V335,T275] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V336 tmp299 [V336,T258] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> -;* V337 tmp300 [V337,T276] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V334 tmp297 [V334,T230] ( 2, 4 ) ref -> [ebp-0x330] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>> +;* V335 tmp298 [V335,T271] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V336 tmp299 [V336 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.BDD> +;* V337 tmp300 [V337,T272] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V338 tmp301 [V338 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Text.RegularExpressions.Symbolic.BDD> ;* V339 tmp302 [V339 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V340 tmp303 [V340 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]>
-; V341 tmp304 [V341,T187] ( 4, 8 ) ref -> [ebp-0x328] spill-single-def
+; V341 tmp304 [V341,T187] ( 4, 8 ) ref -> [ebp-0x334] spill-single-def
;* V342 tmp305 [V342 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.BDD> ;* V343 tmp306 [V343 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]>
-; V344 tmp307 [V344,T149] ( 5, 10 ) ref -> [ebp-0x32C] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -; V345 tmp308 [V345,T55] ( 10, 40 ) ref -> [ebp-0x330] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> -;* V346 tmp309 [V346,T235] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V344 tmp307 [V344,T149] ( 5, 10 ) ref -> [ebp-0x338] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +; V345 tmp308 [V345,T55] ( 10, 40 ) ref -> [ebp-0x33C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]> +;* V346 tmp309 [V346,T239] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V347 tmp310 [V347,T171] ( 3, 12 ) ref -> ecx class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V348 tmp311 [V348,T72] ( 6, 24 ) struct (28) [ebp-0x21C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BDD]> ; V349 tmp312 [V349,T221] ( 3, 6 ) byref -> eax "Inline stloc first use temp" @@ -367,25 +367,25 @@ ...

coreclr_tests.run.windows.x86.checked.mch

-41 (-80.39%) : 486009.dasm - ILGEN_0xa7db44c0:main():int (Tier0)

@@ -11,32 +11,15 @@ G_M094_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- vzeroupper - ;; size=6 bbWeight=1 PerfScore 2.25 -G_M094_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - xor eax, eax - mov edx, 44 - mul edx:eax, edx - jb SHORT G_M094_IG04 - vxorps xmm0, xmm0, xmm0 - vcvtsi2sd xmm0, xmm0, eax - vxorps xmm1, xmm1, xmm1 - xor eax, eax - vucomisd xmm1, xmm0 - seta al - inc eax - dec eax - add eax, 100 - ;; size=37 bbWeight=1 PerfScore 15.17
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M094_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 100 + ;; size=5 bbWeight=1 PerfScore 0.25
G_M094_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-G_M094_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - call CORINFO_HELP_OVERFLOW - int3 - ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 51, prolog size 6, PerfScore 18.92, instruction count 20, allocated bytes for code 51 (MethodHash=477affa1) for method ILGEN_0xa7db44c0:main():int (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 3.00, instruction count 5, allocated bytes for code 10 (MethodHash=477affa1) for method ILGEN_0xa7db44c0:main():int (Tier0)
; ============================================================

-42 (-79.25%) : 240524.dasm - ILGENCLASS:ILGENMETHOD(int):ubyte (FullOpts)

@@ -11,38 +11,21 @@ ;* V01 loc0 [V01 ] ( 0, 0 ) short -> zero-ref ;* V02 loc1 [V02 ] ( 0, 0 ) ushort -> zero-ref ;* V03 tmp0 [V03 ] ( 0, 0 ) long -> zero-ref "dup spill"
-;* V04 rat0 [V04,T00] ( 0, 0 ) int -> zero-ref "field V03.lo (fldOffset=0x0)" P-INDEP -;* V05 rat1 [V05,T01] ( 0, 0 ) int -> zero-ref "field V03.hi (fldOffset=0x4)" P-INDEP
+;* V04 rat0 [V04 ] ( 0, 0 ) int -> zero-ref "field V03.lo (fldOffset=0x0)" P-INDEP +;* V05 rat1 [V05 ] ( 0, 0 ) int -> zero-ref "field V03.hi (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0
-G_M33382_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M33382_IG01: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- ;; size=3 bbWeight=1 PerfScore 1.25 -G_M33382_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - push 0xD1FFAB1E - push 0xD1FFAB1E - push 0xD1FFAB1E - push 0xD1FFAB1E - call CORINFO_HELP_LMUL_OVF - xor eax, eax - xor edx, edx - not eax - not edx - test edx, edx - jne SHORT G_M33382_IG04 - mov eax, 1 - ;; size=42 bbWeight=1 PerfScore 7.50 -G_M33382_IG03: ; bbWeight=1, epilog, nogc, extend - pop ebp - ret - ;; size=2 bbWeight=1 PerfScore 1.50 -G_M33382_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=3 bbWeight=0 PerfScore 0.00 +G_M33382_IG02: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + xor ecx, ecx
call CORINFO_HELP_OVERFLOW int3
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 53, prolog size 3, PerfScore 10.25, instruction count 18, allocated bytes for code 53 (MethodHash=572e7d99) for method ILGEN_CLASS:ILGEN_METHOD(int):ubyte (FullOpts)
+; Total bytes of code 11, prolog size 3, PerfScore 0.00, instruction count 5, allocated bytes for code 11 (MethodHash=572e7d99) for method ILGEN_CLASS:ILGEN_METHOD(int):ubyte (FullOpts)
; ============================================================

-38 (-79.17%) : 495074.dasm - _n:main():int (Tier0)

@@ -8,38 +8,18 @@ ; ; Lcl frame size = 0
-G_M4754_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M4754_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp mov ebp, esp
- vzeroupper - ;; size=6 bbWeight=1 PerfScore 2.25 -G_M4754_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - vmovsd xmm0, qword ptr [@RWD00] - vxorps xmm0, xmm0, xmmword ptr [@RWD16] - vucomisd xmm0, qword ptr [@RWD32] - jp SHORT G_M4754_IG03 - je SHORT G_M4754_IG05 - ;; size=28 bbWeight=1 PerfScore 11.00 -G_M4754_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov eax, 5 - ;; size=5 bbWeight=1 PerfScore 0.25 -G_M4754_IG04: ; bbWeight=1, epilog, nogc, extend - pop ebp - ret - ;; size=2 bbWeight=1 PerfScore 1.50 -G_M4754_IG05: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+ ;; size=3 bbWeight=1 PerfScore 1.25 +G_M4754_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov eax, 100 ;; size=5 bbWeight=1 PerfScore 0.25
-G_M4754_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M4754_IG03: ; bbWeight=1, epilog, nogc, extend
pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-RWD00 dq 4058C66666666666h ; 99.1 -RWD08 dd 00000000h, 00000000h -RWD16 dq 8000000000000000h, 8000000000000000h -RWD32 dq C058C66666666666h ; -99.1
- -; Total bytes of code 48, prolog size 6, PerfScore 16.75, instruction count 14, allocated bytes for code 48 (MethodHash=9460ed6d) for method _n:main():int (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 3.00, instruction count 5, allocated bytes for code 10 (MethodHash=9460ed6d) for method _n:main():int (Tier0)
; ============================================================

+48 (+8.42%) : 352528.dasm - JIT.HardwareIntrinsics.General.Vector5121.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (Tier0-FullOpts)

@@ -8,13 +8,13 @@ ; 0 inlinees with PGO data; 34 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 3 ) ref -> [ebp-0x10] this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64> -; V01 arg1 [V01,T09] ( 13, 14.08) ref -> [ebp-0x14] class-hnd single-def <long[]> -; V02 arg2 [V02,T08] ( 10, 17 ) ref -> esi class-hnd single-def <long[]> -; V03 arg3 [V03,T16] ( 2, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.String> -;* V04 loc0 [V04,T11] ( 0, 0 ) ubyte -> zero-ref -; V05 loc1 [V05,T06] ( 12, 21.04) int -> edx -; V06 loc2 [V06,T07] ( 12, 21.04) int -> edx
+; V00 this [V00,T09] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64> +; V01 arg1 [V01,T06] ( 13, 14.08) ref -> esi class-hnd single-def <long[]> +; V02 arg2 [V02,T07] ( 8, 13 ) ref -> [ebp+0x0C] class-hnd single-def <long[]> +; V03 arg3 [V03,T15] ( 2, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.String> +;* V04 loc0 [V04,T10] ( 0, 0 ) ubyte -> zero-ref +; V05 loc1 [V05,T00] ( 14, 25.04) int -> edx +; V06 loc2 [V06,T01] ( 14, 25.04) int -> edx
;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -41,44 +41,43 @@ ;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP ;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V32 tmp25 [V32 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V33 tmp26 [V33,T17] ( 2, 1 ) byref -> ecx single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V34 tmp27 [V34,T21] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP
+; V33 tmp26 [V33,T16] ( 2, 1 ) byref -> ecx single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V34 tmp27 [V34,T20] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP
;* V35 tmp28 [V35 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP ;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP ;* V37 tmp30 [V37 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
-; V39 tmp32 [V39,T18] ( 2, 1 ) byref -> ecx single-def "field V15._reference (fldOffset=0x0)" P-INDEP -;* V40 tmp33 [V40,T22] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x4)" P-INDEP
+; V39 tmp32 [V39,T17] ( 2, 1 ) byref -> ecx single-def "field V15._reference (fldOffset=0x0)" P-INDEP +;* V40 tmp33 [V40,T21] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x4)" P-INDEP
;* V41 tmp34 [V41 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp35 [V42 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP ;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP
-; V45 tmp38 [V45,T19] ( 2, 1 ) byref -> ecx single-def "field V21._reference (fldOffset=0x0)" P-INDEP -;* V46 tmp39 [V46,T23] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x4)" P-INDEP
+; V45 tmp38 [V45,T18] ( 2, 1 ) byref -> ecx single-def "field V21._reference (fldOffset=0x0)" P-INDEP +;* V46 tmp39 [V46,T22] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x4)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP
-; V51 tmp44 [V51,T20] ( 2, 1 ) byref -> ecx single-def "field V26._reference (fldOffset=0x0)" P-INDEP -;* V52 tmp45 [V52,T24] ( 0, 0 ) int -> zero-ref single-def "field V26._length (fldOffset=0x4)" P-INDEP -; V53 tmp46 [V53,T00] ( 6, 24 ) int -> registers "index expr"
+; V51 tmp44 [V51,T19] ( 2, 1 ) byref -> ecx single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V52 tmp45 [V52,T23] ( 0, 0 ) int -> zero-ref single-def "field V26._length (fldOffset=0x4)" P-INDEP +; V53 tmp46 [V53,T11] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V54 tmp47 [V54,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect" ; V55 tmp48 [V55,T13] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V56 tmp49 [V56,T01] ( 6, 24 ) int -> registers "index expr" -; V57 tmp50 [V57,T14] ( 2, 2 ) ref -> edx single-def "argument with side effect" -; V58 tmp51 [V58,T15] ( 2, 2 ) ref -> edx single-def "argument with side effect" -; V59 rat0 [V59,T02] ( 3, 23.76) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V60 rat1 [V60,T03] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable" -; V61 rat2 [V61,T25] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V62 rat3 [V62,T26] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V63 rat4 [V63,T04] ( 3, 23.76) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V64 rat5 [V64,T05] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable" -; V65 rat6 [V65,T27] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V66 rat7 [V66,T28] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; TEMP_02 int -> [ebp-0x18] -; TEMP_01 int -> [ebp-0x1C]
+; V56 tmp49 [V56,T14] ( 2, 2 ) ref -> edx single-def "argument with side effect" +; V57 cse0 [V57,T08] ( 6, 12 ) int -> [ebp-0x10] multi-def "CSE - aggressive" +; V58 rat0 [V58,T02] ( 3, 23.76) byref -> ecx "ReplaceWithLclVar is creating a new local variable" +; V59 rat1 [V59,T03] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable" +; V60 rat2 [V60,T24] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" +; V61 rat3 [V61,T25] ( 3, 0.24) byref -> [ebp-0x18] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V62 rat4 [V62,T04] ( 3, 23.76) byref -> ecx "ReplaceWithLclVar is creating a new local variable" +; V63 rat5 [V63,T05] ( 3, 23.76) byref -> edi "ReplaceWithLclVar is creating a new local variable" +; V64 rat6 [V64,T26] ( 3, 0.24) byref -> [ebp-0x1C] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V65 rat7 [V65,T27] ( 3, 0.24) byref -> [ebp-0x20] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; TEMP_02 int -> [ebp-0x24] +; TEMP_01 int -> [ebp-0x28]
;
-; Lcl frame size = 16
+; Lcl frame size = 28
G_M48555_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -86,90 +85,103 @@ G_M48555_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16 - mov gword ptr [ebp-0x10], ecx
+ sub esp, 28 + mov gword ptr [ebp-0x14], ecx
; GC ptr vars +{V00}
- mov edi, edx - ; gcrRegs +[edi] - mov esi, gword ptr [ebp+0x0C]
+ mov esi, edx
; gcrRegs +[esi]
+ mov edi, gword ptr [ebp+0x0C] + ; gcrRegs +[edi]
;; size=17 bbWeight=1 PerfScore 6.75
-G_M48555_IG02: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M48555_IG02: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
xor edx, edx
- test edi, edi
+ test esi, esi
je SHORT G_M48555_IG06
- cmp dword ptr [edi+0x04], 4
+ cmp dword ptr [esi+0x04], 4
jl SHORT G_M48555_IG06 ;; size=12 bbWeight=1 PerfScore 5.50 G_M48555_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x14], edi - ; GC ptr vars +{V01} - lea ecx, bword ptr [edi+8*edx+0x08]
+ lea ecx, bword ptr [esi+8*edx+0x08]
; byrRegs +[ecx] mov eax, dword ptr [ecx] mov ecx, dword ptr [ecx+0x04] ; byrRegs -[ecx] lea ebx, [edx+0x04]
- cmp ebx, dword ptr [esi+0x04] - jae G_M48555_IG17 - lea ebx, bword ptr [esi+8*ebx+0x08]
+ mov gword ptr [ebp+0x0C], edi + mov edi, dword ptr [edi+0x04] + ; gcrRegs -[edi] + mov dword ptr [ebp-0x10], edi + cmp ebx, edi + jae G_M48555_IG19 + mov ebx, gword ptr [ebp+0x0C] + ; gcrRegs +[ebx] + lea ebx, bword ptr [ebx+8*edx+0x28] + ; gcrRegs -[ebx]
; byrRegs +[ebx] mov edi, dword ptr [ebx]
- ; gcrRegs -[edi]
xor eax, edi xor ecx, dword ptr [ebx+0x04] or ecx, eax jne SHORT G_M48555_IG05 inc edx cmp edx, 4
- mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi] jl SHORT G_M48555_IG03
- ;; size=48 bbWeight=3.96 PerfScore 81.18
+ ;; size=56 bbWeight=3.96 PerfScore 86.13
G_M48555_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref ; byrRegs -[ebx]
- ; GC ptr vars -{V01} - jmp G_M48555_IG09 - ;; size=5 bbWeight=0.50 PerfScore 1.00 -G_M48555_IG05: ; bbWeight=1.98, gcVars=00000600 {V00 V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edx, dword ptr [ebp-0x10] + jmp G_M48555_IG10 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M48555_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- ; GC ptr vars +{V01} - mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- jmp SHORT G_M48555_IG08
+ jmp SHORT G_M48555_IG09
;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M48555_IG06: ; bbWeight=0.04, gcVars=00000400 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V01} - cmp edx, dword ptr [edi+0x04] - jae G_M48555_IG17 - lea ecx, bword ptr [edi+8*edx+0x08]
+G_M48555_IG06: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + cmp edx, dword ptr [esi+0x04] + jae G_M48555_IG19 + lea ecx, bword ptr [esi+8*edx+0x08]
; byrRegs +[ecx] mov eax, dword ptr [ecx]
- mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x24], eax
mov ecx, dword ptr [ecx+0x04] ; byrRegs -[ecx]
- mov dword ptr [ebp-0x1C], ecx
+ mov dword ptr [ebp-0x28], ecx
lea ecx, [edx+0x04]
- cmp ecx, dword ptr [esi+0x04] - jae G_M48555_IG17 - lea ecx, bword ptr [esi+8*ecx+0x08]
+ mov eax, dword ptr [edi+0x04] + cmp ecx, eax + jae G_M48555_IG19 + lea ecx, bword ptr [edi+8*edx+0x28]
; byrRegs +[ecx]
- mov eax, dword ptr [ecx] - xor eax, dword ptr [ebp-0x18] - mov dword ptr [ebp-0x18], eax - mov eax, dword ptr [ebp-0x1C] - xor eax, dword ptr [ecx+0x04] - or eax, dword ptr [ebp-0x18]
+ mov bword ptr [ebp-0x18], ecx + ; GC ptr vars +{V61} + mov ecx, dword ptr [ecx] + ; byrRegs -[ecx] + xor ecx, dword ptr [ebp-0x24] + mov dword ptr [ebp-0x24], ecx + mov ecx, dword ptr [ebp-0x28] + mov ebx, bword ptr [ebp-0x18] + ; byrRegs +[ebx] + xor ecx, dword ptr [ebx+0x04] + or ecx, dword ptr [ebp-0x24]
jne SHORT G_M48555_IG08 inc edx cmp edx, 4
+ mov dword ptr [ebp-0x10], eax
jl SHORT G_M48555_IG06
- ;; size=65 bbWeight=0.04 PerfScore 1.20
+ ;; size=76 bbWeight=0.04 PerfScore 1.29
G_M48555_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx] - jmp G_M48555_IG09
+ ; byrRegs -[ebx] + ; GC ptr vars -{V61} + jmp G_M48555_IG10
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M48555_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M48555_IG08: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + mov dword ptr [ebp-0x10], eax + ;; size=3 bbWeight=0.02 PerfScore 0.02 +G_M48555_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
push 0xD1FFAB1E ; gcr arg push 0 mov edx, gword ptr [ebp+0x08] @@ -188,11 +200,12 @@ G_M48555_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 push 2 push ecx ; byr arg push 1
- mov ecx, esi
+ mov gword ptr [ebp+0x0C], edi + mov ecx, edi
; gcrRegs +[ecx] ; byrRegs -[ecx] call [<unknown method>]
- ; gcrRegs -[ecx] +[eax]
+ ; gcrRegs -[ecx edi] +[eax]
; gcr arg pop 1 mov edx, eax ...

+48 (+8.42%) : 352568.dasm - JIT.HardwareIntrinsics.General.Vector5121.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (Tier0-FullOpts)

@@ -8,13 +8,13 @@ ; 0 inlinees with PGO data; 34 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T10] ( 4, 3 ) ref -> [ebp-0x10] this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64> -; V01 arg1 [V01,T09] ( 13, 14.08) ref -> [ebp-0x14] class-hnd single-def <ulong[]> -; V02 arg2 [V02,T08] ( 10, 17 ) ref -> esi class-hnd single-def <ulong[]> -; V03 arg3 [V03,T16] ( 2, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.String> -;* V04 loc0 [V04,T11] ( 0, 0 ) ubyte -> zero-ref -; V05 loc1 [V05,T06] ( 12, 21.04) int -> edx -; V06 loc2 [V06,T07] ( 12, 21.04) int -> edx
+; V00 this [V00,T09] ( 4, 3 ) ref -> [ebp-0x14] this class-hnd single-def <JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64> +; V01 arg1 [V01,T06] ( 13, 14.08) ref -> esi class-hnd single-def <ulong[]> +; V02 arg2 [V02,T07] ( 8, 13 ) ref -> [ebp+0x0C] class-hnd single-def <ulong[]> +; V03 arg3 [V03,T15] ( 2, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.String> +;* V04 loc0 [V04,T10] ( 0, 0 ) ubyte -> zero-ref +; V05 loc1 [V05,T00] ( 14, 25.04) int -> edx +; V06 loc2 [V06,T01] ( 14, 25.04) int -> edx
;* V07 tmp0 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> @@ -41,44 +41,43 @@ ;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP ;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V32 tmp25 [V32 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP
-; V33 tmp26 [V33,T17] ( 2, 1 ) byref -> ecx single-def "field V10._reference (fldOffset=0x0)" P-INDEP -;* V34 tmp27 [V34,T21] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP
+; V33 tmp26 [V33,T16] ( 2, 1 ) byref -> ecx single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V34 tmp27 [V34,T20] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP
;* V35 tmp28 [V35 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP ;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x4)" P-INDEP ;* V37 tmp30 [V37 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V38 tmp31 [V38 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
-; V39 tmp32 [V39,T18] ( 2, 1 ) byref -> ecx single-def "field V15._reference (fldOffset=0x0)" P-INDEP -;* V40 tmp33 [V40,T22] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x4)" P-INDEP
+; V39 tmp32 [V39,T17] ( 2, 1 ) byref -> ecx single-def "field V15._reference (fldOffset=0x0)" P-INDEP +;* V40 tmp33 [V40,T21] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x4)" P-INDEP
;* V41 tmp34 [V41 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp35 [V42 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP ;* V43 tmp36 [V43 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP
-; V45 tmp38 [V45,T19] ( 2, 1 ) byref -> ecx single-def "field V21._reference (fldOffset=0x0)" P-INDEP -;* V46 tmp39 [V46,T23] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x4)" P-INDEP
+; V45 tmp38 [V45,T18] ( 2, 1 ) byref -> ecx single-def "field V21._reference (fldOffset=0x0)" P-INDEP +;* V46 tmp39 [V46,T22] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x4)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x4)" P-INDEP
-; V51 tmp44 [V51,T20] ( 2, 1 ) byref -> ecx single-def "field V26._reference (fldOffset=0x0)" P-INDEP -;* V52 tmp45 [V52,T24] ( 0, 0 ) int -> zero-ref single-def "field V26._length (fldOffset=0x4)" P-INDEP -; V53 tmp46 [V53,T00] ( 6, 24 ) int -> registers "index expr"
+; V51 tmp44 [V51,T19] ( 2, 1 ) byref -> ecx single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V52 tmp45 [V52,T23] ( 0, 0 ) int -> zero-ref single-def "field V26._length (fldOffset=0x4)" P-INDEP +; V53 tmp46 [V53,T11] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V54 tmp47 [V54,T12] ( 2, 2 ) ref -> edx single-def "argument with side effect" ; V55 tmp48 [V55,T13] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V56 tmp49 [V56,T01] ( 6, 24 ) int -> registers "index expr" -; V57 tmp50 [V57,T14] ( 2, 2 ) ref -> edx single-def "argument with side effect" -; V58 tmp51 [V58,T15] ( 2, 2 ) ref -> edx single-def "argument with side effect" -; V59 rat0 [V59,T02] ( 3, 23.76) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V60 rat1 [V60,T03] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable" -; V61 rat2 [V61,T25] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V62 rat3 [V62,T26] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V63 rat4 [V63,T04] ( 3, 23.76) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V64 rat5 [V64,T05] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable" -; V65 rat6 [V65,T27] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; V66 rat7 [V66,T28] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" -; TEMP_02 int -> [ebp-0x18] -; TEMP_01 int -> [ebp-0x1C]
+; V56 tmp49 [V56,T14] ( 2, 2 ) ref -> edx single-def "argument with side effect" +; V57 cse0 [V57,T08] ( 6, 12 ) int -> [ebp-0x10] multi-def "CSE - aggressive" +; V58 rat0 [V58,T02] ( 3, 23.76) byref -> ecx "ReplaceWithLclVar is creating a new local variable" +; V59 rat1 [V59,T03] ( 3, 23.76) byref -> ebx "ReplaceWithLclVar is creating a new local variable" +; V60 rat2 [V60,T24] ( 3, 0.24) byref -> ecx "ReplaceWithLclVar is creating a new local variable" +; V61 rat3 [V61,T25] ( 3, 0.24) byref -> [ebp-0x18] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V62 rat4 [V62,T04] ( 3, 23.76) byref -> ecx "ReplaceWithLclVar is creating a new local variable" +; V63 rat5 [V63,T05] ( 3, 23.76) byref -> edi "ReplaceWithLclVar is creating a new local variable" +; V64 rat6 [V64,T26] ( 3, 0.24) byref -> [ebp-0x1C] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; V65 rat7 [V65,T27] ( 3, 0.24) byref -> [ebp-0x20] spill-single-def "ReplaceWithLclVar is creating a new local variable" +; TEMP_02 int -> [ebp-0x24] +; TEMP_01 int -> [ebp-0x28]
;
-; Lcl frame size = 16
+; Lcl frame size = 28
G_M990_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -86,90 +85,103 @@ G_M990_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 16 - mov gword ptr [ebp-0x10], ecx
+ sub esp, 28 + mov gword ptr [ebp-0x14], ecx
; GC ptr vars +{V00}
- mov edi, edx - ; gcrRegs +[edi] - mov esi, gword ptr [ebp+0x0C]
+ mov esi, edx
; gcrRegs +[esi]
+ mov edi, gword ptr [ebp+0x0C] + ; gcrRegs +[edi]
;; size=17 bbWeight=1 PerfScore 6.75
-G_M990_IG02: ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M990_IG02: ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
xor edx, edx
- test edi, edi
+ test esi, esi
je SHORT G_M990_IG06
- cmp dword ptr [edi+0x04], 4
+ cmp dword ptr [esi+0x04], 4
jl SHORT G_M990_IG06 ;; size=12 bbWeight=1 PerfScore 5.50 G_M990_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov gword ptr [ebp-0x14], edi - ; GC ptr vars +{V01} - lea ecx, bword ptr [edi+8*edx+0x08]
+ lea ecx, bword ptr [esi+8*edx+0x08]
; byrRegs +[ecx] mov eax, dword ptr [ecx] mov ecx, dword ptr [ecx+0x04] ; byrRegs -[ecx] lea ebx, [edx+0x04]
- cmp ebx, dword ptr [esi+0x04] - jae G_M990_IG17 - lea ebx, bword ptr [esi+8*ebx+0x08]
+ mov gword ptr [ebp+0x0C], edi + mov edi, dword ptr [edi+0x04] + ; gcrRegs -[edi] + mov dword ptr [ebp-0x10], edi + cmp ebx, edi + jae G_M990_IG19 + mov ebx, gword ptr [ebp+0x0C] + ; gcrRegs +[ebx] + lea ebx, bword ptr [ebx+8*edx+0x28] + ; gcrRegs -[ebx]
; byrRegs +[ebx] mov edi, dword ptr [ebx]
- ; gcrRegs -[edi]
xor eax, edi xor ecx, dword ptr [ebx+0x04] or ecx, eax jne SHORT G_M990_IG05 inc edx cmp edx, 4
- mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi] jl SHORT G_M990_IG03
- ;; size=48 bbWeight=3.96 PerfScore 81.18
+ ;; size=56 bbWeight=3.96 PerfScore 86.13
G_M990_IG04: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref ; byrRegs -[ebx]
- ; GC ptr vars -{V01} - jmp G_M990_IG09 - ;; size=5 bbWeight=0.50 PerfScore 1.00 -G_M990_IG05: ; bbWeight=1.98, gcVars=00000600 {V00 V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ mov edx, dword ptr [ebp-0x10] + jmp G_M990_IG10 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M990_IG05: ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
- ; GC ptr vars +{V01} - mov edi, gword ptr [ebp-0x14]
+ mov edi, gword ptr [ebp+0x0C]
; gcrRegs +[edi]
- jmp SHORT G_M990_IG08
+ jmp SHORT G_M990_IG09
;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M990_IG06: ; bbWeight=0.04, gcVars=00000400 {V00}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V01} - cmp edx, dword ptr [edi+0x04] - jae G_M990_IG17 - lea ecx, bword ptr [edi+8*edx+0x08]
+G_M990_IG06: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + cmp edx, dword ptr [esi+0x04] + jae G_M990_IG19 + lea ecx, bword ptr [esi+8*edx+0x08]
; byrRegs +[ecx] mov eax, dword ptr [ecx]
- mov dword ptr [ebp-0x18], eax
+ mov dword ptr [ebp-0x24], eax
mov ecx, dword ptr [ecx+0x04] ; byrRegs -[ecx]
- mov dword ptr [ebp-0x1C], ecx
+ mov dword ptr [ebp-0x28], ecx
lea ecx, [edx+0x04]
- cmp ecx, dword ptr [esi+0x04] - jae G_M990_IG17 - lea ecx, bword ptr [esi+8*ecx+0x08]
+ mov eax, dword ptr [edi+0x04] + cmp ecx, eax + jae G_M990_IG19 + lea ecx, bword ptr [edi+8*edx+0x28]
; byrRegs +[ecx]
- mov eax, dword ptr [ecx] - xor eax, dword ptr [ebp-0x18] - mov dword ptr [ebp-0x18], eax - mov eax, dword ptr [ebp-0x1C] - xor eax, dword ptr [ecx+0x04] - or eax, dword ptr [ebp-0x18]
+ mov bword ptr [ebp-0x18], ecx + ; GC ptr vars +{V61} + mov ecx, dword ptr [ecx] + ; byrRegs -[ecx] + xor ecx, dword ptr [ebp-0x24] + mov dword ptr [ebp-0x24], ecx + mov ecx, dword ptr [ebp-0x28] + mov ebx, bword ptr [ebp-0x18] + ; byrRegs +[ebx] + xor ecx, dword ptr [ebx+0x04] + or ecx, dword ptr [ebp-0x24]
jne SHORT G_M990_IG08 inc edx cmp edx, 4
+ mov dword ptr [ebp-0x10], eax
jl SHORT G_M990_IG06
- ;; size=65 bbWeight=0.04 PerfScore 1.20
+ ;; size=76 bbWeight=0.04 PerfScore 1.29
G_M990_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- ; byrRegs -[ecx] - jmp G_M990_IG09
+ ; byrRegs -[ebx] + ; GC ptr vars -{V61} + jmp G_M990_IG10
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M990_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M990_IG08: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + mov dword ptr [ebp-0x10], eax + ;; size=3 bbWeight=0.02 PerfScore 0.02 +G_M990_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
push 0xD1FFAB1E ; gcr arg push 0 mov edx, gword ptr [ebp+0x08] @@ -188,11 +200,12 @@ G_M990_IG08: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=000 push 2 push ecx ; byr arg push 1
- mov ecx, esi
+ mov gword ptr [ebp+0x0C], edi + mov ecx, edi
; gcrRegs +[ecx] ; byrRegs -[ecx] call [<unknown method>]
- ; gcrRegs -[ecx] +[eax]
+ ; gcrRegs -[ecx edi] +[eax]
; gcr arg pop 1 mov edx, eax ...

+3 (+17.65%) : 485071.dasm - ILGEN_622380794:main():int (Tier0)

@@ -13,14 +13,15 @@ G_M30338_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M30338_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- shl dword ptr [D1FFAB1EH], 0
+ mov eax, dword ptr [D1FFAB1EH] ; static handle + mov dword ptr [D1FFAB1EH], eax
mov eax, 100
- ;; size=12 bbWeight=1 PerfScore 4.25
+ ;; size=15 bbWeight=1 PerfScore 3.25
G_M30338_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 17, prolog size 3, PerfScore 7.00, instruction count 6, allocated bytes for code 17 (MethodHash=35ba897d) for method ILGEN_622380794:main():int (Tier0)
+; Total bytes of code 20, prolog size 3, PerfScore 6.00, instruction count 7, allocated bytes for code 20 (MethodHash=35ba897d) for method ILGEN_622380794:main():int (Tier0)
; ============================================================

libraries.crossgen2.windows.x86.checked.mch

-4 (-40.00%) : 7212.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)

@@ -3,7 +3,7 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data @@ -12,23 +12,18 @@ ;* V00 tmp0 [V00 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Rune> ;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ;* V02 tmp2 [V02 ] ( 0, 0 ) int -> zero-ref "field V00._value (fldOffset=0x0)" P-INDEP
-;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; ; Lcl frame size = 0 G_M7284_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M7284_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, 0xFFFD ;; size=5 bbWeight=1 PerfScore 0.25 G_M7284_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ebp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 10, prolog size 3, PerfScore 3.00, instruction count 5, allocated bytes for code 10 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)
+; Total bytes of code 6, prolog size 0, PerfScore 1.25, instruction count 2, allocated bytes for code 6 (MethodHash=a530e38b) for method System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)
; ============================================================

-2 (-3.03%) : 114529.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)

@@ -8,46 +8,44 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 3 ) ushort -> esi single-def -; V01 loc0 [V01,T07] ( 2, 2 ) ubyte -> edx single-def -; V02 tmp0 [V02,T00] ( 3, 6 ) ref -> edx single-def "arr expr" -; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> eax single-def "arr expr" -; V04 tmp2 [V04,T02] ( 3, 6 ) int -> edx "index expr"
+; V00 arg0 [V00,T00] ( 4, 4 ) ushort -> ebx single-def +; V01 loc0 [V01,T06] ( 2, 2 ) ubyte -> edx single-def +; V02 tmp0 [V02,T01] ( 3, 6 ) ref -> edx single-def "arr expr" +; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> eax single-def "arr expr" +; V04 tmp2 [V04,T03] ( 3, 6 ) int -> edx "index expr"
; V05 cse0 [V05,T04] ( 3, 3 ) byref -> eax "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 3, 3 ) int -> esi "CSE - aggressive" -; V07 cse2 [V07,T06] ( 3, 3 ) int -> ecx "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 3, 3 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 G_M53790_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push esi - mov esi, ecx
+ push ebx + mov ebx, ecx
;; size=3 bbWeight=1 PerfScore 1.25 G_M53790_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[eax] mov edx, gword ptr [eax+0x0784] ; gcrRegs +[edx]
- movzx ecx, si - mov esi, ecx - sar esi, 8 - cmp esi, dword ptr [edx+0x04]
+ movzx ecx, bx + sar ecx, 8 + cmp ecx, dword ptr [edx+0x04]
jae SHORT G_M53790_IG04
- movzx edx, byte ptr [edx+esi+0x08]
+ movzx edx, byte ptr [edx+ecx+0x08]
; gcrRegs -[edx] mov eax, gword ptr [eax+0x0788] ; gcrRegs +[eax] ; byrRegs -[eax] shl edx, 8
- movzx ecx, cl
+ movzx ecx, bl
add edx, ecx cmp edx, dword ptr [eax+0x04] jae SHORT G_M53790_IG04 movzx eax, byte ptr [eax+edx+0x08] ; gcrRegs -[eax]
- ;; size=54 bbWeight=1 PerfScore 21.00
+ ;; size=52 bbWeight=1 PerfScore 20.75
G_M53790_IG03: ; bbWeight=1, epilog, nogc, extend
- pop esi
+ pop ebx
ret ;; size=2 bbWeight=1 PerfScore 1.50 G_M53790_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref @@ -55,6 +53,6 @@ G_M53790_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 66, prolog size 1, PerfScore 23.75, instruction count 21, allocated bytes for code 66 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
+; Total bytes of code 64, prolog size 1, PerfScore 23.50, instruction count 20, allocated bytes for code 64 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
; ============================================================

-2 (-3.03%) : 128215.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)

@@ -8,46 +8,44 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 3 ) ushort -> esi single-def -; V01 loc0 [V01,T07] ( 2, 2 ) ubyte -> edx single-def -; V02 tmp0 [V02,T00] ( 3, 6 ) ref -> edx single-def "arr expr" -; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> eax single-def "arr expr" -; V04 tmp2 [V04,T02] ( 3, 6 ) int -> edx "index expr"
+; V00 arg0 [V00,T00] ( 4, 4 ) ushort -> ebx single-def +; V01 loc0 [V01,T06] ( 2, 2 ) ubyte -> edx single-def +; V02 tmp0 [V02,T01] ( 3, 6 ) ref -> edx single-def "arr expr" +; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> eax single-def "arr expr" +; V04 tmp2 [V04,T03] ( 3, 6 ) int -> edx "index expr"
; V05 cse0 [V05,T04] ( 3, 3 ) byref -> eax "CSE - aggressive"
-; V06 cse1 [V06,T05] ( 3, 3 ) int -> esi "CSE - aggressive" -; V07 cse2 [V07,T06] ( 3, 3 ) int -> ecx "CSE - aggressive"
+; V06 cse1 [V06,T05] ( 3, 3 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 G_M53790_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push esi - mov esi, ecx
+ push ebx + mov ebx, ecx
;; size=3 bbWeight=1 PerfScore 1.25 G_M53790_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[eax] mov edx, gword ptr [eax+0x0778] ; gcrRegs +[edx]
- movzx ecx, si - mov esi, ecx - sar esi, 8 - cmp esi, dword ptr [edx+0x04]
+ movzx ecx, bx + sar ecx, 8 + cmp ecx, dword ptr [edx+0x04]
jae SHORT G_M53790_IG04
- movzx edx, byte ptr [edx+esi+0x08]
+ movzx edx, byte ptr [edx+ecx+0x08]
; gcrRegs -[edx] mov eax, gword ptr [eax+0x077C] ; gcrRegs +[eax] ; byrRegs -[eax] shl edx, 8
- movzx ecx, cl
+ movzx ecx, bl
add edx, ecx cmp edx, dword ptr [eax+0x04] jae SHORT G_M53790_IG04 movzx eax, byte ptr [eax+edx+0x08] ; gcrRegs -[eax]
- ;; size=54 bbWeight=1 PerfScore 21.00
+ ;; size=52 bbWeight=1 PerfScore 20.75
G_M53790_IG03: ; bbWeight=1, epilog, nogc, extend
- pop esi
+ pop ebx
ret ;; size=2 bbWeight=1 PerfScore 1.50 G_M53790_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref @@ -55,6 +53,6 @@ G_M53790_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 66, prolog size 1, PerfScore 23.75, instruction count 21, allocated bytes for code 66 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
+; Total bytes of code 64, prolog size 1, PerfScore 23.50, instruction count 20, allocated bytes for code 64 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
; ============================================================

+0 (0.00%) : 21960.dasm - System.SpanHelpers:Fillulong (FullOpts)

@@ -14,7 +14,7 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) long -> zero-ref single-def ; V03 loc0 [V03,T00] ( 23, 50 ) int -> eax ;* V04 loc1 [V04 ] ( 0, 0 ) long -> zero-ref ld-addr-op
-; V05 loc2 [V05,T31] ( 5, 9.50) simd16 -> mm0 ld-addr-op <System.Numerics.Vector`1[ubyte]>
+; V05 loc2 [V05,T30] ( 5, 9.50) simd16 -> mm0 ld-addr-op <System.Numerics.Vector`1[ubyte]>
; V06 loc3 [V06,T14] ( 5, 9.50) byref -> ecx single-def ; V07 loc4 [V07,T25] ( 4, 2 ) int -> eax ; V08 loc5 [V08,T16] ( 2, 4.50) int -> esi @@ -24,8 +24,8 @@ ; V12 tmp0 [V12,T13] ( 2, 16 ) int -> eax "dup spill" ; V13 tmp1 [V13 ] ( 6, 6 ) simd16 -> [ebp-0x1C] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[ulong]> ;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref
-;* V15 tmp3 [V15,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V16 tmp4 [V16,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V15 tmp3 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V16 tmp4 [V16,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V18 tmp6 [V18,T28] ( 0, 0 ) int -> zero-ref ;* V19 tmp7 [V19 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"

+0 (0.00%) : 214420.dasm - System.Net.HttpValidationHelpers:CheckBadHeaderValueChars(System.String):System.String (FullOpts)

@@ -8,10 +8,10 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 8, 9 ) ref -> ebx class-hnd <System.String>
+; V00 arg0 [V00,T03] ( 8, 9 ) ref -> esi class-hnd <System.String>
; V01 loc0 [V01,T01] ( 7, 21 ) int -> edx ; V02 loc1 [V02,T02] ( 5, 16.50) int -> [ebp-0x10]
-; V03 loc2 [V03,T00] ( 9, 52 ) ushort -> eax
+; V03 loc2 [V03,T00] ( 9, 52 ) ushort -> ebx
; V04 tmp0 [V04,T06] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>> ; V05 tmp1 [V05,T10] ( 2, 0 ) ref -> esi class-hnd "finalizable newobj spill" <System.String> ; V06 tmp2 [V06,T07] ( 3, 0 ) ref -> edi class-hnd exact "NewObj constructor temp" <<unknown class>> @@ -21,7 +21,7 @@ ; V10 tmp6 [V10,T09] ( 3, 0 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V11 tmp7 [V11,T13] ( 2, 0 ) ref -> esi class-hnd single-def "finalizable newobj spill" <System.String> ; V12 tmp8 [V12,T05] ( 2, 2 ) ref -> edx single-def "argument with side effect"
-; V13 cse0 [V13,T04] ( 3, 5 ) int -> esi "CSE - aggressive"
+; V13 cse0 [V13,T04] ( 3, 5 ) int -> edi "CSE - aggressive"
; ; Lcl frame size = 4 @@ -32,11 +32,11 @@ G_M46265_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push esi push ebx push eax
- mov ebx, ecx - ; gcrRegs +[ebx]
+ mov esi, ecx + ; gcrRegs +[esi]
;; size=9 bbWeight=1 PerfScore 5.50
-G_M46265_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - mov ecx, ebx
+G_M46265_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, esi
; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] @@ -44,7 +44,7 @@ G_M46265_IG02: ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 je SHORT G_M46265_IG05 ;; size=12 bbWeight=1 PerfScore 4.50 G_M46265_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
+ ; gcrRegs -[esi]
mov eax, dword ptr [(reloc)] ; const ptr mov eax, gword ptr [eax] ; gcrRegs +[eax] @@ -57,74 +57,74 @@ G_M46265_IG04: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M46265_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] +[ebx]
+G_M46265_IG05: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax] +[esi]
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[eax] mov edx, gword ptr [eax+0xC4] ; gcrRegs +[edx]
- mov ecx, ebx
+ mov ecx, esi
; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>]
- ; gcrRegs -[ecx edx ebx] +[eax]
+ ; gcrRegs -[ecx edx esi] +[eax]
; byrRegs -[eax]
- mov ebx, eax - ; gcrRegs +[ebx]
+ mov esi, eax + ; gcrRegs +[esi]
xor edx, edx xor ecx, ecx
- mov esi, dword ptr [ebx+0x04] - test esi, esi
+ mov edi, dword ptr [esi+0x04] + test edi, edi
jle SHORT G_M46265_IG13 ;; size=35 bbWeight=0.50 PerfScore 7.62
-G_M46265_IG06: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M46265_IG06: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- movzx eax, byte ptr [ebx+2*ecx+0x08]
+ movzx ebx, byte ptr [esi+2*ecx+0x08]
cmp edx, 2 ja SHORT G_M46265_IG11 mov dword ptr [ebp-0x10], ecx
- lea edi, [reloc @RWD00] - mov edi, dword ptr [edi+4*edx]
+ lea eax, [reloc @RWD00] + mov eax, dword ptr [eax+4*edx]
lea ecx, G_M46265_IG02
- add edi, ecx - jmp edi
+ add eax, ecx + jmp eax
;; size=32 bbWeight=4 PerfScore 40.00
-G_M46265_IG07: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - cmp eax, 13
+G_M46265_IG07: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp ebx, 13
jne SHORT G_M46265_IG08 mov edx, 1 mov ecx, dword ptr [ebp-0x10] jmp SHORT G_M46265_IG11 ;; size=15 bbWeight=2 PerfScore 9.00
-G_M46265_IG08: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - cmp eax, 10
+G_M46265_IG08: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp ebx, 10
jne SHORT G_M46265_IG10 ;; size=5 bbWeight=2 PerfScore 2.50
-G_M46265_IG09: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M46265_IG09: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, 2 mov ecx, dword ptr [ebp-0x10] jmp SHORT G_M46265_IG11 ;; size=10 bbWeight=8 PerfScore 26.00
-G_M46265_IG10: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - cmp eax, 127
+G_M46265_IG10: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp ebx, 127
je SHORT G_M46265_IG20
- cmp eax, 32
+ cmp ebx, 32
mov ecx, dword ptr [ebp-0x10] jge SHORT G_M46265_IG11
- cmp eax, 9
+ cmp ebx, 9
jne SHORT G_M46265_IG20 ;; size=18 bbWeight=8 PerfScore 38.00
-G_M46265_IG11: ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M46265_IG11: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
- cmp esi, ecx
+ cmp edi, ecx
jg SHORT G_M46265_IG06 ;; size=5 bbWeight=4 PerfScore 6.00
-G_M46265_IG12: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M46265_IG12: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
test edx, edx jne SHORT G_M46265_IG19 ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M46265_IG13: ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref - mov eax, ebx
+G_M46265_IG13: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov eax, esi
; gcrRegs +[eax] ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M46265_IG14: ; bbWeight=0.50, epilog, nogc, extend @@ -135,27 +135,27 @@ G_M46265_IG14: ; bbWeight=0.50, epilog, nogc, extend pop ebp ret ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M46265_IG15: ; bbWeight=16, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M46265_IG15: ; bbWeight=16, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs -[eax]
- cmp eax, 10
+ cmp ebx, 10
jne SHORT G_M46265_IG21 ;; size=5 bbWeight=16 PerfScore 20.00
-G_M46265_IG16: ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M46265_IG16: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M46265_IG09 ;; size=2 bbWeight=8 PerfScore 16.00
-G_M46265_IG17: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz - cmp eax, 32
+G_M46265_IG17: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + cmp ebx, 32
je SHORT G_M46265_IG18
- cmp eax, 9
+ cmp ebx, 9
jne G_M46265_IG22 ;; size=14 bbWeight=2 PerfScore 5.00
-G_M46265_IG18: ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M46265_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
xor edx, edx mov ecx, dword ptr [ebp-0x10] jmp SHORT G_M46265_IG11 ;; size=7 bbWeight=2 PerfScore 6.50 G_M46265_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- ; gcrRegs -[ebx]
+ ; gcrRegs -[esi]
call [<unknown method>] ; gcrRegs +[eax] mov esi, eax

+5 (+2.59%) : 223642.dasm - System.Management.PropertyDataCollection+PropertyDataEnumerator:.ctor(System.Management.ManagementBaseObject,ubyte):this (FullOpts)

@@ -11,16 +11,17 @@ ; ; V00 this [V00,T00] ( 6, 6 ) ref -> esi this class-hnd single-def <System.Management.PropertyDataCollection+PropertyDataEnumerator> ; V01 arg1 [V01,T01] ( 6, 5.50) ref -> edi class-hnd single-def <System.Management.ManagementBaseObject>
-; V02 arg2 [V02,T08] ( 1, 1 ) ubyte -> [ebp+0x08] single-def -; V03 loc0 [V03,T06] ( 2, 2 ) int -> ebx
+; V02 arg2 [V02,T09] ( 1, 1 ) ubyte -> [ebp+0x08] single-def +; V03 loc0 [V03,T07] ( 2, 2 ) int -> ebx
; V04 loc1 [V04 ] ( 1, 1 ) ref -> [ebp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object> ; V05 loc2 [V05,T03] ( 5, 3.50) int -> esi single-def ; V06 tmp0 [V06,T02] ( 2, 4 ) ref -> ecx single-def "argument with side effect"
-; V07 tmp1 [V07,T07] ( 2, 2 ) int -> edx "argument with side effect" -; V08 rat0 [V08,T05] ( 3, 3 ) int -> ecx "ReplaceWithLclVar is creating a new local variable" -; V09 rat1 [V09,T04] ( 3, 3 ) ref -> eax "delegate invoke call"
+; V07 tmp1 [V07,T08] ( 2, 2 ) int -> edx "argument with side effect" +; V08 cse0 [V08,T05] ( 3, 3 ) int -> [ebp-0x14] spill-single-def "CSE - aggressive" +; V09 rat0 [V09,T06] ( 3, 3 ) int -> ecx "ReplaceWithLclVar is creating a new local variable" +; V10 rat1 [V10,T04] ( 3, 3 ) ref -> eax "delegate invoke call"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M5000_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -28,14 +29,14 @@ G_M5000_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- push eax
+ sub esp, 8
xor eax, eax mov dword ptr [ebp-0x10], eax mov esi, ecx ; gcrRegs +[esi] mov edi, edx ; gcrRegs +[edi]
- ;; size=16 bbWeight=1 PerfScore 7.00
+ ;; size=18 bbWeight=1 PerfScore 6.25
G_M5000_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz lea edx, bword ptr [esi+0x04] ; byrRegs +[edx] @@ -50,10 +51,11 @@ G_M5000_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 ; gcrRegs -[ecx] cmp byte ptr [ebp+0x08], 0 cmovne ebx, ecx
- mov ecx, dword ptr [(reloc)] ; const ptr - cmp gword ptr [edi+ecx], 0
+ mov eax, dword ptr [(reloc)] ; const ptr + mov dword ptr [ebp-0x14], eax + cmp gword ptr [edi+eax], 0
jne SHORT G_M5000_IG04
- ;; size=50 bbWeight=1 PerfScore 14.50
+ ;; size=52 bbWeight=1 PerfScore 15.50
G_M5000_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov ecx, edi ; gcrRegs +[ecx] @@ -63,8 +65,8 @@ G_M5000_IG03: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00 ; gcrRegs -[ecx] ;; size=15 bbWeight=0.50 PerfScore 3.25 G_M5000_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov ecx, dword ptr [(reloc)] ; const ptr - mov ecx, gword ptr [edi+ecx]
+ mov eax, dword ptr [ebp-0x14] + mov ecx, gword ptr [edi+eax]
; gcrRegs +[ecx] push ebx lea edx, [ebp-0x10] @@ -82,7 +84,7 @@ G_M5000_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov esi, eax test esi, esi jge SHORT G_M5000_IG08
- ;; size=34 bbWeight=1 PerfScore 15.50
+ ;; size=31 bbWeight=1 PerfScore 14.50
G_M5000_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, esi mov eax, ecx @@ -96,13 +98,13 @@ G_M5000_IG05: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 call [<unknown method>] ;; size=34 bbWeight=0.50 PerfScore 3.12 G_M5000_IG06: ; bbWeight=0.50, epilog, nogc, extend
- pop ecx
+ lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 4
- ;; size=8 bbWeight=0.50 PerfScore 2.25
+ ;; size=10 bbWeight=0.50 PerfScore 2.25
G_M5000_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[eax] @@ -118,14 +120,14 @@ G_M5000_IG07: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, call [<unknown method>] ;; size=28 bbWeight=0.50 PerfScore 6.75 G_M5000_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
- pop ecx
+ lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 4
- ;; size=8 bbWeight=0.50 PerfScore 2.25
+ ;; size=10 bbWeight=0.50 PerfScore 2.25
-; Total bytes of code 193, prolog size 12, PerfScore 54.62, instruction count 68, allocated bytes for code 193 (MethodHash=cab8ec77) for method System.Management.PropertyDataCollection+PropertyDataEnumerator:.ctor(System.Management.ManagementBaseObject,ubyte):this (FullOpts)
+; Total bytes of code 198, prolog size 14, PerfScore 53.88, instruction count 69, allocated bytes for code 198 (MethodHash=cab8ec77) for method System.Management.PropertyDataCollection+PropertyDataEnumerator:.ctor(System.Management.ManagementBaseObject,ubyte):this (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-1 (-7.14%) : 5279.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:ResetHighWatermark():this (FullOpts)

@@ -8,8 +8,9 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 5 ) byref -> ecx this single-def
+; V00 this [V00,T00] ( 4, 4 ) byref -> ecx this single-def
;* V01 tmp0 [V01 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
+; V02 cse0 [V02,T01] ( 3, 3 ) int -> eax "CSE - aggressive"
; ; Lcl frame size = 0 @@ -18,15 +19,15 @@ G_M10371_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M10371_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000002 {ecx}, byref ; byrRegs +[ecx] movzx eax, word ptr [ecx]
- movzx edx, word ptr [ecx]
+ mov edx, eax
shl edx, 16
- or eax, edx - mov dword ptr [ecx], eax - ;; size=13 bbWeight=1 PerfScore 5.75
+ or edx, eax + mov dword ptr [ecx], edx + ;; size=12 bbWeight=1 PerfScore 4.00
G_M10371_IG03: ; bbWeight=1, epilog, nogc, extend ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 14, prolog size 0, PerfScore 6.75, instruction count 6, allocated bytes for code 14 (MethodHash=1becd77c) for method System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:ResetHighWatermark():this (FullOpts)
+; Total bytes of code 13, prolog size 0, PerfScore 5.00, instruction count 6, allocated bytes for code 13 (MethodHash=1becd77c) for method System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:ResetHighWatermark():this (FullOpts)
; ============================================================

-4 (-5.33%) : 296453.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.WildcardPathSegment:.cctor() (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data @@ -10,19 +10,13 @@ ; ; V00 tmp0 [V00,T01] ( 3, 6 ) ref -> esi class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.String]> ; V01 tmp1 [V01,T00] ( 6, 12 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.WildcardPathSegment>
-;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Single-def Box Helper" <<unknown class>> -;* V03 tmp3 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impImportAndPushBox" <System.String> -;* V04 tmp4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> -;* V05 tmp5 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V06 tmp6 [V06 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
+;* V02 tmp2 [V02 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; ; Lcl frame size = 0 G_M11047_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp
push esi
- ;; size=4 bbWeight=1 PerfScore 2.25
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M11047_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.String] call CORINFO_HELP_NEWSFAST @@ -32,6 +26,7 @@ G_M11047_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov gword ptr [esi+0x04], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.WildcardPathSegment call CORINFO_HELP_NEWSFAST
+ ; gcr arg pop 0
mov dword ptr [eax+0x10], 5 mov gword ptr [eax+0x04], 0xD1FFAB1E lea edx, bword ptr [eax+0x08] @@ -46,10 +41,9 @@ G_M11047_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=68 bbWeight=1 PerfScore 9.50 G_M11047_IG03: ; bbWeight=1, epilog, nogc, extend pop esi
- pop ebp
ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 75, prolog size 4, PerfScore 13.75, instruction count 19, allocated bytes for code 75 (MethodHash=60b0d4d8) for method Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.WildcardPathSegment:.cctor() (FullOpts)
+; Total bytes of code 71, prolog size 1, PerfScore 12.00, instruction count 16, allocated bytes for code 71 (MethodHash=60b0d4d8) for method Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.WildcardPathSegment:.cctor() (FullOpts)
; ============================================================

-12 (-3.26%) : 286953.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ubyte]:get_EndAnchorZReverse():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ubyte]:this (FullOpts)

@@ -14,32 +14,32 @@ ; V03 tmp1 [V03,T05] ( 4, 3.50) ref -> eax ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]>
-;* V06 tmp4 [V06,T16] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]> -;* V07 tmp5 [V07,T17] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V08 tmp6 [V08,T18] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" -;* V09 tmp7 [V09,T19] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V10 tmp8 [V10,T15] ( 0, 0 ) int -> zero-ref "impAppendStmt"
+; V06 tmp4 [V06,T13] ( 2, 1 ) ref -> edi class-hnd exact single-def "Inline stloc first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]> +;* V07 tmp5 [V07,T16] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V09 tmp7 [V09,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V11 tmp9 [V11 ] ( 0, 0 ) struct ( 4) zero-ref "spilled call-like call argument" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]> ;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp12 [V14,T13] ( 2, 1 ) int -> ebx -; V15 tmp13 [V15,T10] ( 4, 2 ) ubyte -> ebx "Inline stloc first use temp"
+; V14 tmp12 [V14,T14] ( 2, 1 ) int -> eax +; V15 tmp13 [V15,T10] ( 4, 2 ) ubyte -> [ebp-0x10] spill-single-def "Inline stloc first use temp"
;* V16 tmp14 [V16 ] ( 0, 0 ) struct (28) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ubyte]>
-; V17 tmp15 [V17,T06] ( 5, 2.50) ref -> [ebp-0x48] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]> -; V18 tmp16 [V18,T00] ( 10, 10 ) ref -> [ebp-0x4C] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]> -;* V19 tmp17 [V19,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V17 tmp15 [V17,T06] ( 5, 2.50) ref -> edi ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]> +; V18 tmp16 [V18,T00] ( 10, 10 ) ref -> edi class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]> +;* V19 tmp17 [V19,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V20 tmp18 [V20,T08] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V21 tmp19 [V21,T02] ( 6, 6 ) struct (28) [ebp-0x28] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ubyte]>
+; V21 tmp19 [V21,T02] ( 6, 6 ) struct (28) [ebp-0x2C] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ubyte]>
; V22 tmp20 [V22,T11] ( 3, 1.50) byref -> eax single-def "Inline stloc first use temp" ;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo> ;* V24 tmp22 [V24 ] ( 0, 0 ) ref -> zero-ref single-def ;* V25 tmp23 [V25 ] ( 0, 0 ) ref -> zero-ref ; V26 tmp24 [V26,T12] ( 3, 1.50) ref -> ecx ; V27 tmp25 [V27,T09] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
-; V28 tmp26 [V28,T03] ( 6, 6 ) struct (28) [ebp-0x44] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ubyte]>
+; V28 tmp26 [V28,T03] ( 6, 6 ) struct (28) [ebp-0x48] do-not-enreg[S] must-init "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ubyte]>
;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]> ;* V30 tmp28 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V31 tmp29 [V31,T07] ( 6, 3 ) int -> edi "field V11._info (fldOffset=0x0)" P-INDEP
+; V31 tmp29 [V31,T07] ( 6, 3 ) int -> ebx "field V11._info (fldOffset=0x0)" P-INDEP
;* V32 tmp30 [V32 ] ( 0, 0 ) int -> zero-ref "field V23._info (fldOffset=0x0)" P-INDEP ;* V33 tmp31 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[000..004)" ;* V34 tmp32 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "V16.[004..008)" @@ -49,7 +49,7 @@ ;* V38 tmp36 [V38 ] ( 0, 0 ) ubyte -> zero-ref "V16.[020..021)" ;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref "V16.[024..028)" ;
-; Lcl frame size = 64
+; Lcl frame size = 60
G_M6531_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -57,13 +57,13 @@ G_M6531_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- sub esp, 64
+ sub esp, 60
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [ebp-0x44], ymm4 - vmovdqu xmmword ptr [ebp-0x24], xmm4
+ vmovdqu ymmword ptr [ebp-0x48], ymm4 + vmovdqu xmmword ptr [ebp-0x28], xmm4
xor eax, eax
+ mov dword ptr [ebp-0x18], eax
mov dword ptr [ebp-0x14], eax
- mov dword ptr [ebp-0x10], eax
mov esi, ecx ; gcrRegs +[esi] ;; size=33 bbWeight=1 PerfScore 11.33 @@ -75,6 +75,8 @@ G_M6531_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ;; size=11 bbWeight=1 PerfScore 3.25 G_M6531_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax]
+ mov edi, esi + ; gcrRegs +[edi]
push 1 push 1 push 1 @@ -84,30 +86,30 @@ G_M6531_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000 xor ecx, ecx mov edx, 1 call [<unknown method>]
- mov edi, eax
+ mov ebx, eax
push 0 push 0
- mov ecx, esi
+ mov ecx, edi
; gcrRegs +[ecx] mov edx, 8 call [<unknown method>]
- ; gcrRegs -[ecx] - mov ebx, eax
+ ; gcrRegs -[ecx edi] + mov dword ptr [ebp-0x10], eax
mov ecx, gword ptr [esi+0x44] ; gcrRegs +[ecx]
- mov dword ptr [ebp-0x20], 8
+ mov dword ptr [ebp-0x24], 8 + mov dword ptr [ebp-0x20], -1
mov dword ptr [ebp-0x1C], -1
- mov dword ptr [ebp-0x18], -1 - mov byte ptr [ebp-0x14], bl - mov dword ptr [ebp-0x10], edi
+ mov byte ptr [ebp-0x18], al + mov dword ptr [ebp-0x14], ebx
cmp byte ptr [ecx], cl
- push dword ptr [ebp-0x10]
push dword ptr [ebp-0x14] push dword ptr [ebp-0x18] push dword ptr [ebp-0x1C] push dword ptr [ebp-0x20]
- push gword ptr [ebp-0x24]
+ push dword ptr [ebp-0x24]
push gword ptr [ebp-0x28]
+ push gword ptr [ebp-0x2C]
call [<unknown method>] ; gcrRegs -[ecx] ; byrRegs +[eax] @@ -116,39 +118,39 @@ G_M6531_IG03: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000 mov edi, gword ptr [eax] ; gcrRegs +[edi] jmp G_M6531_IG09
- ;; size=116 bbWeight=0.50 PerfScore 20.38
+ ;; size=119 bbWeight=0.50 PerfScore 20.88
G_M6531_IG04: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edi] ; byrRegs -[eax] mov ecx, 0xD1FFAB1E ; System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte] call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x4C], eax - ; GC ptr vars +{V18} - mov dword ptr [eax+0x10], 8
+ mov edi, eax + ; gcrRegs +[edi] + mov dword ptr [edi+0x10], 8
xor ecx, ecx ; gcrRegs +[ecx]
- mov gword ptr [eax+0x04], ecx - ;; size=25 bbWeight=0.50 PerfScore 2.25 -G_M6531_IG05: ; bbWeight=0.50, gcVars=00000001 {V18}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[ecx] - mov gword ptr [eax+0x08], ecx - mov dword ptr [eax+0x14], -1 - mov dword ptr [eax+0x18], -1 - mov byte ptr [eax+0x1C], bl - mov dword ptr [eax+0x20], edi - test edi, 32
+ mov gword ptr [edi+0x04], ecx + ;; size=24 bbWeight=0.50 PerfScore 1.88 +G_M6531_IG05: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax ecx] + mov gword ptr [edi+0x08], ecx + mov dword ptr [edi+0x14], -1 + mov dword ptr [edi+0x18], -1 + mov eax, dword ptr [ebp-0x10] + mov byte ptr [edi+0x1C], al + mov dword ptr [edi+0x20], ebx + test bl, 32
je SHORT G_M6531_IG06
- test edi, 8
+ test bl, 8
jne SHORT G_M6531_IG07
- ;; size=39 bbWeight=0.50 PerfScore 3.75 -G_M6531_IG06: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs -[eax]
+ ;; size=36 bbWeight=0.50 PerfScore 4.25 +G_M6531_IG06: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
xor ecx, ecx ; gcrRegs +[ecx] jmp SHORT G_M6531_IG08 ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M6531_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M6531_IG07: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
; gcrRegs -[ecx] mov ecx, 0xD1FFAB1E ; <unknown class> mov edx, 64 @@ -157,51 +159,44 @@ G_M6531_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=000000 mov ecx, eax ; gcrRegs +[ecx] ;; size=17 bbWeight=0.50 PerfScore 0.88
-G_M6531_IG08: ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M6531_IG08: ; bbWeight=0.50, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
- mov eax, gword ptr [ebp-0x4C] - ; gcrRegs +[eax] - lea edx, bword ptr [eax+0x0C]
+ lea edx, bword ptr [edi+0x0C]
; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[ecx] ; byrRegs -[edx] mov ecx, gword ptr [esi+0x44] ; gcrRegs +[ecx]
- mov dword ptr [ebp-0x3C], 8
+ mov dword ptr [ebp-0x40], 8 + mov dword ptr [ebp-0x3C], -1
mov dword ptr [ebp-0x38], -1
- mov dword ptr [ebp-0x34], -1 - mov byte ptr [ebp-0x30], bl - mov dword ptr [ebp-0x2C], edi
+ mov eax, dword ptr [ebp-0x10] + mov byte ptr [ebp-0x34], al + mov dword ptr [ebp-0x30], ebx
cmp byte ptr [ecx], cl
- push dword ptr [ebp-0x2C]
push dword ptr [ebp-0x30] push dword ptr [ebp-0x34] push dword ptr [ebp-0x38] push dword ptr [ebp-0x3C]
- push gword ptr [ebp-0x40]
+ push dword ptr [ebp-0x40]
push gword ptr [ebp-0x44]
+ push gword ptr [ebp-0x48]
push 1
- mov gword ptr [ebp-0x48], eax - ; GC ptr vars +{V17} - mov edx, eax
+ mov edx, edi
; gcrRegs +[edx]
- ; GC ptr vars -{V18}
call [<unknown method>]
- ; gcrRegs -[eax ecx edx]
+ ; gcrRegs -[ecx edx]
test eax, eax
- jne SHORT G_M6531_IG11
+ jne SHORT G_M6531_IG09
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- mov edi, gword ptr [ebp-0x48] - ; gcrRegs +[edi] - ;; size=100 bbWeight=0.50 PerfScore 15.25 -G_M6531_IG09: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars -{V17}
+ ;; size=94 bbWeight=0.50 PerfScore 14.25 +G_M6531_IG09: ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
lea edx, bword ptr [esi+0x2C] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EDI @@ -219,14 +214,7 @@ G_M6531_IG10: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 pop ebp ...

+7 (+4.17%) : 185132.dasm - ILCompiler.PEWriter.RelocationHelper:PutThumb2Imm16(ushort,ubyte[],int) (FullOpts)

@@ -8,17 +8,17 @@ ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T06] ( 3, 3 ) ushort -> ebx single-def
+; V00 arg0 [V00,T03] ( 4, 4 ) ushort -> ebx single-def
; V01 arg1 [V01,T00] ( 9, 9 ) ref -> esi class-hnd single-def <ubyte[]> ; V02 arg2 [V02,T02] ( 7, 7 ) int -> edi single-def
-; V03 loc0 [V03,T03] ( 5, 5 ) ushort -> [ebp-0x10] -; V04 loc1 [V04,T07] ( 3, 3 ) ushort -> eax single-def
+; V03 loc0 [V03,T04] ( 5, 5 ) ushort -> [ebp-0x10] +; V04 loc1 [V04,T07] ( 3, 3 ) ushort -> [ebp-0x14] spill-single-def
;* V05 tmp0 [V05 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V06 tmp1 [V06,T01] ( 5, 10 ) int -> edi "Inlining Arg"
-; V07 cse0 [V07,T04] ( 5, 5 ) int -> edx "CSE - moderate" -; V08 cse1 [V08,T05] ( 5, 5 ) int -> edx "CSE - moderate"
+; V07 cse0 [V07,T05] ( 5, 5 ) int -> eax "CSE - moderate" +; V08 cse1 [V08,T06] ( 4, 4 ) int -> edx "CSE - moderate"
;
-; Lcl frame size = 4
+; Lcl frame size = 8
G_M63351_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -26,12 +26,12 @@ G_M63351_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- push eax
+ sub esp, 8
mov ebx, ecx mov esi, edx ; gcrRegs +[esi] mov edi, dword ptr [ebp+0x08]
- ;; size=14 bbWeight=1 PerfScore 6.75
+ ;; size=16 bbWeight=1 PerfScore 6.00
G_M63351_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, esi ; gcrRegs +[ecx] @@ -46,58 +46,59 @@ G_M63351_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 call [System.BitConverter:ToInt16(ubyte[],int):short] ; gcrRegs -[ecx] movzx eax, ax
+ mov dword ptr [ebp-0x14], eax
movzx edx, bx mov ecx, edx and ecx, 0xF000 sar ecx, 12
- mov ebx, edx - and ebx, 0x800 - sar ebx, 1 - or ecx, ebx - mov ebx, edx - and ebx, 0x700 - shl ebx, 4 - or ecx, ebx - movzx edx, dl - or edx, ecx
+ mov eax, edx + and eax, 0x800 + sar eax, 1 + or eax, ecx + and edx, 0x700 + shl edx, 4 + or eax, edx + movzx edx, bl + or eax, edx
mov ebx, dword ptr [ebp-0x10] and ebx, 0x8B00
- or edx, ebx - movzx ebx, dx - mov edx, dword ptr [esi+0x04] - cmp edi, edx
+ or eax, ebx + movzx ebx, ax + mov eax, dword ptr [esi+0x04] + cmp edi, eax
jae SHORT G_M63351_IG04 mov byte ptr [esi+edi+0x08], bl
- lea ecx, [edi+0x01] - cmp ecx, edx
+ lea edx, [edi+0x01] + cmp edx, eax
jae SHORT G_M63351_IG04
- mov ecx, ebx - sar ecx, 8 - mov byte ptr [esi+edi+0x09], cl
+ mov edx, ebx + sar edx, 8 + mov byte ptr [esi+edi+0x09], dl
add edi, 2
- cmp edi, edx
+ cmp edi, eax
jae SHORT G_M63351_IG04
- mov byte ptr [esi+edi+0x08], al
+ mov edx, dword ptr [ebp-0x14] + mov byte ptr [esi+edi+0x08], dl
lea ecx, [edi+0x01]
- cmp ecx, edx
+ cmp ecx, eax
jae SHORT G_M63351_IG04
- sar eax, 8 - mov byte ptr [esi+edi+0x09], al - ;; size=140 bbWeight=1 PerfScore 28.25
+ sar edx, 8 + mov byte ptr [esi+edi+0x09], dl + ;; size=143 bbWeight=1 PerfScore 30.00
G_M63351_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ecx
+ lea esp, [ebp-0x0C]
pop ebx pop esi pop edi pop ebp ret 4
- ;; size=8 bbWeight=1 PerfScore 4.50
+ ;; size=10 bbWeight=1 PerfScore 4.50
G_M63351_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs -[esi] call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 7, PerfScore 39.50, instruction count 63, allocated bytes for code 168 (MethodHash=be270888) for method ILCompiler.PEWriter.RelocationHelper:PutThumb2Imm16(ushort,ubyte[],int) (FullOpts)
+; Total bytes of code 175, prolog size 9, PerfScore 40.50, instruction count 64, allocated bytes for code 175 (MethodHash=be270888) for method ILCompiler.PEWriter.RelocationHelper:PutThumb2Imm16(ushort,ubyte[],int) (FullOpts)
; ============================================================

+17 (+5.15%) : 201283.dasm - Internal.TypeSystem.FieldDesc:ToString():System.String:this (FullOpts)

@@ -9,54 +9,54 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 5 ) ref -> esi this class-hnd single-def <Internal.TypeSystem.FieldDesc>
-; V01 loc0 [V01 ] ( 22, 16.00) struct (24) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> -; V02 tmp0 [V02,T06] ( 2, 4.00) ref -> ecx class-hnd exact single-def "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
+; V01 loc0 [V01 ] ( 21, 15.00) struct (24) [ebp-0x24] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> +;* V02 tmp0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr" ; V04 tmp2 [V04,T00] ( 5, 8.00) ref -> eax class-hnd single-def "dup spill" <ushort[]> ;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V06 tmp4 [V06,T18] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V10 tmp8 [V10,T01] ( 4, 8 ) int -> ecx "Inlining Arg" -;* V11 tmp9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V12 tmp10 [V12,T04] ( 3, 6 ) int -> [ebp-0x28] spill-single-def "Inlining Arg" -; V13 tmp11 [V13,T10] ( 2, 3.00) byref -> ebx single-def "Inlining Arg"
+;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V09 tmp7 [V09,T01] ( 4, 8 ) int -> ecx "Inlining Arg" +;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V11 tmp9 [V11,T04] ( 3, 6 ) int -> ebx "Inlining Arg" +; V12 tmp10 [V12,T10] ( 2, 3.00) byref -> [ebp-0x28] spill-single-def "Inlining Arg" +;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V15 tmp13 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V16 tmp14 [V16,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V17 tmp15 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V18 tmp16 [V18 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V19 tmp17 [V19,T14] ( 2, 2.00) byref -> edx single-def "Inlining Arg" -; V20 tmp18 [V20,T03] ( 7, 7.00) ref -> esi class-hnd exact single-def "Inlining Arg" <System.String> -;* V21 tmp19 [V21 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V22 tmp20 [V22,T05] ( 4, 4 ) int -> ecx "Inlining Arg" -;* V23 tmp21 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V24 tmp22 [V24,T08] ( 3, 3 ) int -> ebx "Inlining Arg" -; V25 tmp23 [V25,T11] ( 2, 2.00) byref -> edi single-def "Inlining Arg"
+;* V15 tmp13 [V15,T17] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V16 tmp14 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V17 tmp15 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V18 tmp16 [V18,T14] ( 2, 2.00) byref -> edx single-def "Inlining Arg" +; V19 tmp17 [V19,T03] ( 7, 7.00) ref -> esi class-hnd exact single-def "Inlining Arg" <System.String> +;* V20 tmp18 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V21 tmp19 [V21,T05] ( 4, 4 ) int -> ecx "Inlining Arg" +;* V22 tmp20 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V23 tmp21 [V23,T07] ( 3, 3 ) int -> ebx "Inlining Arg" +; V24 tmp22 [V24,T11] ( 2, 2.00) byref -> edi single-def "Inlining Arg" +;* V25 tmp23 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp24 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V27 tmp25 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V28 tmp26 [V28,T19] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V29 tmp27 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V30 tmp28 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V31 tmp29 [V31,T12] ( 2, 2.00) byref -> edx single-def "Inlining Arg" -; V32 tmp30 [V32,T13] ( 2, 2.00) int -> ecx "Inlining Arg" -; V33 tmp31 [V33,T15] ( 3, 1.50) byref -> edi "field V08._reference (fldOffset=0x0)" P-INDEP -; V34 tmp32 [V34,T16] ( 3, 1.50) int -> ebx "field V08._length (fldOffset=0x4)" P-INDEP -;* V35 tmp33 [V35 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP -;* V36 tmp34 [V36 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x4)" P-INDEP -;* V37 tmp35 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP -;* V38 tmp36 [V38 ] ( 0, 0 ) int -> zero-ref single-def "field V11._length (fldOffset=0x4)" P-INDEP -;* V39 tmp37 [V39 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP -;* V40 tmp38 [V40 ] ( 0, 0 ) int -> zero-ref single-def "field V17._length (fldOffset=0x4)" P-INDEP -;* V41 tmp39 [V41 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP -;* V42 tmp40 [V42 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x4)" P-INDEP -;* V43 tmp41 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V23._reference (fldOffset=0x0)" P-INDEP -;* V44 tmp42 [V44 ] ( 0, 0 ) int -> zero-ref single-def "field V23._length (fldOffset=0x4)" P-INDEP -;* V45 tmp43 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP -;* V46 tmp44 [V46 ] ( 0, 0 ) int -> zero-ref single-def "field V29._length (fldOffset=0x4)" P-INDEP -; V47 tmp45 [V47,T07] ( 2, 4 ) ref -> edx single-def "argument with side effect" -; V48 cse0 [V48,T09] ( 3, 3 ) int -> edi "CSE - moderate"
+;* V27 tmp25 [V27,T18] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V28 tmp26 [V28 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V29 tmp27 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V30 tmp28 [V30,T12] ( 2, 2.00) byref -> edx single-def "Inlining Arg" +; V31 tmp29 [V31,T13] ( 2, 2.00) int -> ecx "Inlining Arg" +; V32 tmp30 [V32,T15] ( 3, 1.50) byref -> edi "field V07._reference (fldOffset=0x0)" P-INDEP +; V33 tmp31 [V33,T16] ( 3, 1.50) int -> ebx "field V07._length (fldOffset=0x4)" P-INDEP +;* V34 tmp32 [V34 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP +;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x4)" P-INDEP +;* V36 tmp34 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP +;* V37 tmp35 [V37 ] ( 0, 0 ) int -> zero-ref single-def "field V10._length (fldOffset=0x4)" P-INDEP +;* V38 tmp36 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP +;* V39 tmp37 [V39 ] ( 0, 0 ) int -> zero-ref single-def "field V16._length (fldOffset=0x4)" P-INDEP +;* V40 tmp38 [V40 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP +;* V41 tmp39 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x4)" P-INDEP +;* V42 tmp40 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP +;* V43 tmp41 [V43 ] ( 0, 0 ) int -> zero-ref single-def "field V22._length (fldOffset=0x4)" P-INDEP +;* V44 tmp42 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP +;* V45 tmp43 [V45 ] ( 0, 0 ) int -> zero-ref single-def "field V28._length (fldOffset=0x4)" P-INDEP +; V46 tmp44 [V46,T06] ( 2, 4 ) ref -> edx single-def "argument with side effect" +; V47 cse0 [V47,T08] ( 3, 3 ) int -> edi "CSE - moderate" +; V48 cse1 [V48,T09] ( 3, 3 ) int -> ebx "CSE - moderate"
; ; Lcl frame size = 28 @@ -84,14 +84,14 @@ G_M10078_IG02: ; bbWeight=1.00, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[ecx] +[eax] mov gword ptr [ebp-0x20], eax test eax, eax
- je G_M10078_IG16
+ je G_M10078_IG17
;; size=30 bbWeight=1.00 PerfScore 10.50 G_M10078_IG03: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref lea edi, bword ptr [eax+0x08] ; byrRegs +[edi] mov ebx, dword ptr [eax+0x04] ;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M10078_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M10078_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[eax] mov bword ptr [ebp-0x14], edi mov dword ptr [ebp-0x10], ebx @@ -112,39 +112,42 @@ G_M10078_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 call [<unknown method>] ; gcrRegs -[eax edx] mov ecx, dword ptr [ebp-0x1C]
- cmp ecx, dword ptr [ebp-0x10] - ja G_M10078_IG17
+ mov ebx, dword ptr [ebp-0x10] + cmp ecx, ebx + ja G_M10078_IG18
mov edx, bword ptr [ebp-0x14] ; byrRegs +[edx]
- lea ebx, bword ptr [edx+2*ecx] - ; byrRegs +[ebx] - mov eax, dword ptr [ebp-0x10] - sub eax, ecx - mov dword ptr [ebp-0x28], eax - test eax, eax - jge SHORT G_M10078_IG06 - ;; size=71 bbWeight=1 PerfScore 25.25 -G_M10078_IG05: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref - ; byrRegs -[edx]
+ lea eax, bword ptr [edx+2*ecx] + ; byrRegs +[eax] + mov bword ptr [ebp-0x28], eax + ; GC ptr vars +{V12} + sub ebx, ecx + jns G_M10078_IG14 + ;; size=72 bbWeight=1 PerfScore 23.25 +G_M10078_IG05: ; bbWeight=0.50, gcVars=00000400 {V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[eax edx]
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=16 bbWeight=0.50 PerfScore 1.75 -G_M10078_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref - cmp dword ptr [ebp-0x28], 0 - je G_M10078_IG14 - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M10078_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+ mov eax, bword ptr [ebp-0x28] + ; byrRegs +[eax] + ;; size=19 bbWeight=0.50 PerfScore 2.25 +G_M10078_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref + test ebx, ebx + je G_M10078_IG15 + ;; size=8 bbWeight=1 PerfScore 1.25 +G_M10078_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, byref
mov edx, 0xD1FFAB1E ; byrRegs +[edx] push 2
- mov ecx, ebx
+ mov ecx, eax
; byrRegs +[ecx]
+ ; GC ptr vars -{V12}
call [<unknown method>]
- ; byrRegs -[ecx edx ebx]
+ ; byrRegs -[eax ecx edx]
mov ecx, dword ptr [ebp-0x1C] inc ecx mov dword ptr [ebp-0x1C], ecx @@ -157,15 +160,15 @@ G_M10078_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov esi, eax ; gcrRegs +[esi] cmp byte ptr [ebp-0x18], 0
- jne SHORT G_M10078_IG15
+ jne SHORT G_M10078_IG16
;; size=13 bbWeight=1 PerfScore 6.50 G_M10078_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax] test esi, esi
- je SHORT G_M10078_IG15
+ je SHORT G_M10078_IG16
mov ecx, dword ptr [ebp-0x1C] cmp ecx, dword ptr [ebp-0x10]
- ja SHORT G_M10078_IG17
+ ja G_M10078_IG18
mov edx, bword ptr [ebp-0x14] ; byrRegs +[edx] lea edi, bword ptr [edx+2*ecx] @@ -180,10 +183,10 @@ G_M10078_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; byrRegs -[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=41 bbWeight=0.50 PerfScore 6.25
+ ;; size=45 bbWeight=0.50 PerfScore 6.25
G_M10078_IG10: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz cmp dword ptr [esi+0x04], ebx
- ja SHORT G_M10078_IG15
+ ja SHORT G_M10078_IG16
;; size=5 bbWeight=0.50 PerfScore 2.00 G_M10078_IG11: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref lea edx, bword ptr [esi+0x08] @@ -213,16 +216,24 @@ G_M10078_IG13: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M10078_IG14: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10078_IG14: ; bbWeight=0.50, gcVars=00000400 {V12}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi]
+ ; GC ptr vars +{V12} + mov eax, bword ptr [ebp-0x28] + ; byrRegs +[eax] + jmp G_M10078_IG06 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M10078_IG15: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[eax] + ; GC ptr vars -{V12}
lea ecx, [ebp-0x24] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[edx]
- jmp SHORT G_M10078_IG08 - ;; size=16 bbWeight=0.00 PerfScore 0.01 -G_M10078_IG15: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ jmp G_M10078_IG08 + ;; size=19 bbWeight=0.00 PerfScore 0.01 +G_M10078_IG16: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea ecx, [ebp-0x24] mov edx, esi ; gcrRegs +[edx] @@ -230,20 +241,20 @@ G_M10078_IG15: ; bbWeight=0.00, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; gcrRegs -[edx esi] jmp SHORT G_M10078_IG12 ;; size=13 bbWeight=0.00 PerfScore 0.01
-G_M10078_IG16: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M10078_IG17: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[esi] xor edi, edi ; byrRegs +[edi] xor ebx, ebx jmp G_M10078_IG04 ...

+10 (+5.88%) : 4667.dasm - System.Globalization.OrdinalCasing:ToUpper(ushort):ushort (FullOpts)

@@ -8,13 +8,12 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 3, 3 ) ushort -> ecx single-def -; V01 loc0 [V01,T02] ( 5, 3.50) int -> esi -; V02 loc1 [V02,T03] ( 6, 3 ) ref -> edi class-hnd <ushort[]> -; V03 tmp0 [V03,T04] ( 3, 3 ) ref -> ecx single-def "arr expr" -; V04 tmp1 [V04,T05] ( 3, 3 ) ref -> eax single-def "arr expr" -; V05 cse0 [V05,T06] ( 3, 1.50) int -> eax "CSE - moderate" -; V06 cse1 [V06,T01] ( 6, 4 ) int -> ebx "CSE - aggressive"
+; V00 arg0 [V00,T00] ( 7, 5 ) ushort -> ebx single-def +; V01 loc0 [V01,T01] ( 5, 3.50) int -> esi +; V02 loc1 [V02,T02] ( 6, 3 ) ref -> edi class-hnd <ushort[]> +; V03 tmp0 [V03,T03] ( 3, 3 ) ref -> ecx single-def "arr expr" +; V04 tmp1 [V04,T04] ( 3, 3 ) ref -> eax single-def "arr expr" +; V05 cse0 [V05,T05] ( 3, 1.50) int -> eax "CSE - moderate"
; ; Lcl frame size = 0 @@ -24,13 +23,13 @@ G_M5920_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, push edi push esi push ebx
- ;; size=6 bbWeight=1 PerfScore 4.25
+ mov ebx, ecx + ;; size=8 bbWeight=1 PerfScore 4.50
G_M5920_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
- movzx ebx, cx - mov esi, ebx
+ movzx esi, bx
sar esi, 8 jne SHORT G_M5920_IG06
- ;; size=10 bbWeight=1 PerfScore 2.00
+ ;; size=8 bbWeight=1 PerfScore 1.75
G_M5920_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz test byte ptr [D1FFAB1EH], 1 ; global ptr je SHORT G_M5920_IG13 @@ -38,11 +37,13 @@ G_M5920_IG03: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 G_M5920_IG04: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax]
- cmp ebx, dword ptr [eax+0x04]
+ movzx ecx, bx + cmp ecx, dword ptr [eax+0x04]
jae SHORT G_M5920_IG12
- movzx eax, word ptr [eax+2*ebx+0x08]
+ movzx ecx, bx + movzx eax, word ptr [eax+2*ecx+0x08]
; gcrRegs -[eax]
- ;; size=15 bbWeight=0.50 PerfScore 4.00
+ ;; size=21 bbWeight=0.50 PerfScore 4.25
G_M5920_IG05: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -67,8 +68,8 @@ G_M5920_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS cmp edi, gword ptr [D1FFAB1EH] ; static handle jne SHORT G_M5920_IG09
- mov eax, ebx - ;; size=40 bbWeight=0.50 PerfScore 6.88
+ movzx eax, bx + ;; size=41 bbWeight=0.50 PerfScore 6.88
G_M5920_IG08: ; bbWeight=0.50, epilog, nogc, extend pop ebx pop esi @@ -103,12 +104,12 @@ G_M5920_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, by ; gcrRegs -[edi] call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00
-G_M5920_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M5920_IG13: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E mov edx, 649 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
- jmp SHORT G_M5920_IG04 - ;; size=17 bbWeight=0 PerfScore 0.00
+ jmp G_M5920_IG04 + ;; size=20 bbWeight=0 PerfScore 0.00
G_M5920_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz mov ecx, 0xD1FFAB1E mov edx, 649 @@ -116,6 +117,6 @@ G_M5920_IG14: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, jmp SHORT G_M5920_IG07 ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 6, PerfScore 31.12, instruction count 60, allocated bytes for code 170 (MethodHash=cfe0e8df) for method System.Globalization.OrdinalCasing:ToUpper(ushort):ushort (FullOpts)
+; Total bytes of code 180, prolog size 6, PerfScore 31.38, instruction count 62, allocated bytes for code 180 (MethodHash=cfe0e8df) for method System.Globalization.OrdinalCasing:ToUpper(ushort):ushort (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-14 (-58.33%) : 401733.dasm - TestType:meth1():int (Tier0)

@@ -13,20 +13,13 @@ G_M16291_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M16291_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov eax, 1 - inc eax - mov edx, 1 - inc edx - inc edx - add eax, edx - add eax, 2 - inc eax - ;; size=19 bbWeight=1 PerfScore 2.00
+ mov eax, 8 + ;; size=5 bbWeight=1 PerfScore 0.25
G_M16291_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 24, prolog size 3, PerfScore 4.75, instruction count 12, allocated bytes for code 24 (MethodHash=b58cc05c) for method TestType:meth1():int (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 3.00, instruction count 5, allocated bytes for code 10 (MethodHash=b58cc05c) for method TestType:meth1():int (Tier0)
; ============================================================

-9 (-47.37%) : 64568.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:get_BufferSize():int (Tier0)

@@ -13,16 +13,13 @@ G_M52681_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebp, esp ;; size=3 bbWeight=1 PerfScore 1.25 G_M52681_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov eax, 512 - mov ecx, 4 - xor edx, edx - div edx:eax, ecx - ;; size=14 bbWeight=1 PerfScore 25.75
+ mov eax, 128 + ;; size=5 bbWeight=1 PerfScore 0.25
G_M52681_IG03: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 19, prolog size 3, PerfScore 28.50, instruction count 8, allocated bytes for code 19 (MethodHash=81b63236) for method System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:get_BufferSize():int (Tier0)
+; Total bytes of code 10, prolog size 3, PerfScore 3.00, instruction count 5, allocated bytes for code 10 (MethodHash=81b63236) for method System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:get_BufferSize():int (Tier0)
; ============================================================

-21 (-40.38%) : 2994.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)

@@ -6,39 +6,28 @@ ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) int -> [ebp-0x08] do-not-enreg[]
-; TEMP_01 byref -> [ebp-0x0C]
;
-; Lcl frame size = 12
+; Lcl frame size = 8
G_M28933_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp mov ebp, esp
- sub esp, 12 - xor eax, eax - mov dword ptr [ebp-0x0C], eax
+ sub esp, 8
mov dword ptr [ebp-0x04], ecx mov dword ptr [ebp-0x08], ecx
- ;; size=17 bbWeight=1 PerfScore 4.75
+ ;; size=12 bbWeight=1 PerfScore 3.50
G_M28933_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, dword ptr [ebp-0x08] call CORINFO_HELP_GETGENERICS_NONGCSTATIC_BASE ; byrRegs +[eax]
- mov bword ptr [ebp-0x0C], eax - mov eax, 512 - ; byrRegs -[eax] - mov ecx, 4 - xor edx, edx - div edx:eax, ecx - mov edx, bword ptr [ebp-0x0C] - ; byrRegs +[edx] - mov dword ptr [edx+0x04], eax - ;; size=31 bbWeight=1 PerfScore 30.75
+ mov dword ptr [eax+0x04], 128 + ;; size=15 bbWeight=1 PerfScore 3.00
G_M28933_IG03: ; bbWeight=1, epilog, nogc, extend mov esp, ebp pop ebp ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 52, prolog size 14, PerfScore 37.25, instruction count 19, allocated bytes for code 52 (MethodHash=381d8efa) for method System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
+; Total bytes of code 31, prolog size 9, PerfScore 8.25, instruction count 11, allocated bytes for code 31 (MethodHash=381d8efa) for method System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
; ============================================================

+6 (+7.23%) : 245440.dasm - System.Drawing.PrimitivesTests.PointTests:SingleIntConstructorTest(int):this (Tier0)

@@ -30,9 +30,11 @@ G_M34188_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} call [<unknown method>] mov eax, dword ptr [ebp-0x08] sar eax, 16
+ movzx eax, ax
cwde push eax mov eax, dword ptr [ebp-0x08]
+ movzx eax, ax
movsx edx, ax lea ecx, [ebp-0x18] call [<unknown method>] @@ -41,13 +43,13 @@ G_M34188_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push dword ptr [ebp-0x14] push dword ptr [ebp-0x18] call [<unknown method>]
- ;; size=53 bbWeight=1 PerfScore 19.00
+ ;; size=59 bbWeight=1 PerfScore 19.50
G_M34188_IG03: ; bbWeight=1, epilog, nogc, extend mov esp, ebp pop ebp ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 83, prolog size 20, PerfScore 28.50, instruction count 29, allocated bytes for code 83 (MethodHash=f76a7a73) for method System.Drawing.PrimitivesTests.PointTests:SingleIntConstructorTest(int):this (Tier0)
+; Total bytes of code 89, prolog size 20, PerfScore 29.00, instruction count 31, allocated bytes for code 89 (MethodHash=f76a7a73) for method System.Drawing.PrimitivesTests.PointTests:SingleIntConstructorTest(int):this (Tier0)
; ============================================================

+3 (+16.67%) : 245443.dasm - System.Drawing.Point:HighInt16(int):short (Tier0)

@@ -18,14 +18,15 @@ G_M7017_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, G_M7017_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, dword ptr [ebp-0x04] sar eax, 16
+ movzx eax, ax
cwde
- ;; size=7 bbWeight=1 PerfScore 1.75
+ ;; size=10 bbWeight=1 PerfScore 2.00
G_M7017_IG03: ; bbWeight=1, epilog, nogc, extend mov esp, ebp pop ebp ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 18, prolog size 4, PerfScore 6.75, instruction count 10, allocated bytes for code 18 (MethodHash=7b2de496) for method System.Drawing.Point:HighInt16(int):short (Tier0)
+; Total bytes of code 21, prolog size 4, PerfScore 7.00, instruction count 11, allocated bytes for code 21 (MethodHash=7b2de496) for method System.Drawing.Point:HighInt16(int):short (Tier0)
; ============================================================

+3 (+20.00%) : 245442.dasm - System.Drawing.Point:LowInt16(int):short (Tier0)

@@ -17,14 +17,15 @@ G_M39123_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=7 bbWeight=1 PerfScore 3.25 G_M39123_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov eax, dword ptr [ebp-0x04]
+ movzx eax, ax
cwde
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=7 bbWeight=1 PerfScore 1.50
G_M39123_IG03: ; bbWeight=1, epilog, nogc, extend mov esp, ebp pop ebp ret ;; size=4 bbWeight=1 PerfScore 1.75
-; Total bytes of code 15, prolog size 4, PerfScore 6.25, instruction count 9, allocated bytes for code 15 (MethodHash=96ed672c) for method System.Drawing.Point:LowInt16(int):short (Tier0)
+; Total bytes of code 18, prolog size 4, PerfScore 6.50, instruction count 10, allocated bytes for code 18 (MethodHash=96ed672c) for method System.Drawing.Point:LowInt16(int):short (Tier0)
; ============================================================

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-4 (-25.00%) : 242073.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:TryEncodeUnicodeScalar_DisallowedSupplementaryChar():this (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; 1 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data @@ -15,9 +15,7 @@ ; Lcl frame size = 0 G_M12600_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=1 PerfScore 1.25
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M12600_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref ; gcrRegs +[ecx] mov edx, 0x1F604 @@ -25,10 +23,9 @@ G_M12600_IG02: ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 ; gcrRegs -[ecx] ;; size=11 bbWeight=1 PerfScore 3.25 G_M12600_IG03: ; bbWeight=1, epilog, nogc, extend
- pop ebp
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 3, PerfScore 6.00, instruction count 6, allocated bytes for code 16 (MethodHash=d8a2cec7) for method System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:TryEncodeUnicodeScalar_DisallowedSupplementaryChar():this (FullOpts)
+; Total bytes of code 12, prolog size 0, PerfScore 4.25, instruction count 3, allocated bytes for code 12 (MethodHash=d8a2cec7) for method System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:TryEncodeUnicodeScalar_DisallowedSupplementaryChar():this (FullOpts)
; ============================================================

-3 (-20.00%) : 213453.dasm - System.Tests.DateTimeTests+<>c:b_1342():System.Object:this (FullOpts)

@@ -2,40 +2,32 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 2 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.Tests.DateTimeTests+<>c> ;* V01 tmp0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.Tests.DateTimeTests+MyFormatter> ;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Single-def Box Helper" <System.DateTime> ;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref -;* V05 tmp4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.String> -;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref -;* V07 tmp6 [V07 ] ( 0, 0 ) ref -> zero-ref -;* V08 tmp7 [V08 ] ( 0, 0 ) ref -> zero-ref -;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> -;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> -;* V11 tmp10 [V11 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP -;* V12 tmp11 [V12 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP -;* V13 tmp12 [V13 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP -;* V14 tmp13 [V14 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
+;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> +;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP +;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x4)" P-INDEP +;* V07 tmp6 [V07 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP +;* V08 tmp7 [V08 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x4)" P-INDEP
; ; Lcl frame size = 0 G_M28333_IG01: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=0 PerfScore 0.00
+ ;; size=0 bbWeight=0 PerfScore 0.00
G_M28333_IG02: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 17 call [System.ThrowHelper:ThrowArgumentNullException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 15, prolog size 3, PerfScore 0.00, instruction count 5, allocated bytes for code 15 (MethodHash=acc29152) for method System.Tests.DateTimeTests+<>c:<Parse_InvalidArguments_Throws>b__134_2():System.Object:this (FullOpts)
+; Total bytes of code 12, prolog size 0, PerfScore 0.00, instruction count 3, allocated bytes for code 12 (MethodHash=acc29152) for method System.Tests.DateTimeTests+<>c:<Parse_InvalidArguments_Throws>b__134_2():System.Object:this (FullOpts)
; ============================================================

-3 (-20.00%) : 200418.dasm - System.Tests.StringTests+<>c:b_2661():System.Object:this (FullOpts)

@@ -2,7 +2,7 @@ ; Emitting BLENDED_CODE for X86 with AVX512 - Windows ; FullOpts code ; optimized code
-; ebp based frame
+; esp based frame
; partially interruptible ; No matching PGO data ; 1 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data @@ -30,15 +30,13 @@ ; Lcl frame size = 0 G_M61562_IG01: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
- push ebp - mov ebp, esp - ;; size=3 bbWeight=0 PerfScore 0.00
+ ;; size=0 bbWeight=0 PerfScore 0.00
G_M61562_IG02: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref mov ecx, 92 call [System.ThrowHelper:ThrowArgumentNullException(int)] int3 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 15, prolog size 3, PerfScore 0.00, instruction count 5, allocated bytes for code 15 (MethodHash=f1020f85) for method System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__266_1():System.Object:this (FullOpts)
+; Total bytes of code 12, prolog size 0, PerfScore 0.00, instruction count 3, allocated bytes for code 12 (MethodHash=f1020f85) for method System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__266_1():System.Object:this (FullOpts)
; ============================================================

+12 (+3.03%) : 160106.dasm - System.Net.NetworkInformation.Tests.IPGlobalPropertiesTest:IPGlobalPropertiesUdpListenersSucceed(System.Net.IPAddress):this (FullOpts)

@@ -10,57 +10,56 @@ ; ; V00 this [V00,T06] ( 3, 3 ) ref -> edi this class-hnd single-def <System.Net.NetworkInformation.Tests.IPGlobalPropertiesTest> ; V01 arg1 [V01,T04] ( 4, 4 ) ref -> esi class-hnd single-def <System.Net.IPAddress>
-; V02 loc0 [V02,T13] ( 5, 3 ) ref -> [ebp-0x3C] class-hnd exact EH-live spill-single-def <System.Net.Sockets.Socket> -; V03 loc1 [V03,T16] ( 2, 2 ) ref -> esi class-hnd single-def <<unknown class>>
+; V02 loc0 [V02,T19] ( 2, 0 ) ref -> [ebp-0x3C] class-hnd exact EH-live single-def <System.Net.Sockets.Socket> +; V03 loc1 [V03,T14] ( 2, 2 ) ref -> esi class-hnd single-def <<unknown class>>
; V04 loc2 [V04 ] ( 14, 12.00) struct (24) [ebp-0x38] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
-; V05 tmp0 [V05,T01] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.Sockets.Socket> -; V06 tmp1 [V06,T12] ( 2, 4 ) int -> ebx "finalizable newobj spill"
+; V05 tmp0 [V05,T00] ( 7, 14 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <System.Net.Sockets.Socket> +; V06 tmp1 [V06,T11] ( 2, 4 ) int -> ebx "finalizable newobj spill"
; V07 tmp2 [V07,T02] ( 4, 8.00) ref -> eax class-hnd exact single-def "NewObj constructor temp" <System.Net.IPEndPoint> ;* V08 tmp3 [V08 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler> ; V09 tmp4 [V09,T07] ( 2, 4.00) ref -> esi class-hnd single-def "impAppendStmt" <<unknown class>> ;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V11 tmp6 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V12 tmp7 [V12,T08] ( 2, 4.00) ref -> ecx class-hnd exact single-def "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
+;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "spilling ret_expr"
-; V14 tmp9 [V14,T00] ( 5, 8.00) ref -> eax class-hnd single-def "dup spill" <ushort[]>
+; V14 tmp9 [V14,T01] ( 5, 8.00) ref -> eax class-hnd single-def "dup spill" <ushort[]>
;* V15 tmp10 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
-;* V16 tmp11 [V16,T22] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp" -;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> -; V20 tmp15 [V20,T03] ( 4, 8 ) int -> ecx "Inlining Arg" -;* V21 tmp16 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> -; V22 tmp17 [V22,T05] ( 3, 6 ) int -> edi "Inlining Arg" -; V23 tmp18 [V23,T15] ( 2, 3.00) byref -> ebx single-def "Inlining Arg"
+;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> +; V19 tmp14 [V19,T03] ( 4, 8 ) int -> ecx "Inlining Arg" +;* V20 tmp15 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> +; V21 tmp16 [V21,T05] ( 3, 6 ) int -> edi "Inlining Arg" +; V22 tmp17 [V22,T13] ( 2, 3.00) byref -> [ebp-0x44] spill-single-def "Inlining Arg" +;* V23 tmp18 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp19 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V25 tmp20 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V26 tmp21 [V26,T20] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" -;* V27 tmp22 [V27 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> -;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -; V29 tmp24 [V29,T17] ( 2, 2.00) byref -> edx single-def "Inlining Arg" -;* V30 tmp25 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Net.NetworkInformation.SystemIPGlobalProperties> -; V31 tmp26 [V31,T18] ( 3, 1.50) byref -> edi "field V18._reference (fldOffset=0x0)" P-INDEP -; V32 tmp27 [V32,T19] ( 3, 1.50) int -> ebx "field V18._length (fldOffset=0x4)" P-INDEP -;* V33 tmp28 [V33 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP -;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x4)" P-INDEP -;* V35 tmp30 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V21._reference (fldOffset=0x0)" P-INDEP -;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref single-def "field V21._length (fldOffset=0x4)" P-INDEP -;* V37 tmp32 [V37 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP -;* V38 tmp33 [V38 ] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x4)" P-INDEP -;* V39 tmp34 [V39,T21] ( 0, 0 ) ref -> zero-ref single-def "V08.[000..004)" -;* V40 tmp35 [V40 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[004..008)" -;* V41 tmp36 [V41 ] ( 0, 0 ) int -> zero-ref "V08.[008..012)" -;* V42 tmp37 [V42 ] ( 0, 0 ) ubyte -> zero-ref "V08.[012..013)" -;* V43 tmp38 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "V08.[016..020)" -;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref single-def "V08.[020..024)"
+;* V25 tmp20 [V25,T18] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" +;* V26 tmp21 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> +;* V27 tmp22 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" +; V28 tmp23 [V28,T15] ( 2, 2.00) byref -> edx single-def "Inlining Arg" +;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Net.NetworkInformation.SystemIPGlobalProperties> +; V30 tmp25 [V30,T16] ( 3, 1.50) byref -> edi "field V17._reference (fldOffset=0x0)" P-INDEP +; V31 tmp26 [V31,T17] ( 3, 1.50) int -> edx "field V17._length (fldOffset=0x4)" P-INDEP +;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP +;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x4)" P-INDEP +;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V20._reference (fldOffset=0x0)" P-INDEP +;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref single-def "field V20._length (fldOffset=0x4)" P-INDEP +;* V36 tmp31 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP +;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref single-def "field V26._length (fldOffset=0x4)" P-INDEP +;* V38 tmp33 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[000..004)" +;* V39 tmp34 [V39 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[004..008)" +;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref "V08.[008..012)" +;* V41 tmp36 [V41 ] ( 0, 0 ) ubyte -> zero-ref "V08.[012..013)" +;* V42 tmp37 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "V08.[016..020)" +;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref single-def "V08.[020..024)" +; V44 tmp39 [V44,T08] ( 2, 4 ) ref -> edx single-def "argument with side effect"
; V45 tmp40 [V45,T09] ( 2, 4 ) ref -> edx single-def "argument with side effect"
-; V46 tmp41 [V46,T10] ( 2, 4 ) ref -> edx single-def "argument with side effect" -; V47 tmp42 [V47,T11] ( 2, 4 ) ref -> ecx single-def "argument with side effect" -;* V48 tmp43 [V48 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -; V49 EHSlots [V49 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" -; V50 cse0 [V50,T14] ( 3, 3 ) int -> edi "CSE - moderate"
+; V46 tmp41 [V46,T10] ( 2, 4 ) ref -> ecx single-def "argument with side effect" +;* V47 tmp42 [V47 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V48 EHSlots [V48 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar" +; V49 cse0 [V49,T12] ( 3, 3 ) int -> edi "CSE - moderate"
;
-; Lcl frame size = 52
+; Lcl frame size = 56
G_M16989_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -68,7 +67,7 @@ G_M16989_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 52
+ sub esp, 56
vxorps xmm4, xmm4, xmm4 vmovdqu ymmword ptr [ebp-0x38], ymm4 xor eax, eax @@ -101,7 +100,7 @@ G_M16989_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov gword ptr [ebp-0x3C], ebx ; GC ptr vars +{V02} ;; size=50 bbWeight=1 PerfScore 13.50
-G_M16989_IG03: ; bbWeight=1.00, gcVars=00002002 {V02 V05}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M16989_IG03: ; bbWeight=1.00, gcVars=00080001 {V02 V05}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E ; System.Net.IPEndPoint call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -116,9 +115,8 @@ G_M16989_IG03: ; bbWeight=1.00, gcVars=00002002 {V02 V05}, gcrefRegs=0000 ; gcrRegs +[ecx] mov edx, eax ; gcrRegs +[edx]
- ; GC ptr vars -{V05}
call [System.Net.Sockets.Socket:Bind(System.Net.EndPoint):this]
- ; gcrRegs -[eax ecx edx ebx]
+ ; gcrRegs -[eax ecx edx]
mov esi, gword ptr [edi+0x04] ; gcrRegs +[esi] mov ecx, gword ptr [D1FFAB1EH] ; static handle @@ -128,64 +126,69 @@ G_M16989_IG03: ; bbWeight=1.00, gcVars=00002002 {V02 V05}, gcrefRegs=0000 call [<unknown method>] ; gcrRegs -[ecx edi] +[eax] test eax, eax
- je G_M16989_IG12
+ je G_M16989_IG13
;; size=63 bbWeight=1.00 PerfScore 19.00
-G_M16989_IG04: ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
+G_M16989_IG04: ; bbWeight=0.50, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, byref
lea edi, bword ptr [eax+0x08] ; byrRegs +[edi]
- mov ebx, dword ptr [eax+0x04]
+ mov edx, dword ptr [eax+0x04]
;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M16989_IG05: ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, byref
+G_M16989_IG05: ; bbWeight=1, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000080 {edi}, byref
xor ecx, ecx ; gcrRegs +[ecx] mov gword ptr [ebp-0x38], ecx mov gword ptr [ebp-0x34], eax ;; size=8 bbWeight=1 PerfScore 2.25
-G_M16989_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref, isz
+G_M16989_IG06: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, byref
; gcrRegs -[eax ecx] mov dword ptr [ebp-0x30], ecx mov byte ptr [ebp-0x2C], 0 mov bword ptr [ebp-0x28], edi
- mov dword ptr [ebp-0x24], ebx
+ mov dword ptr [ebp-0x24], edx
mov ecx, dword ptr [ebp-0x30] mov edi, dword ptr [ebp-0x24] ; byrRegs -[edi] cmp ecx, edi
- ja G_M16989_IG11
+ ja G_M16989_IG12
mov edx, bword ptr [ebp-0x28] ; byrRegs +[edx]
- lea ebx, bword ptr [edx+2*ecx] - ; byrRegs +[ebx]
+ lea eax, bword ptr [edx+2*ecx] + ; byrRegs +[eax] + mov bword ptr [ebp-0x44], eax + ; GC ptr vars +{V22}
sub edi, ecx
- jns SHORT G_M16989_IG08 - ;; size=37 bbWeight=1 PerfScore 10.00 -G_M16989_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref - ; byrRegs -[edx]
+ jns G_M16989_IG11 + ;; size=44 bbWeight=1 PerfScore 11.00 +G_M16989_IG07: ; bbWeight=0.50, gcVars=00082001 {V02 V05 V22}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref + ; byrRegs -[eax edx]
mov ecx, 0xD1FFAB1E ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx]
- ;; size=16 bbWeight=0.50 PerfScore 1.75 -G_M16989_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+ mov eax, bword ptr [ebp-0x44] + ; byrRegs +[eax] + ;; size=19 bbWeight=0.50 PerfScore 2.25 +G_M16989_IG08: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000001 {eax}, byref
cmp edi, 13
- jb G_M16989_IG13
+ jb G_M16989_IG14
;; size=9 bbWeight=1 PerfScore 1.25
-G_M16989_IG09: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000008 {ebx}, byref
+G_M16989_IG09: ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000001 {eax}, byref
mov edx, 0xD1FFAB1E ; byrRegs +[edx] push 26
- mov ecx, ebx
+ mov ecx, eax
; byrRegs +[ecx]
+ ; GC ptr vars -{V22}
call [<unknown method>]
- ; byrRegs -[ecx edx ebx]
+ ; byrRegs -[eax ecx edx]
mov ecx, dword ptr [ebp-0x30] add ecx, 13 mov dword ptr [ebp-0x30], ecx ;; size=24 bbWeight=0.50 PerfScore 3.37
-G_M16989_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, gword ptr [ebp-0x3C]
+G_M16989_IG10: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, ebx
; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] +[eax] @@ -213,7 +216,7 @@ G_M16989_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[ecx] mov esi, eax ; gcrRegs +[esi]
- mov ecx, gword ptr [ebp-0x3C]
+ mov ecx, ebx
; gcrRegs +[ecx] call [<unknown method>] ; gcrRegs -[ecx] @@ -224,20 +227,31 @@ G_M16989_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[edx] call [Xunit.Assert:Contains[System.__Canon](System.__Canon,System.Collections.Generic.IEnumerable`1[System.__Canon])] ; gcrRegs -[eax ecx edx esi]
- jmp SHORT G_M16989_IG14 - ;; size=90 bbWeight=1 PerfScore 31.00 -G_M16989_IG11: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M16989_IG15 + ;; size=88 bbWeight=1 PerfScore 29.50 +G_M16989_IG11: ; bbWeight=0.50, gcVars=00082001 {V02 V05 V22}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[esi] + ; GC ptr vars +{V22} + mov eax, bword ptr [ebp-0x44] + ; byrRegs +[eax] + jmp SHORT G_M16989_IG08 + ;; size=5 bbWeight=0.50 PerfScore 1.50 +G_M16989_IG12: ; bbWeight=0, gcVars=00080000 {V02}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[ebx esi] + ; byrRegs -[eax] + ; GC ptr vars -{V05 V22}
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M16989_IG12: ; bbWeight=0, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
...

+14 (+3.60%) : 57841.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:get_CompareLesserData():Xunit.TheoryData`2Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer

@@ -16,18 +16,18 @@ ;* V05 tmp5 [V05 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.Extensions.Primitives.StringSegment> ;* V06 tmp6 [V06 ] ( 0, 0 ) struct (12) zero-ref "impAppendStmt" <Microsoft.Extensions.Primitives.StringSegment> ; V07 tmp7 [V07,T10] ( 3, 6 ) ref -> eax class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V08 tmp8 [V08,T07] ( 5, 7.91) ref -> ebx class-hnd exact single-def "dup spill" <System.Object[]>
+; V08 tmp8 [V08,T07] ( 5, 7 ) ref -> ebx class-hnd exact single-def "dup spill" <System.Object[]>
; V09 tmp9 [V09,T04] ( 5, 10 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.Extensions.Primitives.StringSegment> ; V10 tmp10 [V10,T11] ( 2, 4 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.Extensions.Primitives.StringSegmentComparer> ;* V11 tmp11 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V12 tmp12 [V12,T01] ( 7, 11.91) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V12 tmp12 [V12,T01] ( 7, 11 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
; V13 tmp13 [V13,T17] ( 3, 2.45) ref -> edx class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V14 tmp14 [V14,T14] ( 4, 2.91) int -> eax single-def "Inline stloc first use temp"
-; V15 tmp15 [V15,T08] ( 5, 7.91) ref -> ebx class-hnd exact single-def "dup spill" <System.Object[]>
+; V15 tmp15 [V15,T08] ( 5, 7 ) ref -> ebx class-hnd exact single-def "dup spill" <System.Object[]>
; V16 tmp16 [V16,T05] ( 5, 10 ) ref -> eax class-hnd exact single-def "Single-def Box Helper" <Microsoft.Extensions.Primitives.StringSegment> ; V17 tmp17 [V17,T12] ( 2, 4 ) ref -> edi class-hnd exact single-def "Inlining Arg" <Microsoft.Extensions.Primitives.StringSegmentComparer> ;* V18 tmp18 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V19 tmp19 [V19,T02] ( 7, 11.91) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
+; V19 tmp19 [V19,T02] ( 7, 11 ) ref -> ecx class-hnd single-def "Inlining Arg" <<unknown class>>
; V20 tmp20 [V20,T18] ( 3, 2.45) ref -> edx class-hnd single-def "Inline stloc first use temp" <<unknown class>> ; V21 tmp21 [V21,T15] ( 4, 2.91) int -> eax single-def "Inline stloc first use temp" ; V22 tmp22 [V22,T09] ( 5, 7 ) ref -> ebx class-hnd exact single-def "dup spill" <System.Object[]> @@ -58,9 +58,6 @@ ;* V47 tmp47 [V47 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V48 tmp48 [V48 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" ;* V49 tmp49 [V49 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V50 tmp50 [V50 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -;* V51 tmp51 [V51 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -;* V52 tmp52 [V52 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; ; Lcl frame size = 0 @@ -71,7 +68,7 @@ G_M46793_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push esi push ebx ;; size=6 bbWeight=1 PerfScore 4.25
-G_M46793_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M46793_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
mov ecx, 0xD1FFAB1E ; Xunit.TheoryData`2[Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer] call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -115,9 +112,9 @@ G_M46793_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[edx] mov eax, dword ptr [ecx+0x08] cmp dword ptr [edx+0x04], eax
- jbe SHORT G_M46793_IG04 - ;; size=124 bbWeight=1 PerfScore 29.25 -G_M46793_IG03: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jbe G_M46793_IG08 + ;; size=128 bbWeight=1 PerfScore 29.25 +G_M46793_IG03: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byrefRegs=00000000 {}, byref
lea edi, [eax+0x01] mov dword ptr [ecx+0x08], edi push ebx @@ -126,16 +123,8 @@ G_M46793_IG03: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byr ; gcrRegs -[edx] call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[ecx ebx]
- jmp SHORT G_M46793_IG05 - ;; size=18 bbWeight=0.45 PerfScore 2.73 -G_M46793_IG04: ; bbWeight=0.50, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ecx ebx] - mov edx, ebx - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ;; size=8 bbWeight=0.50 PerfScore 1.62 -G_M46793_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=16 bbWeight=0.45 PerfScore 1.82 +G_M46793_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov edi, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edi] mov ecx, 0xD1FFAB1E ; System.Object[] @@ -166,9 +155,9 @@ G_M46793_IG05: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[edx] mov eax, dword ptr [ecx+0x08] cmp dword ptr [edx+0x04], eax
- jbe SHORT G_M46793_IG07 - ;; size=87 bbWeight=1 PerfScore 24.00 -G_M46793_IG06: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byrefRegs=00000000 {}, byref, isz
+ jbe G_M46793_IG12 + ;; size=91 bbWeight=1 PerfScore 24.00 +G_M46793_IG05: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byrefRegs=00000000 {}, byref
lea edi, [eax+0x01] mov dword ptr [ecx+0x08], edi push ebx @@ -177,16 +166,8 @@ G_M46793_IG06: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byr ; gcrRegs -[edx] call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[ecx ebx]
- jmp SHORT G_M46793_IG08 - ;; size=18 bbWeight=0.45 PerfScore 2.73 -G_M46793_IG07: ; bbWeight=0.50, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ecx ebx] - mov edx, ebx - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx ebx] - ;; size=8 bbWeight=0.50 PerfScore 1.62 -G_M46793_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=16 bbWeight=0.45 PerfScore 1.82 +G_M46793_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[edi] mov ecx, 0xD1FFAB1E ; System.Object[] @@ -217,9 +198,9 @@ G_M46793_IG08: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs +[edx] mov eax, dword ptr [ecx+0x08] cmp dword ptr [edx+0x04], eax
- jbe SHORT G_M46793_IG10
+ jbe SHORT G_M46793_IG09
;; size=87 bbWeight=1 PerfScore 24.00
-G_M46793_IG09: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M46793_IG07: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byrefRegs=00000000 {}, byref, isz
lea edi, [eax+0x01] mov dword ptr [ecx+0x08], edi push ebx @@ -228,27 +209,43 @@ G_M46793_IG09: ; bbWeight=0.45, gcrefRegs=0000004E {ecx edx ebx esi}, byr ; gcrRegs -[edx] call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[ecx ebx]
- jmp SHORT G_M46793_IG11
+ jmp SHORT G_M46793_IG10
;; size=18 bbWeight=0.45 PerfScore 2.73
-G_M46793_IG10: ; bbWeight=0.05, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref
+G_M46793_IG08: ; bbWeight=0.05, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[ecx ebx] + mov edx, ebx + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx ebx] + jmp G_M46793_IG04 + ;; size=13 bbWeight=0.05 PerfScore 0.24 +G_M46793_IG09: ; bbWeight=0.05, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ecx ebx] mov edx, ebx ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx ebx] ;; size=8 bbWeight=0.05 PerfScore 0.15
-G_M46793_IG11: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M46793_IG10: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, esi ; gcrRegs +[eax] ;; size=2 bbWeight=1 PerfScore 0.25
-G_M46793_IG12: ; bbWeight=1, epilog, nogc, extend
+G_M46793_IG11: ; bbWeight=1, epilog, nogc, extend
pop ebx pop esi pop edi pop ebp ret ;; size=5 bbWeight=1 PerfScore 3.00
+G_M46793_IG12: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] +[ecx ebx] + mov edx, ebx + ; gcrRegs +[edx] + call [<unknown method>] + ; gcrRegs -[ecx edx ebx] + jmp G_M46793_IG06 + ;; size=13 bbWeight=0.05 PerfScore 0.24
-; Total bytes of code 389, prolog size 6, PerfScore 96.34, instruction count 106, allocated bytes for code 389 (MethodHash=cd974936) for method Microsoft.Extensions.Primitives.StringSegmentTest:get_CompareLesserData():Xunit.TheoryData`2[Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer] (FullOpts)
+; Total bytes of code 403, prolog size 6, PerfScore 91.74, instruction count 106, allocated bytes for code 403 (MethodHash=cd974936) for method Microsoft.Extensions.Primitives.StringSegmentTest:get_CompareLesserData():Xunit.TheoryData`2[Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer] (FullOpts)
; ============================================================

+46 (+3.60%) : 120390.dasm - System.Formats.Cbor.Tests.CborWriterTests:CoseKeyHelpersECDsaExportCosePublicKeyHappyPath(System.String,System.String,System.String,System.String,System.String) (FullOpts)

@@ -10,13 +10,13 @@ ; ; V00 arg0 [V00,T10] ( 3, 3 ) ref -> ecx class-hnd single-def <System.String> ; V01 arg1 [V01,T11] ( 3, 3 ) ref -> esi class-hnd single-def <System.String>
-; V02 arg2 [V02,T59] ( 1, 1 ) ref -> [ebp+0x10] class-hnd single-def <System.String> -; V03 arg3 [V03,T44] ( 2, 1.50) ref -> ebx class-hnd single-def <System.String>
+; V02 arg2 [V02,T57] ( 1, 1 ) ref -> [ebp+0x10] class-hnd single-def <System.String> +; V03 arg3 [V03,T42] ( 2, 1.50) ref -> ebx class-hnd single-def <System.String>
; V04 arg4 [V04,T22] ( 2, 2 ) ref -> edi class-hnd single-def <System.String> ; V05 loc0 [V05,T18] ( 3, 2.50) ref -> [ebp-0x10C] class-hnd spill-single-def <ubyte[]> ;* V06 loc1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[System.Security.Cryptography.HashAlgorithmName]>
-; V07 loc2 [V07,T32] ( 2, 2 ) struct (64) [ebp-0x60] do-not-enreg[S] must-init <System.Security.Cryptography.ECParameters> -; V08 loc3 [V08,T46] ( 3, 1 ) ref -> [ebp-0x110] class-hnd exact EH-live spill-single-def <System.Security.Cryptography.ECDsaWrapper>
+; V07 loc2 [V07,T31] ( 2, 2 ) struct (64) [ebp-0x60] do-not-enreg[S] must-init <System.Security.Cryptography.ECParameters> +; V08 loc3 [V08,T44] ( 3, 1 ) ref -> [ebp-0x110] class-hnd exact EH-live spill-single-def <System.Security.Cryptography.ECDsaWrapper>
;* V09 loc4 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <ubyte[]> ;* V10 loc5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Security.Cryptography.HashAlgorithmName]> ; V11 loc6 [V11 ] ( 5, 5 ) struct (64) [ebp-0xA0] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Security.Cryptography.ECParameters> @@ -46,12 +46,12 @@ ;* V35 tmp22 [V35 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref ;* V37 tmp24 [V37 ] ( 0, 0 ) struct ( 8) zero-ref <System.Nullable`1[int]>
-;* V38 tmp25 [V38,T60] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ubyte[]>
+;* V38 tmp25 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <ubyte[]>
; V39 tmp26 [V39 ] ( 5, 3.50) struct ( 8) [ebp-0xE8] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
-; V40 tmp27 [V40,T38] ( 4, 2.00) ref -> esi class-hnd "Inline return value spill temp" <ubyte[]> -; V41 tmp28 [V41,T45] ( 3, 1.50) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> -; V42 tmp29 [V42,T39] ( 3, 2.00) byref -> ecx single-def "Inlining Arg" -; V43 tmp30 [V43,T40] ( 3, 2.00) byref -> edx single-def "Inlining Arg"
+; V40 tmp27 [V40,T36] ( 4, 2.00) ref -> esi class-hnd "Inline return value spill temp" <ubyte[]> +; V41 tmp28 [V41,T43] ( 3, 1.50) ref -> esi class-hnd exact single-def "Inline stloc first use temp" <ubyte[]> +; V42 tmp29 [V42,T37] ( 3, 2.00) byref -> ecx single-def "Inlining Arg" +; V43 tmp30 [V43,T38] ( 3, 2.00) byref -> edx single-def "Inlining Arg"
; V44 tmp31 [V44,T19] ( 3, 2.50) int -> edi "Inlining Arg" ;* V45 tmp32 [V45 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]> ;* V46 tmp33 [V46 ] ( 0, 0 ) struct (12) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ubyte]> @@ -91,24 +91,24 @@ ;* V80 tmp67 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V81 tmp68 [V81 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V82 tmp69 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V83 tmp70 [V83,T33] ( 2, 2 ) int -> edi "Inlining Arg"
+; V83 tmp70 [V83,T32] ( 2, 2 ) int -> edi "Inlining Arg"
; V84 tmp71 [V84,T25] ( 2, 2 ) byref -> ebx single-def "Inlining Arg" ;* V85 tmp72 [V85 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V86 tmp73 [V86 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V87 tmp74 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V88 tmp75 [V88,T34] ( 2, 2 ) int -> esi "Inlining Arg"
+; V88 tmp75 [V88,T33] ( 2, 2 ) int -> esi "Inlining Arg"
; V89 tmp76 [V89,T26] ( 2, 2 ) byref -> [ebp-0x124] spill-single-def "Inlining Arg"
-; V90 tmp77 [V90,T35] ( 2, 2 ) ubyte -> [ebp-0x104] spill-single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP -; V91 tmp78 [V91,T27] ( 2, 2 ) ref -> [ebp-0x128] spill-single-def "field V06.value (fldOffset=0x4)" P-INDEP
+;* V90 tmp77 [V90 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP +;* V91 tmp78 [V91 ] ( 0, 0 ) ref -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
;* V92 tmp79 [V92 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP ;* V93 tmp80 [V93 ] ( 0, 0 ) ref -> zero-ref single-def "field V10.value (fldOffset=0x4)" P-INDEP
-; V94 tmp81 [V94,T28] ( 2, 2 ) ref -> esi single-def "field V12.X (fldOffset=0x0)" P-INDEP -; V95 tmp82 [V95,T29] ( 2, 2 ) ref -> eax single-def "field V12.Y (fldOffset=0x4)" P-INDEP -; V96 tmp83 [V96,T47] ( 2, 1 ) ref -> ebx single-def "field V13._name (fldOffset=0x0)" P-INDEP -;* V97 tmp84 [V97,T67] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.hasValue (fldOffset=0x0)" P-INDEP -; V98 tmp85 [V98,T48] ( 2, 1 ) ref -> ebx single-def "field V14.value (fldOffset=0x4)" P-INDEP -; V99 tmp86 [V99,T21] ( 3, 2 ) ubyte -> edx "field V15.hasValue (fldOffset=0x0)" P-INDEP -; V100 tmp87 [V100,T20] ( 3, 2 ) ref -> ebx "field V15.value (fldOffset=0x4)" P-INDEP
+; V94 tmp81 [V94,T27] ( 2, 2 ) ref -> esi single-def "field V12.X (fldOffset=0x0)" P-INDEP +; V95 tmp82 [V95,T28] ( 2, 2 ) ref -> eax single-def "field V12.Y (fldOffset=0x4)" P-INDEP +; V96 tmp83 [V96,T45] ( 2, 1 ) ref -> ebx single-def "field V13._name (fldOffset=0x0)" P-INDEP +;* V97 tmp84 [V97,T64] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.hasValue (fldOffset=0x0)" P-INDEP +; V98 tmp85 [V98,T46] ( 2, 1 ) ref -> edx single-def "field V14.value (fldOffset=0x4)" P-INDEP +; V99 tmp86 [V99,T21] ( 3, 2 ) ubyte -> [ebp-0x104] "field V15.hasValue (fldOffset=0x0)" P-INDEP +; V100 tmp87 [V100,T20] ( 3, 2 ) ref -> [ebp-0x128] "field V15.value (fldOffset=0x4)" P-INDEP
;* V101 tmp88 [V101 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._object (fldOffset=0x0)" P-INDEP ;* V102 tmp89 [V102 ] ( 0, 0 ) int -> zero-ref single-def "field V16._index (fldOffset=0x4)" P-INDEP ;* V103 tmp90 [V103 ] ( 0, 0 ) int -> zero-ref single-def "field V16._length (fldOffset=0x8)" P-INDEP @@ -116,22 +116,22 @@ ;* V105 tmp92 [V105 ] ( 0, 0 ) int -> zero-ref single-def "field V17._index (fldOffset=0x4)" P-INDEP ;* V106 tmp93 [V106 ] ( 0, 0 ) int -> zero-ref single-def "field V17._length (fldOffset=0x8)" P-INDEP ;* V107 tmp94 [V107 ] ( 0, 0 ) ref -> zero-ref "field V18._name (fldOffset=0x0)" P-INDEP
-;* V108 tmp95 [V108,T61] ( 0, 0 ) ref -> zero-ref single-def "field V23._disposedType (fldOffset=0x0)" P-INDEP -;* V109 tmp96 [V109,T62] ( 0, 0 ) ref -> zero-ref single-def "field V23.DefaultKeyType (fldOffset=0x4)" P-INDEP -;* V110 tmp97 [V110,T63] ( 0, 0 ) ref -> zero-ref single-def "field V23._lazyKey (fldOffset=0x8)" P-INDEP -;* V111 tmp98 [V111,T64] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._disposed (fldOffset=0xc)" P-INDEP -;* V112 tmp99 [V112,T65] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.hasValue (fldOffset=0x0)" P-INDEP -;* V113 tmp100 [V113,T66] ( 0, 0 ) int -> zero-ref single-def "field V35.value (fldOffset=0x4)" P-INDEP
+;* V108 tmp95 [V108,T58] ( 0, 0 ) ref -> zero-ref single-def "field V23._disposedType (fldOffset=0x0)" P-INDEP +;* V109 tmp96 [V109,T59] ( 0, 0 ) ref -> zero-ref single-def "field V23.DefaultKeyType (fldOffset=0x4)" P-INDEP +;* V110 tmp97 [V110,T60] ( 0, 0 ) ref -> zero-ref single-def "field V23._lazyKey (fldOffset=0x8)" P-INDEP +;* V111 tmp98 [V111,T61] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._disposed (fldOffset=0xc)" P-INDEP +;* V112 tmp99 [V112,T62] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.hasValue (fldOffset=0x0)" P-INDEP +;* V113 tmp100 [V113,T63] ( 0, 0 ) int -> zero-ref single-def "field V35.value (fldOffset=0x4)" P-INDEP
;* V114 tmp101 [V114 ] ( 0, 0 ) ubyte -> zero-ref "field V37.hasValue (fldOffset=0x0)" P-INDEP ;* V115 tmp102 [V115 ] ( 0, 0 ) int -> zero-ref "field V37.value (fldOffset=0x4)" P-INDEP ; V116 tmp103 [V116 ] ( 2, 1.50) byref -> [ebp-0xE8] do-not-enreg[X] addr-exposed "field V39._reference (fldOffset=0x0)" P-DEP ; V117 tmp104 [V117 ] ( 4, 3.00) int -> [ebp-0xE4] do-not-enreg[X] addr-exposed "field V39._length (fldOffset=0x4)" P-DEP ; V118 tmp105 [V118,T06] ( 11, 5.50) ref -> edi "field V45._object (fldOffset=0x0)" P-INDEP ;* V119 tmp106 [V119 ] ( 0, 0 ) int -> zero-ref "field V45._index (fldOffset=0x4)" P-INDEP
-; V120 tmp107 [V120,T41] ( 4, 1.50) int -> ebx "field V45._length (fldOffset=0x8)" P-INDEP
+; V120 tmp107 [V120,T39] ( 4, 1.50) int -> ebx "field V45._length (fldOffset=0x8)" P-INDEP
; V121 tmp108 [V121,T07] ( 11, 5.50) ref -> esi "field V46._object (fldOffset=0x0)" P-INDEP ;* V122 tmp109 [V122 ] ( 0, 0 ) int -> zero-ref "field V46._index (fldOffset=0x4)" P-INDEP
-; V123 tmp110 [V123,T42] ( 4, 1.50) int -> [ebp-0x108] "field V46._length (fldOffset=0x8)" P-INDEP
+; V123 tmp110 [V123,T40] ( 4, 1.50) int -> [ebp-0x108] "field V46._length (fldOffset=0x8)" P-INDEP
;* V124 tmp111 [V124 ] ( 0, 0 ) ref -> zero-ref single-def "field V48._object (fldOffset=0x0)" P-INDEP ;* V125 tmp112 [V125 ] ( 0, 0 ) int -> zero-ref single-def "field V48._index (fldOffset=0x4)" P-INDEP ;* V126 tmp113 [V126 ] ( 0, 0 ) int -> zero-ref single-def "field V48._length (fldOffset=0x8)" P-INDEP @@ -139,11 +139,11 @@ ;* V128 tmp115 [V128 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x4)" P-INDEP ;* V129 tmp116 [V129 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP ;* V130 tmp117 [V130 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x4)" P-INDEP
-; V131 tmp118 [V131,T30] ( 2, 2 ) byref -> eax single-def "field V54._reference (fldOffset=0x0)" P-INDEP -; V132 tmp119 [V132,T36] ( 2, 2 ) int -> edi single-def "field V54._length (fldOffset=0x4)" P-INDEP
+; V131 tmp118 [V131,T29] ( 2, 2 ) byref -> eax single-def "field V54._reference (fldOffset=0x0)" P-INDEP +; V132 tmp119 [V132,T34] ( 2, 2 ) int -> edi single-def "field V54._length (fldOffset=0x4)" P-INDEP
; V133 tmp120 [V133 ] ( 2, 1 ) byref -> [ebp-0xF4] do-not-enreg[X] addr-exposed "field V56._reference (fldOffset=0x0)" P-DEP ; V134 tmp121 [V134 ] ( 2, 1 ) int -> [ebp-0xF0] do-not-enreg[X] addr-exposed "field V56._length (fldOffset=0x4)" P-DEP
-; V135 tmp122 [V135,T49] ( 2, 1 ) byref -> ecx single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+; V135 tmp122 [V135,T47] ( 2, 1 ) byref -> ecx single-def "field V62._reference (fldOffset=0x0)" P-INDEP
;* V136 tmp123 [V136 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x4)" P-INDEP ;* V137 tmp124 [V137 ] ( 0, 0 ) ref -> zero-ref single-def "field V63._object (fldOffset=0x0)" P-INDEP ;* V138 tmp125 [V138 ] ( 0, 0 ) int -> zero-ref single-def "field V63._index (fldOffset=0x4)" P-INDEP @@ -152,29 +152,29 @@ ;* V141 tmp128 [V141 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x4)" P-INDEP ;* V142 tmp129 [V142 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP ;* V143 tmp130 [V143 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x4)" P-INDEP
-; V144 tmp131 [V144,T31] ( 2, 2 ) byref -> eax single-def "field V69._reference (fldOffset=0x0)" P-INDEP -; V145 tmp132 [V145,T37] ( 2, 2 ) int -> esi single-def "field V69._length (fldOffset=0x4)" P-INDEP
+; V144 tmp131 [V144,T30] ( 2, 2 ) byref -> eax single-def "field V69._reference (fldOffset=0x0)" P-INDEP +; V145 tmp132 [V145,T35] ( 2, 2 ) int -> esi single-def "field V69._length (fldOffset=0x4)" P-INDEP
; V146 tmp133 [V146 ] ( 2, 1 ) byref -> [ebp-0x100] do-not-enreg[X] addr-exposed "field V71._reference (fldOffset=0x0)" P-DEP ; V147 tmp134 [V147 ] ( 2, 1 ) int -> [ebp-0xFC] do-not-enreg[X] addr-exposed "field V71._length (fldOffset=0x4)" P-DEP
-; V148 tmp135 [V148,T50] ( 2, 1 ) byref -> ebx single-def "field V77._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp135 [V148,T48] ( 2, 1 ) byref -> ebx single-def "field V77._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp136 [V149 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x4)" P-INDEP
-; V150 tmp137 [V150,T51] ( 2, 1 ) byref -> ebx single-def "field V79._reference (fldOffset=0x0)" P-INDEP -; V151 tmp138 [V151,T55] ( 2, 1 ) int -> edi single-def "field V79._length (fldOffset=0x4)" P-INDEP
+; V150 tmp137 [V150,T49] ( 2, 1 ) byref -> ebx single-def "field V79._reference (fldOffset=0x0)" P-INDEP +; V151 tmp138 [V151,T53] ( 2, 1 ) int -> edi single-def "field V79._length (fldOffset=0x4)" P-INDEP
;* V152 tmp139 [V152 ] ( 0, 0 ) byref -> zero-ref "field V80._reference (fldOffset=0x0)" P-INDEP ;* V153 tmp140 [V153 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x4)" P-INDEP
-; V154 tmp141 [V154,T52] ( 2, 1 ) byref -> ebx single-def "field V81._reference (fldOffset=0x0)" P-INDEP -; V155 tmp142 [V155,T56] ( 2, 1 ) int -> edi single-def "field V81._length (fldOffset=0x4)" P-INDEP
+; V154 tmp141 [V154,T50] ( 2, 1 ) byref -> ebx single-def "field V81._reference (fldOffset=0x0)" P-INDEP +; V155 tmp142 [V155,T54] ( 2, 1 ) int -> edi single-def "field V81._length (fldOffset=0x4)" P-INDEP
;* V156 tmp143 [V156 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP ;* V157 tmp144 [V157 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x4)" P-INDEP
-; V158 tmp145 [V158,T53] ( 2, 1 ) byref -> ecx "field V85._reference (fldOffset=0x0)" P-INDEP -; V159 tmp146 [V159,T57] ( 2, 1 ) int -> esi "field V85._length (fldOffset=0x4)" P-INDEP -; V160 tmp147 [V160,T54] ( 2, 1 ) byref -> ecx single-def "field V86._reference (fldOffset=0x0)" P-INDEP -; V161 tmp148 [V161,T58] ( 2, 1 ) int -> esi single-def "field V86._length (fldOffset=0x4)" P-INDEP
+; V158 tmp145 [V158,T51] ( 2, 1 ) byref -> ecx "field V85._reference (fldOffset=0x0)" P-INDEP +; V159 tmp146 [V159,T55] ( 2, 1 ) int -> esi "field V85._length (fldOffset=0x4)" P-INDEP +; V160 tmp147 [V160,T52] ( 2, 1 ) byref -> ecx single-def "field V86._reference (fldOffset=0x0)" P-INDEP +; V161 tmp148 [V161,T56] ( 2, 1 ) int -> esi single-def "field V86._length (fldOffset=0x4)" P-INDEP
;* V162 tmp149 [V162 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP ;* V163 tmp150 [V163 ] ( 0, 0 ) int -> zero-ref single-def "field V87._length (fldOffset=0x4)" P-INDEP ; V164 tmp151 [V164,T05] ( 3, 6 ) ref -> eax single-def "argument with side effect" ; V165 EHSlots [V165 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V166 cse0 [V166,T43] ( 3, 1.50) ref -> eax "CSE - conservative"
+; V166 cse0 [V166,T41] ( 3, 1.50) ref -> eax "CSE - conservative"
; ; Lcl frame size = 284 @@ -211,29 +211,36 @@ G_M24888_IG02: ; bbWeight=1, gcrefRegs=000000CA {ecx ebx esi edi}, byrefR ;; size=16 bbWeight=1 PerfScore 5.25 G_M24888_IG03: ; bbWeight=0.50, gcVars=000000000000000000040000 {V05}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax ebx]
- xor edx, edx
xor ebx, ebx
- ; gcrRegs +[ebx]
+ xor edx, edx + ; gcrRegs +[edx]
jmp SHORT G_M24888_IG05 ;; size=6 bbWeight=0.50 PerfScore 1.25 G_M24888_IG04: ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
- mov edx, 1 - ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M24888_IG05: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref - mov byte ptr [ebp-0x104], dl - mov gword ptr [ebp-0x128], ebx - ; GC ptr vars +{V91}
+ ; gcrRegs -[edx] +[ebx] + mov edx, ebx + ; gcrRegs +[edx] + mov byte ptr [ebp-0x104], 1 + mov gword ptr [ebp-0x128], edx + ; GC ptr vars +{V100} + mov edx, gword ptr [ebp-0x128] + movzx ebx, byte ptr [ebp-0x104] + ; gcrRegs -[ebx] + ;; size=28 bbWeight=0.50 PerfScore 2.12 +G_M24888_IG05: ; bbWeight=1, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref + ; GC ptr vars -{V100}
vxorps ymm0, ymm0, ymm0 vmovdqu ymmword ptr [ebp-0xA0], ymm0 vmovdqu ymmword ptr [ebp-0x80], ymm0 test edi, edi je G_M24888_IG39
+ mov gword ptr [ebp-0x128], edx + ; GC ptr vars +{V100}
push edi lea ecx, [ebp-0x94] xor edx, edx
- ; gcrRegs +[edx]
call [<unknown method>]
- ; gcrRegs -[edx ebx edi]
+ ; gcrRegs -[edx edi]
mov ecx, esi ; gcrRegs +[ecx] call [Test.Cryptography.ByteUtils:HexToByteArray(System.String):ubyte[]] @@ -261,8 +268,8 @@ G_M24888_IG05: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs= mov gword ptr [esi+0x10], 0xD1FFAB1E xor eax, eax mov gword ptr [esi+0x14], eax
- ;; size=123 bbWeight=1 PerfScore 49.83 -G_M24888_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=117 bbWeight=1 PerfScore 48.83 +G_M24888_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] mov gword ptr [esi+0x18], eax mov byte ptr [esi+0x1C], 0 @@ -274,8 +281,8 @@ G_M24888_IG06: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[eax] ; byrRegs -[edx] cmp dword ptr [esi+0x08], 521
- je SHORT G_M24888_IG10 - ;; size=30 bbWeight=1 PerfScore 10.50
+ je G_M24888_IG10 + ;; size=34 bbWeight=1 PerfScore 10.50
G_M24888_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz mov ecx, esi ; gcrRegs +[ecx] @@ -287,7 +294,7 @@ G_M24888_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 mov eax, gword ptr [edi+0x08] ; gcrRegs +[eax] test eax, eax
- je SHORT G_M24888_IG10
+ je G_M24888_IG10
mov gword ptr [ebp-0x114], eax ; GC ptr vars +{V25} mov edx, gword ptr [eax+0x08] @@ -296,6 +303,7 @@ G_M24888_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; GC ptr vars +{V26} test edx, edx je SHORT G_M24888_IG08
+ mov dword ptr [ebp-0x104], ebx
mov ecx, edx ; gcrRegs +[ecx] mov edx, 1 @@ -308,7 +316,8 @@ G_M24888_IG07: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000 ; GC ptr vars -{V26} call [System.GC:SuppressFinalize(System.Object)] ; gcrRegs -[ecx] ...

realworld.run.windows.x86.checked.mch

-25 (-1.77%) : 28738.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)

@@ -5,158 +5,152 @@ ; ebp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 120 single block inlinees; 45 inlinees without PGO data
+; 0 inlinees with PGO data; 125 single block inlinees; 45 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 65, 33.50) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
-; V01 arg1 [V01,T11] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V02 loc0 [V02,T12] ( 6, 4.50) int -> ebx single-def
+; V01 arg1 [V01,T12] ( 3, 3 ) ref -> edx class-hnd single-def <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V02 loc0 [V02,T13] ( 6, 4.50) int -> ebx single-def
;* V03 tmp0 [V03 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V04 tmp1 [V04,T50] ( 2, 2 ) int -> edi "Inlining Arg" -; V05 tmp2 [V05,T56] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V06 tmp3 [V06,T13] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
+; V04 tmp1 [V04,T52] ( 2, 2 ) int -> edi "Inlining Arg" +; V05 tmp2 [V05,T58] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V06 tmp3 [V06,T14] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock>
; V07 tmp4 [V07,T02] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> ;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V10 tmp7 [V10,T20] ( 6, 3 ) int -> eax "Inline stloc first use temp" ;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V13 tmp10 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V17 tmp14 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V20 tmp17 [V20,T03] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V21 tmp18 [V21,T38] ( 3, 3 ) int -> eax "impAppendStmt" -;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V23 tmp20 [V23,T63] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V24 tmp21 [V24,T39] ( 3, 3 ) int -> edx "Inlining Arg" -; V25 tmp22 [V25,T26] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V27 tmp24 [V27,T51] ( 2, 2 ) int -> edi "Inlining Arg" -; V28 tmp25 [V28,T57] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V29 tmp26 [V29,T14] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V30 tmp27 [V30,T04] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V32 tmp29 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V33 tmp30 [V33,T21] ( 6, 3 ) int -> eax "Inline stloc first use temp" -;* V34 tmp31 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V35 tmp32 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V36 tmp33 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V16 tmp13 [V16 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V18 tmp15 [V18,T03] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V19 tmp16 [V19,T38] ( 3, 3 ) int -> eax "impAppendStmt" +;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V21 tmp18 [V21,T65] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V22 tmp19 [V22,T39] ( 3, 3 ) int -> edx "Inlining Arg" +; V23 tmp20 [V23,T26] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V25 tmp22 [V25,T53] ( 2, 2 ) int -> edi "Inlining Arg" +; V26 tmp23 [V26,T59] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V27 tmp24 [V27,T15] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V28 tmp25 [V28,T04] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V31 tmp28 [V31,T21] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V32 tmp29 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V34 tmp31 [V34 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V38 tmp35 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V39 tmp36 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V40 tmp37 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V42 tmp39 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V43 tmp40 [V43,T05] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V44 tmp41 [V44,T40] ( 3, 3 ) int -> eax "impAppendStmt" -;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V46 tmp43 [V46,T64] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V47 tmp44 [V47,T41] ( 3, 3 ) int -> edx "Inlining Arg" -; V48 tmp45 [V48,T27] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V49 tmp46 [V49 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V50 tmp47 [V50,T52] ( 2, 2 ) int -> edi "Inlining Arg" -; V51 tmp48 [V51,T58] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V52 tmp49 [V52,T15] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V53 tmp50 [V53,T06] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V39 tmp36 [V39,T05] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V40 tmp37 [V40,T40] ( 3, 3 ) int -> eax "impAppendStmt" +;* V41 tmp38 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V42 tmp39 [V42,T66] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V43 tmp40 [V43,T41] ( 3, 3 ) int -> edx "Inlining Arg" +; V44 tmp41 [V44,T27] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V45 tmp42 [V45 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V46 tmp43 [V46,T54] ( 2, 2 ) int -> edi "Inlining Arg" +; V47 tmp44 [V47,T60] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V48 tmp45 [V48,T16] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V49 tmp46 [V49,T06] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V50 tmp47 [V50 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V51 tmp48 [V51 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V52 tmp49 [V52,T22] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V53 tmp50 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V54 tmp51 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V55 tmp52 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V56 tmp53 [V56,T22] ( 6, 3 ) int -> eax "Inline stloc first use temp" -;* V57 tmp54 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V56 tmp53 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V57 tmp54 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V58 tmp55 [V58 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V59 tmp56 [V59 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V60 tmp57 [V60 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V61 tmp58 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V62 tmp59 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V64 tmp61 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V65 tmp62 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V66 tmp63 [V66,T07] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V67 tmp64 [V67,T42] ( 3, 3 ) int -> eax "impAppendStmt" -;* V68 tmp65 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V69 tmp66 [V69,T65] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V70 tmp67 [V70,T43] ( 3, 3 ) int -> edx "Inlining Arg" -; V71 tmp68 [V71,T28] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" -;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V73 tmp70 [V73,T53] ( 2, 2 ) int -> edi "Inlining Arg" -; V74 tmp71 [V74,T59] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V75 tmp72 [V75,T16] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V76 tmp73 [V76,T08] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V77 tmp74 [V77 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V59 tmp56 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V60 tmp57 [V60,T07] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V61 tmp58 [V61,T42] ( 3, 3 ) int -> eax "impAppendStmt" +;* V62 tmp59 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V63 tmp60 [V63,T67] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V64 tmp61 [V64,T43] ( 3, 3 ) int -> edx "Inlining Arg" +; V65 tmp62 [V65,T28] ( 3, 3 ) byref -> ecx single-def "Inlining Arg" +;* V66 tmp63 [V66 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V67 tmp64 [V67,T55] ( 2, 2 ) int -> edi "Inlining Arg" +; V68 tmp65 [V68,T61] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V69 tmp66 [V69,T17] ( 4, 4 ) ref -> ebx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V70 tmp67 [V70,T08] ( 6, 6 ) ref -> ebx class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V71 tmp68 [V71 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V72 tmp69 [V72 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V73 tmp70 [V73,T23] ( 6, 3 ) int -> eax "Inline stloc first use temp" +;* V74 tmp71 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V75 tmp72 [V75 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V76 tmp73 [V76 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V77 tmp74 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V78 tmp75 [V78 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V79 tmp76 [V79,T23] ( 6, 3 ) int -> eax "Inline stloc first use temp"
+;* V79 tmp76 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V80 tmp77 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V81 tmp78 [V81 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V82 tmp79 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V84 tmp81 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V85 tmp82 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V86 tmp83 [V86 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V88 tmp85 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V89 tmp86 [V89,T29] ( 3, 3 ) byref -> eax single-def "Inlining Arg" -;* V90 tmp87 [V90 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V91 tmp88 [V91,T54] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "Inlining Arg" -; V92 tmp89 [V92,T60] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V93 tmp90 [V93,T17] ( 4, 4 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V94 tmp91 [V94,T09] ( 6, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V95 tmp92 [V95 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V81 tmp78 [V81,T09] ( 6, 6 ) byref -> eax single-def "Inlining Arg" +; V82 tmp79 [V82,T44] ( 3, 3 ) int -> edx "impAppendStmt" +;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V84 tmp81 [V84,T68] ( 2, 1 ) int -> edx "Inline return value spill temp" +; V85 tmp82 [V85,T45] ( 3, 3 ) int -> ecx "Inlining Arg" +; V86 tmp83 [V86,T29] ( 3, 3 ) byref -> eax single-def "Inlining Arg" +;* V87 tmp84 [V87 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V88 tmp85 [V88,T56] ( 2, 2 ) int -> [ebp-0x10] spill-single-def "Inlining Arg" +; V89 tmp86 [V89,T62] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V90 tmp87 [V90,T18] ( 4, 4 ) ref -> [ebp-0x14] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V91 tmp88 [V91,T10] ( 6, 6 ) ref -> [ebp-0x18] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V92 tmp89 [V92 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V93 tmp90 [V93 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V94 tmp91 [V94,T24] ( 6, 3 ) int -> edx "Inline stloc first use temp" +;* V95 tmp92 [V95 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
;* V96 tmp93 [V96 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V97 tmp94 [V97,T24] ( 6, 3 ) int -> edx "Inline stloc first use temp"
+;* V97 tmp94 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V98 tmp95 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V99 tmp96 [V99 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V100 tmp97 [V100 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V101 tmp98 [V101 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V102 tmp99 [V102 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V103 tmp100 [V103 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V104 tmp101 [V104 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V105 tmp102 [V105 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V106 tmp103 [V106 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V107 tmp104 [V107,T30] ( 3, 3 ) byref -> edi single-def "Inlining Arg" -;* V108 tmp105 [V108 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -; V109 tmp106 [V109,T61] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V110 tmp107 [V110,T18] ( 4, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V111 tmp108 [V111,T10] ( 6, 6 ) ref -> esi class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V112 tmp109 [V112 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" -;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V114 tmp111 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V115 tmp112 [V115,T25] ( 6, 3 ) int -> edi "Inline stloc first use temp" -;* V116 tmp113 [V116 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V117 tmp114 [V117 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V118 tmp115 [V118 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V119 tmp116 [V119,T55] ( 2, 2 ) int -> edi "Inlining Arg" -; V120 tmp117 [V120,T62] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V121 tmp118 [V121,T19] ( 4, 4 ) ref -> [ebp-0x1C] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V122 tmp119 [V122,T31] ( 3, 3 ) ref -> [ebp-0x20] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V123 tmp120 [V123 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V124 tmp121 [V124 ] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V100 tmp97 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V101 tmp98 [V101 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V102 tmp99 [V102,T30] ( 3, 3 ) byref -> edi single-def "Inlining Arg" +;* V103 tmp100 [V103 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +; V104 tmp101 [V104,T63] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V105 tmp102 [V105,T19] ( 4, 4 ) ref -> esi class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V106 tmp103 [V106,T11] ( 6, 6 ) ref -> esi class-hnd exact single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V107 tmp104 [V107 ] ( 0, 0 ) byte -> zero-ref "Inlining Arg" +;* V108 tmp105 [V108 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V109 tmp106 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +; V110 tmp107 [V110,T25] ( 6, 3 ) int -> edi "Inline stloc first use temp" +;* V111 tmp108 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V112 tmp109 [V112 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V114 tmp111 [V114,T57] ( 2, 2 ) int -> edi "Inlining Arg" +; V115 tmp112 [V115,T64] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V116 tmp113 [V116,T31] ( 3, 3 ) ref -> [ebp-0x1C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V117 tmp114 [V117 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V118 tmp115 [V118 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V119 tmp116 [V119 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V120 tmp117 [V120,T32] ( 3, 3 ) ref -> ecx single-def "arr expr" +; V121 tmp118 [V121,T33] ( 3, 3 ) ref -> ecx single-def "arr expr" +;* V122 tmp119 [V122 ] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V123 tmp120 [V123 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V124 tmp121 [V124,T34] ( 3, 3 ) ref -> edx single-def "arr expr"
;* V125 tmp122 [V125 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V126 tmp123 [V126,T32] ( 3, 3 ) ref -> ecx single-def "arr expr" -; V127 tmp124 [V127,T33] ( 3, 3 ) ref -> ecx single-def "arr expr"
+;* V126 tmp123 [V126 ] ( 0, 0 ) ref -> zero-ref "arr expr" +; V127 tmp124 [V127,T35] ( 3, 3 ) ref -> ecx single-def "arr expr"
;* V128 tmp125 [V128 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V129 tmp126 [V129 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V130 tmp127 [V130,T34] ( 3, 3 ) ref -> ecx single-def "arr expr"
+; V130 tmp127 [V130,T36] ( 3, 3 ) ref -> ecx single-def "arr expr"
...

-15 (-1.76%) : 14529.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman:CompressBlock():this (FullOpts)

@@ -108,8 +108,7 @@ G_M715_IG02: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 { jle G_M715_IG16 ;; size=27 bbWeight=1 PerfScore 12.25 G_M715_IG03: ; bbWeight=4, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref
- movsx ecx, word ptr [edi+2*ebx] - movzx ecx, cl
+ movzx ecx, byte ptr [edi+2*ebx]
mov dword ptr [ebp-0x1C], ecx mov dword ptr [ebp-0x18], ebx movsx esi, word ptr [esi+2*ebx] @@ -117,7 +116,7 @@ G_M715_IG03: ; bbWeight=4, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 mov dword ptr [ebp-0x20], edi test esi, esi je G_M715_IG14
- ;; size=31 bbWeight=4 PerfScore 52.00
+ ;; size=28 bbWeight=4 PerfScore 43.00
G_M715_IG04: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz mov esi, ecx cmp esi, 255 @@ -149,8 +148,7 @@ G_M715_IG08: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 mov esi, dword ptr [ecx+0x24] mov ecx, dword ptr [ebp-0x2C] ; gcrRegs -[ecx]
- movsx esi, word ptr [esi+2*ecx] - movzx esi, si
+ movzx esi, word ptr [esi+2*ecx]
mov dword ptr [ebp-0x30], esi mov esi, gword ptr [ebp-0x5C] ; gcrRegs +[esi] @@ -185,7 +183,7 @@ G_M715_IG08: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 mov byte ptr [edi+esi], cl shr dword ptr [edx+0x14], 16 add dword ptr [edx+0x18], -16
- ;; size=117 bbWeight=2 PerfScore 114.00
+ ;; size=114 bbWeight=2 PerfScore 109.50
G_M715_IG09: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V14} mov esi, dword ptr [ebp-0x2C] @@ -269,8 +267,7 @@ G_M715_IG12: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 mov esi, dword ptr [ecx+0x24] mov ecx, dword ptr [ebp-0x28] ; gcrRegs -[ecx]
- movsx esi, word ptr [esi+2*ecx] - movzx esi, si
+ movzx esi, word ptr [esi+2*ecx]
mov dword ptr [ebp-0x40], esi mov ecx, gword ptr [ebp-0x64] ; gcrRegs +[ecx] @@ -305,7 +302,7 @@ G_M715_IG12: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 mov byte ptr [edi+esi], cl shr dword ptr [edx+0x14], 16 add dword ptr [edx+0x18], -16
- ;; size=120 bbWeight=2 PerfScore 111.50
+ ;; size=117 bbWeight=2 PerfScore 107.00
G_M715_IG13: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref, isz ; GC ptr vars -{V31} mov esi, dword ptr [ebp-0x28] @@ -354,8 +351,7 @@ G_M715_IG14: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 mov esi, gword ptr [eax+0x04] ; gcrRegs +[esi] mov edi, dword ptr [esi+0x24]
- movsx edi, word ptr [edi+2*ecx] - movzx edi, di
+ movzx edi, word ptr [edi+2*ecx]
mov esi, dword ptr [esi+0x30] ; gcrRegs -[esi] movzx ecx, byte ptr [esi+ecx] @@ -384,7 +380,7 @@ G_M715_IG14: ; bbWeight=2, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 mov byte ptr [edi+esi], cl shr dword ptr [edx+0x14], 16 add dword ptr [edx+0x18], -16
- ;; size=95 bbWeight=2 PerfScore 98.50
+ ;; size=92 bbWeight=2 PerfScore 94.00
G_M715_IG15: ; bbWeight=4, gcrefRegs=00000005 {eax edx}, byrefRegs=00000000 {}, byref mov ebx, dword ptr [ebp-0x18] inc ebx @@ -398,8 +394,7 @@ G_M715_IG16: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 ; gcrRegs +[ecx] mov eax, dword ptr [ecx+0x24] ; gcrRegs -[eax]
- movsx eax, word ptr [eax+0x200] - movzx eax, ax
+ movzx eax, word ptr [eax+0x200]
mov ecx, dword ptr [ecx+0x30] ; gcrRegs -[ecx] movzx ebx, byte ptr [ecx+0x100] @@ -411,7 +406,7 @@ G_M715_IG16: ; bbWeight=1, gcrefRegs=00000005 {eax edx}, byrefRegs=000000 mov dword ptr [edx+0x18], esi cmp esi, 16 jl SHORT G_M715_IG18
- ;; size=46 bbWeight=1 PerfScore 22.00
+ ;; size=43 bbWeight=1 PerfScore 19.75
G_M715_IG17: ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref mov eax, dword ptr [edx+0x08] mov ecx, dword ptr [edx+0x10] @@ -438,6 +433,6 @@ G_M715_IG18: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, ret ;; size=8 bbWeight=1 PerfScore 3.50
-; Total bytes of code 851, prolog size 11, PerfScore 759.25, instruction count 285, allocated bytes for code 851 (MethodHash=c6a5fd34) for method SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman:CompressBlock():this (FullOpts)
+; Total bytes of code 836, prolog size 11, PerfScore 734.50, instruction count 280, allocated bytes for code 836 (MethodHash=c6a5fd34) for method SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman:CompressBlock():this (FullOpts)
; ============================================================

-3 (-1.53%) : 15119.dasm - Microsoft.ML.Transforms.HashingTransformer+<>cDisplayClass43_0`2[double,Microsoft.ML.Transforms.HashingTransformer+HashDouble]:b0(byref):this (FullOpts)

@@ -9,22 +9,22 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 7, 7 ) ref -> esi this class-hnd single-def <Microsoft.ML.Transforms.HashingTransformer+<>c__DisplayClass43_0`2[double,Microsoft.ML.Transforms.HashingTransformer+HashDouble]>
-; V01 arg1 [V01,T04] ( 3, 3 ) byref -> edi single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) byref -> edi single-def
;* V02 tmp0 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V03 tmp1 [V03,T07] ( 2, 3 ) int -> eax "Inlining Arg" -; V04 tmp2 [V04,T08] ( 2, 3 ) int -> edx "Inlining Arg" -; V05 tmp3 [V05,T06] ( 2, 4 ) byref -> esi single-def "Inlining Arg" -; V06 tmp4 [V06,T10] ( 3, 2 ) int -> ecx "Inline return value spill temp"
+; V03 tmp1 [V03,T05] ( 2, 3 ) int -> eax "Inlining Arg" +; V04 tmp2 [V04,T06] ( 2, 3 ) int -> edx "Inlining Arg" +; V05 tmp3 [V05,T04] ( 2, 4 ) byref -> esi single-def "Inlining Arg" +; V06 tmp4 [V06,T08] ( 3, 2 ) int -> ecx "Inline return value spill temp"
; V07 tmp5 [V07,T19] ( 3, 1.50) double -> mm0 ;* V08 tmp6 [V08 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V09 tmp7 [V09,T09] ( 4, 2 ) int -> ecx "Inline stloc first use temp"
+; V09 tmp7 [V09,T07] ( 5, 2.50) int -> eax "Inline stloc first use temp"
; V10 tmp8 [V10,T13] ( 3, 1.50) int -> esi "Inline stloc first use temp" ; V11 tmp9 [V11,T17] ( 3, 6 ) double -> mm1 "Inlining Arg" ; V12 tmp10 [V12,T14] ( 3, 1.50) struct ( 8) [ebp-0x10] do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.ML.Internal.Utilities.FloatUtils+DoubleBits>
-; V13 tmp11 [V13,T11] ( 2, 2 ) int -> ecx "Inlining Arg" -; V14 tmp12 [V14,T03] ( 5, 5 ) int -> eax "Inlining Arg" -; V15 tmp13 [V15,T12] ( 2, 2 ) int -> ecx "Inlining Arg" -; V16 tmp14 [V16,T05] ( 4, 4 ) int -> ecx "Inlining Arg"
+; V13 tmp11 [V13,T09] ( 2, 2 ) int -> ecx "Inlining Arg" +; V14 tmp12 [V14,T10] ( 2, 2 ) int -> eax "Inlining Arg" +; V15 tmp13 [V15,T11] ( 2, 2 ) int -> ecx "Inlining Arg" +; V16 tmp14 [V16,T12] ( 2, 2 ) int -> eax "Inlining Arg"
; V17 tmp15 [V17,T01] ( 6, 6 ) int -> eax "Inlining Arg" ; V18 cse0 [V18,T18] ( 4, 3 ) double -> mm0 "CSE - moderate" ; V19 rat0 [V19,T15] ( 2, 1 ) int -> ecx "field V08.lo (fldOffset=0x0)" P-INDEP @@ -94,22 +94,21 @@ G_M22555_IG07: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 rol eax, 13 lea eax, [eax+4*eax] add eax, 0xD1FFAB1E
- mov ecx, eax
test esi, esi je SHORT G_M22555_IG08 imul ecx, esi, 0xD1FFAB1E rol ecx, 15 imul ecx, ecx, 0xD1FFAB1E
- xor ecx, eax - rol ecx, 13 - lea ecx, [ecx+4*ecx] - add ecx, 0xD1FFAB1E - ;; size=74 bbWeight=0.50 PerfScore 8.25 -G_M22555_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref - mov eax, ecx - shr eax, 16
xor eax, ecx
- imul eax, eax, 0xD1FFAB1E
+ rol eax, 13 + lea eax, [eax+4*eax] + add eax, 0xD1FFAB1E + ;; size=71 bbWeight=0.50 PerfScore 8.12 +G_M22555_IG08: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref + mov ecx, eax + shr ecx, 16 + xor ecx, eax + imul eax, ecx, 0xD1FFAB1E
mov ecx, eax shr ecx, 13 xor ecx, eax @@ -131,6 +130,6 @@ G_M22555_IG10: ; bbWeight=1, epilog, nogc, extend ret ;; size=7 bbWeight=1 PerfScore 3.00
-; Total bytes of code 196, prolog size 11, PerfScore 45.46, instruction count 67, allocated bytes for code 196 (MethodHash=2e53a7e4) for method Microsoft.ML.Transforms.HashingTransformer+<>c__DisplayClass43_0`2[double,Microsoft.ML.Transforms.HashingTransformer+HashDouble]:<MakeScalarHashGetter>b__0(byref):this (FullOpts)
+; Total bytes of code 193, prolog size 11, PerfScore 45.33, instruction count 66, allocated bytes for code 193 (MethodHash=2e53a7e4) for method Microsoft.ML.Transforms.HashingTransformer+<>c__DisplayClass43_0`2[double,Microsoft.ML.Transforms.HashingTransformer+HashDouble]:<MakeScalarHashGetter>b__0(byref):this (FullOpts)
; ============================================================

+45 (+1.20%) : 29330.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoweredConditionalAccessExpression(Microsoft.CodeAnalysis.CSharp.BoundLoweredConditionalAccess,ubyte):this (FullOpts)

@@ -5,291 +5,280 @@ ; ebp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 194 single block inlinees; 59 inlinees without PGO data
+; 0 inlinees with PGO data; 194 single block inlinees; 61 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 54, 28 ) ref -> esi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator> ; V01 arg1 [V01,T13] ( 12, 7.50) ref -> edi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundLoweredConditionalAccess>
-; V02 arg2 [V02,T85] ( 5, 2.50) ubyte -> [ebp+0x08] single-def -; V03 loc0 [V03,T01] ( 21, 12 ) ref -> [ebp-0x5C] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> -; V04 loc1 [V04,T12] ( 18, 9.25) ref -> [ebp-0x60] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V05 loc2 [V05,T14] ( 12, 6 ) ref -> [ebp-0x64] class-hnd <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V06 loc3 [V06,T91] ( 4, 2 ) ref -> [ebp-0x68] class-hnd exact spill-single-def <System.Object> -; V07 loc4 [V07,T126] ( 3, 1.50) ref -> [ebp-0x6C] class-hnd exact spill-single-def <System.Object> -; V08 loc5 [V08,T40] ( 7, 3.50) ref -> [ebp-0x70] class-hnd <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> -; V09 loc6 [V09,T92] ( 4, 2 ) ubyte -> [ebp-0x10] spill-single-def
+; V02 arg2 [V02,T87] ( 5, 2.50) ubyte -> [ebp+0x08] single-def +; V03 loc0 [V03,T01] ( 21, 12 ) ref -> [ebp-0x60] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression> +; V04 loc1 [V04,T12] ( 18, 9.25) ref -> [ebp-0x64] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V05 loc2 [V05,T14] ( 12, 6 ) ref -> [ebp-0x68] class-hnd <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V06 loc3 [V06,T93] ( 4, 2 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def <System.Object> +; V07 loc4 [V07,T128] ( 3, 1.50) ref -> [ebp-0x70] class-hnd exact spill-single-def <System.Object> +; V08 loc5 [V08,T40] ( 7, 3.50) ref -> [ebp-0x74] class-hnd <Microsoft.CodeAnalysis.CodeGen.LocalDefinition> +; V09 loc6 [V09,T94] ( 4, 2 ) ubyte -> [ebp-0x10] spill-single-def
; V10 loc7 [V10,T41] ( 6, 3 ) ubyte -> [ebp-0x14] spill-single-def
-; V11 loc8 [V11,T127] ( 3, 1.50) ref -> [ebp-0x74] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> -; V12 loc9 [V12,T128] ( 3, 1.50) ref -> [ebp-0x78] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V11 loc8 [V11,T129] ( 3, 1.50) ref -> [ebp-0x78] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol> +; V12 loc9 [V12,T130] ( 3, 1.50) ref -> [ebp-0x7C] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V13 loc10 [V13 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]> ;* V14 loc11 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 tmp0 [V15,T26] ( 3, 5 ) ref -> eax class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.ConstantValue>
+; V15 tmp0 [V15,T27] ( 3, 5 ) ref -> eax class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.ConstantValue>
;* V16 tmp1 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V17 tmp2 [V17,T157] ( 0, 0 ) int -> zero-ref
+;* V17 tmp2 [V17,T158] ( 0, 0 ) int -> zero-ref
;* V18 tmp3 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Object> ;* V19 tmp4 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Object>
-; V20 tmp5 [V20,T139] ( 3, 1.50) int -> ecx -; V21 tmp6 [V21,T93] ( 4, 2 ) int -> registers -; V22 tmp7 [V22,T94] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" -;* V23 tmp8 [V23,T154] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundLocal> -; V24 tmp9 [V24,T90] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" -;* V25 tmp10 [V25,T147] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol> -; V26 tmp11 [V26,T95] ( 2, 2 ) ref -> edx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol> -;* V27 tmp12 [V27,T158] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V28 tmp13 [V28,T46] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]> -; V29 tmp14 [V29,T47] ( 3, 3 ) ref -> [ebp-0x7C] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> -; V30 tmp15 [V30,T02] ( 12, 12 ) ref -> [ebp-0x80] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
+; V20 tmp5 [V20,T141] ( 3, 1.50) int -> ecx +; V21 tmp6 [V21,T95] ( 4, 2 ) int -> registers +; V22 tmp7 [V22,T96] ( 3, 2 ) int -> ecx "fgMakeTemp is creating a new local variable" +;* V23 tmp8 [V23,T155] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundLocal> +; V24 tmp9 [V24,T92] ( 3, 2.50) int -> ecx "fgMakeTemp is creating a new local variable" +;* V25 tmp10 [V25,T148] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol> +; V26 tmp11 [V26,T97] ( 2, 2 ) ref -> edx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol> +;* V27 tmp12 [V27,T159] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V28 tmp13 [V28,T47] ( 3, 3 ) ref -> ecx class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]> +; V29 tmp14 [V29,T48] ( 3, 3 ) ref -> [ebp-0x80] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> +; V30 tmp15 [V30,T02] ( 12, 12 ) ref -> [ebp-0x84] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder>
;* V31 tmp16 [V31 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V32 tmp17 [V32,T120] ( 2, 2 ) int -> [ebp-0x18] spill-single-def "Inlining Arg" -; V33 tmp18 [V33,T129] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V34 tmp19 [V34,T27] ( 4, 4 ) ref -> [ebp-0x84] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V35 tmp20 [V35,T15] ( 6, 6 ) ref -> [ebp-0x88] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder>
+; V32 tmp17 [V32,T122] ( 2, 2 ) int -> [ebp-0x18] spill-single-def "Inlining Arg" +; V33 tmp18 [V33,T131] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V34 tmp19 [V34,T28] ( 4, 4 ) ref -> [ebp-0x88] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V35 tmp20 [V35,T15] ( 6, 6 ) ref -> [ebp-0x8C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder>
;* V36 tmp21 [V36 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V37 tmp22 [V37 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V38 tmp23 [V38,T42] ( 6, 3 ) int -> [ebp-0x1C] "Inline stloc first use temp" ;* V39 tmp24 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> ;* V40 tmp25 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V41 tmp26 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V42 tmp27 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V43 tmp28 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V44 tmp29 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V45 tmp30 [V45 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V46 tmp31 [V46 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V47 tmp32 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V48 tmp33 [V48,T16] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" -; V49 tmp34 [V49,T70] ( 3, 3 ) int -> eax "impAppendStmt" -;* V50 tmp35 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V51 tmp36 [V51,T150] ( 2, 1 ) int -> eax "Inline return value spill temp" -; V52 tmp37 [V52,T71] ( 3, 3 ) int -> ebx "Inlining Arg" -; V53 tmp38 [V53,T48] ( 3, 3 ) byref -> edx single-def "Inlining Arg" -; V54 tmp39 [V54,T96] ( 2, 2 ) ref -> edx class-hnd single-def "Inlining Arg" <Microsoft.Cci.ITypeReference> -; V55 tmp40 [V55,T09] ( 10, 10 ) ref -> [ebp-0x8C] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -; V56 tmp41 [V56,T49] ( 3, 3 ) ref -> ebx class-hnd single-def "dup spill" <<unknown class>> -;* V57 tmp42 [V57 ] ( 0, 0 ) ref -> zero-ref single-def -; V58 tmp43 [V58,T97] ( 2, 2 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticBag> -; V59 tmp44 [V59,T140] ( 3, 1.50) int -> [ebp-0x20] -;* V60 tmp45 [V60 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" -; V61 tmp46 [V61,T130] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V62 tmp47 [V62,T28] ( 4, 4 ) ref -> [ebp-0x90] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V63 tmp48 [V63,T17] ( 6, 6 ) ref -> [ebp-0x94] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V64 tmp49 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V65 tmp50 [V65,T86] ( 5, 2.50) int -> edx "Inline stloc first use temp" -; V66 tmp51 [V66,T98] ( 2, 2 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> -; V67 tmp52 [V67,T99] ( 2, 2 ) ref -> [ebp-0x98] class-hnd exact spill-single-def "non-inline candidate call" <Microsoft.CodeAnalysis.CodeGen.LocalSlotManager> -;* V68 tmp53 [V68 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]> -; V69 tmp54 [V69,T100] ( 2, 2 ) ref -> edx class-hnd single-def "impAppendStmt" <Microsoft.Cci.ITypeReference> -;* V70 tmp55 [V70 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[System.String]> -;* V71 tmp56 [V71 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[ubyte]> -; V72 tmp57 [V72,T50] ( 3, 3 ) ref -> [ebp-0x9C] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> -; V73 tmp58 [V73,T03] ( 12, 12 ) ref -> [ebp-0xA0] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V74 tmp59 [V74 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V75 tmp60 [V75,T121] ( 2, 2 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" -; V76 tmp61 [V76,T131] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V77 tmp62 [V77,T29] ( 4, 4 ) ref -> [ebp-0xA4] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V78 tmp63 [V78,T18] ( 6, 6 ) ref -> [ebp-0xA8] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V79 tmp64 [V79 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -;* V80 tmp65 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V81 tmp66 [V81,T43] ( 6, 3 ) int -> [ebp-0x28] "Inline stloc first use temp" -;* V82 tmp67 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V83 tmp68 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V84 tmp69 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp26 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V42 tmp27 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V43 tmp28 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V44 tmp29 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V46 tmp31 [V46,T16] ( 6, 6 ) byref -> ecx single-def "Inlining Arg" +; V47 tmp32 [V47,T71] ( 3, 3 ) int -> eax "impAppendStmt" +;* V48 tmp33 [V48 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +; V49 tmp34 [V49,T151] ( 2, 1 ) int -> eax "Inline return value spill temp" +; V50 tmp35 [V50,T72] ( 3, 3 ) int -> ebx "Inlining Arg" +; V51 tmp36 [V51,T49] ( 3, 3 ) byref -> edx single-def "Inlining Arg" +; V52 tmp37 [V52,T98] ( 2, 2 ) ref -> edx class-hnd single-def "Inlining Arg" <Microsoft.Cci.ITypeReference> +; V53 tmp38 [V53,T09] ( 10, 10 ) ref -> [ebp-0x90] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +; V54 tmp39 [V54,T50] ( 3, 3 ) ref -> ebx class-hnd single-def "dup spill" <<unknown class>> +;* V55 tmp40 [V55 ] ( 0, 0 ) ref -> zero-ref single-def +; V56 tmp41 [V56,T99] ( 2, 2 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticBag> +; V57 tmp42 [V57,T142] ( 3, 1.50) int -> [ebp-0x20] +;* V58 tmp43 [V58 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" +; V59 tmp44 [V59,T132] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V60 tmp45 [V60,T29] ( 4, 4 ) ref -> [ebp-0x94] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V61 tmp46 [V61,T17] ( 6, 6 ) ref -> [ebp-0x98] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V62 tmp47 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V63 tmp48 [V63,T88] ( 5, 2.50) int -> edx "Inline stloc first use temp" +; V64 tmp49 [V64,T100] ( 2, 2 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> +; V65 tmp50 [V65,T101] ( 2, 2 ) ref -> [ebp-0x9C] class-hnd exact spill-single-def "non-inline candidate call" <Microsoft.CodeAnalysis.CodeGen.LocalSlotManager> +;* V66 tmp51 [V66 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[ubyte]> +; V67 tmp52 [V67,T102] ( 2, 2 ) ref -> edx class-hnd single-def "impAppendStmt" <Microsoft.Cci.ITypeReference> +;* V68 tmp53 [V68 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Immutable.ImmutableArray`1[System.String]> +;* V69 tmp54 [V69 ] ( 0, 0 ) struct ( 4) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[ubyte]> +; V70 tmp55 [V70,T51] ( 3, 3 ) ref -> [ebp-0xA0] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> +; V71 tmp56 [V71,T03] ( 12, 12 ) ref -> [ebp-0xA4] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V72 tmp57 [V72 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V73 tmp58 [V73,T123] ( 2, 2 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" +; V74 tmp59 [V74,T133] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V75 tmp60 [V75,T30] ( 4, 4 ) ref -> [ebp-0xA8] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V76 tmp61 [V76,T18] ( 6, 6 ) ref -> [ebp-0xAC] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V77 tmp62 [V77 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V78 tmp63 [V78 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V79 tmp64 [V79,T43] ( 6, 3 ) int -> [ebp-0x28] "Inline stloc first use temp" +;* V80 tmp65 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V81 tmp66 [V81 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V82 tmp67 [V82 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V83 tmp68 [V83 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V84 tmp69 [V84 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V85 tmp70 [V85 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V86 tmp71 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
-;* V87 tmp72 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V88 tmp73 [V88 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V89 tmp74 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V90 tmp75 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V91 tmp76 [V91,T51] ( 3, 3 ) byref -> ebx single-def "Inlining Arg" -; V92 tmp77 [V92,T101] ( 2, 2 ) ref -> edx class-hnd single-def "Inlining Arg" <Microsoft.Cci.ITypeReference> -; V93 tmp78 [V93,T10] ( 10, 10 ) ref -> [ebp-0xAC] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -; V94 tmp79 [V94,T52] ( 3, 3 ) ref -> ebx class-hnd single-def "dup spill" <<unknown class>> -;* V95 tmp80 [V95 ] ( 0, 0 ) ref -> zero-ref single-def -; V96 tmp81 [V96,T102] ( 2, 2 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticBag> -; V97 tmp82 [V97,T141] ( 3, 1.50) int -> [ebp-0x2C] -;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" -; V99 tmp84 [V99,T132] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V100 tmp85 [V100,T30] ( 4, 4 ) ref -> [ebp-0xB0] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V101 tmp86 [V101,T19] ( 6, 6 ) ref -> [ebp-0xB4] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V102 tmp87 [V102 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V103 tmp88 [V103,T87] ( 5, 2.50) int -> edx "Inline stloc first use temp" -; V104 tmp89 [V104,T04] ( 12, 12 ) ref -> [ebp-0xB8] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V105 tmp90 [V105 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V106 tmp91 [V106,T122] ( 2, 2 ) int -> [ebp-0x30] spill-single-def "Inlining Arg" -; V107 tmp92 [V107,T133] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V108 tmp93 [V108,T31] ( 4, 4 ) ref -> [ebp-0xBC] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V109 tmp94 [V109,T20] ( 6, 6 ) ref -> [ebp-0xC0] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V110 tmp95 [V110 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V87 tmp72 [V87,T52] ( 3, 3 ) byref -> ebx single-def "Inlining Arg" +; V88 tmp73 [V88,T103] ( 2, 2 ) ref -> edx class-hnd single-def "Inlining Arg" <Microsoft.Cci.ITypeReference> +; V89 tmp74 [V89,T10] ( 10, 10 ) ref -> [ebp-0xB0] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +; V90 tmp75 [V90,T53] ( 3, 3 ) ref -> ebx class-hnd single-def "dup spill" <<unknown class>> +;* V91 tmp76 [V91 ] ( 0, 0 ) ref -> zero-ref single-def +; V92 tmp77 [V92,T104] ( 2, 2 ) ref -> ecx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.DiagnosticBag> +; V93 tmp78 [V93,T143] ( 3, 1.50) int -> [ebp-0x2C] +;* V94 tmp79 [V94 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" +; V95 tmp80 [V95,T134] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V96 tmp81 [V96,T31] ( 4, 4 ) ref -> [ebp-0xB4] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V97 tmp82 [V97,T19] ( 6, 6 ) ref -> [ebp-0xB8] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V99 tmp84 [V99,T89] ( 5, 2.50) int -> edx "Inline stloc first use temp" +; V100 tmp85 [V100,T04] ( 12, 12 ) ref -> [ebp-0xBC] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V101 tmp86 [V101 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V102 tmp87 [V102,T124] ( 2, 2 ) int -> [ebp-0x30] spill-single-def "Inlining Arg" +; V103 tmp88 [V103,T135] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V104 tmp89 [V104,T32] ( 4, 4 ) ref -> [ebp-0xC0] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V105 tmp90 [V105,T20] ( 6, 6 ) ref -> [ebp-0xC4] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V106 tmp91 [V106 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V107 tmp92 [V107 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V108 tmp93 [V108,T44] ( 6, 3 ) int -> ebx "Inline stloc first use temp" +;* V109 tmp94 [V109 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V110 tmp95 [V110 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V111 tmp96 [V111 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V112 tmp97 [V112,T44] ( 6, 3 ) int -> ebx "Inline stloc first use temp" -;* V113 tmp98 [V113 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]>
+;* V112 tmp97 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V113 tmp98 [V113 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V114 tmp99 [V114 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V115 tmp100 [V115 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V116 tmp101 [V116 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V117 tmp102 [V117 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -;* V118 tmp103 [V118 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V119 tmp104 [V119 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V120 tmp105 [V120 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V121 tmp106 [V121 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> -; V122 tmp107 [V122,T53] ( 3, 3 ) byref -> ebx single-def "Inlining Arg" -; V123 tmp108 [V123,T54] ( 3, 3 ) ref -> [ebp-0xC4] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> -; V124 tmp109 [V124,T05] ( 12, 12 ) ref -> [ebp-0xC8] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> -;* V125 tmp110 [V125 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -; V126 tmp111 [V126,T123] ( 2, 2 ) int -> [ebp-0x34] spill-single-def "Inlining Arg" -; V127 tmp112 [V127,T134] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V128 tmp113 [V128,T32] ( 4, 4 ) ref -> [ebp-0xCC] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> -; V129 tmp114 [V129,T21] ( 6, 6 ) ref -> [ebp-0xD0] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> -;* V130 tmp115 [V130 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V115 tmp100 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +; V116 tmp101 [V116,T54] ( 3, 3 ) byref -> ebx single-def "Inlining Arg" +; V117 tmp102 [V117,T55] ( 3, 3 ) ref -> [ebp-0xC8] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode> +; V118 tmp103 [V118,T05] ( 12, 12 ) ref -> [ebp-0xCC] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder> +;* V119 tmp104 [V119 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +; V120 tmp105 [V120,T125] ( 2, 2 ) int -> [ebp-0x34] spill-single-def "Inlining Arg" +; V121 tmp106 [V121,T136] ( 3, 1.50) ref -> eax class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V122 tmp107 [V122,T33] ( 4, 4 ) ref -> [ebp-0xD0] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock> +; V123 tmp108 [V123,T21] ( 6, 6 ) ref -> [ebp-0xD4] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.Cci.PooledBlobBuilder> +;* V124 tmp109 [V124 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +;* V125 tmp110 [V125 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V126 tmp111 [V126,T45] ( 6, 3 ) int -> [ebp-0x38] "Inline stloc first use temp" +;* V127 tmp112 [V127 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <ubyte[]> +;* V128 tmp113 [V128 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
...

+2 (+2.30%) : 18486.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)

@@ -7,14 +7,13 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 3, 3 ) ushort -> esi single-def -; V01 loc0 [V01,T06] ( 2, 2 ) ubyte -> eax single-def -; V02 tmp0 [V02,T00] ( 3, 6 ) ref -> eax single-def "arr expr" -; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> edx single-def "arr expr" -; V04 tmp2 [V04,T02] ( 3, 6 ) int -> eax "index expr" -;* V05 cse0 [V05,T07] ( 0, 0 ) int -> zero-ref "CSE - aggressive" -; V06 cse1 [V06,T04] ( 3, 3 ) int -> edx "CSE - aggressive" -; V07 cse2 [V07,T05] ( 3, 3 ) int -> ecx "CSE - aggressive"
+; V00 arg0 [V00,T00] ( 4, 4 ) ushort -> esi single-def +; V01 loc0 [V01,T05] ( 2, 2 ) ubyte -> eax single-def +; V02 tmp0 [V02,T01] ( 3, 6 ) ref -> eax single-def "arr expr" +; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> ecx single-def "arr expr" +; V04 tmp2 [V04,T03] ( 3, 6 ) int -> eax "index expr" +;* V05 cse0 [V05,T06] ( 0, 0 ) int -> zero-ref "CSE - aggressive" +; V06 cse1 [V06,T04] ( 3, 3 ) int -> ecx "CSE - aggressive"
; ; Lcl frame size = 0 @@ -22,8 +21,9 @@ G_M53790_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push ebp mov ebp, esp push esi
+ push ebx
mov esi, ecx
- ;; size=6 bbWeight=1 PerfScore 2.50
+ ;; size=7 bbWeight=1 PerfScore 3.50
G_M53790_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz test byte ptr [D1FFAB1EH], 1 ; global ptr je SHORT G_M53790_IG06 @@ -32,28 +32,29 @@ G_M53790_IG03: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov eax, gword ptr [D1FFAB1EH] ; static handle ; gcrRegs +[eax] movzx ecx, si
- mov edx, ecx - sar edx, 8 - cmp edx, dword ptr [eax+0x04]
+ sar ecx, 8 + cmp ecx, dword ptr [eax+0x04]
jae SHORT G_M53790_IG05
- movzx eax, byte ptr [eax+edx+0x08]
+ movzx eax, byte ptr [eax+ecx+0x08]
; gcrRegs -[eax]
- mov edx, gword ptr [D1FFAB1EH] ; static handle - ; gcrRegs +[edx]
+ mov ecx, gword ptr [D1FFAB1EH] ; static handle + ; gcrRegs +[ecx]
shl eax, 8
- movzx ecx, cl - add eax, ecx - cmp eax, dword ptr [edx+0x04]
+ mov ebx, esi + movzx edx, bl + add eax, edx + cmp eax, dword ptr [ecx+0x04]
jae SHORT G_M53790_IG05
- movzx eax, byte ptr [edx+eax+0x08]
+ movzx eax, byte ptr [ecx+eax+0x08]
;; size=47 bbWeight=1 PerfScore 18.00 G_M53790_IG04: ; bbWeight=1, epilog, nogc, extend
+ pop ebx
pop esi pop ebp ret
- ;; size=3 bbWeight=1 PerfScore 2.00
+ ;; size=4 bbWeight=1 PerfScore 2.50
G_M53790_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[edx]
+ ; gcrRegs -[ecx]
call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M53790_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz @@ -63,6 +64,6 @@ G_M53790_IG06: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {} jmp SHORT G_M53790_IG03 ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 87, prolog size 4, PerfScore 26.50, instruction count 28, allocated bytes for code 87 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
+; Total bytes of code 89, prolog size 5, PerfScore 28.00, instruction count 30, allocated bytes for code 89 (MethodHash=079f2de1) for method Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
; ============================================================

+22 (+13.75%) : 1242.dasm - BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)

@@ -8,30 +8,31 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 13, 10 ) byref -> ebx this single-def
+; V00 this [V00,T00] ( 11, 9 ) byref -> ebx this single-def
; V01 arg1 [V01,T01] ( 3, 3 ) int -> [ebp-0x10] single-def
-; V02 arg2 [V02,T06] ( 4, 2 ) ref -> [ebp+0x08] class-hnd single-def <BepuUtilities.Memory.IUnmanagedMemoryPool>
+; V02 arg2 [V02,T07] ( 4, 2 ) ref -> [ebp+0x08] class-hnd single-def <BepuUtilities.Memory.IUnmanagedMemoryPool>
; V03 loc0 [V03 ] ( 3, 1.50) struct (12) [ebp-0x1C] do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Memory.Buffer`1[int]> ;* V04 tmp0 [V04 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V05 tmp1 [V05,T03] ( 3, 3 ) int -> eax "impAppendStmt" -; V06 tmp2 [V06,T07] ( 2, 2 ) int -> eax "VirtualCall through function pointer" -; V07 tmp3 [V07,T08] ( 2, 2 ) int -> eax "VirtualCall through function pointer"
+; V05 tmp1 [V05,T04] ( 3, 3 ) int -> edx "impAppendStmt" +; V06 tmp2 [V06,T09] ( 2, 2 ) int -> eax "VirtualCall through function pointer" +; V07 tmp3 [V07,T10] ( 2, 2 ) int -> eax "VirtualCall through function pointer"
;* V08 tmp4 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V09 tmp5 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V10 tmp6 [V10,T09] ( 2, 1 ) int -> [ebp-0x20] spill-single-def "Inline return value spill temp" -; V11 tmp7 [V11,T04] ( 3, 3 ) int -> ecx "Inlining Arg" -;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+; V10 tmp6 [V10,T14] ( 2, 1 ) int -> [ebp-0x20] spill-single-def "Inline return value spill temp" +; V11 tmp7 [V11,T05] ( 3, 3 ) int -> ecx "Inlining Arg" +; V12 tmp8 [V12,T08] ( 2, 2 ) byref -> ecx single-def "Inlining Arg" +; V13 tmp9 [V13,T11] ( 2, 2 ) int -> edx "Inlining Arg" +; V14 tmp10 [V14,T12] ( 2, 2 ) int -> eax "Inlining Arg" +; V15 tmp11 [V15,T13] ( 2, 2 ) int -> [ebp-0x24] spill-single-def "Inlining Arg"
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T05] ( 3, 3 ) int -> edx "Inline stloc first use temp" -; V18 tmp14 [V18,T02] ( 2, 4 ) byref -> eax single-def "impAppendStmt"
+; V17 tmp13 [V17,T06] ( 3, 3 ) int -> edx "Inline stloc first use temp" +; V18 tmp14 [V18,T03] ( 2, 4 ) byref -> eax single-def "impAppendStmt"
; V19 tmp15 [V19 ] ( 3, 1.50) int -> [ebp-0x1C] do-not-enreg[X] addr-exposed "field V03.Memory (fldOffset=0x0)" P-DEP ; V20 tmp16 [V20 ] ( 2, 1 ) int -> [ebp-0x18] do-not-enreg[X] addr-exposed "field V03.length (fldOffset=0x4)" P-DEP ; V21 tmp17 [V21 ] ( 2, 1 ) int -> [ebp-0x14] do-not-enreg[X] addr-exposed "field V03.Id (fldOffset=0x8)" P-DEP
+; V22 cse0 [V22,T02] ( 6, 4 ) byref -> [ebp-0x28] multi-def "CSE - aggressive"
;
-; Lcl frame size = 20
+; Lcl frame size = 28
G_M19315_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -39,7 +40,7 @@ G_M19315_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 20
+ sub esp, 28
mov dword ptr [ebp-0x10], edx mov ebx, ecx ; byrRegs +[ebx] @@ -52,43 +53,52 @@ G_M19315_IG02: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000008 jne SHORT G_M19315_IG04 ;; size=8 bbWeight=1 PerfScore 6.00 G_M19315_IG03: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000008 {ebx}, byref
- mov ecx, dword ptr [ebx+0x08]
+ lea eax, bword ptr [ebx+0x08] + ; byrRegs +[eax] + mov bword ptr [ebp-0x28], eax + ; GC ptr vars +{V22} + mov ecx, dword ptr [eax]
mov dword ptr [ebp-0x1C], ecx
- mov ecx, dword ptr [ebx+0x0C]
+ mov ecx, dword ptr [eax+0x04]
mov dword ptr [ebp-0x18], ecx
- mov ecx, dword ptr [ebx+0x10]
+ mov ecx, dword ptr [eax+0x08]
mov dword ptr [ebp-0x14], ecx
- mov eax, dword ptr [ebx+0x04] - add eax, eax
+ mov edx, dword ptr [ebx+0x04] + add edx, edx
mov ecx, dword ptr [ebx+0x0C]
- cmp eax, ecx - cmovl eax, ecx - mov dword ptr [ebp-0x20], eax
+ cmp edx, ecx + cmovl edx, ecx + mov dword ptr [ebp-0x20], edx
push 0xD1FFAB1E mov ecx, edi ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; BepuUtilities.Memory.IUnmanagedMemoryPool call CORINFO_HELP_VIRTUAL_FUNC_PTR ; gcrRegs -[ecx]
- lea ecx, bword ptr [ebx+0x08] - ; byrRegs +[ecx] - push ecx
+ ; byrRegs -[eax] + push bword ptr [ebp-0x28]
mov gword ptr [ebp+0x08], edi mov ecx, edi ; gcrRegs +[ecx]
- ; byrRegs -[ecx]
mov edx, dword ptr [ebp-0x20] call eax ; gcrRegs -[ecx edi]
- mov edi, dword ptr [ebx+0x08] - mov esi, dword ptr [ebp-0x1C] - mov ecx, dword ptr [ebx+0x04] - shl ecx, 2
+ mov ecx, bword ptr [ebp-0x28] + ; byrRegs +[ecx] + mov edx, dword ptr [ebx+0x04] + mov eax, dword ptr [ecx] + mov ecx, dword ptr [ebp-0x1C] + ; byrRegs -[ecx] + mov dword ptr [ebp-0x24], ecx + lea ecx, [4*edx] + mov esi, dword ptr [ebp-0x24] + mov edi, eax
rep movsb push 0xD1FFAB1E mov ecx, gword ptr [ebp+0x08] ; gcrRegs +[ecx] mov edx, 0xD1FFAB1E ; BepuUtilities.Memory.IUnmanagedMemoryPool
+ ; GC ptr vars -{V22}
call CORINFO_HELP_VIRTUAL_FUNC_PTR ; gcrRegs -[ecx] lea edx, [ebp-0x1C] @@ -96,18 +106,23 @@ G_M19315_IG03: ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000 ; gcrRegs +[ecx] call eax ; gcrRegs -[ecx]
- ;; size=105 bbWeight=0.50 PerfScore 31.12
+ ;; size=123 bbWeight=0.50 PerfScore 33.25
G_M19315_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000008 {ebx}, byref
- lea eax, bword ptr [ebx+0x08]
+ lea ecx, bword ptr [ebx+0x08] + ; byrRegs +[ecx] + mov edi, ecx + ; byrRegs +[edi] + mov eax, edi
; byrRegs +[eax] mov edx, dword ptr [ebx+0x04] lea ecx, [edx+0x01]
+ ; byrRegs -[ecx]
mov dword ptr [ebx+0x04], ecx mov eax, dword ptr [eax] ; byrRegs -[eax] mov esi, dword ptr [ebp-0x10] mov dword ptr [eax+4*edx], esi
- ;; size=20 bbWeight=1 PerfScore 8.00
+ ;; size=24 bbWeight=1 PerfScore 8.50
G_M19315_IG05: ; bbWeight=1, epilog, nogc, extend lea esp, [ebp-0x0C] pop ebx @@ -117,6 +132,6 @@ G_M19315_IG05: ; bbWeight=1, epilog, nogc, extend ret 4 ;; size=10 bbWeight=1 PerfScore 4.50
-; Total bytes of code 160, prolog size 9, PerfScore 56.38, instruction count 59, allocated bytes for code 160 (MethodHash=9a7fb48c) for method BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)
+; Total bytes of code 182, prolog size 9, PerfScore 59.00, instruction count 66, allocated bytes for code 182 (MethodHash=9a7fb48c) for method BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)
; ============================================================

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 19 9 3 7 -106 +46
benchmarks.run_pgo.windows.x86.checked.mch 113 105 4 4 -908 +67
benchmarks.run_tiered.windows.x86.checked.mch 85 76 3 6 -763 +106
coreclr_tests.run.windows.x86.checked.mch 5,172 3,949 303 920 -79,368 +6,319
libraries.crossgen2.windows.x86.checked.mch 32 12 1 19 -49 +5
libraries.pmi.windows.x86.checked.mch 198 84 83 31 -922 +9,722
libraries_tests.run.windows.x86.Release.mch 550 461 43 46 -38,665 +1,483
librariestestsnotieredcompilation.run.windows.x86.Release.mch 319 147 70 102 -34,913 +2,279
realworld.run.windows.x86.checked.mch 85 52 19 14 -241 +938
6,573 4,895 529 1,149 -155,935 +20,965

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,477 4 24,473 1 (0.00%) 16 (0.07%)
benchmarks.run_pgo.windows.x86.checked.mch 117,795 41,904 75,891 2 (0.00%) 12 (0.01%)
benchmarks.run_tiered.windows.x86.checked.mch 47,872 28,747 19,125 1 (0.00%) 11 (0.02%)
coreclr_tests.run.windows.x86.checked.mch 574,634 319,846 254,788 22 (0.00%) 32 (0.01%)
libraries.crossgen2.windows.x86.checked.mch 242,614 15 242,599 4 (0.00%) 5 (0.00%)
libraries.pmi.windows.x86.checked.mch 305,746 6 305,740 7 (0.00%) 27 (0.01%)
libraries_tests.run.windows.x86.Release.mch 627,701 427,222 200,479 6 (0.00%) 132 (0.02%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,304 21,910 294,394 3 (0.00%) 131 (0.04%)
realworld.run.windows.x86.checked.mch 35,982 3 35,979 1 (0.00%) 3 (0.01%)
2,293,125 839,657 1,453,468 47 (0.00%) 369 (0.02%)

jit-analyze output

benchmarks.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7107468 (overridden on cmd)
Total bytes of diff: 7107408 (overridden on cmd)
Total bytes of delta: -60 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          40 : 1293.dasm (0.57 % of base)
           4 : 1360.dasm (0.19 % of base)
           2 : 14805.dasm (0.15 % of base)

Top file improvements (bytes):
         -38 : 20661.dasm (-2.21 % of base)
         -25 : 19605.dasm (-1.77 % of base)
         -15 : 19619.dasm (-1.10 % of base)
         -14 : 17479.dasm (-0.39 % of base)
          -5 : 18134.dasm (-0.15 % of base)
          -3 : 22587.dasm (-0.08 % of base)
          -3 : 24361.dasm (-0.05 % of base)
          -2 : 17414.dasm (-0.93 % of base)
          -1 : 18125.dasm (-0.11 % of base)

12 total files with Code Size differences (9 improved, 3 regressed), 7 unchanged.

Top method regressions (bytes):
          40 (0.57 % of base) : 1293.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
           4 (0.19 % of base) : 1360.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.15 % of base) : 14805.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (FullOpts)

Top method improvements (bytes):
         -38 (-2.21 % of base) : 20661.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (FullOpts)
         -25 (-1.77 % of base) : 19605.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -15 (-1.10 % of base) : 19619.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -14 (-0.39 % of base) : 17479.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanNumericLiteral(byref):ubyte:this (FullOpts)
          -5 (-0.15 % of base) : 18134.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (FullOpts)
          -3 (-0.08 % of base) : 22587.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
          -3 (-0.05 % of base) : 24361.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
          -2 (-0.93 % of base) : 17414.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanIdentifier_FastPath(byref):ubyte:this (FullOpts)
          -1 (-0.11 % of base) : 18125.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (FullOpts)

Top method regressions (percentages):
          40 (0.57 % of base) : 1293.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
           4 (0.19 % of base) : 1360.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (FullOpts)
           2 (0.15 % of base) : 14805.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (FullOpts)

Top method improvements (percentages):
         -38 (-2.21 % of base) : 20661.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (FullOpts)
         -25 (-1.77 % of base) : 19605.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -15 (-1.10 % of base) : 19619.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
          -2 (-0.93 % of base) : 17414.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanIdentifier_FastPath(byref):ubyte:this (FullOpts)
         -14 (-0.39 % of base) : 17479.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanNumericLiteral(byref):ubyte:this (FullOpts)
          -5 (-0.15 % of base) : 18134.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (FullOpts)
          -1 (-0.11 % of base) : 18125.dasm - Microsoft.CodeAnalysis.CSharp.CSharpParseOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (FullOpts)
          -3 (-0.08 % of base) : 22587.dasm - (dynamicClass):ReadLocationFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)
          -3 (-0.05 % of base) : 24361.dasm - (dynamicClass):ReadMyEventsListerItemFromJson(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson,System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString[]):System.Object (FullOpts)

12 total methods with Code Size differences (9 improved, 3 regressed).


benchmarks.run_pgo.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 44954112 (overridden on cmd)
Total bytes of diff: 44953271 (overridden on cmd)
Total bytes of delta: -841 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          40 : 21999.dasm (0.57 % of base)
          19 : 17478.dasm (0.50 % of base)
           4 : 22216.dasm (0.22 % of base)
           4 : 22151.dasm (0.19 % of base)

Top file improvements (bytes):
         -80 : 12115.dasm (-27.12 % of base)
         -43 : 4678.dasm (-6.28 % of base)
         -41 : 53569.dasm (-4.75 % of base)
         -35 : 45398.dasm (-8.62 % of base)
         -35 : 48973.dasm (-10.32 % of base)
         -32 : 11845.dasm (-17.88 % of base)
         -27 : 26751.dasm (-5.51 % of base)
         -23 : 18153.dasm (-4.91 % of base)
         -22 : 13900.dasm (-22.00 % of base)
         -21 : 743.dasm (-40.38 % of base)
         -18 : 59650.dasm (-5.41 % of base)
         -18 : 11176.dasm (-6.95 % of base)
         -18 : 98517.dasm (-3.77 % of base)
         -17 : 11247.dasm (-10.62 % of base)
         -17 : 11237.dasm (-12.14 % of base)
         -15 : 4543.dasm (-19.74 % of base)
         -15 : 9704.dasm (-15.62 % of base)
         -13 : 1709.dasm (-1.88 % of base)
         -13 : 5017.dasm (-10.83 % of base)
         -13 : 4548.dasm (-3.53 % of base)

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

Top method regressions (bytes):
          40 (0.57 % of base) : 21999.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
          19 (0.50 % of base) : 17478.dasm - System.Net.Http.RedirectHandler+<SendAsync>d__4:MoveNext():this (Tier0-FullOpts)
           4 (0.19 % of base) : 22151.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
           4 (0.22 % of base) : 22216.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

Top method improvements (bytes):
         -80 (-27.12 % of base) : 12115.dasm - System.Numerics.Tests.Perf_VectorConvert:.cctor() (Tier0)
         -43 (-6.28 % of base) : 4678.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this (Tier0)
         -41 (-4.75 % of base) : 53569.dasm - System.DateTimeFormat:TryFormatR[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -35 (-10.32 % of base) : 48973.dasm - System.DateTimeFormat:TryFormatS[ushort](System.DateTime,System.Span`1[ushort],byref):ubyte (Tier0)
         -35 (-8.62 % of base) : 45398.dasm - System.DateTimeFormat:TryFormatu[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -32 (-17.88 % of base) : 11845.dasm - System.Number:WriteFourDigits[ushort](uint,uint) (Tier0)
         -27 (-5.51 % of base) : 26751.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:FormattedMessage(int,int,System.String,int,System.String,System.String):this (Tier0)
         -23 (-4.91 % of base) : 18153.dasm - System.Text.Ascii:Equals[ubyte,ushort,System.Text.Ascii+WideningLoader](byref,byref,uint):ubyte (Tier0-FullOpts)
         -22 (-22.00 % of base) : 13900.dasm - System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)
         -21 (-40.38 % of base) : 743.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
         -18 (-6.95 % of base) : 11176.dasm - System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this (Tier0)
         -18 (-5.41 % of base) : 59650.dasm - System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,int,int):this (Tier0)
         -18 (-3.77 % of base) : 98517.dasm - System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this (Tier0)
         -17 (-10.62 % of base) : 11247.dasm - System.Span`1[System.__Canon]:Clear():this (Instrumented Tier0)
         -17 (-12.14 % of base) : 11237.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0)
         -15 (-15.62 % of base) : 9704.dasm - System.Span`1[ubyte]:Clear():this (Instrumented Tier0)
         -15 (-19.74 % of base) : 4543.dasm - System.Span`1[ubyte]:Clear():this (Tier0)
         -13 (-3.53 % of base) : 4548.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:ActivityJsonStart(int,int,System.String,System.String):this (Tier0)
         -13 (-1.88 % of base) : 1709.dasm - System.Guid:TryFormatCore[ushort](System.Span`1[ushort],byref,int):ubyte:this (Tier0)
         -13 (-10.83 % of base) : 5017.dasm - System.Number:WriteTwoDigits[ushort](uint,uint) (Tier0)

Top method regressions (percentages):
          40 (0.57 % of base) : 21999.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
          19 (0.50 % of base) : 17478.dasm - System.Net.Http.RedirectHandler+<SendAsync>d__4:MoveNext():this (Tier0-FullOpts)
           4 (0.22 % of base) : 22216.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:Reverse(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)
           4 (0.19 % of base) : 22151.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

Top method improvements (percentages):
         -21 (-40.38 % of base) : 743.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
         -80 (-27.12 % of base) : 12115.dasm - System.Numerics.Tests.Perf_VectorConvert:.cctor() (Tier0)
         -22 (-22.00 % of base) : 13900.dasm - System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)
         -15 (-19.74 % of base) : 4543.dasm - System.Span`1[ubyte]:Clear():this (Tier0)
         -32 (-17.88 % of base) : 11845.dasm - System.Number:WriteFourDigits[ushort](uint,uint) (Tier0)
         -15 (-15.62 % of base) : 9704.dasm - System.Span`1[ubyte]:Clear():this (Instrumented Tier0)
          -7 (-14.89 % of base) : 21229.dasm - System.Runtime.CompilerServices.MethodTable:get_MultiDimensionalArrayRank():int:this (Instrumented Tier0)
          -7 (-14.89 % of base) : 4327.dasm - System.Runtime.CompilerServices.MethodTable:get_MultiDimensionalArrayRank():int:this (Tier0)
          -7 (-14.58 % of base) : 2033.dasm - System.Runtime.CompilerServices.MethodTable:get_IsMultiDimensionalArray():ubyte:this (Instrumented Tier0)
          -7 (-14.58 % of base) : 512.dasm - System.Runtime.CompilerServices.MethodTable:get_IsMultiDimensionalArray():ubyte:this (Tier0)
          -4 (-13.33 % of base) : 27093.dasm - System.Xml.Schema.XsdDateTime:get_ZoneMinute():int:this (Tier0)
          -5 (-13.16 % of base) : 72924.dasm - System.Reflection.Metadata.StringHandle:FromOffset(int):System.Reflection.Metadata.StringHandle (Instrumented Tier0)
          -5 (-13.16 % of base) : 72732.dasm - System.Reflection.Metadata.StringHandle:FromOffset(int):System.Reflection.Metadata.StringHandle (Tier0)
         -17 (-12.14 % of base) : 11237.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0)
          -3 (-12.00 % of base) : 73995.dasm - System.Reflection.Metadata.Ecma335.TypeOrMethodDefTag:ConvertTypeDefRowIdToTag(System.Reflection.Metadata.TypeDefinitionHandle):uint (Instrumented Tier0)
          -3 (-12.00 % of base) : 73622.dasm - System.Reflection.Metadata.Ecma335.TypeOrMethodDefTag:ConvertTypeDefRowIdToTag(System.Reflection.Metadata.TypeDefinitionHandle):uint (Tier0)
         -13 (-10.83 % of base) : 5017.dasm - System.Number:WriteTwoDigits[ushort](uint,uint) (Tier0)
         -17 (-10.62 % of base) : 11247.dasm - System.Span`1[System.__Canon]:Clear():this (Instrumented Tier0)
          -2 (-10.53 % of base) : 76540.dasm - Microsoft.CodeAnalysis.CSharp.OperatorKindExtensions:OperandTypes(int):int (Instrumented Tier0)
          -2 (-10.53 % of base) : 76235.dasm - Microsoft.CodeAnalysis.CSharp.OperatorKindExtensions:OperandTypes(int):int (Tier0)


benchmarks.run_tiered.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9456972 (overridden on cmd)
Total bytes of diff: 9456315 (overridden on cmd)
Total bytes of delta: -657 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          62 : 34509.dasm (1.82 % of base)
          40 : 3836.dasm (0.57 % of base)
           4 : 3960.dasm (0.19 % of base)

Top file improvements (bytes):
         -80 : 4262.dasm (-27.12 % of base)
         -43 : 12596.dasm (-6.28 % of base)
         -41 : 29461.dasm (-4.75 % of base)
         -35 : 27733.dasm (-8.62 % of base)
         -35 : 29175.dasm (-10.32 % of base)
         -32 : 10982.dasm (-17.88 % of base)
         -27 : 18450.dasm (-5.51 % of base)
         -23 : 15067.dasm (-4.91 % of base)
         -22 : 13147.dasm (-22.00 % of base)
         -21 : 703.dasm (-40.38 % of base)
         -18 : 32011.dasm (-5.41 % of base)
         -18 : 44891.dasm (-3.77 % of base)
         -18 : 7379.dasm (-6.95 % of base)
         -17 : 16106.dasm (-12.14 % of base)
         -16 : 9419.dasm (-5.61 % of base)
         -15 : 5594.dasm (-19.74 % of base)
         -13 : 10058.dasm (-10.83 % of base)
         -13 : 12558.dasm (-3.53 % of base)
         -13 : 1609.dasm (-1.88 % of base)
         -12 : 10054.dasm (-0.70 % of base)

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

Top method regressions (bytes):
          62 (1.82 % of base) : 34509.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
          40 (0.57 % of base) : 3836.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
           4 (0.19 % of base) : 3960.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

Top method improvements (bytes):
         -80 (-27.12 % of base) : 4262.dasm - System.Numerics.Tests.Perf_VectorConvert:.cctor() (Tier0)
         -43 (-6.28 % of base) : 12596.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this (Tier0)
         -41 (-4.75 % of base) : 29461.dasm - System.DateTimeFormat:TryFormatR[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -35 (-10.32 % of base) : 29175.dasm - System.DateTimeFormat:TryFormatS[ushort](System.DateTime,System.Span`1[ushort],byref):ubyte (Tier0)
         -35 (-8.62 % of base) : 27733.dasm - System.DateTimeFormat:TryFormatu[ushort](System.DateTime,System.TimeSpan,System.Span`1[ushort],byref):ubyte (Tier0)
         -32 (-17.88 % of base) : 10982.dasm - System.Number:WriteFourDigits[ushort](uint,uint) (Tier0)
         -27 (-5.51 % of base) : 18450.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:FormattedMessage(int,int,System.String,int,System.String,System.String):this (Tier0)
         -23 (-4.91 % of base) : 15067.dasm - System.Text.Ascii:Equals[ubyte,ushort,System.Text.Ascii+WideningLoader](byref,byref,uint):ubyte (Tier0-FullOpts)
         -22 (-22.00 % of base) : 13147.dasm - System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)
         -21 (-40.38 % of base) : 703.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
         -18 (-6.95 % of base) : 7379.dasm - System.Diagnostics.Tracing.EventSource:WriteEvent(int,int,int,int):this (Tier0)
         -18 (-5.41 % of base) : 32011.dasm - System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,int,int):this (Tier0)
         -18 (-3.77 % of base) : 44891.dasm - System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.String,System.String,System.String):this (Tier0)
         -17 (-12.14 % of base) : 16106.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0)
         -16 (-5.61 % of base) : 9419.dasm - System.Number:FormatExponent[ushort](byref,System.Globalization.NumberFormatInfo,int,ushort,int,ubyte) (Tier0)
         -15 (-19.74 % of base) : 5594.dasm - System.Span`1[ubyte]:Clear():this (Tier0)
         -13 (-3.53 % of base) : 12558.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:ActivityJsonStart(int,int,System.String,System.String):this (Tier0)
         -13 (-1.88 % of base) : 1609.dasm - System.Guid:TryFormatCore[ushort](System.Span`1[ushort],byref,int):ubyte:this (Tier0)
         -13 (-10.83 % of base) : 10058.dasm - System.Number:WriteTwoDigits[ushort](uint,uint) (Tier0)
         -12 (-0.70 % of base) : 10054.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier0)

Top method regressions (percentages):
          62 (1.82 % of base) : 34509.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
          40 (0.57 % of base) : 3836.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
           4 (0.19 % of base) : 3960.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

Top method improvements (percentages):
         -21 (-40.38 % of base) : 703.dasm - System.Runtime.InteropServices.Marshalling.ReadOnlySpanMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
          -4 (-40.00 % of base) : 24304.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (Tier1)
         -80 (-27.12 % of base) : 4262.dasm - System.Numerics.Tests.Perf_VectorConvert:.cctor() (Tier0)
         -22 (-22.00 % of base) : 13147.dasm - System.Runtime.InteropServices.NativeMemory:GetByteCount(uint,uint):uint (Tier0)
         -15 (-19.74 % of base) : 5594.dasm - System.Span`1[ubyte]:Clear():this (Tier0)
         -32 (-17.88 % of base) : 10982.dasm - System.Number:WriteFourDigits[ushort](uint,uint) (Tier0)
          -7 (-14.89 % of base) : 3142.dasm - System.Runtime.CompilerServices.MethodTable:get_MultiDimensionalArrayRank():int:this (Tier0)
          -7 (-14.58 % of base) : 490.dasm - System.Runtime.CompilerServices.MethodTable:get_IsMultiDimensionalArray():ubyte:this (Tier0)
          -4 (-13.33 % of base) : 19570.dasm - System.Xml.Schema.XsdDateTime:get_ZoneMinute():int:this (Tier0)
          -5 (-13.16 % of base) : 35098.dasm - System.Reflection.Metadata.StringHandle:FromOffset(int):System.Reflection.Metadata.StringHandle (Tier0)
         -17 (-12.14 % of base) : 16106.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0)
          -3 (-12.00 % of base) : 35886.dasm - System.Reflection.Metadata.Ecma335.TypeOrMethodDefTag:ConvertTypeDefRowIdToTag(System.Reflection.Metadata.TypeDefinitionHandle):uint (Tier0)
         -13 (-10.83 % of base) : 10058.dasm - System.Number:WriteTwoDigits[ushort](uint,uint) (Tier0)
          -2 (-10.53 % of base) : 38209.dasm - Microsoft.CodeAnalysis.CSharp.OperatorKindExtensions:OperandTypes(int):int (Tier0)
          -2 (-10.53 % of base) : 34134.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ModeOf(int):int (Tier0)
          -2 (-10.53 % of base) : 1054.dasm - System.Diagnostics.FileVersionInfo:LOWORD(uint):uint (Tier0)
         -35 (-10.32 % of base) : 29175.dasm - System.DateTimeFormat:TryFormatS[ushort](System.DateTime,System.Span`1[ushort],byref):ubyte (Tier0)
          -7 (-10.00 % of base) : 30071.dasm - System.Enum+<>c__63`1[uint]:<FormatNumberAsHex>b__63_0(System.Span`1[ushort],int):this (Tier0)
          -7 (-9.46 % of base) : 47165.dasm - System.HexConverter:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref):ubyte (Tier0)
          -2 (-9.09 % of base) : 1053.dasm - System.Diagnostics.FileVersionInfo:HIWORD(uint):uint (Tier0)


coreclr_tests.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 309306753 (overridden on cmd)
Total bytes of diff: 309233704 (overridden on cmd)
Total bytes of delta: -73049 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         598 : 281639.dasm (7.81 % of base)
         278 : 281630.dasm (3.18 % of base)
         278 : 544017.dasm (3.19 % of base)
         179 : 617.dasm (5.50 % of base)
         126 : 302627.dasm (9.86 % of base)
         126 : 566829.dasm (9.86 % of base)
          84 : 20395.dasm (1.02 % of base)
          84 : 299391.dasm (1.27 % of base)
          84 : 162329.dasm (1.19 % of base)
          70 : 162325.dasm (1.26 % of base)
          62 : 441620.dasm (1.82 % of base)
          60 : 304093.dasm (0.55 % of base)
          51 : 164911.dasm (1.50 % of base)
          48 : 333018.dasm (8.42 % of base)
          48 : 352568.dasm (8.42 % of base)
          48 : 63221.dasm (8.42 % of base)
          48 : 77113.dasm (8.42 % of base)
          48 : 63251.dasm (8.42 % of base)
          48 : 77078.dasm (8.42 % of base)
          48 : 332959.dasm (8.42 % of base)

Top file improvements (bytes):
       -1514 : 495042.dasm (-99.54 % of base)
        -418 : 474606.dasm (-4.58 % of base)
        -408 : 496242.dasm (-13.88 % of base)
        -365 : 496911.dasm (-26.00 % of base)
        -354 : 496082.dasm (-13.63 % of base)
        -307 : 496704.dasm (-3.81 % of base)
        -304 : 486014.dasm (-24.40 % of base)
        -300 : 496678.dasm (-5.27 % of base)
        -259 : 496254.dasm (-8.25 % of base)
        -233 : 485964.dasm (-10.50 % of base)
        -232 : 476779.dasm (-10.21 % of base)
        -219 : 496181.dasm (-10.56 % of base)
        -216 : 484719.dasm (-20.65 % of base)
        -208 : 476789.dasm (-9.01 % of base)
        -206 : 496349.dasm (-5.78 % of base)
        -196 : 496466.dasm (-15.43 % of base)
        -194 : 496495.dasm (-1.51 % of base)
        -154 : 313765.dasm (-16.68 % of base)
        -154 : 495942.dasm (-29.73 % of base)
        -154 : 316317.dasm (-17.70 % of base)

83 total files with Code Size differences (52 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         598 (7.81 % of base) : 281639.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.CopiedCorHeaderNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         278 (3.18 % of base) : 281630.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         278 (3.19 % of base) : 544017.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (Tier0-FullOpts)
         179 (5.50 % of base) : 617.dasm - XUnitWrapperLibrary.TestSummary+TestResult:ToXmlString():System.String:this (FullOpts)
         126 (9.86 % of base) : 302627.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (FullOpts)
         126 (9.86 % of base) : 566829.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier0-FullOpts)
          84 (1.19 % of base) : 162329.dasm - div_r8._div:main():int (FullOpts)
          84 (1.02 % of base) : 20395.dasm - FPBehaviorApp.Program:TestBitValue(uint,System.Nullable`1[double],System.Nullable`1[int]) (FullOpts)
          84 (1.27 % of base) : 299391.dasm - SlowPathELTTests.SlowPathELTHelpers:RunTest():int (FullOpts)
          70 (1.26 % of base) : 162325.dasm - div_r4._div:main():int (FullOpts)
          62 (1.82 % of base) : 441620.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParsePostFixExpression(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier0-FullOpts)
          60 (0.55 % of base) : 304093.dasm - Tracing.Tests.ProcessInfoValidation.ProcessInfoValidation:TestEntryPoint() (FullOpts)
          51 (1.50 % of base) : 164911.dasm - Managed:MarshalStructAsParam_AsExpByVal(int) (FullOpts)
          48 (8.42 % of base) : 63221.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (FullOpts)
          48 (8.42 % of base) : 332959.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (Tier0-FullOpts)
          48 (8.42 % of base) : 63251.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (FullOpts)
          48 (8.42 % of base) : 333018.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (Tier0-FullOpts)
          48 (8.42 % of base) : 77078.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (FullOpts)
          48 (8.42 % of base) : 352528.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (Tier0-FullOpts)
          48 (8.42 % of base) : 77113.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (FullOpts)

Top method improvements (bytes):
       -1514 (-99.54 % of base) : 495042.dasm - ILGEN_0xca1e3399:Method_0x8f2f764c():uint (Tier0)
        -418 (-4.58 % of base) : 474606.dasm - ILGEN_0x52ea038a:Method_0xc9efd6b0(uint,int,double,ushort,uint,ubyte,double,ubyte,ushort,byte):ushort (Tier0)
        -408 (-13.88 % of base) : 496242.dasm - ILGEN_0xa691ee4d:Method_0xf329b3e5(long):int (Tier0)
        -365 (-26.00 % of base) : 496911.dasm - ILGEN_0x8259d717:Method_0xea14afe6():ushort (Tier0)
        -354 (-13.63 % of base) : 496082.dasm - ILGEN_0x1dd8d826:Method_0x1830b93d(uint):int (Tier0)
        -307 (-3.81 % of base) : 496704.dasm - ILGEN_0x977f9ed2:Method_0xf6b7353b():float (Tier0)
        -304 (-24.40 % of base) : 486014.dasm - ILGEN_0xcd4c3cc0:main():int (Tier0)
        -300 (-5.27 % of base) : 496678.dasm - ILGEN_0x2193e4b5:Method_0xeffa27b5(ubyte,long,float,float,byte,double,uint,ubyte,short):int (Tier0)
        -259 (-8.25 % of base) : 496254.dasm - ILGEN_0x13e5362e:Method_0x6ddf86e(ushort,float,int,ubyte,uint,uint,ubyte,long,ulong):int (Tier0)
        -233 (-10.50 % of base) : 485964.dasm - ILGEN_3171381355:main():int (Tier0)
        -232 (-10.21 % of base) : 476779.dasm - convr4a:Main():int (Tier0)
        -219 (-10.56 % of base) : 496181.dasm - ILGEN_0x57cc69ce:Method_0x183df1b1():int (Tier0)
        -216 (-20.65 % of base) : 484719.dasm - ILGEN_941132142:main():int (Tier0)
        -208 (-9.01 % of base) : 476789.dasm - convr8d:Main():int (Tier0)
        -206 (-5.78 % of base) : 496349.dasm - ILGEN_0x12984aee:Method_0x786cd2b5(byte,ubyte,byte,long,int,short,int,uint):int (Tier0)
        -196 (-15.43 % of base) : 496466.dasm - ILGEN_0x1db2cfa3:Method_0x8618f02c(ushort,double,short,byte):int (Tier0)
        -194 (-1.51 % of base) : 496495.dasm - ILGEN_0x8fd0798a:Method_0xf3564a4f(int,int,byte,float,ushort,float):int (Tier0)
        -154 (-29.73 % of base) : 495942.dasm - ILGEN_0x44f8f663:Method_0x2e75f3b4(byte,ulong,short):int (Tier0)
        -154 (-16.68 % of base) : 313765.dasm - testout1:Sub_Funclet_384():double (Tier0)
        -154 (-17.70 % of base) : 316317.dasm - testout1:Sub_Funclet_384():float (Tier0)

Top method regressions (percentages):
           3 (17.65 % of base) : 485071.dasm - ILGEN_622380794:main():int (Tier0)
         126 (9.86 % of base) : 302627.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (FullOpts)
         126 (9.86 % of base) : 566829.dasm - Internal.IL.Stubs.PInvokeILEmitter:EmitIL():Internal.IL.MethodIL:this (Tier0-FullOpts)
          48 (8.42 % of base) : 63221.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (FullOpts)
          48 (8.42 % of base) : 332959.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (Tier0-FullOpts)
          48 (8.42 % of base) : 63251.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (FullOpts)
          48 (8.42 % of base) : 333018.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (Tier0-FullOpts)
          48 (8.42 % of base) : 77078.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (FullOpts)
          48 (8.42 % of base) : 352528.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt64:ValidateWithResult(long[],long[],System.String):this (Tier0-FullOpts)
          48 (8.42 % of base) : 77113.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (FullOpts)
          48 (8.42 % of base) : 352568.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt64:ValidateWithResult(ulong[],ulong[],System.String):this (Tier0-FullOpts)
          37 (8.13 % of base) : 63197.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperByte:ValidateWithResult(ubyte[],ubyte[],System.String):this (FullOpts)
          37 (8.13 % of base) : 332917.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperByte:ValidateWithResult(ubyte[],ubyte[],System.String):this (Tier0-FullOpts)
          37 (8.13 % of base) : 63227.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperSByte:ValidateWithResult(byte[],byte[],System.String):this (FullOpts)
          37 (8.13 % of base) : 332973.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperSByte:ValidateWithResult(byte[],byte[],System.String):this (Tier0-FullOpts)
          37 (8.13 % of base) : 77050.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperByte:ValidateWithResult(ubyte[],ubyte[],System.String):this (FullOpts)
          37 (8.13 % of base) : 352494.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperByte:ValidateWithResult(ubyte[],ubyte[],System.String):this (Tier0-FullOpts)
          37 (8.13 % of base) : 77085.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperSByte:ValidateWithResult(byte[],byte[],System.String):this (FullOpts)
          37 (8.13 % of base) : 352536.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperSByte:ValidateWithResult(byte[],byte[],System.String):this (Tier0-FullOpts)
          37 (8.06 % of base) : 352552.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt16:ValidateWithResult(ushort[],ushort[],System.String):this (Tier0-FullOpts)

Top method improvements (percentages):
       -1514 (-99.54 % of base) : 495042.dasm - ILGEN_0xca1e3399:Method_0x8f2f764c():uint (Tier0)
        -125 (-89.29 % of base) : 495030.dasm - ILGEN_0xdbcacf66:Method_0x8216365b():ulong (Tier0)
         -63 (-86.30 % of base) : 484630.dasm - _simple:main():int (Tier0)
         -53 (-84.13 % of base) : 484624.dasm - _simple:main():int (Tier0)
         -41 (-80.39 % of base) : 486009.dasm - ILGEN_0xa7db44c0:main():int (Tier0)
         -42 (-79.25 % of base) : 240524.dasm - ILGEN_CLASS:ILGEN_METHOD(int):ubyte (FullOpts)
         -38 (-79.17 % of base) : 495074.dasm - _n:main():int (Tier0)
         -35 (-77.78 % of base) : 494731.dasm - ILGEN_0x45f9b5e5:Main():int (Tier0)
         -34 (-77.27 % of base) : 484579.dasm - _simple:main():int (Tier0)
         -31 (-75.61 % of base) : 495082.dasm - s:main():int (Tier0)
         -29 (-74.36 % of base) : 495843.dasm - ILGEN_0x77e9b0c3:Main():int (Tier0)
         -27 (-72.97 % of base) : 494821.dasm - ILGEN_0xd3a45436:Main():int (Tier0)
        -120 (-72.73 % of base) : 495036.dasm - ILGEN_0x71d10697:Method_0x77f6a2f8():ulong (Tier0)
        -121 (-72.46 % of base) : 309371.dasm - _add:main():int (Tier0)
         -75 (-72.12 % of base) : 476578.dasm - JitTest_sizeof_Target_32Bit_x86_il.Test:Main():int (Tier0)
         -25 (-71.43 % of base) : 484575.dasm - _simple:main():int (Tier0)
         -26 (-68.42 % of base) : 559066.dasm - Overflow:test2():long (Tier0)
         -20 (-66.67 % of base) : 494846.dasm - ILGEN_0xc766623d:Main():int (Tier0)
         -17 (-62.96 % of base) : 484628.dasm - _simple:main():int (Tier0)
         -16 (-61.54 % of base) : 495072.dasm - _shl:main():int (Tier0)


libraries.crossgen2.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31715821 (overridden on cmd)
Total bytes of diff: 31715777 (overridden on cmd)
Total bytes of delta: -44 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           5 : 223642.dasm (2.59 % of base)

Top file improvements (bytes):
          -9 : 226839.dasm (-1.71 % of base)
          -8 : 86143.dasm (-1.27 % of base)
          -6 : 56655.dasm (-0.83 % of base)
          -5 : 226827.dasm (-1.14 % of base)
          -4 : 7212.dasm (-40.00 % of base)
          -4 : 185619.dasm (-0.93 % of base)
          -4 : 223452.dasm (-2.30 % of base)
          -2 : 42415.dasm (-0.92 % of base)
          -2 : 128215.dasm (-3.03 % of base)
          -2 : 114529.dasm (-3.03 % of base)
          -2 : 86141.dasm (-0.60 % of base)
          -1 : 183138.dasm (-0.88 % of base)

13 total files with Code Size differences (12 improved, 1 regressed), 19 unchanged.

Top method regressions (bytes):
           5 (2.59 % of base) : 223642.dasm - System.Management.PropertyDataCollection+PropertyDataEnumerator:.ctor(System.Management.ManagementBaseObject,ubyte):this (FullOpts)

Top method improvements (bytes):
          -9 (-1.71 % of base) : 226839.dasm - System.Text.ISO2022Encoding:CleanUpBytes(byref):ubyte:this (FullOpts)
          -8 (-1.27 % of base) : 86143.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (FullOpts)
          -6 (-0.83 % of base) : 56655.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceDelegateMethodSymbol+InvokeMethod:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          -5 (-1.14 % of base) : 226827.dasm - System.Text.EUCJPEncoding:CleanUpBytes(byref):ubyte:this (FullOpts)
          -4 (-0.93 % of base) : 185619.dasm - System.IO.Compression.InflaterManaged:DecodeUncompressedBlock(byref):ubyte:this (FullOpts)
          -4 (-2.30 % of base) : 223452.dasm - System.Management.PropertyDataCollection:get_Count():int:this (FullOpts)
          -4 (-40.00 % of base) : 7212.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)
          -2 (-0.92 % of base) : 42415.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanIdentifier_FastPath(byref):ubyte:this (FullOpts)
          -2 (-3.03 % of base) : 128215.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          -2 (-3.03 % of base) : 114529.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          -2 (-0.60 % of base) : 86141.dasm - System.Xml.Schema.XsdDateTime:ToZulu():System.DateTime:this (FullOpts)
          -1 (-0.88 % of base) : 183138.dasm - System.Runtime.Caching.ExpiresBucket:GetFreeExpiresEntry():System.Runtime.Caching.ExpiresEntryRef:this (FullOpts)

Top method regressions (percentages):
           5 (2.59 % of base) : 223642.dasm - System.Management.PropertyDataCollection+PropertyDataEnumerator:.ctor(System.Management.ManagementBaseObject,ubyte):this (FullOpts)

Top method improvements (percentages):
          -4 (-40.00 % of base) : 7212.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (FullOpts)
          -2 (-3.03 % of base) : 128215.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          -2 (-3.03 % of base) : 114529.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          -4 (-2.30 % of base) : 223452.dasm - System.Management.PropertyDataCollection:get_Count():int:this (FullOpts)
          -9 (-1.71 % of base) : 226839.dasm - System.Text.ISO2022Encoding:CleanUpBytes(byref):ubyte:this (FullOpts)
          -8 (-1.27 % of base) : 86143.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTimeOffset (FullOpts)
          -5 (-1.14 % of base) : 226827.dasm - System.Text.EUCJPEncoding:CleanUpBytes(byref):ubyte:this (FullOpts)
          -4 (-0.93 % of base) : 185619.dasm - System.IO.Compression.InflaterManaged:DecodeUncompressedBlock(byref):ubyte:this (FullOpts)
          -2 (-0.92 % of base) : 42415.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanIdentifier_FastPath(byref):ubyte:this (FullOpts)
          -1 (-0.88 % of base) : 183138.dasm - System.Runtime.Caching.ExpiresBucket:GetFreeExpiresEntry():System.Runtime.Caching.ExpiresEntryRef:this (FullOpts)
          -6 (-0.83 % of base) : 56655.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceDelegateMethodSymbol+InvokeMethod:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          -2 (-0.60 % of base) : 86141.dasm - System.Xml.Schema.XsdDateTime:ToZulu():System.DateTime:this (FullOpts)

13 total methods with Code Size differences (12 improved, 1 regressed).


libraries.pmi.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49209656 (overridden on cmd)
Total bytes of diff: 49218456 (overridden on cmd)
Total bytes of delta: 8800 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         809 : 185683.dasm (59.44 % of base)
         665 : 185684.dasm (52.95 % of base)
         649 : 120928.dasm (9.34 % of base)
         649 : 158967.dasm (9.34 % of base)
         649 : 185600.dasm (8.54 % of base)
         540 : 185569.dasm (6.16 % of base)
         433 : 184058.dasm (20.69 % of base)
         430 : 184059.dasm (18.64 % of base)
         357 : 184062.dasm (19.06 % of base)
         348 : 184087.dasm (12.19 % of base)
         347 : 184082.dasm (16.68 % of base)
         285 : 184067.dasm (27.04 % of base)
         284 : 184073.dasm (19.36 % of base)
         266 : 184090.dasm (22.37 % of base)
         255 : 184089.dasm (20.56 % of base)
         212 : 63481.dasm (3.10 % of base)
         207 : 85540.dasm (19.04 % of base)
         177 : 200770.dasm (14.37 % of base)
         153 : 184057.dasm (15.50 % of base)
         153 : 200771.dasm (19.29 % of base)

Top file improvements (bytes):
         -58 : 120956.dasm (-3.53 % of base)
         -58 : 158995.dasm (-3.53 % of base)
         -51 : 241173.dasm (-2.42 % of base)
         -48 : 258757.dasm (-0.88 % of base)
         -38 : 31171.dasm (-2.57 % of base)
         -38 : 172295.dasm (-2.14 % of base)
         -33 : 261883.dasm (-0.71 % of base)
         -26 : 286752.dasm (-1.35 % of base)
         -22 : 63634.dasm (-1.06 % of base)
         -19 : 258430.dasm (-1.21 % of base)
         -17 : 263293.dasm (-1.03 % of base)
         -17 : 302206.dasm (-1.05 % of base)
         -17 : 257520.dasm (-1.05 % of base)
         -17 : 262015.dasm (-1.03 % of base)
         -17 : 264076.dasm (-1.05 % of base)
         -17 : 256970.dasm (-1.05 % of base)
         -17 : 260355.dasm (-1.05 % of base)
         -17 : 262926.dasm (-1.05 % of base)
         -17 : 256124.dasm (-1.05 % of base)
         -17 : 261787.dasm (-1.05 % of base)

71 total files with Code Size differences (41 improved, 30 regressed), 20 unchanged.

Top method regressions (bytes):
         809 (59.44 % of base) : 185683.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         665 (52.95 % of base) : 185684.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         649 (8.54 % of base) : 185600.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.CopiedCorHeaderNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         649 (9.34 % of base) : 120928.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         649 (9.34 % of base) : 158967.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         540 (6.16 % of base) : 185569.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DebugDirectoryNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
         433 (20.69 % of base) : 184058.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         430 (18.64 % of base) : 184059.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:TransformNativeToManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         357 (19.06 % of base) : 184062.dasm - Internal.TypeSystem.Interop.BlittableArrayMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         348 (12.19 % of base) : 184087.dasm - Internal.TypeSystem.Interop.SafeHandleMarshaller:EmitMarshalArgumentManagedToNative():this (FullOpts)
         347 (16.68 % of base) : 184082.dasm - Internal.TypeSystem.Interop.UTF8StringMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         285 (27.04 % of base) : 184067.dasm - Internal.TypeSystem.Interop.BooleanMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         284 (19.36 % of base) : 184073.dasm - Internal.TypeSystem.Interop.UnicodeStringMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         266 (22.37 % of base) : 184090.dasm - Internal.TypeSystem.Interop.DelegateMarshaller:TransformNativeToManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         255 (20.56 % of base) : 184089.dasm - Internal.TypeSystem.Interop.DelegateMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         212 (3.10 % of base) : 63481.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
         207 (19.04 % of base) : 85540.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:TryEmitComparison(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte):ubyte:this (FullOpts)
         177 (14.37 % of base) : 200770.dasm - Internal.IL.UnsafeAccessors:GenerateAccessorSpecificFailure(byref,System.String,ubyte):Internal.IL.MethodIL (FullOpts)
         153 (19.29 % of base) : 200771.dasm - Internal.IL.UnsafeAccessors:GenerateAccessorBadImageFailure(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (FullOpts)
         153 (15.50 % of base) : 184057.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:AllocManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)

Top method improvements (bytes):
         -58 (-3.53 % of base) : 120956.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -58 (-3.53 % of base) : 158995.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -51 (-2.42 % of base) : 241173.dasm - System.DirectoryServices.AdsValueHelper:GetValue():System.Object:this (FullOpts)
         -48 (-0.88 % of base) : 258757.dasm - System.Net.Http.Http2Connection+<ProcessIncomingFramesAsync>d__62:MoveNext():this (FullOpts)
         -38 (-2.57 % of base) : 31171.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<Dump>g__dumpAncestors|112_0():Microsoft.CodeAnalysis.TreeDumperNode:this (FullOpts)
         -38 (-2.14 % of base) : 172295.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (FullOpts)
         -33 (-0.71 % of base) : 261883.dasm - Microsoft.Quic.QUIC_CONNECTION_EVENT:ToString():System.String:this (FullOpts)
         -26 (-1.35 % of base) : 286752.dasm - System.Text.RegularExpressions.RegexLWCGCompiler:FactoryInstanceFromCode(System.String,System.Text.RegularExpressions.RegexTree,int,ubyte):System.Text.RegularExpressions.RegexRunnerFactory:this (FullOpts)
         -22 (-1.06 % of base) : 63634.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int,int):this (FullOpts)
         -19 (-1.21 % of base) : 258430.dasm - System.Net.Http.HttpConnection+<FillAsync>d__83:MoveNext():this (FullOpts)
         -17 (-1.03 % of base) : 263293.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.05 % of base) : 302206.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.05 % of base) : 257520.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.03 % of base) : 262015.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.05 % of base) : 264076.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.05 % of base) : 256970.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.05 % of base) : 260355.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.05 % of base) : 262926.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.05 % of base) : 256124.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)
         -17 (-1.05 % of base) : 261787.dasm - System.Net.NetEventSource:Format(System.Object):System.String (FullOpts)

Top method regressions (percentages):
         809 (59.44 % of base) : 185683.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         131 (54.81 % of base) : 200784.dasm - Internal.IL.Stubs.ILCodeStream:Emit(int,Internal.IL.Stubs.ILCodeLabel):this (FullOpts)
         665 (52.95 % of base) : 185684.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.ImportThunk:EmitCode(ILCompiler.DependencyAnalysis.NodeFactory,byref,ubyte):this (FullOpts)
         285 (27.04 % of base) : 184067.dasm - Internal.TypeSystem.Interop.BooleanMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         131 (24.95 % of base) : 184160.dasm - Internal.IL.HelperExtensions:EmitCallThrowHelper(Internal.IL.Stubs.ILCodeStream,Internal.IL.Stubs.ILEmitter,Internal.TypeSystem.MethodDesc) (FullOpts)
         131 (24.62 % of base) : 200688.dasm - Internal.IL.HelperExtensions:EmitCallThrowHelper(Internal.IL.Stubs.ILCodeStream,Internal.IL.Stubs.ILEmitter,Internal.TypeSystem.MethodDesc) (FullOpts)
         127 (22.88 % of base) : 184078.dasm - Internal.TypeSystem.Interop.AnsiStringMarshaller:EmitCleanupManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         127 (22.44 % of base) : 184075.dasm - Internal.TypeSystem.Interop.UnicodeStringMarshaller:EmitCleanupManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         266 (22.37 % of base) : 184090.dasm - Internal.TypeSystem.Interop.DelegateMarshaller:TransformNativeToManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         433 (20.69 % of base) : 184058.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         255 (20.56 % of base) : 184089.dasm - Internal.TypeSystem.Interop.DelegateMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         284 (19.36 % of base) : 184073.dasm - Internal.TypeSystem.Interop.UnicodeStringMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         153 (19.29 % of base) : 200771.dasm - Internal.IL.UnsafeAccessors:GenerateAccessorBadImageFailure(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL (FullOpts)
         357 (19.06 % of base) : 184062.dasm - Internal.TypeSystem.Interop.BlittableArrayMarshaller:AllocAndTransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         207 (19.04 % of base) : 85540.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:TryEmitComparison(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte):ubyte:this (FullOpts)
         430 (18.64 % of base) : 184059.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:TransformNativeToManaged(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         347 (16.68 % of base) : 184082.dasm - Internal.TypeSystem.Interop.UTF8StringMarshaller:TransformManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         153 (15.50 % of base) : 184057.dasm - Internal.TypeSystem.Interop.ArrayMarshaller:AllocManagedToNative(Internal.IL.Stubs.ILCodeStream):this (FullOpts)
         177 (14.37 % of base) : 200770.dasm - Internal.IL.UnsafeAccessors:GenerateAccessorSpecificFailure(byref,System.String,ubyte):Internal.IL.MethodIL (FullOpts)
         348 (12.19 % of base) : 184087.dasm - Internal.TypeSystem.Interop.SafeHandleMarshaller:EmitMarshalArgumentManagedToNative():this (FullOpts)

Top method improvements (percentages):
          -1 (-7.14 % of base) : 5279.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:ResetHighWatermark():this (FullOpts)
          -4 (-5.33 % of base) : 296453.dasm - Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.WildcardPathSegment:.cctor() (FullOpts)
         -58 (-3.53 % of base) : 120956.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -58 (-3.53 % of base) : 158995.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -12 (-3.26 % of base) : 286950.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:get_BeginningAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -12 (-3.26 % of base) : 286954.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:get_BolAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -12 (-3.26 % of base) : 286956.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:get_BoundaryAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -12 (-3.26 % of base) : 286951.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:get_EndAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -12 (-3.26 % of base) : 286952.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:get_EndAnchorZ():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -12 (-3.26 % of base) : 286953.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:get_EndAnchorZReverse():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -12 (-3.26 % of base) : 286955.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:get_EolAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -12 (-3.26 % of base) : 286957.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:get_NonBoundaryAnchor():System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts)
         -10 (-2.73 % of base) : 249646.dasm - System.Linq.ParallelEnumerable:Aggregate[System.Numerics.Vector`1[float]](System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]],System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float] (FullOpts)
         -38 (-2.57 % of base) : 31171.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<Dump>g__dumpAncestors|112_0():Microsoft.CodeAnalysis.TreeDumperNode:this (FullOpts)
         -51 (-2.42 % of base) : 241173.dasm - System.DirectoryServices.AdsValueHelper:GetValue():System.Object:this (FullOpts)
         -38 (-2.14 % of base) : 172295.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (FullOpts)
         -12 (-1.92 % of base) : 140.dasm - PrepareBase:FinishType(System.Type):this (FullOpts)
          -9 (-1.71 % of base) : 281942.dasm - System.Text.ISO2022Encoding:CleanUpBytes(byref):ubyte:this (FullOpts)
          -9 (-1.56 % of base) : 172294.dasm - System.Xml.Schema.XsdDateTime:ToZulu():System.DateTime:this (FullOpts)
          -6 (-1.47 % of base) : 262499.dasm - System.Net.HttpWebRequest:get_Host():System.String:this (FullOpts)


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 186454825 (overridden on cmd)
Total bytes of diff: 186417643 (overridden on cmd)
Total bytes of delta: -37182 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         177 : 147932.dasm (4.21 % of base)
         148 : 348042.dasm (2.34 % of base)
         103 : 580380.dasm (2.45 % of base)
         102 : 619717.dasm (4.45 % of base)
          94 : 422411.dasm (2.81 % of base)
          93 : 330945.dasm (4.57 % of base)
          84 : 593473.dasm (6.73 % of base)
          80 : 365971.dasm (3.17 % of base)
          80 : 365990.dasm (3.18 % of base)
          76 : 365915.dasm (3.02 % of base)
          69 : 365891.dasm (1.96 % of base)
          57 : 576395.dasm (2.62 % of base)
          40 : 560493.dasm (0.58 % of base)
          34 : 424683.dasm (0.67 % of base)
          32 : 597957.dasm (3.94 % of base)
          28 : 203398.dasm (0.58 % of base)
          24 : 62669.dasm (0.68 % of base)
          22 : 577707.dasm (1.68 % of base)
          19 : 577708.dasm (2.83 % of base)
          19 : 579670.dasm (2.09 % of base)

Top file improvements (bytes):
      -32768 : 401707.dasm (-18.18 % of base)
       -2048 : 401512.dasm (-18.15 % of base)
        -265 : 161563.dasm (-4.09 % of base)
        -248 : 401734.dasm (-96.12 % of base)
        -166 : 575136.dasm (-4.35 % of base)
        -114 : 242586.dasm (-17.17 % of base)
        -104 : 365629.dasm (-5.78 % of base)
        -102 : 339306.dasm (-6.27 % of base)
         -70 : 320129.dasm (-1.51 % of base)
         -64 : 401508.dasm (-17.16 % of base)
         -51 : 360964.dasm (-0.97 % of base)
         -46 : 323087.dasm (-25.84 % of base)
         -43 : 116427.dasm (-6.28 % of base)
         -38 : 422627.dasm (-2.61 % of base)
         -37 : 467471.dasm (-2.77 % of base)
         -36 : 576256.dasm (-3.12 % of base)
         -36 : 471991.dasm (-4.00 % of base)
         -31 : 287146.dasm (-3.43 % of base)
         -31 : 78900.dasm (-3.40 % of base)
         -30 : 169780.dasm (-4.02 % of base)

75 total files with Code Size differences (50 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
         177 (4.21 % of base) : 147932.dasm - Microsoft.Gen.OptionsValidation.Unit.Test.__NestedOptionsValidator__:Validate(System.String,Microsoft.Gen.OptionsValidation.Unit.Test.NestedOptions):Microsoft.Extensions.Options.ValidateOptionsResult (Tier0-FullOpts)
         148 (2.34 % of base) : 348042.dasm - System.Net.Primitives.Functional.Tests.IPEndPointParsing:Parse_InvalidPort_Throws(System.String,ubyte):this (Tier0-FullOpts)
         103 (2.45 % of base) : 580380.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOrPatternForIsOperator():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode:this (Tier1)
         102 (4.45 % of base) : 619717.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (Tier0-FullOpts)
          94 (2.81 % of base) : 422411.dasm - System.Tests.StringTests+<ToLower_Culture_TestData>d__316:MoveNext():ubyte:this (Tier0-FullOpts)
          93 (4.57 % of base) : 330945.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
          84 (6.73 % of base) : 593473.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordClone:MakeParametersAndBindReturnType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]]:this (Tier1)
          80 (3.17 % of base) : 365971.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest2():this (Tier0-FullOpts)
          80 (3.18 % of base) : 365990.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest3():this (Tier0-FullOpts)
          76 (3.02 % of base) : 365915.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest4():this (Tier0-FullOpts)
          69 (1.96 % of base) : 365891.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest5():this (Tier0-FullOpts)
          57 (2.62 % of base) : 576395.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (Tier1)
          40 (0.58 % of base) : 560493.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (Tier0-FullOpts)
          34 (0.67 % of base) : 424683.dasm - System.Numerics.Tests.ComplexTests:ToStringTest(double,double) (Tier0-FullOpts)
          32 (3.94 % of base) : 597957.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:AddMultiLineRawStringLiteralLineContents(System.Text.StringBuilder,System.Text.StringBuilder,ubyte):this (Tier0-FullOpts)
          28 (0.58 % of base) : 203398.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GenerateInterfaceViewProxyType(System.Type):System.Type (Tier0-FullOpts)
          24 (0.68 % of base) : 62669.dasm - System.Globalization.Tests.InvariantModeTests:TestCasing():this (Tier0-FullOpts)
          22 (1.68 % of base) : 577707.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitShortCircuitingOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte,ubyte,ubyte):this (Tier1)
          19 (2.83 % of base) : 577708.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitCondExpr(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (Tier1)
          19 (2.09 % of base) : 579670.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitUnaryOperatorExpression(Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator,ubyte):this (Tier1)

Top method improvements (bytes):
      -32768 (-18.18 % of base) : 401707.dasm - TestType:meth1():int (Tier0)
       -2048 (-18.15 % of base) : 401512.dasm - TestType:meth1():int (Tier0)
        -265 (-4.09 % of base) : 161563.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
        -248 (-96.12 % of base) : 401734.dasm - TestType:meth1():int (Tier0)
        -166 (-4.35 % of base) : 575136.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldLoad(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,ubyte):this (Tier1)
        -114 (-17.17 % of base) : 242586.dasm - SdtEventSources.EventSourceTest:EventWithXferManyTypeArgs(System.Guid,long,uint,ulong,ushort,ubyte,byte,short,ushort,float,double,System.Guid):this (Tier0)
        -104 (-5.78 % of base) : 365629.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4FieldOffsetTest():this (Tier0)
        -102 (-6.27 % of base) : 339306.dasm - System.Net.Tests.HttpListenerFactory:GetContent(System.String,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.String],ubyte):ubyte[]:this (Tier0-FullOpts)
         -70 (-1.51 % of base) : 320129.dasm - System.SpanTests.ReadOnlySpanTests:.cctor() (Tier0)
         -64 (-17.16 % of base) : 401508.dasm - TestType:meth1():int (Tier0)
         -51 (-0.97 % of base) : 360964.dasm - System.Net.Http.Http2Connection+<ProcessIncomingFramesAsync>d__62:MoveNext():this (Tier0-FullOpts)
         -46 (-25.84 % of base) : 323087.dasm - System.SpanTests.SpanTests:.cctor() (Tier0)
         -43 (-6.28 % of base) : 116427.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:MessageJson(int,int,System.String,int,System.String,System.String,System.String,System.String):this (Tier0)
         -38 (-2.61 % of base) : 422627.dasm - System.Tests.StringTests:ContainsNoMatch_StringComparison() (Tier0-FullOpts)
         -37 (-2.77 % of base) : 467471.dasm - System.Security.Cryptography.Cose.Tests.CoseMessageTests_Sign_CustomHeaderMaps:SignVerifyWithCustomCoseHeaderMaps():this (Tier0-FullOpts)
         -36 (-3.12 % of base) : 576256.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (Tier1)
         -36 (-4.00 % of base) : 471991.dasm - System.Security.Cryptography.Pkcs.Tests.TimestampRequestTests:VerifyExpectedRequest(System.Security.Cryptography.Pkcs.Rfc3161TimestampRequest,ubyte) (Tier0)
         -31 (-3.43 % of base) : 287146.dasm - System.IO.Hashing.XxHashShared:MergeAccumulators(uint,uint,ulong):ulong (Tier0)
         -31 (-3.40 % of base) : 78900.dasm - System.IO.Hashing.XxHashShared:MergeAccumulators(uint,uint,ulong):ulong (Tier0)
         -30 (-4.02 % of base) : 169780.dasm - Microsoft.VisualBasic.Strings:Chr(int):ushort (Instrumented Tier0)

Top method regressions (percentages):
           3 (20.00 % of base) : 245442.dasm - System.Drawing.Point:LowInt16(int):short (Tier0)
           3 (16.67 % of base) : 245443.dasm - System.Drawing.Point:HighInt16(int):short (Tier0)
           6 (7.23 % of base) : 245440.dasm - System.Drawing.PrimitivesTests.PointTests:SingleIntConstructorTest(int):this (Tier0)
          84 (6.73 % of base) : 593473.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordClone:MakeParametersAndBindReturnType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]]:this (Tier1)
          93 (4.57 % of base) : 330945.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
         102 (4.45 % of base) : 619717.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (Tier0-FullOpts)
         177 (4.21 % of base) : 147932.dasm - Microsoft.Gen.OptionsValidation.Unit.Test.__NestedOptionsValidator__:Validate(System.String,Microsoft.Gen.OptionsValidation.Unit.Test.NestedOptions):Microsoft.Extensions.Options.ValidateOptionsResult (Tier0-FullOpts)
          32 (3.94 % of base) : 597957.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:AddMultiLineRawStringLiteralLineContents(System.Text.StringBuilder,System.Text.StringBuilder,ubyte):this (Tier0-FullOpts)
          80 (3.18 % of base) : 365990.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest3():this (Tier0-FullOpts)
          80 (3.17 % of base) : 365971.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest2():this (Tier0-FullOpts)
          76 (3.02 % of base) : 365915.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest4():this (Tier0-FullOpts)
          19 (2.83 % of base) : 577708.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitCondExpr(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (Tier1)
          94 (2.81 % of base) : 422411.dasm - System.Tests.StringTests+<ToLower_Culture_TestData>d__316:MoveNext():ubyte:this (Tier0-FullOpts)
          57 (2.62 % of base) : 576395.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (Tier1)
           2 (2.50 % of base) : 155627.dasm - Microsoft.CodeAnalysis.XmlCharType:IsStartNCNameCharXml4e(ushort):ubyte (Tier1)
           2 (2.50 % of base) : 563348.dasm - Microsoft.CodeAnalysis.XmlCharType:IsStartNCNameCharXml4e(ushort):ubyte (Tier1)
         103 (2.45 % of base) : 580380.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOrPatternForIsOperator():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode:this (Tier1)
         148 (2.34 % of base) : 348042.dasm - System.Net.Primitives.Functional.Tests.IPEndPointParsing:Parse_InvalidPort_Throws(System.String,ubyte):this (Tier0-FullOpts)
          19 (2.09 % of base) : 579670.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitUnaryOperatorExpression(Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator,ubyte):this (Tier1)
          69 (1.96 % of base) : 365891.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest5():this (Tier0-FullOpts)

Top method improvements (percentages):
        -248 (-96.12 % of base) : 401734.dasm - TestType:meth1():int (Tier0)
         -14 (-58.33 % of base) : 401733.dasm - TestType:meth1():int (Tier0)
          -9 (-47.37 % of base) : 64568.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:get_BufferSize():int (Tier0)
         -21 (-40.38 % of base) : 2994.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,int]:.cctor() (Tier0)
          -4 (-40.00 % of base) : 460368.dasm - System.Text.Rune:get_ReplacementChar():System.Text.Rune (Instrumented Tier1)
          -9 (-37.50 % of base) : 2944.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[int,int]:.cctor() (Tier0)
          -9 (-37.50 % of base) : 64936.dasm - System.Runtime.InteropServices.Marshalling.SpanMarshaller`2+ManagedToUnmanagedIn[SharedTypes.BoolStruct,SharedTypes.BoolStructMarshaller+BoolStructNative]:.cctor() (Tier0)
          -9 (-36.00 % of base) : 364967.dasm - System.Numerics.Vector`1[ushort]:get_Count():int (Tier0)
         -46 (-25.84 % of base) : 323087.dasm - System.SpanTests.SpanTests:.cctor() (Tier0)
         -27 (-25.23 % of base) : 419634.dasm - System.Runtime.Intrinsics.Vector512:ExtractMostSignificantBits[long](System.Runtime.Intrinsics.Vector512`1[long]):ulong (Tier0)
          -3 (-23.08 % of base) : 401732.dasm - TestType:meth1():int (Tier0)
          -7 (-21.21 % of base) : 2593.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+ImplicitThis+INativeObject:.cctor() (Tier0)
          -7 (-21.21 % of base) : 2812.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObject:.cctor() (Tier0)
          -7 (-21.21 % of base) : 2848.dasm - ComInterfaceGenerator.Tests.NativeExportsNE+UnmanagedToManagedCustomMarshalling+INativeObjectStateful:.cctor() (Tier0)
          -7 (-20.59 % of base) : 417348.dasm - System.Runtime.InteropServices.Tests.NativeMemoryTests+<>c:<AlignedAllocNonPowerOfTwoAlignmentTest>b__4_1():this (Tier0)
          -4 (-19.05 % of base) : 412332.dasm - System.Runtime.Caching.ExpiresEntryRef:get_Index():int:this (Tier0)
      -32768 (-18.18 % of base) : 401707.dasm - TestType:meth1():int (Tier0)
       -2048 (-18.15 % of base) : 401512.dasm - TestType:meth1():int (Tier0)
        -114 (-17.17 % of base) : 242586.dasm - SdtEventSources.EventSourceTest:EventWithXferManyTypeArgs(System.Guid,long,uint,ulong,ushort,ubyte,byte,short,ushort,float,double,System.Guid):this (Tier0)
         -64 (-17.16 % of base) : 401508.dasm - TestType:meth1():int (Tier0)


librariestestsnotieredcompilation.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 103643834 (overridden on cmd)
Total bytes of diff: 103611200 (overridden on cmd)
Total bytes of delta: -32634 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         519 : 57012.dasm (8.47 % of base)
         146 : 160398.dasm (2.31 % of base)
         102 : 312963.dasm (4.45 % of base)
         101 : 213515.dasm (7.65 % of base)
          95 : 188773.dasm (9.74 % of base)
          94 : 193198.dasm (2.23 % of base)
          93 : 154819.dasm (4.57 % of base)
          86 : 46768.dasm (2.04 % of base)
          80 : 167305.dasm (3.18 % of base)
          80 : 167283.dasm (3.17 % of base)
          76 : 167242.dasm (3.02 % of base)
          69 : 167227.dasm (1.96 % of base)
          67 : 53003.dasm (1.88 % of base)
          59 : 56818.dasm (1.84 % of base)
          55 : 54788.dasm (1.60 % of base)
          46 : 120390.dasm (3.60 % of base)
          44 : 278258.dasm (1.09 % of base)
          40 : 277631.dasm (0.57 % of base)
          26 : 161124.dasm (1.41 % of base)
          24 : 198405.dasm (0.99 % of base)

Top file improvements (bytes):
      -32768 : 184702.dasm (-18.18 % of base)
        -255 : 167312.dasm (-16.15 % of base)
        -160 : 167301.dasm (-6.20 % of base)
        -160 : 167250.dasm (-6.22 % of base)
        -160 : 167567.dasm (-6.20 % of base)
         -96 : 157433.dasm (-5.76 % of base)
         -56 : 167337.dasm (-3.75 % of base)
         -56 : 167279.dasm (-3.75 % of base)
         -48 : 164440.dasm (-0.91 % of base)
         -48 : 152117.dasm (-4.66 % of base)
         -38 : 64042.dasm (-2.14 % of base)
         -38 : 200886.dasm (-2.49 % of base)
         -38 : 222745.dasm (-2.49 % of base)
         -37 : 125866.dasm (-4.37 % of base)
         -37 : 226229.dasm (-2.77 % of base)
         -37 : 125151.dasm (-4.37 % of base)
         -36 : 188641.dasm (-1.85 % of base)
         -34 : 167254.dasm (-4.33 % of base)
         -34 : 167285.dasm (-4.33 % of base)
         -34 : 167565.dasm (-4.31 % of base)

72 total files with Code Size differences (44 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
         519 (8.47 % of base) : 57012.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         146 (2.31 % of base) : 160398.dasm - System.Net.Primitives.Functional.Tests.IPEndPointParsing:Parse_InvalidPort_Throws(System.String,ubyte):this (FullOpts)
         102 (4.45 % of base) : 312963.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
         101 (7.65 % of base) : 213515.dasm - System.Tests.DateTimeTests:TryParse_TimeDesignators_NetCore() (FullOpts)
          95 (9.74 % of base) : 188773.dasm - System.Reflection.Metadata.Ecma335.Tests.MetadataTokensTests:HandleFactories_FromToken():this (FullOpts)
          94 (2.23 % of base) : 193198.dasm - System.Runtime.CompilerServices.UnsafeTests:BitCast() (FullOpts)
          93 (4.57 % of base) : 154819.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (FullOpts)
          86 (2.04 % of base) : 46768.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
          80 (3.17 % of base) : 167283.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest2():this (FullOpts)
          80 (3.18 % of base) : 167305.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest3():this (FullOpts)
          76 (3.02 % of base) : 167242.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest4():this (FullOpts)
          69 (1.96 % of base) : 167227.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest5():this (FullOpts)
          67 (1.88 % of base) : 53003.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)
          59 (1.84 % of base) : 56818.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
          55 (1.60 % of base) : 54788.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts)
          46 (3.60 % of base) : 120390.dasm - System.Formats.Cbor.Tests.CborWriterTests:CoseKeyHelpers_ECDsaExportCosePublicKey_HappyPath(System.String,System.String,System.String,System.String,System.String) (FullOpts)
          44 (1.09 % of base) : 278258.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitArrayElementLoad(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess,ubyte):this (FullOpts)
          40 (0.57 % of base) : 277631.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:ConvertToSymbolicRegexNode(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BDD]:this (FullOpts)
          26 (1.41 % of base) : 161124.dasm - System.Net.Quic.Tests.QuicTestBase:.cctor() (FullOpts)
          24 (0.99 % of base) : 198405.dasm - System.Reflection.Metadata.ApplyUpdateUtil:ApplyUpdate(System.Reflection.Assembly,ubyte) (FullOpts)

Top method improvements (bytes):
      -32768 (-18.18 % of base) : 184702.dasm - TestType:meth1():int (Tier0-MinOpts)
        -255 (-16.15 % of base) : 167312.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest1():this (FullOpts)
        -160 (-6.22 % of base) : 167250.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixWithScaledMatrixTest1():this (FullOpts)
        -160 (-6.20 % of base) : 167567.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixWithScaledMatrixTest2():this (FullOpts)
        -160 (-6.20 % of base) : 167301.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixWithScaledMatrixTest3():this (FullOpts)
         -96 (-5.76 % of base) : 157433.dasm - System.Net.Tests.HttpListenerFactory:GetContent(System.String,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.String],ubyte):ubyte[]:this (FullOpts)
         -56 (-3.75 % of base) : 167337.dasm - System.Numerics.Tests.QuaternionTests:QuaternionLerpTest():this (FullOpts)
         -56 (-3.75 % of base) : 167279.dasm - System.Numerics.Tests.QuaternionTests:QuaternionSlerpTest():this (FullOpts)
         -48 (-0.91 % of base) : 164440.dasm - System.Net.Http.Http2Connection+<ProcessIncomingFramesAsync>d__62:MoveNext():this (FullOpts)
         -48 (-4.66 % of base) : 152117.dasm - System.Text.Json.ThrowHelper:ReThrowWithPath(byref,System.Text.Json.JsonReaderException) (FullOpts)
         -38 (-2.49 % of base) : 200886.dasm - System.Tests.StringTests:ContainsNoMatch_StringComparison() (FullOpts)
         -38 (-2.49 % of base) : 222745.dasm - System.Tests.StringTests:ContainsNoMatch_StringComparison() (FullOpts)
         -38 (-2.14 % of base) : 64042.dasm - System.Xml.Schema.XsdDateTime:op_Implicit(System.Xml.Schema.XsdDateTime):System.DateTime (FullOpts)
         -37 (-4.37 % of base) : 125866.dasm - System.Globalization.Tests.DateTimeFormatInfoMiscTests:TestFirstYearOfJapaneseEra():this (FullOpts)
         -37 (-4.37 % of base) : 125151.dasm - System.Globalization.Tests.DateTimeFormatInfoMiscTests:TestFirstYearOfJapaneseEra():this (FullOpts)
         -37 (-2.77 % of base) : 226229.dasm - System.Security.Cryptography.Cose.Tests.CoseMessageTests_Sign_CustomHeaderMaps:SignVerifyWithCustomCoseHeaderMaps():this (FullOpts)
         -36 (-1.85 % of base) : 188641.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests:CustomAttributeElementTypeEncoder_PrimitiveType():this (FullOpts)
         -34 (-4.33 % of base) : 167254.dasm - System.Numerics.Tests.QuaternionTests:QuaternionLerpTest1():this (FullOpts)
         -34 (-4.33 % of base) : 167285.dasm - System.Numerics.Tests.QuaternionTests:QuaternionSlerpTest1():this (FullOpts)
         -34 (-4.31 % of base) : 167565.dasm - System.Numerics.Tests.QuaternionTests:QuaternionSlerpTest2():this (FullOpts)

Top method regressions (percentages):
          95 (9.74 % of base) : 188773.dasm - System.Reflection.Metadata.Ecma335.Tests.MetadataTokensTests:HandleFactories_FromToken():this (FullOpts)
         519 (8.47 % of base) : 57012.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         101 (7.65 % of base) : 213515.dasm - System.Tests.DateTimeTests:TryParse_TimeDesignators_NetCore() (FullOpts)
          93 (4.57 % of base) : 154819.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (FullOpts)
         102 (4.45 % of base) : 312963.dasm - System.Threading.Tests.EtwTests+<>c:<WaitHandleWaitEventTest>b__1_0():this (FullOpts)
          46 (3.60 % of base) : 120390.dasm - System.Formats.Cbor.Tests.CborWriterTests:CoseKeyHelpers_ECDsaExportCosePublicKey_HappyPath(System.String,System.String,System.String,System.String,System.String) (FullOpts)
          14 (3.60 % of base) : 57841.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:get_CompareLesserData():Xunit.TheoryData`2[Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegmentComparer] (FullOpts)
          80 (3.18 % of base) : 167305.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest3():this (FullOpts)
          80 (3.17 % of base) : 167283.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest2():this (FullOpts)
          12 (3.03 % of base) : 160106.dasm - System.Net.NetworkInformation.Tests.IPGlobalPropertiesTest:IPGlobalProperties_UdpListeners_Succeed(System.Net.IPAddress):this (FullOpts)
          76 (3.02 % of base) : 167242.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest4():this (FullOpts)
          12 (2.93 % of base) : 160154.dasm - System.Net.NetworkInformation.Tests.IPGlobalPropertiesTest:IPGlobalProperties_TcpListeners_Succeed(System.Net.IPAddress):this (FullOpts)
         146 (2.31 % of base) : 160398.dasm - System.Net.Primitives.Functional.Tests.IPEndPointParsing:Parse_InvalidPort_Throws(System.String,ubyte):this (FullOpts)
           2 (2.30 % of base) : 31126.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          94 (2.23 % of base) : 193198.dasm - System.Runtime.CompilerServices.UnsafeTests:BitCast() (FullOpts)
          19 (2.19 % of base) : 42609.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions+__Method9Struct:ToString():System.String:this (FullOpts)
          19 (2.19 % of base) : 48127.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions+__Method9Struct:ToString():System.String:this (FullOpts)
          19 (2.19 % of base) : 42449.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M2Struct:ToString():System.String:this (FullOpts)
          19 (2.19 % of base) : 48153.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TemplateTestExtensions+__M2Struct:ToString():System.String:this (FullOpts)
          86 (2.04 % of base) : 46768.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitCallExpression(Microsoft.CodeAnalysis.CSharp.BoundCall,int):this (FullOpts)

Top method improvements (percentages):
          -4 (-25.00 % of base) : 242073.dasm - System.Text.Encodings.Web.Tests.InboxEncoderCommonTestBase:TryEncodeUnicodeScalar_DisallowedSupplementaryChar():this (FullOpts)
          -3 (-20.00 % of base) : 213453.dasm - System.Tests.DateTimeTests+<>c:<Parse_InvalidArguments_Throws>b__134_2():System.Object:this (FullOpts)
          -3 (-20.00 % of base) : 213352.dasm - System.Tests.DateTimeTests+<>c:<ParseExact_InvalidArguments_Throws>b__136_1():System.Object:this (FullOpts)
          -3 (-20.00 % of base) : 213358.dasm - System.Tests.DateTimeTests+<>c:<ParseExact_InvalidArguments_Throws>b__136_7():System.Object:this (FullOpts)
          -3 (-20.00 % of base) : 221915.dasm - System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__165_1():System.Object:this (FullOpts)
          -3 (-20.00 % of base) : 221916.dasm - System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__165_2():System.Object:this (FullOpts)
          -3 (-20.00 % of base) : 200418.dasm - System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__266_1():System.Object:this (FullOpts)
          -3 (-20.00 % of base) : 200419.dasm - System.Tests.StringTests+<>c:<LastIndexOfAny_Invalid>b__266_2():System.Object:this (FullOpts)
      -32768 (-18.18 % of base) : 184702.dasm - TestType:meth1():int (Tier0-MinOpts)
        -255 (-16.15 % of base) : 167312.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixTest1():this (FullOpts)
          -3 (-15.00 % of base) : 222054.dasm - System.Tests.StringTests+<>c:<IndexOf_Invalid>b__117_24():System.Object:this (FullOpts)
          -3 (-15.00 % of base) : 222056.dasm - System.Tests.StringTests+<>c:<IndexOf_Invalid>b__117_26():System.Object:this (FullOpts)
          -3 (-15.00 % of base) : 200359.dasm - System.Tests.StringTests+<>c:<IndexOf_Invalid>b__218_24():System.Object:this (FullOpts)
          -3 (-15.00 % of base) : 200361.dasm - System.Tests.StringTests+<>c:<IndexOf_Invalid>b__218_26():System.Object:this (FullOpts)
          -3 (-10.34 % of base) : 188642.dasm - System.Reflection.Metadata.Ecma335.Tests.BlobEncodersTests+<>c__DisplayClass40_0:<CustomAttributeElementTypeEncoder_PrimitiveType>b__0():this (FullOpts)
         -12 (-6.35 % of base) : 44720.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:MakeDeclarationModifiers(uint,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):uint:this (FullOpts)
         -12 (-6.35 % of base) : 49952.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol:MakeDeclarationModifiers(uint,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):uint:this (FullOpts)
        -160 (-6.22 % of base) : 167250.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixWithScaledMatrixTest1():this (FullOpts)
        -160 (-6.20 % of base) : 167567.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixWithScaledMatrixTest2():this (FullOpts)
        -160 (-6.20 % of base) : 167301.dasm - System.Numerics.Tests.QuaternionTests:QuaternionFromRotationMatrixWithScaledMatrixTest3():this (FullOpts)


realworld.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11348723 (overridden on cmd)
Total bytes of diff: 11349420 (overridden on cmd)
Total bytes of delta: 697 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         519 : 28994.dasm (8.47 % of base)
         179 : 29554.dasm (2.83 % of base)
          59 : 28724.dasm (1.83 % of base)
          45 : 29330.dasm (1.20 % of base)
          44 : 28995.dasm (1.09 % of base)
          22 : 1242.dasm (13.75 % of base)
           7 : 18482.dasm (0.80 % of base)
           7 : 28980.dasm (0.25 % of base)
           7 : 29331.dasm (0.43 % of base)
           7 : 29023.dasm (0.34 % of base)
           7 : 29026.dasm (0.27 % of base)
           7 : 29758.dasm (0.52 % of base)
           6 : 28873.dasm (0.33 % of base)
           6 : 29125.dasm (0.47 % of base)
           6 : 28893.dasm (0.45 % of base)
           3 : 15042.dasm (0.51 % of base)
           3 : 15050.dasm (0.50 % of base)
           2 : 18486.dasm (2.30 % of base)
           2 : 19619.dasm (0.30 % of base)

Top file improvements (bytes):
         -25 : 28738.dasm (-1.77 % of base)
         -18 : 18420.dasm (-0.66 % of base)
         -15 : 14529.dasm (-1.76 % of base)
         -15 : 14528.dasm (-1.48 % of base)
         -15 : 28742.dasm (-1.10 % of base)
         -14 : 15005.dasm (-0.65 % of base)
         -10 : 14507.dasm (-0.47 % of base)
         -10 : 14721.dasm (-0.79 % of base)
          -7 : 14404.dasm (-1.42 % of base)
          -7 : 18150.dasm (-0.90 % of base)
          -7 : 18459.dasm (-0.36 % of base)
          -7 : 14414.dasm (-1.24 % of base)
          -6 : 18597.dasm (-0.20 % of base)
          -6 : 14521.dasm (-1.01 % of base)
          -5 : 18213.dasm (-0.15 % of base)
          -5 : 18345.dasm (-0.18 % of base)
          -4 : 15598.dasm (-1.50 % of base)
          -4 : 18176.dasm (-0.90 % of base)
          -4 : 19228.dasm (-0.20 % of base)
          -4 : 18188.dasm (-0.43 % of base)

48 total files with Code Size differences (29 improved, 19 regressed), 14 unchanged.

Top method regressions (bytes):
         519 (8.47 % of base) : 28994.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         179 (2.83 % of base) : 29554.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
          59 (1.83 % of base) : 28724.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
          45 (1.20 % of base) : 29330.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoweredConditionalAccessExpression(Microsoft.CodeAnalysis.CSharp.BoundLoweredConditionalAccess,ubyte):this (FullOpts)
          44 (1.09 % of base) : 28995.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitArrayElementLoad(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess,ubyte):this (FullOpts)
          22 (13.75 % of base) : 1242.dasm - BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)
           7 (0.52 % of base) : 29758.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCheckedOperatorInstruction(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):this (FullOpts)
           7 (0.25 % of base) : 28980.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryOperatorInstruction(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):this (FullOpts)
           7 (0.43 % of base) : 29331.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitDefaultValue(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
           7 (0.34 % of base) : 29023.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitIndirectStore(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
           7 (0.27 % of base) : 29026.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoadIndirect(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
           7 (0.80 % of base) : 18482.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DocumentationCommentParser:ParseXmlName():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.XmlNameSyntax:this (FullOpts)
           6 (0.33 % of base) : 28873.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldLoadNoIndirection(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,ubyte):this (FullOpts)
           6 (0.45 % of base) : 28893.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceFieldAddress(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,int):Microsoft.CodeAnalysis.CodeGen.LocalDefinition:this (FullOpts)
           6 (0.47 % of base) : 29125.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingOperator,ubyte):this (FullOpts)
           3 (0.51 % of base) : 15042.dasm - Microsoft.ML.Runtime.HostEnvironmentBase`1[System.__Canon]:Register(System.String,System.Nullable`1[int],System.Nullable`1[ubyte]):Microsoft.ML.Runtime.IHost:this (FullOpts)
           3 (0.50 % of base) : 15050.dasm - Microsoft.ML.Runtime.HostEnvironmentBase`1+HostBase[System.__Canon]:Register(System.String,System.Nullable`1[int],System.Nullable`1[ubyte]):Microsoft.ML.Runtime.IHost:this (FullOpts)
           2 (0.30 % of base) : 19619.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:GetValueDecimal(System.String,int,int):System.Decimal:this (FullOpts)
           2 (2.30 % of base) : 18486.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)

Top method improvements (bytes):
         -25 (-1.77 % of base) : 28738.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -18 (-0.66 % of base) : 18420.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanNumericLiteral(byref):ubyte:this (FullOpts)
         -15 (-1.10 % of base) : 28742.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -15 (-1.76 % of base) : 14529.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman:CompressBlock():this (FullOpts)
         -15 (-1.48 % of base) : 14528.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:WriteTree(SixLabors.ImageSharp.Compression.Zlib.DeflaterPendingBuffer,SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree):this (FullOpts)
         -14 (-0.65 % of base) : 15005.dasm - SixLabors.ImageSharp.Formats.Bmp.BmpEncoderCore:Write24Bit[SixLabors.ImageSharp.PixelFormats.Rgba32](System.IO.Stream,SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32]):this (FullOpts)
         -10 (-0.79 % of base) : 14721.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteColorTable[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],System.IO.Stream):this (FullOpts)
         -10 (-0.47 % of base) : 14507.dasm - SixLabors.ImageSharp.Formats.Png.PngEncoderCore:CollectTPixelBytes[SixLabors.ImageSharp.PixelFormats.Rgba32](System.ReadOnlySpan`1[SixLabors.ImageSharp.PixelFormats.Rgba32]):this (FullOpts)
          -7 (-0.90 % of base) : 18150.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:ParseResourceDescription(System.String,System.ReadOnlyMemory`1[ushort],System.String,System.Collections.Generic.IList`1[Microsoft.CodeAnalysis.Diagnostic],ubyte):Microsoft.CodeAnalysis.ResourceDescription (FullOpts)
          -7 (-0.36 % of base) : 18459.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanIdentifier_SlowPath(byref):ubyte:this (FullOpts)
          -7 (-1.24 % of base) : 14414.dasm - SixLabors.ImageSharp.PixelFormats.Rgba32+PixelOperations:FromBgr24(SixLabors.ImageSharp.Configuration,System.ReadOnlySpan`1[SixLabors.ImageSharp.PixelFormats.Bgr24],System.Span`1[SixLabors.ImageSharp.PixelFormats.Rgba32]):this (FullOpts)
          -7 (-1.42 % of base) : 14404.dasm - SixLabors.ImageSharp.PixelFormats.Rgba32+PixelOperations:FromRgb24(SixLabors.ImageSharp.Configuration,System.ReadOnlySpan`1[SixLabors.ImageSharp.PixelFormats.Rgb24],System.Span`1[SixLabors.ImageSharp.PixelFormats.Rgba32]):this (FullOpts)
          -6 (-0.20 % of base) : 18597.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanXmlCrefToken(byref):ubyte:this (FullOpts)
          -6 (-1.01 % of base) : 14521.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SlideWindow():this (FullOpts)
          -5 (-0.15 % of base) : 18213.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:ValidateOptions(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Diagnostic]):this (FullOpts)
          -5 (-0.18 % of base) : 18345.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanSyntaxToken(byref):this (FullOpts)
          -4 (-0.43 % of base) : 18188.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:GetCompilationAndModuleNames(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],int,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.CommandLineSourceFile],ubyte,System.String,byref,byref,byref):this (FullOpts)
          -4 (-0.90 % of base) : 18176.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:ValidateWin32Settings(System.String,System.String,System.String,int,System.Collections.Generic.IList`1[Microsoft.CodeAnalysis.Diagnostic]) (FullOpts)
          -4 (-0.20 % of base) : 19228.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseOperatorDeclaration(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExplicitInterfaceSpecifierSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.OperatorDeclarationSyntax:this (FullOpts)
          -4 (-1.50 % of base) : 15598.dasm - Microsoft.ML.Internal.Utilities.Hashing:MurmurHash(uint,uint[],int,int):uint (FullOpts)

Top method regressions (percentages):
          22 (13.75 % of base) : 1242.dasm - BepuUtilities.Memory.IdPool:Return(int,BepuUtilities.Memory.IUnmanagedMemoryPool):this (FullOpts)
         519 (8.47 % of base) : 28994.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitNumericConversion(int,int,ubyte):this (FullOpts)
         179 (2.83 % of base) : 29554.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:TryEmitReadonlySpanAsBlobWrapper(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
           2 (2.30 % of base) : 18486.dasm - Microsoft.CodeAnalysis.XmlCharType:GetCharProperties(ushort):ubyte (FullOpts)
          59 (1.83 % of base) : 28724.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCondOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,ubyte):this (FullOpts)
          45 (1.20 % of base) : 29330.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoweredConditionalAccessExpression(Microsoft.CodeAnalysis.CSharp.BoundLoweredConditionalAccess,ubyte):this (FullOpts)
          44 (1.09 % of base) : 28995.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitArrayElementLoad(Microsoft.CodeAnalysis.CSharp.BoundArrayAccess,ubyte):this (FullOpts)
           7 (0.80 % of base) : 18482.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DocumentationCommentParser:ParseXmlName():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.XmlNameSyntax:this (FullOpts)
           7 (0.52 % of base) : 29758.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryCheckedOperatorInstruction(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):this (FullOpts)
           3 (0.51 % of base) : 15042.dasm - Microsoft.ML.Runtime.HostEnvironmentBase`1[System.__Canon]:Register(System.String,System.Nullable`1[int],System.Nullable`1[ubyte]):Microsoft.ML.Runtime.IHost:this (FullOpts)
           3 (0.50 % of base) : 15050.dasm - Microsoft.ML.Runtime.HostEnvironmentBase`1+HostBase[System.__Canon]:Register(System.String,System.Nullable`1[int],System.Nullable`1[ubyte]):Microsoft.ML.Runtime.IHost:this (FullOpts)
           6 (0.47 % of base) : 29125.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingOperator,ubyte):this (FullOpts)
           6 (0.45 % of base) : 28893.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitInstanceFieldAddress(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,int):Microsoft.CodeAnalysis.CodeGen.LocalDefinition:this (FullOpts)
           7 (0.43 % of base) : 29331.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitDefaultValue(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
           7 (0.34 % of base) : 29023.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitIndirectStore(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
           6 (0.33 % of base) : 28873.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitFieldLoadNoIndirection(Microsoft.CodeAnalysis.CSharp.BoundFieldAccess,ubyte):this (FullOpts)
           2 (0.30 % of base) : 19619.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:GetValueDecimal(System.String,int,int):System.Decimal:this (FullOpts)
           7 (0.27 % of base) : 29026.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitLoadIndirect(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
           7 (0.25 % of base) : 28980.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:EmitBinaryOperatorInstruction(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator):this (FullOpts)

Top method improvements (percentages):
         -25 (-1.77 % of base) : 28738.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalStore(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
         -15 (-1.76 % of base) : 14529.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman:CompressBlock():this (FullOpts)
          -3 (-1.53 % of base) : 15119.dasm - Microsoft.ML.Transforms.HashingTransformer+<>c__DisplayClass43_0`2[double,Microsoft.ML.Transforms.HashingTransformer+HashDouble]:<MakeScalarHashGetter>b__0(byref):this (FullOpts)
          -4 (-1.50 % of base) : 15598.dasm - Microsoft.ML.Internal.Utilities.Hashing:MurmurHash(uint,uint[],int,int):uint (FullOpts)
         -15 (-1.48 % of base) : 14528.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree:WriteTree(SixLabors.ImageSharp.Compression.Zlib.DeflaterPendingBuffer,SixLabors.ImageSharp.Compression.Zlib.DeflaterHuffman+Tree):this (FullOpts)
          -7 (-1.42 % of base) : 14404.dasm - SixLabors.ImageSharp.PixelFormats.Rgba32+PixelOperations:FromRgb24(SixLabors.ImageSharp.Configuration,System.ReadOnlySpan`1[SixLabors.ImageSharp.PixelFormats.Rgb24],System.Span`1[SixLabors.ImageSharp.PixelFormats.Rgba32]):this (FullOpts)
          -7 (-1.24 % of base) : 14414.dasm - SixLabors.ImageSharp.PixelFormats.Rgba32+PixelOperations:FromBgr24(SixLabors.ImageSharp.Configuration,System.ReadOnlySpan`1[SixLabors.ImageSharp.PixelFormats.Bgr24],System.Span`1[SixLabors.ImageSharp.PixelFormats.Rgba32]):this (FullOpts)
         -15 (-1.10 % of base) : 28742.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitLocalLoad(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
          -6 (-1.01 % of base) : 14521.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SlideWindow():this (FullOpts)
          -2 (-0.93 % of base) : 18349.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanIdentifier_FastPath(byref):ubyte:this (FullOpts)
          -7 (-0.90 % of base) : 18150.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:ParseResourceDescription(System.String,System.ReadOnlyMemory`1[ushort],System.String,System.Collections.Generic.IList`1[Microsoft.CodeAnalysis.Diagnostic],ubyte):Microsoft.CodeAnalysis.ResourceDescription (FullOpts)
          -4 (-0.90 % of base) : 18176.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:ValidateWin32Settings(System.String,System.String,System.String,int,System.Collections.Generic.IList`1[Microsoft.CodeAnalysis.Diagnostic]) (FullOpts)
         -10 (-0.79 % of base) : 14721.dasm - SixLabors.ImageSharp.Formats.Gif.GifEncoderCore:WriteColorTable[SixLabors.ImageSharp.PixelFormats.Rgba32](SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],System.IO.Stream):this (FullOpts)
          -2 (-0.69 % of base) : 31970.dasm - System.Security.Principal.WindowsIdentity:GetCurrentToken(int,ubyte,byref,byref):Microsoft.Win32.SafeHandles.SafeAccessTokenHandle (FullOpts)
         -18 (-0.66 % of base) : 18420.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanNumericLiteral(byref):ubyte:this (FullOpts)
         -14 (-0.65 % of base) : 15005.dasm - SixLabors.ImageSharp.Formats.Bmp.BmpEncoderCore:Write24Bit[SixLabors.ImageSharp.PixelFormats.Rgba32](System.IO.Stream,SixLabors.ImageSharp.Memory.Buffer2D`1[SixLabors.ImageSharp.PixelFormats.Rgba32]):this (FullOpts)
          -3 (-0.57 % of base) : 17856.dasm - Microsoft.ML.Internal.Utilities.Hashing:MurmurHash(uint,System.Text.StringBuilder,int,int,ubyte):uint (FullOpts)
          -1 (-0.56 % of base) : 19565.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:GetValueSingle(System.String):float:this (FullOpts)
          -1 (-0.55 % of base) : 19601.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:GetValueDouble(System.String):double:this (FullOpts)
          -3 (-0.53 % of base) : 15500.dasm - Microsoft.ML.Internal.Utilities.Hashing:MurmurHash(uint,System.ReadOnlySpan`1[ushort],ubyte):uint (FullOpts)