Assembly Diffs

linux arm

Diffs are based on 2,270,268 contexts (836,977 MinOpts, 1,433,291 FullOpts).

MISSED contexts: 75,116 (3.20%)

Overall (-12 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 239,226,620 -12

FullOpts (-12 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 117,255,980 -12

Example diffs

libraries_tests.run.linux.arm.Release.mch

-8 (-0.72%) : 285032.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1621
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1621
; 1 inlinees with PGO data; 23 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -13,23 +13,23 @@ ; V01 arg1 [V01,T03] ( 5, 3 ) ref -> r6 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]> ;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.Expression]> ; V03 loc1 [V03 ] ( 3, 0.06) ref -> [sp+0x0C] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-; V04 loc2 [V04,T17] ( 7, 0.08) ref -> r8 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T17] ( 7, 0.08) ref -> r9 class-hnd single-def <System.Reflection.MethodInfo>
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ; V06 OutArgs [V06 ] ( 1, 1 ) struct ( 8) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T05] ( 4, 4 ) ref -> r7 class-hnd single-def "dup spill" <System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]> -; V08 tmp2 [V08,T01] ( 38, 6.75) ref -> r7 -; V09 tmp3 [V09,T19] ( 2, 0.08) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V07 tmp1 [V07,T05] ( 2, 4 ) ref -> r7 class-hnd single-def "dup spill" <System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]> +; V08 tmp2 [V08,T01] ( 36, 6.75) ref -> r7 +; V09 tmp3 [V09,T19] ( 2, 0.08) ref -> r6 class-hnd single-def "impAppendStmt" <<unknown class>>
; V10 tmp4 [V10,T13] ( 5, 0.19) ref -> r2 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.InvocationExpressionN> ; V11 tmp5 [V11,T23] ( 3, 0.05) ref -> r6 class-hnd "impAppendStmt" <System.__Canon> ; V12 tmp6 [V12,T24] ( 3, 0.05) ref -> r8 class-hnd "impAppendStmt" <System.__Canon> ; V13 tmp7 [V13,T25] ( 3, 0.05) ref -> r9 class-hnd "impAppendStmt" <System.__Canon> ; V14 tmp8 [V14,T26] ( 3, 0.05) ref -> r10 class-hnd "impAppendStmt" <System.__Canon>
-; V15 tmp9 [V15,T14] ( 3, 0.16) ref -> r9 class-hnd "impAppendStmt" <System.__Canon> -; V16 tmp10 [V16,T15] ( 3, 0.16) ref -> r8 class-hnd "impAppendStmt" <System.__Canon>
+; V15 tmp9 [V15,T14] ( 3, 0.16) ref -> r6 class-hnd "impAppendStmt" <System.__Canon> +; V16 tmp10 [V16,T15] ( 3, 0.16) ref -> r9 class-hnd "impAppendStmt" <System.__Canon>
; V17 tmp11 [V17,T16] ( 3, 0.16) ref -> r10 class-hnd "impAppendStmt" <System.__Canon>
-; V18 tmp12 [V18,T08] ( 3, 2.65) ref -> r8 class-hnd "impAppendStmt" <System.__Canon> -; V19 tmp13 [V19,T09] ( 3, 2.65) ref -> r9 class-hnd "impAppendStmt" <System.__Canon> -; V20 tmp14 [V20,T11] ( 3, 1.04) ref -> r8 class-hnd "impAppendStmt" <System.__Canon>
+; V18 tmp12 [V18,T08] ( 3, 2.65) ref -> r9 class-hnd "impAppendStmt" <System.__Canon> +; V19 tmp13 [V19,T09] ( 3, 2.65) ref -> r10 class-hnd "impAppendStmt" <System.__Canon> +; V20 tmp14 [V20,T11] ( 3, 1.04) ref -> r9 class-hnd "impAppendStmt" <System.__Canon>
; V21 tmp15 [V21,T07] ( 5, 2.67) int -> r0 "guarded devirt return temp" ;* V22 tmp16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]> ;* V23 tmp17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]> @@ -56,9 +56,9 @@ ; V44 tmp38 [V44,T21] ( 4, 0.06) ref -> r3 ; V45 tmp39 [V45,T04] ( 8, 4.00) ref -> r0 "Single return block return value" ; V46 tmp40 [V46,T28] ( 2, 0.02) ref -> r1 single-def "argument with side effect"
-; V47 cse0 [V47,T06] ( 6, 2.97) int -> r6 "CSE - aggressive" -; V48 cse1 [V48,T22] ( 3, 0.06) ref -> r4 "CSE - conservative" -; V49 rat0 [V49,T00] ( 6, 7 ) ref -> r7 "replacement local"
+; V47 cse0 [V47,T06] ( 6, 2.97) int -> r8 "CSE - aggressive" +; V48 cse1 [V48,T22] ( 3, 0.06) ref -> r6 "CSE - conservative" +; V49 rat0 [V49,T00] ( 5, 7 ) ref -> r7 "replacement local"
; ; Lcl frame size = 20 @@ -77,28 +77,21 @@ G_M57032_IG02: ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b mov r7, r6 ; gcrRegs +[r7] cmp r7, 0
- beq SHORT G_M57032_IG04
+ bne SHORT G_M57032_IG10
;; size=6 bbWeight=1 PerfScore 3.00
-G_M57032_IG03: ; bbWeight=0.50, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ldr r0, [r7] - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r0, r3 - bne G_M57032_IG31 - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M57032_IG04: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M57032_IG03: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
cmp r7, 0
- beq G_M57032_IG32
+ beq G_M57032_IG31
;; size=6 bbWeight=1 PerfScore 2.00
-G_M57032_IG05: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M57032_IG04: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r6]
- ldr r6, [r7]
+ ldr r8, [r7]
movw r0, 0xd1ff movt r0, 0xd1ff
- cmp r6, r0 - bne G_M57032_IG15
+ cmp r8, r0 + bne SHORT G_M57032_IG15
;; size=16 bbWeight=1 PerfScore 5.00
-G_M57032_IG06: ; bbWeight=0.96, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
+G_M57032_IG05: ; bbWeight=0.96, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
ldr r0, [r7+0x04] ; gcrRegs +[r0] movw r4, 0xd1ff @@ -107,27 +100,249 @@ G_M57032_IG06: ; bbWeight=0.96, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {} blx r3 // <unknown method> ; gcrRegs -[r0] ;; size=14 bbWeight=0.96 PerfScore 4.80
-G_M57032_IG07: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M57032_IG06: ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
cmp r0, 3
- beq SHORT G_M57032_IG11
+ bne SHORT G_M57032_IG12
;; size=4 bbWeight=1 PerfScore 2.00
-G_M57032_IG08: ; bbWeight=0.34, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M57032_IG07: ; bbWeight=0.66, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r8, r0 + bne G_M57032_IG27 + ldr r0, [r7+0x04] + ; gcrRegs +[r0] + movw r4, 0xd1ff + movt r4, 0xd1ff + movs r1, 0 + ldr r3, [r4] + blx r3 // <unknown method> + mov r9, r0 + ; gcrRegs +[r9] + ldr r0, [r7+0x04] + movw r4, 0xd1ff + movt r4, 0xd1ff + movs r1, 1 + ldr r3, [r4] + blx r3 // <unknown method> + mov r10, r0 + ; gcrRegs +[r10] + ldr r0, [r7+0x04] + movw r4, 0xd1ff + movt r4, 0xd1ff + movs r1, 2 + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r7] + mov r3, r0 + ; gcrRegs +[r3] + ;; size=68 bbWeight=0.66 PerfScore 16.56 +G_M57032_IG08: ; bbWeight=0.66, gcrefRegs=0628 {r3 r5 r9 r10}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + mov r0, r5 + ; gcrRegs +[r0] + mov r1, r9 + ; gcrRegs +[r1] + mov r2, r10 + ; gcrRegs +[r2] + movw lr, 0xd1ff + movt lr, 0xd1ff + ldr lr, [lr] + blx lr // System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.InvocationExpression + ; gcrRegs -[r1-r3 r5 r9-r10] + ;; size=20 bbWeight=0.66 PerfScore 4.64 +G_M57032_IG09: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc + add sp, 20 + pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M57032_IG10: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0] +[r5-r7] + ldr r0, [r7] + movw r3, 0xd1ff + movt r3, 0xd1ff + cmp r0, r3 + bne G_M57032_IG32 + ;; size=16 bbWeight=0.50 PerfScore 2.50 +G_M57032_IG11: ; bbWeight=0.23, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + b SHORT G_M57032_IG03 + ;; size=2 bbWeight=0.23 PerfScore 0.23 +G_M57032_IG12: ; bbWeight=0.34, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r6]
cmp r0, 5
- bhi G_M57032_IG18
+ bhi SHORT G_M57032_IG18
movw r3, LOW ADDRESS J_M57032_DS00 movt r3, HIGH ADDRESS J_M57032_DS00 J_M57032_DS00 LABEL DWORD
- DD G_M57032_IG20
DD G_M57032_IG25
- DD G_M57032_IG13 - DD G_M57032_IG11 - DD G_M57032_IG16
DD G_M57032_IG23
+ DD G_M57032_IG13 + DD G_M57032_IG07 + DD G_M57032_IG16 + DD G_M57032_IG21
ldr pc, [r3+4*r0]
- ;; size=18 bbWeight=0.34 PerfScore 1.69 -G_M57032_IG09: ; bbWeight=0.02, gcrefRegs=0620 {r5 r9 r10}, byrefRegs=0000 {}, byref - ; gcrRegs -[r7] +[r9-r10]
+ ;; size=16 bbWeight=0.34 PerfScore 1.69 +G_M57032_IG13: ; bbWeight=0.26, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r8, r0 + bne G_M57032_IG26 + ldr r0, [r7+0x04] + ; gcrRegs +[r0] + movw r4, 0xd1ff + movt r4, 0xd1ff + movs r1, 0 + ldr r3, [r4] + blx r3 // <unknown method> + mov r9, r0 + ; gcrRegs +[r9] + ldr r0, [r7+0x04] + movw r4, 0xd1ff + movt r4, 0xd1ff + movs r1, 1 + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r7] + mov r2, r0 + ; gcrRegs +[r2] + ;; size=50 bbWeight=0.26 PerfScore 4.70 +G_M57032_IG14: ; bbWeight=0.26, gcrefRegs=0224 {r2 r5 r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0] + mov r0, r5 + ; gcrRegs +[r0] + mov r1, r9 + ; gcrRegs +[r1] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.InvocationExpression + ; gcrRegs -[r1-r2 r5 r9] + b SHORT G_M57032_IG09 + ;; size=18 bbWeight=0.26 PerfScore 1.83 +G_M57032_IG15: ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0] +[r5 r7] + mov r0, r7 + ; gcrRegs +[r0] + movw r4, 0xd1ff + movt r4, 0xd1ff + ldr r3, [r4] + blx r3 // <unknown method> + ; gcrRegs -[r0] + b SHORT G_M57032_IG06 + ;; size=16 bbWeight=0.04 PerfScore 0.24 +G_M57032_IG16: ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r8, r0 + bne G_M57032_IG28 + ldr r0, [r7+0x04] + ; gcrRegs +[r0] + movw r4, 0xd1ff + movt r4, 0xd1ff + movs r1, 0 + ldr r3, [r4] + blx r3 // <unknown method> + mov r6, r0 + ; gcrRegs +[r6]
...

-2 (-0.52%) : 509182.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)

@@ -106,39 +106,22 @@ G_M12230_IG05: ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=0010 {r4}, ldr r0, [sp+0x14] // [V03 loc2] and r0, r0, 6 cmp r0, 0
- bne SHORT G_M12230_IG07
+ bne SHORT G_M12230_IG20
;; size=88 bbWeight=0.01 PerfScore 0.19
-G_M12230_IG06: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG06: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
movs r5, 1
- b SHORT G_M12230_IG08 - ;; size=4 bbWeight=0.01 PerfScore 0.01 -G_M12230_IG07: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - cmp r0, 6 - bhi SHORT G_M12230_IG08 - movw r3, LOW ADDRESS J_M12230_DS00 - movt r3, HIGH ADDRESS J_M12230_DS00 - - J_M12230_DS00 LABEL DWORD - DD G_M12230_IG06 - DD G_M12230_IG08 - DD G_M12230_IG27 - DD G_M12230_IG08 - DD G_M12230_IG21 - DD G_M12230_IG08 - DD G_M12230_IG22 - ldr pc, [r3+4*r0] - ;; size=16 bbWeight=0.00 PerfScore 0.00 -G_M12230_IG08: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=0.01 PerfScore 0.01 +G_M12230_IG07: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r6, 2 ldr r0, [sp+0x14] // [V03 loc2] and r7, r0, 0x700 cmp r7, 512
- bgt SHORT G_M12230_IG24
+ bgt SHORT G_M12230_IG23
cmp r7, 256
- bne SHORT G_M12230_IG23
+ bne SHORT G_M12230_IG26
movs r6, 1 ;; size=22 bbWeight=0.01 PerfScore 0.05
-G_M12230_IG09: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG08: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -170,26 +153,26 @@ G_M12230_IG09: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ldr r0, [sp+0x14] // [V03 loc2] ands r0, r0, 64 cmp r0, 0
- bne SHORT G_M12230_IG10
+ bne SHORT G_M12230_IG09
movs r0, 0
- b SHORT G_M12230_IG11
+ b SHORT G_M12230_IG10
;; size=66 bbWeight=0.01 PerfScore 0.14
-G_M12230_IG10: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
+G_M12230_IG09: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG11: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG10: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
strb r0, [r7+0x14] ldr r0, [sp+0x14] // [V03 loc2] ands r0, r0, 1 cmp r0, 0
- bne SHORT G_M12230_IG12
+ bne SHORT G_M12230_IG11
movs r0, 0
- b SHORT G_M12230_IG13
+ b SHORT G_M12230_IG12
;; size=16 bbWeight=0.01 PerfScore 0.04
-G_M12230_IG12: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
+G_M12230_IG11: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG13: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG12: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz
strb r0, [r7+0x15] mov r0, r4 ; gcrRegs +[r0] @@ -199,94 +182,110 @@ G_M12230_IG13: ; bbWeight=0.01, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {} ; gcrRegs -[r0 r4] ands r0, r0, 128 cmp r0, 0
- bne SHORT G_M12230_IG14
+ bne SHORT G_M12230_IG13
movs r0, 0
- b SHORT G_M12230_IG15
+ b SHORT G_M12230_IG14
;; size=26 bbWeight=0.01 PerfScore 0.06
-G_M12230_IG14: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
+G_M12230_IG13: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG14: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
strb r0, [r7+0x17] str r6, [r7+0x10] ldr r0, [sp+0x14] // [V03 loc2] and r0, r0, 48 cmp r0, 16
- beq SHORT G_M12230_IG16
+ beq SHORT G_M12230_IG15
movs r0, 0
- b SHORT G_M12230_IG17
+ b SHORT G_M12230_IG16
;; size=18 bbWeight=0.01 PerfScore 0.05
-G_M12230_IG16: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
+G_M12230_IG15: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG17: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG16: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref, isz
strb r0, [r7+0x16] ldr r0, [sp+0x14] // [V03 loc2] and r0, r0, 0x3000 cmp r0, 0x1000
- beq SHORT G_M12230_IG18
+ beq SHORT G_M12230_IG17
movs r0, 0
- b SHORT G_M12230_IG19
+ b SHORT G_M12230_IG18
;; size=18 bbWeight=0.01 PerfScore 0.04
-G_M12230_IG18: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
+G_M12230_IG17: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG19: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
+G_M12230_IG18: ; bbWeight=0.01, gcrefRegs=0080 {r7}, byrefRegs=0000 {}, byref
strb r0, [r7+0x18] mov r0, r7 ; gcrRegs +[r0] ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG20: ; bbWeight=0.01, epilog, nogc, extend
+G_M12230_IG19: ; bbWeight=0.01, epilog, nogc, extend
add sp, 32 pop {r4,r5,r6,r7,r11,pc} ;; size=6 bbWeight=0.01 PerfScore 0.01
-G_M12230_IG21: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M12230_IG20: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r7] +[r4]
+ cmp r0, 6 + bhi SHORT G_M12230_IG07 + movw r3, LOW ADDRESS J_M12230_DS00 + movt r3, HIGH ADDRESS J_M12230_DS00 + + J_M12230_DS00 LABEL DWORD + DD G_M12230_IG06 + DD G_M12230_IG07 + DD G_M12230_IG27 + DD G_M12230_IG07 + DD G_M12230_IG21 + DD G_M12230_IG07 + DD G_M12230_IG22 + ldr pc, [r3+4*r0] + ;; size=16 bbWeight=0.00 PerfScore 0.00 +G_M12230_IG21: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r5, 3
- b SHORT G_M12230_IG08
+ b SHORT G_M12230_IG07
;; size=4 bbWeight=0.00 PerfScore 0.00 G_M12230_IG22: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movs r5, 4
- b SHORT G_M12230_IG08
+ b SHORT G_M12230_IG07
;; size=4 bbWeight=0 PerfScore 0.00 G_M12230_IG23: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
- cmp r7, 512 - bne SHORT G_M12230_IG09 - movs r6, 2 - b SHORT G_M12230_IG09 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M12230_IG24: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
cmp r7, 768
- beq SHORT G_M12230_IG25
+ beq SHORT G_M12230_IG24
cmp r7, 0x400
- beq SHORT G_M12230_IG26
+ beq SHORT G_M12230_IG25
cmp r7, 0x500
- bne SHORT G_M12230_IG09
+ bne SHORT G_M12230_IG08
movs r6, 5
- b SHORT G_M12230_IG09
+ b SHORT G_M12230_IG08
;; size=22 bbWeight=0 PerfScore 0.00
-G_M12230_IG25: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M12230_IG24: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movs r6, 3
- b SHORT G_M12230_IG09 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M12230_IG26: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - movs r6, 4 - b SHORT G_M12230_IG09 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M12230_IG27: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - movs r5, 2
b SHORT G_M12230_IG08 ;; size=4 bbWeight=0 PerfScore 0.00
+G_M12230_IG25: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + movs r6, 4 + b SHORT G_M12230_IG08 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M12230_IG26: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + cmp r7, 512 + bne SHORT G_M12230_IG08 + movs r6, 2 + b SHORT G_M12230_IG08 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M12230_IG27: ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + movs r5, 2 + b SHORT G_M12230_IG07 + ;; size=4 bbWeight=0 PerfScore 0.00
RWD00 dd G_M12230_IG06
- dd G_M12230_IG08
+ dd G_M12230_IG07
dd G_M12230_IG27
- dd G_M12230_IG08
+ dd G_M12230_IG07
dd G_M12230_IG21
- dd G_M12230_IG08
+ dd G_M12230_IG07
dd G_M12230_IG22
-; Total bytes of code 384, prolog size 18, PerfScore 15.62, instruction count 148, allocated bytes for code 384 (MethodHash=fe43d039) for method System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
+; Total bytes of code 382, prolog size 18, PerfScore 15.62, instruction count 147, allocated bytes for code 382 (MethodHash=fe43d039) for method System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
; ============================================================ Unwind Info: @@ -298,7 +297,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 192 (0x000c0) Actual length = 384 (0x000180)
+ Function Length : 191 (0x000bf) Actual length = 382 (0x00017e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-6 (-0.28%) : 79572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; r11 based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1142
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1142
; 6 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -43,7 +43,7 @@ ; V31 tmp23 [V31,T11] ( 3, 1.14) ref -> r1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V32 tmp24 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V33 tmp25 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.NameSyntax>
-; V34 tmp26 [V34,T15] ( 3, 0.89) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V34 tmp26 [V34,T15] ( 3, 0.89) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
;* V35 tmp27 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V36 tmp28 [V36,T06] ( 2, 1.78) ref -> r3 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V37 tmp29 [V37,T09] ( 4, 1.42) ref -> r3 @@ -69,7 +69,7 @@ ; V57 tmp49 [V57,T50] ( 2, 0 ) ref -> r7 single-def "argument with side effect" ; V58 tmp50 [V58,T33] ( 3, 0 ) ref -> r0 single-def "argument with side effect" ; V59 tmp51 [V59,T08] ( 4, 1.42) int -> r7 "fgMakeTemp is creating a new local variable"
-; V60 tmp52 [V60,T04] ( 4, 3.44) int -> r8 "fgMakeTemp is creating a new local variable"
+; V60 tmp52 [V60,T04] ( 4, 3.44) int -> r7 "fgMakeTemp is creating a new local variable"
; V61 cse0 [V61,T17] ( 3, 0.65) int -> r3 "CSE - conservative" ; V62 rat0 [V62,T34] ( 3, 0 ) int -> r10 "ReplaceWithLclVar is creating a new local variable" ; @@ -87,7 +87,7 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r3, [r4+0x08] ; gcrRegs +[r3] cmp r3, 0
- beq G_M18455_IG35
+ beq G_M18455_IG24
;; size=8 bbWeight=1 PerfScore 3.00 G_M18455_IG03: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz ldrh r6, [r3+0x08] @@ -99,18 +99,18 @@ G_M18455_IG04: ; bbWeight=0.70, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r3] movw r0, 0xd1ff cmp r6, r0
- bls G_M18455_IG31
+ bls G_M18455_IG30
;; size=10 bbWeight=0.70 PerfScore 2.10 G_M18455_IG05: ; bbWeight=0.65, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff cmp r6, r0
- bls G_M18455_IG43
+ bls G_M18455_IG42
movw r0, 0xd1ff sxth r0, r0
- add r8, r6, r0 - cmp r8, 0 - bne G_M18455_IG29 - ;; size=28 bbWeight=0.65 PerfScore 5.21
+ adds r7, r6, r0 + cmp r7, 0 + bne G_M18455_IG22 + ;; size=24 bbWeight=0.65 PerfScore 5.21
G_M18455_IG06: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz mov r0, r4 ; gcrRegs +[r0] @@ -121,7 +121,7 @@ G_M18455_IG06: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M18455_IG64
+ beq G_M18455_IG63
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -131,7 +131,7 @@ G_M18455_IG06: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18455_IG58
+ bne G_M18455_IG57
mov r0, r4 ; gcrRegs +[r0] mov r1, r5 @@ -142,7 +142,7 @@ G_M18455_IG06: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18455_IG61
+ bne G_M18455_IG60
;; size=62 bbWeight=0.44 PerfScore 9.77 G_M18455_IG07: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz mov r0, r4 @@ -155,7 +155,7 @@ G_M18455_IG07: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18455_IG62
+ bne G_M18455_IG61
mov r0, r4 ; gcrRegs +[r0] movs r1, 1 @@ -164,24 +164,24 @@ G_M18455_IG07: ; bbWeight=0.44, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // <unknown method> ; gcr arg pop 0
- mov r9, r0 - ; gcrRegs +[r9]
+ mov r8, r0 + ; gcrRegs +[r8]
ldr r3, [r4+0x08] ; gcrRegs +[r3] cmp r3, 0
- beq G_M18455_IG28 - ;; size=48 bbWeight=0.44 PerfScore 7.99 -G_M18455_IG08: ; bbWeight=0.44, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0000 {}, byref, isz
+ beq SHORT G_M18455_IG26 + ;; size=46 bbWeight=0.44 PerfScore 7.99 +G_M18455_IG08: ; bbWeight=0.44, gcrefRegs=0118 {r3 r4 r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] ldrh r0, [r3+0x08] movw r3, 0xd1ff ; gcrRegs -[r3] cmp r0, r3
- beq SHORT G_M18455_IG18 - ;; size=10 bbWeight=0.44 PerfScore 1.78 -G_M18455_IG09: ; bbWeight=0.39, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref
+ beq G_M18455_IG28 + ;; size=12 bbWeight=0.44 PerfScore 1.78 +G_M18455_IG09: ; bbWeight=0.39, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
; gcrRegs -[r4]
- mov r0, r9
+ mov r0, r8
; gcrRegs +[r0] ;; size=2 bbWeight=0.39 PerfScore 0.39 G_M18455_IG10: ; bbWeight=0.39, epilog, nogc, extend @@ -189,93 +189,36 @@ G_M18455_IG10: ; bbWeight=0.39, epilog, nogc, extend pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.39 PerfScore 0.78 G_M18455_IG11: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r0 r9] +[r4]
+ ; gcrRegs -[r0 r8] +[r4]
movw r0, 0xd1ff cmp r6, r0
- bls SHORT G_M18455_IG15 - ;; size=8 bbWeight=0.30 PerfScore 0.90
+ bls G_M18455_IG35 + ;; size=10 bbWeight=0.30 PerfScore 0.90
G_M18455_IG12: ; bbWeight=0.29, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff cmp r6, r0
- bhi G_M18455_IG39
+ bhi G_M18455_IG38
;; size=10 bbWeight=0.29 PerfScore 0.88 G_M18455_IG13: ; bbWeight=0.29, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz sub r7, r6, 0x2080 cmp r7, 0
- beq G_M18455_IG33 - ;; size=10 bbWeight=0.29 PerfScore 0.87 -G_M18455_IG14: ; bbWeight=0.07, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M18455_IG36 - ;; size=2 bbWeight=0.07 PerfScore 0.07 -G_M18455_IG15: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - movw r0, 0xd1ff - cmp r6, r0 - bhi G_M18455_IG87 - movw r0, 0xd1ff - cmp r6, r0 - bne G_M18455_IG85 - mov r0, r4 - ; gcrRegs +[r0] - mov r1, r5 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; gcrRegs -[r0] - ; gcr arg pop 0 - cmp r0, 0 - bne G_M18455_IG76 - ;; size=42 bbWeight=0.01 PerfScore 0.09 -G_M18455_IG16: ; bbWeight=0.01, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ bne SHORT G_M18455_IG27 + ;; size=8 bbWeight=0.29 PerfScore 0.87 +G_M18455_IG14: ; bbWeight=0.22, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=12 bbWeight=0.01 PerfScore 0.02 -G_M18455_IG17: ; bbWeight=0.01, epilog, nogc, extend
+ ;; size=12 bbWeight=0.22 PerfScore 0.89 +G_M18455_IG15: ; bbWeight=0.22, epilog, nogc, extend
add sp, 12 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}
- bx r3 // <unknown method>
+ bx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOfExpression():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeOfExpressionSyntax:this
; gcr arg pop 0
- ;; size=8 bbWeight=0.01 PerfScore 0.02 -G_M18455_IG18: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0] +[r9] - mov r0, r4 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:get_CurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this - ; gcr arg pop 0 - mov r5, r0 - ; gcrRegs +[r5] - mov r0, r4 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:MoveToNextToken():this
+ ;; size=8 bbWeight=0.22 PerfScore 0.67 +G_M18455_IG16: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
- ; gcr arg pop 0 - mov r0, r4 - ; gcrRegs +[r0] - mov r3, r5 - ; gcrRegs +[r3] - mov r2, r9 - ; gcrRegs +[r2] - movs r1, 1 - movw lr, 0xd1ff - movt lr, 0xd1ff - ldr r12, [lr] - ;; size=50 bbWeight=0.05 PerfScore 0.98 -G_M18455_IG19: ; bbWeight=0.05, epilog, nogc, extend - add sp, 12 - pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} - bx r12 // <unknown method> - ; gcr arg pop 0 - ;; size=8 bbWeight=0.05 PerfScore 0.16 -G_M18455_IG20: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[r0 r2-r3 r5 r9]
ldr r7, [r4+0xAC] ; gcrRegs +[r7] mov r0, r6 @@ -288,47 +231,18 @@ G_M18455_IG20: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=001 ldr r9, [r4+0x08] ; gcrRegs +[r9] cmp r9, 0
- beq SHORT G_M18455_IG23 - ;; size=30 bbWeight=0.25 PerfScore 2.53 -G_M18455_IG21: ; bbWeight=0.25, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz
+ beq G_M18455_IG32 + ;; size=32 bbWeight=0.25 PerfScore 2.53 +G_M18455_IG17: ; bbWeight=0.25, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08] ; gcrRegs +[r0] ldr r3, [r0] ...

+4 (+0.30%) : 725582.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)

@@ -91,11 +91,11 @@ G_M47580_IG03: ; bbWeight=1.01, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne G_M47580_IG24
+ bne G_M47580_IG27
ldrb r3, [r6+0x64] cmp r3, 0
- bne SHORT G_M47580_IG09 - ;; size=26 bbWeight=1.01 PerfScore 9.08
+ bne G_M47580_IG26 + ;; size=28 bbWeight=1.01 PerfScore 9.08
G_M47580_IG04: ; bbWeight=1.01, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz ldr r3, [r6+0x1C] ; gcrRegs +[r3] @@ -104,7 +104,7 @@ G_M47580_IG04: ; bbWeight=1.01, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {} str r1, [r6+0x34] ldr r1, [r3+0x04] cmp r2, r1
- bhs SHORT G_M47580_IG08
+ bhs SHORT G_M47580_IG09
adds r3, 8 ; gcrRegs -[r3] ; byrRegs +[r3] @@ -123,8 +123,8 @@ G_M47580_IG05: ; bbWeight=0.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b ldr r3, [r0+0x40] subs r4, r3, 1 cmp r4, 0
- bne SHORT G_M47580_IG11 - ;; size=8 bbWeight=0.00 PerfScore 0.00
+ bne G_M47580_IG13 + ;; size=10 bbWeight=0.00 PerfScore 0.00
G_M47580_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] ldr r0, [sp+0x04] // [V00 this] @@ -150,48 +150,127 @@ G_M47580_IG06: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[r0 r2] ; gcr arg pop 0 cmp r0, 0
- bne SHORT G_M47580_IG10
+ bne SHORT G_M47580_IG12
;; size=48 bbWeight=0.00 PerfScore 0.02
-G_M47580_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r5] movs r0, 0 ldr r3, [sp+0x04] // [V00 this] ; gcrRegs +[r3] str r0, [r3+0x2C]
- b SHORT G_M47580_IG27 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M47580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r3]
+ ;; size=6 bbWeight=0.00 PerfScore 0.00 +G_M47580_IG08: ; bbWeight=0.00, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + movs r0, 0 + str r0, [r3+0x40] + ldr r0, [r3+0x28] + ; gcrRegs +[r0] + movw r2, 0xd1ff + movt r2, 0xd1ff + ldr r2, [r2] + ldr r1, [r0] + blx r2 // System.Xml.XmlWellFormedWriter+AttributeValueCache:Clear():this + ; gcrRegs -[r0 r3] + ; gcr arg pop 0 + b SHORT G_M47580_IG28 + ;; size=22 bbWeight=0.00 PerfScore 0.01 +G_M47580_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=10 bbWeight=0 PerfScore 0.00
-G_M47580_IG09: ; bbWeight=0, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r0 r6] - ldrb r1, [r6+0x65] - cmp r1, 0 - beq SHORT G_M47580_IG04 - mov r0, r6 - movs r1, 0
+G_M47580_IG10: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r3] + ldr r0, [r3+0x28] + ; gcrRegs +[r0] + movw r2, 0xd1ff + movt r2, 0xd1ff + ldr r2, [r2] + ldr r1, [r0] + blx r2 // System.Xml.XmlWellFormedWriter+AttributeValueCache:get_StringValue():System.String:this + ; gcrRegs -[r3] + ; gcr arg pop 0 + mov r5, r0 + ; gcrRegs +[r5] + ldr r3, [sp+0x04] // [V00 this] + ; gcrRegs +[r3] + ldr r1, [r3+0x1C] + ; gcrRegs +[r1] + ldr r0, [r3+0x38] + ; gcrRegs -[r0] + ldr lr, [r1+0x04] + cmp r0, lr + bhs SHORT G_M47580_IG09 + mov lr, 24 + mul r0, r0, lr + adds r0, 8 + adds r1, r1, r0 + ; gcrRegs -[r1] + ; byrRegs +[r1] + add r0, r1, 12 + ; byrRegs +[r0] + mov r1, r5 + ; gcrRegs +[r1] + ; byrRegs -[r1] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[r1 r3 r5] + ; byrRegs -[r0] + ldr r3, [sp+0x04] // [V00 this] + ; gcrRegs +[r3] + ldr r0, [r3+0x08] + ; gcrRegs +[r0] + movw r1, 0xd1ff + movt r1, 0xd1ff + movw r2, 0xd1ff + movt r2, 0xd1ff
movw r3, 0xd1ff
+ ; gcrRegs -[r3]
movt r3, 0xd1ff
- ldr r3, [r3] - blx r3 // System.Xml.XmlEncodedRawTextWriter:ChangeTextContentMark(ubyte):this
+ ldr lr, [r0] + ldr lr, [lr+0x30] + ldr lr, [lr+0x10] + blx lr // <unknown method>
; gcrRegs -[r0] ; gcr arg pop 0
- ldr r0, [sp+0x04] // [V00 this]
+ ;; size=102 bbWeight=0 PerfScore 0.00 +G_M47580_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp+0x04] // [V00 this] + ; gcrRegs +[r3] + ldr r0, [r3+0x28]
; gcrRegs +[r0]
- b SHORT G_M47580_IG04 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M47580_IG10: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0 r6] +[r5]
+ ldr r1, [r3+0x08] + ; gcrRegs +[r1] + movw r2, 0xd1ff + movt r2, 0xd1ff + ldr r2, [r2] + ldr lr, [r0] + blx r2 // System.Xml.XmlWellFormedWriter+AttributeValueCache:Replay(System.Xml.XmlWriter):this + ; gcrRegs -[r0-r1 r3] + ; gcr arg pop 0 + ldr r3, [sp+0x04] // [V00 this] + ; gcrRegs +[r3] + ldr r0, [r3+0x08] + ; gcrRegs +[r0] + ldr r2, [r0] + ldr r2, [r2+0x30] + ldr r2, [r2+0x14] + blx r2 // <unknown method> + ; gcrRegs -[r0 r3] + ; gcr arg pop 0 + ldr r3, [sp+0x04] // [V00 this] + ; gcrRegs +[r3] + b SHORT G_M47580_IG08 + ;; size=38 bbWeight=0 PerfScore 0.00 +G_M47580_IG12: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r3] +[r5]
ldr r0, [sp+0x04] // [V00 this] ; gcrRegs +[r0] ldr r3, [r0+0x0C] ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M47580_IG13
+ beq SHORT G_M47580_IG15
ldr r3, [r0+0x0C] mov r0, r3 ldr r3, [r3] @@ -202,7 +281,7 @@ G_M47580_IG10: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq SHORT G_M47580_IG12
+ beq SHORT G_M47580_IG14
ldr r0, [sp+0x04] // [V00 this] ; gcrRegs +[r0] ldr r3, [r0+0x0C] @@ -243,24 +322,24 @@ G_M47580_IG10: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcr arg pop 0 b SHORT G_M47580_IG07 ;; size=84 bbWeight=0 PerfScore 0.00
-G_M47580_IG11: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG13: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0] cmp r4, 3 mov r3, r0 ; gcrRegs +[r3]
- bhi G_M47580_IG27
+ bhi G_M47580_IG08
movw r0, LOW ADDRESS J_M47580_DS00 ; gcrRegs -[r0] movt r0, HIGH ADDRESS J_M47580_DS00 J_M47580_DS00 LABEL DWORD DD G_M47580_IG06
- DD G_M47580_IG14 - DD G_M47580_IG20 - DD G_M47580_IG25
+ DD G_M47580_IG16 + DD G_M47580_IG22 + DD G_M47580_IG10
ldr pc, [r0+4*r4] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M47580_IG12: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG14: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] +[r5] ldr r3, [sp+0x04] // [V00 this] ; gcrRegs +[r3] @@ -278,7 +357,7 @@ G_M47580_IG12: ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre ; gcr arg pop 0 b SHORT G_M47580_IG07 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M47580_IG13: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG15: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r0] ldr lr, [r0+0x08] ; gcrRegs +[lr] @@ -322,7 +401,7 @@ G_M47580_IG13: ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre ; gcr arg pop 0 b SHORT G_M47580_IG07 ;; size=82 bbWeight=0 PerfScore 0.00
-G_M47580_IG14: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
+G_M47580_IG16: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r3] ldr r0, [r3+0x28] ; gcrRegs +[r0] @@ -338,7 +417,7 @@ G_M47580_IG14: ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre ldr r0, [r5+0x04] ; gcrRegs -[r0] cmp r0, 0
- bne SHORT G_M47580_IG15
+ bne SHORT G_M47580_IG17
movw r0, 0xd1ff movt r0, 0xd1ff ...

Details

Improvements/regressions per collection

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

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 48,681 6,058 42,623 1,269 (2.54%) 1,269 (2.54%)
benchmarks.run_pgo.linux.arm.checked.mch 170,570 62,197 108,373 3,371 (1.94%) 3,371 (1.94%)
benchmarks.run_tiered.linux.arm.checked.mch 77,708 41,868 35,840 1,084 (1.38%) 1,084 (1.38%)
coreclr_tests.run.linux.arm.checked.mch 472,517 259,413 213,104 7,240 (1.51%) 7,240 (1.51%)
libraries.crossgen2.linux.arm.checked.mch 202,007 14 201,993 6 (0.00%) 6 (0.00%)
libraries.pmi.linux.arm.checked.mch 277,268 6 277,262 8,150 (2.86%) 8,150 (2.86%)
libraries_tests.run.linux.arm.Release.mch 710,992 445,649 265,343 18,367 (2.52%) 18,367 (2.52%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,232 21,625 252,607 34,103 (11.06%) 34,103 (11.06%)
realworld.run.linux.arm.checked.mch 36,293 147 36,146 1,526 (4.04%) 1,526 (4.04%)
2,270,268 836,977 1,433,291 75,116 (3.20%) 75,116 (3.20%)

jit-analyze output

libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 239226620 (overridden on cmd)
Total bytes of diff: 239226608 (overridden on cmd)
Total bytes of delta: -12 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 725582.dasm (0.30 % of base)

Top file improvements (bytes):
          -8 : 285032.dasm (-0.72 % of base)
          -6 : 79572.dasm (-0.28 % of base)
          -2 : 509182.dasm (-0.52 % of base)

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

Top method regressions (bytes):
           4 (0.30 % of base) : 725582.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)

Top method improvements (bytes):
          -8 (-0.72 % of base) : 285032.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Tier1)
          -6 (-0.28 % of base) : 79572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          -2 (-0.52 % of base) : 509182.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)

Top method regressions (percentages):
           4 (0.30 % of base) : 725582.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)

Top method improvements (percentages):
          -8 (-0.72 % of base) : 285032.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Tier1)
          -2 (-0.52 % of base) : 509182.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
          -6 (-0.28 % of base) : 79572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)

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