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%)