Assembly Diffs
linux arm64
Diffs are based on 2,554,585 contexts (1,019,526 MinOpts, 1,535,059 FullOpts).
MISSED contexts: 172 (0.01%)
Overall (+0 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
PerfScore in Diffs |
| libraries_tests.run.linux.arm64.Release.mch |
381,315,748 |
+0 |
0.00% |
FullOpts (+0 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
PerfScore in Diffs |
| libraries_tests.run.linux.arm64.Release.mch |
165,778,652 |
+0 |
0.00% |
Example diffs
libraries_tests.run.linux.arm64.Release.mch
+0 (0.00%) : 531871.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1)
@@ -244,17 +244,17 @@
; V232 tmp225 [V232,T203] ( 2, 0 ) ref -> x1 "argument with side effect"
; V233 tmp226 [V233,T22] ( 3, 1501.82) ref -> x0 "argument with side effect"
; V234 tmp227 [V234,T204] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V235 tmp228 [V235,T135] ( 3, 19.40) ref -> x0 "arr expr"
-; V236 tmp229 [V236,T136] ( 3, 19.40) int -> x1 "index expr"
-; V237 tmp230 [V237,T205] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V238 tmp231 [V238,T113] ( 3, 54.33) ref -> x0 "argument with side effect"
-; V239 tmp232 [V239,T114] ( 3, 54.33) ref -> x0 "argument with side effect"
-; V240 tmp233 [V240,T115] ( 3, 54.33) ref -> x0 "argument with side effect"
-; V241 tmp234 [V241,T116] ( 3, 54.33) ref -> x0 "argument with side effect"
-; V242 tmp235 [V242,T117] ( 3, 54.33) ref -> x14 "arr expr"
-; V243 tmp236 [V243,T118] ( 3, 54.33) int -> x15 "index expr"
-; V244 tmp237 [V244,T206] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V245 tmp238 [V245,T207] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V235 tmp228 [V235,T113] ( 3, 54.33) ref -> x0 "argument with side effect"
+; V236 tmp229 [V236,T114] ( 3, 54.33) ref -> x0 "argument with side effect"
+; V237 tmp230 [V237,T115] ( 3, 54.33) ref -> x0 "argument with side effect"
+; V238 tmp231 [V238,T116] ( 3, 54.33) ref -> x0 "argument with side effect"
+; V239 tmp232 [V239,T117] ( 3, 54.33) ref -> x14 "arr expr"
+; V240 tmp233 [V240,T118] ( 3, 54.33) int -> x15 "index expr"
+; V241 tmp234 [V241,T205] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V242 tmp235 [V242,T206] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V243 tmp236 [V243,T207] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V244 tmp237 [V244,T135] ( 3, 19.40) ref -> x0 "arr expr"
+; V245 tmp238 [V245,T136] ( 3, 19.40) int -> x1 "index expr"
; V246 tmp239 [V246,T37] ( 3, 844.30) ref -> x0 "argument with side effect"
; V247 tmp240 [V247,T43] ( 3, 609.77) ref -> x0 "arr expr"
; V248 tmp241 [V248,T44] ( 3, 609.77) int -> x1 "index expr"
@@ -362,7 +362,7 @@ G_M51225_IG06: ; bbWeight=551.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {
G_M51225_IG07: ; bbWeight=250.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #1
cmp w0, #6
- bhi G_M51225_IG165
+ bhi G_M51225_IG96
ldr x0, [x19, #0x48]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -374,7 +374,7 @@ G_M51225_IG07: ; bbWeight=250.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {
;; size=40 bbWeight=250.30 PerfScore 2753.34
G_M51225_IG08: ; bbWeight=250.30, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldrb w1, [x0, #0x2F]
- cbnz w1, G_M51225_IG160
+ cbnz w1, G_M51225_IG74
ldr x0, [x0, #0x08]
ldr x1, [x0]
ldr x1, [x1, #0x68]
@@ -383,7 +383,7 @@ G_M51225_IG08: ; bbWeight=250.30, gcrefRegs=80001 {x0 x19}, byrefRegs=000
; gcrRegs -[x0]
; gcr arg pop 0
cmn w0, #1
- beq G_M51225_IG161
+ beq G_M51225_IG92
;; size=36 bbWeight=250.30 PerfScore 4630.61
G_M51225_IG09: ; bbWeight=250.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
uxtb w28, w0
@@ -392,11 +392,11 @@ G_M51225_IG10: ; bbWeight=250.30, gcrefRegs=80000 {x19}, byrefRegs=0000 {
sxtw w27, w28
sub w22, w28, #1
cmp w22, #8
- beq G_M51225_IG71
+ beq G_M51225_IG98
;; size=16 bbWeight=250.30 PerfScore 625.76
G_M51225_IG11: ; bbWeight=109.59, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, #19
- bhi G_M51225_IG164
+ bhi G_M51225_IG95
mov w0, w22
adr x1, [@RWD00]
ldr w1, [x1, x0, LSL #2]
@@ -446,7 +446,7 @@ G_M51225_IG17: ; bbWeight=457.81, gcrefRegs=84000 {x14 x19}, byrefRegs=00
ldr x14, [x14, #0x08]
ldr w12, [x14, #0x08]
cmp w15, w12
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
add x14, x14, #16
; gcrRegs -[x14]
; byrRegs +[x14]
@@ -465,7 +465,7 @@ G_M51225_IG19: ; bbWeight=316.95, gcrefRegs=280002 {x1 x19 x21}, byrefReg
movk x0, #0xD1FFAB1E LSL #32
ldr x14, [x21]
cmp x14, x0
- bne G_M51225_IG155
+ bne G_M51225_IG87
;; size=24 bbWeight=316.95 PerfScore 1901.67
G_M51225_IG20: ; bbWeight=633.89, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
@@ -480,7 +480,7 @@ G_M51225_IG21: ; bbWeight=611.64, gcrefRegs=280000 {x19 x21}, byrefRegs=0
str xzr, [x14]
ldr w15, [x21, #0x58]
cmp w15, #2
- beq G_M51225_IG156
+ beq G_M51225_IG88
ldr w24, [x21, #0x50]
ldr w15, [x21, #0x6C]
cmp w24, w15
@@ -491,7 +491,7 @@ G_M51225_IG22: ; bbWeight=458.73, gcrefRegs=280000 {x19 x21}, byrefRegs=8
; gcrRegs +[x15]
ldr w12, [x15, #0x08]
cmp w24, w12
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
@@ -503,7 +503,7 @@ G_M51225_IG22: ; bbWeight=458.73, gcrefRegs=280000 {x19 x21}, byrefRegs=8
ldr w12, [x21, #0x50]
ldr wip0, [x15, #0x08]
cmp w12, wip0
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
@@ -522,7 +522,7 @@ G_M51225_IG23: ; bbWeight=458.73, gcrefRegs=280000 {x19 x21}, byrefRegs=0
sxtw w15, w0
ldr w12, [x14, #0x08]
cmp w15, w12
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
add x14, x14, #16
; gcrRegs -[x14]
; byrRegs +[x14]
@@ -536,7 +536,7 @@ G_M51225_IG23: ; bbWeight=458.73, gcrefRegs=280000 {x19 x21}, byrefRegs=0
; gcrRegs +[x14]
ldr w15, [x14, #0x08]
cmp w0, w15
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
add x14, x14, #16
; gcrRegs -[x14]
; byrRegs +[x14]
@@ -700,7 +700,7 @@ G_M51225_IG38: ; bbWeight=89.85, gcrefRegs=280001 {x0 x19 x21}, byrefRegs
; gcr arg pop 0
ldr w0, [x21, #0x60]
cmp w0, #2
- bne G_M51225_IG96
+ bne G_M51225_IG123
;; size=36 bbWeight=89.85 PerfScore 1168.06
G_M51225_IG39: ; bbWeight=68.60, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19, #0x38]
@@ -752,13 +752,13 @@ G_M51225_IG44: ; bbWeight=89.85, gcrefRegs=280000 {x19 x21}, byrefRegs=00
ldr w3, [x3, #0x08]
; gcrRegs -[x3]
cmp w4, w3
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
sub w3, w0, #1
str w3, [x1, #0x18]
ldr w1, [x2, #0x08]
; gcrRegs -[x1]
cmp w0, w1
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
add x1, x2, #16
; byrRegs +[x1]
str xzr, [x1, w0, UXTW #3]
@@ -768,11 +768,11 @@ G_M51225_IG45: ; bbWeight=89.85, gcrefRegs=280000 {x19 x21}, byrefRegs=00
; byrRegs -[x1]
ldr x1, [x19, #0x50]
; gcrRegs +[x1]
- cbnz x1, G_M51225_IG89
+ cbnz x1, G_M51225_IG116
;; size=8 bbWeight=89.85 PerfScore 359.40
G_M51225_IG46: ; bbWeight=44.93, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- b G_M51225_IG88
+ b G_M51225_IG115
;; size=4 bbWeight=44.93 PerfScore 44.93
G_M51225_IG47: ; bbWeight=2.08, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref
; gcrRegs +[x23]
@@ -934,7 +934,7 @@ G_M51225_IG54: ; bbWeight=23.16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}
mov w28, wzr
ldr w0, [x26, #0x20]
cmp w0, #0
- ble G_M51225_IG94
+ ble G_M51225_IG121
;; size=136 bbWeight=23.16 PerfScore 1424.60
G_M51225_IG55: ; bbWeight=185.31, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, byref, isz
ldr x21, [x26, #0x10]
@@ -950,7 +950,7 @@ G_M51225_IG55: ; bbWeight=185.31, gcrefRegs=4080000 {x19 x26}, byrefRegs=
; gcrRegs +[x15]
ldr w14, [x21, #0x08]
cmp w28, w14
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
add x14, x21, #16
; byrRegs +[x14]
add x14, x14, x28, LSL #3
@@ -963,7 +963,7 @@ G_M51225_IG55: ; bbWeight=185.31, gcrefRegs=4080000 {x19 x26}, byrefRegs=
blt G_M51225_IG55
;; size=68 bbWeight=185.31 PerfScore 5281.43
G_M51225_IG56: ; bbWeight=23.16, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, byref
- b G_M51225_IG94
+ b G_M51225_IG121
;; size=4 bbWeight=23.16 PerfScore 23.16
G_M51225_IG57: ; bbWeight=2.72, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x26] +[x21]
@@ -996,7 +996,7 @@ G_M51225_IG59: ; bbWeight=152.91, gcrefRegs=280000 {x19 x21}, byrefRegs=0
G_M51225_IG60: ; bbWeight=152.91, gcrefRegs=280000 {x19 x21}, byrefRegs=804000 {x14 x23}, byref, isz
; byrRegs +[x14 x23]
ldrb w15, [x21, #0x70]
- cbz w15, G_M51225_IG157
+ cbz w15, G_M51225_IG89
b G_M51225_IG22
;; size=12 bbWeight=152.91 PerfScore 764.55
G_M51225_IG61: ; bbWeight=22.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
@@ -1051,7 +1051,7 @@ G_M51225_IG62: ; bbWeight=9.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
ldr x14, [x14, #0x58]
ldr w12, [x14, #0x08]
cmp w15, w12
- bhs G_M51225_IG153
+ bhs G_M51225_IG70
add x14, x14, #16
; gcrRegs -[x14]
; byrRegs +[x14]
@@ -1082,7 +1082,7 @@ G_M51225_IG65: ; bbWeight=9.05, gcrefRegs=3088000 {x15 x19 x24 x25}, byre
; byrRegs -[x14]
ldr x0, [x25, #0x08]
; gcrRegs +[x0]
- cbz x0, G_M51225_IG162
+ cbz x0, G_M51225_IG93
;; size=16 bbWeight=9.05 PerfScore 49.80
G_M51225_IG66: ; bbWeight=2.26, gcrefRegs=2080000 {x19 x25}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x24]
@@ -1152,14 +1152,14 @@ G_M51225_IG67: ; bbWeight=2.26, gcrefRegs=12080000 {x19 x25 x28}, byrefRe
; gcrRegs -[x0 x15 x25]
; byrRegs -[x14]
ldrsb wzr, [x28]
- tbnz w26, #31, G_M51225_IG169
+ tbnz w26, #31, G_M51225_IG71
ldr x0, [x28, #0x08]
; gcrRegs +[x0]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
sub w0, w0, #1
cmp w0, w26
- blt G_M51225_IG171
+ blt G_M51225_IG73
;; size=64 bbWeight=2.26 PerfScore 50.93
G_M51225_IG68: ; bbWeight=2.26, gcrefRegs=10280000 {x19 x21 x28}, byrefRegs=0000 {}, byref
ldr x0, [x28, #0x08]
@@ -1199,8 +1199,466 @@ G_M51225_IG69: ; bbWeight=9.05, gcrefRegs=2080000 {x19 x25}, byrefRegs=00
; byrRegs -[x14]
b G_M51225_IG66
;; size=60 bbWeight=9.05 PerfScore 271.64
-G_M51225_IG70: ; bbWeight=80.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x25]
+G_M51225_IG70: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
+0 (0.00%) : 665472.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -102,9 +102,9 @@
; V90 tmp67 [V90,T32] ( 3, 0 ) byref -> x1 single-def "Spilling address for field-by-field copy"
; V91 tmp68 [V91,T42] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
; V92 tmp69 [V92,T33] ( 3, 0 ) struct (16) [fp+0x50] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V93 tmp70 [V93,T43] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
-; V94 tmp71 [V94,T34] ( 3, 0 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V95 tmp72 [V95 ] ( 2, 0 ) struct (48) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.InterpolatedStringHandlerData>
+; V93 tmp70 [V93 ] ( 2, 0 ) struct (48) [fp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.InterpolatedStringHandlerData>
+; V94 tmp71 [V94,T43] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
+; V95 tmp72 [V95,T34] ( 3, 0 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
; V96 cse0 [V96,T22] ( 3, 0.38) long -> x1 "CSE - conservative"
; V97 cse1 [V97,T10] ( 3, 2.54) int -> x0 "CSE - moderate"
; V98 rat0 [V98,T02] ( 3, 6 ) int -> x0 "ReplaceWithLclVar is creating a new local variable"
@@ -456,7 +456,7 @@ G_M49949_IG32: ; bbWeight=0, extend
G_M49949_IG33: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x0 x21] +[x19-x20]
ldp x0, x1, [x19, #0x40]
- stp x0, x1, [fp, #0x40]
+ stp x0, x1, [fp, #0x10]
;; size=8 bbWeight=0 PerfScore 0.00
G_M49949_IG34: ; bbWeight=0, extend
ldr x1, [x19, #0x20]
@@ -468,7 +468,7 @@ G_M49949_IG34: ; bbWeight=0, extend
; gcrRegs -[x1 x19] +[x0]
mov x3, x0
; gcrRegs +[x3]
- ldp x1, x2, [fp, #0x40] // [V94 tmp71], [V94 tmp71+0x08]
+ ldp x1, x2, [fp, #0x10] // [V95 tmp72], [V95 tmp72+0x08]
; gcrRegs +[x1]
mov x0, x20
movz x4, #0xD1FFAB1E // code for <unknown method>
@@ -720,13 +720,13 @@ G_M49949_IG56: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M49949_IG57: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, nogc
; gcrRegs +[x19-x20]
add x1, fp, #0xD1FFAB1E
- ldp q16, q17, [x1, #0x10]
- stp q16, q17, [fp, #0x10]
- ldr q16, [x1, #0x30]
- str q16, [fp, #0x30]
+ ldp q16, q17, [x1, #0x20]
+ stp q16, q17, [fp, #0x20]
+ ldr q16, [x1, #0x40]
+ str q16, [fp, #0x40]
;; size=20 bbWeight=0 PerfScore 0.00
G_M49949_IG58: ; bbWeight=0, extend
- add x1, fp, #16 // [V95 tmp72]
+ add x1, fp, #32 // [V93 tmp70]
ldr x3, [x19, #0x20]
; gcrRegs +[x3]
ldr x3, [x3, #0x08]
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
PerfScore Overall (FullOpts) |
| benchmarks.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| benchmarks.run_pgo.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| benchmarks.run_tiered.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| coreclr_tests.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries.crossgen2.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries.pmi.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries_tests.run.linux.arm64.Release.mch |
2 |
0 |
0 |
2 |
-0 |
+0 |
0.0000% |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| realworld.run.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
|
2 |
0 |
0 |
2 |
-0 |
+0 |
|
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm64.checked.mch |
39,255 |
4,505 |
34,750 |
6 (0.02%) |
6 (0.02%) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
149,238 |
58,069 |
91,169 |
4 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.linux.arm64.checked.mch |
60,754 |
45,746 |
15,008 |
4 (0.01%) |
4 (0.01%) |
| coreclr_tests.run.linux.arm64.checked.mch |
650,141 |
400,791 |
249,350 |
7 (0.00%) |
7 (0.00%) |
| libraries.crossgen2.linux.arm64.checked.mch |
266,541 |
15 |
266,526 |
1 (0.00%) |
1 (0.00%) |
| libraries.pmi.linux.arm64.checked.mch |
301,087 |
6 |
301,081 |
14 (0.00%) |
14 (0.00%) |
| libraries_tests.run.linux.arm64.Release.mch |
730,259 |
488,690 |
241,569 |
21 (0.00%) |
21 (0.00%) |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
305,156 |
21,622 |
283,534 |
112 (0.04%) |
112 (0.04%) |
| realworld.run.linux.arm64.checked.mch |
33,134 |
75 |
33,059 |
2 (0.01%) |
2 (0.01%) |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
19,020 |
7 |
19,013 |
1 (0.01%) |
1 (0.01%) |
|
2,554,585 |
1,019,526 |
1,535,059 |
172 (0.01%) |
172 (0.01%) |
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: 381315748 (overridden on cmd)
Total bytes of diff: 381315748 (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).
linux x64
Diffs are based on 2,543,224 contexts (988,245 MinOpts, 1,554,979 FullOpts).
MISSED contexts: 177 (0.01%)
Overall (-3 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
PerfScore in Diffs |
| libraries_tests.run.linux.x64.Release.mch |
329,922,608 |
-3 |
+0.16% |
FullOpts (-3 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
PerfScore in Diffs |
| libraries_tests.run.linux.x64.Release.mch |
147,120,622 |
-3 |
+0.16% |
Example diffs
libraries_tests.run.linux.x64.Release.mch
-3 (-0.06%) : 530245.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1)
@@ -242,17 +242,17 @@
; V230 tmp223 [V230,T200] ( 2, 0 ) ref -> rsi "argument with side effect"
; V231 tmp224 [V231,T22] ( 3, 2842.29) ref -> rdi "argument with side effect"
; V232 tmp225 [V232,T201] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V233 tmp226 [V233,T112] ( 3, 35.78) ref -> rdi "arr expr"
-; V234 tmp227 [V234,T113] ( 3, 35.78) int -> rax "index expr"
-; V235 tmp228 [V235,T202] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V236 tmp229 [V236,T99] ( 3, 73.14) ref -> rdi "argument with side effect"
-; V237 tmp230 [V237,T100] ( 3, 73.14) ref -> rdi "argument with side effect"
-; V238 tmp231 [V238,T101] ( 3, 73.14) ref -> rdi "argument with side effect"
-; V239 tmp232 [V239,T102] ( 3, 73.14) ref -> rdi "argument with side effect"
-; V240 tmp233 [V240,T103] ( 3, 73.14) ref -> rdi "arr expr"
-; V241 tmp234 [V241,T104] ( 3, 73.14) int -> rsi "index expr"
-; V242 tmp235 [V242,T203] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V243 tmp236 [V243,T204] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V233 tmp226 [V233,T99] ( 3, 73.14) ref -> rdi "argument with side effect"
+; V234 tmp227 [V234,T100] ( 3, 73.14) ref -> rdi "argument with side effect"
+; V235 tmp228 [V235,T101] ( 3, 73.14) ref -> rdi "argument with side effect"
+; V236 tmp229 [V236,T102] ( 3, 73.14) ref -> rdi "argument with side effect"
+; V237 tmp230 [V237,T103] ( 3, 73.14) ref -> rdi "arr expr"
+; V238 tmp231 [V238,T104] ( 3, 73.14) int -> rsi "index expr"
+; V239 tmp232 [V239,T202] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V240 tmp233 [V240,T203] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V241 tmp234 [V241,T204] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V242 tmp235 [V242,T112] ( 3, 35.78) ref -> rdi "arr expr"
+; V243 tmp236 [V243,T113] ( 3, 35.78) int -> rax "index expr"
; V244 tmp237 [V244,T33] ( 3, 1589.71) ref -> rdi "argument with side effect"
; V245 tmp238 [V245,T34] ( 3, 1555.16) ref -> rdi "arr expr"
; V246 tmp239 [V246,T35] ( 3, 1555.16) int -> rax "index expr"
@@ -324,22 +324,22 @@ G_M51225_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov r13d, dword ptr [r14+0x0C]
test r13d, r13d
- jle G_M51225_IG88
+ jle G_M51225_IG81
mov r12, gword ptr [rbx+0x08]
; gcrRegs +[r12]
movsxd r13, r13d
cmp byte ptr [r12+0x91], 0
- je G_M51225_IG33
+ je G_M51225_IG27
;; size=71 bbWeight=1 PerfScore 14.75
G_M51225_IG03: ; bbWeight=1, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref
test r13, r13
- jg G_M51225_IG30
+ jg G_M51225_IG24
;; size=9 bbWeight=1 PerfScore 1.25
G_M51225_IG04: ; bbWeight=0.66, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref
cmp byte ptr [r12+0x92], 0
- jne G_M51225_IG193
+ jne G_M51225_IG136
cmp r13, -1
- je G_M51225_IG193
+ je G_M51225_IG136
neg r13
;; size=28 bbWeight=0.66 PerfScore 3.62
G_M51225_IG05: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
@@ -347,7 +347,7 @@ G_M51225_IG05: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {},
mov qword ptr [rbx+0xA8], r13
mov eax, dword ptr [r14+0x10]
test eax, eax
- jg G_M51225_IG89
+ jg G_M51225_IG82
movsxd rcx, eax
;; size=22 bbWeight=1 PerfScore 4.50
G_M51225_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
@@ -363,14 +363,14 @@ G_M51225_IG07: ; bbWeight=1100.38, gcrefRegs=0008 {rbx}, byrefRegs=0000 {
G_M51225_IG08: ; bbWeight=473.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
dec edi
cmp edi, 6
- ja G_M51225_IG192
+ ja G_M51225_IG135
mov rdi, gword ptr [rbx+0x48]
; gcrRegs +[rdi]
mov rax, 0xD1FFAB1E ; System.IO.BinaryReader
cmp qword ptr [rdi], rax
- jne G_M51225_IG90
+ jne G_M51225_IG83
cmp byte ptr [rdi+0x2F], 0
- jne G_M51225_IG187
+ jne G_M51225_IG130
mov rdi, gword ptr [rdi+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x68]
@@ -378,18 +378,18 @@ G_M51225_IG08: ; bbWeight=473.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}
; gcrRegs -[rdi]
; gcr arg pop 0
cmp eax, -1
- je G_M51225_IG188
+ je G_M51225_IG131
movzx r12, al
;; size=71 bbWeight=473.71 PerfScore 10540.14
G_M51225_IG09: ; bbWeight=473.71, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14d, r12d
lea r13d, [r12-0x01]
cmp r13d, 8
- je G_M51225_IG66
+ je G_M51225_IG60
;; size=18 bbWeight=473.71 PerfScore 947.43
G_M51225_IG10: ; bbWeight=208.76, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp r13d, 19
- ja G_M51225_IG191
+ ja G_M51225_IG134
mov edi, r13d
lea rax, [reloc @RWD00]
mov eax, dword ptr [rax+4*rdi]
@@ -404,21 +404,21 @@ G_M51225_IG11: ; bbWeight=626.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=9 bbWeight=626.67 PerfScore 2036.67
-G_M51225_IG12: ; bbWeight=1100.38, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M51225_IG12: ; bbWeight=1100.38, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, 12
- je G_M51225_IG28
- ;; size=10 bbWeight=1100.38 PerfScore 1375.48
+ je SHORT G_M51225_IG22
+ ;; size=6 bbWeight=1100.38 PerfScore 1375.48
G_M51225_IG13: ; bbWeight=1278.38, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x28]
; gcrRegs +[rdi]
mov esi, dword ptr [rdi+0x18]
test esi, esi
- jl G_M51225_IG134
+ jl G_M51225_IG149
;; size=15 bbWeight=1278.38 PerfScore 6711.50
G_M51225_IG14: ; bbWeight=1250.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rdi+0x08]
cmp esi, dword ptr [rdi+0x08]
- jae G_M51225_IG185
+ jae G_M51225_IG121
mov esi, esi
mov rsi, gword ptr [rdi+8*rsi+0x10]
; gcrRegs +[rsi]
@@ -433,13 +433,13 @@ G_M51225_IG15: ; bbWeight=1278.38, gcrefRegs=0048 {rbx rsi}, byrefRegs=00
G_M51225_IG16: ; bbWeight=639.19, gcrefRegs=2048 {rbx rsi r13}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.Formatters.Binary.ObjectProgress
cmp qword ptr [r13], rdi
- jne G_M51225_IG186
+ jne G_M51225_IG129
;; size=20 bbWeight=639.19 PerfScore 2716.56
-G_M51225_IG17: ; bbWeight=1278.38, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M51225_IG17: ; bbWeight=1278.38, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
test r13, r13
- je G_M51225_IG27
- ;; size=9 bbWeight=1278.38 PerfScore 1597.98
+ je SHORT G_M51225_IG21
+ ;; size=5 bbWeight=1278.38 PerfScore 1597.98
G_M51225_IG18: ; bbWeight=1235.76, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
lea r14, bword ptr [r13+0x54]
; byrRegs +[r14]
@@ -451,129 +451,44 @@ G_M51225_IG18: ; bbWeight=1235.76, gcrefRegs=2008 {rbx r13}, byrefRegs=00
G_M51225_IG19: ; bbWeight=1235.76, gcrefRegs=2008 {rbx r13}, byrefRegs=4080 {rdi r14}, byref
mov gword ptr [rdi], rsi
cmp dword ptr [r13+0x58], 2
- jne G_M51225_IG46
+ jne G_M51225_IG40
;; size=14 bbWeight=1235.76 PerfScore 6178.81
G_M51225_IG20: ; bbWeight=203.78, gcrefRegs=2008 {rbx r13}, byrefRegs=4080 {rdi r14}, byref
- jmp G_M51225_IG122
+ jmp G_M51225_IG115
;; size=5 bbWeight=203.78 PerfScore 407.55
-G_M51225_IG21: ; bbWeight=0, gcVars=0000000000000000000000000000000000000000000000000000008000000000 {V76}, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax r12]
+G_M51225_IG21: ; bbWeight=42.62, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r13]
; byrRegs -[rdi r14]
- ; GC ptr vars +{V76}
- mov byte ptr [rax+0x92], 1
- cmp gword ptr [rax+0x60], 0
- jne SHORT G_M51225_IG22
- mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.Formatters.Binary.IntSizedArray
- call CORINFO_HELP_NEWSFAST
- ; gcr arg pop 0
- mov gword ptr [rbp-0x70], rax
- ; GC ptr vars +{V80}
- mov rdi, rax
- ; gcrRegs +[rdi]
- call [System.Runtime.Serialization.Formatters.Binary.IntSizedArray:.ctor():this]
- ; gcrRegs -[rax rdi]
- ; gcr arg pop 0
- mov rax, gword ptr [rbp-0x68]
- ; gcrRegs +[rax]
- lea rdi, bword ptr [rax+0x60]
- ; byrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x70]
- ; gcrRegs +[rsi]
- ; GC ptr vars -{V80}
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi]
- ; byrRegs -[rdi]
- mov rcx, qword ptr [rbp-0x40]
- ;; size=63 bbWeight=0 PerfScore 0.00
-G_M51225_IG22: ; bbWeight=0, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref, isz
- mov rax, gword ptr [rbp-0x68]
- ; gcrRegs +[rax]
- mov rdi, gword ptr [rax+0x60]
- ; gcrRegs +[rdi]
- mov esi, ecx
- cmp dword ptr [rdi], edi
- call [System.Runtime.Serialization.Formatters.Binary.IntSizedArray:get_Item(int):int:this]
- ; gcrRegs -[rax rdi]
- ; gcr arg pop 0
- cdqe
- mov rcx, rax
- test rcx, rcx
- jne SHORT G_M51225_IG23
- mov rcx, qword ptr [rbp-0x40]
- lea rdi, [rcx+D1FFAB1EH]
- mov rax, rdi
- mov rdi, gword ptr [rbp-0x68]
- ; gcrRegs +[rdi]
- mov rdi, gword ptr [rdi+0x60]
- mov esi, ecx
- mov qword ptr [rbp-0x48], rax
- mov edx, eax
- cmp dword ptr [rdi], edi
- ; GC ptr vars -{V76}
- call [System.Runtime.Serialization.Formatters.Binary.IntSizedArray:set_Item(int,int):this]
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- mov rcx, qword ptr [rbp-0x48]
- ;; size=70 bbWeight=0 PerfScore 0.00
-G_M51225_IG23: ; bbWeight=0, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, byref
- jmp G_M51225_IG100
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51225_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12-r13]
- mov rdi, rbx
- ; gcrRegs +[rdi]
- call [System.Runtime.Serialization.Formatters.Binary.BinaryParser:ReadMemberPrimitiveTyped():this]
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- jmp G_M51225_IG12
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M51225_IG25: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx] +[rsi]
- call CORINFO_HELP_CHKCASTCLASS
- ; gcrRegs -[rsi] +[rax]
- ; gcr arg pop 0
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-G_M51225_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rbx]
- mov rdi, rbx
- ; gcrRegs +[rdi]
- call [System.Runtime.Serialization.Formatters.Binary.BinaryParser:ReadCrossAppDomainMap():this]
- ; gcrRegs -[rdi]
- ; gcr arg pop 0
- jmp G_M51225_IG12
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
PerfScore Overall (FullOpts) |
| benchmarks.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| benchmarks.run_pgo.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| benchmarks.run_tiered.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| coreclr_tests.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries.crossgen2.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries.pmi.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries_tests.run.linux.x64.Release.mch |
1 |
1 |
0 |
0 |
-3 |
+0 |
+0.0000% |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| realworld.run.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| smoke_tests.nativeaot.linux.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
|
1 |
1 |
0 |
0 |
-3 |
+0 |
|
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.x64.checked.mch |
31,794 |
2,071 |
29,723 |
6 (0.02%) |
6 (0.02%) |
| benchmarks.run_pgo.linux.x64.checked.mch |
156,239 |
58,375 |
97,864 |
4 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.linux.x64.checked.mch |
64,164 |
49,119 |
15,045 |
4 (0.01%) |
4 (0.01%) |
| coreclr_tests.run.linux.x64.checked.mch |
609,175 |
362,858 |
246,317 |
7 (0.00%) |
7 (0.00%) |
| libraries.crossgen2.linux.x64.checked.mch |
266,398 |
15 |
266,383 |
1 (0.00%) |
1 (0.00%) |
| libraries.pmi.linux.x64.checked.mch |
302,021 |
6 |
302,015 |
14 (0.00%) |
14 (0.00%) |
| libraries_tests.run.linux.x64.Release.mch |
747,051 |
493,849 |
253,202 |
23 (0.00%) |
23 (0.00%) |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,764 |
21,933 |
283,831 |
115 (0.04%) |
115 (0.04%) |
| realworld.run.linux.x64.checked.mch |
33,138 |
9 |
33,129 |
2 (0.01%) |
2 (0.01%) |
| smoke_tests.nativeaot.linux.x64.checked.mch |
27,480 |
10 |
27,470 |
1 (0.00%) |
1 (0.00%) |
|
2,543,224 |
988,245 |
1,554,979 |
177 (0.01%) |
177 (0.01%) |
jit-analyze output
libraries_tests.run.linux.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 329922608 (overridden on cmd)
Total bytes of diff: 329922605 (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 : 530245.dasm (-0.06 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-3 (-0.06 % of base) : 530245.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1)
Top method improvements (percentages):
-3 (-0.06 % of base) : 530245.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1)
1 total methods with Code Size differences (1 improved, 0 regressed).
osx arm64
Diffs are based on 2,317,543 contexts (945,402 MinOpts, 1,372,141 FullOpts).
MISSED contexts: 170 (0.01%)
Overall (+12 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
PerfScore in Diffs |
| libraries_tests.run.osx.arm64.Release.mch |
312,729,720 |
+12 |
+0.04% |
FullOpts (+12 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
PerfScore in Diffs |
| libraries_tests.run.osx.arm64.Release.mch |
111,327,984 |
+12 |
+0.04% |
Example diffs
libraries_tests.run.osx.arm64.Release.mch
+0 (0.00%) : 593123.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -102,9 +102,9 @@
; V90 tmp67 [V90,T37] ( 3, 0 ) byref -> x1 single-def "Spilling address for field-by-field copy"
; V91 tmp68 [V91,T46] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
; V92 tmp69 [V92,T38] ( 3, 0 ) struct (16) [fp+0x50] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V93 tmp70 [V93,T28] ( 2, 0.03) ref -> x3 single-def "argument with side effect"
-; V94 tmp71 [V94,T26] ( 3, 0.05) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V95 tmp72 [V95 ] ( 2, 0 ) struct (48) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.InterpolatedStringHandlerData>
+; V93 tmp70 [V93 ] ( 2, 0 ) struct (48) [fp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.InterpolatedStringHandlerData>
+; V94 tmp71 [V94,T28] ( 2, 0.03) ref -> x3 single-def "argument with side effect"
+; V95 tmp72 [V95,T26] ( 3, 0.05) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
; V96 cse0 [V96,T10] ( 3, 2.71) int -> x0 "CSE - moderate"
; V97 cse1 [V97,T22] ( 3, 0.26) long -> x22 "CSE - conservative"
; V98 rat0 [V98,T27] ( 3, 0.03) ref -> x1 "Spilling to split statement for tree"
@@ -352,7 +352,7 @@ G_M49949_IG23: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000
G_M49949_IG24: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x21]
ldp x1, x2, [x19, #0x40]
- stp x1, x2, [fp, #0x40]
+ stp x1, x2, [fp, #0x10]
;; size=8 bbWeight=0.01 PerfScore 0.04
G_M49949_IG25: ; bbWeight=0.01, isz, extend
ldr x1, [x19, #0x20]
@@ -372,7 +372,7 @@ G_M49949_IG26: ; bbWeight=0.00, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0
;; size=24 bbWeight=0.00 PerfScore 0.02
G_M49949_IG27: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldp x1, x2, [fp, #0x40] // [V94 tmp71], [V94 tmp71+0x08]
+ ldp x1, x2, [fp, #0x10] // [V95 tmp72], [V95 tmp72+0x08]
; gcrRegs +[x1]
mov x0, x20
; gcrRegs +[x0]
@@ -625,13 +625,13 @@ G_M49949_IG49: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M49949_IG50: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, nogc
; gcrRegs +[x19-x20]
add x1, fp, #0xD1FFAB1E
- ldp q16, q17, [x1, #0x10]
- stp q16, q17, [fp, #0x10]
- ldr q16, [x1, #0x30]
- str q16, [fp, #0x30]
+ ldp q16, q17, [x1, #0x20]
+ stp q16, q17, [fp, #0x20]
+ ldr q16, [x1, #0x40]
+ str q16, [fp, #0x40]
;; size=20 bbWeight=0 PerfScore 0.00
G_M49949_IG51: ; bbWeight=0, extend
- add x1, fp, #16 // [V95 tmp72]
+ add x1, fp, #32 // [V93 tmp70]
ldr x3, [x19, #0x20]
; gcrRegs +[x3]
ldr x3, [x3, #0x08]
+12 (+0.23%) : 457350.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1)
@@ -39,32 +39,32 @@
; V27 tmp20 [V27,T148] ( 4, 2 ) long -> x24 "Inline return value spill temp"
; V28 tmp21 [V28,T143] ( 9, 5.31) ref -> x23 class-hnd exact single-def "Inlining Arg" <System.Runtime.Serialization.Formatters.Binary.ObjectReader>
; V29 tmp22 [V29,T141] ( 8, 7.31) long -> x24 "Inlining Arg"
-; V30 tmp23 [V30,T198] ( 2, 0 ) long -> x22 "dup spill"
-; V31 tmp24 [V31,T179] ( 5, 0 ) long -> x22 "Inline stloc first use temp"
+; V30 tmp23 [V30,T198] ( 2, 0 ) long -> x25 "dup spill"
+; V31 tmp24 [V31,T179] ( 5, 0 ) long -> x25 "Inline stloc first use temp"
; V32 tmp25 [V32,T185] ( 3, 0 ) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.IntSizedArray>
; V33 tmp26 [V33,T36] ( 3, 704.14) int -> x0 "Inline stloc first use temp"
;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.BinaryAssembly>
; V35 tmp28 [V35,T90] ( 8, 55.42) ref -> x26 class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.BinaryAssembly>
-; V36 tmp29 [V36,T117] ( 4, 14.40) ref -> x25 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo>
+; V36 tmp29 [V36,T117] ( 4, 14.40) ref -> x28 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo>
;* V37 tmp30 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Runtime.Serialization.Formatters.Binary.SizedArray>
-; V38 tmp31 [V38,T106] ( 8, 21.20) int -> x28 "impAppendStmt"
+; V38 tmp31 [V38,T106] ( 8, 21.20) int -> x21 "impAppendStmt"
;* V39 tmp32 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.BinaryCrossAppDomainAssembly>
-; V40 tmp33 [V40,T98] ( 6, 42.63) ref -> x21 class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.BinaryCrossAppDomainAssembly>
+; V40 tmp33 [V40,T98] ( 6, 42.63) ref -> x25 class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.BinaryCrossAppDomainAssembly>
; V41 tmp34 [V41,T97] ( 4, 46.89) ref -> x15 "CASTCLASS eval op1"
; V42 tmp35 [V42,T104] ( 3, 25.58) ref -> x15 class-hnd "spilling QMark2" <System.String>
; V43 tmp36 [V43,T186] ( 3, 0 ) ref -> x19 class-hnd exact "Single-def Box Helper" <<unknown class>>
; V44 tmp37 [V44,T191] ( 2, 0 ) ref -> x20 class-hnd exact "impImportAndPushBox" <System.String>
-; V45 tmp38 [V45,T187] ( 3, 0 ) ref -> x21 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V45 tmp38 [V45,T187] ( 3, 0 ) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V46 tmp39 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Runtime.Serialization.Formatters.Binary.ObjectReader>
;* V47 tmp40 [V47 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V48 tmp41 [V48,T137] ( 2, 8.53) ref -> x21 class-hnd exact "dup spill" <System.Runtime.Serialization.Formatters.Binary.SizedArray>
-; V49 tmp42 [V49,T129] ( 10, 13.11) ref -> x21
-; V50 tmp43 [V50,T145] ( 5, 3.78) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.SizedArray>
+; V48 tmp41 [V48,T137] ( 2, 8.53) ref -> x25 class-hnd exact "dup spill" <System.Runtime.Serialization.Formatters.Binary.SizedArray>
+; V49 tmp42 [V49,T129] ( 10, 13.11) ref -> x25
+; V50 tmp43 [V50,T145] ( 5, 3.78) ref -> x25 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.SizedArray>
;* V51 tmp44 [V51 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.SizedArray>
;* V52 tmp45 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
; V53 tmp46 [V53,T130] ( 3, 12.70) ref -> x0 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.BinaryObjectWithMap>
; V54 tmp47 [V54,T118] ( 3, 13.33) ref -> x0 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.BinaryObjectWithMapTyped>
-; V55 tmp48 [V55,T67] ( 4, 268.56) ref -> x28 class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.ObjectProgress>
+; V55 tmp48 [V55,T67] ( 4, 268.56) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.ObjectProgress>
;* V56 tmp49 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
; V57 tmp50 [V57,T40] ( 2, 525.82) ref -> x25 class-hnd exact "impAppendStmt" <System.Runtime.Serialization.Formatters.Binary.ObjectReader>
; V58 tmp51 [V58,T134] ( 2, 8.78) ref -> x15 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.MemberReference>
@@ -76,9 +76,9 @@
; V64 tmp57 [V64,T48] ( 4, 394.38) ref -> x0
; V65 tmp58 [V65,T152] ( 3, 0.08) ref -> x0 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
;* V66 tmp59 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
-; V67 tmp60 [V67,T42] ( 2, 525.82) ref -> x22 class-hnd exact "dup spill" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
-; V68 tmp61 [V68,T49] ( 4, 394.38) ref -> x22
-; V69 tmp62 [V69,T153] ( 3, 0.08) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
+; V67 tmp60 [V67,T42] ( 2, 525.82) ref -> x28 class-hnd exact "dup spill" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
+; V68 tmp61 [V68,T49] ( 4, 394.38) ref -> x28
+; V69 tmp62 [V69,T153] ( 3, 0.08) ref -> x28 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
;* V70 tmp63 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
; V71 tmp64 [V71,T74] ( 4, 262.91) long -> x25 "Inline return value spill temp"
; V72 tmp65 [V72,T38] ( 9, 698.43) ref -> x26 class-hnd exact "Inlining Arg" <System.Runtime.Serialization.Formatters.Binary.ObjectReader>
@@ -121,11 +121,11 @@
; V109 tmp102 [V109,T52] ( 4, 394.38) ref -> x1
; V110 tmp103 [V110,T156] ( 3, 0.08) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
;* V111 tmp104 [V111 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
-; V112 tmp105 [V112,T101] ( 6, 26.31) ref -> x21 class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.ObjectProgress>
-; V113 tmp106 [V113,T107] ( 2, 17.54) ref -> x22 class-hnd exact "impAppendStmt" <System.Runtime.Serialization.Formatters.Binary.ObjectReader>
+; V112 tmp105 [V112,T101] ( 6, 26.31) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Runtime.Serialization.Formatters.Binary.ObjectProgress>
+; V113 tmp106 [V113,T107] ( 2, 17.54) ref -> x23 class-hnd exact "impAppendStmt" <System.Runtime.Serialization.Formatters.Binary.ObjectReader>
; V114 tmp107 [V114,T85] ( 2, 70.16) ref -> x15 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.ObjectNull>
; V115 tmp108 [V115,T135] ( 4, 8.77) ref -> x1 class-hnd "Inline return value spill temp" <System.Object>
-; V116 tmp109 [V116,T99] ( 4, 34.70) ref -> x0 class-hnd exact "Inlining Arg" <System.Runtime.Serialization.Formatters.Binary.SerStack>
+; V116 tmp109 [V116,T99] ( 4, 34.70) ref -> x21 class-hnd exact "Inlining Arg" <System.Runtime.Serialization.Formatters.Binary.SerStack>
;* V117 tmp110 [V117 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
; V118 tmp111 [V118,T108] ( 2, 17.54) ref -> x0 class-hnd exact "dup spill" <System.Runtime.Serialization.Formatters.Binary.ParseRecord>
; V119 tmp112 [V119,T119] ( 4, 13.16) ref -> x0
@@ -232,23 +232,23 @@
; V220 tmp213 [V220,T55] ( 4, 351.77) int -> x1 "Inline stloc first use temp"
; V221 tmp214 [V221,T58] ( 2, 351.77) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
; V222 tmp215 [V222,T105] ( 5, 23.62) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Runtime.Serialization.Formatters.Binary.SerStack>
-; V223 tmp216 [V223,T27] ( 7, 1055.37) ref -> x27 class-hnd exact "Inlining Arg" <System.Runtime.Serialization.Formatters.Binary.SerStack>
+; V223 tmp216 [V223,T27] ( 7, 1055.37) ref -> x28 class-hnd exact "Inlining Arg" <System.Runtime.Serialization.Formatters.Binary.SerStack>
; V224 tmp217 [V224,T71] ( 3, 263.83) int -> x1 "Inline stloc first use temp"
; V225 tmp218 [V225,T59] ( 2, 351.77) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
; V226 tmp219 [V226,T192] ( 2, 0 ) ref -> x1 "argument with side effect"
; V227 tmp220 [V227,T21] ( 3, 1408.27) ref -> x0 "argument with side effect"
; V228 tmp221 [V228,T193] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V229 tmp222 [V229,T102] ( 3, 25.74) ref -> x1 "arr expr"
-; V230 tmp223 [V230,T103] ( 3, 25.74) int -> x0 "index expr"
-; V231 tmp224 [V231,T194] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V232 tmp225 [V232,T91] ( 3, 51.15) ref -> x0 "argument with side effect"
-; V233 tmp226 [V233,T92] ( 3, 51.15) ref -> x0 "argument with side effect"
-; V234 tmp227 [V234,T93] ( 3, 51.15) ref -> x0 "argument with side effect"
-; V235 tmp228 [V235,T94] ( 3, 51.15) ref -> x0 "argument with side effect"
-; V236 tmp229 [V236,T95] ( 3, 51.15) ref -> x14 "arr expr"
-; V237 tmp230 [V237,T96] ( 3, 51.15) int -> x15 "index expr"
-; V238 tmp231 [V238,T195] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V239 tmp232 [V239,T196] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V229 tmp222 [V229,T91] ( 3, 51.15) ref -> x0 "argument with side effect"
+; V230 tmp223 [V230,T92] ( 3, 51.15) ref -> x0 "argument with side effect"
+; V231 tmp224 [V231,T93] ( 3, 51.15) ref -> x0 "argument with side effect"
+; V232 tmp225 [V232,T94] ( 3, 51.15) ref -> x0 "argument with side effect"
+; V233 tmp226 [V233,T95] ( 3, 51.15) ref -> x14 "arr expr"
+; V234 tmp227 [V234,T96] ( 3, 51.15) int -> x15 "index expr"
+; V235 tmp228 [V235,T194] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V236 tmp229 [V236,T195] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V237 tmp230 [V237,T196] ( 2, 0 ) ref -> x1 "argument with side effect"
+; V238 tmp231 [V238,T102] ( 3, 25.74) ref -> x0 "arr expr"
+; V239 tmp232 [V239,T103] ( 3, 25.74) int -> x1 "index expr"
; V240 tmp233 [V240,T31] ( 3, 788.73) ref -> x0 "argument with side effect"
; V241 tmp234 [V241,T33] ( 3, 771.77) ref -> x0 "arr expr"
; V242 tmp235 [V242,T34] ( 3, 771.77) int -> x23 "index expr"
@@ -278,9 +278,9 @@
; V266 cse8 [V266,T146] ( 4, 3 ) int -> x22 "CSE - conservative"
; V267 cse9 [V267,T147] ( 4, 3 ) int -> x25 "CSE - conservative"
; V268 cse10 [V268,T72] ( 3, 263.83) int -> x3 "CSE - moderate"
-; V269 rat0 [V269,T29] ( 4, 920.19) ref -> x28 "replacement local"
+; V269 rat0 [V269,T29] ( 4, 920.19) ref -> x22 "replacement local"
; V270 rat1 [V270,T75] ( 3, 262.91) long -> x0 "CSE for expectedClsNode"
-; V271 rat2 [V271,T100] ( 4, 30.69) ref -> x21 "replacement local"
+; V271 rat2 [V271,T100] ( 4, 30.69) ref -> x22 "replacement local"
; V272 rat3 [V272,T136] ( 3, 8.77) long -> x0 "CSE for expectedClsNode"
; V273 rat4 [V273,T02] ( 4, 4230.40) ref -> x21 "replacement local"
; V274 rat5 [V274,T26] ( 3, 1208.69) long -> x0 "CSE for expectedClsNode"
@@ -321,12 +321,12 @@ G_M51225_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
ldr w22, [x21, #0x0C]
cmp w22, #0
- ble G_M51225_IG23
+ ble G_M51225_IG137
ldr x23, [x19, #0x08]
; gcrRegs +[x23]
sxtw x24, w22
ldrb w0, [x23, #0x91]
- cbz w0, G_M51225_IG32
+ cbz w0, G_M51225_IG29
;; size=76 bbWeight=1 PerfScore 21.50
G_M51225_IG03: ; bbWeight=1, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
cmp x24, #0
@@ -339,9 +339,9 @@ G_M51225_IG04: ; bbWeight=0.35, gcrefRegs=280000 {x19 x21}, byrefRegs=000
G_M51225_IG05: ; bbWeight=0.65, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x23]
ldrb w0, [x23, #0x92]
- cbnz w0, G_M51225_IG185
+ cbnz w0, G_M51225_IG181
cmn x24, #1
- beq G_M51225_IG185
+ beq G_M51225_IG181
neg x24, x24
;; size=20 bbWeight=0.65 PerfScore 3.92
G_M51225_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
@@ -349,7 +349,7 @@ G_M51225_IG06: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
str x24, [x19, #0xA8]
ldr w25, [x21, #0x10]
cmp w25, #0
- bgt G_M51225_IG24
+ bgt G_M51225_IG138
sxtw x26, w25
;; size=20 bbWeight=1 PerfScore 6.00
G_M51225_IG07: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
@@ -364,7 +364,7 @@ G_M51225_IG08: ; bbWeight=529.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {
G_M51225_IG09: ; bbWeight=234.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w0, w0, #1
cmp w0, #6
- bhi G_M51225_IG184
+ bhi G_M51225_IG180
ldr x0, [x19, #0x48]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -372,9 +372,9 @@ G_M51225_IG09: ; bbWeight=234.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x1, x2
- bne G_M51225_IG25
+ bne G_M51225_IG139
ldrb w1, [x0, #0x2F]
- cbnz w1, G_M51225_IG179
+ cbnz w1, G_M51225_IG175
ldr x0, [x0, #0x08]
ldr x1, [x0]
ldr x1, [x1, #0x68]
@@ -383,18 +383,18 @@ G_M51225_IG09: ; bbWeight=234.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {
; gcrRegs -[x0]
; gcr arg pop 0
cmn w0, #1
- beq G_M51225_IG180
+ beq G_M51225_IG176
uxtb w28, w0
;; size=80 bbWeight=234.71 PerfScore 7041.37
G_M51225_IG10: ; bbWeight=234.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sxtw w27, w28
sub w22, w28, #1
cmp w22, #8
- beq G_M51225_IG67
+ beq G_M51225_IG63
;; size=16 bbWeight=234.71 PerfScore 586.78
G_M51225_IG11: ; bbWeight=103.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, #19
- bhi G_M51225_IG183
+ bhi G_M51225_IG179
mov w0, w22
adr x1, [@RWD00]
ldr w1, [x1, x0, LSL #2]
@@ -415,19 +415,19 @@ G_M51225_IG12: ; bbWeight=297.24, gcrefRegs=80000 {x19}, byrefRegs=0000 {
;; size=24 bbWeight=297.24 PerfScore 1783.44
G_M51225_IG13: ; bbWeight=529.31, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w27, #12
- beq G_M51225_IG30
+ beq G_M51225_IG27
;; size=8 bbWeight=529.31 PerfScore 793.96
G_M51225_IG14: ; bbWeight=604.34, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x14, [x19, #0x28]
; gcrRegs +[x14]
ldr w15, [x14, #0x18]
- tbnz w15, #31, G_M51225_IG113
+ tbnz w15, #31, G_M51225_IG111
;; size=12 bbWeight=604.34 PerfScore 4230.40
G_M51225_IG15: ; bbWeight=591.35, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, byref, isz
ldr x14, [x14, #0x08]
ldr w12, [x14, #0x08]
cmp w15, w12
- bhs G_M51225_IG175
+ bhs G_M51225_IG171
add x14, x14, #16
; gcrRegs -[x14]
; byrRegs +[x14]
@@ -446,11 +446,11 @@ G_M51225_IG17: ; bbWeight=302.17, gcrefRegs=280002 {x1 x19 x21}, byrefReg
movk x0, #1 LSL #32
ldr x14, [x21]
cmp x14, x0
- bne G_M51225_IG178
+ bne G_M51225_IG174
;; size=24 bbWeight=302.17 PerfScore 1813.03
G_M51225_IG18: ; bbWeight=604.34, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- cbz x21, G_M51225_IG29
+ cbz x21, G_M51225_IG26
;; size=4 bbWeight=604.34 PerfScore 604.34
G_M51225_IG19: ; bbWeight=582.74, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
add x0, x21, #84
@@ -461,10 +461,10 @@ G_M51225_IG19: ; bbWeight=582.74, gcrefRegs=280000 {x19 x21}, byrefRegs=0
str xzr, [x14]
ldr w15, [x21, #0x58]
cmp w15, #2
- bne G_M51225_IG45
+ bne G_M51225_IG42
;; size=28 bbWeight=582.74 PerfScore 4370.56
G_M51225_IG20: ; bbWeight=127.54, gcrefRegs=280000 {x19 x21}, byrefRegs=4001 {x0 x14}, byref
- b G_M51225_IG97
+ b G_M51225_IG93
;; size=4 bbWeight=127.54 PerfScore 127.54
G_M51225_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
@@ -480,57 +480,20 @@ G_M51225_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcr arg pop 0
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
PerfScore Overall (FullOpts) |
| benchmarks.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| benchmarks.run_pgo.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| benchmarks.run_tiered.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| coreclr_tests.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries.crossgen2.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries.pmi.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries_tests.run.osx.arm64.Release.mch |
2 |
0 |
1 |
1 |
-0 |
+12 |
+0.0000% |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| realworld.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
|
2 |
0 |
1 |
1 |
-0 |
+12 |
|
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.osx.arm64.checked.mch |
25,057 |
4 |
25,053 |
6 (0.02%) |
6 (0.02%) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
85,009 |
48,590 |
36,419 |
4 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.osx.arm64.checked.mch |
48,576 |
37,765 |
10,811 |
4 (0.01%) |
4 (0.01%) |
| coreclr_tests.run.osx.arm64.checked.mch |
606,058 |
374,208 |
231,850 |
10 (0.00%) |
10 (0.00%) |
| libraries.crossgen2.osx.arm64.checked.mch |
266,105 |
15 |
266,090 |
1 (0.00%) |
1 (0.00%) |
| libraries.pmi.osx.arm64.checked.mch |
321,707 |
18 |
321,689 |
15 (0.00%) |
15 (0.00%) |
| libraries_tests.run.osx.arm64.Release.mch |
630,907 |
463,264 |
167,643 |
19 (0.00%) |
19 (0.00%) |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
302,522 |
21,535 |
280,987 |
111 (0.04%) |
111 (0.04%) |
| realworld.run.osx.arm64.checked.mch |
31,602 |
3 |
31,599 |
0 (0.00%) |
0 (0.00%) |
|
2,317,543 |
945,402 |
1,372,141 |
170 (0.01%) |
170 (0.01%) |
jit-analyze output
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 312729720 (overridden on cmd)
Total bytes of diff: 312729732 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
12 : 457350.dasm (0.23 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 1 unchanged.
Top method regressions (bytes):
12 (0.23 % of base) : 457350.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1)
Top method regressions (percentages):
12 (0.23 % of base) : 457350.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryParser:Run():this (Tier1)
1 total methods with Code Size differences (0 improved, 1 regressed).
windows arm64
Diffs are based on 2,402,908 contexts (955,693 MinOpts, 1,447,215 FullOpts).
MISSED contexts: 174 (0.01%)
Overall (+0 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
PerfScore in Diffs |
| libraries_tests.run.windows.arm64.Release.mch |
328,693,680 |
+0 |
0.00% |
FullOpts (+0 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
PerfScore in Diffs |
| libraries_tests.run.windows.arm64.Release.mch |
123,601,008 |
+0 |
0.00% |
Example diffs
libraries_tests.run.windows.arm64.Release.mch
+0 (0.00%) : 595095.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -102,9 +102,9 @@
; V90 tmp67 [V90,T37] ( 3, 0 ) byref -> x1 single-def "Spilling address for field-by-field copy"
; V91 tmp68 [V91,T46] ( 2, 0 ) ref -> x3 single-def "argument with side effect"
; V92 tmp69 [V92,T38] ( 3, 0 ) struct (16) [fp+0x50] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V93 tmp70 [V93,T28] ( 2, 0.06) ref -> x3 single-def "argument with side effect"
-; V94 tmp71 [V94,T26] ( 3, 0.08) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
-; V95 tmp72 [V95 ] ( 2, 0 ) struct (48) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.InterpolatedStringHandlerData>
+; V93 tmp70 [V93 ] ( 2, 0 ) struct (48) [fp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.InterpolatedStringHandlerData>
+; V94 tmp71 [V94,T28] ( 2, 0.06) ref -> x3 single-def "argument with side effect"
+; V95 tmp72 [V95,T26] ( 3, 0.08) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <Microsoft.CodeAnalysis.CSharp.Conversion>
; V96 cse0 [V96,T22] ( 3, 0.18) long -> x1 "CSE - conservative"
; V97 cse1 [V97,T10] ( 3, 2.75) int -> x0 "CSE - moderate"
; V98 rat0 [V98,T27] ( 3, 0.06) ref -> x1 "Spilling to split statement for tree"
@@ -358,7 +358,7 @@ G_M49949_IG23: ; bbWeight=0.02, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
G_M49949_IG24: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, nogc
; gcrRegs -[x21]
ldp x1, x2, [x19, #0x40]
- stp x1, x2, [fp, #0x40]
+ stp x1, x2, [fp, #0x10]
;; size=8 bbWeight=0.01 PerfScore 0.07
G_M49949_IG25: ; bbWeight=0.01, isz, extend
ldr x1, [x19, #0x20]
@@ -378,7 +378,7 @@ G_M49949_IG26: ; bbWeight=0.01, gcrefRegs=10000A {x1 x3 x20}, byrefRegs=0
;; size=24 bbWeight=0.01 PerfScore 0.04
G_M49949_IG27: ; bbWeight=0.01, gcrefRegs=100008 {x3 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- ldp x1, x2, [fp, #0x40] // [V94 tmp71], [V94 tmp71+0x08]
+ ldp x1, x2, [fp, #0x10] // [V95 tmp72], [V95 tmp72+0x08]
; gcrRegs +[x1]
mov x0, x20
; gcrRegs +[x0]
@@ -631,13 +631,13 @@ G_M49949_IG49: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
G_M49949_IG50: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, nogc
; gcrRegs +[x19-x20]
add x1, fp, #0xD1FFAB1E
- ldp q16, q17, [x1, #0x10]
- stp q16, q17, [fp, #0x10]
- ldr q16, [x1, #0x30]
- str q16, [fp, #0x30]
+ ldp q16, q17, [x1, #0x20]
+ stp q16, q17, [fp, #0x20]
+ ldr q16, [x1, #0x40]
+ str q16, [fp, #0x40]
;; size=20 bbWeight=0 PerfScore 0.00
G_M49949_IG51: ; bbWeight=0, extend
- add x1, fp, #16 // [V95 tmp72]
+ add x1, fp, #32 // [V93 tmp70]
ldr x3, [x19, #0x20]
; gcrRegs +[x3]
ldr x3, [x3, #0x08]
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
PerfScore Overall (FullOpts) |
| benchmarks.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| benchmarks.run_pgo.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| benchmarks.run_tiered.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| coreclr_tests.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries.crossgen2.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries.pmi.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| libraries_tests.run.windows.arm64.Release.mch |
1 |
0 |
0 |
1 |
-0 |
+0 |
0.0000% |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| realworld.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
0.0000% |
|
1 |
0 |
0 |
1 |
-0 |
+0 |
|
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.arm64.checked.mch |
24,651 |
4 |
24,647 |
5 (0.02%) |
5 (0.02%) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
98,100 |
48,818 |
49,282 |
4 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.windows.arm64.checked.mch |
48,889 |
37,115 |
11,774 |
4 (0.01%) |
4 (0.01%) |
| coreclr_tests.run.windows.arm64.checked.mch |
618,707 |
379,773 |
238,934 |
8 (0.00%) |
8 (0.00%) |
| libraries.crossgen2.windows.arm64.checked.mch |
276,178 |
15 |
276,163 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.arm64.checked.mch |
310,881 |
6 |
310,875 |
19 (0.01%) |
19 (0.01%) |
| libraries_tests.run.windows.arm64.Release.mch |
650,760 |
468,332 |
182,428 |
18 (0.00%) |
18 (0.00%) |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
317,258 |
21,619 |
295,639 |
115 (0.04%) |
115 (0.04%) |
| realworld.run.windows.arm64.checked.mch |
33,309 |
3 |
33,306 |
1 (0.00%) |
1 (0.00%) |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
24,175 |
8 |
24,167 |
0 (0.00%) |
0 (0.00%) |
|
2,402,908 |
955,693 |
1,447,215 |
174 (0.01%) |
174 (0.01%) |
jit-analyze output
libraries_tests.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 328693680 (overridden on cmd)
Total bytes of diff: 328693680 (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).
windows x64
Diffs are based on 2,572,855 contexts (1,010,991 MinOpts, 1,561,864 FullOpts).
MISSED contexts: 176 (0.01%)
No diffs found.
Details
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| aspnet.run.windows.x64.checked.mch |
142,220 |
69,176 |
73,044 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run.windows.x64.checked.mch |
28,176 |
4 |
28,172 |
5 (0.02%) |
5 (0.02%) |
| benchmarks.run_pgo.windows.x64.checked.mch |
101,966 |
50,185 |
51,781 |
4 (0.00%) |
4 (0.00%) |
| benchmarks.run_tiered.windows.x64.checked.mch |
53,057 |
37,302 |
15,755 |
4 (0.01%) |
4 (0.01%) |
| coreclr_tests.run.windows.x64.checked.mch |
584,454 |
348,263 |
236,191 |
7 (0.00%) |
7 (0.00%) |
| libraries.crossgen2.windows.x64.checked.mch |
275,771 |
15 |
275,756 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.windows.x64.checked.mch |
314,324 |
6 |
314,318 |
19 (0.01%) |
19 (0.01%) |
| libraries_tests.run.windows.x64.Release.mch |
682,663 |
484,080 |
198,583 |
18 (0.00%) |
18 (0.00%) |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
320,777 |
21,946 |
298,831 |
118 (0.04%) |
118 (0.04%) |
| realworld.run.windows.x64.checked.mch |
36,922 |
3 |
36,919 |
1 (0.00%) |
1 (0.00%) |
| smoke_tests.nativeaot.windows.x64.checked.mch |
32,525 |
11 |
32,514 |
0 (0.00%) |
0 (0.00%) |
|
2,572,855 |
1,010,991 |
1,561,864 |
176 (0.01%) |
176 (0.01%) |