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,644 |
+0 |
| libraries.pmi.linux.arm.checked.mch |
49,833,584 |
+204 |
| libraries_tests.run.linux.arm.Release.mch |
244,212,716 |
+14 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
94,429,008 |
+8 |
FullOpts (+226 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| coreclr_tests.run.linux.arm.checked.mch |
109,318,208 |
+0 |
| libraries.pmi.linux.arm.checked.mch |
49,727,360 |
+204 |
| libraries_tests.run.linux.arm.Release.mch |
122,360,208 |
+14 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
84,358,270 |
+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: 321790644 (overridden on cmd)
Total bytes of diff: 321790644 (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: 49833584 (overridden on cmd)
Total bytes of diff: 49833788 (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: 244212716 (overridden on cmd)
Total bytes of diff: 244212730 (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: 94429008 (overridden on cmd)
Total bytes of diff: 94429016 (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,556 contexts (838,165 MinOpts, 1,453,391 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 7 (0.00%)
Overall (+280 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| libraries.crossgen2.windows.x86.checked.mch |
31,717,704 |
+66 |
| libraries.pmi.windows.x86.checked.mch |
49,272,984 |
+220 |
| libraries_tests.run.windows.x86.Release.mch |
185,799,057 |
-3 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
103,837,385 |
-3 |
FullOpts (+280 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| libraries.crossgen2.windows.x86.checked.mch |
31,716,644 |
+66 |
| libraries.pmi.windows.x86.checked.mch |
49,177,751 |
+220 |
| libraries_tests.run.windows.x86.Release.mch |
88,499,017 |
-3 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
95,157,324 |
-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,674 |
319,944 |
254,730 |
0 (0.00%) |
1 (0.00%) |
| libraries.crossgen2.windows.x86.checked.mch |
242,585 |
15 |
242,570 |
0 (0.00%) |
3 (0.00%) |
| libraries.pmi.windows.x86.checked.mch |
305,715 |
6 |
305,709 |
0 (0.00%) |
3 (0.00%) |
| libraries_tests.run.windows.x86.Release.mch |
625,358 |
425,508 |
199,850 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,472 |
21,910 |
294,562 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.x86.checked.mch |
35,990 |
3 |
35,987 |
0 (0.00%) |
0 (0.00%) |
|
2,291,556 |
838,165 |
1,453,391 |
0 (0.00%) |
7 (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: 31717704 (overridden on cmd)
Total bytes of diff: 31717770 (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: 49272984 (overridden on cmd)
Total bytes of diff: 49273204 (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: 185799057 (overridden on cmd)
Total bytes of diff: 185799054 (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: 103837385 (overridden on cmd)
Total bytes of diff: 103837382 (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).