Assembly Diffs

linux arm

Diffs are based on 2,224,699 contexts (831,156 MinOpts, 1,393,543 FullOpts).

MISSED contexts: 73,372 (3.19%)

Overall (+2 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 237,803,444 +2

FullOpts (+2 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 116,399,952 +2

Example diffs

libraries_tests.run.linux.arm.Release.mch

+2 (+0.36%) : 644106.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref):ubyte (Tier1)

@@ -81,7 +81,7 @@ G_M25359_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre movs r2, 0 str r2, [sp+0x08] // [V09 loc5] cmp r6, 0
- beq G_M25359_IG13
+ beq G_M25359_IG12
movw lr, 0xd1ff movt lr, 0xd1ff str lr, [sp] // [V10 loc6] @@ -90,27 +90,16 @@ G_M25359_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre movs r1, 3 mul r0, r0, r1 cmp r7, r0
- blt SHORT G_M25359_IG04 - ;; size=68 bbWeight=1 PerfScore 23.00 -G_M25359_IG03: ; bbWeight=0.83, gcVars=00000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, gcvars, byref, isz
+ blt G_M25359_IG25 + ;; size=70 bbWeight=1 PerfScore 23.00 +G_M25359_IG03: ; bbWeight=0.83, gcVars=00000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, gcvars, byref
sub r12, r10, 4
- b SHORT G_M25359_IG05 - ;; size=6 bbWeight=0.83 PerfScore 1.67 -G_M25359_IG04: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, byref - mov r0, r7 - movs r1, 3 - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_DIV - ; gcr arg pop 0 - lsl r12, r0, 2 - ldr r7, [sp+0x10] // [V07 loc3] - ;; size=20 bbWeight=0.17 PerfScore 1.17 -G_M25359_IG05: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, byref, isz
+ ;; size=4 bbWeight=0.83 PerfScore 0.83 +G_M25359_IG04: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, byref, isz
cmp r12, 0
- ble G_M25359_IG21
+ ble G_M25359_IG20
;; size=8 bbWeight=0.17 PerfScore 0.33
-G_M25359_IG06: ; bbWeight=20.67, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, byref, isz
+G_M25359_IG05: ; bbWeight=20.67, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, byref, isz
ldr r3, [sp+0x0C] // [V08 loc4] lsls r0, r3, 1 add r0, r8 @@ -140,11 +129,11 @@ G_M25359_IG06: ; bbWeight=20.67, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 lsls r1, r1, 6 orrs r1, r0 ;; size=72 bbWeight=20.67 PerfScore 516.67
-G_M25359_IG07: ; bbWeight=20.67, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 lr}, byref, isz
+G_M25359_IG06: ; bbWeight=20.67, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 lr}, byref, isz
cmp r1, 0
- blt SHORT G_M25359_IG22
+ blt SHORT G_M25359_IG21
;; size=4 bbWeight=20.67 PerfScore 41.33
-G_M25359_IG08: ; bbWeight=21.67, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 lr}, byref, isz
+G_M25359_IG07: ; bbWeight=21.67, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 lr}, byref, isz
ldr r2, [sp+0x08] // [V09 loc5] add r0, r9, r2 ; byrRegs +[r0] @@ -156,16 +145,16 @@ G_M25359_IG08: ; bbWeight=21.67, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 adds r2, r2, 3 adds r3, r3, 4 cmp r3, r12
- blt SHORT G_M25359_IG20
+ blt SHORT G_M25359_IG19
;; size=24 bbWeight=21.67 PerfScore 238.33
-G_M25359_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 lr}, byref, isz
+G_M25359_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 lr}, byref, isz
; byrRegs -[r0] ldr r10, [sp+0x14] // [V06 loc2] sub r0, r10, 4 cmp r12, r0
- bne SHORT G_M25359_IG19
+ bne SHORT G_M25359_IG18
cmp r3, r10
- beq SHORT G_M25359_IG18
+ beq SHORT G_M25359_IG17
lsl r0, r10, 1 sub r1, r0, 8 ldrh r5, [r8+r1] @@ -182,7 +171,7 @@ G_M25359_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 mvn r7, 255 ands r6, r7 cmp r6, 0
- bne SHORT G_M25359_IG17
+ bne SHORT G_M25359_IG16
ldrsb r5, [lr+r5] lsls r5, r5, 18 ldrsb r1, [lr+r1] @@ -191,7 +180,7 @@ G_M25359_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 cmp r0, 61 beq SHORT G_M25359_IG26 ;; size=86 bbWeight=1 PerfScore 29.00
-G_M25359_IG10: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=4210 {r4 r9 lr}, byref, isz
+G_M25359_IG09: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=4210 {r4 r9 lr}, byref, isz
ldrsb r0, [lr+r0] orrs r0, r5 ldrsb r12, [lr+r12] @@ -199,11 +188,11 @@ G_M25359_IG10: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=4210 {r4 r9 ; byrRegs -[lr] orr r5, r0, lr cmp r5, 0
- blt SHORT G_M25359_IG16
+ blt SHORT G_M25359_IG15
ldr r7, [sp+0x10] // [V07 loc3] subs r0, r7, 3 cmp r2, r0
- bgt SHORT G_M25359_IG15
+ bgt SHORT G_M25359_IG14
add r0, r9, r2 ; byrRegs +[r0] asrs r1, r5, 16 @@ -213,19 +202,19 @@ G_M25359_IG10: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=4210 {r4 r9 strb r5, [r0+0x02] adds r2, r2, 3 ;; size=46 bbWeight=0.83 PerfScore 15.00
-G_M25359_IG11: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M25359_IG10: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz
; byrRegs -[r0 r9] ; GC ptr vars -{V10} adds r3, r3, 4 ldr r6, [sp+0x04] // [V41 tmp24] cmp r10, r6 str r2, [sp+0x08] // [V09 loc5]
- bne SHORT G_M25359_IG22
+ bne SHORT G_M25359_IG21
;; size=10 bbWeight=1 PerfScore 5.00
-G_M25359_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M25359_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
str r3, [sp+0x0C] // [V08 loc4] ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M25359_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
+G_M25359_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref
ldr r3, [sp+0x0C] // [V08 loc4] str r3, [r4] ldr r5, [sp+0x54] // [V03 arg3] @@ -234,49 +223,49 @@ G_M25359_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre str r2, [r5] movs r0, 1 ;; size=12 bbWeight=1 PerfScore 6.00
-G_M25359_IG14: ; bbWeight=1, epilog, nogc, extend
+G_M25359_IG13: ; bbWeight=1, epilog, nogc, extend
add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 16 bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-G_M25359_IG15: ; bbWeight=0.42, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M25359_IG14: ; bbWeight=0.42, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz
; byrRegs -[r5] str r2, [sp+0x08] // [V09 loc5]
- b SHORT G_M25359_IG22
+ b SHORT G_M25359_IG21
;; size=4 bbWeight=0.42 PerfScore 0.83
-G_M25359_IG16: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+G_M25359_IG15: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
str r2, [sp+0x08] // [V09 loc5]
- b SHORT G_M25359_IG22
+ b SHORT G_M25359_IG21
;; size=4 bbWeight=0.42 PerfScore 0.83
+G_M25359_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz + str r2, [sp+0x08] // [V09 loc5] + b SHORT G_M25359_IG21 + ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M25359_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz str r2, [sp+0x08] // [V09 loc5]
- b SHORT G_M25359_IG22
+ b SHORT G_M25359_IG21
;; size=4 bbWeight=0.50 PerfScore 1.00 G_M25359_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz str r2, [sp+0x08] // [V09 loc5]
- b SHORT G_M25359_IG22
+ b SHORT G_M25359_IG21
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M25359_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - str r2, [sp+0x08] // [V09 loc5] - b SHORT G_M25359_IG22 - ;; size=4 bbWeight=0.50 PerfScore 1.00 -G_M25359_IG20: ; bbWeight=10.83, gcVars=00000020 {V10}, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 lr}, gcvars, byref, isz
+G_M25359_IG19: ; bbWeight=10.83, gcVars=00000020 {V10}, gcrefRegs=0000 {}, byrefRegs=4310 {r4 r8 r9 lr}, gcvars, byref, isz
; byrRegs +[r8-r9 lr] ; GC ptr vars +{V05 V10} str r3, [sp+0x0C] // [V08 loc4] str r2, [sp+0x08] // [V09 loc5]
- b SHORT G_M25359_IG06
+ b SHORT G_M25359_IG05
;; size=6 bbWeight=10.83 PerfScore 32.50
-G_M25359_IG21: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, byref, isz
+G_M25359_IG20: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, byref, isz
; byrRegs -[lr] ldr r2, [sp+0x08] // [V09 loc5] ldr r3, [sp+0x0C] // [V08 loc4] ldr lr, [sp] // [V10 loc6] ; byrRegs +[lr]
- b SHORT G_M25359_IG09
+ b SHORT G_M25359_IG08
;; size=10 bbWeight=0.08 PerfScore 0.33
-G_M25359_IG22: ; bbWeight=5.94, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz
+G_M25359_IG21: ; bbWeight=5.94, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref, isz
; byrRegs -[r8-r9 lr] ; GC ptr vars -{V05 V10} str r3, [r4] @@ -287,15 +276,15 @@ G_M25359_IG22: ; bbWeight=5.94, gcVars=00000000 {}, gcrefRegs=0000 {}, by ldr r0, [r4] ands r0, r0, 3 cmp r0, 0
- beq SHORT G_M25359_IG23
+ beq SHORT G_M25359_IG22
movs r0, 0
- b SHORT G_M25359_IG24
+ b SHORT G_M25359_IG23
;; size=22 bbWeight=5.94 PerfScore 59.39
-G_M25359_IG23: ; bbWeight=5.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25359_IG22: ; bbWeight=5.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r4-r5] movs r0, 1 ;; size=2 bbWeight=5.94 PerfScore 5.94
-G_M25359_IG24: ; bbWeight=5.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25359_IG23: ; bbWeight=5.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -303,15 +292,27 @@ G_M25359_IG24: ; bbWeight=5.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcr arg pop 0 movs r0, 0 ;; size=14 bbWeight=5.94 PerfScore 29.69
-G_M25359_IG25: ; bbWeight=5.94, epilog, nogc, extend
+G_M25359_IG24: ; bbWeight=5.94, epilog, nogc, extend
add sp, 28 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} add sp, 16 bx lr ;; size=10 bbWeight=5.94 PerfScore 23.75
-G_M25359_IG26: ; bbWeight=0.17, gcVars=00000020 {V10}, gcrefRegs=0000 {}, byrefRegs=4210 {r4 r9 lr}, gcvars, byref, isz - ; byrRegs +[r4 r9 lr]
+G_M25359_IG25: ; bbWeight=0.17, gcVars=00000020 {V10}, gcrefRegs=0000 {}, byrefRegs=0310 {r4 r8 r9}, gcvars, byref, isz + ; byrRegs +[r4 r8-r9]
; GC ptr vars +{V05 V10}
+ mov r0, r7 + movs r1, 3 + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_DIV + ; gcr arg pop 0 + lsl r12, r0, 2 + ldr r7, [sp+0x10] // [V07 loc3] + b SHORT G_M25359_IG04 + ;; size=22 bbWeight=0.17 PerfScore 1.33 +G_M25359_IG26: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=4210 {r4 r9 lr}, byref, isz + ; byrRegs -[r8] +[lr]
...

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

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 49,877 6,439 43,438 1,255 (2.45%) 1,255 (2.45%)
benchmarks.run_pgo.linux.arm.checked.mch 164,182 59,122 105,060 3,267 (1.95%) 3,267 (1.95%)
benchmarks.run_tiered.linux.arm.checked.mch 79,715 43,305 36,410 1,110 (1.37%) 1,110 (1.37%)
coreclr_tests.run.linux.arm.checked.mch 472,651 259,513 213,138 7,200 (1.50%) 7,200 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 169,558 14 169,544 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 274,272 6 274,266 7,834 (2.78%) 7,834 (2.78%)
libraries_tests.run.linux.arm.Release.mch 703,270 440,967 262,303 17,668 (2.45%) 17,668 (2.45%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,696 21,625 253,071 33,619 (10.90%) 33,619 (10.90%)
realworld.run.linux.arm.checked.mch 36,478 165 36,313 1,419 (3.74%) 1,419 (3.74%)
2,224,699 831,156 1,393,543 73,372 (3.19%) 73,372 (3.19%)

jit-analyze output

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

Detail diffs



Top file regressions (bytes):
           2 : 644106.dasm (0.36 % of base)

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

Top method regressions (bytes):
           2 (0.36 % of base) : 644106.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (Tier1)

Top method regressions (percentages):
           2 (0.36 % of base) : 644106.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (Tier1)

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