Assembly Diffs

linux arm

Diffs are based on 2,053,638 contexts (830,101 MinOpts, 1,223,537 FullOpts).

MISSED contexts: base: 71,236 (3.35%), diff: 71,237 (3.35%)

Overall (+226 bytes)

Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 321,790,690 +0
libraries.pmi.linux.arm.checked.mch 49,833,712 +204
libraries_tests.run.linux.arm.Release.mch 244,212,956 +14
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,429,126 +8

FullOpts (+226 bytes)

Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 109,318,254 +0
libraries.pmi.linux.arm.checked.mch 49,727,488 +204
libraries_tests.run.linux.arm.Release.mch 122,360,448 +14
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,358,388 +8

Example diffs

coreclr_tests.run.linux.arm.checked.mch

+0 (0.00%) : 417281.dasm - Test_b147816:main():int (FullOpts)

@@ -3,13 +3,12 @@ ; FullOpts code ; optimized code ; r11 based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data ; Final local variable assignments ;
-;* V00 loc0 [V00,T01] ( 0, 0 ) int -> zero-ref
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 cse0 [V02,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,7 +23,6 @@ G_M15237_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcr arg pop 0
movs r0, 100 ;; size=22 bbWeight=1 PerfScore 7.00 G_M15237_IG03: ; bbWeight=1, epilog, nogc, extend

+0 (0.00%) : 200148.dasm - Test_b147816:main():int (Tier0-FullOpts)

@@ -3,13 +3,12 @@ ; Tier-0 switched to FullOpts code ; optimized code ; r11 based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data ; Final local variable assignments ;
-;* V00 loc0 [V00,T01] ( 0, 0 ) int -> zero-ref
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 cse0 [V02,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,7 +23,6 @@ G_M15237_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcr arg pop 0
movs r0, 100 ;; size=22 bbWeight=1 PerfScore 7.00 G_M15237_IG03: ; bbWeight=1, epilog, nogc, extend

libraries.pmi.linux.arm.checked.mch

-20 (-22.73%) : 99389.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -8,10 +8,10 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 3, 3 ) ref -> r4 class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> r5 -; V02 loc2 [V02,T01] ( 2, 16 ) int -> r0
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> r5 +; V02 loc2 [V02,T01] ( 2, 15.84) int -> r0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T02] ( 2, 9 ) byref -> r6 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> r6 hoist "CSE - aggressive"
; ; Lcl frame size = 4 @@ -33,22 +33,19 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r6, r4, 8 ; byrRegs +[r6] ;; size=30 bbWeight=1 PerfScore 9.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs -[r0] mov r0, r5 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint
- mov r3, 256 - cmp r5, r3 - bhs SHORT G_M39919_IG06
lsls r3, r5, 2 str r0, [r6+r3] adds r5, r5, 1 cmp r5, 255 bls SHORT G_M39919_IG03
- ;; size=32 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=7.92 PerfScore 79.20
G_M39919_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; byrRegs -[r6] mov r0, r4 @@ -57,32 +54,21 @@ G_M39919_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r4] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RNGCHKFAIL - bkpt - ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 8, PerfScore 117.00, instruction count 30, allocated bytes for code 88 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 92.20, instruction count 23, allocated bytes for code 68 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058) - ---- 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 : 34 (0x00022) Actual length = 68 (0x000044) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32

libraries_tests.run.linux.arm.Release.mch

+14 (+1.06%) : 335212.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (Tier0-FullOpts)

@@ -8,54 +8,54 @@ ; 16 inlinees with PGO data; 46 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T29] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T21] ( 4, 10.01) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T28] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T13] ( 7, 21.83) ref -> r5 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T08] ( 7, 24.76) int -> r0 ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T34] ( 7, 3 ) ref -> [sp+0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T35] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.03) int -> r4
+; V04 loc4 [V04,T33] ( 7, 3 ) ref -> [sp+0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T34] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.75) int -> r4
; V07 OutArgs [V07 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T27] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T22] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T30] ( 2, 4.01) int -> r4 "Inlining Arg" -; V11 tmp4 [V11,T28] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T24] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T21] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T29] ( 2, 4.01) int -> r4 "Inlining Arg" +; V11 tmp4 [V11,T27] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T33] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T23] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T24] ( 4, 8.01) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T13] ( 2, 16.02) int -> r9 "Inlining Arg" -; V17 tmp10 [V17,T09] ( 3, 24.04) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T32] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T22] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T23] ( 4, 8.01) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T14] ( 2, 15.86) int -> r9 "Inlining Arg" +; V17 tmp10 [V17,T10] ( 3, 23.80) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T16] ( 3, 12.02) ref -> [sp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.05) ref -> [sp+0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T17] ( 3, 11.90) ref -> [sp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 31.73) ref -> [sp+0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 31.73) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T14] ( 2, 16.02) int -> r9 "Inlining Arg" -; V24 tmp17 [V24,T10] ( 3, 24.04) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T15] ( 2, 15.86) int -> r9 "Inlining Arg" +; V24 tmp17 [V24,T11] ( 3, 23.80) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T17] ( 3, 12.02) ref -> [sp+0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.05) ref -> [sp+0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T18] ( 3, 11.90) ref -> [sp+0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 31.73) ref -> [sp+0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 31.73) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T15] ( 2, 16.02) ushort -> r9 "Inlining Arg" -; V34 tmp27 [V34,T11] ( 3, 24.04) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T16] ( 2, 15.86) ushort -> r9 "Inlining Arg" +; V34 tmp27 [V34,T12] ( 3, 23.80) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T18] ( 3, 12.02) ref -> [sp+0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.05) ref -> [sp+0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T19] ( 3, 11.90) ref -> [sp+0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 31.73) ref -> [sp+0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 31.73) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T25] ( 3, 8.01) ubyte -> r9 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T30] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T25] ( 3, 7.93) ubyte -> r9 "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T32] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T26] ( 2, 8.01) ubyte -> r0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T31] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T26] ( 3, 7.93) ubyte -> r8 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,11 +64,10 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> r3 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T37] ( 6, 0 ) struct ( 4) [sp+0x54] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T36] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T12] ( 5, 20.03) byref -> r8 "CSE - moderate" -; V59 cse1 [V59,T19] ( 3, 12.02) int -> r8 "CSE - moderate" -; V60 cse2 [V60,T20] ( 3, 11.88) int -> r2 "CSE - moderate"
+; V56 tmp49 [V56,T36] ( 6, 0 ) struct ( 4) [sp+0x54] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T35] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T09] ( 6, 23.80) int -> r8 "CSE - moderate" +; V59 cse1 [V59,T20] ( 3, 11.88) int -> r2 "CSE - moderate"
; TEMP_01 ref -> [r11-0x64] ; ; Lcl frame size = 92 @@ -148,7 +147,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b str r7, [sp+0x50] ; GC ptr vars +{V04} ;; size=40 bbWeight=1 PerfScore 14.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000000400000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000000200000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -183,7 +182,7 @@ G_M53770_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0 str r6, [sp+0x4C] ; GC ptr vars +{V05} ;; size=22 bbWeight=1 PerfScore 8.00
-G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000600000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
str r4, [sp] ; gcr arg write movs r2, 0 @@ -323,7 +322,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefR ; gcr arg pop 0 movs r4, 0 ;; size=256 bbWeight=1.00 PerfScore 90.14
-G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG08: ; bbWeight=3.97, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
lsls r0, r4, 4 add r8, r0, 8 ldr r9, [r5+r8] @@ -369,7 +368,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V19}
+ ; GC ptr vars -{V17 V19}
blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0] @@ -394,7 +393,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V20}
+ ; GC ptr vars -{V20} +{V17}
blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1-r2] ; byrRegs -[r0] @@ -442,10 +441,11 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- add r8, r5 - ; byrRegs +[r8] - ldr r9, [r8+0x08]
+ add r0, r5, r8 + ; byrRegs +[r0] + ldr r9, [r0+0x08]
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff @@ -560,16 +560,20 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- ldrb r9, [r8+0x04]
+ add r0, r5, r8 + ; byrRegs +[r0] + ldrb r9, [r0+0x04]
cmp r9, 0 bne SHORT G_M53770_IG12
- ldrh r9, [r8+0x0C]
+ add r0, r5, r8 + ldrh r9, [r0+0x0C]
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff
+ ;; size=444 bbWeight=3.97 PerfScore 590.96 +G_M53770_IG09: ; bbWeight=3.97, isz, extend
movw r3, 0xd1ff movt r3, 0xd1ff
- ;; size=442 bbWeight=4.01 PerfScore 596.93 -G_M53770_IG09: ; bbWeight=4.01, isz, extend
blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0 @@ -681,20 +685,22 @@ G_M53770_IG09: ; bbWeight=4.01, isz, extend blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- ldrb r0, [r8+0x0E] - cmp r0, 0
+ add r0, r5, r8 + ; byrRegs +[r0] + ldrb r8, [r0+0x0E] + cmp r8, 0
beq SHORT G_M53770_IG13
- ;; size=190 bbWeight=4.01 PerfScore 268.42 -G_M53770_IG10: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r8]
+ ;; size=204 bbWeight=3.97 PerfScore 277.63 +G_M53770_IG10: ; bbWeight=3.96, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0]
adds r4, r4, 1 cmp r4, 12 blt G_M53770_IG08
- ;; size=8 bbWeight=4 PerfScore 12.00 -G_M53770_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=3.96 PerfScore 11.88 +G_M53770_IG11: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5] b SHORT G_M53770_IG14
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=1.00 PerfScore 1.00
G_M53770_IG12: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r1, 1 strb r1, [sp+0x54] // [V56 tmp49] @@ -716,8 +722,7 @@ G_M53770_IG12: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r1, 1 strb r1, [sp+0x54] // [V56 tmp49]
- movs r1, 0 - strb r1, [sp+0x55] // [V56 tmp49+0x01]
+ strb r8, [sp+0x55] // [V56 tmp49+0x01]
ldrh r1, [sp+0x54] // [V56 tmp49] movs r0, 0 movw r3, 0xd1ff @@ -732,7 +737,7 @@ G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 bkpt
- ;; size=42 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M53770_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r0, 0 strb r0, [r6+0x20] @@ -770,14 +775,14 @@ G_M53770_IG16: ; bbWeight=1, epilog, nogc, extend add sp, 92 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M53770_IG17: ; bbWeight=0, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V05 V34}
+G_M53770_IG17: ; bbWeight=0, gcVars=0000000600000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V05 V33 V34}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr} sub sp, 20 add r3, r11, 8 str r3, [sp+0x10] ;; size=12 bbWeight=0 PerfScore 0.00 ...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

+8 (+0.64%) : 131138.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -8,54 +8,54 @@ ; 14 inlinees with PGO data; 44 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T30] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T22] ( 4, 10.01) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T29] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T14] ( 7, 21.83) ref -> r5 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T09] ( 7, 24.76) int -> r0 ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T36] ( 3, 1 ) ref -> [sp+0x50] class-hnd exact EH-live single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T35] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.03) int -> r4
+; V04 loc4 [V04,T35] ( 3, 1 ) ref -> [sp+0x50] class-hnd exact EH-live single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T34] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.75) int -> r4
; V07 OutArgs [V07 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T28] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T23] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T31] ( 2, 4.01) int -> r4 "Inlining Arg" -; V11 tmp4 [V11,T29] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T25] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T22] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T30] ( 2, 4.01) int -> r4 "Inlining Arg" +; V11 tmp4 [V11,T28] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T34] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T24] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T25] ( 4, 8.01) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T14] ( 2, 16.02) int -> [sp+0x64] spill-single-def "Inlining Arg" -; V17 tmp10 [V17,T10] ( 3, 24.04) ref -> [sp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T33] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T23] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T24] ( 4, 8.01) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T15] ( 2, 15.86) int -> [sp+0x64] spill-single-def "Inlining Arg" +; V17 tmp10 [V17,T11] ( 3, 23.80) ref -> [sp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T17] ( 3, 12.02) ref -> [sp+0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.05) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T18] ( 3, 11.90) ref -> [sp+0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 31.73) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 31.73) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T15] ( 2, 16.02) int -> [sp+0x60] spill-single-def "Inlining Arg" -; V24 tmp17 [V24,T11] ( 3, 24.04) ref -> [sp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T16] ( 2, 15.86) int -> [sp+0x60] spill-single-def "Inlining Arg" +; V24 tmp17 [V24,T12] ( 3, 23.80) ref -> [sp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T18] ( 3, 12.02) ref -> [sp+0x2C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.05) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T19] ( 3, 11.90) ref -> [sp+0x2C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 31.73) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 31.73) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T16] ( 2, 16.02) ushort -> [sp+0x5C] spill-single-def "Inlining Arg" -; V34 tmp27 [V34,T12] ( 3, 24.04) ref -> [sp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T17] ( 2, 15.86) ushort -> [sp+0x5C] spill-single-def "Inlining Arg" +; V34 tmp27 [V34,T13] ( 3, 23.80) ref -> [sp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T19] ( 3, 12.02) ref -> [sp+0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.05) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> [sp+0x14] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T20] ( 3, 11.90) ref -> [sp+0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 31.73) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 31.73) ref -> [sp+0x14] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T32] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T26] ( 3, 8.01) ubyte -> r3 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T26] ( 3, 7.93) ubyte -> r3 "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T33] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T27] ( 2, 8.01) ubyte -> r0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T32] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T27] ( 3, 7.93) ubyte -> r8 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,12 +64,11 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> r3 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T38] ( 6, 0 ) struct ( 4) [sp+0x58] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T37] ( 1, 1 ) int -> [sp+0x68] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T13] ( 5, 20.03) byref -> r8 "CSE - moderate" -; V59 cse1 [V59,T20] ( 3, 12.02) int -> r8 "CSE - moderate" -; V60 cse2 [V60,T21] ( 3, 11.88) int -> r2 "CSE - moderate" -; V61 cse3 [V61,T08] ( 9, 27.04) int -> [sp+0x54] spill-single-def "CSE - aggressive"
+; V56 tmp49 [V56,T37] ( 6, 0 ) struct ( 4) [sp+0x58] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T36] ( 1, 1 ) int -> [sp+0x68] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T10] ( 6, 23.80) int -> r8 "CSE - moderate" +; V59 cse1 [V59,T21] ( 3, 11.88) int -> r2 "CSE - moderate" +; V60 cse2 [V60,T08] ( 9, 26.80) int -> [sp+0x54] spill-single-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x78] ; ; Lcl frame size = 108 @@ -149,7 +148,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b str r7, [sp+0x50] ; GC ptr vars +{V04} ;; size=40 bbWeight=1 PerfScore 14.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000001000000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000000800000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -184,7 +183,7 @@ G_M53770_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0 str r6, [sp+0x4C] ; GC ptr vars +{V05} ;; size=22 bbWeight=1 PerfScore 8.00
-G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
str r4, [sp] ; gcr arg write movs r2, 0 @@ -266,7 +265,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefR movw r0, 0xd1ff movt r0, 0xd1ff str r0, [r2+0x0C]
- ldr r9, [sp+0x54] // [V61 cse3]
+ ldr r9, [sp+0x54] // [V60 cse2]
add r0, r9, 152 movw r3, 0xd1ff movt r3, 0xd1ff @@ -331,7 +330,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefR ; gcr arg pop 0 movs r4, 0 ;; size=262 bbWeight=1.00 PerfScore 94.15
-G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG08: ; bbWeight=3.97, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
lsls r0, r4, 4 add r8, r0, 8 ldr r3, [r5+r8] @@ -377,7 +376,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V17 V19}
+ ; GC ptr vars -{V19}
blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0] @@ -401,7 +400,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V20} +{V17}
+ ; GC ptr vars -{V20}
blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1-r2] ; byrRegs -[r0] @@ -449,11 +448,12 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- add r8, r5 - ; byrRegs +[r8] - ldr r3, [r8+0x08]
+ add r0, r5, r8 + ; byrRegs +[r0] + ldr r3, [r0+0x08]
str r3, [sp+0x60] // [V23 tmp16] movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff movw r2, 0xd1ff movt r2, 0xd1ff @@ -566,17 +566,21 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- ldrb r3, [r8+0x04]
+ add r0, r5, r8 + ; byrRegs +[r0] + ldrb r3, [r0+0x04]
cmp r3, 0 bne SHORT G_M53770_IG12
- ldrh r3, [r8+0x0C]
+ add r0, r5, r8 + ldrh r3, [r0+0x0C]
str r3, [sp+0x5C] // [V33 tmp26] movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff movw r2, 0xd1ff movt r2, 0xd1ff
- ;; size=426 bbWeight=4.01 PerfScore 592.92 -G_M53770_IG09: ; bbWeight=4.01, isz, extend
+ ;; size=430 bbWeight=3.97 PerfScore 594.92 +G_M53770_IG09: ; bbWeight=3.97, isz, extend
blx r2 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0 @@ -686,20 +690,22 @@ G_M53770_IG09: ; bbWeight=4.01, isz, extend blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- ldrb r0, [r8+0x0E] - cmp r0, 0
+ add r0, r5, r8 + ; byrRegs +[r0] + ldrb r8, [r0+0x0E] + cmp r8, 0
beq SHORT G_M53770_IG13
- ;; size=180 bbWeight=4.01 PerfScore 260.40 -G_M53770_IG10: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r8]
+ ;; size=186 bbWeight=3.97 PerfScore 261.77 +G_M53770_IG10: ; bbWeight=3.96, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0]
adds r4, r4, 1 cmp r4, 12 blt G_M53770_IG08
- ;; size=8 bbWeight=4 PerfScore 12.00 -G_M53770_IG11: ; bbWeight=0.50, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=3.96 PerfScore 11.88 +G_M53770_IG11: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5] b SHORT G_M53770_IG14
- ;; size=2 bbWeight=0.50 PerfScore 0.50
+ ;; size=2 bbWeight=1.00 PerfScore 1.00
G_M53770_IG12: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r1, 1 strb r1, [sp+0x58] // [V56 tmp49] @@ -721,8 +727,7 @@ G_M53770_IG12: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r1, 1 strb r1, [sp+0x58] // [V56 tmp49]
- movs r1, 0 - strb r1, [sp+0x59] // [V56 tmp49+0x01]
+ strb r8, [sp+0x59] // [V56 tmp49+0x01]
ldrh r1, [sp+0x58] // [V56 tmp49] movs r0, 0 movw r3, 0xd1ff @@ -737,7 +742,7 @@ G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 bkpt
- ;; size=42 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M53770_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r0, 0 strb r0, [r6+0x20] ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.linux.arm.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm.checked.mch 2 0 0 2 -0 +0
libraries.crossgen2.linux.arm.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm.checked.mch 2 1 1 0 -20 +224
libraries_tests.run.linux.arm.Release.mch 1 0 1 0 -0 +14
librariestestsnotieredcompilation.run.linux.arm.Release.mch 1 0 1 0 -0 +8
realworld.run.linux.arm.checked.mch 0 0 0 0 -0 +0
6 1 3 2 -20 +246

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 44,927 4,966 39,961 1,181 (2.56%) 1,181 (2.56%)
benchmarks.run_pgo.linux.arm.checked.mch 167,330 62,159 105,171 3,326 (1.95%) 3,326 (1.95%)
benchmarks.run_tiered.linux.arm.checked.mch 73,074 38,812 34,262 950 (1.28%) 950 (1.28%)
coreclr_tests.run.linux.arm.checked.mch 472,410 259,200 213,210 7,160 (1.49%) 7,161 (1.49%)
libraries.crossgen2.linux.arm.checked.mch 1,774 0 1,774 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,313 6 272,307 7,782 (2.78%) 7,782 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,755 443,197 267,558 16,188 (2.23%) 16,188 (2.23%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,644 21,604 253,040 33,242 (10.80%) 33,242 (10.80%)
realworld.run.linux.arm.checked.mch 36,411 157 36,254 1,407 (3.72%) 1,407 (3.72%)
2,053,638 830,101 1,223,537 71,236 (3.35%) 71,237 (3.35%)

jit-analyze output

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: 321790690 (overridden on cmd)
Total bytes of diff: 321790690 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



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

0 total methods with Code Size differences (0 improved, 0 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: 49833712 (overridden on cmd)
Total bytes of diff: 49833916 (overridden on cmd)
Total bytes of delta: 204 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         224 : 102807.dasm (45.16 % of base)

Top file improvements (bytes):
         -20 : 99389.dasm (-22.73 % of base)

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

Top method regressions (bytes):
         224 (45.16 % of base) : 102807.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (bytes):
         -20 (-22.73 % of base) : 99389.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

Top method regressions (percentages):
         224 (45.16 % of base) : 102807.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (percentages):
         -20 (-22.73 % of base) : 99389.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

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


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: 244212956 (overridden on cmd)
Total bytes of diff: 244212970 (overridden on cmd)
Total bytes of delta: 14 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          14 : 335212.dasm (1.06 % of base)

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

Top method regressions (bytes):
          14 (1.06 % of base) : 335212.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (Tier0-FullOpts)

Top method regressions (percentages):
          14 (1.06 % of base) : 335212.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (Tier0-FullOpts)

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


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: 94429126 (overridden on cmd)
Total bytes of diff: 94429134 (overridden on cmd)
Total bytes of delta: 8 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
           8 : 131138.dasm (0.64 % of base)

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

Top method regressions (bytes):
           8 (0.64 % of base) : 131138.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)

Top method regressions (percentages):
           8 (0.64 % of base) : 131138.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)

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



windows x86

Diffs are based on 2,291,532 contexts (838,165 MinOpts, 1,453,367 FullOpts).

MISSED contexts: base: 24 (0.00%), diff: 31 (0.00%)

Overall (+280 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries.crossgen2.windows.x86.checked.mch 31,713,486 +66
libraries.pmi.windows.x86.checked.mch 49,264,590 +220
libraries_tests.run.windows.x86.Release.mch 185,796,587 -3
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,830,242 -3

FullOpts (+280 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries.crossgen2.windows.x86.checked.mch 31,712,426 +66
libraries.pmi.windows.x86.checked.mch 49,169,357 +220
libraries_tests.run.windows.x86.Release.mch 88,496,547 -3
librariestestsnotieredcompilation.run.windows.x86.Release.mch 95,150,181 -3

Example diffs

libraries.crossgen2.windows.x86.checked.mch

-15 (-24.19%) : 80963.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -8,9 +8,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T02] ( 3, 10 ) ref -> esi class-hnd exact single-def <uint[]> -; V01 loc1 [V01,T00] ( 7, 49 ) int -> edi -; V02 loc2 [V02,T01] ( 2, 16 ) int -> eax
+; V00 loc0 [V00,T02] ( 3, 9.92) ref -> esi class-hnd exact single-def <uint[]> +; V01 loc1 [V01,T00] ( 6, 40.60) int -> edi +; V02 loc2 [V02,T01] ( 2, 15.84) int -> eax
; ; Lcl frame size = 0 @@ -28,17 +28,15 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] xor edi, edi ;; size=15 bbWeight=1 PerfScore 3.75
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov ecx, edi call [Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint]
- cmp edi, 256 - jae SHORT G_M39919_IG06
mov dword ptr [esi+4*edi+0x08], eax inc edi cmp edi, 255 jbe SHORT G_M39919_IG03
- ;; size=29 bbWeight=8 PerfScore 56.00
+ ;; size=21 bbWeight=7.92 PerfScore 45.54
G_M39919_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov eax, esi ; gcrRegs +[eax] @@ -49,12 +47,7 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=1 PerfScore 2.50
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax esi] - call [CORINFO_HELP_RNGCHKFAIL] - int3 - ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 62, prolog size 5, PerfScore 65.75, instruction count 23, allocated bytes for code 62 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 47, prolog size 5, PerfScore 55.29, instruction count 19, allocated bytes for code 47 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================

libraries.pmi.windows.x86.checked.mch

-14 (-21.54%) : 80517.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T02] ( 3, 10 ) ref -> esi class-hnd exact single-def <uint[]> -; V01 loc1 [V01,T00] ( 7, 49 ) int -> edi -; V02 loc2 [V02,T01] ( 2, 16 ) int -> eax
+; V00 loc0 [V00,T02] ( 3, 9.92) ref -> esi class-hnd exact single-def <uint[]> +; V01 loc1 [V01,T00] ( 6, 40.60) int -> edi +; V02 loc2 [V02,T01] ( 2, 15.84) int -> eax
; ; Lcl frame size = 0 @@ -28,17 +28,15 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] xor edi, edi ;; size=19 bbWeight=1 PerfScore 2.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov ecx, edi call [Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint]
- cmp edi, 256 - jae SHORT G_M39919_IG06
mov dword ptr [esi+4*edi+0x08], eax inc edi cmp edi, 255 jbe SHORT G_M39919_IG03
- ;; size=29 bbWeight=8 PerfScore 56.00
+ ;; size=21 bbWeight=7.92 PerfScore 45.54
G_M39919_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov eax, esi ; gcrRegs +[eax] @@ -49,12 +47,7 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=1 PerfScore 2.50
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax esi] - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 65, prolog size 5, PerfScore 64.00, instruction count 24, allocated bytes for code 65 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 51, prolog size 5, PerfScore 53.54, instruction count 20, allocated bytes for code 51 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-3 (-0.31%) : 291154.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (Tier0-FullOpts)

@@ -9,52 +9,52 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T27] ( 3, 5.96) ref -> esi class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T20] ( 4, 10 ) ref -> edi class-hnd exact single-def <<unknown class>> -; V02 loc2 [V02,T08] ( 8, 28.72) int -> ecx
+; V01 loc1 [V01,T13] ( 7, 21.80) ref -> edi class-hnd exact single-def <<unknown class>> +; V02 loc2 [V02,T07] ( 8, 28.72) int -> ecx
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x2C] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T01] ( 9, 33 ) int -> esi
+; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x34] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T08] ( 8, 28.72) int -> esi
; V07 tmp0 [V07,T21] ( 4, 8 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V08 tmp1 [V08,T19] ( 5, 10 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V08 tmp1 [V08,T20] ( 5, 10 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
; V09 tmp2 [V09,T28] ( 2, 4 ) int -> esi "Inlining Arg" ; V10 tmp3 [V10,T26] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T13] ( 2, 16 ) int -> ebx "Inlining Arg" -; V16 tmp9 [V16,T09] ( 3, 24 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T14] ( 2, 15.84) int -> [ebp-0x24] spill-single-def "Inlining Arg" +; V16 tmp9 [V16,T10] ( 3, 23.76) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp11 [V18,T16] ( 3, 12 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V19 tmp12 [V19,T02] ( 4, 32 ) ref -> [ebp-0x4C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V20 tmp13 [V20,T03] ( 4, 32 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp11 [V18,T17] ( 3, 11.88) ref -> [ebp-0x4C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V19 tmp12 [V19,T01] ( 4, 31.68) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V20 tmp13 [V20,T02] ( 4, 31.68) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V22 tmp15 [V22,T14] ( 2, 16 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" -; V23 tmp16 [V23,T10] ( 3, 24 ) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V22 tmp15 [V22,T15] ( 2, 15.84) int -> [ebp-0x28] spill-single-def "Inlining Arg" +; V23 tmp16 [V23,T11] ( 3, 23.76) ref -> [ebp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V25 tmp18 [V25,T17] ( 3, 12 ) ref -> [ebp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V26 tmp19 [V26,T04] ( 4, 32 ) ref -> [ebp-0x5C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V27 tmp20 [V27,T05] ( 4, 32 ) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp18 [V25,T18] ( 3, 11.88) ref -> [ebp-0x5C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V26 tmp19 [V26,T03] ( 4, 31.68) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V27 tmp20 [V27,T04] ( 4, 31.68) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V28 tmp21 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V32 tmp25 [V32,T15] ( 2, 16 ) ushort -> [ebp-0x28] spill-single-def "Inlining Arg" -; V33 tmp26 [V33,T11] ( 3, 24 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V32 tmp25 [V32,T16] ( 2, 15.84) ushort -> [ebp-0x2C] spill-single-def "Inlining Arg" +; V33 tmp26 [V33,T12] ( 3, 23.76) ref -> [ebp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V35 tmp28 [V35,T18] ( 3, 12 ) ref -> [ebp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V36 tmp29 [V36,T06] ( 4, 32 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V37 tmp30 [V37,T07] ( 4, 32 ) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V35 tmp28 [V35,T19] ( 3, 11.88) ref -> [ebp-0x6C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V36 tmp29 [V36,T05] ( 4, 31.68) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V37 tmp30 [V37,T06] ( 4, 31.68) ref -> [ebp-0x74] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp32 [V39 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41,T29] ( 0, 0 ) ubyte -> zero-ref "field V29.hasValue (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T24] ( 3, 8 ) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
+; V42 tmp35 [V42,T24] ( 3, 7.92) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V30.value (fldOffset=0x1)" P-INDEP ;* V45 tmp38 [V45,T30] ( 0, 0 ) ubyte -> zero-ref "field V39.hasValue (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T25] ( 2, 8 ) ubyte -> ecx "field V39.value (fldOffset=0x1)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 7.92) ubyte -> ebx "field V39.value (fldOffset=0x1)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V40.value (fldOffset=0x1)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,9 +64,9 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V54 tmp47 [V54,T00] ( 6, 47.52) byref -> eax "Spilling address for field-by-field copy" ; V55 EHSlots [V55 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V56 cse0 [V56,T12] ( 5, 20 ) byref -> ebx "CSE - moderate"
+; V56 cse0 [V56,T09] ( 6, 23.76) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 100
+; Lcl frame size = 104
G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -74,7 +74,7 @@ G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 100
+ sub esp, 104
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], eax @@ -123,14 +123,14 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov edx, 192 call [System.IO.Tests.TestSafeBuffer:.ctor(int):this] ; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x2C], ebx
+ mov gword ptr [ebp-0x30], ebx
; GC ptr vars +{V04} ;; size=28 bbWeight=1 PerfScore 6.00 G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref mov ecx, 0xD1FFAB1E ; System.IO.UnmanagedMemoryAccessor call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x34], eax
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V08} push 0 push 0 @@ -143,12 +143,12 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx ebx]
- mov ebx, gword ptr [ebp-0x34]
+ mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x30], ebx
+ mov gword ptr [ebp-0x34], ebx
; GC ptr vars +{V05} ;; size=42 bbWeight=1 PerfScore 12.75
-G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1, gcVars=0000000280100000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
push 0 push 0 push 0 @@ -178,7 +178,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref ; gcrRegs +[ebx] mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x38], eax
+ mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V12} xor ecx, ecx ; gcrRegs +[ecx] @@ -186,11 +186,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x3C], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V13} lea edx, bword ptr [eax+0x04] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x38]
+ mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx] ; GC ptr vars -{V12} call CORINFO_HELP_ASSIGN_REF_ECX @@ -199,11 +199,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref mov dword ptr [eax+0x0C], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x40], eax
+ mov gword ptr [ebp-0x44], eax
; GC ptr vars +{V14} lea edx, bword ptr [eax+0x08] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x3C]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx] ; GC ptr vars -{V13} call CORINFO_HELP_ASSIGN_REF_ECX @@ -213,7 +213,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x40]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x04] ; byrRegs +[edx] @@ -235,18 +235,19 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref ; gcr arg pop 1 xor esi, esi ;; size=171 bbWeight=1 PerfScore 43.00
-G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - mov ecx, esi - shl ecx, 4 - mov ebx, dword ptr [edi+ecx+0x08]
+G_M53770_IG07: ; bbWeight=3.96, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov ebx, esi + shl ebx, 4 + mov eax, dword ptr [edi+ebx+0x08] + mov dword ptr [ebp-0x24], eax
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int] call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x48], eax
; GC ptr vars +{V16} mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x48], eax
+ mov gword ptr [ebp-0x4C], eax
; GC ptr vars +{V18} xor ecx, ecx ; gcrRegs +[ecx] @@ -254,26 +255,26 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x4C], eax
+ mov gword ptr [ebp-0x50], eax
; GC ptr vars +{V19} lea edx, bword ptr [eax+0x04] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x48]
+ mov ecx, gword ptr [ebp-0x4C]
; gcrRegs +[ecx]
- ; GC ptr vars -{V16 V18}
+ ; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[ecx] ; byrRegs -[edx] mov dword ptr [eax+0x0C], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x50], eax
+ mov gword ptr [ebp-0x54], eax
; GC ptr vars +{V20} lea edx, bword ptr [eax+0x08] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x4C]
+ mov ecx, gword ptr [ebp-0x50]
; gcrRegs +[ecx]
- ; GC ptr vars -{V19} +{V16}
+ ; GC ptr vars -{V19}
call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[eax ecx] ; byrRegs -[edx] @@ -281,14 +282,14 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x50]
+ mov ecx, gword ptr [ebp-0x54]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x04] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx] ...

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-3 (-0.31%) : 136874.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -9,52 +9,52 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T27] ( 3, 5.96) ref -> esi class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T20] ( 4, 10 ) ref -> edi class-hnd exact single-def <<unknown class>> -; V02 loc2 [V02,T08] ( 8, 28.72) int -> ecx
+; V01 loc1 [V01,T13] ( 7, 21.80) ref -> edi class-hnd exact single-def <<unknown class>> +; V02 loc2 [V02,T07] ( 8, 28.72) int -> ecx
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x2C] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T01] ( 9, 33 ) int -> esi
+; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x34] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T08] ( 8, 28.72) int -> esi
; V07 tmp0 [V07,T21] ( 4, 8 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V08 tmp1 [V08,T19] ( 5, 10 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V08 tmp1 [V08,T20] ( 5, 10 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
; V09 tmp2 [V09,T28] ( 2, 4 ) int -> esi "Inlining Arg" ; V10 tmp3 [V10,T26] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T13] ( 2, 16 ) int -> ebx "Inlining Arg" -; V16 tmp9 [V16,T09] ( 3, 24 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T14] ( 2, 15.84) int -> [ebp-0x24] spill-single-def "Inlining Arg" +; V16 tmp9 [V16,T10] ( 3, 23.76) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp11 [V18,T16] ( 3, 12 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V19 tmp12 [V19,T02] ( 4, 32 ) ref -> [ebp-0x4C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V20 tmp13 [V20,T03] ( 4, 32 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp11 [V18,T17] ( 3, 11.88) ref -> [ebp-0x4C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V19 tmp12 [V19,T01] ( 4, 31.68) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V20 tmp13 [V20,T02] ( 4, 31.68) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V22 tmp15 [V22,T14] ( 2, 16 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" -; V23 tmp16 [V23,T10] ( 3, 24 ) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V22 tmp15 [V22,T15] ( 2, 15.84) int -> [ebp-0x28] spill-single-def "Inlining Arg" +; V23 tmp16 [V23,T11] ( 3, 23.76) ref -> [ebp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V25 tmp18 [V25,T17] ( 3, 12 ) ref -> [ebp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V26 tmp19 [V26,T04] ( 4, 32 ) ref -> [ebp-0x5C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V27 tmp20 [V27,T05] ( 4, 32 ) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp18 [V25,T18] ( 3, 11.88) ref -> [ebp-0x5C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V26 tmp19 [V26,T03] ( 4, 31.68) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V27 tmp20 [V27,T04] ( 4, 31.68) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V28 tmp21 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V32 tmp25 [V32,T15] ( 2, 16 ) ushort -> [ebp-0x28] spill-single-def "Inlining Arg" -; V33 tmp26 [V33,T11] ( 3, 24 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V32 tmp25 [V32,T16] ( 2, 15.84) ushort -> [ebp-0x2C] spill-single-def "Inlining Arg" +; V33 tmp26 [V33,T12] ( 3, 23.76) ref -> [ebp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V35 tmp28 [V35,T18] ( 3, 12 ) ref -> [ebp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V36 tmp29 [V36,T06] ( 4, 32 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V37 tmp30 [V37,T07] ( 4, 32 ) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V35 tmp28 [V35,T19] ( 3, 11.88) ref -> [ebp-0x6C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V36 tmp29 [V36,T05] ( 4, 31.68) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V37 tmp30 [V37,T06] ( 4, 31.68) ref -> [ebp-0x74] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp32 [V39 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41,T29] ( 0, 0 ) ubyte -> zero-ref "field V29.hasValue (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T24] ( 3, 8 ) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
+; V42 tmp35 [V42,T24] ( 3, 7.92) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V30.value (fldOffset=0x1)" P-INDEP ;* V45 tmp38 [V45,T30] ( 0, 0 ) ubyte -> zero-ref "field V39.hasValue (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T25] ( 2, 8 ) ubyte -> ecx "field V39.value (fldOffset=0x1)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 7.92) ubyte -> ebx "field V39.value (fldOffset=0x1)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V40.value (fldOffset=0x1)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,9 +64,9 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V54 tmp47 [V54,T00] ( 6, 47.52) byref -> eax "Spilling address for field-by-field copy" ; V55 EHSlots [V55 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V56 cse0 [V56,T12] ( 5, 20 ) byref -> ebx "CSE - moderate"
+; V56 cse0 [V56,T09] ( 6, 23.76) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 100
+; Lcl frame size = 104
G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -74,7 +74,7 @@ G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 100
+ sub esp, 104
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], eax @@ -123,14 +123,14 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov edx, 192 call [System.IO.Tests.TestSafeBuffer:.ctor(int):this] ; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x2C], ebx
+ mov gword ptr [ebp-0x30], ebx
; GC ptr vars +{V04} ;; size=28 bbWeight=1 PerfScore 6.00 G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref mov ecx, 0xD1FFAB1E ; System.IO.UnmanagedMemoryAccessor call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x34], eax
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V08} push 0 push 0 @@ -143,12 +143,12 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx ebx]
- mov ebx, gword ptr [ebp-0x34]
+ mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x30], ebx
+ mov gword ptr [ebp-0x34], ebx
; GC ptr vars +{V05} ;; size=42 bbWeight=1 PerfScore 12.75
-G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1, gcVars=0000000280100000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
push 0 push 0 push 0 @@ -178,7 +178,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref ; gcrRegs +[ebx] mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x38], eax
+ mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V12} xor ecx, ecx ; gcrRegs +[ecx] @@ -186,11 +186,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x3C], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V13} lea edx, bword ptr [eax+0x04] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x38]
+ mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx] ; GC ptr vars -{V12} call CORINFO_HELP_ASSIGN_REF_ECX @@ -199,11 +199,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref mov dword ptr [eax+0x0C], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x40], eax
+ mov gword ptr [ebp-0x44], eax
; GC ptr vars +{V14} lea edx, bword ptr [eax+0x08] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x3C]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx] ; GC ptr vars -{V13} call CORINFO_HELP_ASSIGN_REF_ECX @@ -213,7 +213,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x40]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x04] ; byrRegs +[edx] @@ -235,18 +235,19 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref ; gcr arg pop 1 xor esi, esi ;; size=171 bbWeight=1 PerfScore 43.00
-G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - mov ecx, esi - shl ecx, 4 - mov ebx, dword ptr [edi+ecx+0x08]
+G_M53770_IG07: ; bbWeight=3.96, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov ebx, esi + shl ebx, 4 + mov eax, dword ptr [edi+ebx+0x08] + mov dword ptr [ebp-0x24], eax
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int] call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x48], eax
; GC ptr vars +{V16} mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x48], eax
+ mov gword ptr [ebp-0x4C], eax
; GC ptr vars +{V18} xor ecx, ecx ; gcrRegs +[ecx] @@ -254,26 +255,26 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x4C], eax
+ mov gword ptr [ebp-0x50], eax
; GC ptr vars +{V19} lea edx, bword ptr [eax+0x04] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x48]
+ mov ecx, gword ptr [ebp-0x4C]
; gcrRegs +[ecx]
- ; GC ptr vars -{V16 V18}
+ ; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[ecx] ; byrRegs -[edx] mov dword ptr [eax+0x0C], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x50], eax
+ mov gword ptr [ebp-0x54], eax
; GC ptr vars +{V20} lea edx, bword ptr [eax+0x08] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x4C]
+ mov ecx, gword ptr [ebp-0x50]
; gcrRegs +[ecx]
- ; GC ptr vars -{V19} +{V16}
+ ; GC ptr vars -{V19}
call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[eax ecx] ; byrRegs -[edx] @@ -281,14 +282,14 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x50]
+ mov ecx, gword ptr [ebp-0x54]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x04] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx] ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x86.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.windows.x86.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x86.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.windows.x86.checked.mch 2 1 1 0 -15 +81
libraries.pmi.windows.x86.checked.mch 2 1 1 0 -14 +234
libraries_tests.run.windows.x86.Release.mch 1 1 0 0 -3 +0
librariestestsnotieredcompilation.run.windows.x86.Release.mch 1 1 0 0 -3 +0
realworld.run.windows.x86.checked.mch 0 0 0 0 -0 +0
6 4 2 0 -35 +315

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,490 4 24,486 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x86.checked.mch 118,243 42,036 76,207 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.x86.checked.mch 48,029 28,739 19,290 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 574,672 319,944 254,728 2 (0.00%) 3 (0.00%)
libraries.crossgen2.windows.x86.checked.mch 242,581 15 242,566 4 (0.00%) 7 (0.00%)
libraries.pmi.windows.x86.checked.mch 305,710 6 305,704 5 (0.00%) 8 (0.00%)
libraries_tests.run.windows.x86.Release.mch 625,352 425,508 199,844 6 (0.00%) 6 (0.00%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,467 21,910 294,557 5 (0.00%) 5 (0.00%)
realworld.run.windows.x86.checked.mch 35,988 3 35,985 2 (0.01%) 2 (0.01%)
2,291,532 838,165 1,453,367 24 (0.00%) 31 (0.00%)

jit-analyze output

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: 31713486 (overridden on cmd)
Total bytes of diff: 31713552 (overridden on cmd)
Total bytes of delta: 66 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          81 : 84112.dasm (28.62 % of base)

Top file improvements (bytes):
         -15 : 80963.dasm (-24.19 % of base)

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

Top method regressions (bytes):
          81 (28.62 % of base) : 84112.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (bytes):
         -15 (-24.19 % of base) : 80963.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

Top method regressions (percentages):
          81 (28.62 % of base) : 84112.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (percentages):
         -15 (-24.19 % of base) : 80963.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

2 total methods with Code Size differences (1 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: 49264590 (overridden on cmd)
Total bytes of diff: 49264810 (overridden on cmd)
Total bytes of delta: 220 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         234 : 83958.dasm (49.68 % of base)

Top file improvements (bytes):
         -14 : 80517.dasm (-21.54 % of base)

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

Top method regressions (bytes):
         234 (49.68 % of base) : 83958.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (bytes):
         -14 (-21.54 % of base) : 80517.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

Top method regressions (percentages):
         234 (49.68 % of base) : 83958.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (percentages):
         -14 (-21.54 % of base) : 80517.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

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


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: 185796587 (overridden on cmd)
Total bytes of diff: 185796584 (overridden on cmd)
Total bytes of delta: -3 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
          -3 : 291154.dasm (-0.31 % of base)

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

Top method improvements (bytes):
          -3 (-0.31 % of base) : 291154.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (Tier0-FullOpts)

Top method improvements (percentages):
          -3 (-0.31 % of base) : 291154.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (Tier0-FullOpts)

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


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: 103830242 (overridden on cmd)
Total bytes of diff: 103830239 (overridden on cmd)
Total bytes of delta: -3 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
          -3 : 136874.dasm (-0.31 % of base)

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

Top method improvements (bytes):
          -3 (-0.31 % of base) : 136874.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)

Top method improvements (percentages):
          -3 (-0.31 % of base) : 136874.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)

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