Assembly Diffs

linux arm64

Diffs are based on 2,498,771 contexts (1,011,240 MinOpts, 1,487,531 FullOpts).

MISSED contexts: 6,580 (0.26%)

Overall (+0 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm64.Release.mch 383,838,152 +0

FullOpts (+0 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm64.Release.mch 168,416,476 +0

Example diffs

libraries_tests.run.linux.arm64.Release.mch

+0 (0.00%) : 538925.dasm - System.DateTimeParse:ParseISO8601(byref,byref,int,byref):ubyte (Tier1)

@@ -99,10 +99,10 @@ ; V87 tmp76 [V87,T83] ( 6, 2.45) byref -> x3 "Span.get_Item ptrToSpan" ;* V88 tmp77 [V88 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V89 tmp78 [V89,T109] ( 6, 1.34) int -> x0
-; V90 tmp79 [V90,T43] ( 6, 5.75) int -> x28 "Span.get_Item index"
+; V90 tmp79 [V90,T43] ( 6, 5.75) int -> registers "Span.get_Item index"
; V91 tmp80 [V91,T37] ( 6, 5.75) byref -> x2 "Span.get_Item ptrToSpan"
-; V92 tmp81 [V92,T44] ( 6, 5.75) int -> x2 "Span.get_Item index" -; V93 tmp82 [V93,T38] ( 6, 5.75) byref -> x3 "Span.get_Item ptrToSpan"
+; V92 tmp81 [V92,T44] ( 6, 5.75) int -> x28 "Span.get_Item index" +; V93 tmp82 [V93,T38] ( 6, 5.75) byref -> x2 "Span.get_Item ptrToSpan"
;* V94 tmp83 [V94 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V95 tmp84 [V95 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V96 tmp85 [V96 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" @@ -143,10 +143,10 @@ ; V131 tmp120 [V131,T84] ( 6, 2.45) byref -> x4 "Span.get_Item ptrToSpan" ;* V132 tmp121 [V132 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ; V133 tmp122 [V133,T110] ( 6, 1.34) int -> x0
-; V134 tmp123 [V134,T45] ( 6, 5.75) int -> x27 "Span.get_Item index"
+; V134 tmp123 [V134,T45] ( 6, 5.75) int -> registers "Span.get_Item index"
; V135 tmp124 [V135,T39] ( 6, 5.75) byref -> x2 "Span.get_Item ptrToSpan"
-; V136 tmp125 [V136,T46] ( 6, 5.75) int -> x2 "Span.get_Item index" -; V137 tmp126 [V137,T40] ( 6, 5.75) byref -> x3 "Span.get_Item ptrToSpan"
+; V136 tmp125 [V136,T46] ( 6, 5.75) int -> x27 "Span.get_Item index" +; V137 tmp126 [V137,T40] ( 6, 5.75) byref -> x2 "Span.get_Item ptrToSpan"
;* V138 tmp127 [V138 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V139 tmp128 [V139 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V140 tmp129 [V140,T111] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -301,11 +301,11 @@ ; V289 cse5 [V289,T81] ( 3, 2.67) int -> x0 "CSE - conservative" ; V290 cse6 [V290,T98] ( 3, 2.01) int -> x0 "CSE - conservative" ; V291 cse7 [V291,T122] ( 4, 0.79) int -> x27 "CSE - conservative"
-; V292 cse8 [V292,T123] ( 4, 0.79) int -> x28 "CSE - conservative"
+; V292 cse8 [V292,T123] ( 4, 0.79) int -> x0 "CSE - conservative"
; V293 cse9 [V293,T124] ( 4, 0.79) int -> x28 "CSE - conservative" ; V294 cse10 [V294,T125] ( 4, 0.79) int -> x0 "CSE - conservative" ; V295 cse11 [V295,T126] ( 4, 0.79) int -> x27 "CSE - conservative"
-; V296 cse12 [V296,T127] ( 4, 0.79) int -> x27 "CSE - conservative"
+; V296 cse12 [V296,T127] ( 4, 0.79) int -> x0 "CSE - conservative"
; V297 cse13 [V297,T01] ( 38, 24.52) byref -> x24 hoist multi-def "CSE - aggressive" ; ; Lcl frame size = 32 @@ -508,26 +508,24 @@ G_M63361_IG10: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 ;; size=164 bbWeight=0.27 PerfScore 14.69 G_M63361_IG11: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 x20 x21 x24}, byref, isz ; byrRegs -[x2]
- ldr w28, [x19, #0x08] - sxtw w2, w28
+ ldr w0, [x19, #0x08] + sxtw w2, w0
mov x3, x24 ; byrRegs +[x3]
- ldr w0, [x3, #0x08] - cmp w2, w0
+ ldr w4, [x3, #0x08] + cmp w2, w4
bhs G_M63361_IG112
- ldr x0, [x3] - ; byrRegs +[x0] - ldrh w0, [x0, w2, UXTW #2] - ; byrRegs -[x0] - sub w0, w0, #48 - cmp w0, #9
+ ldr x3, [x3] + ldrh w2, [x3, w2, UXTW #2] + sub w2, w2, #48 + cmp w2, #9
bhi G_M63361_IG14 ;; size=44 bbWeight=0.20 PerfScore 3.37 G_M63361_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 x20 x21 x24}, byref, isz ; byrRegs -[x3]
- tbnz w28, #31, G_M63361_IG114 - ldr w0, [x19, #0x18] - cmp w28, w0
+ tbnz w0, #31, G_M63361_IG114 + ldr w1, [x19, #0x18] + cmp w0, w1
cset x0, lt ;; size=16 bbWeight=0.19 PerfScore 0.95 G_M63361_IG13: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 x20 x21 x24}, byref, isz @@ -701,15 +699,15 @@ G_M63361_IG24: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ldr w28, [x19, #0x08]
+ ldr w26, [x19, #0x08]
mov x2, x24 ; byrRegs +[x2] ldr w0, [x2, #0x08]
- cmp w28, w0
+ cmp w26, w0
bhs G_M63361_IG112 ldr x0, [x2] ; byrRegs +[x0]
- ldrh w0, [x0, w28, UXTW #2]
+ ldrh w0, [x0, w26, UXTW #2]
; byrRegs -[x0] sub w0, w0, #48 cmp w0, #9 @@ -723,15 +721,15 @@ G_M63361_IG24: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ldr w2, [x19, #0x08] - mov x3, x24 - ; byrRegs +[x3] - ldr w0, [x3, #0x08] - cmp w2, w0
+ ldr w28, [x19, #0x08] + mov x2, x24 + ; byrRegs +[x2] + ldr w0, [x2, #0x08] + cmp w28, w0
bhs G_M63361_IG112
- ldr x0, [x3]
+ ldr x0, [x2]
; byrRegs +[x0]
- ldrh w0, [x0, w2, UXTW #2]
+ ldrh w0, [x0, w28, UXTW #2]
; byrRegs -[x0] sub w26, w0, #48 mov w1, #1 @@ -743,7 +741,7 @@ G_M63361_IG24: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 bge G_M63361_IG29 ;; size=164 bbWeight=0.27 PerfScore 14.69 G_M63361_IG25: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 x20 x21 x24}, byref
- ; byrRegs -[x3]
+ ; byrRegs -[x2]
b G_M63361_IG44 ;; size=4 bbWeight=0.20 PerfScore 0.20 G_M63361_IG26: ; bbWeight=1.15, gcrefRegs=0000 {}, byrefRegs=380000 {x19 x20 x21}, byref, isz @@ -973,6 +971,28 @@ G_M63361_IG51: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
+ ldr w0, [x19, #0x08] + mov x2, x24 + ; byrRegs +[x2] + ldr w1, [x2, #0x08] + cmp w0, w1 + bhs G_M63361_IG112 + ldr x1, [x2] + ; byrRegs +[x1] + ldrh w0, [x1, w0, UXTW #2] + sub w0, w0, #48 + cmp w0, #9 + cset x0, ls + movz x1, #0xD1FFAB1E + ; byrRegs -[x1] + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + movz x2, #0xD1FFAB1E // code for <unknown method> + ; byrRegs -[x2] + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2
ldr w28, [x19, #0x08] mov x2, x24 ; byrRegs +[x2] @@ -983,28 +1003,6 @@ G_M63361_IG51: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 ; byrRegs +[x0] ldrh w0, [x0, w28, UXTW #2] ; byrRegs -[x0]
- sub w0, w0, #48 - cmp w0, #9 - cset x0, ls - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - movz x2, #0xD1FFAB1E // code for <unknown method> - ; byrRegs -[x2] - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ldr w2, [x19, #0x08] - mov x3, x24 - ; byrRegs +[x3] - ldr w0, [x3, #0x08] - cmp w2, w0 - bhs G_M63361_IG112 - ldr x0, [x3] - ; byrRegs +[x0] - ldrh w0, [x0, w2, UXTW #2] - ; byrRegs -[x0]
mov w1, #10 madd w0, w26, w1, w0 sub w26, w0, #48 @@ -1012,7 +1010,7 @@ G_M63361_IG51: ; bbWeight=0.68, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 b G_M63361_IG30 ;; size=152 bbWeight=0.68 PerfScore 32.82 G_M63361_IG52: ; bbWeight=1.15, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 x20 x21 x24}, byref, isz
- ; byrRegs -[x3]
+ ; byrRegs -[x2]
mov w0, w27 movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte movk x1, #0xD1FFAB1E LSL #16 @@ -1185,15 +1183,15 @@ G_M63361_IG65: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ldr w27, [x19, #0x08]
+ ldr w23, [x19, #0x08]
mov x2, x24 ; byrRegs +[x2] ldr w0, [x2, #0x08]
- cmp w27, w0
+ cmp w23, w0
bhs G_M63361_IG112 ldr x0, [x2] ; byrRegs +[x0]
- ldrh w0, [x0, w27, UXTW #2]
+ ldrh w0, [x0, w23, UXTW #2]
; byrRegs -[x0] sub w0, w0, #48 cmp w0, #9 @@ -1207,18 +1205,19 @@ G_M63361_IG65: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] blr x2
- ldr w2, [x19, #0x08] - mov x3, x24 - ; byrRegs +[x3] - ldr w0, [x3, #0x08] - cmp w2, w0
+ ldr w27, [x19, #0x08] + mov x2, x24 + ; byrRegs +[x2] + ldr w0, [x2, #0x08] + cmp w27, w0
bhs G_M63361_IG112
- ldr x0, [x3]
+ ldr x0, [x2]
; byrRegs +[x0]
- ldrh w0, [x0, w2, UXTW #2]
+ ldrh w0, [x0, w27, UXTW #2]
; byrRegs -[x0] sub w23, w0, #48 mov w2, #1
+ ; byrRegs -[x2]
ldr w0, [x19, #0x08] add w27, w0, #1 str w27, [x19, #0x08] @@ -1227,25 +1226,24 @@ G_M63361_IG65: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 bge G_M63361_IG33 ;; size=164 bbWeight=0.27 PerfScore 14.69 G_M63361_IG66: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=1380000 {x19 x20 x21 x24}, byref, isz
- ; byrRegs -[x3] - ldr w27, [x19, #0x08]
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.arm64.Release.mch 1 0 0 1 -0 +0
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
1 0 0 1 -0 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 34,613 3,148 31,465 239 (0.69%) 239 (0.69%)
benchmarks.run_pgo.linux.arm64.checked.mch 150,972 59,296 91,676 132 (0.09%) 132 (0.09%)
benchmarks.run_tiered.linux.arm64.checked.mch 71,125 53,989 17,136 82 (0.12%) 82 (0.12%)
coreclr_tests.run.linux.arm64.checked.mch 626,766 383,796 242,970 455 (0.07%) 455 (0.07%)
libraries.crossgen2.linux.arm64.checked.mch 234,183 15 234,168 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 293,130 6 293,124 1,913 (0.65%) 1,913 (0.65%)
libraries_tests.run.linux.arm64.Release.mch 733,486 489,338 244,148 1,326 (0.18%) 1,326 (0.18%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 302,704 21,560 281,144 2,093 (0.69%) 2,093 (0.69%)
realworld.run.linux.arm64.checked.mch 32,765 85 32,680 338 (1.02%) 338 (1.02%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,027 7 19,020 2 (0.01%) 2 (0.01%)
2,498,771 1,011,240 1,487,531 6,580 (0.26%) 6,580 (0.26%)

jit-analyze output

libraries_tests.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 383838152 (overridden on cmd)
Total bytes of diff: 383838152 (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), 1 unchanged.

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



linux x64

Diffs are based on 2,505,340 contexts (977,766 MinOpts, 1,527,574 FullOpts).

MISSED contexts: 6,922 (0.28%)

No diffs found.

Details

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 42,533 3,142 39,391 324 (0.76%) 324 (0.76%)
benchmarks.run_pgo.linux.x64.checked.mch 158,221 60,171 98,050 156 (0.10%) 156 (0.10%)
benchmarks.run_tiered.linux.x64.checked.mch 56,416 42,280 14,136 84 (0.15%) 84 (0.15%)
coreclr_tests.run.linux.x64.checked.mch 596,312 354,685 241,627 459 (0.08%) 459 (0.08%)
libraries.crossgen2.linux.x64.checked.mch 234,032 15 234,017 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 294,182 6 294,176 2,052 (0.69%) 2,052 (0.69%)
libraries_tests.run.linux.x64.Release.mch 760,250 495,575 264,675 1,402 (0.18%) 1,402 (0.18%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 303,249 21,873 281,376 2,099 (0.69%) 2,099 (0.69%)
realworld.run.linux.x64.checked.mch 32,728 9 32,719 341 (1.03%) 341 (1.03%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,417 10 27,407 5 (0.02%) 5 (0.02%)
2,505,340 977,766 1,527,574 6,922 (0.28%) 6,922 (0.28%)


osx arm64

Diffs are based on 2,229,922 contexts (927,360 MinOpts, 1,302,562 FullOpts).

MISSED contexts: 6,095 (0.27%)

No diffs found.

Details

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run_pgo.osx.arm64.checked.mch 84,643 48,345 36,298 183 (0.22%) 183 (0.22%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,253 37,331 10,922 63 (0.13%) 63 (0.13%)
coreclr_tests.run.osx.arm64.checked.mch 586,148 358,028 228,120 437 (0.07%) 437 (0.07%)
libraries.crossgen2.osx.arm64.checked.mch 233,760 15 233,745 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 313,582 18 313,564 2,034 (0.64%) 2,034 (0.64%)
libraries_tests.run.osx.arm64.Release.mch 631,292 462,062 169,230 965 (0.15%) 965 (0.15%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 301,027 21,558 279,469 2,087 (0.69%) 2,087 (0.69%)
realworld.run.osx.arm64.checked.mch 31,217 3 31,214 326 (1.03%) 326 (1.03%)
2,229,922 927,360 1,302,562 6,095 (0.27%) 6,095 (0.27%)


windows arm64

Diffs are based on 2,308,445 contexts (929,692 MinOpts, 1,378,753 FullOpts).

MISSED contexts: 6,353 (0.27%)

No diffs found.

Details

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,217 4 24,213 230 (0.94%) 230 (0.94%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,879 48,066 48,813 104 (0.11%) 104 (0.11%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,412 36,693 11,719 61 (0.13%) 61 (0.13%)
coreclr_tests.run.windows.arm64.checked.mch 595,261 362,539 232,722 442 (0.07%) 442 (0.07%)
libraries.crossgen2.windows.arm64.checked.mch 243,831 15 243,816 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 302,812 6 302,806 2,059 (0.68%) 2,059 (0.68%)
libraries_tests.run.windows.arm64.Release.mch 625,153 460,799 164,354 901 (0.14%) 901 (0.14%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 314,854 21,559 293,295 2,183 (0.69%) 2,183 (0.69%)
realworld.run.windows.arm64.checked.mch 32,874 3 32,871 370 (1.11%) 370 (1.11%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,152 8 24,144 3 (0.01%) 3 (0.01%)
2,308,445 929,692 1,378,753 6,353 (0.27%) 6,353 (0.27%)


windows x64

Diffs are based on 2,366,385 contexts (928,740 MinOpts, 1,437,645 FullOpts).

MISSED contexts: 6,816 (0.29%)

No diffs found.

Details

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x64.checked.mch 27,852 4 27,848 234 (0.83%) 234 (0.83%)
benchmarks.run_pgo.windows.x64.checked.mch 101,589 49,789 51,800 129 (0.13%) 129 (0.13%)
benchmarks.run_tiered.windows.x64.checked.mch 54,309 36,842 17,467 76 (0.14%) 76 (0.14%)
coreclr_tests.run.windows.x64.checked.mch 573,543 340,982 232,561 446 (0.08%) 446 (0.08%)
libraries.crossgen2.windows.x64.checked.mch 243,425 15 243,410 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 306,292 6 306,286 2,206 (0.72%) 2,206 (0.72%)
libraries_tests.run.windows.x64.Release.mch 672,161 479,203 192,958 1,126 (0.17%) 1,126 (0.17%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 318,317 21,885 296,432 2,194 (0.68%) 2,194 (0.68%)
realworld.run.windows.x64.checked.mch 36,488 3 36,485 402 (1.09%) 402 (1.09%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,409 11 32,398 3 (0.01%) 3 (0.01%)
2,366,385 928,740 1,437,645 6,816 (0.29%) 6,816 (0.29%)