Assembly Diffs

linux arm

Diffs are based on 2,250,512 contexts (832,197 MinOpts, 1,418,315 FullOpts).

MISSED contexts: 73,582 (3.17%)

Overall (-18 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 239,569,136 -18

FullOpts (-18 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 117,215,174 -18

Example diffs

libraries_tests.run.linux.arm.Release.mch

-2 (-0.52%) : 509261.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.20
-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.63, 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)

-8 (-0.37%) : 33286.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 1173
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1173
; 7 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -50,9 +50,9 @@ ; V38 tmp30 [V38,T20] ( 3, 0.58) ref -> r1 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V39 tmp31 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V40 tmp32 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V41 tmp33 [V41,T16] ( 2, 0.75) ref -> r6 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V42 tmp34 [V42,T19] ( 4, 0.60) ref -> r6 -; V43 tmp35 [V43,T23] ( 3, 0.23) ref -> r6 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V41 tmp33 [V41,T16] ( 2, 0.75) ref -> r5 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V42 tmp34 [V42,T19] ( 4, 0.60) ref -> r5 +; V43 tmp35 [V43,T23] ( 3, 0.23) ref -> r5 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V45 tmp37 [V45,T26] ( 2, 0.12) ref -> r6 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V46 tmp38 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> @@ -79,7 +79,7 @@ ; ; Lcl frame size = 12
-G_M18455_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M18455_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push {r4,r5,r6,r7,r8,r9,r10,r11,lr} sub sp, 12 add r11, sp, 40 @@ -91,29 +91,29 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r3, [r4+0x08] ; gcrRegs +[r3] cmp r3, 0
- beq G_M18455_IG28
+ beq G_M18455_IG23
;; size=8 bbWeight=1 PerfScore 3.00 G_M18455_IG03: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz ldrh r6, [r3+0x08] movw r0, 0xd1ff cmp r6, r0
- bls G_M18455_IG24
+ bls G_M18455_IG18
;; size=12 bbWeight=1 PerfScore 4.00 G_M18455_IG04: ; bbWeight=0.77, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r3] movw r0, 0xd1ff cmp r6, r0
- bls G_M18455_IG38
+ bls G_M18455_IG30
;; size=10 bbWeight=0.77 PerfScore 2.30 G_M18455_IG05: ; bbWeight=0.70, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz movw r0, 0xd1ff cmp r6, r0
- bls G_M18455_IG82
+ bls G_M18455_IG74
movw r0, 0xd1ff sxth r0, r0 adds r7, r6, r0 cmp r7, 0
- bne G_M18455_IG27
+ bne G_M18455_IG22
;; size=24 bbWeight=0.70 PerfScore 5.57 G_M18455_IG06: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz mov r0, r4 @@ -125,7 +125,7 @@ G_M18455_IG06: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- beq G_M18455_IG63
+ beq G_M18455_IG61
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff @@ -135,7 +135,7 @@ G_M18455_IG06: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18455_IG57
+ bne G_M18455_IG55
mov r0, r4 ; gcrRegs +[r0] mov r1, r5 @@ -146,7 +146,7 @@ G_M18455_IG06: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18455_IG60
+ bne G_M18455_IG58
;; size=62 bbWeight=0.47 PerfScore 10.33 G_M18455_IG07: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz mov r0, r4 @@ -159,7 +159,7 @@ G_M18455_IG07: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18455_IG61
+ bne G_M18455_IG59
;; size=22 bbWeight=0.47 PerfScore 3.76 G_M18455_IG08: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz mov r0, r4 @@ -175,7 +175,7 @@ G_M18455_IG08: ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ldr r3, [r4+0x08] ; gcrRegs +[r3] cmp r3, 0
- beq G_M18455_IG26
+ beq G_M18455_IG29
;; size=26 bbWeight=0.47 PerfScore 4.70 G_M18455_IG09: ; bbWeight=0.47, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r0] @@ -183,50 +183,18 @@ G_M18455_IG09: ; bbWeight=0.47, gcrefRegs=0218 {r3 r4 r9}, byrefRegs=0000 movw r3, 0xd1ff ; gcrRegs -[r3] cmp r0, r3
- bne SHORT G_M18455_IG13
+ beq SHORT G_M18455_IG24
;; size=10 bbWeight=0.47 PerfScore 1.88
-G_M18455_IG10: ; bbWeight=0.19, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz - ldr r6, [r4+0x08] - ; gcrRegs +[r6] - cmp r6, 0 - beq SHORT G_M18455_IG23 - ;; size=6 bbWeight=0.19 PerfScore 0.57 -G_M18455_IG11: ; bbWeight=0.19, gcrefRegs=0250 {r4 r6 r9}, byrefRegs=0000 {}, byref - mov r0, r4 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:MoveToNextToken():this - ; gcrRegs -[r0] - ; gcr arg pop 0 - mov r0, r4 - ; gcrRegs +[r0] - mov r3, r6 - ; gcrRegs +[r3] - mov r2, r9 - ; gcrRegs +[r2] - movs r1, 1 - movw lr, 0xd1ff - movt lr, 0xd1ff - ldr r12, [lr] - ;; size=34 bbWeight=0.19 PerfScore 2.26 -G_M18455_IG12: ; bbWeight=0.19, 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.19 PerfScore 0.57 -G_M18455_IG13: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r2-r4 r6]
+G_M18455_IG10: ; bbWeight=0.28, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4]
mov r0, r9 ; gcrRegs +[r0] ;; size=2 bbWeight=0.28 PerfScore 0.28
-G_M18455_IG14: ; bbWeight=0.28, epilog, nogc, extend
+G_M18455_IG11: ; bbWeight=0.28, epilog, nogc, extend
add sp, 12 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=0.28 PerfScore 0.56
-G_M18455_IG15: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18455_IG12: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0 r9] +[r4] ldr r7, [r4+0xAC] ; gcrRegs +[r7] @@ -240,47 +208,18 @@ G_M18455_IG15: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=001 ldr r10, [r4+0x08] ; gcrRegs +[r10] cmp r10, 0
- beq SHORT G_M18455_IG18 - ;; size=30 bbWeight=0.24 PerfScore 2.38 -G_M18455_IG16: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref, isz
+ beq G_M18455_IG35 + ;; size=32 bbWeight=0.24 PerfScore 2.38 +G_M18455_IG13: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref, isz
ldr r0, [r4+0x08] ; gcrRegs +[r0] ldr r3, [r0] movw r2, 0xd1ff movt r2, 0xd1ff cmp r3, r2
- bne SHORT G_M18455_IG19 - ;; size=16 bbWeight=0.24 PerfScore 1.43 -G_M18455_IG17: ; bbWeight=0.10, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0] - movs r1, 0 - b SHORT G_M18455_IG20 - ;; size=4 bbWeight=0.10 PerfScore 0.20 -G_M18455_IG18: ; bbWeight=0.05, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r10] - mov r0, r4 - ; gcrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this - ; gcr arg pop 0 - mov r10, r0 - ; gcrRegs +[r10] - add r0, r4, 8 - ; gcrRegs -[r0] - ; byrRegs +[r0] - mov r1, r10 - ; gcrRegs +[r1] - movw r12, 0xd1ff - movt r12, 0xd1ff - blx r12 // CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[r1] - ; byrRegs -[r0] - b SHORT G_M18455_IG16 - ;; size=34 bbWeight=0.05 PerfScore 0.58 -G_M18455_IG19: ; bbWeight=0.14, gcrefRegs=0491 {r0 r4 r7 r10}, byrefRegs=0000 {}, byref - ; gcrRegs +[r0]
+ beq G_M18455_IG28 + ;; size=18 bbWeight=0.24 PerfScore 1.43 +G_M18455_IG14: ; bbWeight=0.14, gcrefRegs=0491 {r0 r4 r7 r10}, byrefRegs=0000 {}, byref
ldr r3, [r3+0x3C] ldr r3, [r3+0x14] blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode:GetTrailingTrivia():Microsoft.CodeAnalysis.GreenNode:this @@ -288,7 +227,7 @@ G_M18455_IG19: ; bbWeight=0.14, gcrefRegs=0491 {r0 r4 r7 r10}, byrefRegs= mov r1, r0 ; gcrRegs +[r1] ;; size=8 bbWeight=0.14 PerfScore 0.55
-G_M18455_IG20: ; bbWeight=0.24, gcrefRegs=0492 {r1 r4 r7 r10}, byrefRegs=0000 {}, byref, isz
+G_M18455_IG15: ; bbWeight=0.24, gcrefRegs=0492 {r1 r4 r7 r10}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] add r0, r4, 16 ; byrRegs +[r0] @@ -302,9 +241,9 @@ G_M18455_IG20: ; bbWeight=0.24, gcrefRegs=0492 {r1 r4 r7 r10}, byrefRegs= ldr r0, [r4+0x14] ; gcrRegs +[r0] cmp r0, 0
- bne G_M18455_IG68
+ bne G_M18455_IG66
;; size=26 bbWeight=0.24 PerfScore 2.14
-G_M18455_IG21: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref
+G_M18455_IG16: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=0000 {}, byref
; gcrRegs -[r0] ldr r0, [r4+0x20] adds r0, r0, 1 @@ -319,92 +258,76 @@ G_M18455_IG21: ; bbWeight=0.24, gcrefRegs=0490 {r4 r7 r10}, byrefRegs=000 ldr r3, [lr] ldr lr, [r0] ;; size=28 bbWeight=0.24 PerfScore 2.38
-G_M18455_IG22: ; bbWeight=0.24, epilog, nogc, extend
+G_M18455_IG17: ; bbWeight=0.24, epilog, nogc, extend
add sp, 12 pop {r4,r5,r6,r7,r8,r9,r10,r11,lr} ...

-20 (-0.24%) : 547930.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ubyte

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; r11 based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4075
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4075
; 23 inlinees with PGO data; 154 single block inlinees; 22 inlinees without PGO data ; Final local variable assignments ; @@ -14,7 +14,7 @@ ; V02 loc0 [V02 ] (101, 2.97) struct ( 8) [sp+0x270] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ubyte]> ; V03 loc1 [V03 ] (102, 3.00) struct ( 8) [sp+0x268] do-not-enreg[XS] must-init addr-exposed <System.ReadOnlySpan`1[ubyte]> ;* V04 loc2 [V04 ] ( 0, 0 ) int -> zero-ref
-; V05 loc3 [V05,T16] ( 14, 0.28) ushort -> lr
+; V05 loc3 [V05,T16] ( 14, 0.28) ushort -> r1
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ; V08 tmp2 [V08 ] ( 3, 0.18) struct ( 8) [sp+0x260] do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -601,8 +601,8 @@ ;* V589 tmp583 [V589,T102] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x4)" P-INDEP ; V590 tmp584 [V590,T73] ( 2, 0.06) byref -> [sp+0x1D0] do-not-enreg[H] hidden-struct-arg "field V44._reference (fldOffset=0x0)" P-DEP ; V591 tmp585 [V591,T74] ( 2, 0.06) int -> [sp+0x1D4] do-not-enreg[H] hidden-struct-arg "field V44._length (fldOffset=0x4)" P-DEP
-; V592 tmp586 [V592,T126] ( 2, 0.01) byref -> r5 single-def "field V45._reference (fldOffset=0x0)" P-INDEP -; V593 tmp587 [V593,T127] ( 2, 0.01) int -> r6 "field V45._length (fldOffset=0x4)" P-INDEP
+; V592 tmp586 [V592,T126] ( 2, 0.01) byref -> r8 single-def "field V45._reference (fldOffset=0x0)" P-INDEP +; V593 tmp587 [V593,T127] ( 2, 0.01) int -> r7 "field V45._length (fldOffset=0x4)" P-INDEP
; V594 tmp588 [V594,T107] ( 2, 0.01) byref -> [sp+0x1C8] do-not-enreg[H] hidden-struct-arg "field V46._reference (fldOffset=0x0)" P-DEP ; V595 tmp589 [V595,T108] ( 2, 0.01) int -> [sp+0x1CC] do-not-enreg[H] hidden-struct-arg "field V46._length (fldOffset=0x4)" P-DEP ; V596 tmp590 [V596,T281] ( 2, 0 ) byref -> r5 single-def "field V47._reference (fldOffset=0x0)" P-INDEP @@ -613,12 +613,12 @@ ;* V601 tmp595 [V601,T197] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x4)" P-INDEP ; V602 tmp596 [V602,T138] ( 2, 0.01) byref -> [sp+0x1B8] do-not-enreg[H] hidden-struct-arg "field V50._reference (fldOffset=0x0)" P-DEP ; V603 tmp597 [V603,T140] ( 2, 0.01) int -> [sp+0x1BC] do-not-enreg[H] hidden-struct-arg "field V50._length (fldOffset=0x4)" P-DEP
-; V604 tmp598 [V604,T189] ( 2, 0.00) byref -> r7 single-def "field V51._reference (fldOffset=0x0)" P-INDEP
+; V604 tmp598 [V604,T189] ( 2, 0.00) byref -> r5 single-def "field V51._reference (fldOffset=0x0)" P-INDEP
; V605 tmp599 [V605,T191] ( 2, 0.00) int -> r6 "field V51._length (fldOffset=0x4)" P-INDEP ; V606 tmp600 [V606,T171] ( 2, 0.00) byref -> [sp+0x1B0] do-not-enreg[H] hidden-struct-arg "field V52._reference (fldOffset=0x0)" P-DEP ; V607 tmp601 [V607,T176] ( 2, 0.00) int -> [sp+0x1B4] do-not-enreg[H] hidden-struct-arg "field V52._length (fldOffset=0x4)" P-DEP
-; V608 tmp602 [V608,T190] ( 2, 0.00) byref -> r5 single-def "field V53._reference (fldOffset=0x0)" P-INDEP -; V609 tmp603 [V609,T192] ( 2, 0.00) int -> r6 "field V53._length (fldOffset=0x4)" P-INDEP
+; V608 tmp602 [V608,T190] ( 2, 0.00) byref -> r8 single-def "field V53._reference (fldOffset=0x0)" P-INDEP +; V609 tmp603 [V609,T192] ( 2, 0.00) int -> r5 "field V53._length (fldOffset=0x4)" P-INDEP
; V610 tmp604 [V610,T172] ( 2, 0.00) byref -> [sp+0x1A8] do-not-enreg[H] hidden-struct-arg "field V54._reference (fldOffset=0x0)" P-DEP ; V611 tmp605 [V611,T177] ( 2, 0.00) int -> [sp+0x1AC] do-not-enreg[H] hidden-struct-arg "field V54._length (fldOffset=0x4)" P-DEP ; V612 tmp606 [V612,T283] ( 2, 0 ) byref -> r5 single-def "field V55._reference (fldOffset=0x0)" P-INDEP @@ -685,7 +685,7 @@ ;* V673 tmp667 [V673,T90] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x4)" P-INDEP ; V674 tmp668 [V674,T61] ( 2, 0.08) byref -> [sp+0x128] do-not-enreg[H] hidden-struct-arg "field V86._reference (fldOffset=0x0)" P-DEP ; V675 tmp669 [V675,T62] ( 2, 0.08) int -> [sp+0x12C] do-not-enreg[H] hidden-struct-arg "field V86._length (fldOffset=0x4)" P-DEP
-; V676 tmp670 [V676,T76] ( 2, 0.05) byref -> r8 single-def "field V87._reference (fldOffset=0x0)" P-INDEP
+; V676 tmp670 [V676,T76] ( 2, 0.05) byref -> r7 single-def "field V87._reference (fldOffset=0x0)" P-INDEP
; V677 tmp671 [V677,T77] ( 2, 0.05) int -> r6 "field V87._length (fldOffset=0x4)" P-INDEP ; V678 tmp672 [V678,T65] ( 2, 0.07) byref -> [sp+0x120] do-not-enreg[H] hidden-struct-arg "field V88._reference (fldOffset=0x0)" P-DEP ; V679 tmp673 [V679,T66] ( 2, 0.07) int -> [sp+0x124] do-not-enreg[H] hidden-struct-arg "field V88._length (fldOffset=0x4)" P-DEP @@ -1185,17 +1185,17 @@ ;* V1173 tmp1167 [V1173 ] ( 0, 0 ) int -> zero-ref "V509.[004..008)" ;* V1174 tmp1168 [V1174 ] ( 0, 0 ) byref -> zero-ref "V510.[000..004)" ;* V1175 tmp1169 [V1175 ] ( 0, 0 ) int -> zero-ref "V510.[004..008)"
-; V1176 tmp1170 [V1176,T02] ( 4, 5.66) int -> r0 "fgMakeTemp is creating a new local variable" -; V1177 tmp1171 [V1177,T33] ( 4, 0.14) int -> r8 "fgMakeTemp is creating a new local variable" -; V1178 tmp1172 [V1178,T60] ( 4, 0.08) int -> r9 "fgMakeTemp is creating a new local variable" -; V1179 tmp1173 [V1179,T57] ( 4, 0.09) int -> r2 "fgMakeTemp is creating a new local variable" -; V1180 rat0 [V1180,T05] ( 3, 3.52) int -> r7 "ReplaceWithLclVar is creating a new local variable" -; V1181 rat1 [V1181,T09] ( 3, 0.49) int -> r9 "ReplaceWithLclVar is creating a new local variable" -; V1182 rat2 [V1182,T75] ( 3, 0.05) int -> r3 "ReplaceWithLclVar is creating a new local variable" -; V1183 rat3 [V1183,T100] ( 3, 0.02) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V1184 rat4 [V1184,T106] ( 3, 0.02) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V1185 rat5 [V1185,T188] ( 3, 0.00) int -> r1 "ReplaceWithLclVar is creating a new local variable" -; V1186 rat6 [V1186,T170] ( 3, 0.00) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; V1176 tmp1170 [V1176,T02] ( 4, 5.66) int -> r7 "fgMakeTemp is creating a new local variable" +; V1177 tmp1171 [V1177,T33] ( 4, 0.14) int -> r7 "fgMakeTemp is creating a new local variable" +; V1178 tmp1172 [V1178,T60] ( 4, 0.08) int -> r8 "fgMakeTemp is creating a new local variable" +; V1179 tmp1173 [V1179,T57] ( 4, 0.09) int -> r3 "fgMakeTemp is creating a new local variable" +; V1180 rat0 [V1180,T05] ( 3, 3.52) int -> r0 "ReplaceWithLclVar is creating a new local variable" +; V1181 rat1 [V1181,T09] ( 3, 0.49) int -> r7 "ReplaceWithLclVar is creating a new local variable" +; V1182 rat2 [V1182,T75] ( 3, 0.05) int -> r9 "ReplaceWithLclVar is creating a new local variable" +; V1183 rat3 [V1183,T100] ( 3, 0.02) int -> r2 "ReplaceWithLclVar is creating a new local variable" +; V1184 rat4 [V1184,T106] ( 3, 0.02) int -> r2 "ReplaceWithLclVar is creating a new local variable" +; V1185 rat5 [V1185,T170] ( 3, 0.00) int -> lr "ReplaceWithLclVar is creating a new local variable" +; V1186 rat6 [V1186,T188] ( 3, 0.00) int -> r2 "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 636 @@ -1223,39 +1223,33 @@ G_M22057_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre str r0, [sp+0x270] // [V512 tmp506] movw r0, 0xd1ff str r0, [sp+0x274] // [V513 tmp507]
- subs r0, r6, 7 - cmp r0, 13 - beq SHORT G_M22057_IG07
+ subs r7, r6, 7 + cmp r7, 13 + bne SHORT G_M22057_IG07
;; size=26 bbWeight=1 PerfScore 10.00
-G_M22057_IG03: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz - cmp r0, 19
+G_M22057_IG03: ; bbWeight=0.59, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz + movs r0, 19 + cmp r0, r6 + bhs G_M22057_IG88 + ldrh r0, [r5+0x26] + subs r0, 49 + cmp r0, 8
bhi SHORT G_M22057_IG04 movw r3, LOW ADDRESS J_M22057_DS00 movt r3, HIGH ADDRESS J_M22057_DS00 J_M22057_DS00 LABEL DWORD
- DD G_M22057_IG56 - DD G_M22057_IG92 - DD G_M22057_IG71 - DD G_M22057_IG04 - DD G_M22057_IG04 - DD G_M22057_IG58 - DD G_M22057_IG30 - DD G_M22057_IG93 - DD G_M22057_IG04 - DD G_M22057_IG04 - DD G_M22057_IG13 - DD G_M22057_IG63 - DD G_M22057_IG32 - DD G_M22057_IG07 - DD G_M22057_IG42 - DD G_M22057_IG10 - DD G_M22057_IG44 - DD G_M22057_IG04 - DD G_M22057_IG34 - DD G_M22057_IG25
+ DD G_M22057_IG08 + DD G_M22057_IG18 + DD G_M22057_IG15 + DD G_M22057_IG14 + DD G_M22057_IG23 + DD G_M22057_IG29 + DD G_M22057_IG101 + DD G_M22057_IG102 + DD G_M22057_IG103
ldr pc, [r3+4*r0]
- ;; size=16 bbWeight=0.41 PerfScore 2.07
+ ;; size=28 bbWeight=0.59 PerfScore 5.86
G_M22057_IG04: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref ; byrRegs -[r5] add r0, sp, 616 // [V03 loc1] @@ -1278,30 +1272,36 @@ G_M22057_IG06: ; bbWeight=1, epilog, nogc, extend add sp, 8 bx lr ;; size=12 bbWeight=1 PerfScore 4.00
-G_M22057_IG07: ; bbWeight=0.59, gcVars=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
+G_M22057_IG07: ; bbWeight=0.41, gcVars=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, gcvars, byref, isz
; byrRegs +[r5]
- movs r0, 19 - cmp r0, r6 - bhs G_M22057_IG91 - ldrh r0, [r5+0x26] - sub r7, r0, 49 - cmp r7, 8
+ cmp r7, 19
bhi SHORT G_M22057_IG04
- movw r0, LOW ADDRESS J_M22057_DS80 - movt r0, HIGH ADDRESS J_M22057_DS80
+ movw r0, LOW ADDRESS J_M22057_DS36 + movt r0, HIGH ADDRESS J_M22057_DS36
- J_M22057_DS80 LABEL DWORD - DD G_M22057_IG08 - DD G_M22057_IG27 - DD G_M22057_IG21
+ J_M22057_DS36 LABEL DWORD + DD G_M22057_IG54 + DD G_M22057_IG91 + DD G_M22057_IG72 + DD G_M22057_IG04 + DD G_M22057_IG04 + DD G_M22057_IG56
DD G_M22057_IG20
- DD G_M22057_IG35 - DD G_M22057_IG40 - DD G_M22057_IG102 - DD G_M22057_IG103 - DD G_M22057_IG104
+ DD G_M22057_IG92 + DD G_M22057_IG04 + DD G_M22057_IG04 + DD G_M22057_IG26 + DD G_M22057_IG74 + DD G_M22057_IG37 + DD G_M22057_IG03 + DD G_M22057_IG43 + DD G_M22057_IG10 + DD G_M22057_IG33 + DD G_M22057_IG04 + DD G_M22057_IG22 + DD G_M22057_IG17
ldr pc, [r0+4*r7]
- ;; size=30 bbWeight=0.59 PerfScore 5.86
+ ;; size=16 bbWeight=0.41 PerfScore 2.07
G_M22057_IG08: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz movs r0, 1 movw r3, 0xd1ff @@ -1311,7 +1311,7 @@ G_M22057_IG08: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5} movw r1, 0xd1ff movt r1, 0xd1ff cmp r6, 20
- bne SHORT G_M22057_IG12
+ bne G_M22057_IG19
movs r2, 40 mov r0, r5 ; byrRegs +[r0] @@ -1321,8 +1321,8 @@ G_M22057_IG08: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5} blx r3 // <unknown method> ; byrRegs -[r0] cmp r0, 0
- beq SHORT G_M22057_IG12 - ;; size=46 bbWeight=0.26 PerfScore 4.37
+ beq G_M22057_IG19 + ;; size=50 bbWeight=0.26 PerfScore 4.37
G_M22057_IG09: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz ; byrRegs -[r5] add r0, sp, 624 // [V02 loc0] @@ -1339,108 +1339,12 @@ G_M22057_IG10: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5} ; byrRegs +[r5] movs r0, 16 cmp r0, r6
- bhs G_M22057_IG91 - ldrh lr, [r5+0x20] - cmp lr, 46 - beq SHORT G_M22057_IG17 - ;; size=18 bbWeight=0.14 PerfScore 0.83 -G_M22057_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref - b G_M22057_IG65 - ;; size=4 bbWeight=0.00 PerfScore 0.00 -G_M22057_IG12: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0030 {r4 r5}, byref, isz - movs r0, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r6, 20 - bne G_M22057_IG100 - movs r2, 40 - mov r0, r5 - ; byrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0] - cmp r0, 0
...

+2 (+0.29%) : 599314.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

@@ -159,9 +159,9 @@ G_M42373_IG05: ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0080 {r7}, subs r7, r1, 1 ; byrRegs -[r7] cmp r7, 6
- bne SHORT G_M42373_IG08
+ bne SHORT G_M42373_IG07
;; size=46 bbWeight=1 PerfScore 19.00
-G_M42373_IG06: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
+G_M42373_IG06: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
add r1, sp, 12 mov r0, r4 ; gcrRegs +[r0] @@ -172,25 +172,22 @@ G_M42373_IG06: ; bbWeight=1.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {} ldr r3, [r3] blx r3 // <unknown method> ; gcrRegs -[r0 r2 r4 r6]
- ;; size=18 bbWeight=1.00 PerfScore 7.00 -G_M42373_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - add sp, 24 - pop {r4,r5,r6,r7,r8,r9,r11,pc} - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M42373_IG08: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+ b SHORT G_M42373_IG08 + ;; size=20 bbWeight=1.00 PerfScore 8.00 +G_M42373_IG07: ; bbWeight=0.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r4 r6] cmp r7, 10
- bhi SHORT G_M42373_IG07
+ bhi SHORT G_M42373_IG08
movw r0, LOW ADDRESS J_M42373_DS00 movt r0, HIGH ADDRESS J_M42373_DS00 J_M42373_DS00 LABEL DWORD DD G_M42373_IG34
- DD G_M42373_IG07
+ DD G_M42373_IG08
DD G_M42373_IG09
- DD G_M42373_IG07 - DD G_M42373_IG07 - DD G_M42373_IG07
+ DD G_M42373_IG08 + DD G_M42373_IG08 + DD G_M42373_IG08
DD G_M42373_IG06 DD G_M42373_IG10 DD G_M42373_IG28 @@ -198,7 +195,13 @@ G_M42373_IG08: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6 DD G_M42373_IG30 ldr pc, [r0+4*r7] ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M42373_IG09: ; bbWeight=0.00, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M42373_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[r4 r6] + add sp, 24 + pop {r4,r5,r6,r7,r8,r9,r11,pc} + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M42373_IG09: ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r4 r6]
ldrsb r0, [r6] mov r0, r6 ; gcrRegs +[r0] @@ -409,7 +412,7 @@ G_M42373_IG27: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0020 {r5}, by blx r3 // System.Text.Json.Utf8JsonWriter:WriteNumberValue(System.ReadOnlySpan`1[ubyte]):this ; gcrRegs -[r0 r6] ; byrRegs -[r1 r5]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=36 bbWeight=0 PerfScore 0.00 G_M42373_IG28: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r6] @@ -422,7 +425,7 @@ G_M42373_IG28: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ldr r2, [r0] blx r3 // System.Text.Json.Utf8JsonWriter:WriteBooleanValue(ubyte):this ; gcrRegs -[r0 r6]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=20 bbWeight=0 PerfScore 0.00 G_M42373_IG29: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r6] @@ -435,7 +438,7 @@ G_M42373_IG29: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ldr r2, [r0] blx r3 // System.Text.Json.Utf8JsonWriter:WriteBooleanValue(ubyte):this ; gcrRegs -[r0 r6]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=20 bbWeight=0 PerfScore 0.00 G_M42373_IG30: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r6] @@ -447,7 +450,7 @@ G_M42373_IG30: ; bbWeight=0, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byre ldr r2, [r0] blx r3 // System.Text.Json.Utf8JsonWriter:WriteNullValue():this ; gcrRegs -[r0 r6]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=18 bbWeight=0 PerfScore 0.00 G_M42373_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r3, 0xd1ff @@ -498,14 +501,14 @@ G_M42373_IG35: ; bbWeight=0, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b ldr r3, [r3] blx r3 // System.Text.Json.JsonDocument:WriteComplexElement(int,System.Text.Json.Utf8JsonWriter):this ; gcrRegs -[r0 r2 r4 r6]
- b SHORT G_M42373_IG07
+ b SHORT G_M42373_IG08
;; size=20 bbWeight=0 PerfScore 0.00 RWD00 dd G_M42373_IG34
- dd G_M42373_IG07
+ dd G_M42373_IG08
dd G_M42373_IG09
- dd G_M42373_IG07 - dd G_M42373_IG07 - dd G_M42373_IG07
+ dd G_M42373_IG08 + dd G_M42373_IG08 + dd G_M42373_IG08
dd G_M42373_IG06 dd G_M42373_IG10 dd G_M42373_IG28 @@ -513,7 +516,7 @@ RWD00 dd G_M42373_IG34 dd G_M42373_IG30
-; Total bytes of code 688, prolog size 14, PerfScore 57.00, instruction count 258, allocated bytes for code 688 (MethodHash=47245a7a) for method System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)
+; Total bytes of code 690, prolog size 14, PerfScore 58.00, instruction count 259, allocated bytes for code 690 (MethodHash=47245a7a) for method System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)
; ============================================================ Unwind Info: @@ -525,7 +528,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 344 (0x00158) Actual length = 688 (0x0002b0)
+ Function Length : 345 (0x00159) Actual length = 690 (0x0002b2)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

@@ -91,11 +91,11 @@ G_M47580_IG03: ; bbWeight=1.00, 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.00 PerfScore 8.99
+ bne G_M47580_IG26 + ;; size=28 bbWeight=1.00 PerfScore 8.99
G_M47580_IG04: ; bbWeight=1.00, gcrefRegs=0041 {r0 r6}, byrefRegs=0000 {}, byref, isz ldr r3, [r6+0x1C] ; gcrRegs +[r3] @@ -104,7 +104,7 @@ G_M47580_IG04: ; bbWeight=1.00, 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 ...

+8 (+0.38%) : 77780.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 2842
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2842
; 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.08) 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,T16] ( 3, 0.76) ref -> r9 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V34 tmp26 [V34,T16] ( 3, 0.76) 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,T07] ( 2, 1.53) ref -> r3 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V37 tmp29 [V37,T10] ( 4, 1.21) 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,T06] ( 4, 1.86) int -> r7 "fgMakeTemp is creating a new local variable"
-; V60 tmp52 [V60,T05] ( 4, 3.17) int -> r8 "fgMakeTemp is creating a new local variable"
+; V60 tmp52 [V60,T05] ( 4, 3.17) 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,40 +87,51 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre ldr r3, [r4+0x08] ; gcrRegs +[r3] cmp r3, 0
- beq SHORT G_M18455_IG11 - ;; size=6 bbWeight=1 PerfScore 3.00
+ beq G_M18455_IG23 + ;; size=8 bbWeight=1 PerfScore 3.00
G_M18455_IG03: ; bbWeight=1, gcrefRegs=0018 {r3 r4}, byrefRegs=0000 {}, byref, isz ldrh r6, [r3+0x08] movw r0, 0xd1ff cmp r6, r0
- bhi SHORT G_M18455_IG12
+ bls SHORT G_M18455_IG11
;; size=10 bbWeight=1 PerfScore 4.00
-G_M18455_IG04: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+G_M18455_IG04: ; bbWeight=0.62, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r3] movw r0, 0xd1ff cmp r6, r0
- bls SHORT G_M18455_IG08 - ;; size=8 bbWeight=0.38 PerfScore 1.15 -G_M18455_IG05: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+ bls G_M18455_IG32 + ;; size=10 bbWeight=0.62 PerfScore 1.85 +G_M18455_IG05: ; bbWeight=0.59, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
movw r0, 0xd1ff cmp r6, r0
- bhi G_M18455_IG39 - ;; size=10 bbWeight=0.38 PerfScore 1.14 -G_M18455_IG06: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - sub r7, r6, 0x2080
+ bls G_M18455_IG42 + movw r0, 0xd1ff + sxth r0, r0 + adds r7, r6, r0
cmp r7, 0
- beq G_M18455_IG20 - ;; size=10 bbWeight=0.38 PerfScore 1.14 -G_M18455_IG07: ; bbWeight=0.08, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz - b SHORT G_M18455_IG30 - ;; size=2 bbWeight=0.08 PerfScore 0.08 -G_M18455_IG08: ; bbWeight=0.00, 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_IG51
+ bne G_M18455_IG22 + ;; size=24 bbWeight=0.59 PerfScore 4.70 +G_M18455_IG06: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + mov r0, r4 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTrueIdentifier():ubyte:this + ; gcrRegs -[r0] + ; gcr arg pop 0 + cmp r0, 0 + beq G_M18455_IG63 + mov r0, r4 + ; gcrRegs +[r0] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleAnonymousMethodExpression():ubyte:this + ; gcrRegs -[r0] + ; gcr arg pop 0 + cmp r0, 0 + bne G_M18455_IG57
mov r0, r4 ; gcrRegs +[r0] mov r1, r5 @@ -131,23 +142,177 @@ G_M18455_IG08: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 cmp r0, 0
- bne G_M18455_IG83 - ;; size=42 bbWeight=0.00 PerfScore 0.04 -G_M18455_IG09: ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+ bne G_M18455_IG60 + ;; size=62 bbWeight=0.38 PerfScore 8.40 +G_M18455_IG07: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + 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_IG61 + mov r0, r4 + ; gcrRegs +[r0] + movs r1, 1 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcr arg pop 0 + mov r8, r0 + ; gcrRegs +[r8] + ldr r3, [r4+0x08] + ; gcrRegs +[r3] + cmp r3, 0 + beq G_M18455_IG26 + ;; size=48 bbWeight=0.38 PerfScore 6.87 +G_M18455_IG08: ; bbWeight=0.38, gcrefRegs=0118 {r3 r4 r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0] + ldrh r0, [r3+0x08] + movw r3, 0xd1ff + ; gcrRegs -[r3] + cmp r0, r3 + beq G_M18455_IG27 + ;; size=12 bbWeight=0.38 PerfScore 1.53 +G_M18455_IG09: ; bbWeight=0.33, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref + ; gcrRegs -[r4] + mov r0, r8 + ; gcrRegs +[r0] + ;; size=2 bbWeight=0.33 PerfScore 0.33 +G_M18455_IG10: ; bbWeight=0.33, epilog, nogc, extend + add sp, 12 + pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} + ;; size=6 bbWeight=0.33 PerfScore 0.66 +G_M18455_IG11: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r0 r8] +[r4] + movw r0, 0xd1ff + cmp r6, r0 + bls G_M18455_IG34 + ;; size=10 bbWeight=0.38 PerfScore 1.15 +G_M18455_IG12: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + movw r0, 0xd1ff + cmp r6, r0 + bhi G_M18455_IG37 + ;; size=10 bbWeight=0.38 PerfScore 1.14 +G_M18455_IG13: ; bbWeight=0.38, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz + sub r7, r6, 0x2080 + cmp r7, 0 + bne SHORT G_M18455_IG25 + ;; size=8 bbWeight=0.38 PerfScore 1.14 +G_M18455_IG14: ; bbWeight=0.29, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
mov r0, r4 ; gcrRegs +[r0] movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=12 bbWeight=0.00 PerfScore 0.01 -G_M18455_IG10: ; bbWeight=0.00, epilog, nogc, extend
+ ;; size=12 bbWeight=0.29 PerfScore 1.18 +G_M18455_IG15: ; bbWeight=0.29, 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.00 PerfScore 0.01 -G_M18455_IG11: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.29 PerfScore 0.88 +G_M18455_IG16: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r0]
+ ldr r7, [r4+0xAC] + ; gcrRegs +[r7] + mov r0, r6 + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; gcr arg pop 0 + mov r8, r0 + ldr r9, [r4+0x08] + ; gcrRegs +[r9] + cmp r9, 0 + beq SHORT G_M18455_IG29 + ;; size=30 bbWeight=0.25 PerfScore 2.52 +G_M18455_IG17: ; bbWeight=0.25, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref, isz + ldr r0, [r4+0x08] + ; gcrRegs +[r0] + ldr r3, [r0] + movw r2, 0xd1ff + movt r2, 0xd1ff + cmp r3, r2 + beq SHORT G_M18455_IG24 + ;; size=16 bbWeight=0.25 PerfScore 1.51 +G_M18455_IG18: ; bbWeight=0.15, gcrefRegs=0291 {r0 r4 r7 r9}, byrefRegs=0000 {}, byref + ldr r3, [r3+0x3C] + ldr r3, [r3+0x14] + blx r3 // <unknown method> + ; gcr arg pop 0 + mov r1, r0 + ; gcrRegs +[r1] + ;; size=8 bbWeight=0.15 PerfScore 0.58 +G_M18455_IG19: ; bbWeight=0.25, gcrefRegs=0292 {r1 r4 r7 r9}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r0] + add r0, r4, 16 + ; byrRegs +[r0] + movw r12, 0xd1ff + movt r12, 0xd1ff + blx r12 // CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[r1] + ; byrRegs -[r0] + movs r0, 0 + str r0, [r4+0x08] + ldr r0, [r4+0x14] + ; gcrRegs +[r0] + cmp r0, 0 + bne G_M18455_IG70 + ;; size=26 bbWeight=0.25 PerfScore 2.27 +G_M18455_IG20: ; bbWeight=0.25, gcrefRegs=0290 {r4 r7 r9}, byrefRegs=0000 {}, byref + ; gcrRegs -[r0] + ldr r0, [r4+0x20] + adds r0, r0, 1 + str r0, [r4+0x20] + mov r0, r7 + ; gcrRegs +[r0] + mov r1, r8 + mov r2, r9 + ; gcrRegs +[r2] + movw lr, 0xd1ff + movt lr, 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 7 4 3 0 -32 +14
librariestestsnotieredcompilation.run.linux.arm.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.arm.checked.mch 0 0 0 0 -0 +0
7 4 3 0 -32 +14

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 50,989 6,738 44,251 1,277 (2.44%) 1,277 (2.44%)
benchmarks.run_pgo.linux.arm.checked.mch 164,943 59,003 105,940 3,254 (1.93%) 3,254 (1.93%)
benchmarks.run_tiered.linux.arm.checked.mch 77,426 41,851 35,575 1,061 (1.35%) 1,061 (1.35%)
coreclr_tests.run.linux.arm.checked.mch 472,420 259,271 213,149 7,207 (1.50%) 7,207 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 189,604 14 189,590 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 274,270 6 274,264 7,835 (2.78%) 7,835 (2.78%)
libraries_tests.run.linux.arm.Release.mch 709,962 443,614 266,348 17,932 (2.46%) 17,932 (2.46%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,708 21,625 253,083 33,604 (10.90%) 33,604 (10.90%)
realworld.run.linux.arm.checked.mch 36,190 75 36,115 1,412 (3.76%) 1,412 (3.76%)
2,250,512 832,197 1,418,315 73,582 (3.17%) 73,582 (3.17%)

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: 239569136 (overridden on cmd)
Total bytes of diff: 239569118 (overridden on cmd)
Total bytes of delta: -18 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 77780.dasm (0.38 % of base)
           4 : 723863.dasm (0.30 % of base)
           2 : 599314.dasm (0.29 % of base)

Top file improvements (bytes):
         -20 : 547930.dasm (-0.24 % of base)
          -8 : 33286.dasm (-0.37 % of base)
          -2 : 509261.dasm (-0.52 % of base)
          -2 : 101797.dasm (-0.22 % of base)

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

Top method regressions (bytes):
           8 (0.38 % of base) : 77780.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
           4 (0.30 % of base) : 723863.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)
           2 (0.29 % of base) : 599314.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

Top method improvements (bytes):
         -20 (-0.24 % of base) : 547930.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
          -8 (-0.37 % of base) : 33286.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          -2 (-0.22 % of base) : 101797.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) : 509261.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)

Top method regressions (percentages):
           8 (0.38 % of base) : 77780.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
           4 (0.30 % of base) : 723863.dasm - System.Xml.XmlWellFormedWriter:WriteEndAttribute():this (Tier1)
           2 (0.29 % of base) : 599314.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

Top method improvements (percentages):
          -2 (-0.52 % of base) : 509261.dasm - System.Reflection.PseudoCustomAttribute:GetDllImportCustomAttribute(System.Reflection.RuntimeMethodInfo):System.Runtime.InteropServices.DllImportAttribute (Tier1)
          -8 (-0.37 % of base) : 33286.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
         -20 (-0.24 % of base) : 547930.dasm - System.Formats.Asn1.WellKnownOids:GetContents(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier1)
          -2 (-0.22 % of base) : 101797.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Tier1)

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



windows x86

Diffs are based on 2,354,252 contexts (851,840 MinOpts, 1,502,412 FullOpts).

Overall (+2 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 48,695,572 +8
libraries_tests.run.windows.x86.Release.mch 190,251,789 -6

FullOpts (+2 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 41,973,910 +8
libraries_tests.run.windows.x86.Release.mch 91,155,401 -6

Example diffs

benchmarks.run_pgo.windows.x86.checked.mch

+8 (+1.33%) : 111200.dasm - System.Text.RegularExpressions.RegexCompiler+<>cDisplayClass158_0:gEmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)

@@ -46,29 +46,29 @@ G_M17183_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} mov ebx, edx ; gcrRegs +[ebx] ;; size=30 bbWeight=1 PerfScore 9.58
-G_M17183_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M17183_IG02: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
mov eax, gword ptr [esi+0x04] ; gcrRegs +[eax] mov eax, gword ptr [eax+0x08] mov eax, gword ptr [eax+0x08] cmp dword ptr [eax+0x10], 19
- je G_M17183_IG22 - ;; size=19 bbWeight=1 PerfScore 10.00
+ je SHORT G_M17183_IG10 + ;; size=15 bbWeight=1 PerfScore 10.00
G_M17183_IG03: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] call <unknown method> test eax, eax
- je G_M17183_IG25
+ je G_M17183_IG13
test byte ptr [ebx+0x18], 64
- jne G_M17183_IG26
+ jne G_M17183_IG14
;; size=23 bbWeight=1 PerfScore 6.25 G_M17183_IG04: ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz movzx eax, byte ptr [ebx+0x1E] add eax, -3 cmp eax, 22
- jne SHORT G_M17183_IG07
+ jne SHORT G_M17183_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M17183_IG05: ; bbWeight=0.59, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M17183_IG05: ; bbWeight=0.59, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
push gword ptr [ebp+0x0C] movzx ecx, byte ptr [ebp+0x08] push ecx @@ -78,26 +78,19 @@ G_M17183_IG05: ; bbWeight=0.59, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 ; gcrRegs +[edx] call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitConcatenation|15(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this] ; gcrRegs -[ecx edx ebx esi]
- ;; size=18 bbWeight=0.59 PerfScore 3.80 -G_M17183_IG06: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 8 - ;; size=10 bbWeight=1 PerfScore 4.50 -G_M17183_IG07: ; bbWeight=0.41, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp SHORT G_M17183_IG09 + ;; size=20 bbWeight=0.59 PerfScore 4.98 +G_M17183_IG06: ; bbWeight=0.41, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ebx esi] cmp eax, 43
- ja SHORT G_M17183_IG06
+ ja SHORT G_M17183_IG09
lea ecx, [@RWD00] mov ecx, dword ptr [ecx+4*eax] lea edx, G_M17183_IG02 add ecx, edx jmp ecx ;; size=24 bbWeight=0.41 PerfScore 2.90
-G_M17183_IG08: ; bbWeight=0.41, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M17183_IG07: ; bbWeight=0.41, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
movzx ecx, byte ptr [ebp+0x08] push ecx push 0 @@ -107,9 +100,9 @@ G_M17183_IG08: ; bbWeight=0.41, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06
+ jmp SHORT G_M17183_IG09
;; size=19 bbWeight=0.41 PerfScore 3.52
-G_M17183_IG09: ; bbWeight=0.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M17183_IG08: ; bbWeight=0.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ebx esi] mov ecx, esi ; gcrRegs +[ecx] @@ -117,130 +110,16 @@ G_M17183_IG09: ; bbWeight=0.00, gcrefRegs=00000048 {ebx esi}, byrefRegs=0 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx ebx esi]
- jmp SHORT G_M17183_IG06 - ;; size=12 bbWeight=0.00 PerfScore 0.00 -G_M17183_IG10: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx ebx esi] - jmp SHORT G_M17183_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M17183_IG11: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx ebx esi] - jmp SHORT G_M17183_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M17183_IG12: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitAlternation|4(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[ecx edx ebx esi] - jmp SHORT G_M17183_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M17183_IG13: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ebx esi] - push gword ptr [ebp+0x0C] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx ebx esi] - jmp SHORT G_M17183_IG06 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M17183_IG14: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [<unknown method>] - ; gcrRegs -[ecx edx ebx esi] - jmp SHORT G_M17183_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M17183_IG15: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[ecx edx ebx esi] - jmp G_M17183_IG06 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M17183_IG16: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[ecx edx ebx esi] - jmp G_M17183_IG06 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M17183_IG17: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ebx esi] - push gword ptr [ebp+0x0C] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitCapture|8(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[ecx edx ebx esi] - jmp G_M17183_IG06 - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M17183_IG18: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitPositiveLookaroundAssertion|10(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[ecx edx ebx esi] - jmp G_M17183_IG06 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M17183_IG19: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNegativeLookaroundAssertion|11(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[ecx edx ebx esi] - jmp G_M17183_IG06 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M17183_IG20: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[esi] - mov ecx, gword ptr [esi+0x04] - ; gcrRegs +[ecx] - mov edx, dword ptr [esi+0x24] - call [<unknown method>] - ; gcrRegs -[ecx esi] - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG21: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref - ; gcrRegs +[ebx esi] - mov ecx, esi - ; gcrRegs +[ecx] - mov edx, ebx - ; gcrRegs +[edx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitUpdateBumpalong|14(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[ecx edx ebx esi] - jmp G_M17183_IG06 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M17183_IG22: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+ ;; size=10 bbWeight=0.00 PerfScore 0.00 +G_M17183_IG09: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret 8 + ;; size=10 bbWeight=1 PerfScore 4.50 +G_M17183_IG10: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
; gcrRegs +[ebx esi] mov gword ptr [ebp-0x28], esi ; GC ptr vars +{V00} @@ -260,17 +139,17 @@ G_M17183_IG22: ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000 lea ecx, bword ptr [ebp-0x24] ; byrRegs +[ecx] cmp byte ptr [ebp-0x24], 0
- jne SHORT G_M17183_IG23
+ jne SHORT G_M17183_IG11
xor edx, edx
- jmp SHORT G_M17183_IG24
+ jmp SHORT G_M17183_IG12
;; size=38 bbWeight=0 PerfScore 0.00
-G_M17183_IG23: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000002 {ecx}, gcvars, byref
+G_M17183_IG11: ; bbWeight=0, gcVars=00000002 {V00}, gcrefRegs=00000008 {ebx}, byrefRegs=00000002 {ecx}, gcvars, byref
; gcrRegs -[edx] ; byrRegs -[esi edi] mov edx, gword ptr [ecx+0x04] ; gcrRegs +[edx] ;; size=3 bbWeight=0 PerfScore 0.00
-G_M17183_IG24: ; bbWeight=0, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref
+G_M17183_IG12: ; bbWeight=0, gcrefRegs=0000000C {edx ebx}, byrefRegs=00000000 {}, byref, isz
; byrRegs -[ecx] cmp edx, ebx mov esi, gword ptr [ebp-0x28] @@ -295,9 +174,9 @@ G_M17183_IG24: ; bbWeight=0, gcrefRegs=0000000C {edx ebx}, byrefRegs=0000 ; gcrRegs +[ecx] call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__SliceInputSpan|0():this] ; gcrRegs -[ecx esi]
- jmp G_M17183_IG06 - ;; size=54 bbWeight=0 PerfScore 0.00
...

libraries_tests.run.windows.x86.Release.mch

-3 (-1.90%) : 470666.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)

@@ -33,19 +33,22 @@ G_M54976_IG02: ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 cmp edi, 3 jne SHORT G_M54976_IG05 ;; size=8 bbWeight=1 PerfScore 3.25
-G_M54976_IG03: ; bbWeight=0.78, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+G_M54976_IG03: ; bbWeight=0.78, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi ; gcrRegs +[edx] call [System.Runtime.Serialization.Formatters.Binary.ObjectReader:ParseMember(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this] ; gcrRegs -[ecx edx esi]
- ;; size=8 bbWeight=0.78 PerfScore 2.52 -G_M54976_IG04: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc - pop esi - pop edi - pop ebp - ret - ;; size=4 bbWeight=1 PerfScore 2.50 -G_M54976_IG05: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+ jmp SHORT G_M54976_IG08 + ;; size=10 bbWeight=0.78 PerfScore 4.07 +G_M54976_IG04: ; bbWeight=0.13, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs +[ecx esi] + mov edx, esi + ; gcrRegs +[edx] + call [System.Runtime.Serialization.Formatters.Binary.ObjectReader:ParseMemberEnd(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this] + ; gcrRegs -[ecx edx esi] + jmp SHORT G_M54976_IG08 + ;; size=10 bbWeight=0.13 PerfScore 0.68 +G_M54976_IG05: ; bbWeight=0.22, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx esi] cmp edi, 12 ja SHORT G_M54976_IG09 @@ -55,30 +58,27 @@ G_M54976_IG05: ; bbWeight=0.22, gcVars=00000000 {}, gcrefRegs=00000042 {e add edx, eax jmp edx ;; size=24 bbWeight=0.22 PerfScore 1.57
-G_M54976_IG06: ; bbWeight=0.13, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - mov edx, esi - ; gcrRegs +[edx] - call [System.Runtime.Serialization.Formatters.Binary.ObjectReader:ParseMemberEnd(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this] - ; gcrRegs -[ecx edx esi] - jmp SHORT G_M54976_IG04 - ;; size=10 bbWeight=0.13 PerfScore 0.68 -G_M54976_IG07: ; bbWeight=0.05, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz - ; gcrRegs +[ecx esi]
+G_M54976_IG06: ; bbWeight=0.05, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
mov edx, esi ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[ecx edx esi]
- jmp SHORT G_M54976_IG04
+ jmp SHORT G_M54976_IG08
;; size=10 bbWeight=0.05 PerfScore 0.25
-G_M54976_IG08: ; bbWeight=0.05, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+G_M54976_IG07: ; bbWeight=0.05, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
; gcrRegs +[ecx esi] mov edx, esi ; gcrRegs +[edx] call [System.Runtime.Serialization.Formatters.Binary.ObjectReader:ParseObjectEnd(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this] ; gcrRegs -[ecx edx esi]
- jmp SHORT G_M54976_IG04 - ;; size=10 bbWeight=0.05 PerfScore 0.25 -G_M54976_IG09: ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ ;; size=8 bbWeight=0.05 PerfScore 0.15 +G_M54976_IG08: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc + pop esi + pop edi + pop ebp + ret + ;; size=4 bbWeight=1 PerfScore 2.50 +G_M54976_IG09: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi] mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -111,31 +111,31 @@ G_M54976_IG10: ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000 cmp dword ptr [ecx], ecx call [System.Runtime.Serialization.Formatters.Binary.SerStack:Push(System.Object):this] ; gcrRegs -[ecx edx esi]
- jmp SHORT G_M54976_IG04
+ jmp SHORT G_M54976_IG08
;; size=15 bbWeight=0 PerfScore 0.00
-G_M54976_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M54976_IG11: ; bbWeight=0, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
; gcrRegs +[ecx] mov ecx, gword ptr [ecx+0x2C] cmp dword ptr [ecx], ecx call [System.Runtime.Serialization.Formatters.Binary.SerStack:Pop():System.Object:this] ; gcrRegs -[ecx] +[eax]
- jmp G_M54976_IG04 - ;; size=16 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M54976_IG08 + ;; size=13 bbWeight=0 PerfScore 0.00
RWD00 dd G_M54976_IG09 - G_M54976_IG02 dd G_M54976_IG10 - G_M54976_IG02
- dd G_M54976_IG07 - G_M54976_IG02 - dd G_M54976_IG03 - G_M54976_IG02 - dd G_M54976_IG08 - G_M54976_IG02
dd G_M54976_IG06 - G_M54976_IG02
+ dd G_M54976_IG03 - G_M54976_IG02 + dd G_M54976_IG07 - G_M54976_IG02 + dd G_M54976_IG04 - G_M54976_IG02
dd G_M54976_IG09 - G_M54976_IG02 dd G_M54976_IG09 - G_M54976_IG02 dd G_M54976_IG11 - G_M54976_IG02
- dd G_M54976_IG04 - G_M54976_IG02 - dd G_M54976_IG04 - G_M54976_IG02 - dd G_M54976_IG04 - G_M54976_IG02 - dd G_M54976_IG04 - G_M54976_IG02
+ dd G_M54976_IG08 - G_M54976_IG02 + dd G_M54976_IG08 - G_M54976_IG02 + dd G_M54976_IG08 - G_M54976_IG02 + dd G_M54976_IG08 - G_M54976_IG02
-; Total bytes of code 158, prolog size 5, PerfScore 14.52, instruction count 51, allocated bytes for code 158 (MethodHash=5da0293f) for method System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
+; Total bytes of code 155, prolog size 5, PerfScore 15.98, instruction count 51, allocated bytes for code 155 (MethodHash=5da0293f) for method System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
; ============================================================

-9 (-0.53%) : 76126.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 ; ebp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7924
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7924
; 3 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -43,7 +43,7 @@ ; V31 tmp23 [V31,T16] ( 2, 0.23) ref -> ebx class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V32 tmp24 [V32,T40] ( 2, 0 ) ref -> ebx class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V33 tmp25 [V33,T12] ( 2, 0.91) ref -> [ebp-0x1C] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp26 [V34,T15] ( 3, 0.45) ref -> ecx "guarded devirt return temp"
+; V34 tmp26 [V34,T15] ( 3, 0.45) ref -> registers "guarded devirt return temp"
; V35 tmp27 [V35,T08] ( 4, 1.36) ref -> ecx single-def "guarded devirt arg temp" ;* V36 tmp28 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxTokenWithTrivia> ; V37 tmp29 [V37,T41] ( 2, 0 ) ref -> edi class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> @@ -84,14 +84,14 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M18455_IG03: ; bbWeight=0.69, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax] cmp ebx, 0x20BC
- jbe G_M18455_IG27
+ jbe G_M18455_IG24
;; size=12 bbWeight=0.69 PerfScore 0.86 G_M18455_IG04: ; bbWeight=0.65, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp ebx, 0x2124
- jbe G_M18455_IG32
+ jbe G_M18455_IG43
lea edx, [ebx-0x213C] test edx, edx
- jne G_M18455_IG22
+ jne G_M18455_IG17
;; size=26 bbWeight=0.65 PerfScore 1.96 G_M18455_IG05: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov ecx, esi @@ -99,29 +99,29 @@ G_M18455_IG05: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsTrueIdentifier():ubyte:this] ; gcrRegs -[ecx] test eax, eax
- je G_M18455_IG36
+ je G_M18455_IG56
mov ecx, esi ; gcrRegs +[ecx] call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleAnonymousMethodExpression():ubyte:this] ; gcrRegs -[ecx] test eax, eax
- jne G_M18455_IG59
+ jne G_M18455_IG52
mov ecx, esi ; gcrRegs +[ecx] mov edx, edi call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- jne G_M18455_IG33
+ jne G_M18455_IG54
;; size=50 bbWeight=0.48 PerfScore 6.56
-G_M18455_IG06: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M18455_IG06: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov ecx, esi ; gcrRegs +[ecx] mov edx, edi call [<unknown method>] ; gcrRegs -[ecx] test eax, eax
- jne G_M18455_IG34
+ jne G_M18455_IG55
mov ecx, esi ; gcrRegs +[ecx] mov edx, 1 @@ -134,8 +134,8 @@ G_M18455_IG06: ; bbWeight=0.48, gcrefRegs=00000040 {esi}, byrefRegs=00000 call [<unknown method>] ; gcrRegs -[ecx] cmp word ptr [eax+0x08], 0x2048
- je SHORT G_M18455_IG15 - ;; size=49 bbWeight=0.48 PerfScore 7.51
+ je G_M18455_IG22 + ;; size=53 bbWeight=0.48 PerfScore 7.51
G_M18455_IG07: ; bbWeight=0.42, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref ; gcrRegs -[eax esi] mov eax, edi @@ -150,45 +150,113 @@ G_M18455_IG08: ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 pop ebp ret ;; size=8 bbWeight=1 PerfScore 3.50
-G_M18455_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18455_IG09: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] +[esi] cmp ebx, 0x204D
- jbe SHORT G_M18455_IG13 - ;; size=8 bbWeight=0.31 PerfScore 0.39
+ jbe G_M18455_IG26 + ;; size=12 bbWeight=0.31 PerfScore 0.39
G_M18455_IG10: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp ebx, 0x208D
- ja G_M18455_IG31
+ ja G_M18455_IG29
;; size=12 bbWeight=0.30 PerfScore 0.37 G_M18455_IG11: ; bbWeight=0.30, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref lea eax, [ebx-0x2080] test eax, eax
- je G_M18455_IG21
+ jne G_M18455_IG20
;; size=14 bbWeight=0.30 PerfScore 0.52
-G_M18455_IG12: ; bbWeight=0.09, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - jmp G_M18455_IG24 - ;; size=5 bbWeight=0.09 PerfScore 0.17 -G_M18455_IG13: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref - cmp ebx, 0x200F - ja G_M18455_IG62 - cmp ebx, 0x2008 - jne G_M18455_IG35
+G_M18455_IG12: ; bbWeight=0.21, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov ecx, esi ; gcrRegs +[ecx]
- mov edx, edi - call [<unknown method>] - ; gcrRegs -[ecx] - test eax, eax - jne G_M18455_IG42 - ;; size=42 bbWeight=0.01 PerfScore 0.09 -G_M18455_IG14: ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov ecx, esi - ; gcrRegs +[ecx] - call [<unknown method>]
+ call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTypeOfExpression():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeOfExpressionSyntax:this]
; gcrRegs -[ecx esi] +[eax] jmp SHORT G_M18455_IG08
- ;; size=10 bbWeight=0.01 PerfScore 0.06 -G_M18455_IG15: ; bbWeight=0.06, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] +[esi edi]
+ ;; size=10 bbWeight=0.21 PerfScore 1.10 +G_M18455_IG13: ; bbWeight=0.23, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + ; gcrRegs -[eax] +[esi] + mov edi, gword ptr [esi+0xAC] + ; gcrRegs +[edi] + mov ecx, ebx + call [<unknown method>] + mov ebx, eax + mov ecx, esi + ; gcrRegs +[ecx] + call [<unknown method>] + ; gcrRegs -[ecx] +[eax] + mov gword ptr [ebp-0x1C], eax + ; GC ptr vars +{V33} + mov ecx, gword ptr [esi+0x08] + ; gcrRegs +[ecx] + mov edx, dword ptr [ecx] + cmp edx, 0xD1FFAB1E + je SHORT G_M18455_IG19 + ;; size=40 bbWeight=0.23 PerfScore 3.40 +G_M18455_IG14: ; bbWeight=0.13, gcVars=0000000000001000 {V33}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; gcrRegs -[eax] + mov edx, dword ptr [edx+0x3C] + call [edx+0x14]<unknown method> + ; gcrRegs -[ecx] +[eax] + ;; size=6 bbWeight=0.13 PerfScore 0.66 +G_M18455_IG15: ; bbWeight=0.23, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref + lea edx, bword ptr [esi+0x10] + ; byrRegs +[edx] + call CORINFO_HELP_ASSIGN_REF_EAX + ; gcrRegs -[eax] + ; byrRegs -[edx] + xor ecx, ecx + ; gcrRegs +[ecx] + mov gword ptr [esi+0x08], ecx + cmp gword ptr [esi+0x14], 0 + jne G_M18455_IG60 + ;; size=23 bbWeight=0.23 PerfScore 1.53 +G_M18455_IG16: ; bbWeight=0.23, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[ecx] + inc dword ptr [esi+0x20] + push gword ptr [ebp-0x1C] + mov ecx, edi + ; gcrRegs +[ecx] + mov edx, ebx + cmp dword ptr [ecx], ecx + ; GC ptr vars -{V33} + call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ContextAwareSyntax:LiteralExpression(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LiteralExpressionSyntax:this] + ; gcrRegs -[ecx esi edi] +[eax] + jmp G_M18455_IG08 + ;; size=23 bbWeight=0.23 PerfScore 2.84 +G_M18455_IG17: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + ; gcrRegs -[eax] +[esi] + cmp edx, 14 + ja G_M18455_IG44 + ;; size=9 bbWeight=0.18 PerfScore 0.22 +G_M18455_IG18: ; bbWeight=0.18, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + lea ecx, [@RWD00] + mov ecx, dword ptr [ecx+4*edx] + lea eax, G_M18455_IG02 + add ecx, eax + jmp ecx + ;; size=19 bbWeight=0.18 PerfScore 1.02 +G_M18455_IG19: ; bbWeight=0.10, gcVars=0000000000001000 {V33}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs +[ecx edi] + ; GC ptr vars +{V12 V33} + mov edx, gword ptr [ecx+0x10] + ; gcrRegs +[edx] + mov eax, edx + ; gcrRegs +[eax] + jmp SHORT G_M18455_IG15 + ;; size=7 bbWeight=0.10 PerfScore 0.41 +G_M18455_IG20: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz + ; gcrRegs -[eax ecx edx edi] + ; GC ptr vars -{V12 V33} + cmp eax, 4 + ja SHORT G_M18455_IG23 + ;; size=5 bbWeight=0.09 PerfScore 0.11 +G_M18455_IG21: ; bbWeight=0.09, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + lea ecx, [@RWD60] + mov ecx, dword ptr [ecx+4*eax] + lea edx, G_M18455_IG02 + add ecx, edx + jmp ecx + ;; size=19 bbWeight=0.09 PerfScore 0.50 +G_M18455_IG22: ; bbWeight=0.06, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; gcrRegs +[edi]
mov ecx, esi ; gcrRegs +[ecx] call [<unknown method>] @@ -208,118 +276,77 @@ G_M18455_IG15: ; bbWeight=0.06, gcrefRegs=000000C0 {esi edi}, byrefRegs=0 ; gcrRegs -[ecx ebx esi edi] +[eax] jmp G_M18455_IG08 ;; size=38 bbWeight=0.06 PerfScore 0.81
-G_M18455_IG16: ; bbWeight=0.23, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M18455_IG23: ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[eax] +[esi]
- mov edi, gword ptr [esi+0xAC] - ; gcrRegs +[edi] - mov ecx, ebx - call [<unknown method>] - mov ebx, eax - mov ecx, esi - ; gcrRegs +[ecx] - call [<unknown method>] - ; gcrRegs -[ecx] +[eax] - mov gword ptr [ebp-0x1C], eax - ; GC ptr vars +{V33} - mov ecx, gword ptr [esi+0x08] - ; gcrRegs +[ecx] - mov edx, dword ptr [ecx] - cmp edx, 0xD1FFAB1E - jne SHORT G_M18455_IG18 - ;; size=40 bbWeight=0.23 PerfScore 3.40 -G_M18455_IG17: ; bbWeight=0.10, gcVars=0000000000001000 {V33}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; gcrRegs -[eax] - mov ecx, gword ptr [ecx+0x10] - jmp SHORT G_M18455_IG19
...

+6 (+1.21%) : 189302.dasm - System.String:EndsWith(System.String,int):ubyte:this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; ebp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2228
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2228
; 6 inlinees with PGO data; 13 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; @@ -42,8 +42,8 @@ ;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp27 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ; V32 tmp28 [V32,T10] ( 4, 0.02) ubyte -> eax "Inline return value spill temp"
-; V33 tmp29 [V33,T07] ( 6, 0.05) int -> eax "Inlining Arg" -; V34 tmp30 [V34,T09] ( 4, 0.03) byref -> edx single-def "Inlining Arg"
+; V33 tmp29 [V33,T07] ( 6, 0.05) int -> edx "Inlining Arg" +; V34 tmp30 [V34,T09] ( 4, 0.03) byref -> esi single-def "Inlining Arg"
; V35 tmp31 [V35,T05] ( 5, 0.22) int -> eax "Single return block return value" ; V36 tmp32 [V36,T19] ( 2, 0 ) byref -> ebx single-def "field V06._reference (fldOffset=0x0)" P-INDEP ; V37 tmp33 [V37,T25] ( 2, 0 ) int -> edi "field V06._length (fldOffset=0x4)" P-INDEP @@ -91,18 +91,18 @@ G_M10841_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ;; size=16 bbWeight=1 PerfScore 6.00 G_M10841_IG02: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz test esi, esi
- je G_M10841_IG17 - cmp edi, esi
je G_M10841_IG18
- mov eax, dword ptr [esi+0x04] - mov dword ptr [ebp-0x14], eax - test eax, eax
+ cmp edi, esi
je G_M10841_IG19
+ mov edx, dword ptr [esi+0x04] + mov dword ptr [ebp-0x14], edx + test edx, edx + je G_M10841_IG20
cmp ebx, 5 jne SHORT G_M10841_IG08 ;; size=35 bbWeight=1 PerfScore 8.00 G_M10841_IG03: ; bbWeight=0.95, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp dword ptr [edi+0x04], eax
+ cmp dword ptr [edi+0x04], edx
jge SHORT G_M10841_IG11 ;; size=5 bbWeight=0.95 PerfScore 3.81 G_M10841_IG04: ; bbWeight=0.95, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref @@ -131,12 +131,12 @@ G_M10841_IG07: ; bbWeight=0.05, epilog, nogc, extend G_M10841_IG08: ; bbWeight=0.05, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[esi edi] cmp ebx, 5
- ja G_M10841_IG23 - lea edx, [@RWD00] - mov edx, dword ptr [edx+4*ebx]
+ ja G_M10841_IG17 + lea eax, [@RWD00] + mov eax, dword ptr [eax+4*ebx]
lea ecx, G_M10841_IG02
- add edx, ecx - jmp edx
+ add eax, ecx + jmp eax
;; size=28 bbWeight=0.05 PerfScore 0.33 G_M10841_IG09: ; bbWeight=0.05, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref call [<unknown method>] @@ -172,79 +172,49 @@ G_M10841_IG10: ; bbWeight=0.05, gcVars=00000040 {V09}, gcrefRegs=000000C0 G_M10841_IG11: ; bbWeight=0.01, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi edi] mov ecx, dword ptr [edi+0x04]
- sub ecx, eax
+ sub ecx, edx
lea ecx, bword ptr [edi+2*ecx+0x08] ; byrRegs +[ecx]
- lea edx, bword ptr [esi+0x08] - ; byrRegs +[edx] - cmp eax, 8
+ add esi, 8 + ; gcrRegs -[esi] + ; byrRegs +[esi] + cmp edx, 8
jge SHORT G_M10841_IG14 ;; size=17 bbWeight=0.01 PerfScore 0.04
-G_M10841_IG12: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000006 {ecx edx}, byref - ; gcrRegs -[esi edi] - push eax
+G_M10841_IG12: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000042 {ecx esi}, byref + ; gcrRegs -[edi] + push edx + mov edx, esi + ; byrRegs +[edx]
call [<unknown method>]
- ; byrRegs -[ecx edx] - ;; size=7 bbWeight=0.00 PerfScore 0.02
+ ; byrRegs -[ecx edx esi] + ;; size=9 bbWeight=0.00 PerfScore 0.02
G_M10841_IG13: ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref jmp G_M10841_IG06 ;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M10841_IG14: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000006 {ecx edx}, byref, isz - ; byrRegs +[ecx edx] - cmp eax, 16
+G_M10841_IG14: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000042 {ecx esi}, byref, isz + ; byrRegs +[ecx esi] + cmp edx, 16
jl SHORT G_M10841_IG16 ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M10841_IG15: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000006 {ecx edx}, byref, isz - push eax
+G_M10841_IG15: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000042 {ecx esi}, byref, isz + push edx + mov edx, esi + ; byrRegs +[edx]
call [<unknown method>]
- ; byrRegs -[ecx edx]
+ ; byrRegs -[ecx edx esi]
jmp SHORT G_M10841_IG13
- ;; size=9 bbWeight=0.00 PerfScore 0.01 -G_M10841_IG16: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000006 {ecx edx}, byref, isz - ; byrRegs +[ecx edx] - push eax
+ ;; size=11 bbWeight=0.00 PerfScore 0.01 +G_M10841_IG16: ; bbWeight=0.00, gcrefRegs=00000000 {}, byrefRegs=00000042 {ecx esi}, byref, isz + ; byrRegs +[ecx esi] + push edx + mov edx, esi + ; byrRegs +[edx]
call [<unknown method>]
- ; byrRegs -[ecx edx]
+ ; byrRegs -[ecx edx esi]
jmp SHORT G_M10841_IG13
- ;; size=9 bbWeight=0.00 PerfScore 0.01
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
G_M10841_IG17: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
- mov ecx, 0xCE0 - mov edx, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - ; gcrRegs +[eax] - mov ecx, eax - ; gcrRegs +[ecx] - call [System.ArgumentNullException:Throw(System.String)] - ; gcrRegs -[eax ecx] - int3 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M10841_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - cmp ebx, 5 - jbe SHORT G_M10841_IG21 - jmp SHORT G_M10841_IG20 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M10841_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz - cmp ebx, 5 - jbe SHORT G_M10841_IG21 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M10841_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov ecx, 27 - mov edx, 41 - call [System.ThrowHelper:ThrowArgumentException(int,int)] - int3 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M10841_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref - mov eax, 1 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M10841_IG22: ; bbWeight=0, epilog, nogc, extend - lea esp, [ebp-0x0C] - pop ebx - pop esi - pop edi - pop ebp - ret 4 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M10841_IG23: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax] @@ -268,7 +238,44 @@ G_M10841_IG23: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b call CORINFO_HELP_THROW ; gcrRegs -[ecx esi] ;; size=53 bbWeight=0 PerfScore 0.00
-G_M10841_IG24: ; bbWeight=0, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M10841_IG18: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ecx, 0xCE0 + mov edx, 0xD1FFAB1E + call CORINFO_HELP_STRCNS + ; gcrRegs +[eax] + mov ecx, eax + ; gcrRegs +[ecx] + call [System.ArgumentNullException:Throw(System.String)] + ; gcrRegs -[eax ecx] + int3 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M10841_IG19: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp ebx, 5 + jbe SHORT G_M10841_IG22 + jmp SHORT G_M10841_IG21 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M10841_IG20: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz + cmp ebx, 5 + jbe SHORT G_M10841_IG22 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M10841_IG21: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov ecx, 27 + mov edx, 41 + call [System.ThrowHelper:ThrowArgumentException(int,int)] + int3 + ;; size=17 bbWeight=0 PerfScore 0.00 +G_M10841_IG22: ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref + mov eax, 1 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M10841_IG23: ; bbWeight=0, epilog, nogc, extend + lea esp, [ebp-0x0C] + pop ebx + pop esi + pop edi + pop ebp + ret 4 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M10841_IG24: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[eax esi edi] mov ecx, eax ; gcrRegs +[ecx] @@ -312,7 +319,7 @@ G_M10841_IG25: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 G_M10841_IG26: ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs +[esi edi] mov ecx, dword ptr [edi+0x04]
- sub ecx, eax
+ sub ecx, edx
cmp dword ptr [edi+0x04], ecx jb G_M10841_IG04 lea ebx, bword ptr [edi+2*ecx+0x08] @@ -359,6 +366,6 @@ RWD00 dd G_M10841_IG09 - G_M10841_IG02 dd G_M10841_IG03 - G_M10841_IG02
-; Total bytes of code 497, prolog size 9, PerfScore 24.27, instruction count 162, allocated bytes for code 497 (MethodHash=4973d5a6) for method System.String:EndsWith(System.String,int):ubyte:this (Tier1)
+; Total bytes of code 503, prolog size 9, PerfScore 24.27, instruction count 165, allocated bytes for code 503 (MethodHash=4973d5a6) for method System.String:EndsWith(System.String,int):ubyte:this (Tier1)
; ============================================================

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x86.checked.mch 1 0 1 0 -0 +8
benchmarks.run_tiered.windows.x86.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x86.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.windows.x86.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x86.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.x86.Release.mch 3 2 1 0 -12 +6
librariestestsnotieredcompilation.run.windows.x86.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.x86.checked.mch 0 0 0 0 -0 +0
4 2 2 0 -12 +14

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,694 4 24,690 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x86.checked.mch 123,995 42,622 81,373 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.x86.checked.mch 48,297 29,031 19,266 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 585,246 326,478 258,768 0 (0.00%) 0 (0.00%)
libraries.crossgen2.windows.x86.checked.mch 273,595 15 273,580 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x86.checked.mch 307,491 6 307,485 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.x86.Release.mch 638,041 431,750 206,291 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,862 21,931 294,931 0 (0.00%) 0 (0.00%)
realworld.run.windows.x86.checked.mch 36,031 3 36,028 0 (0.00%) 0 (0.00%)
2,354,252 851,840 1,502,412 0 (0.00%) 0 (0.00%)

jit-analyze output

benchmarks.run_pgo.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 48695572 (overridden on cmd)
Total bytes of diff: 48695580 (overridden on cmd)
Total bytes of delta: 8 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
           8 : 111200.dasm (1.33 % of base)

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

Top method regressions (bytes):
           8 (1.33 % of base) : 111200.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)

Top method regressions (percentages):
           8 (1.33 % of base) : 111200.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)

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


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 190251789 (overridden on cmd)
Total bytes of diff: 190251783 (overridden on cmd)
Total bytes of delta: -6 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           6 : 189302.dasm (1.21 % of base)

Top file improvements (bytes):
          -9 : 76126.dasm (-0.53 % of base)
          -3 : 470666.dasm (-1.90 % of base)

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

Top method regressions (bytes):
           6 (1.21 % of base) : 189302.dasm - System.String:EndsWith(System.String,int):ubyte:this (Tier1)

Top method improvements (bytes):
          -9 (-0.53 % of base) : 76126.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          -3 (-1.90 % of base) : 470666.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)

Top method regressions (percentages):
           6 (1.21 % of base) : 189302.dasm - System.String:EndsWith(System.String,int):ubyte:this (Tier1)

Top method improvements (percentages):
          -3 (-1.90 % of base) : 470666.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectReader:Parse(System.Runtime.Serialization.Formatters.Binary.ParseRecord):this (Tier1)
          -9 (-0.53 % of base) : 76126.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)

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