Assembly Diffs

linux arm

Diffs are based on 2,239,391 contexts (829,328 MinOpts, 1,410,063 FullOpts).

MISSED contexts: 71,273 (3.08%)

Overall (+52 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries.crossgen2.linux.arm.checked.mch 34,522,542 +52

FullOpts (+52 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries.crossgen2.linux.arm.checked.mch 34,521,312 +52

Example diffs

libraries.crossgen2.linux.arm.checked.mch

+52 (+7.08%) : 159916.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)

@@ -12,33 +12,32 @@ ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.VBBinder> ; V01 arg1 [V01,T11] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Reflection.MethodBase> ; V02 arg2 [V02,T12] ( 3, 3 ) ref -> r5 class-hnd single-def <System.Reflection.MethodBase>
-; V03 loc0 [V03,T16] ( 3, 2 ) ubyte -> r0 -; V04 loc1 [V04,T10] ( 9, 5.58) ref -> r6 class-hnd single-def <<unknown class>>
+; V03 loc0 [V03,T15] ( 3, 2 ) ubyte -> r0 +; V04 loc1 [V04,T08] ( 13, 6.66) ref -> r6 class-hnd single-def <<unknown class>>
; V05 loc2 [V05,T06] ( 13, 9.62) ref -> r5 class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T00] ( 31, 55.66) int -> r7 -; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [sp+0x0C] class-hnd <<unknown class>> -; V08 loc5 [V08,T02] ( 10, 16 ) ref -> [sp+0x08] class-hnd <<unknown class>>
+; V06 loc3 [V06,T00] ( 36, 52.20) int -> r7 +; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [sp+0x04] class-hnd <<unknown class>> +; V08 loc5 [V08,T02] ( 10, 16 ) ref -> r10 class-hnd <<unknown class>>
; V09 loc6 [V09,T05] ( 8, 9 ) int -> r8 single-def
-;* V10 loc7 [V10,T20] ( 0, 0 ) int -> zero-ref single-def -; V11 loc8 [V11,T13] ( 3, 5 ) int -> registers single-def -; V12 loc9 [V12,T09] ( 6, 6 ) int -> r8 single-def
+;* V10 loc7 [V10,T19] ( 0, 0 ) int -> zero-ref single-def +; V11 loc8 [V11,T09] ( 6, 6 ) int -> registers single-def +; V12 loc9 [V12,T10] ( 6, 6 ) int -> r8 single-def
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T14] ( 3, 5 ) int -> r7 "non-inline candidate call" -; V15 tmp2 [V15,T18] ( 2, 2 ) int -> r7 "non-inline candidate call" -; V16 tmp3 [V16,T19] ( 2, 2 ) int -> r7 "non-inline candidate call" -; V17 tmp4 [V17,T17] ( 3, 2 ) int -> r8 "Inline return value spill temp" -; V18 tmp5 [V18,T15] ( 3, 5 ) int -> r0 "Inlining Arg" -; V19 cse0 [V19,T07] ( 6, 9.54) byref -> [sp+0x04] hoist multi-def "CSE - aggressive" -; V20 cse1 [V20,T08] ( 8, 7.58) int -> r9 multi-def "CSE - aggressive" -; V21 cse2 [V21,T04] ( 3, 11.88) int -> r9 "CSE - aggressive" -; V22 cse3 [V22,T03] ( 8, 12.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V14 tmp1 [V14,T13] ( 3, 5 ) int -> r7 "non-inline candidate call" +; V15 tmp2 [V15,T17] ( 2, 2 ) int -> r7 "non-inline candidate call" +; V16 tmp3 [V16,T18] ( 2, 2 ) int -> r7 "non-inline candidate call" +; V17 tmp4 [V17,T16] ( 3, 2 ) int -> r8 "Inline return value spill temp" +; V18 tmp5 [V18,T14] ( 3, 5 ) int -> r0 "Inlining Arg" +; V19 cse0 [V19,T07] ( 8, 9.58) byref -> [sp+0x00] hoist multi-def "CSE - aggressive" +; V20 cse1 [V20,T04] ( 3, 11.88) int -> r10 "CSE - aggressive" +; V21 cse2 [V21,T03] ( 8, 12.54) byref -> registers hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 20
+; Lcl frame size = 12
G_M40132_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- sub sp, 20 - add r11, sp, 48
+ sub sp, 12 + add r11, sp, 40
mov r5, r2 ; gcrRegs +[r5] ;; size=12 bbWeight=1 PerfScore 4.00 @@ -99,18 +98,18 @@ G_M40132_IG05: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b movs r7, 0 cmp r8, 0 blt G_M40132_IG17
- ldr r9, [r6+0x04] - cmp r9, r8
+ ldr r0, [r6+0x04] + cmp r0, r8
ble SHORT G_M40132_IG12 ldr r0, [r5+0x04] cmp r0, r8 ble SHORT G_M40132_IG12
- add r10, r6, 8 - ; byrRegs +[r10] - ;; size=28 bbWeight=1 PerfScore 10.00 -G_M40132_IG06: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r10}, byref, isz - lsl r9, r7, 2 - ldr r0, [r10+r9]
+ add r9, r6, 8 + ; byrRegs +[r9] + ;; size=26 bbWeight=1 PerfScore 10.00 +G_M40132_IG06: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref, isz + lsl r10, r7, 2 + ldr r0, [r9+r10]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -120,7 +119,7 @@ G_M40132_IG06: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r blx r3 // <unknown method> mov r3, r0 ; gcrRegs +[r3]
- str r3, [sp+0x0C]
+ str r3, [sp+0x04]
; GC ptr vars +{V07} mov r0, r3 movw r4, LOW RELOC 0xD1FFAB1E @@ -133,8 +132,8 @@ G_M40132_IG06: ; bbWeight=3.96, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r cmp r0, 0 beq SHORT G_M40132_IG08 ;; size=50 bbWeight=3.96 PerfScore 75.24
-G_M40132_IG07: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r10}, byref - ldr r0, [sp+0x0C] // [V07 loc4]
+G_M40132_IG07: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, byref + ldr r0, [sp+0x04] // [V07 loc4]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -142,14 +141,14 @@ G_M40132_IG07: ; bbWeight=1.98, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r ldr r3, [r4] ; GC ptr vars -{V07} blx r3 // <unknown method>
- str r0, [sp+0x0C] // [V07 loc4]
+ str r0, [sp+0x04] // [V07 loc4]
; GC ptr vars +{V07} ;; size=18 bbWeight=1.98 PerfScore 13.86
-G_M40132_IG08: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=0060 {r5 r6}, byrefRegs=0400 {r10}, gcvars, byref, isz
+G_M40132_IG08: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=0060 {r5 r6}, byrefRegs=0200 {r9}, gcvars, byref, isz
; gcrRegs -[r0] add r2, r5, 8 ; byrRegs +[r2]
- ldr r0, [r2+r9]
+ ldr r0, [r2+r10]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -158,9 +157,9 @@ G_M40132_IG08: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=0060 {r5 ldr r2, [r4] ; byrRegs -[r2] blx r2 // <unknown method>
- mov r9, r0 - ; gcrRegs +[r9] - mov r0, r9
+ mov r10, r0 + ; gcrRegs +[r10] + mov r0, r10
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc @@ -171,43 +170,43 @@ G_M40132_IG08: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=0060 {r5 cmp r0, 0 beq SHORT G_M40132_IG10 ;; size=48 bbWeight=3.96 PerfScore 71.28
-G_M40132_IG09: ; bbWeight=1.98, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0400 {r10}, byref - mov r0, r9
+G_M40132_IG09: ; bbWeight=1.98, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=0200 {r9}, byref + mov r0, r10
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc ldr r3, [r4] blx r3 // <unknown method>
- ; gcrRegs -[r9] - mov r9, r0 - ; gcrRegs +[r9]
+ ; gcrRegs -[r10] + mov r10, r0 + ; gcrRegs +[r10]
;; size=18 bbWeight=1.98 PerfScore 13.86
-G_M40132_IG10: ; bbWeight=3.96, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0400 {r10}, byref, isz
+G_M40132_IG10: ; bbWeight=3.96, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[r0]
- ldr r3, [sp+0x0C] // [V07 loc4]
+ ldr r3, [sp+0x04] // [V07 loc4]
; gcrRegs +[r3]
- cmp r3, r9
+ cmp r3, r10
bne SHORT G_M40132_IG18 adds r7, r7, 1
- bvs G_M40132_IG29
+ bvs G_M40132_IG31
cmp r7, r8 ble SHORT G_M40132_IG06 ;; size=16 bbWeight=3.96 PerfScore 27.72 G_M40132_IG11: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r3 r9] - ; byrRegs -[r10]
+ ; gcrRegs -[r3 r10] + ; byrRegs -[r9]
; GC ptr vars -{V07} b SHORT G_M40132_IG17 ;; size=2 bbWeight=0.50 PerfScore 0.50 G_M40132_IG12: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
- ldr r9, [r6+0x04] - cmp r7, r9 - bhs G_M40132_IG30 - add r10, r6, 8 - ; byrRegs +[r10]
+ ldr r0, [r6+0x04] + cmp r7, r0 + bhs G_M40132_IG32 + add r9, r6, 8 + ; byrRegs +[r9]
lsls r0, r7, 2
- ldr r0, [r10+r0]
+ ldr r0, [r9+r0]
; gcrRegs +[r0] movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E @@ -215,7 +214,7 @@ G_M40132_IG12: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} ldr r2, [r0] ldr r3, [r4] blx r3 // <unknown method>
- ; byrRegs -[r10]
+ ; byrRegs -[r9]
mov r9, r0 ; gcrRegs +[r9] mov r0, r9 @@ -228,7 +227,7 @@ G_M40132_IG12: ; bbWeight=0.04, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {} ; gcrRegs -[r0] cmp r0, 0 beq SHORT G_M40132_IG14
- ;; size=60 bbWeight=0.04 PerfScore 0.88
+ ;; size=58 bbWeight=0.04 PerfScore 0.88
G_M40132_IG13: ; bbWeight=0.02, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref mov r0, r9 ; gcrRegs +[r0] @@ -245,7 +244,7 @@ G_M40132_IG14: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 ; gcrRegs -[r0] ldr r0, [r5+0x04] cmp r7, r0
- bhs G_M40132_IG30
+ bhs G_M40132_IG32
add r2, r5, 8 ; byrRegs +[r2] mov r10, r2 @@ -261,53 +260,48 @@ G_M40132_IG14: ; bbWeight=0.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 ldr r3, [r4] blx r3 // <unknown method> ; byrRegs -[r10]
- mov r3, r0 - ; gcrRegs +[r3] - str r3, [sp+0x08] // [V08 loc5] - ; GC ptr vars +{V08} - mov r0, r3
+ mov r10, r0 + ; gcrRegs +[r10] + mov r0, r10
movw r4, LOW RELOC 0xD1FFAB1E movt r4, HIGH RELOC 0xD1FFAB1E add r4, pc
- ldr r1, [r0] - ldr r2, [r4] - blx r2 // <unknown method> - ; gcrRegs -[r0 r3]
+ ldr r2, [r0] + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r0]
cmp r0, 0 beq SHORT G_M40132_IG16
- ;; size=62 bbWeight=0.04 PerfScore 0.96 -G_M40132_IG15: ; bbWeight=0.02, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref - ldr r0, [sp+0x08] // [V08 loc5]
+ ;; size=60 bbWeight=0.04 PerfScore 0.92 +G_M40132_IG15: ; bbWeight=0.02, gcrefRegs=0660 {r5 r6 r9 r10}, byrefRegs=0000 {}, byref + mov r0, r10
...

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 0 0 0 0 -0 +0
libraries.crossgen2.linux.arm.checked.mch 1 0 1 0 -0 +52
libraries.pmi.linux.arm.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.arm.Release.mch 0 0 0 0 -0 +0
librariestestsnotieredcompilation.run.linux.arm.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.arm.checked.mch 0 0 0 0 -0 +0
1 0 1 0 -0 +52

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 45,964 5,344 40,620 1,203 (2.55%) 1,203 (2.55%)
benchmarks.run_pgo.linux.arm.checked.mch 159,513 56,729 102,784 3,201 (1.97%) 3,201 (1.97%)
benchmarks.run_tiered.linux.arm.checked.mch 80,099 43,607 36,492 1,086 (1.34%) 1,086 (1.34%)
coreclr_tests.run.linux.arm.checked.mch 471,993 259,195 212,798 7,170 (1.50%) 7,170 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 188,191 14 188,177 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,360 6 272,354 7,786 (2.78%) 7,786 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,231 442,672 267,559 16,195 (2.23%) 16,195 (2.23%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,633 21,604 253,029 33,224 (10.79%) 33,224 (10.79%)
realworld.run.linux.arm.checked.mch 36,407 157 36,250 1,408 (3.72%) 1,408 (3.72%)
2,239,391 829,328 1,410,063 71,273 (3.08%) 71,273 (3.08%)

jit-analyze output

libraries.crossgen2.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34522542 (overridden on cmd)
Total bytes of diff: 34522594 (overridden on cmd)
Total bytes of delta: 52 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          52 : 159916.dasm (7.08 % of base)

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

Top method regressions (bytes):
          52 (7.08 % of base) : 159916.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)

Top method regressions (percentages):
          52 (7.08 % of base) : 159916.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)

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



windows x86

Diffs are based on 2,293,495 contexts (839,658 MinOpts, 1,453,837 FullOpts).

MISSED contexts: 1 (0.00%)

Overall (+46 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries.crossgen2.windows.x86.checked.mch 31,716,932 +46

FullOpts (+46 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries.crossgen2.windows.x86.checked.mch 31,715,872 +46

Example diffs

libraries.crossgen2.windows.x86.checked.mch

+46 (+7.71%) : 197648.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)

@@ -11,25 +11,24 @@ ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.VBBinder> ; V01 arg1 [V01,T10] ( 3, 3 ) ref -> edx class-hnd single-def <System.Reflection.MethodBase>
-; V02 arg2 [V02,T16] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Reflection.MethodBase> -; V03 loc0 [V03,T12] ( 3, 2 ) ubyte -> eax -; V04 loc1 [V04,T04] ( 9, 12.04) ref -> esi class-hnd single-def <<unknown class>> -; V05 loc2 [V05,T03] ( 13, 13.08) ref -> edi class-hnd single-def <<unknown class>> -; V06 loc3 [V06,T00] ( 32, 59.62) int -> [ebp-0x10] -; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <<unknown class>> -; V08 loc5 [V08,T02] ( 10, 16 ) ref -> [ebp-0x1C] class-hnd <<unknown class>>
+; V02 arg2 [V02,T15] ( 1, 1 ) ref -> [ebp+0x08] class-hnd single-def <System.Reflection.MethodBase> +; V03 loc0 [V03,T11] ( 3, 2 ) ubyte -> eax +; V04 loc1 [V04,T03] ( 13, 13.08) ref -> esi class-hnd single-def <<unknown class>> +; V05 loc2 [V05,T04] ( 13, 13.08) ref -> edi class-hnd single-def <<unknown class>> +; V06 loc3 [V06,T00] ( 37, 56.16) int -> [ebp-0x10] +; V07 loc4 [V07,T01] ( 10, 16 ) ref -> [ebp-0x14] class-hnd <<unknown class>> +; V08 loc5 [V08,T02] ( 10, 16 ) ref -> [ebp-0x18] class-hnd <<unknown class>>
; V09 loc6 [V09,T05] ( 8, 9 ) int -> ebx single-def
-;* V10 loc7 [V10,T17] ( 0, 0 ) int -> zero-ref single-def -; V11 loc8 [V11,T11] ( 3, 5 ) int -> edi single-def
+;* V10 loc7 [V10,T16] ( 0, 0 ) int -> zero-ref single-def +; V11 loc8 [V11,T06] ( 6, 6 ) int -> edi single-def
; V12 loc9 [V12,T07] ( 6, 6 ) int -> esi single-def ; V13 tmp0 [V13,T08] ( 3, 6 ) int -> ebx "non-inline candidate call"
-; V14 tmp1 [V14,T13] ( 2, 2 ) int -> ebx "non-inline candidate call" -; V15 tmp2 [V15,T14] ( 2, 2 ) int -> ebx "non-inline candidate call" -; V16 tmp3 [V16,T15] ( 2, 2 ) int -> ebx "Inline return value spill temp"
+; V14 tmp1 [V14,T12] ( 2, 2 ) int -> ebx "non-inline candidate call" +; V15 tmp2 [V15,T13] ( 2, 2 ) int -> ebx "non-inline candidate call" +; V16 tmp3 [V16,T14] ( 2, 2 ) int -> ebx "Inline return value spill temp"
; V17 tmp4 [V17,T09] ( 3, 6 ) int -> eax "Inlining Arg"
-; V18 cse0 [V18,T06] ( 8, 7.58) int -> [ebp-0x14] multi-def "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 12
G_M40132_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -37,7 +36,7 @@ G_M40132_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 16
+ sub esp, 12
;; size=9 bbWeight=1 PerfScore 4.50 G_M40132_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[edx] @@ -73,12 +72,11 @@ G_M40132_IG02: ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 xor eax, eax test ebx, ebx jl G_M40132_IG14
- mov edx, dword ptr [esi+0x04] - cmp edx, ebx
+ cmp dword ptr [esi+0x04], ebx
jle G_M40132_IG09 cmp dword ptr [edi+0x04], ebx jle SHORT G_M40132_IG09
- ;; size=82 bbWeight=1 PerfScore 36.25
+ ;; size=80 bbWeight=1 PerfScore 37.00
G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov dword ptr [ebp-0x10], eax mov ecx, gword ptr [esi+4*eax+0x08] @@ -86,7 +84,7 @@ G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V07} mov ecx, eax ; gcrRegs +[ecx] @@ -97,12 +95,12 @@ G_M40132_IG03: ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 je SHORT G_M40132_IG05 ;; size=32 bbWeight=3.96 PerfScore 69.30 G_M40132_IG04: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x18]
+ mov ecx, gword ptr [ebp-0x14]
; gcrRegs +[ecx] ; GC ptr vars -{V07} call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V07} ;; size=12 bbWeight=1.98 PerfScore 9.90 G_M40132_IG05: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz @@ -113,7 +111,7 @@ G_M40132_IG05: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=000000C0 cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x1C], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V08} mov ecx, eax ; gcrRegs +[ecx] @@ -124,24 +122,24 @@ G_M40132_IG05: ; bbWeight=3.96, gcVars=00000002 {V07}, gcrefRegs=000000C0 je SHORT G_M40132_IG07 ;; size=32 bbWeight=3.96 PerfScore 69.30 G_M40132_IG06: ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx] ; GC ptr vars -{V08} call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x1C], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V08} ;; size=12 bbWeight=1.98 PerfScore 9.90 G_M40132_IG07: ; bbWeight=3.96, gcVars=00000006 {V07 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax]
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- cmp edx, gword ptr [ebp-0x1C]
+ cmp edx, gword ptr [ebp-0x18]
jne G_M40132_IG15 mov edx, dword ptr [ebp-0x10] ; gcrRegs -[edx] add edx, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
cmp edx, ebx mov eax, edx jle SHORT G_M40132_IG03 @@ -151,16 +149,15 @@ G_M40132_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e jmp G_M40132_IG14 ;; size=5 bbWeight=0.50 PerfScore 1.00 G_M40132_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- mov edx, dword ptr [esi+0x04] - cmp eax, edx - jae G_M40132_IG25
+ cmp eax, dword ptr [esi+0x04] + jae G_M40132_IG28
mov dword ptr [ebp-0x10], eax mov ecx, gword ptr [esi+4*eax+0x08] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V07} mov ecx, eax ; gcrRegs +[ecx] @@ -169,28 +166,28 @@ G_M40132_IG09: ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[eax ecx] test eax, eax je SHORT G_M40132_IG11
- ;; size=43 bbWeight=0.04 PerfScore 0.83
+ ;; size=41 bbWeight=0.04 PerfScore 0.86
G_M40132_IG10: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x18]
+ mov ecx, gword ptr [ebp-0x14]
; gcrRegs +[ecx] ; GC ptr vars -{V07} call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x18], eax
+ mov gword ptr [ebp-0x14], eax
; GC ptr vars +{V07} ;; size=12 bbWeight=0.02 PerfScore 0.10 G_M40132_IG11: ; bbWeight=0.04, gcVars=00000002 {V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax] mov edx, dword ptr [ebp-0x10] cmp edx, dword ptr [edi+0x04]
- jae G_M40132_IG25
+ jae G_M40132_IG28
mov dword ptr [ebp-0x10], edx mov ecx, gword ptr [edi+4*edx+0x08] ; gcrRegs +[ecx] cmp dword ptr [ecx], ecx call [<unknown method>] ; gcrRegs -[ecx] +[eax]
- mov gword ptr [ebp-0x1C], eax
+ mov gword ptr [ebp-0x18], eax
; GC ptr vars +{V08} mov ecx, eax ; gcrRegs +[ecx] @@ -201,37 +198,36 @@ G_M40132_IG11: ; bbWeight=0.04, gcVars=00000002 {V07}, gcrefRegs=000000C0 je SHORT G_M40132_IG13 ;; size=44 bbWeight=0.04 PerfScore 0.90 G_M40132_IG12: ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
- mov ecx, gword ptr [ebp-0x1C]
+ mov ecx, gword ptr [ebp-0x18]
; gcrRegs +[ecx] ; GC ptr vars -{V08} call [<unknown method>] ; gcrRegs -[ecx] +[eax] mov ecx, eax ; gcrRegs +[ecx]
- mov gword ptr [ebp-0x1C], ecx
+ mov gword ptr [ebp-0x18], ecx
; GC ptr vars +{V08} ;; size=14 bbWeight=0.02 PerfScore 0.11 G_M40132_IG13: ; bbWeight=0.04, gcVars=00000006 {V07 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[eax ecx]
- mov edx, gword ptr [ebp-0x18]
+ mov edx, gword ptr [ebp-0x14]
; gcrRegs +[edx]
- cmp edx, gword ptr [ebp-0x1C]
+ cmp edx, gword ptr [ebp-0x18]
jne SHORT G_M40132_IG15 mov eax, dword ptr [ebp-0x10] add eax, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
cmp eax, ebx jle G_M40132_IG09 ;; size=28 bbWeight=0.04 PerfScore 0.30 G_M40132_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz ; gcrRegs -[edx] ; GC ptr vars -{V07 V08}
- mov edx, dword ptr [esi+0x04] - mov dword ptr [ebp-0x14], edx - cmp edx, dword ptr [edi+0x04] - jle SHORT G_M40132_IG18
+ mov ecx, dword ptr [esi+0x04] + cmp ecx, dword ptr [edi+0x04] + jle G_M40132_IG21
add ebx, 1
- jo G_M40132_IG24
+ jo G_M40132_IG27
mov ecx, edi ; gcrRegs +[ecx] xor edx, edx @@ -239,18 +235,23 @@ G_M40132_IG14: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e ; gcrRegs -[ecx edi] mov edi, eax cmp ebx, edi
- jg G_M40132_IG22
+ jg G_M40132_IG25
jmp SHORT G_M40132_IG16
- ;; size=42 bbWeight=0.50 PerfScore 7.62
+ ;; size=43 bbWeight=0.50 PerfScore 7.12
G_M40132_IG15: ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref ; gcrRegs -[esi] xor eax, eax
- jmp G_M40132_IG23
+ jmp G_M40132_IG26
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M40132_IG16: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M40132_IG16: ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[esi]
- cmp ebx, dword ptr [ebp-0x14] - jae G_M40132_IG25
+ mov ecx, ebx + or ecx, edi + jl SHORT G_M40132_IG19
...

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 1 0 1 0 -0 +46
libraries.pmi.windows.x86.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.x86.Release.mch 0 0 0 0 -0 +0
librariestestsnotieredcompilation.run.windows.x86.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.x86.checked.mch 0 0 0 0 -0 +0
1 0 1 0 -0 +46

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,493 4 24,489 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x86.checked.mch 117,807 41,904 75,903 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.x86.checked.mch 47,883 28,747 19,136 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 574,667 319,847 254,820 1 (0.00%) 1 (0.00%)
libraries.crossgen2.windows.x86.checked.mch 242,619 15 242,604 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x86.checked.mch 305,773 6 305,767 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.x86.Release.mch 627,833 427,222 200,611 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,435 21,910 294,525 0 (0.00%) 0 (0.00%)
realworld.run.windows.x86.checked.mch 35,985 3 35,982 0 (0.00%) 0 (0.00%)
2,293,495 839,658 1,453,837 1 (0.00%) 1 (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: 31716932 (overridden on cmd)
Total bytes of diff: 31716978 (overridden on cmd)
Total bytes of delta: 46 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          46 : 197648.dasm (7.71 % of base)

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

Top method regressions (bytes):
          46 (7.71 % of base) : 197648.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)

Top method regressions (percentages):
          46 (7.71 % of base) : 197648.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)

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