Assembly Diffs
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,430,635 contexts (941,815 MinOpts, 1,488,820 FullOpts).
MISSED contexts: 176 (0.01%)
No diffs found.
Details
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| 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,430,635 |
941,815 |
1,488,820 |
176 (0.01%) |
176 (0.01%) |