Assembly Diffs

linux arm64

Diffs are based on 2,552,933 contexts (1,022,261 MinOpts, 1,530,672 FullOpts).

MISSED contexts: 1,300 (0.05%)

Overall (-24 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 79,023,784 +0
coreclr_tests.run.linux.arm64.checked.mch 525,847,368 +0
libraries_tests.run.linux.arm64.Release.mch 382,591,448 -24

FullOpts (-24 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 52,190,036 +0
coreclr_tests.run.linux.arm64.checked.mch 169,015,828 +0
libraries_tests.run.linux.arm64.Release.mch 166,098,176 -24

Example diffs

benchmarks.run_pgo.linux.arm64.checked.mch

-4 (-0.53%) : 127862.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,22 +51,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG15
+ cbz w0, G_M35244_IG23
ldr w1, [x19, #0x28] mov w0, #0xD1FFAB1E tst w1, w0
- bne G_M35244_IG15
+ bne G_M35244_IG23
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w20, [x19, #0x2E] sub w1, w20, #3 cmp w1, #5
- bls G_M35244_IG25
+ bls G_M35244_IG19
;; size=16 bbWeight=2.00 PerfScore 10.00 G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w1, w20, #24 cmp w1, #10
- bhi G_M35244_IG15
+ bhi G_M35244_IG23
mov w1, w1 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -77,7 +77,7 @@ G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG11
+ cbz x20, G_M35244_IG10
;; size=8 bbWeight=1.00 PerfScore 4.00 G_M35244_IG06: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -88,7 +88,7 @@ G_M35244_IG06: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M35244_IG10
+ cbnz x0, G_M35244_IG25
mov w21, #1 ;; size=28 bbWeight=0.71 PerfScore 3.22 G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -96,7 +96,7 @@ G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 sub w22, w21, #1 mov x23, x20 ; gcrRegs +[x23]
- cbz x23, G_M35244_IG12
+ cbz x23, G_M35244_IG11
;; size=12 bbWeight=1.00 PerfScore 2.00 G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz ldr x0, [x23] @@ -104,27 +104,21 @@ G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M35244_IG12
+ beq G_M35244_IG11
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M35244_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x23]
- b G_M35244_IG17
+ b G_M35244_IG26
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M35244_IG10: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0] - ldr w21, [x0, #0x10] - b G_M35244_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M35244_IG11: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+G_M35244_IG10: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, wzr b G_M35244_IG07 ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=1.00, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x23]
- cbz x23, G_M35244_IG17
+ cbz x23, G_M35244_IG26
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldrb w0, [x23, #0x2E] sub w1, w0, #26 @@ -132,23 +126,121 @@ G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG18
+ bls G_M35244_IG27
;; size=28 bbWeight=1.00 PerfScore 6.50
-G_M35244_IG14: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x23 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M35244_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19 x23]
+G_M35244_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:ChildCount():int:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + sxtw w20, w0 + mov w21, #1 + b G_M35244_IG16 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M35244_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + mov w1, w21 + movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcr arg pop 0 + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ldr wzr, [x0] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + add w21, w21, #1 + ;; size=56 bbWeight=0 PerfScore 0.00 +G_M35244_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w21, w20 + blt G_M35244_IG15 + ldrb w0, [x19, #0x2E] + cmp w0, #34 + beq G_M35244_IG23 + b G_M35244_IG24 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M35244_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr w0, [x19, #0x20] + str w0, [x19, #0x24] + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M35244_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x24] + cmp w0, #1 + beq G_M35244_IG24 + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x19] + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + cbz x19, G_M35244_IG23 + ldrb w20, [x19, #0x2E] + sub w0, w20, #3 + ; gcrRegs -[x0] + cmp w0, #5 + bhi G_M35244_IG04 + ;; size=60 bbWeight=0 PerfScore 0.00 +G_M35244_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG20: ; bbWeight=0, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40 + br x1 + ; gcr arg pop 0 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] + movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_unix #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M35244_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.01 PerfScore 0.08 -G_M35244_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -164,8 +256,13 @@ G_M35244_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] +[x20]
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20] + ldr w21, [x0, #0x10] + b G_M35244_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0]
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -176,30 +273,30 @@ G_M35244_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w22, w1
- bhs G_M35244_IG27
+ bhs G_M35244_IG21
ldr x0, [x0, #0x08] ldr w1, [x0, #0x08] cmp w22, w1
- bhs G_M35244_IG28
+ bhs G_M35244_IG22
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x23, [x0, w22, UXTW #3] ; gcrRegs +[x23]
- b G_M35244_IG13
+ b G_M35244_IG12
...

+0 (0.00%) : 30717.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Collections.Generic.HashSet`1[System.Canon]):this (Tier1)

@@ -69,22 +69,17 @@ G_M417_IG03: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.60 PerfScore 7.47 -G_M417_IG04: ; bbWeight=0.70, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=0.70 PerfScore 2.79 -G_M417_IG05: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M417_IG07 + ;; size=40 bbWeight=0.60 PerfScore 8.07 +G_M417_IG04: ; bbWeight=0.10, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] mov x22, x20 ; gcrRegs +[x22] ldr w0, [x20, #0x28] cmp w0, #2
- bne G_M417_IG07
+ bne G_M417_IG06
;; size=16 bbWeight=0.10 PerfScore 0.50
-G_M417_IG06: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x10] ; gcrRegs +[x0] mov x1, x21 @@ -101,9 +96,9 @@ G_M417_IG06: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x22, [x22, #0x18] ldr w0, [x22, #0x28] cmp w0, #2
- beq G_M417_IG06
+ beq G_M417_IG05
;; size=52 bbWeight=0.80 PerfScore 16.03
-G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG06: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x22 ; gcrRegs +[x0] mov x1, x21 @@ -116,12 +111,17 @@ G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x3, [x3] blr x3 ; gcrRegs -[x0-x2 x19 x21-x22]
- b G_M417_IG04 - ;; size=36 bbWeight=0.10 PerfScore 0.80 -G_M417_IG08: ; bbWeight=0.40, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.70 +G_M417_IG07: ; bbWeight=0.70, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=0.70 PerfScore 2.79 +G_M417_IG08: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19 x21] cmp w22, #17
- bhi G_M417_IG04
+ bhi G_M417_IG07
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -142,7 +142,7 @@ G_M417_IG09: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00 G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19 x21] @@ -204,7 +204,7 @@ G_M417_IG14: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs= ldr x4, [x4] blr x4 ; gcrRegs -[x1-x3 x19 x21-x22]
- b G_M417_IG04
+ b G_M417_IG07
;; size=36 bbWeight=0 PerfScore 0.00 G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -221,7 +221,7 @@ G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00 G_M417_IG16: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -251,7 +251,7 @@ G_M417_IG16: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=76 bbWeight=0 PerfScore 0.00 G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -267,29 +267,29 @@ G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+RWD00 dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG05 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02
dd G_M417_IG15 - G_M417_IG02 dd G_M417_IG16 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG17 - G_M417_IG02 dd G_M417_IG17 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG15 - G_M417_IG02
-; Total bytes of code 608, prolog size 20, PerfScore 43.12, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
+; Total bytes of code 608, prolog size 20, PerfScore 43.61, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 90462.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Collections.Generic.HashSet`1[System.Canon]):this (Tier1)

@@ -50,7 +50,7 @@ G_M417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n ;; size=32 bbWeight=1 PerfScore 6.00 G_M417_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz bl <unknown method>
- cbz w0, G_M417_IG13
+ cbz w0, G_M417_IG12
ldr w22, [x20, #0x28] cmp w22, #1 bne G_M417_IG08 @@ -69,22 +69,17 @@ G_M417_IG03: ; bbWeight=0.59, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.59 PerfScore 7.38 -G_M417_IG04: ; bbWeight=0.71, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=0.71 PerfScore 2.82 -G_M417_IG05: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M417_IG07 + ;; size=40 bbWeight=0.59 PerfScore 7.97 +G_M417_IG04: ; bbWeight=0.10, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] mov x22, x20 ; gcrRegs +[x22] ldr w0, [x20, #0x28] cmp w0, #2
- bne G_M417_IG07
+ bne G_M417_IG06
;; size=16 bbWeight=0.10 PerfScore 0.49
-G_M417_IG06: ; bbWeight=0.79, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.79, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x10] ; gcrRegs +[x0] mov x1, x21 @@ -101,9 +96,9 @@ G_M417_IG06: ; bbWeight=0.79, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x22, [x22, #0x18] ldr w0, [x22, #0x28] cmp w0, #2
- beq G_M417_IG06
+ beq G_M417_IG05
;; size=52 bbWeight=0.79 PerfScore 15.72
-G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG06: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x22 ; gcrRegs +[x0] mov x1, x21 @@ -116,12 +111,17 @@ G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x3, [x3] blr x3 ; gcrRegs -[x0-x2 x19 x21-x22]
- b G_M417_IG04 - ;; size=36 bbWeight=0.10 PerfScore 0.78 -G_M417_IG08: ; bbWeight=0.41, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.69 +G_M417_IG07: ; bbWeight=0.71, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=0.71 PerfScore 2.82 +G_M417_IG08: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19 x21] cmp w22, #17
- bhi G_M417_IG04
+ bhi G_M417_IG07
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -143,7 +143,7 @@ G_M417_IG09: ; bbWeight=0.02, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0.02 PerfScore 0.23 G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -173,25 +173,9 @@ G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=76 bbWeight=0 PerfScore 0.00 G_M417_IG11: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19 x21] - ldr x1, [x21, #0x80] - ; gcrRegs +[x1] - ldrsb wzr, [x19] - add x2, fp, #16 // [V14 tmp9] - mov x0, x19 - ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x1 x19 x21] - b G_M417_IG04 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19 x21] ldr x1, [x21, #0x88] ; gcrRegs +[x1] @@ -205,25 +189,25 @@ G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00
-G_M417_IG13: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] ldr x0, [x20] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x40]
- cbz x1, G_M417_IG14 - b G_M417_IG15
+ cbz x1, G_M417_IG13 + b G_M417_IG14
;; size=24 bbWeight=0 PerfScore 0.00
-G_M417_IG14: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M417_IG13: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M417_IG14: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x1 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -244,17 +228,17 @@ G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x1, [x0, #0x38] ldr x1, [x1] ldr x2, [x1, #0x48]
- cbz x2, G_M417_IG16
+ cbz x2, G_M417_IG15
mov x0, x2
- b G_M417_IG17
+ b G_M417_IG16
;; size=76 bbWeight=0 PerfScore 0.00
-G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG15: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=16 bbWeight=0 PerfScore 0.00
-G_M417_IG17: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x1, x22 ; gcrRegs +[x1] mov x2, x21 @@ -267,29 +251,45 @@ G_M417_IG17: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs= ldr x4, [x4] blr x4 ; gcrRegs -[x1-x3 x19 x21-x22]
- b G_M417_IG04
+ b G_M417_IG07
;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19 x21] + ldr x1, [x21, #0x80] + ; gcrRegs +[x1] + ldrsb wzr, [x19] + add x2, fp, #16 // [V14 tmp9] + mov x0, x19 + ; gcrRegs +[x0] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x0-x1 x19 x21] + b G_M417_IG07 + ;; size=40 bbWeight=0 PerfScore 0.00 +RWD00 dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG05 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG10 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG11 - G_M417_IG02 dd G_M417_IG11 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG17 - G_M417_IG02 + dd G_M417_IG17 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02
-; Total bytes of code 608, prolog size 20, PerfScore 43.00, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
+; Total bytes of code 608, prolog size 20, PerfScore 43.49, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 24559.dasm - System.Text.RegularExpressions.RegexCompiler+<>cDisplayClass158_0:gEmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)

@@ -56,19 +56,19 @@ G_M17183_IG02: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 ldr w0, [x0, #0x20] ; gcrRegs -[x0] cmp w0, #19
- beq G_M17183_IG24
+ beq G_M17183_IG09
;; size=24 bbWeight=1 PerfScore 13.50 G_M17183_IG03: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz bl <unknown method>
- cbz w0, G_M17183_IG29
+ cbz w0, G_M17183_IG14
ldr w3, [x19, #0x28]
- tbnz w3, #6, G_M17183_IG30
+ tbnz w3, #6, G_M17183_IG15
;; size=16 bbWeight=1 PerfScore 6.00 G_M17183_IG04: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldrb w3, [x19, #0x2E] sub w23, w3, #3 cmp w23, #22
- bne G_M17183_IG07
+ bne G_M17183_IG06
;; size=16 bbWeight=1 PerfScore 5.00 G_M17183_IG05: ; bbWeight=0.56, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref uxtb w3, w21 @@ -84,18 +84,12 @@ G_M17183_IG05: ; bbWeight=0.56, gcrefRegs=580000 {x19 x20 x22}, byrefRegs ldr x4, [x4] blr x4 ; gcrRegs -[x0-x2 x19-x20 x22]
- ;; size=36 bbWeight=0.56 PerfScore 4.21 -G_M17183_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M17183_IG07: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M17183_IG08 + ;; size=40 bbWeight=0.56 PerfScore 4.77 +G_M17183_IG06: ; bbWeight=0.44, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x20 x22] cmp w23, #43
- bhi G_M17183_IG06
+ bhi G_M17183_IG08
mov w2, w23 adr x0, [@RWD00] ldr w0, [x0, x2, LSL #2] @@ -103,7 +97,7 @@ G_M17183_IG07: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=580 add x0, x0, x1 br x0 ;; size=32 bbWeight=0.44 PerfScore 3.29
-G_M17183_IG08: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17183_IG07: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] uxtb w2, w21 mov x0, x20 @@ -117,257 +111,44 @@ G_M17183_IG08: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x4, [x4] blr x4 ; gcrRegs -[x0-x1 x19-x20]
- b G_M17183_IG06 - ;; size=40 bbWeight=0.44 PerfScore 3.73 -G_M17183_IG09: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20 x22] - uxtb w3, w21 - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x22 - ; gcrRegs +[x2] - movz x4, #0xD1FFAB1E // code for <unknown method> - movk x4, #0xD1FFAB1E LSL #16 - movk x4, #0xD1FFAB1E LSL #32 - ldr x4, [x4] - blr x4 - ; gcrRegs -[x0-x2 x19-x20 x22] - b G_M17183_IG06 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M17183_IG10: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20 x22] - uxtb w3, w21 - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x22 - ; gcrRegs +[x2] - movz x4, #0xD1FFAB1E // code for <unknown method> - movk x4, #0xD1FFAB1E LSL #16 - movk x4, #0xD1FFAB1E LSL #32 - ldr x4, [x4] - blr x4 - ; gcrRegs -[x0-x2 x19-x20 x22] - b G_M17183_IG06 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M17183_IG11: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG13: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG14: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitAlternation|4(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG15: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20 x22] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x22 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2 x19-x20 x22] - b G_M17183_IG06 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M17183_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG18: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG19: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20 x22] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x22 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitCapture|8(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode):this - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2 x19-x20 x22] - b G_M17183_IG06 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M17183_IG20: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitPositiveLookaroundAssertion|10(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNegativeLookaroundAssertion|11(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2]
...

+4 (+0.53%) : 24686.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -20,10 +20,10 @@ ; V08 loc7 [V08,T18] ( 5, 0 ) int -> x21 ; V09 loc8 [V09,T19] ( 3, 0 ) ref -> x19 class-hnd exact <System.Text.RegularExpressions.RegexNode> ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T13] ( 4, 3.98) int -> x21 "Inline return value spill temp" ; V13 tmp3 [V13,T15] ( 3, 2.79) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T11] ( 6, 5.96) ref -> x21 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T11] ( 6, 5.96) ref -> x20 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T01] ( 4, 13.92) ref -> x22 "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T12] ( 3, 4.41) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -52,22 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG10
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG10
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=2.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG24
+ bls G_M35244_IG22
;; size=16 bbWeight=2.99 PerfScore 14.94 G_M35244_IG04: ; bbWeight=2.95, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG10
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -78,7 +78,7 @@ G_M35244_IG04: ; bbWeight=2.95, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=1.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbnz x20, G_M35244_IG18
+ cbnz x20, G_M35244_IG10
;; size=8 bbWeight=1.99 PerfScore 7.95 G_M35244_IG06: ; bbWeight=0.97, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov w21, wzr @@ -87,7 +87,7 @@ G_M35244_IG07: ; bbWeight=1.99, gcrefRegs=180000 {x19 x20}, byrefRegs=000 sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG11
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=1.99 PerfScore 3.98 G_M35244_IG08: ; bbWeight=0.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x22] @@ -95,38 +95,68 @@ G_M35244_IG08: ; bbWeight=0.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG11
+ beq G_M35244_IG12
;; size=24 bbWeight=0.99 PerfScore 5.96 G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x22]
- b G_M35244_IG12
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.01 PerfScore 0.05 -G_M35244_IG11: ; bbWeight=1.99, gcVars=0000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20 x22] - cbnz x22, G_M35244_IG22
+G_M35244_IG10: ; bbWeight=1.02, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + mov x1, x20 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + cbz x0, G_M35244_IG14 + ;; size=24 bbWeight=1.02 PerfScore 4.06 +G_M35244_IG11: ; bbWeight=0.76, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ldr w21, [x0, #0x10] + b G_M35244_IG07 + ;; size=8 bbWeight=0.76 PerfScore 3.03 +G_M35244_IG12: ; bbWeight=1.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] +[x22] + cbz x22, G_M35244_IG17
;; size=4 bbWeight=1.99 PerfScore 1.99
-G_M35244_IG12: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.43, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x20, x22 + ; gcrRegs +[x20] + b G_M35244_IG15 + ;; size=8 bbWeight=0.43 PerfScore 0.65 +G_M35244_IG14: ; bbWeight=0.26, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
+ mov w21, #1 + b G_M35244_IG07 + ;; size=8 bbWeight=0.26 PerfScore 0.38 +G_M35244_IG15: ; bbWeight=1.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x20, #0x2E] + sub w1, w0, #26 + sub w2, w0, #33 + cmp w0, #24 + ccmp w1, #1, z, ne + ccmp w2, #1, z, hi + bhi G_M35244_IG21 + ;; size=28 bbWeight=1.99 PerfScore 12.92 +G_M35244_IG16: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + b G_M35244_IG27 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M35244_IG17: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG15
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.55 PerfScore 2.33
-G_M35244_IG13: ; bbWeight=0.78, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.78, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG15
+ beq G_M35244_IG20
;; size=24 bbWeight=0.78 PerfScore 4.66
-G_M35244_IG14: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -136,56 +166,59 @@ G_M35244_IG14: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.39 PerfScore 0.78
-G_M35244_IG15: ; bbWeight=1.55, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.55, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG26
+ bhs G_M35244_IG34
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG27
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x21, [x0, w21, UXTW #3] - ; gcrRegs +[x21] - ;; size=36 bbWeight=1.55 PerfScore 24.08 -G_M35244_IG16: ; bbWeight=1.99, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22]
+ ldr x20, [x0, w21, UXTW #3] + ; gcrRegs +[x20] + b G_M35244_IG15 + ;; size=40 bbWeight=1.55 PerfScore 25.63 +G_M35244_IG21: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19 x22]
; byrRegs -[x0]
- ldrb w0, [x21, #0x2E] - sub w1, w0, #26 - sub w2, w0, #33 - cmp w0, #24 - ccmp w1, #1, z, ne - ccmp w2, #1, z, hi - bls G_M35244_IG28 - ;; size=28 bbWeight=1.99 PerfScore 12.92 -G_M35244_IG17: ; bbWeight=1.99, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov x19, x21
+ mov x19, x20
; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=1.99 PerfScore 2.98
-G_M35244_IG18: ; bbWeight=1.02, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x21] +[x20] - mov x1, x20 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[x1] +[x0]
+G_M35244_IG22: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ;; size=20 bbWeight=0.03 PerfScore 0.17 +G_M35244_IG23: ; bbWeight=0.03, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + br x1
; gcr arg pop 0
- cbz x0, G_M35244_IG23 - ;; size=24 bbWeight=1.02 PerfScore 4.06 -G_M35244_IG19: ; bbWeight=0.76, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - b G_M35244_IG21 - ;; size=4 bbWeight=0.76 PerfScore 0.76 -G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20]
+ ;; size=16 bbWeight=0.03 PerfScore 0.13 +G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19]
mov x0, x19 ; gcrRegs +[x0] mov w1, wzr @@ -200,80 +233,34 @@ G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG21: ; bbWeight=0.76, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x20] - ldr w21, [x0, #0x10] - b G_M35244_IG07 - ;; size=8 bbWeight=0.76 PerfScore 3.03 -G_M35244_IG22: ; bbWeight=0.43, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20] +[x22]
...

coreclr_tests.run.linux.arm64.checked.mch

+0 (0.00%) : 515469.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,50 +89,50 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -149,26 +141,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -182,24 +174,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=28 bbWeight=0.32 PerfScore 2.08
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -209,14 +201,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -226,11 +218,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -244,7 +242,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -255,7 +253,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -303,7 +301,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -345,7 +343,7 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ...

+0 (0.00%) : 531705.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,35 +75,35 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG05: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov w21, #1 ;; size=4 bbWeight=0.45 PerfScore 0.23
-G_M35244_IG07: ; bbWeight=2.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=2.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2.00 PerfScore 4.00
-G_M35244_IG08: ; bbWeight=1.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1.00 PerfScore 6.00
-G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -120,28 +112,28 @@ G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG06
+ cbz x0, G_M35244_IG05
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG12: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10]
- b G_M35244_IG07
+ b G_M35244_IG06
;; size=8 bbWeight=1.09 PerfScore 4.36
-G_M35244_IG13: ; bbWeight=2.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2.00 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG07
+ b G_M35244_IG06
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -150,26 +142,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -179,24 +171,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.32 PerfScore 0.64
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -206,14 +198,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -223,11 +215,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -241,7 +239,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -252,7 +250,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -300,7 +298,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] ...

+0 (0.00%) : 332018.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,50 +89,50 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -149,26 +141,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -182,24 +174,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=28 bbWeight=0.32 PerfScore 2.08
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -209,14 +201,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -226,11 +218,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -244,7 +242,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -255,7 +253,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -303,7 +301,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -345,7 +343,7 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ...

+0 (0.00%) : 520875.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,50 +89,50 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -149,26 +141,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -178,24 +170,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.32 PerfScore 0.64
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -205,14 +197,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -222,11 +214,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -240,7 +238,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -251,7 +249,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -299,7 +297,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -341,7 +339,7 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ...

+0 (0.00%) : 485388.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG21
+ bls G_M35244_IG20
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,95 +89,95 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG24
+ bls G_M35244_IG23
;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG20
+ cbz x22, G_M35244_IG19
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- bne G_M35244_IG23
+ bne G_M35244_IG22
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG31
+ bhs G_M35244_IG30
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG32
+ bhs G_M35244_IG31
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -195,14 +187,14 @@ G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG21: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG22: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x20] mov x1, x20 ; gcrRegs +[x1] @@ -211,20 +203,20 @@ G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180 ; gcr arg pop 0 mov x22, x0 ; gcrRegs +[x22]
- b G_M35244_IG20
+ b G_M35244_IG19
;; size=16 bbWeight=0.32 PerfScore 0.96
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x22] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG25
+ cbz x0, G_M35244_IG24
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -270,9 +262,9 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -285,9 +277,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG28
+ b G_M35244_IG27
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -307,19 +299,19 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w21, w21, #1 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
...

+0 (0.00%) : 646520.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,50 +89,50 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -149,26 +141,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -182,24 +174,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=28 bbWeight=0.32 PerfScore 2.08
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -209,14 +201,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -226,11 +218,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -244,7 +242,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -255,7 +253,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -303,7 +301,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -345,7 +343,7 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ...

libraries_tests.run.linux.arm64.Release.mch

-12 (-0.46%) : 455462.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)

@@ -95,13 +95,13 @@ G_M38617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=36 bbWeight=1 PerfScore 7.00 G_M38617_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x19, G_M38617_IG18
+ cbz x19, G_M38617_IG36
ldr x0, [x20] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M38617_IG20
+ bne G_M38617_IG38
ldr x0, [x20, #0x10] ; gcrRegs +[x0] ldr x1, [x0] @@ -109,15 +109,15 @@ G_M38617_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=180 movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M38617_IG19
+ bne G_M38617_IG37
ldr w21, [x0, #0x0C] ;; size=60 bbWeight=1 PerfScore 19.00 G_M38617_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] cmp w21, #2
- bgt G_M38617_IG22
+ bgt G_M38617_IG12
cmp w21, #1
- bne G_M38617_IG21
+ bne G_M38617_IG11
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> @@ -136,7 +136,7 @@ G_M38617_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M38617_IG15
+ bne G_M38617_IG10
;; size=72 bbWeight=1 PerfScore 16.50 G_M38617_IG04: ; bbWeight=0.93, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref ldr w20, [x0, #0x0C] @@ -144,11 +144,11 @@ G_M38617_IG04: ; bbWeight=0.93, gcrefRegs=480001 {x0 x19 x22}, byrefRegs= G_M38617_IG05: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] cmp w20, #1
- beq G_M38617_IG36
+ beq G_M38617_IG33
cmp w20, #2
- beq G_M38617_IG35
+ beq G_M38617_IG32
sub w20, w20, #12
- cbnz w20, G_M38617_IG30
+ cbnz w20, G_M38617_IG27
;; size=24 bbWeight=1 PerfScore 4.50 G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V00} @@ -156,7 +156,7 @@ G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=480000 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x22, x0
- beq G_M38617_IG33
+ beq G_M38617_IG30
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -239,7 +239,7 @@ G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=480000 ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w1, w0
- bge G_M38617_IG34
+ bge G_M38617_IG31
;; size=228 bbWeight=1 PerfScore 51.00 G_M38617_IG07: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x08] @@ -253,95 +253,18 @@ G_M38617_IG07: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 { bl CORINFO_HELP_ARRADDR_ST ; gcrRegs -[x0 x2 x22] ; gcr arg pop 0
- b G_M38617_IG16 - ;; size=32 bbWeight=1 PerfScore 10.50 -G_M38617_IG08: ; bbWeight=0, gcVars=0000000000140100 {V00 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19] - ; GC ptr vars +{V00 V06 V08 V09 V18 V20} - b G_M38617_IG10 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M38617_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x10] // [V09 loc6]
+ ;; size=28 bbWeight=1 PerfScore 9.50 +G_M38617_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19
; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x1, [x11] - blr x1 - ; gcr arg pop 0 - movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryRuntime:EnsureNavigator(System.Object):System.Xml.XPath.XPathNavigator - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - mov x1, x0 - ; gcrRegs +[x1] - ldr x0, [fp, #0x18] // [V06 loc3] - movz x2, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:Add(System.__Canon):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - ;; size=72 bbWeight=0 PerfScore 0.00 -G_M38617_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x10] // [V09 loc6] - ; gcrRegs +[x0] - movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbnz w0, G_M38617_IG09 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M38617_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x28] // [V67 PSPSym] - bl G_M38617_IG39 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M38617_IG12: ; bbWeight=0, nogc, extend - nop - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M38617_IG13: ; bbWeight=0, gcVars=0000000000040100 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V08 V09 V18 V20} - ldr x0, [fp, #0x18] // [V06 loc3] - ; gcrRegs +[x0] - mov x19, x0 - ; gcrRegs +[x19] - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M38617_IG14: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - ; GC ptr vars -{V06} - mov x1, x19 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_CHKCASTCLASS - ; gcrRegs -[x1 x19] +[x0] - ; gcr arg pop 0 - ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x1, [x2, #0x68] - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryNodeSequence:DocOrderDistinct(System.Collections.Generic.IComparer`1[System.Xml.XPath.XPathNavigator]):System.Xml.Xsl.Runtime.XmlQueryNodeSequence:this - ; gcrRegs -[x2] - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - ldr wzr, [x0] - ; GC ptr vars -{V00} - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - b G_M38617_IG16 - ;; size=60 bbWeight=0 PerfScore 0.00 -G_M38617_IG15: ; bbWeight=0.07, gcVars=0000000000000100 {V00}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38617_IG09: ; bbWeight=1, epilog, nogc, extend + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=1 PerfScore 4.00 +G_M38617_IG10: ; bbWeight=0.07, gcVars=0000000000000100 {V00}, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x22] ; GC ptr vars +{V00 V08} ldr x1, [x0] @@ -353,96 +276,10 @@ G_M38617_IG15: ; bbWeight=0.07, gcVars=0000000000000100 {V00}, gcrefRegs= sxtw w20, w0 b G_M38617_IG05 ;; size=24 bbWeight=0.07 PerfScore 0.81
-G_M38617_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x22] - ; GC ptr vars -{V00 V08} - mov x0, x19 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M38617_IG17: ; bbWeight=1, epilog, nogc, extend - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=1 PerfScore 4.00 -G_M38617_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x19] - movz x0, #0xD1FFAB1E // code for <unknown method> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov x1, #1 - bl CORINFO_HELP_NEWARR_1_OBJ - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x20, x0 - ; gcrRegs +[x20] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - str x0, [x20, #0x10] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x22, x0 - ; gcrRegs +[x22] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x20 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2 x19-x20] - ; gcr arg pop 0 - mov x0, x22 - ; gcrRegs +[x0] - bl CORINFO_HELP_THROW - ; gcrRegs -[x0 x22] - ; gcr arg pop 0
...

-4 (-0.43%) : 669072.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 27648
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 27648
; 3 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -77,13 +77,9 @@ G_M57106_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x20, x0
- bne G_M57106_IG04
+ beq G_M57106_IG10
;; size=24 bbWeight=1 PerfScore 6.00
-G_M57106_IG03: ; bbWeight=0.48, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov w21, #9 - b G_M57106_IG05 - ;; size=8 bbWeight=0.48 PerfScore 0.72 -G_M57106_IG04: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M57106_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x20, #0x58] @@ -93,12 +89,12 @@ G_M57106_IG04: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcr arg pop 0 sxtw w21, w0 ;; size=20 bbWeight=0.52 PerfScore 4.16
-G_M57106_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w22, w21, #4 cmp w22, #5
- bne G_M57106_IG14
+ bne G_M57106_IG12
;; size=12 bbWeight=1 PerfScore 2.00
-G_M57106_IG06: ; bbWeight=0.84, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG05: ; bbWeight=0.84, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -111,21 +107,9 @@ G_M57106_IG06: ; bbWeight=0.84, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x20, x1
- bne G_M57106_IG08
+ beq G_M57106_IG11
;; size=40 bbWeight=0.84 PerfScore 5.04
-G_M57106_IG07: ; bbWeight=0.35, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_TypeArgumentsWithAnnotations():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - b G_M57106_IG09 - ;; size=28 bbWeight=0.35 PerfScore 2.47 -G_M57106_IG08: ; bbWeight=0.49, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+G_M57106_IG06: ; bbWeight=0.49, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
ldr x1, [x20, #0xF0] ldr x1, [x1, #0x18] blr x1 @@ -133,7 +117,7 @@ G_M57106_IG08: ; bbWeight=0.49, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov x19, x0 ; gcrRegs +[x19] ;; size=16 bbWeight=0.49 PerfScore 3.65
-G_M57106_IG09: ; bbWeight=0.84, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG07: ; bbWeight=0.84, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -143,7 +127,7 @@ G_M57106_IG09: ; bbWeight=0.84, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr w1, [x19, #0x08] cbnz w1, G_M57106_IG16 ;; size=24 bbWeight=0.84 PerfScore 7.14
-G_M57106_IG10: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57106_IG08: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20] movz x1, #0xD1FFAB1E // box for <unknown class>:<unknown field> movk x1, #0xD1FFAB1E LSL #16 @@ -153,7 +137,7 @@ G_M57106_IG10: ; bbWeight=0.79, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr x0, [x1, #0x08] ; gcrRegs +[x0] ;; size=20 bbWeight=0.79 PerfScore 5.89
-G_M57106_IG11: ; bbWeight=0.84, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M57106_IG09: ; bbWeight=0.84, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldr x25, [sp, #0x58] ldp x23, x24, [sp, #0x48] @@ -162,27 +146,27 @@ G_M57106_IG11: ; bbWeight=0.84, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.84 PerfScore 5.88
-G_M57106_IG12: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E // box for <unknown class>:<unknown field> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - ; gcrRegs +[x0] - ldr x0, [x0, #0x08] - ;; size=20 bbWeight=0.16 PerfScore 1.20 -G_M57106_IG13: ; bbWeight=0.16, epilog, nogc, extend - ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=24 bbWeight=0.16 PerfScore 1.12 -G_M57106_IG14: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57106_IG10: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
+ mov w21, #9 + b G_M57106_IG04 + ;; size=8 bbWeight=0.48 PerfScore 0.72 +G_M57106_IG11: ; bbWeight=0.35, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] +[x0] + movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_TypeArgumentsWithAnnotations():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + b G_M57106_IG07 + ;; size=28 bbWeight=0.35 PerfScore 2.47 +G_M57106_IG12: ; bbWeight=0.16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0]
cmp w22, #7
- bhi G_M57106_IG15
+ bhi G_M57106_IG13
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -190,13 +174,29 @@ G_M57106_IG14: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=800 add x1, x1, x2 br x1 ;; size=32 bbWeight=0.16 PerfScore 1.20
-G_M57106_IG15: ; bbWeight=0.16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG13: ; bbWeight=0.16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, #15 bne G_M57106_IG34
- b G_M57106_IG12 - ;; size=12 bbWeight=0.16 PerfScore 0.40 -G_M57106_IG16: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20]
+ ;; size=8 bbWeight=0.16 PerfScore 0.24 +G_M57106_IG14: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + movz x0, #0xD1FFAB1E // box for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + ; gcrRegs +[x0] + ldr x0, [x0, #0x08] + ;; size=20 bbWeight=0.16 PerfScore 1.20 +G_M57106_IG15: ; bbWeight=0.16, epilog, nogc, extend + ldr x25, [sp, #0x58] + ldp x23, x24, [sp, #0x48] + ldp x21, x22, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=24 bbWeight=0.16 PerfScore 1.12 +G_M57106_IG16: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0] +[x19-x20]
sxtw x1, w1 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -209,13 +209,13 @@ G_M57106_IG16: ; bbWeight=0.05, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov w23, wzr ldr w24, [x21, #0x08] cmp w24, #0
- ble G_M57106_IG24
+ ble G_M57106_IG25
;; size=40 bbWeight=0.05 PerfScore 0.46 G_M57106_IG17: ; bbWeight=0.03, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr w1, [x19, #0x08] cmp w1, w24
- blt G_M57106_IG25
+ blt G_M57106_IG26
;; size=12 bbWeight=0.03 PerfScore 0.12 G_M57106_IG18: ; bbWeight=0.05, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov w1, #24 @@ -231,8 +231,8 @@ G_M57106_IG18: ; bbWeight=0.05, gcrefRegs=380000 {x19 x20 x21}, byrefRegs movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M57106_IG36 - cbz x0, G_M57106_IG22
+ bne G_M57106_IG37 + cbz x0, G_M57106_IG23
;; size=52 bbWeight=0.05 PerfScore 1.11 G_M57106_IG19: ; bbWeight=0.05, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x22] @@ -241,7 +241,7 @@ G_M57106_IG19: ; bbWeight=0.05, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byr movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M57106_IG35
+ bne G_M57106_IG36
;; size=24 bbWeight=0.05 PerfScore 0.32 G_M57106_IG20: ; bbWeight=0.05, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -259,14 +259,18 @@ G_M57106_IG21: ; bbWeight=0.05, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR add w23, w23, #1 cmp w24, w23 bgt G_M57106_IG18
- b G_M57106_IG24 - ;; size=28 bbWeight=0.05 PerfScore 0.27 -G_M57106_IG22: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.05 PerfScore 0.22 +G_M57106_IG22: ; bbWeight=0.03, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19-x20] + b G_M57106_IG25 + ;; size=4 bbWeight=0.03 PerfScore 0.03 +G_M57106_IG23: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19-x20]
mov x2, xzr ; gcrRegs +[x2] b G_M57106_IG21 ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG23: ; bbWeight=0.00, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG24: ; bbWeight=0.00, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
sxtw x1, w23 mov x0, x21 ; gcrRegs +[x0] @@ -275,19 +279,19 @@ G_M57106_IG23: ; bbWeight=0.00, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR ; gcr arg pop 0 add w23, w23, #1 cmp w24, w23
- bgt G_M57106_IG25
+ bgt G_M57106_IG26
;; size=24 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG24: ; bbWeight=0.05, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57106_IG25: ; bbWeight=0.05, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20] mov x0, x21 ; gcrRegs +[x0]
- b G_M57106_IG11
+ b G_M57106_IG09
;; size=8 bbWeight=0.05 PerfScore 0.08
-G_M57106_IG25: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG26: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
...

-4 (-0.35%) : 624473.dasm - System.Collections.Concurrent.ConcurrentQueue`1+d__26[long]:MoveNext():ubyte:this (Tier1)

@@ -98,7 +98,7 @@ G_M37297_IG05: ; bbWeight=0.95, gcrefRegs=280000 {x19 x21}, byrefRegs=000 ; gcrRegs +[x0] ldr w14, [x0, #0x08] cmp w22, w14
- bhs G_M37297_IG32
+ bhs G_M37297_IG31
add x0, x0, x24 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -108,12 +108,12 @@ G_M37297_IG05: ; bbWeight=0.95, gcrefRegs=280000 {x19 x21}, byrefRegs=000 ldr w14, [x21, #0x18] and w0, w0, w14 cmp w0, w23
- bne G_M37297_IG39
+ bne G_M37297_IG38
ldr x0, [x21, #0x08] ; gcrRegs +[x0] ldr w14, [x0, #0x08] cmp w22, w14
- bhs G_M37297_IG32
+ bhs G_M37297_IG31
ldr x0, [x0, x24] ; gcrRegs -[x0] str x0, [x19, #0x20] @@ -139,13 +139,13 @@ G_M37297_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=800 add w24, w14, #1 str w24, [x19, #0x38] cmp w24, w15
- blt G_M37297_IG38
+ blt G_M37297_IG37
;; size=28 bbWeight=0.05 PerfScore 0.37 G_M37297_IG09: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldp x14, x0, [x19, #0x08] ; gcrRegs +[x0 x14] cmp x14, x0
- beq G_M37297_IG30
+ beq G_M37297_IG25
ldr x1, [x14, #0x10] ; gcrRegs +[x1] add x14, x19, #24 @@ -220,7 +220,7 @@ G_M37297_IG15: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ;; size=4 bbWeight=0.00 PerfScore 0.00 G_M37297_IG16: ; bbWeight=0.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz cmp w20, #5
- bhi G_M37297_IG30
+ bhi G_M37297_IG25
mov w0, w20 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -233,7 +233,7 @@ G_M37297_IG17: ; bbWeight=0.00, gcrefRegs=480000 {x19 x22}, byrefRegs=000 str w23, [x19, #0x38] ldr w0, [x22, #0x08] cmp w0, w23
- ble G_M37297_IG28
+ ble G_M37297_IG29
;; size=16 bbWeight=0.00 PerfScore 0.01 G_M37297_IG18: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x22] @@ -267,7 +267,7 @@ G_M37297_IG19: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, bgt G_M37297_IG18 ;; size=40 bbWeight=0.03 PerfScore 0.52 G_M37297_IG20: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M37297_IG28
+ b G_M37297_IG29
;; size=4 bbWeight=0.00 PerfScore 0.00 G_M37297_IG21: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x14, [x19, #0x18] @@ -301,7 +301,7 @@ G_M37297_IG22: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, str wzr, [x19, #0x38] ldr w1, [x19, #0x38] cmp w1, w0
- bge G_M37297_IG30
+ bge G_M37297_IG25
;; size=44 bbWeight=0.00 PerfScore 0.02 G_M37297_IG23: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x10] @@ -331,9 +331,16 @@ G_M37297_IG24: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ;; size=32 bbWeight=0.01 PerfScore 0.14 G_M37297_IG25: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x19]
- b G_M37297_IG30
+ mov w0, wzr
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M37297_IG26: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37297_IG26: ; bbWeight=0.00, epilog, nogc, extend + ldp x23, x24, [sp, #0x40] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=20 bbWeight=0.00 PerfScore 0.00 +G_M37297_IG27: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19] movn w0, #0 str w0, [x19, #0x28] @@ -380,13 +387,13 @@ G_M37297_IG26: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldp x0, x1, [x19, #0x08] ; gcrRegs +[x0-x1] cmp x0, x1
- beq G_M37297_IG33
+ beq G_M37297_IG32
add x0, x0, #0xD1FFAB1E ; gcrRegs -[x0] ; byrRegs +[x0] ldapr w21, [x0] ;; size=140 bbWeight=0.00 PerfScore 0.06
-G_M37297_IG27: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37297_IG28: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1] ; byrRegs -[x0] ldr x0, [x19, #0x08] @@ -406,44 +413,34 @@ G_M37297_IG27: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, and w0, w1, w0 str w0, [x19, #0x34] cmp w23, w0
- blt G_M37297_IG34
+ blt G_M37297_IG33
b G_M37297_IG17 ;; size=64 bbWeight=0.00 PerfScore 0.02
-G_M37297_IG28: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37297_IG29: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] str wzr, [x19, #0x38] ldp w1, w0, [x19, #0x34] cmp w0, w1
- blt G_M37297_IG38
+ blt G_M37297_IG37
;; size=16 bbWeight=0.00 PerfScore 0.01
-G_M37297_IG29: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37297_IG30: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
b G_M37297_IG09 ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M37297_IG30: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37297_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- mov w0, wzr - ;; size=4 bbWeight=0.00 PerfScore 0.00 -G_M37297_IG31: ; bbWeight=0.00, epilog, nogc, extend - ldp x23, x24, [sp, #0x40] - ldp x21, x22, [sp, #0x30] - ldp x19, x20, [sp, #0x20] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=20 bbWeight=0.00 PerfScore 0.00 -G_M37297_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M37297_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37297_IG32: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x19] ldr w21, [x19, #0x2C]
- b G_M37297_IG27
+ b G_M37297_IG28 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M37297_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + str w23, [x19, #0x38] + b G_M37297_IG36
;; size=8 bbWeight=0 PerfScore 0.00 G_M37297_IG34: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- str w23, [x19, #0x38] - b G_M37297_IG37 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M37297_IG35: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x19, #0x38] @@ -459,20 +456,20 @@ G_M37297_IG35: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by str w0, [x19, #0x28] b G_M37297_IG06 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M37297_IG36: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37297_IG35: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
movn w0, #0 str w0, [x19, #0x28] ldr w0, [x19, #0x38] add w24, w0, #1 str w24, [x19, #0x38] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M37297_IG37: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M37297_IG36: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldp w1, w0, [x19, #0x34] cmp w0, w1
- blt G_M37297_IG35
+ blt G_M37297_IG34
b G_M37297_IG09 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M37297_IG38: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M37297_IG37: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x19, #0x38] @@ -488,7 +485,7 @@ G_M37297_IG38: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by str w0, [x19, #0x28] b G_M37297_IG06 ;; size=44 bbWeight=0 PerfScore 0.00
-G_M37297_IG39: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M37297_IG38: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x21] add x0, fp, #24 // [V16 tmp13] mov w1, #20 @@ -500,15 +497,15 @@ G_M37297_IG39: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; gcr arg pop 0 b G_M37297_IG05 ;; size=32 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M37297_IG26 - G_M37297_IG02 - dd G_M37297_IG36 - G_M37297_IG02
+RWD00 dd G_M37297_IG27 - G_M37297_IG02 + dd G_M37297_IG35 - G_M37297_IG02
dd G_M37297_IG19 - G_M37297_IG02 dd G_M37297_IG08 - G_M37297_IG02 dd G_M37297_IG03 - G_M37297_IG02 dd G_M37297_IG24 - G_M37297_IG02
-; Total bytes of code 1152, prolog size 24, PerfScore 72.97, instruction count 288, allocated bytes for code 1152 (MethodHash=bc196e4e) for method System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[long]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 1148, prolog size 24, PerfScore 72.97, instruction count 287, allocated bytes for code 1148 (MethodHash=bc196e4e) for method System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[long]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -519,7 +516,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 288 (0x00120) Actual length = 1152 (0x000480)
+ Function Length : 287 (0x0011f) Actual length = 1148 (0x00047c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 663208.dasm - System.Text.RegularExpressions.Tests.RegexHelpers:OptionsFromEngine(int):int (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4808
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4808
; 4 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -45,9 +45,18 @@ G_M57613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w19, w0 ;; size=36 bbWeight=1 PerfScore 7.00 G_M57613_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cbz w19, G_M57613_IG04
+ cbnz w19, G_M57613_IG05
;; size=4 bbWeight=1 PerfScore 1.00
-G_M57613_IG03: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57613_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, wzr + ;; size=4 bbWeight=0.62 PerfScore 0.31 +G_M57613_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x21, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M57613_IG05: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w19, #3 bhi G_M57613_IG08 mov w0, w19 @@ -57,22 +66,13 @@ G_M57613_IG03: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr add x1, x1, x2 br x1 ;; size=32 bbWeight=0.38 PerfScore 2.82
-G_M57613_IG04: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, wzr - ;; size=4 bbWeight=0.62 PerfScore 0.31 -G_M57613_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x21, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M57613_IG06: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57613_IG06: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #8
- b G_M57613_IG05
+ b G_M57613_IG04
;; size=8 bbWeight=0.36 PerfScore 0.55 G_M57613_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #0xD1FFAB1E
- b G_M57613_IG05
+ b G_M57613_IG04
;; size=8 bbWeight=0.01 PerfScore 0.02 G_M57613_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #16 // [V02 loc1] @@ -172,7 +172,7 @@ G_M57613_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] brk_unix #0 ;; size=112 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57613_IG04 - G_M57613_IG02
+RWD00 dd G_M57613_IG03 - G_M57613_IG02
dd G_M57613_IG06 - G_M57613_IG02 dd G_M57613_IG07 - G_M57613_IG02 dd G_M57613_IG06 - G_M57613_IG02

+0 (0.00%) : 663296.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Collections.Generic.HashSet`1[System.Canon]):this (Tier1)

@@ -53,7 +53,7 @@ G_M417_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 cbz w0, G_M417_IG12 ldr w22, [x20, #0x28] cmp w22, #1
- bne G_M417_IG08
+ bne G_M417_IG09
;; size=20 bbWeight=1 PerfScore 6.50 G_M417_IG03: ; bbWeight=0.76, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x21] @@ -69,22 +69,17 @@ G_M417_IG03: ; bbWeight=0.76, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.76 PerfScore 9.46 -G_M417_IG04: ; bbWeight=0.86, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=0.86 PerfScore 3.42 -G_M417_IG05: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M417_IG08 + ;; size=40 bbWeight=0.76 PerfScore 10.21 +G_M417_IG04: ; bbWeight=0.05, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] mov x22, x20 ; gcrRegs +[x22] ldr w0, [x20, #0x28] cmp w0, #2
- bne G_M417_IG07
+ bne G_M417_IG06
;; size=16 bbWeight=0.05 PerfScore 0.23
-G_M417_IG06: ; bbWeight=0.86, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.86, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x10] ; gcrRegs +[x0] mov x1, x21 @@ -101,9 +96,9 @@ G_M417_IG06: ; bbWeight=0.86, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x22, [x22, #0x18] ldr w0, [x22, #0x28] cmp w0, #2
- beq G_M417_IG06
+ beq G_M417_IG05
;; size=52 bbWeight=0.86 PerfScore 17.27
-G_M417_IG07: ; bbWeight=0.05, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG06: ; bbWeight=0.05, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x22 ; gcrRegs +[x0] mov x1, x21 @@ -116,52 +111,9 @@ G_M417_IG07: ; bbWeight=0.05, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x3, [x3] blr x3 ; gcrRegs -[x0-x2 x19 x21-x22]
- b G_M417_IG04
+ b G_M417_IG08
;; size=36 bbWeight=0.05 PerfScore 0.37
-G_M417_IG08: ; bbWeight=0.24, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19 x21] - cmp w22, #17 - bhi G_M417_IG04 - mov w2, w22 - adr x0, [@RWD00] - ldr w0, [x0, x2, LSL #2] - adr x1, [G_M417_IG02] - add x0, x0, x1 - br x0 - ;; size=32 bbWeight=0.24 PerfScore 1.83 -G_M417_IG09: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - ldr x0, [x20, #0x10] - ; gcrRegs +[x0] - mov x1, x21 - ; gcrRegs +[x1] - mov x2, x19 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - ldr wzr, [x0] - blr x3 - ; gcrRegs -[x0-x2 x19 x21] - b G_M417_IG04 - ;; size=40 bbWeight=0.04 PerfScore 0.58 -G_M417_IG10: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19 x21] - ldr x1, [x21, #0x88] - ; gcrRegs +[x1] - ldrsb wzr, [x19] - add x2, fp, #32 // [V10 tmp5] - mov x0, x19 - ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x1 x19 x21] - b G_M417_IG04 - ;; size=40 bbWeight=0.01 PerfScore 0.11 -G_M417_IG11: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M417_IG07: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19 x21] ldr x1, [x21, #0x80] ; gcrRegs +[x1] @@ -175,8 +127,56 @@ G_M417_IG11: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04 - ;; size=40 bbWeight=0.00 PerfScore 0.02
+ ;; size=36 bbWeight=0.00 PerfScore 0.02 +G_M417_IG08: ; bbWeight=0.86, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=0.86 PerfScore 3.42 +G_M417_IG09: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19 x21] + cmp w22, #17 + bhi G_M417_IG08 + mov w2, w22 + adr x0, [@RWD00] + ldr w0, [x0, x2, LSL #2] + adr x1, [G_M417_IG02] + add x0, x0, x1 + br x0 + ;; size=32 bbWeight=0.24 PerfScore 1.83 +G_M417_IG10: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ldr x0, [x20, #0x10] + ; gcrRegs +[x0] + mov x1, x21 + ; gcrRegs +[x1] + mov x2, x19 + ; gcrRegs +[x2] + movz x3, #0xD1FFAB1E // code for System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + ldr wzr, [x0] + blr x3 + ; gcrRegs -[x0-x2 x19 x21] + b G_M417_IG08 + ;; size=40 bbWeight=0.04 PerfScore 0.58 +G_M417_IG11: ; bbWeight=0.01, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19 x21] + ldr x1, [x21, #0x88] + ; gcrRegs +[x1] + ldrsb wzr, [x19] + add x2, fp, #32 // [V10 tmp5] + mov x0, x19 + ; gcrRegs +[x0] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x0-x1 x19 x21] + b G_M417_IG08 + ;; size=40 bbWeight=0.01 PerfScore 0.11
G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19 x21] ldr x0, [x20] @@ -237,7 +237,7 @@ G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs= ldr x4, [x4] blr x4 ; gcrRegs -[x1-x3 x19 x21-x22]
- b G_M417_IG04
+ b G_M417_IG08
;; size=36 bbWeight=0 PerfScore 0.00 G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -267,29 +267,29 @@ G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG08
;; size=76 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+RWD00 dd G_M417_IG08 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG05 - G_M417_IG02 - dd G_M417_IG09 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02 + dd G_M417_IG10 - G_M417_IG02
dd G_M417_IG17 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG10 - G_M417_IG02 - dd G_M417_IG10 - G_M417_IG02 - dd G_M417_IG10 - G_M417_IG02 - dd G_M417_IG10 - G_M417_IG02
+ dd G_M417_IG08 - G_M417_IG02 + dd G_M417_IG08 - G_M417_IG02
dd G_M417_IG11 - G_M417_IG02 dd G_M417_IG11 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG09 - G_M417_IG02
+ dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG08 - G_M417_IG02 + dd G_M417_IG08 - G_M417_IG02 + dd G_M417_IG08 - G_M417_IG02 + dd G_M417_IG08 - G_M417_IG02 + dd G_M417_IG10 - G_M417_IG02
-; Total bytes of code 608, prolog size 20, PerfScore 45.79, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
+; Total bytes of code 608, prolog size 20, PerfScore 46.55, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 664632.dasm - System.Text.RegularExpressions.RegexCharClass:CharsToStringClass(System.ReadOnlySpan`1[ushort]):System.String (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 8829
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8829
; 9 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -91,36 +91,26 @@ G_M30761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=40 bbWeight=1 PerfScore 8.00 G_M30761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w1, #2
- beq G_M30761_IG04
+ bne G_M30761_IG07
;; size=8 bbWeight=1 PerfScore 1.50
-G_M30761_IG03: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cmp w1, #2 - bhi G_M30761_IG11 - mov w0, w1 - adr x2, [@RWD00] - ldr w2, [x2, x0, LSL #2] - adr x3, [G_M30761_IG02] - add x2, x2, x3 - br x2 - ;; size=32 bbWeight=0.36 PerfScore 2.70 -G_M30761_IG04: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M30761_IG03: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, #0
- bls G_M30761_IG20
+ bls G_M30761_IG25
ldrh w20, [x19] orr w21, w20, #32 sub w0, w21, #97 cmp w0, #25 bhi G_M30761_IG11 ;; size=28 bbWeight=0.64 PerfScore 4.48
-G_M30761_IG05: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M30761_IG04: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, #1
- bls G_M30761_IG20
+ bls G_M30761_IG25
ldrh w2, [x19, #0x02] orr w2, w2, #32 cmp w21, w2 bne G_M30761_IG11 ;; size=24 bbWeight=0.56 PerfScore 3.62
-G_M30761_IG06: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M30761_IG05: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x19] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -128,7 +118,7 @@ G_M30761_IG06: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr x1, [x1] ; gcrRegs +[x1] cmp w0, #26
- bhs G_M30761_IG20
+ bhs G_M30761_IG25
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -139,18 +129,28 @@ G_M30761_IG06: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs +[x0] cbz x0, G_M30761_IG17 ;; size=44 bbWeight=0.43 PerfScore 5.18
-G_M30761_IG07: ; bbWeight=0.43, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M30761_IG06: ; bbWeight=0.43, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1 x22] ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x70 ret lr ;; size=16 bbWeight=0.43 PerfScore 1.73
-G_M30761_IG08: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+G_M30761_IG07: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
; gcrRegs -[x0] ; byrRegs +[x19]
+ cmp w1, #2 + bhi G_M30761_IG11 + mov w0, w1 + adr x2, [@RWD00] + ldr w2, [x2, x0, LSL #2] + adr x3, [G_M30761_IG02] + add x2, x2, x3 + br x2 + ;; size=32 bbWeight=0.36 PerfScore 2.70 +G_M30761_IG08: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, #0
- bls G_M30761_IG20
+ bls G_M30761_IG25
ldrh w20, [x19] cmp w20, #128 bge G_M30761_IG11 @@ -162,7 +162,7 @@ G_M30761_IG09: ; bbWeight=0.27, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ldr x0, [x0] ; gcrRegs +[x0] cmp w20, #128
- bhs G_M30761_IG20
+ bhs G_M30761_IG25
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -187,11 +187,11 @@ G_M30761_IG11: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=000 lsl w20, w1, #1 sub w0, w1, #1 cmp w0, w1
- bhs G_M30761_IG20
+ bhs G_M30761_IG25
ldrh w0, [x19, w0, UXTW #2] mov w2, #0xD1FFAB1E cmp w0, w2
- beq G_M30761_IG21
+ beq G_M30761_IG26
;; size=32 bbWeight=0.30 PerfScore 2.37 G_M30761_IG12: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz str x19, [fp, #0x40] // [V43 tmp34] @@ -236,7 +236,7 @@ G_M30761_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000 ldr w0, [fp, #0x28] // [V07 loc6+0x10] ldr w1, [fp, #0x38] // [V07 loc6+0x20] cmp w0, w1
- bhi G_M30761_IG25
+ bhi G_M30761_IG20
ldr x2, [fp, #0x30] // [V07 loc6+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -252,7 +252,7 @@ G_M30761_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 ; byrRegs -[x2] cmp w21, #3
- blo G_M30761_IG24
+ blo G_M30761_IG23
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -313,7 +313,7 @@ G_M30761_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=400000 {x22} ldr w0, [fp, #0x28] // [V07 loc6+0x10] ldr w1, [fp, #0x38] // [V07 loc6+0x20] cmp w0, w1
- bhi G_M30761_IG25
+ bhi G_M30761_IG20
ldr x2, [fp, #0x30] // [V07 loc6+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -329,7 +329,7 @@ G_M30761_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=400000 {x22} blr x1 ; byrRegs -[x2] cmp w20, #3
- blo G_M30761_IG26
+ blo G_M30761_IG24
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -388,7 +388,7 @@ G_M30761_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=400000 {x22} bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14 x22]
- b G_M30761_IG07
+ b G_M30761_IG06
;; size=164 bbWeight=0.00 PerfScore 0.10 G_M30761_IG19: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -424,26 +424,25 @@ G_M30761_IG19: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=84 bbWeight=0.00 PerfScore 0.00 G_M30761_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x2]
- bl CORINFO_HELP_RNGCHKFAIL - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M30761_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ; byrRegs +[x19] - sub w20, w20, #1 - b G_M30761_IG12 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M30761_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19]
+ movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + blr x0 + brk_unix #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M30761_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M30761_IG23: ; bbWeight=0, epilog, nogc, extend
+G_M30761_IG22: ; bbWeight=0, epilog, nogc, extend
ldp x21, x22, [sp, #0x60] ldp x19, x20, [sp, #0x50] ldp fp, lr, [sp], #0x70 ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-G_M30761_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref
+G_M30761_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref
; byrRegs +[x19 x22] add x0, fp, #24 // [V07 loc6] movz x1, #0xD1FFAB1E @@ -456,17 +455,8 @@ G_M30761_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { blr x2 b G_M30761_IG16 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M30761_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19 x22] - movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - brk_unix #0 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M30761_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref - ; byrRegs +[x22]
+G_M30761_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref + ; byrRegs -[x19]
add x0, fp, #24 // [V07 loc6] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -478,9 +468,18 @@ G_M30761_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b blr x2 b G_M30761_IG18 ;; size=40 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M30761_IG22 - G_M30761_IG02
+G_M30761_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x22] + bl CORINFO_HELP_RNGCHKFAIL + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M30761_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + ; byrRegs +[x19] + sub w20, w20, #1 + b G_M30761_IG12 + ;; size=8 bbWeight=0 PerfScore 0.00 +RWD00 dd G_M30761_IG21 - G_M30761_IG02
dd G_M30761_IG08 - G_M30761_IG02
- dd G_M30761_IG04 - G_M30761_IG02
+ dd G_M30761_IG03 - G_M30761_IG02
; Total bytes of code 1160, prolog size 36, PerfScore 42.03, instruction count 290, allocated bytes for code 1160 (MethodHash=fc3c87d6) for method System.Text.RegularExpressions.RegexCharClass:CharsToStringClass(System.ReadOnlySpan`1[ushort]):System.String (Tier1)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm64.checked.mch 5 1 1 3 -4 +4
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 11 0 0 11 -0 +0
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.arm64.Release.mch 18 4 0 14 -24 +0
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
34 5 1 28 -28 +4

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 35,456 3,293 32,163 31 (0.09%) 31 (0.09%)
benchmarks.run_pgo.linux.arm64.checked.mch 152,104 62,013 90,091 2 (0.00%) 2 (0.00%)
benchmarks.run_tiered.linux.arm64.checked.mch 58,106 43,724 14,382 6 (0.01%) 6 (0.01%)
coreclr_tests.run.linux.arm64.checked.mch 648,884 400,206 248,678 33 (0.01%) 33 (0.01%)
libraries.crossgen2.linux.arm64.checked.mch 266,525 15 266,510 8 (0.00%) 8 (0.00%)
libraries.pmi.linux.arm64.checked.mch 300,713 6 300,707 333 (0.11%) 333 (0.11%)
libraries_tests.run.linux.arm64.Release.mch 734,063 491,226 242,837 318 (0.04%) 318 (0.04%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 304,791 21,620 283,171 469 (0.15%) 469 (0.15%)
realworld.run.linux.arm64.checked.mch 33,267 151 33,116 96 (0.29%) 96 (0.29%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,024 7 19,017 4 (0.02%) 4 (0.02%)
2,552,933 1,022,261 1,530,672 1,300 (0.05%) 1,300 (0.05%)

jit-analyze output

benchmarks.run_pgo.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79023784 (overridden on cmd)
Total bytes of diff: 79023784 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 24686.dasm (0.53 % of base)

Top file improvements (bytes):
          -4 : 127862.dasm (-0.53 % of base)

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

Top method regressions (bytes):
           4 (0.53 % of base) : 24686.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (bytes):
          -4 (-0.53 % of base) : 127862.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method regressions (percentages):
           4 (0.53 % of base) : 24686.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
          -4 (-0.53 % of base) : 127862.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

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


coreclr_tests.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 525847368 (overridden on cmd)
Total bytes of diff: 525847368 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



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

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


libraries_tests.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 382591448 (overridden on cmd)
Total bytes of diff: 382591424 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -12 : 455462.dasm (-0.46 % of base)
          -4 : 624473.dasm (-0.35 % of base)
          -4 : 625027.dasm (-0.34 % of base)
          -4 : 669072.dasm (-0.43 % of base)

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

Top method improvements (bytes):
         -12 (-0.46 % of base) : 455462.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.43 % of base) : 669072.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -4 (-0.35 % of base) : 624473.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[long]:MoveNext():ubyte:this (Tier1)
          -4 (-0.34 % of base) : 625027.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[System.UInt128]:MoveNext():ubyte:this (Tier1)

Top method improvements (percentages):
         -12 (-0.46 % of base) : 455462.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.43 % of base) : 669072.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -4 (-0.35 % of base) : 624473.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[long]:MoveNext():ubyte:this (Tier1)
          -4 (-0.34 % of base) : 625027.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[System.UInt128]:MoveNext():ubyte:this (Tier1)

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



linux x64

Diffs are based on 2,540,651 contexts (986,212 MinOpts, 1,554,439 FullOpts).

MISSED contexts: 1,316 (0.05%)

Overall (+181 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 71,349,815 +28
coreclr_tests.run.linux.x64.checked.mch 417,667,412 +135
libraries_tests.run.linux.x64.Release.mch 328,359,812 +18

FullOpts (+181 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,788,139 +28
coreclr_tests.run.linux.x64.checked.mch 130,359,773 +135
libraries_tests.run.linux.x64.Release.mch 146,148,821 +18

Example diffs

benchmarks.run_pgo.linux.x64.checked.mch

-27 (-4.74%) : 83044.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -20,10 +20,10 @@ ; V08 loc7 [V08,T18] ( 5, 0 ) int -> r14 ; V09 loc8 [V09,T19] ( 3, 0 ) ref -> rbx class-hnd exact <System.Text.RegularExpressions.RegexNode> ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T13] ( 4, 3.98) int -> r14 "Inline return value spill temp" ; V13 tmp3 [V13,T15] ( 3, 2.77) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T11] ( 6, 5.96) ref -> r13 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T11] ( 6, 5.96) ref -> r15 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T01] ( 4, 13.92) ref -> r13 "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T12] ( 3, 4.42) ref -> r13 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -51,31 +51,31 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdi ; gcrRegs +[rbx] ;; size=16 bbWeight=1 PerfScore 5.75
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG08
+ je G_M35244_IG26
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG08 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG26 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG26
+ jbe G_M35244_IG23
;; size=16 bbWeight=2.99 PerfScore 11.21
-G_M35244_IG04: ; bbWeight=2.95, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.95, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG08
+ ja G_M35244_IG26
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] lea rax, G_M35244_IG02 add rdi, rax jmp rdi
- ;; size=32 bbWeight=2.95 PerfScore 22.16
+ ;; size=36 bbWeight=2.95 PerfScore 22.16
G_M35244_IG05: ; bbWeight=0.26, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref ; gcrRegs +[r15] mov r14d, 1 @@ -85,38 +85,75 @@ G_M35244_IG06: ; bbWeight=1.99, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG09
+ je SHORT G_M35244_IG11
;; size=11 bbWeight=1.99 PerfScore 3.48
-G_M35244_IG07: ; bbWeight=0.99, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref - jmp G_M35244_IG23 - ;; size=5 bbWeight=0.99 PerfScore 1.99 -G_M35244_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx r13 r15] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.02 PerfScore 0.06 -G_M35244_IG09: ; bbWeight=1.99, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r13 r15] - test r13, r13 - jne G_M35244_IG25 - ;; size=9 bbWeight=1.99 PerfScore 2.49 -G_M35244_IG10: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=0.99, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz + mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode + cmp qword ptr [r13], rsi + je SHORT G_M35244_IG11 + ;; size=16 bbWeight=0.99 PerfScore 4.23 +G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
+ jmp SHORT G_M35244_IG17 + ;; size=2 bbWeight=0.50 PerfScore 0.99 +G_M35244_IG09: ; bbWeight=1.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + mov r15, gword ptr [rbx+0x08] + ; gcrRegs +[r15] + test r15, r15 + jne SHORT G_M35244_IG13 + ;; size=9 bbWeight=1.99 PerfScore 6.46 +G_M35244_IG10: ; bbWeight=0.98, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + xor r14d, r14d + jmp SHORT G_M35244_IG06 + ;; size=5 bbWeight=0.98 PerfScore 2.21 +G_M35244_IG11: ; bbWeight=1.99, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r13] + test r13, r13 + je SHORT G_M35244_IG17 + ;; size=5 bbWeight=1.99 PerfScore 2.49 +G_M35244_IG12: ; bbWeight=0.44, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + mov r15, r13 + ; gcrRegs +[r15] + jmp SHORT G_M35244_IG15 + ;; size=5 bbWeight=0.44 PerfScore 0.99 +G_M35244_IG13: ; bbWeight=1.01, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + mov rsi, r15 + ; gcrRegs +[rsi] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[rsi] +[rax] + ; gcr arg pop 0 + test rax, rax + je SHORT G_M35244_IG05 + ;; size=23 bbWeight=1.01 PerfScore 2.77 +G_M35244_IG14: ; bbWeight=0.75, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz + mov r14d, dword ptr [rax+0x10] + jmp SHORT G_M35244_IG06 + ;; size=6 bbWeight=0.75 PerfScore 3.01 +G_M35244_IG15: ; bbWeight=1.99, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + movzx rdi, byte ptr [r15+0x2E] + cmp edi, 24 + je G_M35244_IG29 + ;; size=14 bbWeight=1.99 PerfScore 6.46 +G_M35244_IG16: ; bbWeight=1.99, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M35244_IG21 + ;; size=2 bbWeight=1.99 PerfScore 3.97 +G_M35244_IG17: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.55 PerfScore 2.32
-G_M35244_IG11: ; bbWeight=0.77, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.77, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.77 PerfScore 3.29
-G_M35244_IG12: ; bbWeight=0.39, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.39, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -126,50 +163,67 @@ G_M35244_IG12: ; bbWeight=0.39, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=12 bbWeight=0.39 PerfScore 1.35
-G_M35244_IG13: ; bbWeight=1.55, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=1.55, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG28
+ jae G_M35244_IG36
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG29
+ jae SHORT G_M35244_IG25
mov esi, r14d
- mov r13, gword ptr [rdi+8*rsi+0x10] - ;; size=32 bbWeight=1.55 PerfScore 18.96 -G_M35244_IG14: ; bbWeight=1.99, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - movzx rdi, byte ptr [r13+0x2E] - cmp edi, 24 - je G_M35244_IG30 - ;; size=14 bbWeight=1.99 PerfScore 6.46 -G_M35244_IG15: ; bbWeight=1.99, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+ mov r15, gword ptr [rdi+8*rsi+0x10] + ; gcrRegs +[r15] + jmp SHORT G_M35244_IG15 + ;; size=30 bbWeight=1.55 PerfScore 22.06 +G_M35244_IG21: ; bbWeight=1.99, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi r13]
lea esi, [rdi-0x1A] cmp esi, 1
- jbe G_M35244_IG30
+ jbe SHORT G_M35244_IG29
add edi, -33 cmp edi, 1
- jbe G_M35244_IG30 - ;; size=24 bbWeight=1.99 PerfScore 6.46 -G_M35244_IG16: ; bbWeight=1.99, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+ jbe SHORT G_M35244_IG29 + ;; size=16 bbWeight=1.99 PerfScore 6.46 +G_M35244_IG22: ; bbWeight=1.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rbx, r13
+ mov rbx, r15
; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=1.99 PerfScore 4.47
-G_M35244_IG17: ; bbWeight=1.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r13] - mov r15, gword ptr [rbx+0x08] - ; gcrRegs +[r15] - test r15, r15 - jne SHORT G_M35244_IG21 - ;; size=9 bbWeight=1.99 PerfScore 6.46 -G_M35244_IG18: ; bbWeight=0.98, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M35244_IG20 - ;; size=2 bbWeight=0.98 PerfScore 1.96 -G_M35244_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG23: ; bbWeight=0.03, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15] mov rdi, rbx
+ ; gcrRegs +[rdi] + ;; size=3 bbWeight=0.03 PerfScore 0.01 +G_M35244_IG24: ; bbWeight=0.03, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] + ; gcr arg pop 0 + ;; size=14 bbWeight=0.03 PerfScore 0.15 +G_M35244_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rbx rdi] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + mov rdi, rbx
; gcrRegs +[rdi] xor esi, esi call [System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this] @@ -179,86 +233,29 @@ G_M35244_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] ...

-6 (-1.42%) : 143009.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Collections.Generic.HashSet`1[System.Canon]):this (Tier1)

@@ -54,12 +54,12 @@ G_M417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n G_M417_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz call <unknown method> test eax, eax
- je G_M417_IG14
+ je G_M417_IG13
mov r13d, dword ptr [r15+0x28] cmp r13d, 1 jne SHORT G_M417_IG09 ;; size=23 bbWeight=1 PerfScore 5.50
-G_M417_IG03: ; bbWeight=0.58, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M417_IG03: ; bbWeight=0.58, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14] mov rsi, gword ptr [r15+0x08] ; gcrRegs +[rsi] @@ -69,27 +69,16 @@ G_M417_IG03: ; bbWeight=0.58, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {} ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rbx rsi rdi]
- ;; size=19 bbWeight=0.58 PerfScore 5.08 -G_M417_IG04: ; bbWeight=0.70, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - nop - ;; size=1 bbWeight=0.70 PerfScore 0.17 -G_M417_IG05: ; bbWeight=0.70, epilog, nogc, extend - add rsp, 32 - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=13 bbWeight=0.70 PerfScore 2.62 -G_M417_IG06: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M417_IG07 + ;; size=21 bbWeight=0.58 PerfScore 6.24 +G_M417_IG04: ; bbWeight=0.10, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r14] mov r13, r15 ; gcrRegs +[r13] cmp dword ptr [r15+0x28], 2
- jne SHORT G_M417_IG08
+ jne SHORT G_M417_IG06
;; size=10 bbWeight=0.10 PerfScore 0.43
-G_M417_IG07: ; bbWeight=0.78, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.78, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r13+0x10] ; gcrRegs +[rdi] mov rsi, r14 @@ -101,9 +90,9 @@ G_M417_IG07: ; bbWeight=0.78, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs ; gcrRegs -[rdx rsi rdi] mov r13, gword ptr [r13+0x18] cmp dword ptr [r13+0x28], 2
- je SHORT G_M417_IG07
+ je SHORT G_M417_IG05
;; size=29 bbWeight=0.78 PerfScore 11.35
-G_M417_IG08: ; bbWeight=0.10, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M417_IG06: ; bbWeight=0.10, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r13 ; gcrRegs +[rdi] mov rsi, r14 @@ -112,12 +101,23 @@ G_M417_IG08: ; bbWeight=0.10, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs ; gcrRegs +[rdx] call [System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this] ; gcrRegs -[rdx rbx rsi rdi r13-r14]
- jmp SHORT G_M417_IG04 - ;; size=17 bbWeight=0.10 PerfScore 0.58 -G_M417_IG09: ; bbWeight=0.42, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=15 bbWeight=0.10 PerfScore 0.38 +G_M417_IG07: ; bbWeight=0.70, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0.70 PerfScore 0.17 +G_M417_IG08: ; bbWeight=0.70, epilog, nogc, extend + add rsp, 32 + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=13 bbWeight=0.70 PerfScore 2.62 +G_M417_IG09: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r14] cmp r13d, 17
- ja SHORT G_M417_IG04
+ ja SHORT G_M417_IG07
mov edi, r13d lea rsi, [reloc @RWD00] mov esi, dword ptr [rsi+4*rdi] @@ -135,9 +135,9 @@ G_M417_IG10: ; bbWeight=0.02, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=000 cmp dword ptr [rdi], edi call [System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this] ; gcrRegs -[rdx rbx rsi rdi r14]
- jmp SHORT G_M417_IG04
+ jmp SHORT G_M417_IG07
;; size=20 bbWeight=0.02 PerfScore 0.17
-G_M417_IG11: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M417_IG11: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r14] mov rdi, gword ptr [r15+0x10] ; gcrRegs +[rdi] @@ -157,21 +157,9 @@ G_M417_IG11: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 { cmp dword ptr [rdi], edi call [System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this] ; gcrRegs -[rdx rbx rsi rdi r14]
- jmp G_M417_IG04 - ;; size=41 bbWeight=0 PerfScore 0.00 -G_M417_IG12: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r14] - mov rsi, gword ptr [r14+0x80] - ; gcrRegs +[rsi] - cmp byte ptr [rbx], bl - lea rdx, [rbp-0x40] - mov rdi, rbx - ; gcrRegs +[rdi] - call [<unknown method>] - ; gcrRegs -[rbx rsi rdi r14] - jmp G_M417_IG04 - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M417_IG13: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M417_IG07 + ;; size=38 bbWeight=0 PerfScore 0.00 +G_M417_IG12: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r14] mov rsi, gword ptr [r14+0x88] ; gcrRegs +[rsi] @@ -181,24 +169,24 @@ G_M417_IG13: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 { ; gcrRegs +[rdi] call [<unknown method>] ; gcrRegs -[rbx rsi rdi r14]
- jmp G_M417_IG04 - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M417_IG14: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M417_IG07 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M417_IG13: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r14] mov rdi, qword ptr [r15] mov rsi, qword ptr [rdi+0x38] mov rsi, qword ptr [rsi] mov rsi, qword ptr [rsi+0x40] test rsi, rsi
- je SHORT G_M417_IG15 - jmp SHORT G_M417_IG16
+ je SHORT G_M417_IG14 + jmp SHORT G_M417_IG15
;; size=21 bbWeight=0 PerfScore 0.00
-G_M417_IG15: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M417_IG14: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rsi, rax ;; size=18 bbWeight=0 PerfScore 0.00
-G_M417_IG16: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M417_IG15: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, rsi call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -216,16 +204,16 @@ G_M417_IG16: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 { mov rsi, qword ptr [rsi] mov rax, qword ptr [rsi+0x48] test rax, rax
- je SHORT G_M417_IG17
+ je SHORT G_M417_IG16
mov rdi, rax
- jmp SHORT G_M417_IG18
+ jmp SHORT G_M417_IG17
;; size=57 bbWeight=0 PerfScore 0.00
-G_M417_IG17: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M417_IG16: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdi, rax ;; size=18 bbWeight=0 PerfScore 0.00
-G_M417_IG18: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M417_IG17: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
mov rsi, r13 ; gcrRegs +[rsi] mov rdx, r14 @@ -234,29 +222,41 @@ G_M417_IG18: ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=00 ; gcrRegs +[rcx] call [System.Threading.StackHelper:CallOnEmptyStack[System.__Canon,System.__Canon](System.Action`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon)] ; gcrRegs -[rcx rdx rbx rsi r13-r14]
- jmp G_M417_IG04
+ jmp G_M417_IG07
;; size=20 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+G_M417_IG18: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx r14] + mov rsi, gword ptr [r14+0x80] + ; gcrRegs +[rsi] + cmp byte ptr [rbx], bl + lea rdx, [rbp-0x40] + mov rdi, rbx + ; gcrRegs +[rdi] + call [<unknown method>] + ; gcrRegs -[rbx rsi rdi r14] + jmp G_M417_IG07 + ;; size=27 bbWeight=0 PerfScore 0.00 +RWD00 dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG06 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02
dd G_M417_IG10 - G_M417_IG02 dd G_M417_IG11 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG13 - G_M417_IG02 - dd G_M417_IG13 - G_M417_IG02 - dd G_M417_IG13 - G_M417_IG02 - dd G_M417_IG13 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG12 - G_M417_IG02 dd G_M417_IG12 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG12 - G_M417_IG02 + dd G_M417_IG12 - G_M417_IG02 + dd G_M417_IG18 - G_M417_IG02 + dd G_M417_IG18 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG10 - G_M417_IG02
-; Total bytes of code 422, prolog size 21, PerfScore 36.44, instruction count 116, allocated bytes for code 422 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
+; Total bytes of code 416, prolog size 21, PerfScore 37.40, instruction count 116, allocated bytes for code 416 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

-1 (-0.12%) : 48479.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

@@ -112,7 +112,7 @@ G_M37647_IG07: ; bbWeight=98.96, gcrefRegs=C009 {rax rbx r14 r15}, byrefR mov edx, ecx movzx rdx, byte ptr [rax+rdx+0x10] cmp edx, 3
- ja SHORT G_M37647_IG11
+ ja SHORT G_M37647_IG10
lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rdi, G_M37647_IG02 @@ -124,7 +124,7 @@ G_M37647_IG08: ; bbWeight=0.02, gcrefRegs=C009 {rax rbx r14 r15}, byrefRe ; GC ptr vars +{V06} jmp G_M37647_IG19 ;; size=9 bbWeight=0.02 PerfScore 0.06
-G_M37647_IG09: ; bbWeight=31.14, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M37647_IG09: ; bbWeight=31.14, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
; GC ptr vars -{V06} mov gword ptr [rbp+0x78], rax ; GC ptr vars +{V06} @@ -144,9 +144,19 @@ G_M37647_IG09: ; bbWeight=31.14, gcrefRegs=C009 {rax rbx r14 r15}, byrefR mov rax, gword ptr [rbp+0x78] ; gcrRegs +[rax] mov esi, dword ptr [rbp+0x74]
- jmp SHORT G_M37647_IG11 - ;; size=43 bbWeight=31.14 PerfScore 482.63 -G_M37647_IG10: ; bbWeight=18.68, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=41 bbWeight=31.14 PerfScore 420.36 +G_M37647_IG10: ; bbWeight=98.96, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars -{V06} + inc esi + cmp esi, r13d + jl SHORT G_M37647_IG07 + ;; size=7 bbWeight=98.96 PerfScore 148.44 +G_M37647_IG11: ; bbWeight=0.04, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref + mov gword ptr [rbp+0x78], rax + ; GC ptr vars +{V06} + jmp G_M37647_IG19 + ;; size=9 bbWeight=0.04 PerfScore 0.12 +G_M37647_IG12: ; bbWeight=18.68, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; GC ptr vars -{V06} mov gword ptr [rbp+0x78], rax ; GC ptr vars +{V06} @@ -166,42 +176,9 @@ G_M37647_IG10: ; bbWeight=18.68, gcVars=0000000000000000 {}, gcrefRegs=C0 mov rax, gword ptr [rbp+0x78] ; gcrRegs +[rax] mov esi, dword ptr [rbp+0x74]
- ;; size=41 bbWeight=18.68 PerfScore 252.21 -G_M37647_IG11: ; bbWeight=98.96, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V06} - inc esi - cmp esi, r13d - jl G_M37647_IG07 - ;; size=11 bbWeight=98.96 PerfScore 148.44 -G_M37647_IG12: ; bbWeight=0.04, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref - mov gword ptr [rbp+0x78], rax - ; GC ptr vars +{V06} - jmp G_M37647_IG19 - ;; size=9 bbWeight=0.04 PerfScore 0.12 -G_M37647_IG13: ; bbWeight=24.11, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz - ; GC ptr vars -{V06} - mov gword ptr [rbp+0x78], rax - ; GC ptr vars +{V06} - mov dword ptr [rbp+0x74], esi - mov r9d, esi - mov r10, gword ptr [rbx+8*r9+0x10] - ; gcrRegs +[r10] - mov rdx, gword ptr [r15+8*r9+0x10] - ; gcrRegs +[rdx] - mov rsi, r10 - ; gcrRegs +[rsi] - mov rcx, gword ptr [r14+8*r9+0x10] - ; gcrRegs +[rcx] - xor edi, edi - call [EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF)] - ; gcrRegs -[rax rcx rdx rsi r10] - ; gcr arg pop 0 - mov rax, gword ptr [rbp+0x78] - ; gcrRegs +[rax] - mov esi, dword ptr [rbp+0x74] - jmp SHORT G_M37647_IG11 - ;; size=45 bbWeight=24.11 PerfScore 379.74 -G_M37647_IG14: ; bbWeight=25.03, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M37647_IG10 + ;; size=43 bbWeight=18.68 PerfScore 289.58 +G_M37647_IG13: ; bbWeight=25.03, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V06} mov gword ptr [rbp+0x78], rax ; GC ptr vars +{V06} @@ -222,8 +199,31 @@ G_M37647_IG14: ; bbWeight=25.03, gcVars=0000000000000000 {}, gcrefRegs=C0 mov rax, gword ptr [rbp+0x78] ; gcrRegs +[rax] mov esi, dword ptr [rbp+0x74]
- jmp SHORT G_M37647_IG11
+ jmp SHORT G_M37647_IG10
;; size=48 bbWeight=25.03 PerfScore 394.22
+G_M37647_IG14: ; bbWeight=24.11, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V06} + mov gword ptr [rbp+0x78], rax + ; GC ptr vars +{V06} + mov dword ptr [rbp+0x74], esi + mov r9d, esi + mov r10, gword ptr [rbx+8*r9+0x10] + ; gcrRegs +[r10] + mov rdx, gword ptr [r15+8*r9+0x10] + ; gcrRegs +[rdx] + mov rsi, r10 + ; gcrRegs +[rsi] + mov rcx, gword ptr [r14+8*r9+0x10] + ; gcrRegs +[rcx] + xor edi, edi + call [EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF)] + ; gcrRegs -[rax rcx rdx rsi r10] + ; gcr arg pop 0 + mov rax, gword ptr [rbp+0x78] + ; gcrRegs +[rax] + mov esi, dword ptr [rbp+0x74] + jmp G_M37647_IG10 + ;; size=48 bbWeight=24.11 PerfScore 379.74
G_M37647_IG15: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V06} mov edx, esi @@ -390,17 +390,17 @@ G_M37647_IG25: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M37647_IG13 - G_M37647_IG02 - dd G_M37647_IG14 - G_M37647_IG02
+RWD00 dd G_M37647_IG14 - G_M37647_IG02 + dd G_M37647_IG13 - G_M37647_IG02
dd G_M37647_IG09 - G_M37647_IG02
- dd G_M37647_IG10 - G_M37647_IG02
+ dd G_M37647_IG12 - G_M37647_IG02
RWD16 dd G_M37647_IG22 - G_M37647_IG02 dd G_M37647_IG21 - G_M37647_IG02 dd G_M37647_IG16 - G_M37647_IG02 dd G_M37647_IG17 - G_M37647_IG02
-; Total bytes of code 858, prolog size 96, PerfScore 3238.03, instruction count 216, allocated bytes for code 858 (MethodHash=73346cf0) for method EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
+; Total bytes of code 857, prolog size 96, PerfScore 3213.12, instruction count 216, allocated bytes for code 857 (MethodHash=73346cf0) for method EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
; ============================================================ Unwind Info:

+15 (+2.88%) : 136262.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,36 +51,36 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdi ; gcrRegs +[rbx] ;; size=16 bbWeight=1 PerfScore 5.75
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG09
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG09 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=4.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5 jbe G_M35244_IG22 ;; size=16 bbWeight=4.06 PerfScore 15.24
-G_M35244_IG04: ; bbWeight=3.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=3.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG09
+ ja G_M35244_IG25
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] lea rax, G_M35244_IG02 add rdi, rax jmp rdi
- ;; size=32 bbWeight=3.06 PerfScore 22.98
+ ;; size=36 bbWeight=3.06 PerfScore 22.98
G_M35244_IG05: ; bbWeight=3.06, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M35244_IG08
+ je SHORT G_M35244_IG12
;; size=9 bbWeight=3.06 PerfScore 9.96 G_M35244_IG06: ; bbWeight=2.53, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rsi, r15 @@ -90,43 +90,38 @@ G_M35244_IG06: ; bbWeight=2.53, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG10
+ je SHORT G_M35244_IG08
;; size=23 bbWeight=2.53 PerfScore 6.96 G_M35244_IG07: ; bbWeight=0.91, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz mov r14d, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG11
+ jmp SHORT G_M35244_IG09
;; size=6 bbWeight=0.91 PerfScore 3.65
-G_M35244_IG08: ; bbWeight=0.53, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=1.62, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- xor r14d, r14d - jmp SHORT G_M35244_IG11 - ;; size=5 bbWeight=0.53 PerfScore 1.20 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx r15] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.00 PerfScore 0.00 -G_M35244_IG10: ; bbWeight=1.62, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15]
mov r14d, 1 ;; size=6 bbWeight=1.62 PerfScore 0.40
-G_M35244_IG11: ; bbWeight=3.06, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=3.06, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13 je SHORT G_M35244_IG13 ;; size=11 bbWeight=3.06 PerfScore 5.36
-G_M35244_IG12: ; bbWeight=1.53, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.53, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [r13], rsi
- jne SHORT G_M35244_IG14
+ je SHORT G_M35244_IG13
;; size=16 bbWeight=1.53 PerfScore 6.51
+G_M35244_IG11: ; bbWeight=0.77, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + jmp SHORT G_M35244_IG14 + ;; size=2 bbWeight=0.77 PerfScore 1.53 +G_M35244_IG12: ; bbWeight=0.53, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + xor r14d, r14d + jmp SHORT G_M35244_IG09 + ;; size=5 bbWeight=0.53 PerfScore 1.20
G_M35244_IG13: ; bbWeight=3.06, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13]
test r13, r13 jne SHORT G_M35244_IG18 ;; size=5 bbWeight=3.06 PerfScore 3.83 @@ -155,7 +150,7 @@ G_M35244_IG16: ; bbWeight=0.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 G_M35244_IG17: ; bbWeight=1.10, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG33
+ jae G_M35244_IG35
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08] @@ -174,15 +169,15 @@ G_M35244_IG19: ; bbWeight=3.06, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG26
+ je SHORT G_M35244_IG28
;; size=10 bbWeight=3.06 PerfScore 9.96 G_M35244_IG20: ; bbWeight=3.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz lea esi, [rdi-0x1A] cmp esi, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG28
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG28
;; size=16 bbWeight=3.04 PerfScore 9.89 G_M35244_IG21: ; bbWeight=3.06, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -209,7 +204,18 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -221,16 +227,16 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[r15] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG29
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32 je SHORT G_M35244_IG21 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -263,7 +269,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG21 ;; size=72 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -272,9 +278,9 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov r15d, eax mov r14d, 1
- jmp SHORT G_M35244_IG30
+ jmp SHORT G_M35244_IG32
;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov esi, r14d @@ -289,20 +295,20 @@ G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc r14d ;; size=26 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- jl SHORT G_M35244_IG29
+ jl SHORT G_M35244_IG31
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG09 - jmp G_M35244_IG25
+ je G_M35244_IG25 + jmp G_M35244_IG27
;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x20] mov dword ptr [rbx+0x24], edi ;; size=6 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x24], 1
- je G_M35244_IG25
+ je G_M35244_IG27
mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -311,29 +317,29 @@ G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG09
+ je G_M35244_IG25
jmp G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG28 - G_M35244_IG02
+RWD00 dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG32 - G_M35244_IG02 - dd G_M35244_IG31 - G_M35244_IG02
+ dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG33 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG09 - G_M35244_IG02
dd G_M35244_IG25 - G_M35244_IG02
- dd G_M35244_IG25 - G_M35244_IG02 - dd G_M35244_IG25 - G_M35244_IG02 - dd G_M35244_IG28 - G_M35244_IG02 - dd G_M35244_IG28 - G_M35244_IG02
...

+15 (+2.89%) : 25942.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,36 +51,36 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdi ; gcrRegs +[rbx] ;; size=16 bbWeight=1 PerfScore 5.75
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG09
+ je G_M35244_IG26
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG09 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG26 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=3.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5 jbe G_M35244_IG23 ;; size=16 bbWeight=3.97 PerfScore 14.89
-G_M35244_IG04: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG09
+ ja G_M35244_IG26
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] lea rax, G_M35244_IG02 add rdi, rax jmp rdi
- ;; size=32 bbWeight=2.97 PerfScore 22.29
+ ;; size=36 bbWeight=2.97 PerfScore 22.29
G_M35244_IG05: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M35244_IG08
+ je SHORT G_M35244_IG12
;; size=9 bbWeight=2.97 PerfScore 9.66 G_M35244_IG06: ; bbWeight=2.46, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rsi, r15 @@ -90,43 +90,38 @@ G_M35244_IG06: ; bbWeight=2.46, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG10
+ je SHORT G_M35244_IG08
;; size=23 bbWeight=2.46 PerfScore 6.76 G_M35244_IG07: ; bbWeight=0.88, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz mov r14d, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG11
+ jmp SHORT G_M35244_IG09
;; size=6 bbWeight=0.88 PerfScore 3.54
-G_M35244_IG08: ; bbWeight=0.51, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=1.57, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- xor r14d, r14d - jmp SHORT G_M35244_IG11 - ;; size=5 bbWeight=0.51 PerfScore 1.15 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx r15] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.00 PerfScore 0.01 -G_M35244_IG10: ; bbWeight=1.57, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15]
mov r14d, 1 ;; size=6 bbWeight=1.57 PerfScore 0.39
-G_M35244_IG11: ; bbWeight=2.97, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2.97, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13 je SHORT G_M35244_IG13 ;; size=11 bbWeight=2.97 PerfScore 5.20
-G_M35244_IG12: ; bbWeight=1.49, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.49, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [r13], rsi
- jne SHORT G_M35244_IG14
+ je SHORT G_M35244_IG13
;; size=16 bbWeight=1.49 PerfScore 6.31
+G_M35244_IG11: ; bbWeight=0.74, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + jmp SHORT G_M35244_IG14 + ;; size=2 bbWeight=0.74 PerfScore 1.49 +G_M35244_IG12: ; bbWeight=0.51, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + xor r14d, r14d + jmp SHORT G_M35244_IG09 + ;; size=5 bbWeight=0.51 PerfScore 1.15
G_M35244_IG13: ; bbWeight=2.97, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13]
test r13, r13 jne SHORT G_M35244_IG19 ;; size=5 bbWeight=2.97 PerfScore 3.71 @@ -155,7 +150,7 @@ G_M35244_IG16: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 G_M35244_IG17: ; bbWeight=1.08, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG34
+ jae G_M35244_IG36
;; size=10 bbWeight=1.08 PerfScore 4.32 G_M35244_IG18: ; bbWeight=1.08, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz mov rdi, gword ptr [r13+0x08] @@ -176,15 +171,15 @@ G_M35244_IG20: ; bbWeight=2.97, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG29
;; size=10 bbWeight=2.97 PerfScore 9.66 G_M35244_IG21: ; bbWeight=2.97, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz lea esi, [rdi-0x1A] cmp esi, 1
- jbe SHORT G_M35244_IG27
+ jbe SHORT G_M35244_IG29
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG27
+ jbe SHORT G_M35244_IG29
;; size=16 bbWeight=2.97 PerfScore 9.64 G_M35244_IG22: ; bbWeight=2.97, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -211,7 +206,18 @@ G_M35244_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -223,16 +229,16 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[r15] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG28
+ je SHORT G_M35244_IG30
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32 je SHORT G_M35244_IG22 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -265,7 +271,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG22 ;; size=72 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -274,9 +280,9 @@ G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov r15d, eax mov r14d, 1
- jmp SHORT G_M35244_IG31
+ jmp SHORT G_M35244_IG33
;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov esi, r14d @@ -291,20 +297,20 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc r14d ;; size=26 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- jl SHORT G_M35244_IG30
+ jl SHORT G_M35244_IG32
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG09 - jmp G_M35244_IG26
+ je G_M35244_IG26 + jmp G_M35244_IG28
;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x20] mov dword ptr [rbx+0x24], edi ;; size=6 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG35: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x24], 1
- je G_M35244_IG26
+ je G_M35244_IG28
mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -313,29 +319,29 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG09
+ je G_M35244_IG26
jmp G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG34: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG29 - G_M35244_IG02
+RWD00 dd G_M35244_IG31 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG32 - G_M35244_IG02
+ dd G_M35244_IG35 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG09 - G_M35244_IG02
dd G_M35244_IG26 - G_M35244_IG02
- dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG29 - G_M35244_IG02 - dd G_M35244_IG29 - G_M35244_IG02
...

+15 (+2.89%) : 148478.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,36 +51,36 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdi ; gcrRegs +[rbx] ;; size=16 bbWeight=1 PerfScore 5.75
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG09
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG09 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=4.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5 jbe G_M35244_IG22 ;; size=16 bbWeight=4.02 PerfScore 15.09
-G_M35244_IG04: ; bbWeight=3.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=3.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG09
+ ja G_M35244_IG25
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] lea rax, G_M35244_IG02 add rdi, rax jmp rdi
- ;; size=32 bbWeight=3.02 PerfScore 22.67
+ ;; size=36 bbWeight=3.02 PerfScore 22.67
G_M35244_IG05: ; bbWeight=3.02, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M35244_IG08
+ je SHORT G_M35244_IG12
;; size=9 bbWeight=3.02 PerfScore 9.83 G_M35244_IG06: ; bbWeight=2.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rsi, r15 @@ -90,43 +90,38 @@ G_M35244_IG06: ; bbWeight=2.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG10
+ je SHORT G_M35244_IG08
;; size=23 bbWeight=2.50 PerfScore 6.87 G_M35244_IG07: ; bbWeight=0.90, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz mov r14d, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG11
+ jmp SHORT G_M35244_IG09
;; size=6 bbWeight=0.90 PerfScore 3.61
-G_M35244_IG08: ; bbWeight=0.52, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=1.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- xor r14d, r14d - jmp SHORT G_M35244_IG11 - ;; size=5 bbWeight=0.52 PerfScore 1.18 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx r15] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.00 PerfScore 0.01 -G_M35244_IG10: ; bbWeight=1.60, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15]
mov r14d, 1 ;; size=6 bbWeight=1.60 PerfScore 0.40
-G_M35244_IG11: ; bbWeight=3.02, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=3.02, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13 je SHORT G_M35244_IG13 ;; size=11 bbWeight=3.02 PerfScore 5.29
-G_M35244_IG12: ; bbWeight=1.51, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.51, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [r13], rsi
- jne SHORT G_M35244_IG14
+ je SHORT G_M35244_IG13
;; size=16 bbWeight=1.51 PerfScore 6.42
+G_M35244_IG11: ; bbWeight=0.76, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + jmp SHORT G_M35244_IG14 + ;; size=2 bbWeight=0.76 PerfScore 1.51 +G_M35244_IG12: ; bbWeight=0.52, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + xor r14d, r14d + jmp SHORT G_M35244_IG09 + ;; size=5 bbWeight=0.52 PerfScore 1.18
G_M35244_IG13: ; bbWeight=3.02, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13]
test r13, r13 jne SHORT G_M35244_IG18 ;; size=5 bbWeight=3.02 PerfScore 3.78 @@ -155,7 +150,7 @@ G_M35244_IG16: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 G_M35244_IG17: ; bbWeight=1.09, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG33
+ jae G_M35244_IG35
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08] @@ -174,15 +169,15 @@ G_M35244_IG19: ; bbWeight=3.02, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG26
+ je SHORT G_M35244_IG28
;; size=10 bbWeight=3.02 PerfScore 9.83 G_M35244_IG20: ; bbWeight=3.02, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz lea esi, [rdi-0x1A] cmp esi, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG28
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG28
;; size=16 bbWeight=3.02 PerfScore 9.82 G_M35244_IG21: ; bbWeight=3.02, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -209,7 +204,18 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -221,16 +227,16 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[r15] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG29
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32 je SHORT G_M35244_IG21 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -263,7 +269,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG21 ;; size=72 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -272,9 +278,9 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov r15d, eax mov r14d, 1
- jmp SHORT G_M35244_IG30
+ jmp SHORT G_M35244_IG32
;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi] mov esi, r14d @@ -289,20 +295,20 @@ G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc r14d ;; size=26 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- jl SHORT G_M35244_IG29
+ jl SHORT G_M35244_IG31
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG09 - jmp G_M35244_IG25
+ je G_M35244_IG25 + jmp G_M35244_IG27
;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x20] mov dword ptr [rbx+0x24], edi ;; size=6 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x24], 1
- je G_M35244_IG25
+ je G_M35244_IG27
mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -311,29 +317,29 @@ G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG09
+ je G_M35244_IG25
jmp G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG28 - G_M35244_IG02
+RWD00 dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG32 - G_M35244_IG02 - dd G_M35244_IG31 - G_M35244_IG02
+ dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG33 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG09 - G_M35244_IG02
dd G_M35244_IG25 - G_M35244_IG02
- dd G_M35244_IG25 - G_M35244_IG02 - dd G_M35244_IG25 - G_M35244_IG02 - dd G_M35244_IG28 - G_M35244_IG02 - dd G_M35244_IG28 - G_M35244_IG02
...

coreclr_tests.run.linux.x64.checked.mch

-7 (-0.90%) : 288435.dasm - DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)

@@ -84,11 +84,11 @@ G_M46668_IG03: ; bbWeight=0.01, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, ; byrRegs -[rdi] xor r13d, r13d ;; size=33 bbWeight=0.01 PerfScore 0.03
-G_M46668_IG04: ; bbWeight=0.01, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M46668_IG04: ; bbWeight=0.01, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, ebx
- jge G_M46668_IG15 - ;; size=9 bbWeight=0.01 PerfScore 0.01 -G_M46668_IG05: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ jge SHORT G_M46668_IG08 + ;; size=5 bbWeight=0.01 PerfScore 0.01 +G_M46668_IG05: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov edi, r13d sar edi, 31 and edi, 7 @@ -97,14 +97,14 @@ G_M46668_IG05: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, mov eax, r13d sub eax, edi cmp eax, 7
- ja G_M46668_IG14
+ ja SHORT G_M46668_IG07
mov edi, eax lea rax, [reloc @RWD00] mov eax, dword ptr [rax+4*rdi] lea rcx, G_M46668_IG02 add rax, rcx jmp rax
- ;; size=53 bbWeight=99.99 PerfScore 924.91
+ ;; size=49 bbWeight=99.99 PerfScore 924.91
G_M46668_IG06: ; bbWeight=12.64, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -124,10 +124,24 @@ G_M46668_IG06: ; bbWeight=12.64, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, ; gcrRegs +[rax] ; gcr arg pop 0 mov dword ptr [rax+0x08], r13d
- jmp G_M46668_IG14 - ;; size=59 bbWeight=12.64 PerfScore 151.69 -G_M46668_IG07: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ;; size=54 bbWeight=12.64 PerfScore 126.41 +G_M46668_IG07: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
+ inc r13d + cmp r13d, ebx + jl SHORT G_M46668_IG05 + ;; size=8 bbWeight=99.99 PerfScore 149.99 +G_M46668_IG08: ; bbWeight=0.01, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref + mov edi, -1 + mov esi, 2 + call <unknown method> + ; gcr arg pop 0 + inc r12d + cmp r12d, r14d + jge G_M46668_IG16 + jmp G_M46668_IG03 + ;; size=32 bbWeight=0.01 PerfScore 0.05 +G_M46668_IG09: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -146,9 +160,9 @@ G_M46668_IG07: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, ; gcrRegs +[rax] ; gcr arg pop 0 mov byte ptr [rax+0x08], 0
- jmp G_M46668_IG14 - ;; size=59 bbWeight=12.48 PerfScore 149.78 -G_M46668_IG08: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M46668_IG07 + ;; size=56 bbWeight=12.48 PerfScore 149.78 +G_M46668_IG10: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -173,53 +187,53 @@ G_M46668_IG08: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, ; gcr arg pop 0 vmovss xmm0, dword ptr [rbp-0x2C] vmovss dword ptr [rax+0x08], xmm0
- jmp G_M46668_IG14
+ jmp G_M46668_IG07
;; size=88 bbWeight=12.48 PerfScore 453.49
-G_M46668_IG09: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rdi, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rdi, gword ptr [r15+0x08] - ; gcrRegs +[rdi] - mov byte ptr [rax+0x08], r13b - mov rdx, rax - ; gcrRegs +[rdx] - movsxd rsi, r13d - call [CORINFO_HELP_ARRADDR_ST] - ; gcrRegs -[rax rdx rdi] - ; gcr arg pop 0 - mov rdi, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov byte ptr [rax+0x08], r13b - jmp G_M46668_IG14 - ;; size=59 bbWeight=12.48 PerfScore 149.78 -G_M46668_IG10: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rdi, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rdi, gword ptr [r15+0x08] - ; gcrRegs +[rdi] - mov word ptr [rax+0x08], r13w - mov rdx, rax - ; gcrRegs +[rdx] - movsxd rsi, r13d - call [CORINFO_HELP_ARRADDR_ST] - ; gcrRegs -[rax rdx rdi] - ; gcr arg pop 0 - mov rdi, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov word ptr [rax+0x08], r13w - jmp G_M46668_IG14 - ;; size=61 bbWeight=12.48 PerfScore 149.78
G_M46668_IG11: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rdi, gword ptr [r15+0x08] + ; gcrRegs +[rdi] + mov byte ptr [rax+0x08], r13b + mov rdx, rax + ; gcrRegs +[rdx] + movsxd rsi, r13d + call [CORINFO_HELP_ARRADDR_ST] + ; gcrRegs -[rax rdx rdi] + ; gcr arg pop 0 + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov byte ptr [rax+0x08], r13b + jmp G_M46668_IG07 + ;; size=59 bbWeight=12.48 PerfScore 149.78 +G_M46668_IG12: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov rdi, gword ptr [r15+0x08] + ; gcrRegs +[rdi] + mov word ptr [rax+0x08], r13w + mov rdx, rax + ; gcrRegs +[rdx] + movsxd rsi, r13d + call [CORINFO_HELP_ARRADDR_ST] + ; gcrRegs -[rax rdx rdi] + ; gcr arg pop 0 + mov rdi, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_NEWSFAST + ; gcrRegs +[rax] + ; gcr arg pop 0 + mov word ptr [rax+0x08], r13w + jmp G_M46668_IG07 + ;; size=61 bbWeight=12.48 PerfScore 149.78 +G_M46668_IG13: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -241,9 +255,9 @@ G_M46668_IG11: ; bbWeight=12.48, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, ; gcr arg pop 0 movsxd rdi, r13d mov qword ptr [rax+0x08], rdi
- jmp G_M46668_IG14
+ jmp G_M46668_IG07
;; size=65 bbWeight=12.48 PerfScore 156.02
-G_M46668_IG12: ; bbWeight=12.47, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+G_M46668_IG14: ; bbWeight=12.47, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -268,9 +282,9 @@ G_M46668_IG12: ; bbWeight=12.47, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, ; gcr arg pop 0 vmovsd xmm0, qword ptr [rbp-0x38] vmovsd qword ptr [rax+0x08], xmm0
- jmp SHORT G_M46668_IG14 - ;; size=85 bbWeight=12.47 PerfScore 478.07 -G_M46668_IG13: ; bbWeight=12.47, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ jmp G_M46668_IG07 + ;; size=88 bbWeight=12.47 PerfScore 478.07 +G_M46668_IG15: ; bbWeight=12.47, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST @@ -290,24 +304,10 @@ G_M46668_IG13: ; bbWeight=12.47, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, ; gcrRegs +[rax] ; gcr arg pop 0 mov word ptr [rax+0x08], r13w
- ;; size=56 bbWeight=12.47 PerfScore 124.71 -G_M46668_IG14: ; bbWeight=99.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - inc r13d - cmp r13d, ebx - jl G_M46668_IG05 - ;; size=12 bbWeight=99.99 PerfScore 149.99 -G_M46668_IG15: ; bbWeight=0.01, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - mov edi, -1 - mov esi, 2 - call <unknown method> - ; gcr arg pop 0 - inc r12d - cmp r12d, r14d - jl G_M46668_IG03 - ;; size=27 bbWeight=0.01 PerfScore 0.03
+ jmp G_M46668_IG07 + ;; size=61 bbWeight=12.47 PerfScore 149.66
G_M46668_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r15]
+ ; gcrRegs -[rax r15]
mov eax, 1 ;; size=5 bbWeight=0 PerfScore 0.00 G_M46668_IG17: ; bbWeight=0, epilog, nogc, extend @@ -321,19 +321,19 @@ G_M46668_IG17: ; bbWeight=0, epilog, nogc, extend ret ;; size=18 bbWeight=0 PerfScore 0.00 RWD00 dd G_M46668_IG06 - G_M46668_IG02
- dd G_M46668_IG07 - G_M46668_IG02 - dd G_M46668_IG08 - G_M46668_IG02
dd G_M46668_IG09 - G_M46668_IG02 dd G_M46668_IG10 - G_M46668_IG02 dd G_M46668_IG11 - G_M46668_IG02 dd G_M46668_IG12 - G_M46668_IG02 dd G_M46668_IG13 - G_M46668_IG02
+ dd G_M46668_IG14 - G_M46668_IG02 + dd G_M46668_IG15 - G_M46668_IG02
RWD32 dd 40400000h ; 3 RWD36 dd 00000000h RWD40 dq 3FD51EB851EB851Fh ; 0.33
-; Total bytes of code 782, prolog size 91, PerfScore 2910.02, instruction count 157, allocated bytes for code 782 (MethodHash=10ee49b3) for method DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)
+; Total bytes of code 775, prolog size 91, PerfScore 2909.70, instruction count 158, allocated bytes for code 775 (MethodHash=10ee49b3) for method DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)
; ============================================================ Unwind Info:

-1 (-0.12%) : 243545.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

@@ -106,7 +106,7 @@ G_M37647_IG06: ; bbWeight=98.96, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR mov edi, esi movzx rdi, byte ptr [rcx+rdi+0x10] cmp edi, 3
- ja SHORT G_M37647_IG09
+ ja SHORT G_M37647_IG08
mov esi, edi lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] @@ -114,7 +114,7 @@ G_M37647_IG06: ; bbWeight=98.96, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR add rdi, r8 jmp rdi ;; size=63 bbWeight=98.96 PerfScore 1533.89
-G_M37647_IG07: ; bbWeight=30.76, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M37647_IG07: ; bbWeight=30.76, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref
mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} mov dword ptr [rbp+0x74], eax @@ -131,10 +131,17 @@ G_M37647_IG07: ; bbWeight=30.76, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- jmp SHORT G_M37647_IG09 - ;; size=40 bbWeight=30.76 PerfScore 469.16 -G_M37647_IG08: ; bbWeight=18.46, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=38 bbWeight=30.76 PerfScore 407.63 +G_M37647_IG08: ; bbWeight=98.96, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V06}
+ inc eax + cmp eax, r13d + jl SHORT G_M37647_IG06 + ;; size=7 bbWeight=98.96 PerfScore 148.44 +G_M37647_IG09: ; bbWeight=0.04, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref + jmp G_M37647_IG17 + ;; size=5 bbWeight=0.04 PerfScore 0.08 +G_M37647_IG10: ; bbWeight=18.46, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} mov dword ptr [rbp+0x74], eax @@ -151,17 +158,10 @@ G_M37647_IG08: ; bbWeight=18.46, gcVars=0000000000000000 {}, gcrefRegs=C0 mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- ;; size=38 bbWeight=18.46 PerfScore 244.58 -G_M37647_IG09: ; bbWeight=98.96, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ jmp SHORT G_M37647_IG08 + ;; size=40 bbWeight=18.46 PerfScore 281.50 +G_M37647_IG11: ; bbWeight=24.99, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V06}
- inc eax - cmp eax, r13d - jl G_M37647_IG06 - ;; size=11 bbWeight=98.96 PerfScore 148.44 -G_M37647_IG10: ; bbWeight=0.04, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref - jmp G_M37647_IG17 - ;; size=5 bbWeight=0.04 PerfScore 0.08 -G_M37647_IG11: ; bbWeight=24.99, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} mov dword ptr [rbp+0x74], eax @@ -180,9 +180,9 @@ G_M37647_IG11: ; bbWeight=24.99, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- jmp SHORT G_M37647_IG09
+ jmp SHORT G_M37647_IG08
;; size=45 bbWeight=24.99 PerfScore 393.55
-G_M37647_IG12: ; bbWeight=24.75, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37647_IG12: ; bbWeight=24.75, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V06} mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} @@ -202,8 +202,8 @@ G_M37647_IG12: ; bbWeight=24.75, gcVars=0000000000000000 {}, gcrefRegs=C0 mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- jmp SHORT G_M37647_IG09 - ;; size=48 bbWeight=24.75 PerfScore 389.81
+ jmp G_M37647_IG08 + ;; size=51 bbWeight=24.75 PerfScore 389.81
G_M37647_IG13: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V06} mov edi, eax @@ -370,14 +370,14 @@ G_M37647_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { RWD00 dd G_M37647_IG11 - G_M37647_IG02 dd G_M37647_IG12 - G_M37647_IG02 dd G_M37647_IG07 - G_M37647_IG02
- dd G_M37647_IG08 - G_M37647_IG02
+ dd G_M37647_IG10 - G_M37647_IG02
RWD16 dd G_M37647_IG20 - G_M37647_IG02 dd G_M37647_IG21 - G_M37647_IG02 dd G_M37647_IG14 - G_M37647_IG02 dd G_M37647_IG15 - G_M37647_IG02
-; Total bytes of code 834, prolog size 96, PerfScore 3249.41, instruction count 210, allocated bytes for code 834 (MethodHash=73346cf0) for method EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
+; Total bytes of code 833, prolog size 96, PerfScore 3224.80, instruction count 210, allocated bytes for code 833 (MethodHash=73346cf0) for method EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
; ============================================================ Unwind Info:

-1 (-0.12%) : 243548.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

@@ -106,7 +106,7 @@ G_M37647_IG06: ; bbWeight=98.97, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR mov edi, esi movzx rdi, byte ptr [rcx+rdi+0x10] cmp edi, 3
- ja SHORT G_M37647_IG09
+ ja SHORT G_M37647_IG08
mov esi, edi lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] @@ -114,7 +114,7 @@ G_M37647_IG06: ; bbWeight=98.97, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR add rdi, r8 jmp rdi ;; size=63 bbWeight=98.97 PerfScore 1533.97
-G_M37647_IG07: ; bbWeight=30.35, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M37647_IG07: ; bbWeight=30.35, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref
mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} mov dword ptr [rbp+0x74], eax @@ -131,10 +131,17 @@ G_M37647_IG07: ; bbWeight=30.35, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- jmp SHORT G_M37647_IG09 - ;; size=40 bbWeight=30.35 PerfScore 462.81 -G_M37647_IG08: ; bbWeight=18.21, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=38 bbWeight=30.35 PerfScore 402.12 +G_M37647_IG08: ; bbWeight=98.97, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V06}
+ inc eax + cmp eax, r13d + jl SHORT G_M37647_IG06 + ;; size=7 bbWeight=98.97 PerfScore 148.45 +G_M37647_IG09: ; bbWeight=0.03, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref + jmp G_M37647_IG18 + ;; size=5 bbWeight=0.03 PerfScore 0.07 +G_M37647_IG10: ; bbWeight=18.21, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} mov dword ptr [rbp+0x74], eax @@ -151,17 +158,10 @@ G_M37647_IG08: ; bbWeight=18.21, gcVars=0000000000000000 {}, gcrefRegs=C0 mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- ;; size=38 bbWeight=18.21 PerfScore 241.27 -G_M37647_IG09: ; bbWeight=98.97, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ jmp SHORT G_M37647_IG08 + ;; size=40 bbWeight=18.21 PerfScore 277.69 +G_M37647_IG11: ; bbWeight=26.00, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V06}
- inc eax - cmp eax, r13d - jl G_M37647_IG06 - ;; size=11 bbWeight=98.97 PerfScore 148.45 -G_M37647_IG10: ; bbWeight=0.03, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref - jmp G_M37647_IG18 - ;; size=5 bbWeight=0.03 PerfScore 0.07 -G_M37647_IG11: ; bbWeight=26.00, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} mov dword ptr [rbp+0x74], eax @@ -180,9 +180,9 @@ G_M37647_IG11: ; bbWeight=26.00, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- jmp SHORT G_M37647_IG09
+ jmp SHORT G_M37647_IG08
;; size=45 bbWeight=26.00 PerfScore 409.55
-G_M37647_IG12: ; bbWeight=24.41, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37647_IG12: ; bbWeight=24.41, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V06} mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} @@ -202,8 +202,8 @@ G_M37647_IG12: ; bbWeight=24.41, gcVars=0000000000000000 {}, gcrefRegs=C0 mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- jmp SHORT G_M37647_IG09 - ;; size=48 bbWeight=24.41 PerfScore 384.38
+ jmp G_M37647_IG08 + ;; size=51 bbWeight=24.41 PerfScore 384.38
G_M37647_IG13: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V06} mov edi, eax @@ -372,14 +372,14 @@ G_M37647_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { RWD00 dd G_M37647_IG11 - G_M37647_IG02 dd G_M37647_IG12 - G_M37647_IG02 dd G_M37647_IG07 - G_M37647_IG02
- dd G_M37647_IG08 - G_M37647_IG02
+ dd G_M37647_IG10 - G_M37647_IG02
RWD16 dd G_M37647_IG21 - G_M37647_IG02 dd G_M37647_IG22 - G_M37647_IG02 dd G_M37647_IG15 - G_M37647_IG02 dd G_M37647_IG16 - G_M37647_IG02
-; Total bytes of code 834, prolog size 96, PerfScore 3250.21, instruction count 210, allocated bytes for code 834 (MethodHash=73346cf0) for method EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
+; Total bytes of code 833, prolog size 96, PerfScore 3225.93, instruction count 210, allocated bytes for code 833 (MethodHash=73346cf0) for method EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
; ============================================================ Unwind Info:

+17 (+3.20%) : 305032.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,48 +51,38 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdi ; gcrRegs +[rbx] ;; size=16 bbWeight=1 PerfScore 5.75
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG26
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.67 PerfScore 2.33 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG26 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG23
+ jbe G_M35244_IG22
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG26
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] lea rax, G_M35244_IG02 add rdi, rax jmp rdi
- ;; size=32 bbWeight=2 PerfScore 15.00 -G_M35244_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2 PerfScore 15.00 +G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, r15 ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -100,77 +90,77 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG12
+ je SHORT G_M35244_IG11
;; size=23 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rax+0x10] ;; size=4 bbWeight=1.09 PerfScore 2.18
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=11 bbWeight=2 PerfScore 3.50
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [r13], rsi
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1 PerfScore 4.25
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
- jmp SHORT G_M35244_IG18
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, 1
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=2 PerfScore 2.50
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] mov r15, r13 ; gcrRegs +[r15]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] xor r14d, r14d
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=5 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je G_M35244_IG28
+ je G_M35244_IG29
lea esi, [rdi-0x1A] cmp esi, 1
- jbe G_M35244_IG28
+ jbe G_M35244_IG29
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG28 - ;; size=34 bbWeight=2 PerfScore 13.00 -G_M35244_IG17: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ jbe G_M35244_IG29 + ;; size=38 bbWeight=2 PerfScore 13.00 +G_M35244_IG16: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, r15 ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -180,27 +170,27 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=12 bbWeight=0.32 PerfScore 1.12
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae SHORT G_M35244_IG25
+ jae SHORT G_M35244_IG24
;; size=6 bbWeight=1.28 PerfScore 5.12
-G_M35244_IG22: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae SHORT G_M35244_IG26
+ jae SHORT G_M35244_IG25
mov esi, r14d mov r15, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[r15]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=20 bbWeight=1.28 PerfScore 13.12
-G_M35244_IG23: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi r13 r15] mov rdi, rbx ; gcrRegs +[rdi] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -209,17 +199,28 @@ G_M35244_IG24: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.50
-G_M35244_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -229,18 +230,18 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[r15] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG29
+ je SHORT G_M35244_IG30
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32 ...

+17 (+3.20%) : 205401.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,48 +51,38 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdi ; gcrRegs +[rbx] ;; size=16 bbWeight=1 PerfScore 5.75
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.67 PerfScore 2.33 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG22
+ jbe G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG25
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] lea rax, G_M35244_IG02 add rdi, rax jmp rdi
- ;; size=32 bbWeight=2 PerfScore 15.00 -G_M35244_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2 PerfScore 15.00 +G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, r15 ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -100,77 +90,77 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG12
+ je SHORT G_M35244_IG11
;; size=23 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rax+0x10] ;; size=4 bbWeight=1.09 PerfScore 2.18
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=11 bbWeight=2 PerfScore 3.50
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [r13], rsi
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1 PerfScore 4.25
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
- jmp SHORT G_M35244_IG18
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, 1
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=2 PerfScore 2.50
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] mov r15, r13 ; gcrRegs +[r15]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] xor r14d, r14d
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=5 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je G_M35244_IG27
+ je G_M35244_IG28
lea esi, [rdi-0x1A] cmp esi, 1
- jbe G_M35244_IG27
+ jbe G_M35244_IG28
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG27 - ;; size=34 bbWeight=2 PerfScore 13.00 -G_M35244_IG17: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ jbe G_M35244_IG28 + ;; size=38 bbWeight=2 PerfScore 13.00 +G_M35244_IG16: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, r15 ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -180,25 +170,25 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=11 bbWeight=0.32 PerfScore 0.48
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae SHORT G_M35244_IG24
+ jae SHORT G_M35244_IG23
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae SHORT G_M35244_IG25
+ jae SHORT G_M35244_IG24
mov esi, r14d mov r15, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[r15]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=26 bbWeight=1.28 PerfScore 18.24
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi r13 r15] mov rdi, rbx ; gcrRegs +[rdi] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -207,17 +197,28 @@ G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.50
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -227,18 +228,18 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[r15] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG28
+ je SHORT G_M35244_IG29
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32
- je G_M35244_IG17
+ je G_M35244_IG16
;; size=21 bbWeight=0 PerfScore 0.00 ...

+17 (+3.20%) : 296158.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,69 +51,59 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdi ; gcrRegs +[rbx] ;; size=16 bbWeight=1 PerfScore 5.75
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.67 PerfScore 2.33 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG22
+ jbe G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG25
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] lea rax, G_M35244_IG02 add rdi, rax jmp rdi
- ;; size=32 bbWeight=2 PerfScore 15.00 -G_M35244_IG06: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=2 PerfScore 15.00 +G_M35244_IG05: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r15] mov r14d, 1 ;; size=6 bbWeight=0.45 PerfScore 0.11
-G_M35244_IG07: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=11 bbWeight=2.00 PerfScore 3.50
-G_M35244_IG08: ; bbWeight=1.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [r13], rsi
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1.00 PerfScore 4.25
-G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
- jmp SHORT G_M35244_IG18
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35244_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, r15 ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -121,57 +111,57 @@ G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG06
+ je SHORT G_M35244_IG05
;; size=23 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG12: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG07
+ jmp SHORT G_M35244_IG06
;; size=6 bbWeight=1.09 PerfScore 4.36
-G_M35244_IG13: ; bbWeight=2.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[r13] test r13, r13
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=2.00 PerfScore 2.50
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] mov r15, r13 ; gcrRegs +[r15]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] xor r14d, r14d
- jmp SHORT G_M35244_IG07
+ jmp SHORT G_M35244_IG06
;; size=5 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je G_M35244_IG27
+ je G_M35244_IG28
lea esi, [rdi-0x1A] cmp esi, 1
- jbe G_M35244_IG27
+ jbe G_M35244_IG28
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG27 - ;; size=34 bbWeight=2 PerfScore 13.00 -G_M35244_IG17: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ jbe G_M35244_IG28 + ;; size=38 bbWeight=2 PerfScore 13.00 +G_M35244_IG16: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, r15 ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -181,25 +171,25 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=11 bbWeight=0.32 PerfScore 0.48
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae SHORT G_M35244_IG24
+ jae SHORT G_M35244_IG23
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae SHORT G_M35244_IG25
+ jae SHORT G_M35244_IG24
mov esi, r14d mov r15, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[r15]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=26 bbWeight=1.28 PerfScore 18.24
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi r13 r15] mov rdi, rbx ; gcrRegs +[rdi] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -208,17 +198,28 @@ G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.50
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx rdi] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -228,18 +229,18 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[r15] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG28
+ je SHORT G_M35244_IG29
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32
- je G_M35244_IG17
+ je G_M35244_IG16
...

libraries_tests.run.linux.x64.Release.mch

-16 (-1.84%) : 625934.dasm - System.Collections.Concurrent.ConcurrentQueue`1+d__26[byte]:MoveNext():ubyte:this (Tier1)

@@ -94,16 +94,16 @@ G_M19889_IG05: ; bbWeight=0.95, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 mov rax, gword ptr [r14+0x08] ; gcrRegs +[rax] cmp r13d, dword ptr [rax+0x08]
- jae G_M19889_IG29
+ jae G_M19889_IG28
mov eax, dword ptr [rax+8*r15+0x10] ; gcrRegs -[rax] and eax, dword ptr [r14+0x18] cmp eax, r12d
- jne G_M19889_IG37
+ jne G_M19889_IG36
mov rax, gword ptr [r14+0x08] ; gcrRegs +[rax] cmp r13d, dword ptr [rax+0x08]
- jae G_M19889_IG29
+ jae G_M19889_IG28
movsx rax, byte ptr [rax+8*r15+0x14] ; gcrRegs -[rax] mov byte ptr [rbx+0x38], al @@ -126,7 +126,7 @@ G_M19889_IG07: ; bbWeight=1.00, epilog, nogc, extend G_M19889_IG08: ; bbWeight=0.05, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rbx] cmp r15d, 5
- ja G_M19889_IG27
+ ja G_M19889_IG24
mov edi, r15d lea rax, [reloc @RWD00] mov eax, dword ptr [rax+4*rdi] @@ -171,7 +171,7 @@ G_M19889_IG12: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, G_M19889_IG13: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov edi, dword ptr [rbx+0x30] cmp edi, dword ptr [rbx+0x2C]
- jl G_M19889_IG30
+ jl G_M19889_IG29
;; size=12 bbWeight=0.00 PerfScore 0.01 G_M19889_IG14: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x08] @@ -179,7 +179,7 @@ G_M19889_IG14: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r13, gword ptr [rbx+0x10] ; gcrRegs +[r13] cmp rdi, r13
- je G_M19889_IG27
+ je G_M19889_IG24
mov r12, gword ptr [rdi+0x10] ; gcrRegs +[r12] lea rdi, bword ptr [rbx+0x18] @@ -257,7 +257,7 @@ G_M19889_IG20: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, cmp r15, gword ptr [rbx+0x10] jne G_M19889_IG15 ;; size=30 bbWeight=0.00 PerfScore 0.04
-G_M19889_IG21: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19889_IG21: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] xor rdi, rdi ; gcrRegs +[rdi] @@ -275,8 +275,8 @@ G_M19889_IG21: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, xor esi, esi mov dword ptr [rbx+0x30], esi cmp dword ptr [rbx+0x30], edi
- jge G_M19889_IG27 - ;; size=41 bbWeight=0.00 PerfScore 0.02
+ jge SHORT G_M19889_IG24 + ;; size=37 bbWeight=0.00 PerfScore 0.02
G_M19889_IG22: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x10] ; gcrRegs +[rdi] @@ -298,9 +298,19 @@ G_M19889_IG23: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ;; size=20 bbWeight=0.01 PerfScore 0.11 G_M19889_IG24: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx]
- jmp G_M19889_IG27 - ;; size=5 bbWeight=0.00 PerfScore 0.00 -G_M19889_IG25: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ xor eax, eax + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M19889_IG25: ; bbWeight=0.00, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.00 PerfScore 0.00 +G_M19889_IG26: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] mov dword ptr [rbx+0x20], -1 mov rdi, gword ptr [rbx+0x08] @@ -330,10 +340,10 @@ G_M19889_IG25: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] cmp rdi, gword ptr [rbx+0x10]
- je G_M19889_IG32
+ je SHORT G_M19889_IG31
mov r14d, dword ptr [rdi+0xA0]
- ;; size=88 bbWeight=0.00 PerfScore 0.04 -G_M19889_IG26: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=84 bbWeight=0.00 PerfScore 0.04 +G_M19889_IG27: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] @@ -353,28 +363,15 @@ G_M19889_IG26: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, and edi, r14d mov dword ptr [rbx+0x2C], edi cmp eax, edi
- jl SHORT G_M19889_IG33
+ jl SHORT G_M19889_IG32
jmp G_M19889_IG09 ;; size=56 bbWeight=0.00 PerfScore 0.02
-G_M19889_IG27: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M19889_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r13]
- xor eax, eax - ;; size=2 bbWeight=0.00 PerfScore 0.00 -G_M19889_IG28: ; bbWeight=0.00, epilog, nogc, extend - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=0.00 PerfScore 0.00 -G_M19889_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M19889_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19889_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] @@ -386,22 +383,22 @@ G_M19889_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov dword ptr [rbx+0x20], 3 jmp G_M19889_IG06 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M19889_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19889_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x20], -1 mov ecx, dword ptr [rbx+0x30] inc ecx mov dword ptr [rbx+0x30], ecx jmp G_M19889_IG13 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M19889_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19889_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rbx+0x24]
- jmp G_M19889_IG26 - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M19889_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M19889_IG27 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M19889_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbx+0x30], eax
- jmp SHORT G_M19889_IG36
+ jmp SHORT G_M19889_IG35
;; size=5 bbWeight=0 PerfScore 0.00
-G_M19889_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19889_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] mov esi, dword ptr [rbx+0x30] @@ -412,19 +409,19 @@ G_M19889_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov dword ptr [rbx+0x20], 1 jmp G_M19889_IG06 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M19889_IG35: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M19889_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x20], -1 mov ecx, dword ptr [rbx+0x30] inc ecx mov dword ptr [rbx+0x30], ecx ;; size=15 bbWeight=0 PerfScore 0.00
-G_M19889_IG36: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M19889_IG35: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbx+0x30] cmp edi, dword ptr [rbx+0x2C]
- jl SHORT G_M19889_IG34
+ jl SHORT G_M19889_IG33
jmp G_M19889_IG14 ;; size=13 bbWeight=0 PerfScore 0.00
-G_M19889_IG37: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M19889_IG36: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r14] lea rdi, [rbp-0x30] mov esi, 20 @@ -432,15 +429,15 @@ G_M19889_IG37: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M19889_IG05 ;; size=20 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M19889_IG25 - G_M19889_IG02 - dd G_M19889_IG35 - G_M19889_IG02
+RWD00 dd G_M19889_IG26 - G_M19889_IG02 + dd G_M19889_IG34 - G_M19889_IG02
dd G_M19889_IG11 - G_M19889_IG02
- dd G_M19889_IG31 - G_M19889_IG02
+ dd G_M19889_IG30 - G_M19889_IG02
dd G_M19889_IG03 - G_M19889_IG02 dd G_M19889_IG23 - G_M19889_IG02
-; Total bytes of code 868, prolog size 19, PerfScore 61.55, instruction count 222, allocated bytes for code 868 (MethodHash=a906b24e) for method System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[byte]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 852, prolog size 19, PerfScore 61.54, instruction count 221, allocated bytes for code 852 (MethodHash=a906b24e) for method System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[byte]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

-31 (-1.57%) : 466681.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)

@@ -101,23 +101,23 @@ G_M38617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=39 bbWeight=1 PerfScore 10.50 G_M38617_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref test rbx, rbx
- je G_M38617_IG18
+ je G_M38617_IG36
mov rdi, 0xD1FFAB1E ; System.Xml.Xsl.XmlQueryTypeFactory+SequenceType cmp qword ptr [r15], rdi
- jne G_M38617_IG20
+ jne G_M38617_IG38
mov rdi, gword ptr [r15+0x10] ; gcrRegs +[rdi] mov rax, 0xD1FFAB1E ; System.Xml.Xsl.XmlQueryTypeFactory+ItemType cmp qword ptr [rdi], rax
- jne G_M38617_IG19
+ jne G_M38617_IG37
mov r14d, dword ptr [rdi+0x0C] ;; size=55 bbWeight=1 PerfScore 13.75 G_M38617_IG03: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] cmp r14d, 2
- jg G_M38617_IG22
+ jg G_M38617_IG12
cmp r14d, 1
- jne G_M38617_IG21
+ jne G_M38617_IG11
mov rdi, rbx ; gcrRegs +[rdi] call <unknown method> @@ -132,7 +132,7 @@ G_M38617_IG03: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcr arg pop 0 mov rdi, 0xD1FFAB1E ; System.Xml.Xsl.XmlQueryTypeFactory+ItemType cmp qword ptr [rax], rdi
- jne G_M38617_IG15
+ jne G_M38617_IG10
;; size=59 bbWeight=1 PerfScore 11.50 G_M38617_IG04: ; bbWeight=0.96, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, byref mov r12d, dword ptr [rax+0x0C] @@ -140,18 +140,18 @@ G_M38617_IG04: ; bbWeight=0.96, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0 G_M38617_IG05: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] cmp r12d, 1
- je G_M38617_IG36
+ je G_M38617_IG33
cmp r12d, 2
- je G_M38617_IG35
+ je G_M38617_IG32
add r12d, -12
- jne G_M38617_IG30
+ jne G_M38617_IG27
;; size=30 bbWeight=1 PerfScore 3.75 G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V00} mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] cmp r13, rdi
- je G_M38617_IG33
+ je G_M38617_IG30
mov rdi, 0xD1FFAB1E ; System.Xml.Schema.XmlAtomicValue ; gcrRegs -[rdi] call CORINFO_HELP_NEWSFAST @@ -212,7 +212,7 @@ G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=2008 { mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] cmp esi, dword ptr [rdi+0x08]
- jge G_M38617_IG34
+ jge G_M38617_IG31
;; size=182 bbWeight=1 PerfScore 30.50 G_M38617_IG07: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi] @@ -227,81 +227,22 @@ G_M38617_IG07: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi r13] ; gcr arg pop 0
- jmp G_M38617_IG16 - ;; size=29 bbWeight=1 PerfScore 9.00 -G_M38617_IG08: ; bbWeight=0, gcVars=0000000000140100 {V00 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rbx] - ; GC ptr vars +{V00 V06 V08 V09 V18 V20} - jmp SHORT G_M38617_IG10 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M38617_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, gword ptr [rbp-0x40] - ; gcrRegs +[rdi] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rdi] +[rax] - ; gcr arg pop 0 - mov rdi, rax - ; gcrRegs +[rdi] - call [System.Xml.Xsl.Runtime.XmlQueryRuntime:EnsureNavigator(System.Object):System.Xml.XPath.XPathNavigator] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - mov rsi, rax - ; gcrRegs +[rsi] - mov rdi, gword ptr [rbp-0x38] - ; gcrRegs +[rdi] - call [System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:Add(System.__Canon):this] - ; gcrRegs -[rax rsi rdi] - ; gcr arg pop 0 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M38617_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rdi, gword ptr [rbp-0x40] - ; gcrRegs +[rdi] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rdi] - ; gcr arg pop 0 - test eax, eax - jne SHORT G_M38617_IG09 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M38617_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, rsp - call G_M38617_IG39 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M38617_IG12: ; bbWeight=0, nogc, extend - nop - ;; size=1 bbWeight=0 PerfScore 0.00 -G_M38617_IG13: ; bbWeight=0, gcVars=0000000000040100 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V08 V09 V18 V20} - mov rdi, gword ptr [rbp-0x38] - ; gcrRegs +[rdi] - mov rbx, rdi - ; gcrRegs +[rbx] - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M38617_IG14: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rdi] - ; GC ptr vars -{V06} - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdi, 0xD1FFAB1E ; System.Xml.Xsl.Runtime.XmlQueryNodeSequence - call CORINFO_HELP_CHKCASTCLASS - ; gcrRegs -[rbx rsi] +[rax] - ; gcr arg pop 0 - mov rdi, rax - ; gcrRegs +[rdi] - mov rax, gword ptr [rbp-0x30] - mov rsi, gword ptr [rax+0x68] - ; gcrRegs +[rsi] - cmp dword ptr [rdi], edi - ; GC ptr vars -{V00} - call [System.Xml.Xsl.Runtime.XmlQueryNodeSequence:DocOrderDistinct(System.Collections.Generic.IComparer`1[System.Xml.XPath.XPathNavigator]):System.Xml.Xsl.Runtime.XmlQueryNodeSequence:this] - ; gcrRegs -[rsi rdi] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - jmp SHORT G_M38617_IG16 - ;; size=42 bbWeight=0 PerfScore 0.00 -G_M38617_IG15: ; bbWeight=0.04, gcVars=0000000000000100 {V00}, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=24 bbWeight=1 PerfScore 7.00 +G_M38617_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rax, rbx + ; gcrRegs +[rax] + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M38617_IG09: ; bbWeight=1, epilog, nogc, extend + add rsp, 40 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=1 PerfScore 4.25 +G_M38617_IG10: ; bbWeight=0.04, gcVars=0000000000000100 {V00}, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r13] ; GC ptr vars +{V00 V08} mov rdi, rax @@ -315,108 +256,34 @@ G_M38617_IG15: ; bbWeight=0.04, gcVars=0000000000000100 {V00}, gcrefRegs= mov r12d, eax jmp G_M38617_IG05 ;; size=21 bbWeight=0.04 PerfScore 0.38
-G_M38617_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r13] - ; GC ptr vars -{V00 V08} - mov rax, rbx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M38617_IG17: ; bbWeight=1, epilog, nogc, extend - add rsp, 40 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=1 PerfScore 4.25 -G_M38617_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax rbx] - call [<unknown method>] - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov r14, rax - ; gcrRegs +[r14] - mov rdi, 0xD1FFAB1E ; <unknown class> - mov esi, 1 - call CORINFO_HELP_NEWARR_1_OBJ - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - mov gword ptr [rbx+0x10], rdi - mov rdi, 0xD1FFAB1E ; <unknown class> - ; gcrRegs -[rdi] - call CORINFO_HELP_NEWSFAST - ; gcr arg pop 0 - mov r12, rax - ; gcrRegs +[r12] - mov rdi, r12 - ; gcrRegs +[rdi] - mov rsi, r14 - ; gcrRegs +[rsi] - mov rdx, rbx - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rax rdx rbx rsi rdi r14] - ; gcr arg pop 0 - mov rdi, r12 - ; gcrRegs +[rdi] - call CORINFO_HELP_THROW - ; gcrRegs -[rdi r12] - ; gcr arg pop 0 - ;; size=87 bbWeight=0 PerfScore 0.00 -G_M38617_IG19: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rdi r15] - ; GC ptr vars +{V00 V08} - mov rax, qword ptr [rdi] - mov rax, qword ptr [rax+0x60] - call [rax+0x38]<unknown method> - ; gcrRegs -[rdi] - ; gcr arg pop 0 - mov r14d, eax - jmp G_M38617_IG03 - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M38617_IG20: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - mov rdi, r15 - ; gcrRegs +[rdi] - mov rax, qword ptr [r15] - mov rax, qword ptr [rax+0x60] - call [rax+0x38]<unknown method> - ; gcrRegs -[rdi] - ; gcr arg pop 0 - mov r14d, eax - jmp G_M38617_IG03 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M38617_IG21: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M38617_IG11: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] +[r15]
...

-12 (-1.32%) : 631077.dasm - System.Collections.Concurrent.ConcurrentQueue`1+d__26[System.UInt128]:MoveNext():ubyte:this (Tier1)

@@ -111,16 +111,16 @@ G_M14029_IG05: ; bbWeight=0.96, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 mov rax, gword ptr [r14+0x08] ; gcrRegs +[rax] cmp r13d, dword ptr [rax+0x08]
- jae G_M14029_IG29
+ jae G_M14029_IG28
mov eax, dword ptr [rax+r15+0x10] ; gcrRegs -[rax] and eax, dword ptr [r14+0x18] cmp eax, r12d
- jne G_M14029_IG37
+ jne G_M14029_IG36
mov rax, gword ptr [r14+0x08] ; gcrRegs +[rax] cmp r13d, dword ptr [rax+0x08]
- jae G_M14029_IG29
+ jae G_M14029_IG28
vmovups xmm0, xmmword ptr [rax+r15+0x20] vmovups xmmword ptr [rbx+0x38], xmm0 mov dword ptr [rbx+0x20], 4 @@ -142,7 +142,7 @@ G_M14029_IG07: ; bbWeight=1.00, epilog, nogc, extend G_M14029_IG08: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rbx] cmp r15d, 5
- ja G_M14029_IG27
+ ja G_M14029_IG24
mov edi, r15d lea rax, [reloc @RWD00] mov eax, dword ptr [rax+4*rdi] @@ -191,7 +191,7 @@ G_M14029_IG12: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, G_M14029_IG13: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov edi, dword ptr [rbx+0x30] cmp edi, dword ptr [rbx+0x2C]
- jl G_M14029_IG30
+ jl G_M14029_IG29
;; size=12 bbWeight=0.00 PerfScore 0.01 G_M14029_IG14: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, gword ptr [rbx+0x08] @@ -199,7 +199,7 @@ G_M14029_IG14: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r15, gword ptr [rbx+0x10] ; gcrRegs +[r15] cmp rdi, r15
- je G_M14029_IG27
+ je G_M14029_IG24
mov r14, gword ptr [rdi+0x10] ; gcrRegs +[r14] lea rdi, bword ptr [rbx+0x18] @@ -277,7 +277,7 @@ G_M14029_IG20: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, cmp r15, gword ptr [rbx+0x10] jne G_M14029_IG15 ;; size=30 bbWeight=0.00 PerfScore 0.04
-G_M14029_IG21: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M14029_IG21: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15] xor rdi, rdi ; gcrRegs +[rdi] @@ -295,8 +295,8 @@ G_M14029_IG21: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, xor esi, esi mov dword ptr [rbx+0x30], esi cmp dword ptr [rbx+0x30], edi
- jge G_M14029_IG27 - ;; size=41 bbWeight=0.00 PerfScore 0.02
+ jge SHORT G_M14029_IG24 + ;; size=37 bbWeight=0.00 PerfScore 0.02
G_M14029_IG22: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref lea r14, bword ptr [rbx+0x38] ; byrRegs +[r14] @@ -322,9 +322,19 @@ G_M14029_IG23: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ;; size=20 bbWeight=0.01 PerfScore 0.09 G_M14029_IG24: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx]
- jmp G_M14029_IG27 - ;; size=5 bbWeight=0.00 PerfScore 0.00 -G_M14029_IG25: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ xor eax, eax + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M14029_IG25: ; bbWeight=0.00, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.00 PerfScore 0.00 +G_M14029_IG26: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov dword ptr [rbx+0x20], -1 mov rdi, gword ptr [rbx+0x08] @@ -354,10 +364,10 @@ G_M14029_IG25: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] cmp rdi, gword ptr [rbx+0x10]
- je G_M14029_IG32
+ je G_M14029_IG31
mov r13d, dword ptr [rdi+0xA0] ;; size=88 bbWeight=0.00 PerfScore 0.04
-G_M14029_IG26: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M14029_IG27: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] @@ -377,28 +387,15 @@ G_M14029_IG26: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, and edi, r13d mov dword ptr [rbx+0x2C], edi cmp eax, edi
- jl SHORT G_M14029_IG33
+ jl SHORT G_M14029_IG32
jmp G_M14029_IG09 ;; size=57 bbWeight=0.00 PerfScore 0.02
-G_M14029_IG27: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M14029_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r12]
- xor eax, eax - ;; size=2 bbWeight=0.00 PerfScore 0.00 -G_M14029_IG28: ; bbWeight=0.00, epilog, nogc, extend - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=0.00 PerfScore 0.00 -G_M14029_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M14029_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M14029_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] lea r15, bword ptr [rbx+0x38] ; byrRegs +[r15] @@ -413,7 +410,7 @@ G_M14029_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov dword ptr [rbx+0x20], 3 jmp G_M14029_IG06 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M14029_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M14029_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[r15] mov dword ptr [rbx+0x20], -1 mov ecx, dword ptr [rbx+0x30] @@ -421,15 +418,15 @@ G_M14029_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov dword ptr [rbx+0x30], ecx jmp G_M14029_IG13 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M14029_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M14029_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r13d, dword ptr [rbx+0x24]
- jmp G_M14029_IG26 - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M14029_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M14029_IG27 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M14029_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbx+0x30], eax
- jmp SHORT G_M14029_IG36
+ jmp SHORT G_M14029_IG35
;; size=5 bbWeight=0 PerfScore 0.00
-G_M14029_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M14029_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea r15, bword ptr [rbx+0x38] ; byrRegs +[r15] mov rdi, gword ptr [rbx+0x08] @@ -443,20 +440,20 @@ G_M14029_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov dword ptr [rbx+0x20], 1 jmp G_M14029_IG06 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M14029_IG35: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M14029_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; byrRegs -[r15] mov dword ptr [rbx+0x20], -1 mov ecx, dword ptr [rbx+0x30] inc ecx mov dword ptr [rbx+0x30], ecx ;; size=15 bbWeight=0 PerfScore 0.00
-G_M14029_IG36: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M14029_IG35: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rbx+0x30] cmp edi, dword ptr [rbx+0x2C]
- jl SHORT G_M14029_IG34
+ jl SHORT G_M14029_IG33
jmp G_M14029_IG14 ;; size=13 bbWeight=0 PerfScore 0.00
-G_M14029_IG37: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M14029_IG36: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
; gcrRegs +[r14] lea rdi, [rbp-0x30] mov esi, 20 @@ -464,15 +461,15 @@ G_M14029_IG37: ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M14029_IG05 ;; size=20 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M14029_IG25 - G_M14029_IG02 - dd G_M14029_IG35 - G_M14029_IG02
+RWD00 dd G_M14029_IG26 - G_M14029_IG02 + dd G_M14029_IG34 - G_M14029_IG02
dd G_M14029_IG11 - G_M14029_IG02
- dd G_M14029_IG31 - G_M14029_IG02
+ dd G_M14029_IG30 - G_M14029_IG02
dd G_M14029_IG03 - G_M14029_IG02 dd G_M14029_IG23 - G_M14029_IG02
-; Total bytes of code 911, prolog size 19, PerfScore 63.08, instruction count 231, allocated bytes for code 911 (MethodHash=df0cc932) for method System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[System.UInt128]:MoveNext():ubyte:this (Tier1)
+; Total bytes of code 899, prolog size 19, PerfScore 63.08, instruction count 230, allocated bytes for code 899 (MethodHash=df0cc932) for method System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[System.UInt128]:MoveNext():ubyte:this (Tier1)
; ============================================================ Unwind Info:

+16 (+0.93%) : 700531.dasm - System.Text.RegularExpressions.Tests.MonoTests+d__1:MoveNext():ubyte:this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4359
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4359
; 9 inlinees with PGO data; 14 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; @@ -14,7 +14,7 @@ ;* V02 loc1 [V02 ] ( 0, 0 ) int -> zero-ref ;* V03 loc2 [V03 ] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 8, 13.50) ref -> r12 class-hnd exact "dup spill" <<unknown class>>
+; V05 tmp1 [V05,T01] ( 8, 13.50) ref -> rbx class-hnd exact "dup spill" <<unknown class>>
; V06 tmp2 [V06,T02] ( 3, 5.06) ref -> rax class-hnd exact "Single-def Box Helper" <<unknown class>> ; V07 tmp3 [V07,T11] ( 2, 3.38) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.__Canon> ; V08 tmp4 [V08,T03] ( 3, 5.06) ref -> rax class-hnd exact "Single-def Box Helper" <<unknown class>> @@ -22,13 +22,13 @@ ; V10 tmp6 [V10,T13] ( 2, 3.38) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.__Canon> ; V11 tmp7 [V11,T14] ( 2, 3.38) ref -> rsi class-hnd exact "Strict ordering of exceptions for Array store" <System.String> ; V12 tmp8 [V12,T51] ( 2, 0.00) ref -> rdx class-hnd "dup spill" <<unknown class>>
-; V13 tmp9 [V13,T56] ( 2, 0.00) int -> r14 "impSpillLclRefs"
+; V13 tmp9 [V13,T56] ( 2, 0.00) int -> rbx "impSpillLclRefs"
; V14 tmp10 [V14,T52] ( 2, 0.00) ref -> r15 class-hnd exact "impSpillLclRefs" <<unknown class>> ;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref ;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref ;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref ; V18 tmp14 [V18,T57] ( 4, 0.00) ref -> rdx
-; V19 tmp15 [V19,T58] ( 5, 0.00) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp15 [V19,T58] ( 5, 0.00) ref -> r13 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V20 tmp16 [V20,T16] ( 8, 2.49) ref -> rbx class-hnd exact "dup spill" <<unknown class>> ; V21 tmp17 [V21,T22] ( 3, 0.93) ref -> rax class-hnd exact "Single-def Box Helper" <<unknown class>> ; V22 tmp18 [V22,T30] ( 2, 0.62) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.__Canon> @@ -39,7 +39,7 @@ ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "spilling ret_expr" <System.Text.RegularExpressions.Tests.RegexHelpers+<get_AvailableEngines>d__12> ; V28 tmp24 [V28,T64] ( 2, 0.00) ref -> rax "guarded devirt return temp" ;* V29 tmp25 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Tests.RegexHelpers+<get_AvailableEngines>d__12>
-; V30 tmp26 [V30,T62] ( 3, 0.00) int -> r12 "guarded devirt return temp"
+; V30 tmp26 [V30,T62] ( 3, 0.00) int -> r15 "guarded devirt return temp"
; V31 tmp27 [V31,T49] ( 4, 0.01) ref -> rax "guarded devirt arg temp" ;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Tests.RegexHelpers+<get_AvailableEngines>d__12> ; V33 tmp29 [V33,T59] ( 3, 0.00) int -> rax "guarded devirt return temp" @@ -107,7 +107,7 @@ ; V95 PSPSym [V95,T21] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym" ; V96 cse0 [V96,T15] ( 3, 2.53) int -> rsi "CSE - moderate" ; V97 cse1 [V97,T50] ( 5, 0.00) long -> rbx multi-def "CSE - conservative"
-; V98 cse2 [V98,T60] ( 3, 0.00) long -> r13 "CSE - conservative"
+; V98 cse2 [V98,T60] ( 3, 0.00) long -> r14 "CSE - conservative"
; ; Lcl frame size = 56 @@ -124,119 +124,43 @@ G_M22758_IG01: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, mov gword ptr [rbp-0x40], rdi ; GC ptr vars +{V00} ;; size=27 bbWeight=1 PerfScore 8.75
-G_M22758_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22758_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi] mov ebx, dword ptr [rdi+0x30] cmp ebx, 1
- jne SHORT G_M22758_IG05 - ;; size=8 bbWeight=1 PerfScore 3.25
+ jne G_M22758_IG09 + ;; size=12 bbWeight=1 PerfScore 3.25
G_M22758_IG03: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref mov dword ptr [rdi+0x30], -3 test byte ptr [rdi+0x58], 1
- je G_M22758_IG29
+ jne G_M22758_IG10
;; size=17 bbWeight=0.84 PerfScore 4.22
-G_M22758_IG04: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - jmp G_M22758_IG37 - ;; size=5 bbWeight=0.16 PerfScore 0.31 -G_M22758_IG05: ; bbWeight=0.16, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - cmp ebx, 2 - ja G_M22758_IG13 - mov eax, ebx - lea rcx, [reloc @RWD00] - mov ecx, dword ptr [rcx+4*rax] - lea rdx, G_M22758_IG02 - add rcx, rdx - jmp rcx - ;; size=33 bbWeight=0.16 PerfScore 1.13 -G_M22758_IG06: ; bbWeight=0.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - mov dword ptr [rdi+0x38], r12d - mov edi, dword ptr [rdi+0x38] - ; gcrRegs -[rdi] - call [System.Text.RegularExpressions.Tests.MonoTests:<ValidateRegex_MemberData>g__Cases|1_0(int):System.Collections.Generic.IEnumerable`1[System.ValueTuple`4[System.String,int,System.String,System.String]]]
+G_M22758_IG04: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + xor rsi, rsi + ; gcrRegs +[rsi] + mov gword ptr [rdi+0x28], rsi + ;; size=6 bbWeight=0.84 PerfScore 1.06 +G_M22758_IG05: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] + mov qword ptr [rdi+0x40], rsi + mov qword ptr [rdi+0x48], rsi + mov qword ptr [rdi+0x50], rsi + mov qword ptr [rdi+0x58], rsi + mov esi, dword ptr [rdi+0x3C] + inc esi + mov dword ptr [rdi+0x3C], esi + mov rax, gword ptr [rdi+0x20]
; gcrRegs +[rax]
- ; gcr arg pop 0 - mov rsi, rax - ; gcrRegs +[rsi] - mov rdi, 0xD1FFAB1E ; <unknown method> - call [System.Linq.Enumerable:ToArray[System.ValueTuple`4[System.__Canon,int,System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`4[System.__Canon,int,System.__Canon,System.__Canon]]):System.ValueTuple`4[System.__Canon,int,System.__Canon,System.__Canon][]] - ; gcrRegs -[rsi] - ; gcr arg pop 0 - mov rdi, gword ptr [rbp-0x40] - ; gcrRegs +[rdi] - lea rdi, bword ptr [rdi+0x18] - ; gcrRegs -[rdi] - ; byrRegs +[rdi] - mov rsi, rax - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi] - ; byrRegs -[rdi] - mov rdi, gword ptr [rbp-0x40] - ; gcrRegs +[rdi] - mov r14d, dword ptr [rdi+0x38] - mov r15, gword ptr [rdi+0x18] - ; gcrRegs +[r15] - mov r13, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov rdx, gword ptr [r13] - ; gcrRegs +[rdx] - test rdx, rdx - je G_M22758_IG36 - ;; size=83 bbWeight=0.00 PerfScore 0.02 -G_M22758_IG07: ; bbWeight=0.00, gcrefRegs=8004 {rdx r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - mov rsi, r15 - ; gcrRegs +[rsi] - mov rdi, 0xD1FFAB1E ; <unknown method> - call [System.Linq.Enumerable:Select[System.ValueTuple`4[System.__Canon,int,System.__Canon,System.__Canon],System.ValueTuple`4[System.__Canon,System.__Canon,System.Nullable`1[int],System.Nullable`1[System.TimeSpan]]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`4[System.__Canon,int,System.__Canon,System.__Canon]],System.Func`2[System.ValueTuple`4[System.__Canon,int,System.__Canon,System.__Canon],System.ValueTuple`4[System.__Canon,System.__Canon,System.Nullable`1[int],System.Nullable`1[System.TimeSpan]]]):System.Collections.Generic.IEnumerable`1[System.ValueTuple`4[System.__Canon,System.__Canon,System.Nullable`1[int],System.Nullable`1[System.TimeSpan]]]] - ; gcrRegs -[rdx rsi r15] +[rax] - ; gcr arg pop 0 - mov rsi, rax - ; gcrRegs +[rsi] - mov rdi, 0xD1FFAB1E ; <unknown method> - call [System.Linq.Enumerable:ToArray[System.ValueTuple`4[System.__Canon,System.__Canon,System.Nullable`1[int],System.Nullable`1[System.TimeSpan]]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`4[System.__Canon,System.__Canon,System.Nullable`1[int],System.Nullable`1[System.TimeSpan]]]):System.ValueTuple`4[System.__Canon,System.__Canon,System.Nullable`1[int],System.Nullable`1[System.TimeSpan]][]] - ; gcrRegs -[rsi] - ; gcr arg pop 0 - mov rsi, rax - ; gcrRegs +[rsi] - mov edi, r14d - call [System.Text.RegularExpressions.Tests.RegexHelpers:GetRegexesAsync(int,System.ValueTuple`4[System.String,System.Globalization.CultureInfo,System.Nullable`1[int],System.Nullable`1[System.TimeSpan]][]):System.Threading.Tasks.Task`1[System.Text.RegularExpressions.Regex[]]] - ; gcrRegs -[rsi] - ; gcr arg pop 0 - mov rdi, rax - ; gcrRegs +[rdi] - cmp dword ptr [rdi], edi - call [System.Threading.Tasks.Task`1[System.__Canon]:get_Result():System.__Canon:this] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - mov rdi, gword ptr [rbp-0x40] - ; gcrRegs +[rdi] - lea rdi, bword ptr [rdi+0x20] - ; gcrRegs -[rdi] - ; byrRegs +[rdi] - mov rsi, rax - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi] - ; byrRegs -[rdi] - xor edi, edi - mov rbx, gword ptr [rbp-0x40] - ; gcrRegs +[rbx] - mov dword ptr [rbx+0x3C], edi - mov edi, dword ptr [rbx+0x3C] - mov rax, gword ptr [rbx+0x20] - ; gcrRegs +[rax] - cmp edi, dword ptr [rax+0x08] - mov rdi, rbx - ; gcrRegs +[rdi] - jge G_M22758_IG41 - ;; size=105 bbWeight=0.00 PerfScore 0.03 -G_M22758_IG08: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rbx]
+ cmp dword ptr [rax+0x08], esi + jle G_M22758_IG27 + ;; size=37 bbWeight=0.84 PerfScore 11.18 +G_M22758_IG06: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
mov rsi, gword ptr [rdi+0x18] ; gcrRegs +[rsi] mov eax, dword ptr [rdi+0x3C] cmp eax, dword ptr [rsi+0x08]
- jae G_M22758_IG11
+ jae G_M22758_IG41
shl rax, 5 mov rsi, gword ptr [rsi+rax+0x20] lea rdi, bword ptr [rdi+0x28] @@ -248,14 +172,14 @@ G_M22758_IG08: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] cmp dword ptr [rdi+0x38], 2
- je G_M22758_IG32
+ je G_M22758_IG26
;; size=48 bbWeight=0.84 PerfScore 14.35
-G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+G_M22758_IG07: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rdi+0x18] ; gcrRegs +[rsi] mov eax, dword ptr [rdi+0x3C] cmp eax, dword ptr [rsi+0x08]
- jae G_M22758_IG11
+ jae G_M22758_IG41
shl rax, 5 lea rsi, bword ptr [rsi+rax+0x10] ; gcrRegs -[rsi] @@ -274,8 +198,8 @@ G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, call CORINFO_HELP_NEWARR_1_OBJ ; gcrRegs +[rax] ; gcr arg pop 0
- mov r12, rax - ; gcrRegs +[r12]
+ mov rbx, rax + ; gcrRegs +[rbx]
mov rdi, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcr arg pop 0 @@ -283,7 +207,7 @@ G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov esi, dword ptr [rdi+0x38] mov dword ptr [rax+0x08], esi
- lea rdi, bword ptr [r12+0x10]
+ lea rdi, bword ptr [rbx+0x10]
; gcrRegs -[rdi] ; byrRegs +[rdi] mov rsi, rax @@ -295,7 +219,7 @@ G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov rsi, gword ptr [rdi+0x40] ; gcrRegs +[rsi]
- lea rdi, bword ptr [r12+0x18]
+ lea rdi, bword ptr [rbx+0x18]
; gcrRegs -[rdi] ; byrRegs +[rdi] call CORINFO_HELP_ASSIGN_REF @@ -309,7 +233,7 @@ G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, ; gcrRegs +[rdi] mov esi, dword ptr [rdi+0x58] mov dword ptr [rax+0x08], esi
- lea rdi, bword ptr [r12+0x20]
+ lea rdi, bword ptr [rbx+0x20]
...

+26 (+1.11%) : 49361.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 ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 7182
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7182
; 7 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -34,7 +34,7 @@ ; V22 tmp14 [V22,T35] ( 3, 0 ) ref -> r13 class-hnd exact single-def "dup spill" <<unknown class>> ; V23 tmp15 [V23,T44] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.RefExpressionSyntax> ; V24 tmp16 [V24,T45] ( 2, 0 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>>
-; V25 tmp17 [V25,T36] ( 3, 0 ) ref -> r13 class-hnd exact single-def "dup spill" <<unknown class>>
+; V25 tmp17 [V25,T36] ( 3, 0 ) ref -> r14 class-hnd exact single-def "dup spill" <<unknown class>>
; V26 tmp18 [V26,T46] ( 2, 0 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.IdentifierNameSyntax> ; V27 tmp19 [V27,T47] ( 2, 0 ) ref -> rax class-hnd exact single-def "Strict ordering of exceptions for Array store" <<unknown class>> ;* V28 tmp20 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> @@ -65,7 +65,7 @@ ;* V53 tmp45 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifier> ; V54 tmp46 [V54,T48] ( 2, 0 ) ref -> r15 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ;* V55 tmp47 [V55,T53] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V56 tmp48 [V56,T49] ( 2, 0 ) ref -> r15 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp48 [V56,T49] ( 2, 0 ) ref -> r13 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V57 tmp49 [V57,T50] ( 2, 0 ) ref -> rax class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> ; V58 tmp50 [V58,T08] ( 6, 1.38) ref -> r12 "Single return block return value" ; V59 tmp51 [V59,T37] ( 3, 0 ) ref -> rax single-def "argument with side effect" @@ -96,12 +96,12 @@ G_M18455_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rax, gword ptr [rbx+0x10] ; gcrRegs +[rax] test rax, rax
- je G_M18455_IG34
+ je G_M18455_IG23
;; size=13 bbWeight=1 PerfScore 3.25 G_M18455_IG03: ; bbWeight=1, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref movzx r14, word ptr [rax+0x0C] cmp r14d, 0x20A0
- jbe G_M18455_IG26
+ jbe G_M18455_IG19
;; size=18 bbWeight=1 PerfScore 3.25 G_M18455_IG04: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] @@ -110,10 +110,10 @@ G_M18455_IG04: ; bbWeight=0.81, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ;; size=13 bbWeight=0.81 PerfScore 1.01 G_M18455_IG05: ; bbWeight=0.76, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp r14d, 0x2124
- jbe G_M18455_IG57
+ jbe G_M18455_IG48
lea r13d, [r14-0x213C] test r13d, r13d
- jne G_M18455_IG22
+ jne G_M18455_IG18
;; size=29 bbWeight=0.76 PerfScore 2.28 G_M18455_IG06: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -122,14 +122,14 @@ G_M18455_IG06: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rdi] ; gcr arg pop 0 test eax, eax
- je G_M18455_IG78
+ je G_M18455_IG67
mov rdi, rbx ; gcrRegs +[rdi] call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleAnonymousMethodExpression():ubyte:this] ; gcrRegs -[rdi] ; gcr arg pop 0 test eax, eax
- jne G_M18455_IG72
+ jne G_M18455_IG61
mov rdi, rbx ; gcrRegs +[rdi] mov esi, r15d @@ -137,7 +137,7 @@ G_M18455_IG06: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rdi] ; gcr arg pop 0 test eax, eax
- jne G_M18455_IG56
+ jne G_M18455_IG88
;; size=54 bbWeight=0.52 PerfScore 7.19 G_M18455_IG07: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -147,7 +147,7 @@ G_M18455_IG07: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rdi] ; gcr arg pop 0 test eax, eax
- jne G_M18455_IG76
+ jne G_M18455_IG65
mov rdi, rbx ; gcrRegs +[rdi] mov esi, 1 @@ -158,20 +158,169 @@ G_M18455_IG07: ; bbWeight=0.52, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs +[r12] mov rax, gword ptr [rbx+0x10] test rax, rax
- je G_M18455_IG21
+ je G_M18455_IG27
;; size=50 bbWeight=0.52 PerfScore 6.14
-G_M18455_IG08: ; bbWeight=0.52, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref, isz
+G_M18455_IG08: ; bbWeight=0.52, gcrefRegs=1009 {rax rbx r12}, byrefRegs=0000 {}, byref
cmp word ptr [rax+0x0C], 0x2048
- jne SHORT G_M18455_IG12 - ;; size=8 bbWeight=0.52 PerfScore 2.09 -G_M18455_IG09: ; bbWeight=0.18, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
+ je G_M18455_IG24 + ;; size=12 bbWeight=0.52 PerfScore 2.09 +G_M18455_IG09: ; bbWeight=0.34, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rbx] + mov rax, r12 + ; gcrRegs +[rax] + ;; size=3 bbWeight=0.34 PerfScore 0.09 +G_M18455_IG10: ; bbWeight=0.34, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.34 PerfScore 1.47 +G_M18455_IG11: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax r12] +[rbx rdi r13 r15] + mov rax, qword ptr [rax+0x68] + call [rax+0x28]Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode:GetTrailingTrivia():Microsoft.CodeAnalysis.GreenNode:this + ; gcrRegs -[rdi] +[rax] + ; gcr arg pop 0 + mov rsi, rax + ; gcrRegs +[rsi] + ;; size=10 bbWeight=0.15 PerfScore 0.81 +G_M18455_IG12: ; bbWeight=0.25, gcrefRegs=A048 {rbx rsi r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
+ lea rdi, bword ptr [rbx+0x20] + ; byrRegs +[rdi] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rsi] + ; byrRegs -[rdi] + xor rdi, rdi + ; gcrRegs +[rdi] + mov gword ptr [rbx+0x10], rdi + cmp gword ptr [rbx+0x28], 0 + jne G_M18455_IG74 + ;; size=26 bbWeight=0.25 PerfScore 1.68 +G_M18455_IG13: ; bbWeight=0.25, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi] + inc dword ptr [rbx+0x38] + mov rdi, r13 + ; gcrRegs +[rdi] + mov esi, r12d + mov rdx, r15 + ; gcrRegs +[rdx] + cmp dword ptr [rdi], edi + ;; size=14 bbWeight=0.25 PerfScore 1.68 +G_M18455_IG14: ; bbWeight=0.25, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + tail.jmp [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ContextAwareSyntax:LiteralExpression(ushort,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LiteralExpressionSyntax:this] + ; gcr arg pop 0 + ;; size=20 bbWeight=0.25 PerfScore 1.31 +G_M18455_IG15: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdx rdi r13 r15] + mov r13, gword ptr [rbx+0x118] + ; gcrRegs +[r13] + mov edi, r14d + call [<unknown method>] + ; gcr arg pop 0 + mov r12d, eax + mov r15, gword ptr [rbx+0x10] + ; gcrRegs +[r15] + test r15, r15 + je G_M18455_IG33 + ;; size=32 bbWeight=0.25 PerfScore 2.18 +G_M18455_IG16: ; bbWeight=0.25, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbx+0x10] + ; gcrRegs +[rdi] + mov rax, qword ptr [rdi] + mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken+SyntaxIdentifier + cmp rax, rcx + jne SHORT G_M18455_IG11 + ;; size=22 bbWeight=0.25 PerfScore 1.37 +G_M18455_IG17: ; bbWeight=0.09, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + xor rsi, rsi + ; gcrRegs +[rsi] + jmp SHORT G_M18455_IG12 + ;; size=4 bbWeight=0.09 PerfScore 0.21 +G_M18455_IG18: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi r13 r15] + cmp r13d, 14 + ja G_M18455_IG49 + mov edi, r13d + lea rax, [reloc @RWD00] + mov eax, dword ptr [rax+4*rdi] + lea rcx, G_M18455_IG02 + add rax, rcx + jmp rax + ;; size=35 bbWeight=0.24 PerfScore 1.72 +G_M18455_IG19: ; bbWeight=0.19, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + cmp r14d, 0x204D + ja G_M18455_IG28 + ;; size=13 bbWeight=0.19 PerfScore 0.24 +G_M18455_IG20: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + cmp r14d, 0x200F + ja G_M18455_IG90 + cmp r14d, 0x2008 + jne G_M18455_IG73 + mov rdi, rbx + ; gcrRegs +[rdi] + mov esi, r15d + call [<unknown method>] + ; gcrRegs -[rdi] + ; gcr arg pop 0 + test eax, eax + jne G_M18455_IG78 + ;; size=46 bbWeight=0.09 PerfScore 0.68 +G_M18455_IG21: ; bbWeight=0.09, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rdi, rbx + ; gcrRegs +[rdi] + ;; size=3 bbWeight=0.09 PerfScore 0.02 +G_M18455_IG22: ; bbWeight=0.09, epilog, nogc, extend + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + tail.jmp [<unknown method>] + ; gcr arg pop 0 + ;; size=20 bbWeight=0.09 PerfScore 0.49 +G_M18455_IG23: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rdi] + mov rdi, rbx + ; gcrRegs +[rdi] + call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this] + ; gcrRegs -[rdi] +[rax] + ; gcr arg pop 0 + mov r14, rax + ; gcrRegs +[r14] + lea rdi, bword ptr [rbx+0x10] + ; byrRegs +[rdi] + mov rsi, r14 + ; gcrRegs +[rsi] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rax rsi] + ; byrRegs -[rdi]
...

+8 (+1.85%) : 645245.dasm - System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rbp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2307
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2307
; 2 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -65,197 +65,203 @@ G_M35891_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, ; gcrRegs +[rdx] ; byrRegs +[rdi] test esi, esi
- jle SHORT G_M35891_IG09
+ jle SHORT G_M35891_IG04
;; size=4 bbWeight=1 PerfScore 1.25 G_M35891_IG03: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz cmp byte ptr [rdi], 36
- jne SHORT G_M35891_IG09
+ je SHORT G_M35891_IG10
;; size=5 bbWeight=1.00 PerfScore 3.99
-G_M35891_IG04: ; bbWeight=0.47, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz - lea ebx, [rsi-0x03] - cmp ebx, 2 - je SHORT G_M35891_IG15 - ;; size=8 bbWeight=0.47 PerfScore 0.81 -G_M35891_IG05: ; bbWeight=0.16, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz - cmp ebx, 4 - ja SHORT G_M35891_IG09 - mov eax, ebx - lea rcx, [reloc @RWD00] - mov ecx, dword ptr [rcx+4*rax] - lea r8, G_M35891_IG02 - add rcx, r8 - jmp rcx - ;; size=29 bbWeight=0.16 PerfScore 1.16 -G_M35891_IG06: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35891_IG04: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref + test rdx, rdx + je G_M35891_IG24 + ;; size=9 bbWeight=0.54 PerfScore 0.67 +G_M35891_IG05: ; bbWeight=0.53, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref + mov rax, gword ptr [rdx+0x28] + ; gcrRegs +[rax] + ;; size=4 bbWeight=0.53 PerfScore 1.07 +G_M35891_IG06: ; bbWeight=0.54, gcrefRegs=0001 {rax}, byrefRegs=0080 {rdi}, byref, isz
; gcrRegs -[rdx]
+ test rax, rax + jne SHORT G_M35891_IG16 + ;; size=5 bbWeight=0.54 PerfScore 0.67 +G_M35891_IG07: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax]
; byrRegs -[rdi] xor ecx, ecx ;; size=2 bbWeight=0.46 PerfScore 0.12
-G_M35891_IG07: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35891_IG08: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, cl ;; size=3 bbWeight=0.54 PerfScore 0.14
-G_M35891_IG08: ; bbWeight=0.54, epilog, nogc, extend
+G_M35891_IG09: ; bbWeight=0.54, epilog, nogc, extend
add rsp, 8 pop rbx pop rbp ret ;; size=7 bbWeight=0.54 PerfScore 1.22
-G_M35891_IG09: ; bbWeight=0.54, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, gcvars, byref
+G_M35891_IG10: ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
; gcrRegs +[rdx] ; byrRegs +[rdi]
+ lea ebx, [rsi-0x03] + cmp ebx, 2 + jne SHORT G_M35891_IG18 + ;; size=8 bbWeight=0.47 PerfScore 0.81 +G_M35891_IG11: ; bbWeight=0.31, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz
test rdx, rdx
- je G_M35891_IG23 - ;; size=9 bbWeight=0.54 PerfScore 0.67 -G_M35891_IG10: ; bbWeight=0.53, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref
+ je SHORT G_M35891_IG12
mov rax, gword ptr [rdx+0x28] ; gcrRegs +[rax]
- ;; size=4 bbWeight=0.53 PerfScore 1.07 -G_M35891_IG11: ; bbWeight=0.54, gcrefRegs=0001 {rax}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rdx]
test rax, rax
- je SHORT G_M35891_IG06 - ;; size=5 bbWeight=0.54 PerfScore 0.67 -G_M35891_IG12: ; bbWeight=0.24, gcrefRegs=0001 {rax}, byrefRegs=0080 {rdi}, byref, isz
+ jne SHORT G_M35891_IG04 + ;; size=14 bbWeight=0.31 PerfScore 1.38 +G_M35891_IG12: ; bbWeight=0.30, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz + ; gcrRegs -[rax] + cmp esi, 1 + jbe G_M35891_IG25 + cmp byte ptr [rdi+0x01], 116 + jne SHORT G_M35891_IG04 + ;; size=15 bbWeight=0.30 PerfScore 1.60 +G_M35891_IG13: ; bbWeight=0.30, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz + cmp esi, 2 + jbe G_M35891_IG25 + cmp byte ptr [rdi+0x02], 121 + jne SHORT G_M35891_IG04 + cmp esi, 3 + jbe G_M35891_IG25 + cmp byte ptr [rdi+0x03], 112 + jne SHORT G_M35891_IG04 + cmp esi, 4 + jbe G_M35891_IG25 + cmp byte ptr [rdi+0x04], 101 + jne SHORT G_M35891_IG04 + ;; size=45 bbWeight=0.30 PerfScore 4.79 +G_M35891_IG14: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] + ; byrRegs -[rdi] + mov eax, 8 + ;; size=5 bbWeight=0.38 PerfScore 0.09 +G_M35891_IG15: ; bbWeight=0.38, epilog, nogc, extend + add rsp, 8 + pop rbx + pop rbp + ret + ;; size=7 bbWeight=0.38 PerfScore 0.85 +G_M35891_IG16: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0080 {rdi}, gcvars, byref, isz + ; gcrRegs +[rax] + ; byrRegs +[rdi]
lea rcx, bword ptr [rax+0x10] ; byrRegs +[rcx] mov edx, dword ptr [rax+0x08] cmp esi, edx
- jne SHORT G_M35891_IG06
+ jne SHORT G_M35891_IG07
mov rsi, rcx ; byrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rax] ; byrRegs -[rcx rsi rdi] test eax, eax
- je SHORT G_M35891_IG06 - ;; size=24 bbWeight=0.24 PerfScore 1.97 -G_M35891_IG13: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov eax, 8 - ;; size=5 bbWeight=0.38 PerfScore 0.09 -G_M35891_IG14: ; bbWeight=0.38, epilog, nogc, extend - add rsp, 8 - pop rbx - pop rbp - ret - ;; size=7 bbWeight=0.38 PerfScore 0.85 -G_M35891_IG15: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, gcvars, byref, isz
+ je G_M35891_IG07 + ;; size=28 bbWeight=0.24 PerfScore 1.97 +G_M35891_IG17: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M35891_IG14 + ;; size=2 bbWeight=0.08 PerfScore 0.15 +G_M35891_IG18: ; bbWeight=0.16, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref
; gcrRegs +[rdx] ; byrRegs +[rdi]
- test rdx, rdx - je SHORT G_M35891_IG16 - mov rax, gword ptr [rdx+0x28] - ; gcrRegs +[rax] - test rax, rax - jne SHORT G_M35891_IG09 - ;; size=14 bbWeight=0.31 PerfScore 1.38 -G_M35891_IG16: ; bbWeight=0.30, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs -[rax]
+ cmp ebx, 4 + ja G_M35891_IG04 + mov eax, ebx + lea rcx, [reloc @RWD00] + mov ecx, dword ptr [rcx+4*rax] + lea r8, G_M35891_IG02 + add rcx, r8 + jmp rcx + ;; size=33 bbWeight=0.16 PerfScore 1.16 +G_M35891_IG19: ; bbWeight=0.08, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref
cmp esi, 1
- jbe G_M35891_IG24 - cmp byte ptr [rdi+0x01], 116 - jne SHORT G_M35891_IG09 - ;; size=15 bbWeight=0.30 PerfScore 1.60 -G_M35891_IG17: ; bbWeight=0.30, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz - cmp esi, 2 - jbe G_M35891_IG24 - cmp byte ptr [rdi+0x02], 121 - jne SHORT G_M35891_IG09 - cmp esi, 3 - jbe G_M35891_IG24 - cmp byte ptr [rdi+0x03], 112 - jne SHORT G_M35891_IG09 - cmp esi, 4 - jbe G_M35891_IG24 - cmp byte ptr [rdi+0x04], 101 - jne SHORT G_M35891_IG09 - jmp SHORT G_M35891_IG13 - ;; size=47 bbWeight=0.30 PerfScore 5.39 -G_M35891_IG18: ; bbWeight=0.08, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref - cmp esi, 1 - jbe G_M35891_IG24
+ jbe G_M35891_IG25
cmp byte ptr [rdi+0x01], 118
- jne G_M35891_IG09
+ jne G_M35891_IG04
cmp esi, 2
- jbe G_M35891_IG24
+ jbe G_M35891_IG25
cmp byte ptr [rdi+0x02], 97
- jne G_M35891_IG09
+ jne G_M35891_IG04
cmp esi, 3
- jbe G_M35891_IG24
+ jbe G_M35891_IG25
cmp byte ptr [rdi+0x03], 108
- jne G_M35891_IG09
+ jne G_M35891_IG04
cmp esi, 4
- jbe G_M35891_IG24
+ jbe G_M35891_IG25
cmp byte ptr [rdi+0x04], 117
- jne G_M35891_IG09
+ jne G_M35891_IG04
cmp esi, 5
- jbe G_M35891_IG24
+ jbe G_M35891_IG25
cmp byte ptr [rdi+0x05], 101
- jne G_M35891_IG09
+ jne G_M35891_IG04
cmp esi, 6
- jbe G_M35891_IG24
+ jbe G_M35891_IG25
cmp byte ptr [rdi+0x06], 115
- jne G_M35891_IG09
+ jne G_M35891_IG04
mov ecx, 1
- jmp G_M35891_IG07
+ jmp G_M35891_IG08
;; size=124 bbWeight=0.08 PerfScore 2.75
-G_M35891_IG19: ; bbWeight=0.05, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz
+G_M35891_IG20: ; bbWeight=0.05, gcrefRegs=0004 {rdx}, byrefRegs=0080 {rdi}, byref, isz
cmp esi, 1
- jbe SHORT G_M35891_IG24
+ jbe SHORT G_M35891_IG25
cmp byte ptr [rdi+0x01], 105
- jne G_M35891_IG09
+ jne G_M35891_IG04
cmp esi, 2
- jbe SHORT G_M35891_IG24
+ jbe SHORT G_M35891_IG25
cmp byte ptr [rdi+0x02], 100 ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.x64.checked.mch 12 6 5 1 -37 +65
benchmarks.run_tiered.linux.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.x64.checked.mch 15 5 10 0 -11 +146
libraries.crossgen2.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.x64.Release.mch 15 5 10 0 -67 +85
librariestestsnotieredcompilation.run.linux.x64.Release.mch 0 0 0 0 -0 +0
realworld.run.linux.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
42 16 25 1 -115 +296

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 32,968 2,462 30,506 31 (0.09%) 31 (0.09%)
benchmarks.run_pgo.linux.x64.checked.mch 161,511 62,151 99,360 2 (0.00%) 2 (0.00%)
benchmarks.run_tiered.linux.x64.checked.mch 58,448 43,917 14,531 6 (0.01%) 6 (0.01%)
coreclr_tests.run.linux.x64.checked.mch 606,587 361,418 245,169 38 (0.01%) 38 (0.01%)
libraries.crossgen2.linux.x64.checked.mch 266,386 15 266,371 8 (0.00%) 8 (0.00%)
libraries.pmi.linux.x64.checked.mch 301,693 6 301,687 333 (0.11%) 333 (0.11%)
libraries_tests.run.linux.x64.Release.mch 746,775 494,189 252,586 327 (0.04%) 327 (0.04%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 305,412 21,933 283,479 471 (0.15%) 471 (0.15%)
realworld.run.linux.x64.checked.mch 33,357 111 33,246 96 (0.29%) 96 (0.29%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,514 10 27,504 4 (0.01%) 4 (0.01%)
2,540,651 986,212 1,554,439 1,316 (0.05%) 1,316 (0.05%)

jit-analyze output

benchmarks.run_pgo.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 71349815 (overridden on cmd)
Total bytes of diff: 71349843 (overridden on cmd)
Total bytes of delta: 28 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          15 : 25942.dasm (2.89 % of base)
          15 : 148478.dasm (2.89 % of base)
          15 : 136262.dasm (2.88 % of base)
          11 : 27417.dasm (1.95 % of base)
           9 : 82973.dasm (1.26 % of base)

Top file improvements (bytes):
         -27 : 83044.dasm (-4.74 % of base)
          -6 : 143009.dasm (-1.42 % of base)
          -1 : 48479.dasm (-0.12 % of base)
          -1 : 43167.dasm (-0.11 % of base)
          -1 : 48527.dasm (-0.12 % of base)
          -1 : 43210.dasm (-0.11 % of base)

11 total files with Code Size differences (6 improved, 5 regressed), 1 unchanged.

Top method regressions (bytes):
          15 (2.89 % of base) : 25942.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          15 (2.89 % of base) : 148478.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          15 (2.88 % of base) : 136262.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          11 (1.95 % of base) : 27417.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           9 (1.26 % of base) : 82973.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 improvements (bytes):
         -27 (-4.74 % of base) : 83044.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-1.42 % of base) : 143009.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
          -1 (-0.11 % of base) : 43167.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 43210.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 48479.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 48527.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

Top method regressions (percentages):
          15 (2.89 % of base) : 25942.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          15 (2.89 % of base) : 148478.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          15 (2.88 % of base) : 136262.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          11 (1.95 % of base) : 27417.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           9 (1.26 % of base) : 82973.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 improvements (percentages):
         -27 (-4.74 % of base) : 83044.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-1.42 % of base) : 143009.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
          -1 (-0.12 % of base) : 48479.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 48527.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 43167.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 43210.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

11 total methods with Code Size differences (6 improved, 5 regressed).


coreclr_tests.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 417667412 (overridden on cmd)
Total bytes of diff: 417667547 (overridden on cmd)
Total bytes of delta: 135 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          17 : 262427.dasm (3.20 % of base)
          17 : 305032.dasm (3.20 % of base)
          17 : 296158.dasm (3.20 % of base)
          17 : 3201.dasm (3.20 % of base)
          17 : 205401.dasm (3.20 % of base)
          17 : 31240.dasm (3.20 % of base)
          17 : 245293.dasm (3.20 % of base)
          17 : 256053.dasm (3.20 % of base)
           5 : 226989.dasm (0.96 % of base)
           5 : 244627.dasm (0.96 % of base)

Top file improvements (bytes):
          -7 : 288435.dasm (-0.90 % of base)
          -1 : 243502.dasm (-0.11 % of base)
          -1 : 243545.dasm (-0.12 % of base)
          -1 : 243548.dasm (-0.12 % of base)
          -1 : 243499.dasm (-0.11 % of base)

15 total files with Code Size differences (5 improved, 10 regressed), 0 unchanged.

Top method regressions (bytes):
          17 (3.20 % of base) : 262427.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 305032.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 296158.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 3201.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 205401.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 31240.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 245293.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 256053.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.96 % of base) : 226989.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.96 % of base) : 244627.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (bytes):
          -7 (-0.90 % of base) : 288435.dasm - DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)
          -1 (-0.11 % of base) : 243502.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 243499.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 243545.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 243548.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

Top method regressions (percentages):
          17 (3.20 % of base) : 296158.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 205401.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 262427.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 305032.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 3201.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 31240.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 245293.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.20 % of base) : 256053.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.96 % of base) : 226989.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.96 % of base) : 244627.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
          -7 (-0.90 % of base) : 288435.dasm - DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)
          -1 (-0.12 % of base) : 243545.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 243548.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 243502.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 243499.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

15 total methods with Code Size differences (5 improved, 10 regressed).


libraries_tests.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 328359812 (overridden on cmd)
Total bytes of diff: 328359830 (overridden on cmd)
Total bytes of delta: 18 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          26 : 49361.dasm (1.11 % of base)
          16 : 700531.dasm (0.93 % of base)
           8 : 645245.dasm (1.85 % of base)
           5 : 275714.dasm (0.76 % of base)
           5 : 9266.dasm (0.56 % of base)
           5 : 154746.dasm (0.56 % of base)
           5 : 533368.dasm (0.56 % of base)
           5 : 79374.dasm (0.71 % of base)
           5 : 112453.dasm (0.57 % of base)
           5 : 461335.dasm (0.56 % of base)

Top file improvements (bytes):
         -31 : 466681.dasm (-1.57 % of base)
         -16 : 625934.dasm (-1.84 % of base)
         -12 : 631077.dasm (-1.32 % of base)
          -7 : 686255.dasm (-0.95 % of base)
          -1 : 681813.dasm (-0.17 % of base)

15 total files with Code Size differences (5 improved, 10 regressed), 0 unchanged.

Top method regressions (bytes):
          26 (1.11 % of base) : 49361.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          16 (0.93 % of base) : 700531.dasm - System.Text.RegularExpressions.Tests.MonoTests+<ValidateRegex_MemberData>d__1:MoveNext():ubyte:this (Tier1)
           8 (1.85 % of base) : 645245.dasm - System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte (Tier1)
           5 (0.76 % of base) : 275714.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.56 % of base) : 9266.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.56 % of base) : 154746.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.56 % of base) : 533368.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.71 % of base) : 79374.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.57 % of base) : 112453.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.56 % of base) : 461335.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (bytes):
         -31 (-1.57 % of base) : 466681.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
         -16 (-1.84 % of base) : 625934.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[byte]:MoveNext():ubyte:this (Tier1)
         -12 (-1.32 % of base) : 631077.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[System.UInt128]:MoveNext():ubyte:this (Tier1)
          -7 (-0.95 % of base) : 686255.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -1 (-0.17 % of base) : 681813.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)

Top method regressions (percentages):
           8 (1.85 % of base) : 645245.dasm - System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte (Tier1)
          26 (1.11 % of base) : 49361.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          16 (0.93 % of base) : 700531.dasm - System.Text.RegularExpressions.Tests.MonoTests+<ValidateRegex_MemberData>d__1:MoveNext():ubyte:this (Tier1)
           5 (0.76 % of base) : 275714.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.71 % of base) : 79374.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.57 % of base) : 112453.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.56 % of base) : 154746.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.56 % of base) : 533368.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.56 % of base) : 9266.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.56 % of base) : 461335.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
         -16 (-1.84 % of base) : 625934.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[byte]:MoveNext():ubyte:this (Tier1)
         -31 (-1.57 % of base) : 466681.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
         -12 (-1.32 % of base) : 631077.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[System.UInt128]:MoveNext():ubyte:this (Tier1)
          -7 (-0.95 % of base) : 686255.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -1 (-0.17 % of base) : 681813.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)

15 total methods with Code Size differences (5 improved, 10 regressed).



osx arm64

Diffs are based on 2,308,638 contexts (937,510 MinOpts, 1,371,128 FullOpts).

MISSED contexts: 1,132 (0.05%)

Overall (-24 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,678,976 +8
coreclr_tests.run.osx.arm64.checked.mch 500,389,076 +0
libraries_tests.run.osx.arm64.Release.mch 313,296,132 -32

FullOpts (-24 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,148,984 +8
coreclr_tests.run.osx.arm64.checked.mch 162,069,656 +0
libraries_tests.run.osx.arm64.Release.mch 111,249,188 -32

Example diffs

benchmarks.run_pgo.osx.arm64.checked.mch

-4 (-0.53%) : 67681.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,22 +51,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG15
+ cbz w0, G_M35244_IG23
ldr w1, [x19, #0x28] mov w0, #0xD1FFAB1E tst w1, w0
- bne G_M35244_IG15
+ bne G_M35244_IG23
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w20, [x19, #0x2E] sub w1, w20, #3 cmp w1, #5
- bls G_M35244_IG25
+ bls G_M35244_IG19
;; size=16 bbWeight=2.00 PerfScore 10.00 G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w1, w20, #24 cmp w1, #10
- bhi G_M35244_IG15
+ bhi G_M35244_IG23
mov w1, w1 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -77,7 +77,7 @@ G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG11
+ cbz x20, G_M35244_IG10
;; size=8 bbWeight=1.00 PerfScore 4.00 G_M35244_IG06: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -88,7 +88,7 @@ G_M35244_IG06: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M35244_IG10
+ cbnz x0, G_M35244_IG25
mov w21, #1 ;; size=28 bbWeight=0.71 PerfScore 3.21 G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -96,7 +96,7 @@ G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 sub w22, w21, #1 mov x23, x20 ; gcrRegs +[x23]
- cbz x23, G_M35244_IG12
+ cbz x23, G_M35244_IG11
;; size=12 bbWeight=1.00 PerfScore 2.00 G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz ldr x0, [x23] @@ -104,27 +104,21 @@ G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- beq G_M35244_IG12
+ beq G_M35244_IG11
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M35244_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x23]
- b G_M35244_IG17
+ b G_M35244_IG26
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M35244_IG10: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0] - ldr w21, [x0, #0x10] - b G_M35244_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M35244_IG11: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+G_M35244_IG10: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, wzr b G_M35244_IG07 ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=1.00, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x23]
- cbz x23, G_M35244_IG17
+ cbz x23, G_M35244_IG26
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldrb w0, [x23, #0x2E] sub w1, w0, #26 @@ -132,23 +126,121 @@ G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG18
+ bls G_M35244_IG27
;; size=28 bbWeight=1.00 PerfScore 6.50
-G_M35244_IG14: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x23 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M35244_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19 x23]
+G_M35244_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:ChildCount():int:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + sxtw w20, w0 + mov w21, #1 + b G_M35244_IG16 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M35244_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + mov w1, w21 + movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2] + blr x2 + ; gcr arg pop 0 + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + ldr wzr, [x0] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + add w21, w21, #1 + ;; size=56 bbWeight=0 PerfScore 0.00 +G_M35244_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w21, w20 + blt G_M35244_IG15 + ldrb w0, [x19, #0x2E] + cmp w0, #34 + beq G_M35244_IG23 + b G_M35244_IG24 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M35244_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr w0, [x19, #0x20] + str w0, [x19, #0x24] + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M35244_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x24] + cmp w0, #1 + beq G_M35244_IG24 + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x19] + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + cbz x19, G_M35244_IG23 + ldrb w20, [x19, #0x2E] + sub w0, w20, #3 + ; gcrRegs -[x0] + cmp w0, #5 + bhi G_M35244_IG04 + ;; size=60 bbWeight=0 PerfScore 0.00 +G_M35244_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG20: ; bbWeight=0, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40 + br x1 + ; gcr arg pop 0 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] + movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_unix #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M35244_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.02 PerfScore 0.12 -G_M35244_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -164,8 +256,13 @@ G_M35244_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] +[x20]
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20] + ldr w21, [x0, #0x10] + b G_M35244_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0]
mov x1, x20 ; gcrRegs +[x1] movz x0, #24 @@ -176,30 +273,30 @@ G_M35244_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w22, w1
- bhs G_M35244_IG27
+ bhs G_M35244_IG21
ldr x0, [x0, #0x08] ldr w1, [x0, #0x08] cmp w22, w1
- bhs G_M35244_IG28
+ bhs G_M35244_IG22
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x23, [x0, w22, UXTW #3] ; gcrRegs +[x23]
- b G_M35244_IG13
+ b G_M35244_IG12
...

+0 (0.00%) : 69409.dasm - System.Text.RegularExpressions.RegexCompiler+<>cDisplayClass158_0:gEmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)

@@ -56,19 +56,19 @@ G_M17183_IG02: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 ldr w0, [x0, #0x20] ; gcrRegs -[x0] cmp w0, #19
- beq G_M17183_IG22
+ beq G_M17183_IG10
;; size=24 bbWeight=1 PerfScore 13.50 G_M17183_IG03: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz bl <unknown method>
- cbz w0, G_M17183_IG27
+ cbz w0, G_M17183_IG15
ldr w3, [x19, #0x28]
- tbnz w3, #6, G_M17183_IG28
+ tbnz w3, #6, G_M17183_IG16
;; size=16 bbWeight=1 PerfScore 6.00 G_M17183_IG04: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldrb w3, [x19, #0x2E] sub w23, w3, #3 cmp w23, #22
- bne G_M17183_IG07
+ bne G_M17183_IG06
;; size=16 bbWeight=1 PerfScore 5.00 G_M17183_IG05: ; bbWeight=0.57, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref uxtb w3, w21 @@ -84,18 +84,12 @@ G_M17183_IG05: ; bbWeight=0.57, gcrefRegs=580000 {x19 x20 x22}, byrefRegs ldr x4, [x4] blr x4 ; gcrRegs -[x0-x2 x19-x20 x22]
- ;; size=36 bbWeight=0.57 PerfScore 4.25 -G_M17183_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M17183_IG07: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M17183_IG09 + ;; size=40 bbWeight=0.57 PerfScore 4.81 +G_M17183_IG06: ; bbWeight=0.43, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x20 x22] cmp w23, #43
- bhi G_M17183_IG06
+ bhi G_M17183_IG09
mov w2, w23 adr x0, [@RWD00] ldr w0, [x0, x2, LSL #2] @@ -103,7 +97,7 @@ G_M17183_IG07: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=580 add x0, x0, x1 br x0 ;; size=32 bbWeight=0.43 PerfScore 3.25
-G_M17183_IG08: ; bbWeight=0.43, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17183_IG07: ; bbWeight=0.43, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] uxtb w2, w21 mov x0, x20 @@ -117,9 +111,9 @@ G_M17183_IG08: ; bbWeight=0.43, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x4, [x4] blr x4 ; gcrRegs -[x0-x1 x19-x20]
- b G_M17183_IG06
+ b G_M17183_IG09
;; size=40 bbWeight=0.43 PerfScore 3.69
-G_M17183_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17183_IG08: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x20] mov x0, x20 ; gcrRegs +[x0] @@ -131,209 +125,44 @@ G_M17183_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x19-x20]
- b G_M17183_IG06 - ;; size=32 bbWeight=0.00 PerfScore 0.00 -G_M17183_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG11: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitAlternation|4(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG13: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20 x22] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x22 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2 x19-x20 x22] - b G_M17183_IG06 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M17183_IG14: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG15: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG17: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20 x22] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x22 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitCapture|8(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode):this - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2 x19-x20 x22] - b G_M17183_IG06 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M17183_IG18: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitPositiveLookaroundAssertion|10(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNegativeLookaroundAssertion|11(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG20: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x20] - ldr x0, [x20, #0x08] - ; gcrRegs +[x0] - ldr w1, [x20, #0x40] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0 x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitUpdateBumpalong|14(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG22: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0.00 PerfScore 0.00 +G_M17183_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x23, [sp, #0x58] + ldp x21, x22, [sp, #0x48]
...

+0 (0.00%) : 74286.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Collections.Generic.HashSet`1[System.Canon]):this (Tier1)

@@ -50,7 +50,7 @@ G_M417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n ;; size=32 bbWeight=1 PerfScore 6.00 G_M417_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz bl <unknown method>
- cbz w0, G_M417_IG13
+ cbz w0, G_M417_IG12
ldr w22, [x20, #0x28] cmp w22, #1 bne G_M417_IG08 @@ -69,22 +69,17 @@ G_M417_IG03: ; bbWeight=0.57, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.57 PerfScore 7.06 -G_M417_IG04: ; bbWeight=0.69, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=0.69 PerfScore 2.74 -G_M417_IG05: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M417_IG07 + ;; size=40 bbWeight=0.57 PerfScore 7.63 +G_M417_IG04: ; bbWeight=0.10, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] mov x22, x20 ; gcrRegs +[x22] ldr w0, [x20, #0x28] cmp w0, #2
- bne G_M417_IG07
+ bne G_M417_IG06
;; size=16 bbWeight=0.10 PerfScore 0.52
-G_M417_IG06: ; bbWeight=0.77, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.77, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x10] ; gcrRegs +[x0] mov x1, x21 @@ -101,9 +96,9 @@ G_M417_IG06: ; bbWeight=0.77, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x22, [x22, #0x18] ldr w0, [x22, #0x28] cmp w0, #2
- beq G_M417_IG06
+ beq G_M417_IG05
;; size=52 bbWeight=0.77 PerfScore 15.49
-G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG06: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x22 ; gcrRegs +[x0] mov x1, x21 @@ -116,12 +111,17 @@ G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x3, [x3] blr x3 ; gcrRegs -[x0-x2 x19 x21-x22]
- b G_M417_IG04 - ;; size=36 bbWeight=0.10 PerfScore 0.84 -G_M417_IG08: ; bbWeight=0.43, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.73 +G_M417_IG07: ; bbWeight=0.69, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=0.69 PerfScore 2.74 +G_M417_IG08: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19 x21] cmp w22, #17
- bhi G_M417_IG04
+ bhi G_M417_IG07
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -143,7 +143,7 @@ G_M417_IG09: ; bbWeight=0.02, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0.02 PerfScore 0.21 G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -173,25 +173,9 @@ G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=76 bbWeight=0 PerfScore 0.00 G_M417_IG11: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19 x21] - ldr x1, [x21, #0x80] - ; gcrRegs +[x1] - ldrsb wzr, [x19] - add x2, fp, #16 // [V14 tmp9] - mov x0, x19 - ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x1 x19 x21] - b G_M417_IG04 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19 x21] ldr x1, [x21, #0x88] ; gcrRegs +[x1] @@ -205,25 +189,25 @@ G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00
-G_M417_IG13: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] ldr x0, [x20] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x40]
- cbz x1, G_M417_IG14 - b G_M417_IG15
+ cbz x1, G_M417_IG13 + b G_M417_IG14
;; size=24 bbWeight=0 PerfScore 0.00
-G_M417_IG14: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M417_IG13: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M417_IG14: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x1 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -244,17 +228,17 @@ G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x1, [x0, #0x38] ldr x1, [x1] ldr x2, [x1, #0x48]
- cbz x2, G_M417_IG16
+ cbz x2, G_M417_IG15
mov x0, x2
- b G_M417_IG17
+ b G_M417_IG16
;; size=76 bbWeight=0 PerfScore 0.00
-G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG15: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=16 bbWeight=0 PerfScore 0.00
-G_M417_IG17: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x1, x22 ; gcrRegs +[x1] mov x2, x21 @@ -267,29 +251,45 @@ G_M417_IG17: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs= ldr x4, [x4] blr x4 ; gcrRegs -[x1-x3 x19 x21-x22]
- b G_M417_IG04
+ b G_M417_IG07
;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19 x21] + ldr x1, [x21, #0x80] + ; gcrRegs +[x1] + ldrsb wzr, [x19] + add x2, fp, #16 // [V14 tmp9] + mov x0, x19 + ; gcrRegs +[x0] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x0-x1 x19 x21] + b G_M417_IG07 + ;; size=40 bbWeight=0 PerfScore 0.00 +RWD00 dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG05 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG10 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG11 - G_M417_IG02 dd G_M417_IG11 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG17 - G_M417_IG02 + dd G_M417_IG17 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02
-; Total bytes of code 608, prolog size 20, PerfScore 42.64, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
+; Total bytes of code 608, prolog size 20, PerfScore 43.10, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+4 (+0.52%) : 63917.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,11 +52,11 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG09
+ cbz w0, G_M35244_IG24
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG09
+ bne G_M35244_IG24
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=4.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -67,7 +67,7 @@ G_M35244_IG03: ; bbWeight=4.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG04: ; bbWeight=3.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG09
+ bhi G_M35244_IG24
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -78,7 +78,7 @@ G_M35244_IG04: ; bbWeight=3.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=3.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG08
+ cbz x20, G_M35244_IG12
;; size=8 bbWeight=3.01 PerfScore 12.02 G_M35244_IG06: ; bbWeight=2.48, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -89,43 +89,40 @@ G_M35244_IG06: ; bbWeight=2.48, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG10
+ cbz x0, G_M35244_IG08
;; size=24 bbWeight=2.48 PerfScore 9.93 G_M35244_IG07: ; bbWeight=0.89, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10]
- b G_M35244_IG11
+ b G_M35244_IG09
;; size=8 bbWeight=0.89 PerfScore 3.57
-G_M35244_IG08: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=1.59, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov w21, wzr - b G_M35244_IG11 - ;; size=8 bbWeight=0.52 PerfScore 0.78 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.00 PerfScore 0.01 -G_M35244_IG10: ; bbWeight=1.59, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20]
mov w21, #1 ;; size=4 bbWeight=1.59 PerfScore 0.80
-G_M35244_IG11: ; bbWeight=3.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=3.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22] cbz x22, G_M35244_IG13 ;; size=12 bbWeight=3.01 PerfScore 6.01
-G_M35244_IG12: ; bbWeight=1.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- bne G_M35244_IG14
+ beq G_M35244_IG13
;; size=24 bbWeight=1.50 PerfScore 9.02
+G_M35244_IG11: ; bbWeight=0.75, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22] + b G_M35244_IG14 + ;; size=4 bbWeight=0.75 PerfScore 0.75 +G_M35244_IG12: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG09 + ;; size=8 bbWeight=0.52 PerfScore 0.78
G_M35244_IG13: ; bbWeight=3.01, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x22]
cbnz x22, G_M35244_IG18 ;; size=4 bbWeight=3.01 PerfScore 3.01 G_M35244_IG14: ; bbWeight=1.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -160,7 +157,7 @@ G_M35244_IG17: ; bbWeight=1.08, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG32
+ bhs G_M35244_IG33
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] @@ -187,7 +184,7 @@ G_M35244_IG19: ; bbWeight=3.01, gcrefRegs=180000 {x19 x20}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG25
+ bls G_M35244_IG26
;; size=28 bbWeight=3.01 PerfScore 19.54 G_M35244_IG20: ; bbWeight=3.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -216,7 +213,13 @@ G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -232,18 +235,18 @@ G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG26
+ cbz x0, G_M35244_IG27
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32 beq G_M35244_IG20 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -291,7 +294,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG20 ;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -304,9 +307,9 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG29
+ b G_M35244_IG30
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -326,22 +329,22 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w21, w21, #1 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG28
+ blt G_M35244_IG29
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG09 - b G_M35244_IG24
+ beq G_M35244_IG24 + b G_M35244_IG25
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x20] str w0, [x19, #0x24] ;; size=8 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1
- beq G_M35244_IG24
+ beq G_M35244_IG25
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this @@ -353,10 +356,10 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG09
+ cbz x19, G_M35244_IG24
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -366,20 +369,20 @@ G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG27 - G_M35244_IG02
+RWD00 dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG31 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG09 - G_M35244_IG02
dd G_M35244_IG24 - G_M35244_IG02
- dd G_M35244_IG24 - G_M35244_IG02 - dd G_M35244_IG24 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG28 - G_M35244_IG02 + dd G_M35244_IG28 - G_M35244_IG02
-; Total bytes of code 764, prolog size 20, PerfScore 158.72, instruction count 191, allocated bytes for code 764 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 768, prolog size 20, PerfScore 159.47, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info: @@ -390,7 +393,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 191 (0x000bf) Actual length = 764 (0x0002fc)
+ Function Length : 192 (0x000c0) Actual length = 768 (0x000300)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.52%) : 65968.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,11 +52,11 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG09
+ cbz w0, G_M35244_IG24
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG09
+ bne G_M35244_IG24
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=4.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -67,7 +67,7 @@ G_M35244_IG03: ; bbWeight=4.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG04: ; bbWeight=3.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG09
+ bhi G_M35244_IG24
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -78,7 +78,7 @@ G_M35244_IG04: ; bbWeight=3.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=3.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG08
+ cbz x20, G_M35244_IG12
;; size=8 bbWeight=3.03 PerfScore 12.11 G_M35244_IG06: ; bbWeight=2.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -89,43 +89,40 @@ G_M35244_IG06: ; bbWeight=2.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG10
+ cbz x0, G_M35244_IG08
;; size=24 bbWeight=2.50 PerfScore 9.99 G_M35244_IG07: ; bbWeight=0.90, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10]
- b G_M35244_IG11
+ b G_M35244_IG09
;; size=8 bbWeight=0.90 PerfScore 3.60
-G_M35244_IG08: ; bbWeight=0.53, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=1.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov w21, wzr - b G_M35244_IG11 - ;; size=8 bbWeight=0.53 PerfScore 0.80 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.00 PerfScore 0.01 -G_M35244_IG10: ; bbWeight=1.60, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20]
mov w21, #1 ;; size=4 bbWeight=1.60 PerfScore 0.80
-G_M35244_IG11: ; bbWeight=3.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=3.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22] cbz x22, G_M35244_IG13 ;; size=12 bbWeight=3.03 PerfScore 6.05
-G_M35244_IG12: ; bbWeight=1.51, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.51, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- bne G_M35244_IG14
+ beq G_M35244_IG13
;; size=24 bbWeight=1.51 PerfScore 9.08
+G_M35244_IG11: ; bbWeight=0.76, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22] + b G_M35244_IG14 + ;; size=4 bbWeight=0.76 PerfScore 0.76 +G_M35244_IG12: ; bbWeight=0.53, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG09 + ;; size=8 bbWeight=0.53 PerfScore 0.80
G_M35244_IG13: ; bbWeight=3.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x22]
cbnz x22, G_M35244_IG18 ;; size=4 bbWeight=3.03 PerfScore 3.03 G_M35244_IG14: ; bbWeight=1.09, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -160,7 +157,7 @@ G_M35244_IG17: ; bbWeight=1.09, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG32
+ bhs G_M35244_IG33
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] @@ -187,7 +184,7 @@ G_M35244_IG19: ; bbWeight=3.03, gcrefRegs=180000 {x19 x20}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG25
+ bls G_M35244_IG26
;; size=28 bbWeight=3.03 PerfScore 19.68 G_M35244_IG20: ; bbWeight=3.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -216,7 +213,13 @@ G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -232,18 +235,18 @@ G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG26
+ cbz x0, G_M35244_IG27
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32 beq G_M35244_IG20 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -291,7 +294,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG20 ;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -304,9 +307,9 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG29
+ b G_M35244_IG30
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -326,22 +329,22 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w21, w21, #1 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG28
+ blt G_M35244_IG29
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG09 - b G_M35244_IG24
+ beq G_M35244_IG24 + b G_M35244_IG25
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x20] str w0, [x19, #0x24] ;; size=8 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1
- beq G_M35244_IG24
+ beq G_M35244_IG25
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this @@ -353,10 +356,10 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG09
+ cbz x19, G_M35244_IG24
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -366,20 +369,20 @@ G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG27 - G_M35244_IG02
+RWD00 dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG31 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG09 - G_M35244_IG02
dd G_M35244_IG24 - G_M35244_IG02
- dd G_M35244_IG24 - G_M35244_IG02 - dd G_M35244_IG24 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG28 - G_M35244_IG02 + dd G_M35244_IG28 - G_M35244_IG02
-; Total bytes of code 764, prolog size 20, PerfScore 159.59, instruction count 191, allocated bytes for code 764 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 768, prolog size 20, PerfScore 160.34, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info: @@ -390,7 +393,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 191 (0x000bf) Actual length = 764 (0x0002fc)
+ Function Length : 192 (0x000c0) Actual length = 768 (0x000300)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+0.53%) : 69387.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -20,10 +20,10 @@ ; V08 loc7 [V08,T18] ( 5, 0 ) int -> x21 ; V09 loc8 [V09,T19] ( 3, 0 ) ref -> x19 class-hnd exact <System.Text.RegularExpressions.RegexNode> ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T13] ( 4, 3.98) int -> x21 "Inline return value spill temp" ; V13 tmp3 [V13,T15] ( 3, 2.76) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T11] ( 6, 5.97) ref -> x21 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T11] ( 6, 5.97) ref -> x20 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T01] ( 4, 13.92) ref -> x22 "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T12] ( 3, 4.41) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -52,22 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG10
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG10
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=2.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG24
+ bls G_M35244_IG22
;; size=16 bbWeight=2.99 PerfScore 14.94 G_M35244_IG04: ; bbWeight=2.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG10
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -78,7 +78,7 @@ G_M35244_IG04: ; bbWeight=2.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=1.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbnz x20, G_M35244_IG18
+ cbnz x20, G_M35244_IG10
;; size=8 bbWeight=1.99 PerfScore 7.96 G_M35244_IG06: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov w21, wzr @@ -87,7 +87,7 @@ G_M35244_IG07: ; bbWeight=1.99, gcrefRegs=180000 {x19 x20}, byrefRegs=000 sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG11
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=1.99 PerfScore 3.98 G_M35244_IG08: ; bbWeight=0.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x22] @@ -95,38 +95,68 @@ G_M35244_IG08: ; bbWeight=0.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG11
+ beq G_M35244_IG12
;; size=24 bbWeight=0.99 PerfScore 5.97 G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x22]
- b G_M35244_IG12
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG10: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.02 PerfScore 0.07 -G_M35244_IG11: ; bbWeight=1.99, gcVars=0000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20 x22] - cbnz x22, G_M35244_IG22
+G_M35244_IG10: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + mov x1, x20 + ; gcrRegs +[x1] + movz x0, #24 + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32 + bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + cbz x0, G_M35244_IG14 + ;; size=24 bbWeight=1.00 PerfScore 4.01 +G_M35244_IG11: ; bbWeight=0.75, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ldr w21, [x0, #0x10] + b G_M35244_IG07 + ;; size=8 bbWeight=0.75 PerfScore 3.00 +G_M35244_IG12: ; bbWeight=1.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] +[x22] + cbz x22, G_M35244_IG17
;; size=4 bbWeight=1.99 PerfScore 1.99
-G_M35244_IG12: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.44, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x20, x22 + ; gcrRegs +[x20] + b G_M35244_IG15 + ;; size=8 bbWeight=0.44 PerfScore 0.65 +G_M35244_IG14: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
+ mov w21, #1 + b G_M35244_IG07 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M35244_IG15: ; bbWeight=1.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x20, #0x2E] + sub w1, w0, #26 + sub w2, w0, #33 + cmp w0, #24 + ccmp w1, #1, z, ne + ccmp w2, #1, z, hi + bhi G_M35244_IG21 + ;; size=28 bbWeight=1.99 PerfScore 12.93 +G_M35244_IG16: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + b G_M35244_IG27 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M35244_IG17: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG15
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.55 PerfScore 2.33
-G_M35244_IG13: ; bbWeight=0.78, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.78, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #24 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG15
+ beq G_M35244_IG20
;; size=24 bbWeight=0.78 PerfScore 4.66
-G_M35244_IG14: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -136,56 +166,59 @@ G_M35244_IG14: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.39 PerfScore 0.78
-G_M35244_IG15: ; bbWeight=1.55, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.55, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG26
+ bhs G_M35244_IG34
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG27
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x21, [x0, w21, UXTW #3] - ; gcrRegs +[x21] - ;; size=36 bbWeight=1.55 PerfScore 24.08 -G_M35244_IG16: ; bbWeight=1.99, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22]
+ ldr x20, [x0, w21, UXTW #3] + ; gcrRegs +[x20] + b G_M35244_IG15 + ;; size=40 bbWeight=1.55 PerfScore 25.64 +G_M35244_IG21: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19 x22]
; byrRegs -[x0]
- ldrb w0, [x21, #0x2E] - sub w1, w0, #26 - sub w2, w0, #33 - cmp w0, #24 - ccmp w1, #1, z, ne - ccmp w2, #1, z, hi - bls G_M35244_IG28 - ;; size=28 bbWeight=1.99 PerfScore 12.93 -G_M35244_IG17: ; bbWeight=1.99, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov x19, x21
+ mov x19, x20
; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=1.99 PerfScore 2.98
-G_M35244_IG18: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x21] +[x20] - mov x1, x20 - ; gcrRegs +[x1] - movz x0, #24 - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - bl CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[x1] +[x0]
+G_M35244_IG22: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + ldr x1, [x1] + ;; size=20 bbWeight=0.03 PerfScore 0.17 +G_M35244_IG23: ; bbWeight=0.03, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + br x1
; gcr arg pop 0
- cbz x0, G_M35244_IG23 - ;; size=24 bbWeight=1.00 PerfScore 4.01 -G_M35244_IG19: ; bbWeight=0.75, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - b G_M35244_IG21 - ;; size=4 bbWeight=0.75 PerfScore 0.75 -G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20]
+ ;; size=16 bbWeight=0.03 PerfScore 0.13 +G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19]
mov x0, x19 ; gcrRegs +[x0] mov w1, wzr @@ -200,80 +233,34 @@ G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG21: ; bbWeight=0.75, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x20] - ldr w21, [x0, #0x10] - b G_M35244_IG07 - ;; size=8 bbWeight=0.75 PerfScore 3.00 -G_M35244_IG22: ; bbWeight=0.44, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20] +[x22]
...

coreclr_tests.run.osx.arm64.checked.mch

+0 (0.00%) : 264321.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG21
+ bls G_M35244_IG20
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,95 +89,95 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG24
+ bls G_M35244_IG23
;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG20
+ cbz x22, G_M35244_IG19
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x22] cmp x1, x0
- bne G_M35244_IG23
+ bne G_M35244_IG22
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG31
+ bhs G_M35244_IG30
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG32
+ bhs G_M35244_IG31
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -195,14 +187,14 @@ G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG21: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG22: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x20] mov x1, x20 ; gcrRegs +[x1] @@ -215,20 +207,20 @@ G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180 ; gcr arg pop 0 mov x22, x0 ; gcrRegs +[x22]
- b G_M35244_IG20
+ b G_M35244_IG19
;; size=32 bbWeight=0.32 PerfScore 2.40
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x22] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG25
+ cbz x0, G_M35244_IG24
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -274,9 +266,9 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -289,9 +281,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG28
+ b G_M35244_IG27
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -311,19 +303,19 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w21, w21, #1 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
...

+0 (0.00%) : 309385.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,50 +89,50 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -149,26 +141,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -178,24 +170,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.32 PerfScore 0.64
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -205,14 +197,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -222,11 +214,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -240,7 +238,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -251,7 +249,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -299,7 +297,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -341,7 +339,7 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ...

+0 (0.00%) : 247362.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG21
+ bls G_M35244_IG20
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,95 +89,95 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG24
+ bls G_M35244_IG23
;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG20
+ cbz x22, G_M35244_IG19
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x22] cmp x1, x0
- bne G_M35244_IG23
+ bne G_M35244_IG22
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG31
+ bhs G_M35244_IG30
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG32
+ bhs G_M35244_IG31
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -195,14 +187,14 @@ G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG21: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG22: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x20] mov x1, x20 ; gcrRegs +[x1] @@ -211,20 +203,20 @@ G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180 ; gcr arg pop 0 mov x22, x0 ; gcrRegs +[x22]
- b G_M35244_IG20
+ b G_M35244_IG19
;; size=16 bbWeight=0.32 PerfScore 0.96
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x22] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG25
+ cbz x0, G_M35244_IG24
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -270,9 +262,9 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -285,9 +277,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG28
+ b G_M35244_IG27
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -307,19 +299,19 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w21, w21, #1 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
...

+0 (0.00%) : 294216.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,50 +89,50 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -149,26 +141,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -178,24 +170,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.32 PerfScore 0.64
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -205,14 +197,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -222,11 +214,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -240,7 +238,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -251,7 +249,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -299,7 +297,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -341,7 +339,7 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ...

+0 (0.00%) : 301232.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,35 +75,35 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG05: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20] mov w21, #1 ;; size=4 bbWeight=0.45 PerfScore 0.23
-G_M35244_IG07: ; bbWeight=2.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=2.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2.00 PerfScore 4.00
-G_M35244_IG08: ; bbWeight=1.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1.00 PerfScore 6.00
-G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -120,28 +112,28 @@ G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG06
+ cbz x0, G_M35244_IG05
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG12: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10]
- b G_M35244_IG07
+ b G_M35244_IG06
;; size=8 bbWeight=1.09 PerfScore 4.36
-G_M35244_IG13: ; bbWeight=2.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2.00 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG07
+ b G_M35244_IG06
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -150,26 +142,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -183,24 +175,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=28 bbWeight=0.32 PerfScore 2.08
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -210,14 +202,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -227,11 +219,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -245,7 +243,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -256,7 +254,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -304,7 +302,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] ...

+0 (0.00%) : 315832.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG22
+ bls G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,50 +89,50 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 @@ -149,26 +141,26 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG21
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -182,24 +174,24 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=28 bbWeight=0.32 PerfScore 2.08
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG25
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -209,14 +201,14 @@ G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -226,11 +218,17 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -244,7 +242,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] +[x20] @@ -255,7 +253,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -303,7 +301,7 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -345,7 +343,7 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ...

libraries_tests.run.osx.arm64.Release.mch

-12 (-0.46%) : 385985.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)

@@ -97,13 +97,13 @@ G_M38617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=40 bbWeight=1 PerfScore 8.00 G_M38617_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x19, G_M38617_IG20
+ cbz x19, G_M38617_IG39
ldr x0, [x20] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32 cmp x0, x21
- bne G_M38617_IG21
+ bne G_M38617_IG40
ldr x0, [x20, #0x10] ; gcrRegs +[x0] ldr x1, [x0] @@ -126,9 +126,9 @@ G_M38617_IG04: ; bbWeight=0.07, gcrefRegs=180001 {x0 x19 x20}, byrefRegs= ;; size=20 bbWeight=0.07 PerfScore 0.73 G_M38617_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cmp w22, #2
- bgt G_M38617_IG23
+ bgt G_M38617_IG14
cmp w22, #1
- bne G_M38617_IG22
+ bne G_M38617_IG13
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> @@ -145,7 +145,7 @@ G_M38617_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x0] add x2, x21, #0xD1FFAB1E cmp x1, x2
- bne G_M38617_IG17
+ bne G_M38617_IG12
;; size=64 bbWeight=1 PerfScore 15.50 G_M38617_IG06: ; bbWeight=0.93, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref ldr w20, [x0, #0x0C] @@ -153,11 +153,11 @@ G_M38617_IG06: ; bbWeight=0.93, gcrefRegs=880001 {x0 x19 x23}, byrefRegs= G_M38617_IG07: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] cmp w20, #1
- beq G_M38617_IG38
+ beq G_M38617_IG36
cmp w20, #2
- beq G_M38617_IG37
+ beq G_M38617_IG35
sub w20, w20, #12
- cbnz w20, G_M38617_IG31
+ cbnz w20, G_M38617_IG29
;; size=24 bbWeight=1 PerfScore 4.50 G_M38617_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V00} @@ -165,7 +165,7 @@ G_M38617_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=880000 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x23, x0
- beq G_M38617_IG34
+ beq G_M38617_IG32
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -181,7 +181,7 @@ G_M38617_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=880000 ; gcrRegs +[x14] ldr x15, [x14, #0x70] ; gcrRegs +[x15]
- cbz x15, G_M38617_IG35
+ cbz x15, G_M38617_IG33
add x14, x23, #8 ; gcrRegs -[x14] ; byrRegs +[x14] @@ -224,7 +224,7 @@ G_M38617_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=880000 ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w1, w0
- bge G_M38617_IG36
+ bge G_M38617_IG34
;; size=156 bbWeight=1 PerfScore 36.50 G_M38617_IG09: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x08] @@ -238,95 +238,19 @@ G_M38617_IG09: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { bl CORINFO_HELP_ARRADDR_ST ; gcrRegs -[x0 x2 x23] ; gcr arg pop 0
- b G_M38617_IG18 - ;; size=32 bbWeight=1 PerfScore 10.50 -G_M38617_IG10: ; bbWeight=0, gcVars=0000000000280100 {V00 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19] - ; GC ptr vars +{V00 V06 V08 V09 V19 V21} - b G_M38617_IG12 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M38617_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V09 loc6]
+ ;; size=28 bbWeight=1 PerfScore 9.50 +G_M38617_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19
; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #1 LSL #32 - ldr x1, [x11] - blr x1 - ; gcr arg pop 0 - movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryRuntime:EnsureNavigator(System.Object):System.Xml.XPath.XPathNavigator - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - mov x1, x0 - ; gcrRegs +[x1] - ldr x0, [fp, #0x20] // [V06 loc3] - movz x2, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:Add(System.__Canon):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - ;; size=72 bbWeight=0 PerfScore 0.00 -G_M38617_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x18] // [V09 loc6] - ; gcrRegs +[x0] - movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #1 LSL #32 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbnz w0, G_M38617_IG11 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M38617_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V67 PSPSym] - bl G_M38617_IG41 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M38617_IG14: ; bbWeight=0, nogc, extend - nop - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M38617_IG15: ; bbWeight=0, gcVars=0000000000080100 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V08 V09 V19 V21} - ldr x0, [fp, #0x20] // [V06 loc3] - ; gcrRegs +[x0] - mov x19, x0 - ; gcrRegs +[x19] - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M38617_IG16: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - ; GC ptr vars -{V06} - mov x1, x19 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - bl CORINFO_HELP_CHKCASTCLASS - ; gcrRegs -[x1 x19] +[x0] - ; gcr arg pop 0 - ldr x2, [fp, #0x28] // [V00 this] - ; gcrRegs +[x2] - ldr x1, [x2, #0x68] - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryNodeSequence:DocOrderDistinct(System.Collections.Generic.IComparer`1[System.Xml.XPath.XPathNavigator]):System.Xml.Xsl.Runtime.XmlQueryNodeSequence:this - ; gcrRegs -[x2] - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - ldr wzr, [x0] - ; GC ptr vars -{V00} - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - b G_M38617_IG18 - ;; size=60 bbWeight=0 PerfScore 0.00 -G_M38617_IG17: ; bbWeight=0.07, gcVars=0000000000000100 {V00}, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38617_IG11: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x58] + ldp x21, x22, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=20 bbWeight=1 PerfScore 6.00 +G_M38617_IG12: ; bbWeight=0.07, gcVars=0000000000000100 {V00}, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x23] ; GC ptr vars +{V00 V08} ldr x1, [x0] @@ -338,87 +262,10 @@ G_M38617_IG17: ; bbWeight=0.07, gcVars=0000000000000100 {V00}, gcrefRegs= sxtw w20, w0 b G_M38617_IG07 ;; size=24 bbWeight=0.07 PerfScore 0.80
-G_M38617_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x23] - ; GC ptr vars -{V00 V08} - mov x0, x19 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M38617_IG19: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M38617_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x19] - movz x0, #0xD1FFAB1E // code for <unknown method> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - ldr x0, [x0] - blr x0 - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x22, x0 - ; gcrRegs +[x22] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - mov x1, #1 - bl CORINFO_HELP_NEWARR_1_OBJ - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x21, x0 - ; gcrRegs +[x21] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - str x0, [x21, #0x10] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - mov x1, x22 - ; gcrRegs +[x1] - mov x2, x21 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2 x21-x22] - ; gcr arg pop 0 - mov x0, x19
...

-8 (-0.43%) : 592206.dasm - Microsoft.CodeAnalysis.ArrayBuilderExtensions:SelectAsArraySystem.Canon,System.Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 79597
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 79597
; 11 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -55,12 +55,12 @@ ; V43 tmp36 [V43,T54] ( 3, 0.04) ref -> x25 "guarded devirt return temp" ; V44 tmp37 [V44,T46] ( 4, 0.09) ref -> x0 "guarded devirt arg temp" ;* V45 tmp38 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Binder+<>c>
-; V46 tmp39 [V46,T25] ( 3, 0.43) ref -> x22 "guarded devirt return temp"
+; V46 tmp39 [V46,T25] ( 3, 0.43) ref -> x26 "guarded devirt return temp"
;* V47 tmp40 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Binder+<>c> ;* V48 tmp41 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> ; V49 tmp42 [V49,T42] ( 2, 0.09) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-; V50 tmp43 [V50,T05] ( 6, 2.59) ref -> x19 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> -; V51 tmp44 [V51,T20] ( 3, 0.65) int -> x20 "Inline stloc first use temp"
+; V50 tmp43 [V50,T05] ( 6, 2.59) ref -> x22 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> +; V51 tmp44 [V51,T20] ( 3, 0.65) int -> x19 "Inline stloc first use temp"
;* V52 tmp45 [V52 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" ;* V53 tmp46 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon]> ;* V54 tmp47 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]> @@ -92,16 +92,16 @@ ; V80 rat15 [V80,T41] ( 3, 0.09) long -> x0 "runtime lookup" ; V81 rat16 [V81,T30] ( 3, 0.13) long -> x0 "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M57371_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x60]! + stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0 mov x20, x1 ; gcrRegs +[x20] @@ -113,100 +113,10 @@ G_M57371_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcrRegs +[x0] ldr w22, [x0, #0x10] cmp w22, #1
- beq G_M57371_IG08
+ bne G_M57371_IG10
;; size=16 bbWeight=1 PerfScore 7.50
-G_M57371_IG03: ; bbWeight=0.43, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG03: ; bbWeight=0.57, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp w22, #4 - bhi G_M57371_IG26 - mov w0, w22 - adr x1, [@RWD00] - ldr w1, [x1, x0, LSL #2] - adr x2, [G_M57371_IG02] - add x1, x1, x2 - br x1 - ;; size=32 bbWeight=0.43 PerfScore 3.24 -G_M57371_IG04: ; bbWeight=0.22, gcrefRegs=1E00000 {x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x20] +[x22-x24] - ldr x19, [x23, #0x08] - ; gcrRegs +[x19] - ldr w0, [x19, #0x10] - add w20, w0, #1 - mov x0, x19 - ; gcrRegs +[x0] - mov w1, w20 - movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:EnsureCapacity(int):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0] - ldrsw x1, [x19, #0x10] - ldr x0, [x19, #0x08] - ; gcrRegs +[x0] - mov x2, x22 - ; gcrRegs +[x2] - bl CORINFO_HELP_ARRADDR_ST - ; gcrRegs -[x0 x2 x22] - str w20, [x19, #0x10] - add w25, w25, #1 - ldr x0, [x24, #0x08] - ; gcrRegs +[x0] - ldr w0, [x0, #0x10] - ; gcrRegs -[x0] - cmp w25, w0 - bge G_M57371_IG06 - ;; size=80 bbWeight=0.22 PerfScore 6.38 -G_M57371_IG05: ; bbWeight=0.22, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x19] - mov x0, x24 - ; gcrRegs +[x0] - mov w1, w25 - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2 - ldr x1, [x21, #0x18] - movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Binder+<>c:<.cctor>b__1119_1(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - cmp x1, x2 - bne G_M57371_IG38 - mov x1, x0 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - bl CORINFO_HELP_CHKCASTCLASS - ; gcrRegs -[x1] +[x0] - mov x22, x0 - ; gcrRegs +[x22] - b G_M57371_IG04 - ;; size=80 bbWeight=0.22 PerfScore 3.68 -G_M57371_IG06: ; bbWeight=0.02, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x21-x22 x24] - mov x0, x23 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - ldr wzr, [x0] - blr x1 - ; gcrRegs -[x23] - ;; size=28 bbWeight=0.02 PerfScore 0.20 -G_M57371_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x25, [sp, #0x48] - ldp x23, x24, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=24 bbWeight=1 PerfScore 7.00 -G_M57371_IG08: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0] +[x20-x21]
mov x0, x20 ; gcrRegs +[x0] mov w1, wzr @@ -221,7 +131,7 @@ G_M57371_IG08: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=300 movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M57371_IG39
+ bne G_M57371_IG41
mov x1, x0 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -233,18 +143,28 @@ G_M57371_IG08: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=300 mov x23, x0 ; gcrRegs +[x23] ;; size=76 bbWeight=0.57 PerfScore 9.09
-G_M57371_IG09: ; bbWeight=0.57, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG04: ; bbWeight=0.57, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x19, #0x38] ldr x1, [x0, #0x10] cmp x1, #64
- ble G_M57371_IG16
+ ble G_M57371_IG07
;; size=16 bbWeight=0.57 PerfScore 4.26
-G_M57371_IG10: ; bbWeight=0.45, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG05: ; bbWeight=0.45, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0x40]
- cbz x0, G_M57371_IG16
+ cbz x0, G_M57371_IG07
;; size=8 bbWeight=0.45 PerfScore 1.82
-G_M57371_IG11: ; bbWeight=0.57, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+G_M57371_IG06: ; bbWeight=0.36, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref + b G_M57371_IG08 + ;; size=4 bbWeight=0.36 PerfScore 0.36 +G_M57371_IG07: ; bbWeight=0.20, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_METHOD + ;; size=20 bbWeight=0.20 PerfScore 0.61 +G_M57371_IG08: ; bbWeight=0.57, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
mov x1, x23 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray:Create[System.__Canon](System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon] @@ -253,10 +173,27 @@ G_M57371_IG11: ; bbWeight=0.57, gcrefRegs=800000 {x23}, byrefRegs=0000 {} ldr x2, [x2] blr x2 ; gcrRegs -[x1 x23] +[x0]
- b G_M57371_IG07 - ;; size=28 bbWeight=0.57 PerfScore 3.98 -G_M57371_IG12: ; bbWeight=0.27, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=0.57 PerfScore 3.41 +G_M57371_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x25, x26, [sp, #0x50] + ldp x23, x24, [sp, #0x40] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=24 bbWeight=1 PerfScore 6.00 +G_M57371_IG10: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20-x21]
+ cmp w22, #4 + bhi G_M57371_IG24 + mov w0, w22 + adr x1, [@RWD00] + ldr w1, [x1, x0, LSL #2] + adr x2, [G_M57371_IG02] + add x1, x1, x2 + br x1 + ;; size=32 bbWeight=0.43 PerfScore 3.24 +G_M57371_IG11: ; bbWeight=0.27, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0] mov w1, wzr @@ -270,7 +207,7 @@ G_M57371_IG12: ; bbWeight=0.27, gcrefRegs=300000 {x20 x21}, byrefRegs=000 movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M57371_IG40
+ bne G_M57371_IG42
mov x1, x0 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -300,18 +237,28 @@ G_M57371_IG12: ; bbWeight=0.27, gcrefRegs=300000 {x20 x21}, byrefRegs=000 mov x24, x0 ; gcrRegs +[x24] ;; size=128 bbWeight=0.27 PerfScore 7.08
-G_M57371_IG13: ; bbWeight=0.27, gcrefRegs=1800000 {x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG12: ; bbWeight=0.27, gcrefRegs=1800000 {x23 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x19, #0x38] ldr x1, [x0, #0x10] cmp x1, #56
- ble G_M57371_IG17
+ ble G_M57371_IG15
;; size=16 bbWeight=0.27 PerfScore 2.04
-G_M57371_IG14: ; bbWeight=0.22, gcrefRegs=1800000 {x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG13: ; bbWeight=0.22, gcrefRegs=1800000 {x23 x24}, byrefRegs=0000 {}, byref, isz
...

-4 (-0.40%) : 592252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 47162
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 47162
; 4 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -80,13 +80,9 @@ G_M57106_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x20, x0
- bne G_M57106_IG04
+ beq G_M57106_IG11
;; size=24 bbWeight=1 PerfScore 6.00
-G_M57106_IG03: ; bbWeight=0.45, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov w21, #9 - b G_M57106_IG05 - ;; size=8 bbWeight=0.45 PerfScore 0.68 -G_M57106_IG04: ; bbWeight=0.55, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M57106_IG03: ; bbWeight=0.55, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x20, #0x58] @@ -96,12 +92,12 @@ G_M57106_IG04: ; bbWeight=0.55, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcr arg pop 0 sxtw w21, w0 ;; size=20 bbWeight=0.55 PerfScore 4.40
-G_M57106_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w22, w21, #4 cmp w22, #5
- bne G_M57106_IG16
+ bne G_M57106_IG14
;; size=12 bbWeight=1 PerfScore 2.00
-G_M57106_IG06: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG05: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x22, x19 ; gcrRegs +[x22] ldr x1, [x22] @@ -109,17 +105,63 @@ G_M57106_IG06: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- bne G_M57106_IG09
+ bne G_M57106_IG13
;; size=28 bbWeight=0.86 PerfScore 5.58
-G_M57106_IG07: ; bbWeight=0.86, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG06: ; bbWeight=0.86, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x20, x0
- bne G_M57106_IG10
+ beq G_M57106_IG12
;; size=20 bbWeight=0.86 PerfScore 2.57
-G_M57106_IG08: ; bbWeight=0.38, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M57106_IG07: ; bbWeight=0.48, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref + mov x0, x22 + ; gcrRegs +[x0] + ldr x1, [x20, #0xF0] + ldr x1, [x1, #0x18] + blr x1 + ; gcrRegs -[x22] + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + ;; size=20 bbWeight=0.48 PerfScore 3.84 +G_M57106_IG08: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #2 LSL #32 + ldr x20, [x1] + ; gcrRegs +[x20] + ldr w1, [x19, #0x08] + cbnz w1, G_M57106_IG18 + ;; size=24 bbWeight=0.86 PerfScore 7.29 +G_M57106_IG09: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19-x20] + movz x1, #0xD1FFAB1E // box for <unknown class>:<unknown field> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #2 LSL #32 + ldr x1, [x1] + ; gcrRegs +[x1] + ldr x0, [x1, #0x08] + ; gcrRegs +[x0] + ;; size=20 bbWeight=0.80 PerfScore 5.96 +G_M57106_IG10: ; bbWeight=0.86, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x1] + ldr x25, [sp, #0x58] + ldp x23, x24, [sp, #0x48] + ldp x21, x22, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=24 bbWeight=0.86 PerfScore 6.01 +G_M57106_IG11: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] +[x19] + mov w21, #9 + b G_M57106_IG04 + ;; size=8 bbWeight=0.45 PerfScore 0.68 +G_M57106_IG12: ; bbWeight=0.38, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] +[x22]
mov x0, x22 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol:EnsureMapAndTypeParameters():this @@ -140,9 +182,9 @@ G_M57106_IG08: ; bbWeight=0.38, gcrefRegs=400000 {x22}, byrefRegs=0000 {} ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M57106_IG11
+ b G_M57106_IG08
;; size=56 bbWeight=0.38 PerfScore 6.04
-G_M57106_IG09: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M57106_IG13: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov x1, x19 ; gcrRegs +[x1] @@ -154,70 +196,12 @@ G_M57106_IG09: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcr arg pop 0 mov x22, x0 ; gcrRegs +[x22]
- b G_M57106_IG07
+ b G_M57106_IG06
;; size=28 bbWeight=0.17 PerfScore 0.77
-G_M57106_IG10: ; bbWeight=0.48, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x22 - ; gcrRegs +[x0] - ldr x1, [x20, #0xF0] - ldr x1, [x1, #0x18] - blr x1 - ; gcrRegs -[x22] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - ;; size=20 bbWeight=0.48 PerfScore 3.84 -G_M57106_IG11: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #2 LSL #32 - ldr x20, [x1] - ; gcrRegs +[x20] - ldr w1, [x19, #0x08] - cbnz w1, G_M57106_IG18 - ;; size=24 bbWeight=0.86 PerfScore 7.29 -G_M57106_IG12: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19-x20] - movz x1, #0xD1FFAB1E // box for <unknown class>:<unknown field> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #2 LSL #32 - ldr x1, [x1] - ; gcrRegs +[x1] - ldr x0, [x1, #0x08] - ; gcrRegs +[x0] - ;; size=20 bbWeight=0.80 PerfScore 5.96 -G_M57106_IG13: ; bbWeight=0.86, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x1] - ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=24 bbWeight=0.86 PerfScore 6.01 -G_M57106_IG14: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E // box for <unknown class>:<unknown field> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #2 LSL #32 - ldr x0, [x0] - ; gcrRegs +[x0] - ldr x0, [x0, #0x08] - ;; size=20 bbWeight=0.14 PerfScore 1.07 -G_M57106_IG15: ; bbWeight=0.14, epilog, nogc, extend - ldr x25, [sp, #0x58] - ldp x23, x24, [sp, #0x48] - ldp x21, x22, [sp, #0x38] - ldp x19, x20, [sp, #0x28] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=24 bbWeight=0.14 PerfScore 0.99 -G_M57106_IG16: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0] +[x19]
+G_M57106_IG14: ; bbWeight=0.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x22] +[x19]
cmp w22, #7
- bhi G_M57106_IG17
+ bhi G_M57106_IG15
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -225,13 +209,29 @@ G_M57106_IG16: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=800 add x1, x1, x2 br x1 ;; size=32 bbWeight=0.14 PerfScore 1.07
-G_M57106_IG17: ; bbWeight=0.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG15: ; bbWeight=0.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, #15 bne G_M57106_IG34
- b G_M57106_IG14 - ;; size=12 bbWeight=0.14 PerfScore 0.36 -G_M57106_IG18: ; bbWeight=0.06, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20]
+ ;; size=8 bbWeight=0.14 PerfScore 0.21 +G_M57106_IG16: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + movz x0, #0xD1FFAB1E // box for <unknown class>:<unknown field> + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #2 LSL #32 + ldr x0, [x0] + ; gcrRegs +[x0] + ldr x0, [x0, #0x08] + ;; size=20 bbWeight=0.14 PerfScore 1.07 +G_M57106_IG17: ; bbWeight=0.14, epilog, nogc, extend + ldr x25, [sp, #0x58] + ldp x23, x24, [sp, #0x48] + ldp x21, x22, [sp, #0x38] + ldp x19, x20, [sp, #0x28] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=24 bbWeight=0.14 PerfScore 0.99 +G_M57106_IG18: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0] +[x19-x20]
sxtw x1, w1 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -244,13 +244,13 @@ G_M57106_IG18: ; bbWeight=0.06, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov w22, wzr ldr w23, [x21, #0x08] cmp w23, #0
- ble G_M57106_IG25
+ ble G_M57106_IG26
;; size=40 bbWeight=0.06 PerfScore 0.53 G_M57106_IG19: ; bbWeight=0.03, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr w1, [x19, #0x08] cmp w1, w23
- blt G_M57106_IG26
+ blt G_M57106_IG27
;; size=12 bbWeight=0.03 PerfScore 0.14 G_M57106_IG20: ; bbWeight=0.06, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov w1, #24 @@ -266,8 +266,8 @@ G_M57106_IG20: ; bbWeight=0.06, gcrefRegs=380000 {x19 x20 x21}, byrefRegs movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 ...

+0 (0.00%) : 388101.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -61,30 +61,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG43
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG43
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=1.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=1.12 PerfScore 4.49 -G_M35244_IG04: ; bbWeight=2.83, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=2.83, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG28
+ bls G_M35244_IG27
;; size=16 bbWeight=2.83 PerfScore 14.17
-G_M35244_IG05: ; bbWeight=2.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG43
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -92,12 +84,12 @@ G_M35244_IG05: ; bbWeight=2.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add x0, x0, x2 br x0 ;; size=36 bbWeight=2.67 PerfScore 21.33
-G_M35244_IG06: ; bbWeight=1.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=1.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG13
+ cbz x20, G_M35244_IG12
;; size=8 bbWeight=1.67 PerfScore 6.67
-G_M35244_IG07: ; bbWeight=1.33, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.33, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -106,57 +98,57 @@ G_M35244_IG07: ; bbWeight=1.33, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG09
+ cbz x0, G_M35244_IG08
;; size=24 bbWeight=1.33 PerfScore 5.33
-G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10]
- b G_M35244_IG10
+ b G_M35244_IG09
;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M35244_IG09: ; bbWeight=0.83, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=0.83, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov w21, #1 ;; size=4 bbWeight=0.83 PerfScore 0.42
-G_M35244_IG10: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG14
+ cbz x22, G_M35244_IG13
;; size=12 bbWeight=1.67 PerfScore 3.33
-G_M35244_IG11: ; bbWeight=0.83, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.83, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG14
+ beq G_M35244_IG13
;; size=24 bbWeight=0.83 PerfScore 5.00
-G_M35244_IG12: ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG15
+ b G_M35244_IG14
;; size=4 bbWeight=0.42 PerfScore 0.42
-G_M35244_IG13: ; bbWeight=0.33, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG12: ; bbWeight=0.33, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, wzr
- b G_M35244_IG10
+ b G_M35244_IG09
;; size=8 bbWeight=0.33 PerfScore 0.50
-G_M35244_IG14: ; bbWeight=1.67, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.67, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbnz x22, G_M35244_IG21
+ cbnz x22, G_M35244_IG20
;; size=4 bbWeight=1.67 PerfScore 1.67
-G_M35244_IG15: ; bbWeight=1.19, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=1.19, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=8 bbWeight=1.19 PerfScore 1.79
-G_M35244_IG16: ; bbWeight=0.60, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=0.60, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG18
+ beq G_M35244_IG17
;; size=24 bbWeight=0.60 PerfScore 3.57
-G_M35244_IG17: ; bbWeight=0.30, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=0.30, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -166,23 +158,23 @@ G_M35244_IG17: ; bbWeight=0.30, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.30 PerfScore 0.60
-G_M35244_IG18: ; bbWeight=1.19, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.19, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG42
+ bhs G_M35244_IG41
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG43
+ bhs G_M35244_IG42
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20] ;; size=36 bbWeight=1.19 PerfScore 18.45
-G_M35244_IG19: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ; byrRegs -[x0] ldrb w0, [x20, #0x2E] @@ -191,45 +183,45 @@ G_M35244_IG19: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG25
+ bls G_M35244_IG24
;; size=28 bbWeight=1.67 PerfScore 10.83
-G_M35244_IG20: ; bbWeight=1.67, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=1.67, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=1.67 PerfScore 2.50
-G_M35244_IG21: ; bbWeight=0.48, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=0.48, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x22] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG19
+ b G_M35244_IG18
;; size=8 bbWeight=0.48 PerfScore 0.71
-G_M35244_IG22: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG21: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20 x22] ldr w1, [x19, #0x24] cmp w1, #1
- bne G_M35244_IG41
+ bne G_M35244_IG40
;; size=12 bbWeight=0.17 PerfScore 0.75
-G_M35244_IG23: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20] mov x19, x20
- cbz x19, G_M35244_IG30
+ cbz x19, G_M35244_IG29
;; size=12 bbWeight=0.17 PerfScore 0.75
-G_M35244_IG24: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M35244_IG33
+G_M35244_IG23: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + b G_M35244_IG32
;; size=4 bbWeight=0.08 PerfScore 0.08
-G_M35244_IG25: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG24: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG26
+ cbz x0, G_M35244_IG25
ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG20
+ beq G_M35244_IG19
;; size=20 bbWeight=0.08 PerfScore 0.71
-G_M35244_IG26: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -275,13 +267,13 @@ G_M35244_IG26: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=000 blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG20
+ b G_M35244_IG19
;; size=124 bbWeight=0.08 PerfScore 2.42
-G_M35244_IG27: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=4 bbWeight=0.17 PerfScore 0.17
-G_M35244_IG28: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this @@ -289,58 +281,58 @@ G_M35244_IG28: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0.17 PerfScore 0.83
-G_M35244_IG29: ; bbWeight=0.17, epilog, nogc, extend
+G_M35244_IG28: ; bbWeight=0.17, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=0.17 PerfScore 0.67
-G_M35244_IG30: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
...

+0 (0.00%) : 590486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanEscapeSequence(byref):ushort:this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 46128
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 46128
; 4 inlinees with PGO data; 14 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -165,9 +165,17 @@ G_M29172_IG14: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=800 ;; size=36 bbWeight=0.31 PerfScore 2.52 G_M29172_IG15: ; bbWeight=0.31, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz sub w24, w22, #110
- cbz w24, G_M29172_IG17
+ cbnz w24, G_M29172_IG17
;; size=8 bbWeight=0.31 PerfScore 0.46
-G_M29172_IG16: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M29172_IG16: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + ; byrRegs -[x20] + mov w22, #10 + b G_M29172_IG12 + ;; size=8 bbWeight=0.19 PerfScore 0.28 +G_M29172_IG17: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs +[x19] + ; byrRegs +[x20]
cmp w24, #10 bhi G_M29172_IG33 mov w1, w24 @@ -177,15 +185,7 @@ G_M29172_IG16: ; bbWeight=0.12, gcrefRegs=80000 {x19}, byrefRegs=100000 { add x0, x0, x2 br x0 ;; size=32 bbWeight=0.12 PerfScore 0.93
-G_M29172_IG17: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ; byrRegs -[x20] - mov w22, #10 - b G_M29172_IG12 - ;; size=8 bbWeight=0.19 PerfScore 0.28
G_M29172_IG18: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- ; gcrRegs +[x19] - ; byrRegs +[x20]
ldr x0, [x19, #0x08] ; gcrRegs +[x0] mov w1, w21 @@ -385,7 +385,7 @@ RWD00 dd G_M29172_IG26 - G_M29172_IG02 dd G_M29172_IG33 - G_M29172_IG02 dd G_M29172_IG31 - G_M29172_IG02 dd G_M29172_IG25 - G_M29172_IG02
-RWD24 dd G_M29172_IG17 - G_M29172_IG02
+RWD24 dd G_M29172_IG16 - G_M29172_IG02
dd G_M29172_IG33 - G_M29172_IG02 dd G_M29172_IG33 - G_M29172_IG02 dd G_M29172_IG33 - G_M29172_IG02

+0 (0.00%) : 582264.dasm - System.Text.RegularExpressions.Tests.RegexHelpers:OptionsFromEngine(int):int (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 37648
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 37648
; 3 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; @@ -45,13 +45,22 @@ G_M57613_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w19, w0 ;; size=36 bbWeight=1 PerfScore 7.00 G_M57613_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cbz w19, G_M57613_IG05
+ cbnz w19, G_M57613_IG05
;; size=4 bbWeight=1 PerfScore 1.00
-G_M57613_IG03: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57613_IG03: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov w0, wzr + ;; size=4 bbWeight=0.62 PerfScore 0.31 +G_M57613_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x21, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M57613_IG05: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp w19, #3 bhi G_M57613_IG09 ;; size=8 bbWeight=0.38 PerfScore 0.57
-G_M57613_IG04: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57613_IG06: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov w0, w19 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -59,22 +68,13 @@ G_M57613_IG04: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr add x1, x1, x2 br x1 ;; size=24 bbWeight=0.38 PerfScore 2.28
-G_M57613_IG05: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, wzr - ;; size=4 bbWeight=0.62 PerfScore 0.31 -G_M57613_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x21, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M57613_IG07: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57613_IG07: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #8
- b G_M57613_IG06
+ b G_M57613_IG04
;; size=8 bbWeight=0.30 PerfScore 0.45 G_M57613_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w0, #0xD1FFAB1E
- b G_M57613_IG06
+ b G_M57613_IG04
;; size=8 bbWeight=0.08 PerfScore 0.12 G_M57613_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x0, fp, #16 // [V02 loc1] @@ -174,7 +174,7 @@ G_M57613_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] brk_unix #0 ;; size=112 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M57613_IG05 - G_M57613_IG02
+RWD00 dd G_M57613_IG03 - G_M57613_IG02
dd G_M57613_IG07 - G_M57613_IG02 dd G_M57613_IG08 - G_M57613_IG02 dd G_M57613_IG07 - G_M57613_IG02

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.osx.arm64.checked.mch 7 1 3 3 -4 +12
benchmarks.run_tiered.osx.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.osx.arm64.checked.mch 14 0 0 14 -0 +0
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.osx.arm64.Release.mch 9 5 0 4 -32 +0
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
30 6 3 21 -36 +12

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 25,027 4 25,023 30 (0.12%) 30 (0.12%)
benchmarks.run_pgo.osx.arm64.checked.mch 84,586 48,648 35,938 2 (0.00%) 2 (0.00%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,599 37,785 10,814 5 (0.01%) 5 (0.01%)
coreclr_tests.run.osx.arm64.checked.mch 599,306 365,137 234,169 32 (0.01%) 32 (0.01%)
libraries.crossgen2.osx.arm64.checked.mch 266,093 15 266,078 8 (0.00%) 8 (0.00%)
libraries.pmi.osx.arm64.checked.mch 321,328 18 321,310 344 (0.11%) 344 (0.11%)
libraries_tests.run.osx.arm64.Release.mch 632,216 464,282 167,934 157 (0.02%) 157 (0.02%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 299,979 21,618 278,361 458 (0.15%) 458 (0.15%)
realworld.run.osx.arm64.checked.mch 31,504 3 31,501 96 (0.30%) 96 (0.30%)
2,308,638 937,510 1,371,128 1,132 (0.05%) 1,132 (0.05%)

jit-analyze output

benchmarks.run_pgo.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34678976 (overridden on cmd)
Total bytes of diff: 34678984 (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):
           4 : 65968.dasm (0.52 % of base)
           4 : 63917.dasm (0.52 % of base)
           4 : 69387.dasm (0.53 % of base)

Top file improvements (bytes):
          -4 : 67681.dasm (-0.53 % of base)

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

Top method regressions (bytes):
           4 (0.52 % of base) : 65968.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.52 % of base) : 63917.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.53 % of base) : 69387.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (bytes):
          -4 (-0.53 % of base) : 67681.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method regressions (percentages):
           4 (0.53 % of base) : 69387.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.52 % of base) : 65968.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.52 % of base) : 63917.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
          -4 (-0.53 % of base) : 67681.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

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


coreclr_tests.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 500389076 (overridden on cmd)
Total bytes of diff: 500389076 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



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

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


libraries_tests.run.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 313296132 (overridden on cmd)
Total bytes of diff: 313296100 (overridden on cmd)
Total bytes of delta: -32 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -12 : 385985.dasm (-0.46 % of base)
          -8 : 592206.dasm (-0.43 % of base)
          -4 : 86864.dasm (-0.12 % of base)
          -4 : 592252.dasm (-0.40 % of base)
          -4 : 587113.dasm (-0.21 % of base)

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

Top method improvements (bytes):
         -12 (-0.46 % of base) : 385985.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -8 (-0.43 % of base) : 592206.dasm - Microsoft.CodeAnalysis.ArrayBuilderExtensions:SelectAsArray[System.__Canon,System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          -4 (-0.40 % of base) : 592252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -4 (-0.12 % of base) : 86864.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          -4 (-0.21 % of base) : 587113.dasm - System.Text.RegularExpressions.Tests.MonoTests+<ValidateRegex_MemberData>d__1:MoveNext():ubyte:this (Tier1)

Top method improvements (percentages):
         -12 (-0.46 % of base) : 385985.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -8 (-0.43 % of base) : 592206.dasm - Microsoft.CodeAnalysis.ArrayBuilderExtensions:SelectAsArray[System.__Canon,System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          -4 (-0.40 % of base) : 592252.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -4 (-0.21 % of base) : 587113.dasm - System.Text.RegularExpressions.Tests.MonoTests+<ValidateRegex_MemberData>d__1:MoveNext():ubyte:this (Tier1)
          -4 (-0.12 % of base) : 86864.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)

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



windows arm64

Diffs are based on 2,387,065 contexts (950,047 MinOpts, 1,437,018 FullOpts).

MISSED contexts: 1,169 (0.05%)

Overall (-32 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 46,736,428 +4
coreclr_tests.run.windows.arm64.checked.mch 511,499,484 +0
libraries_tests.run.windows.arm64.Release.mch 320,238,700 -36

FullOpts (-32 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 30,452,180 +4
coreclr_tests.run.windows.arm64.checked.mch 165,596,824 +0
libraries_tests.run.windows.arm64.Release.mch 117,279,024 -36

Example diffs

benchmarks.run_pgo.windows.arm64.checked.mch

-4 (-0.53%) : 85516.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -51,22 +51,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG15
+ cbz w0, G_M35244_IG23
ldr w1, [x19, #0x28] mov w0, #0xD1FFAB1E tst w1, w0
- bne G_M35244_IG15
+ bne G_M35244_IG23
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w20, [x19, #0x2E] sub w1, w20, #3 cmp w1, #5
- bls G_M35244_IG25
+ bls G_M35244_IG19
;; size=16 bbWeight=2.00 PerfScore 10.00 G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w1, w20, #24 cmp w1, #10
- bhi G_M35244_IG15
+ bhi G_M35244_IG23
mov w1, w1 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -77,7 +77,7 @@ G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG11
+ cbz x20, G_M35244_IG10
;; size=8 bbWeight=1.00 PerfScore 4.00 G_M35244_IG06: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -88,7 +88,7 @@ G_M35244_IG06: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M35244_IG10
+ cbnz x0, G_M35244_IG25
mov w21, #1 ;; size=28 bbWeight=0.71 PerfScore 3.21 G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -96,7 +96,7 @@ G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 sub w22, w21, #1 mov x23, x20 ; gcrRegs +[x23]
- cbz x23, G_M35244_IG12
+ cbz x23, G_M35244_IG11
;; size=12 bbWeight=1.00 PerfScore 2.00 G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz ldr x0, [x23] @@ -104,27 +104,21 @@ G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M35244_IG12
+ beq G_M35244_IG11
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M35244_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x23]
- b G_M35244_IG17
+ b G_M35244_IG26
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M35244_IG10: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0] - ldr w21, [x0, #0x10] - b G_M35244_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M35244_IG11: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0]
+G_M35244_IG10: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, wzr b G_M35244_IG07 ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=1.00, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x23]
- cbz x23, G_M35244_IG17
+ cbz x23, G_M35244_IG26
;; size=4 bbWeight=1.00 PerfScore 1.00
-G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldrb w0, [x23, #0x2E] sub w1, w0, #26 @@ -132,23 +126,121 @@ G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG18
+ bls G_M35244_IG27
;; size=28 bbWeight=1.00 PerfScore 6.50
-G_M35244_IG14: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x23 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M35244_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19 x23]
+G_M35244_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:ChildCount():int:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + sxtw w20, w0 + mov w21, #1 + b G_M35244_IG16 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M35244_IG15: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + mov w1, w21 + movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcr arg pop 0 + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ldr wzr, [x0] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + add w21, w21, #1 + ;; size=56 bbWeight=0 PerfScore 0.00 +G_M35244_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w21, w20 + blt G_M35244_IG15 + ldrb w0, [x19, #0x2E] + cmp w0, #34 + beq G_M35244_IG23 + b G_M35244_IG24 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M35244_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ldr w0, [x19, #0x20] + str w0, [x19, #0x24] + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M35244_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr w0, [x19, #0x24] + cmp w0, #1 + beq G_M35244_IG24 + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x19] + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + cbz x19, G_M35244_IG23 + ldrb w20, [x19, #0x2E] + sub w0, w20, #3 + ; gcrRegs -[x0] + cmp w0, #5 + bhi G_M35244_IG04 + ;; size=60 bbWeight=0 PerfScore 0.00 +G_M35244_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG20: ; bbWeight=0, epilog, nogc, extend + ldr x23, [sp, #0x38] + ldp x21, x22, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x40 + br x1 + ; gcr arg pop 0 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] + movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + blr x0 + ; gcr arg pop 0 + brk_windows #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M35244_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x40 ret lr
- ;; size=20 bbWeight=0.01 PerfScore 0.08 -G_M35244_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0 PerfScore 0.00 +G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -164,8 +256,13 @@ G_M35244_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] +[x20]
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20] + ldr w21, [x0, #0x10] + b G_M35244_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0]
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -176,30 +273,30 @@ G_M35244_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w22, w1
- bhs G_M35244_IG27
+ bhs G_M35244_IG21
ldr x0, [x0, #0x08] ldr w1, [x0, #0x08] cmp w22, w1
- bhs G_M35244_IG28
+ bhs G_M35244_IG22
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x23, [x0, w22, UXTW #3] ; gcrRegs +[x23]
- b G_M35244_IG13
+ b G_M35244_IG12
...

+0 (0.00%) : 87417.dasm - System.Text.RegularExpressions.RegexCompiler+<>cDisplayClass158_0:gEmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)

@@ -56,19 +56,19 @@ G_M17183_IG02: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 ldr w0, [x0, #0x20] ; gcrRegs -[x0] cmp w0, #19
- beq G_M17183_IG22
+ beq G_M17183_IG10
;; size=24 bbWeight=1 PerfScore 13.50 G_M17183_IG03: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz bl <unknown method>
- cbz w0, G_M17183_IG27
+ cbz w0, G_M17183_IG15
ldr w3, [x19, #0x28]
- tbnz w3, #6, G_M17183_IG28
+ tbnz w3, #6, G_M17183_IG16
;; size=16 bbWeight=1 PerfScore 6.00 G_M17183_IG04: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldrb w3, [x19, #0x2E] sub w23, w3, #3 cmp w23, #22
- bne G_M17183_IG07
+ bne G_M17183_IG06
;; size=16 bbWeight=1 PerfScore 5.00 G_M17183_IG05: ; bbWeight=0.56, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref uxtb w3, w21 @@ -84,18 +84,12 @@ G_M17183_IG05: ; bbWeight=0.56, gcrefRegs=580000 {x19 x20 x22}, byrefRegs ldr x4, [x4] blr x4 ; gcrRegs -[x0-x2 x19-x20 x22]
- ;; size=36 bbWeight=0.56 PerfScore 4.17 -G_M17183_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M17183_IG07: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M17183_IG09 + ;; size=40 bbWeight=0.56 PerfScore 4.72 +G_M17183_IG06: ; bbWeight=0.44, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x20 x22] cmp w23, #43
- bhi G_M17183_IG06
+ bhi G_M17183_IG09
mov w2, w23 adr x0, [@RWD00] ldr w0, [x0, x2, LSL #2] @@ -103,7 +97,7 @@ G_M17183_IG07: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=580 add x0, x0, x1 br x0 ;; size=32 bbWeight=0.44 PerfScore 3.33
-G_M17183_IG08: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17183_IG07: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] uxtb w2, w21 mov x0, x20 @@ -117,9 +111,9 @@ G_M17183_IG08: ; bbWeight=0.44, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x4, [x4] blr x4 ; gcrRegs -[x0-x1 x19-x20]
- b G_M17183_IG06
+ b G_M17183_IG09
;; size=40 bbWeight=0.44 PerfScore 3.78
-G_M17183_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17183_IG08: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x20] mov x0, x20 ; gcrRegs +[x0] @@ -131,209 +125,44 @@ G_M17183_IG09: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x2, [x2] blr x2 ; gcrRegs -[x0-x1 x19-x20]
- b G_M17183_IG06 - ;; size=32 bbWeight=0.00 PerfScore 0.00 -G_M17183_IG10: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG11: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG12: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitAlternation|4(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG13: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20 x22] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x22 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2 x19-x20 x22] - b G_M17183_IG06 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M17183_IG14: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG15: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG17: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20 x22] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - mov x2, x22 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitCapture|8(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode):this - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x2 x19-x20 x22] - b G_M17183_IG06 - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M17183_IG18: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitPositiveLookaroundAssertion|10(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG19: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNegativeLookaroundAssertion|11(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG20: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x20] - ldr x0, [x20, #0x08] - ; gcrRegs +[x0] - ldr w1, [x20, #0x40] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0 x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG21: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19-x20] - mov x0, x20 - ; gcrRegs +[x0] - mov x1, x19 - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitUpdateBumpalong|14(System.Text.RegularExpressions.RegexNode):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1 x19-x20] - b G_M17183_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M17183_IG22: ; bbWeight=0, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0.00 PerfScore 0.00 +G_M17183_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldr x23, [sp, #0x58] + ldp x21, x22, [sp, #0x48]
...

+0 (0.00%) : 91743.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Collections.Generic.HashSet`1[System.Canon]):this (Tier1)

@@ -69,22 +69,17 @@ G_M417_IG03: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.60 PerfScore 7.53 -G_M417_IG04: ; bbWeight=0.70, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=0.70 PerfScore 2.81 -G_M417_IG05: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M417_IG07 + ;; size=40 bbWeight=0.60 PerfScore 8.13 +G_M417_IG04: ; bbWeight=0.10, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] mov x22, x20 ; gcrRegs +[x22] ldr w0, [x20, #0x28] cmp w0, #2
- bne G_M417_IG07
+ bne G_M417_IG06
;; size=16 bbWeight=0.10 PerfScore 0.50
-G_M417_IG06: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x10] ; gcrRegs +[x0] mov x1, x21 @@ -101,9 +96,9 @@ G_M417_IG06: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x22, [x22, #0x18] ldr w0, [x22, #0x28] cmp w0, #2
- beq G_M417_IG06
+ beq G_M417_IG05
;; size=52 bbWeight=0.80 PerfScore 15.97
-G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG06: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x22 ; gcrRegs +[x0] mov x1, x21 @@ -116,12 +111,17 @@ G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x3, [x3] blr x3 ; gcrRegs -[x0-x2 x19 x21-x22]
- b G_M417_IG04 - ;; size=36 bbWeight=0.10 PerfScore 0.80 -G_M417_IG08: ; bbWeight=0.40, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.70 +G_M417_IG07: ; bbWeight=0.70, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=0.70 PerfScore 2.81 +G_M417_IG08: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19 x21] cmp w22, #17
- bhi G_M417_IG04
+ bhi G_M417_IG07
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -142,7 +142,7 @@ G_M417_IG09: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00 G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19 x21] @@ -204,7 +204,7 @@ G_M417_IG14: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs= ldr x4, [x4] blr x4 ; gcrRegs -[x1-x3 x19 x21-x22]
- b G_M417_IG04
+ b G_M417_IG07
;; size=36 bbWeight=0 PerfScore 0.00 G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -221,7 +221,7 @@ G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00 G_M417_IG16: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -251,7 +251,7 @@ G_M417_IG16: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=76 bbWeight=0 PerfScore 0.00 G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -267,29 +267,29 @@ G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+RWD00 dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG05 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02
dd G_M417_IG15 - G_M417_IG02 dd G_M417_IG16 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG17 - G_M417_IG02 dd G_M417_IG17 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG15 - G_M417_IG02
-; Total bytes of code 608, prolog size 20, PerfScore 43.08, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
+; Total bytes of code 608, prolog size 20, PerfScore 43.59, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 94084.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Collections.Generic.HashSet`1[System.Canon]):this (Tier1)

@@ -50,7 +50,7 @@ G_M417_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n ;; size=32 bbWeight=1 PerfScore 6.00 G_M417_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz bl <unknown method>
- cbz w0, G_M417_IG13
+ cbz w0, G_M417_IG12
ldr w22, [x20, #0x28] cmp w22, #1 bne G_M417_IG08 @@ -69,22 +69,17 @@ G_M417_IG03: ; bbWeight=0.59, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.59 PerfScore 7.33 -G_M417_IG04: ; bbWeight=0.70, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=0.70 PerfScore 2.81 -G_M417_IG05: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M417_IG07 + ;; size=40 bbWeight=0.59 PerfScore 7.91 +G_M417_IG04: ; bbWeight=0.10, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] mov x22, x20 ; gcrRegs +[x22] ldr w0, [x20, #0x28] cmp w0, #2
- bne G_M417_IG07
+ bne G_M417_IG06
;; size=16 bbWeight=0.10 PerfScore 0.50
-G_M417_IG06: ; bbWeight=0.79, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.79, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr x0, [x22, #0x10] ; gcrRegs +[x0] mov x1, x21 @@ -101,9 +96,9 @@ G_M417_IG06: ; bbWeight=0.79, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x22, [x22, #0x18] ldr w0, [x22, #0x28] cmp w0, #2
- beq G_M417_IG06
+ beq G_M417_IG05
;; size=52 bbWeight=0.79 PerfScore 15.74
-G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG06: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x0, x22 ; gcrRegs +[x0] mov x1, x21 @@ -116,12 +111,17 @@ G_M417_IG07: ; bbWeight=0.10, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRe ldr x3, [x3] blr x3 ; gcrRegs -[x0-x2 x19 x21-x22]
- b G_M417_IG04 - ;; size=36 bbWeight=0.10 PerfScore 0.80 -G_M417_IG08: ; bbWeight=0.41, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.70 +G_M417_IG07: ; bbWeight=0.70, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=0.70 PerfScore 2.81 +G_M417_IG08: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19 x21] cmp w22, #17
- bhi G_M417_IG04
+ bhi G_M417_IG07
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -143,7 +143,7 @@ G_M417_IG09: ; bbWeight=0.02, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0.02 PerfScore 0.22 G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -173,25 +173,9 @@ G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=76 bbWeight=0 PerfScore 0.00 G_M417_IG11: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19 x21] - ldr x1, [x21, #0x80] - ; gcrRegs +[x1] - ldrsb wzr, [x19] - add x2, fp, #16 // [V14 tmp9] - mov x0, x19 - ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x1 x19 x21] - b G_M417_IG04 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19 x21] ldr x1, [x21, #0x88] ; gcrRegs +[x1] @@ -205,25 +189,25 @@ G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00
-G_M417_IG13: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] ldr x0, [x20] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x40]
- cbz x1, G_M417_IG14 - b G_M417_IG15
+ cbz x1, G_M417_IG13 + b G_M417_IG14
;; size=24 bbWeight=0 PerfScore 0.00
-G_M417_IG14: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M417_IG13: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M417_IG14: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x1 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -244,17 +228,17 @@ G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x1, [x0, #0x38] ldr x1, [x1] ldr x2, [x1, #0x48]
- cbz x2, G_M417_IG16
+ cbz x2, G_M417_IG15
mov x0, x2
- b G_M417_IG17
+ b G_M417_IG16
;; size=76 bbWeight=0 PerfScore 0.00
-G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG15: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=16 bbWeight=0 PerfScore 0.00
-G_M417_IG17: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x1, x22 ; gcrRegs +[x1] mov x2, x21 @@ -267,29 +251,45 @@ G_M417_IG17: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs= ldr x4, [x4] blr x4 ; gcrRegs -[x1-x3 x19 x21-x22]
- b G_M417_IG04
+ b G_M417_IG07
;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19 x21] + ldr x1, [x21, #0x80] + ; gcrRegs +[x1] + ldrsb wzr, [x19] + add x2, fp, #16 // [V14 tmp9] + mov x0, x19 + ; gcrRegs +[x0] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x0-x1 x19 x21] + b G_M417_IG07 + ;; size=40 bbWeight=0 PerfScore 0.00 +RWD00 dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG05 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG10 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG11 - G_M417_IG02 dd G_M417_IG11 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG17 - G_M417_IG02 + dd G_M417_IG17 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02
-; Total bytes of code 608, prolog size 20, PerfScore 42.99, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
+; Total bytes of code 608, prolog size 20, PerfScore 43.48, instruction count 152, allocated bytes for code 608 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+4 (+0.53%) : 87354.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -20,10 +20,10 @@ ; V08 loc7 [V08,T18] ( 5, 0 ) int -> x21 ; V09 loc8 [V09,T19] ( 3, 0 ) ref -> x19 class-hnd exact <System.Text.RegularExpressions.RegexNode> ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T13] ( 4, 3.98) int -> x21 "Inline return value spill temp" ; V13 tmp3 [V13,T15] ( 3, 2.70) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T11] ( 6, 5.97) ref -> x21 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T11] ( 6, 5.97) ref -> x20 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T01] ( 4, 13.94) ref -> x22 "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T12] ( 3, 4.40) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -52,22 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG10
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG10
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=2.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG24
+ bls G_M35244_IG22
;; size=16 bbWeight=2.99 PerfScore 14.96 G_M35244_IG04: ; bbWeight=2.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG10
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -78,7 +78,7 @@ G_M35244_IG04: ; bbWeight=2.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=1.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbnz x20, G_M35244_IG18
+ cbnz x20, G_M35244_IG10
;; size=8 bbWeight=1.99 PerfScore 7.96 G_M35244_IG06: ; bbWeight=1.01, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov w21, wzr @@ -87,7 +87,7 @@ G_M35244_IG07: ; bbWeight=1.99, gcrefRegs=180000 {x19 x20}, byrefRegs=000 sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG11
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=1.99 PerfScore 3.98 G_M35244_IG08: ; bbWeight=1.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x22] @@ -95,38 +95,68 @@ G_M35244_IG08: ; bbWeight=1.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG11
+ beq G_M35244_IG12
;; size=24 bbWeight=1.00 PerfScore 5.97 G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x22]
- b G_M35244_IG12
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.01 PerfScore 0.05 -G_M35244_IG11: ; bbWeight=1.99, gcVars=0000000000000000 {}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19-x20 x22] - cbnz x22, G_M35244_IG22
+G_M35244_IG10: ; bbWeight=0.98, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + mov x1, x20 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + cbz x0, G_M35244_IG14 + ;; size=24 bbWeight=0.98 PerfScore 3.94 +G_M35244_IG11: ; bbWeight=0.73, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ldr w21, [x0, #0x10] + b G_M35244_IG07 + ;; size=8 bbWeight=0.73 PerfScore 2.94 +G_M35244_IG12: ; bbWeight=1.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] +[x22] + cbz x22, G_M35244_IG17
;; size=4 bbWeight=1.99 PerfScore 1.99
-G_M35244_IG12: ; bbWeight=1.58, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.42, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x20, x22 + ; gcrRegs +[x20] + b G_M35244_IG15 + ;; size=8 bbWeight=0.42 PerfScore 0.62 +G_M35244_IG14: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
+ mov w21, #1 + b G_M35244_IG07 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M35244_IG15: ; bbWeight=1.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ldrb w0, [x20, #0x2E] + sub w1, w0, #26 + sub w2, w0, #33 + cmp w0, #24 + ccmp w1, #1, z, ne + ccmp w2, #1, z, hi + bhi G_M35244_IG21 + ;; size=28 bbWeight=1.99 PerfScore 12.94 +G_M35244_IG16: ; bbWeight=0.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + b G_M35244_IG27 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M35244_IG17: ; bbWeight=1.58, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG15
+ cbz x22, G_M35244_IG20
;; size=8 bbWeight=1.58 PerfScore 2.36
-G_M35244_IG13: ; bbWeight=0.79, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.79, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG15
+ beq G_M35244_IG20
;; size=24 bbWeight=0.79 PerfScore 4.73
-G_M35244_IG14: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -136,56 +166,59 @@ G_M35244_IG14: ; bbWeight=0.39, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.39 PerfScore 0.79
-G_M35244_IG15: ; bbWeight=1.58, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.58, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG26
+ bhs G_M35244_IG34
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG27
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x21, [x0, w21, UXTW #3] - ; gcrRegs +[x21] - ;; size=36 bbWeight=1.58 PerfScore 24.41 -G_M35244_IG16: ; bbWeight=1.99, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22]
+ ldr x20, [x0, w21, UXTW #3] + ; gcrRegs +[x20] + b G_M35244_IG15 + ;; size=40 bbWeight=1.58 PerfScore 25.99 +G_M35244_IG21: ; bbWeight=1.99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19 x22]
; byrRegs -[x0]
- ldrb w0, [x21, #0x2E] - sub w1, w0, #26 - sub w2, w0, #33 - cmp w0, #24 - ccmp w1, #1, z, ne - ccmp w2, #1, z, hi - bls G_M35244_IG28 - ;; size=28 bbWeight=1.99 PerfScore 12.94 -G_M35244_IG17: ; bbWeight=1.99, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov x19, x21
+ mov x19, x20
; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=1.99 PerfScore 2.98
-G_M35244_IG18: ; bbWeight=0.98, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x21] +[x20] - mov x1, x20 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[x1] +[x0]
+G_M35244_IG22: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x0, x19 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + ;; size=20 bbWeight=0.03 PerfScore 0.16 +G_M35244_IG23: ; bbWeight=0.03, epilog, nogc, extend + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + br x1
; gcr arg pop 0
- cbz x0, G_M35244_IG23 - ;; size=24 bbWeight=0.98 PerfScore 3.94 -G_M35244_IG19: ; bbWeight=0.73, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - b G_M35244_IG21 - ;; size=4 bbWeight=0.73 PerfScore 0.73 -G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20]
+ ;; size=16 bbWeight=0.03 PerfScore 0.13 +G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19]
mov x0, x19 ; gcrRegs +[x0] mov w1, wzr @@ -200,80 +233,34 @@ G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG21: ; bbWeight=0.73, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x20] - ldr w21, [x0, #0x10] - b G_M35244_IG07 - ;; size=8 bbWeight=0.73 PerfScore 2.94 -G_M35244_IG22: ; bbWeight=0.42, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20] +[x22]
...

+4 (+0.53%) : 83995.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,11 +52,11 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG09
+ cbz w0, G_M35244_IG24
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG09
+ bne G_M35244_IG24
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=4.02, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -67,7 +67,7 @@ G_M35244_IG03: ; bbWeight=4.02, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG04: ; bbWeight=3.02, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG09
+ bhi G_M35244_IG24
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -78,7 +78,7 @@ G_M35244_IG04: ; bbWeight=3.02, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=3.02, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG08
+ cbz x20, G_M35244_IG12
;; size=8 bbWeight=3.02 PerfScore 12.10 G_M35244_IG06: ; bbWeight=2.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -89,43 +89,40 @@ G_M35244_IG06: ; bbWeight=2.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG10
+ cbz x0, G_M35244_IG08
;; size=24 bbWeight=2.50 PerfScore 10.01 G_M35244_IG07: ; bbWeight=0.89, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10]
- b G_M35244_IG11
+ b G_M35244_IG09
;; size=8 bbWeight=0.89 PerfScore 3.55
-G_M35244_IG08: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=1.61, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov w21, wzr - b G_M35244_IG11 - ;; size=8 bbWeight=0.52 PerfScore 0.78 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.00 PerfScore 0.01 -G_M35244_IG10: ; bbWeight=1.61, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20]
mov w21, #1 ;; size=4 bbWeight=1.61 PerfScore 0.81
-G_M35244_IG11: ; bbWeight=3.02, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=3.02, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22] cbz x22, G_M35244_IG13 ;; size=12 bbWeight=3.02 PerfScore 6.05
-G_M35244_IG12: ; bbWeight=1.51, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.51, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- bne G_M35244_IG14
+ beq G_M35244_IG13
;; size=24 bbWeight=1.51 PerfScore 9.07
+G_M35244_IG11: ; bbWeight=0.76, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22] + b G_M35244_IG14 + ;; size=4 bbWeight=0.76 PerfScore 0.76 +G_M35244_IG12: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG09 + ;; size=8 bbWeight=0.52 PerfScore 0.78
G_M35244_IG13: ; bbWeight=3.02, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x22]
cbnz x22, G_M35244_IG18 ;; size=4 bbWeight=3.02 PerfScore 3.02 G_M35244_IG14: ; bbWeight=1.10, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -156,7 +153,7 @@ G_M35244_IG17: ; bbWeight=1.10, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG32
+ bhs G_M35244_IG33
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] @@ -183,7 +180,7 @@ G_M35244_IG19: ; bbWeight=3.02, gcrefRegs=180000 {x19 x20}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG25
+ bls G_M35244_IG26
;; size=28 bbWeight=3.02 PerfScore 19.65 G_M35244_IG20: ; bbWeight=3.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -212,7 +209,13 @@ G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -228,18 +231,18 @@ G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG26
+ cbz x0, G_M35244_IG27
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32 beq G_M35244_IG20 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -287,7 +290,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG20 ;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -300,9 +303,9 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG29
+ b G_M35244_IG30
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -322,22 +325,22 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w21, w21, #1 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG28
+ blt G_M35244_IG29
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG09 - b G_M35244_IG24
+ beq G_M35244_IG24 + b G_M35244_IG25
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr w0, [x19, #0x20] str w0, [x19, #0x24] ;; size=8 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1
- beq G_M35244_IG24
+ beq G_M35244_IG25
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this @@ -349,10 +352,10 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG09
+ cbz x19, G_M35244_IG24
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -362,20 +365,20 @@ G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG27 - G_M35244_IG02
+RWD00 dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG31 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG09 - G_M35244_IG02
dd G_M35244_IG24 - G_M35244_IG02
- dd G_M35244_IG24 - G_M35244_IG02 - dd G_M35244_IG24 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG28 - G_M35244_IG02 + dd G_M35244_IG28 - G_M35244_IG02
-; Total bytes of code 748, prolog size 20, PerfScore 158.45, instruction count 187, allocated bytes for code 748 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 752, prolog size 20, PerfScore 159.20, instruction count 188, allocated bytes for code 752 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info: @@ -386,7 +389,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 187 (0x000bb) Actual length = 748 (0x0002ec)
+ Function Length : 188 (0x000bc) Actual length = 752 (0x0002f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.windows.arm64.checked.mch

+0 (0.00%) : 305829.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG21
+ bls G_M35244_IG20
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,95 +89,95 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG24
+ bls G_M35244_IG23
;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG20
+ cbz x22, G_M35244_IG19
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- bne G_M35244_IG23
+ bne G_M35244_IG22
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG31
+ bhs G_M35244_IG30
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG32
+ bhs G_M35244_IG31
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -195,14 +187,14 @@ G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG21: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG22: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x20] mov x1, x20 ; gcrRegs +[x1] @@ -211,20 +203,20 @@ G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180 ; gcr arg pop 0 mov x22, x0 ; gcrRegs +[x22]
- b G_M35244_IG20
+ b G_M35244_IG19
;; size=16 bbWeight=0.32 PerfScore 0.96
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x22] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG25
+ cbz x0, G_M35244_IG24
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -270,9 +262,9 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -285,9 +277,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG28
+ b G_M35244_IG27
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -307,19 +299,19 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w21, w21, #1 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
...

+0 (0.00%) : 2898.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -52,30 +52,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.67 PerfScore 2.67 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG21
+ bls G_M35244_IG20
;; size=16 bbWeight=3 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -83,12 +75,12 @@ G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by add x0, x0, x2 br x0 ;; size=36 bbWeight=2 PerfScore 16.00
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG15
+ cbz x20, G_M35244_IG14
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -97,95 +89,95 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG12
+ cbz x0, G_M35244_IG11
;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] ;; size=4 bbWeight=1.09 PerfScore 3.27
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG12
;; size=12 bbWeight=2 PerfScore 4.00
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG13
+ beq G_M35244_IG12
;; size=24 bbWeight=1 PerfScore 6.00
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG18
+ b G_M35244_IG17
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, #1
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=4 bbWeight=2 PerfScore 2.00
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, wzr
- b G_M35244_IG09
+ b G_M35244_IG08
;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x20, #0x2E] sub w1, w0, #26 sub w2, w0, #33 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG24
+ bls G_M35244_IG23
;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG20
+ cbz x22, G_M35244_IG19
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- bne G_M35244_IG23
+ bne G_M35244_IG22
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG31
+ bhs G_M35244_IG30
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG32
+ bhs G_M35244_IG31
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG16
+ b G_M35244_IG15
;; size=40 bbWeight=1.28 PerfScore 21.12
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x22] ; byrRegs -[x0] mov x0, x19 @@ -195,14 +187,14 @@ G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG21: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG22: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x20] mov x1, x20 ; gcrRegs +[x1] @@ -215,20 +207,20 @@ G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=180 ; gcr arg pop 0 mov x22, x0 ; gcrRegs +[x22]
- b G_M35244_IG20
+ b G_M35244_IG19
;; size=32 bbWeight=0.32 PerfScore 2.40
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x22] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG25
+ cbz x0, G_M35244_IG24
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG17
+ beq G_M35244_IG16
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -274,9 +266,9 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG17
+ b G_M35244_IG16
;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -289,9 +281,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG28
+ b G_M35244_IG27
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -311,19 +303,19 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 add w21, w21, #1 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
...

libraries_tests.run.windows.arm64.Release.mch

-16 (-1.53%) : 471767.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -28,7 +28,7 @@ ; V16 tmp6 [V16,T28] ( 3, 0.40) ref -> x19 class-hnd "Inlining Arg" <<unknown class>> ; V17 tmp7 [V17,T13] ( 4, 4 ) int -> x21 "Inline return value spill temp" ; V18 tmp8 [V18,T14] ( 3, 3.49) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V19 tmp9 [V19,T10] ( 6, 6.22) ref -> x23 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V19 tmp9 [V19,T10] ( 6, 6.22) ref -> x21 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V20 tmp10 [V20,T01] ( 4, 14 ) ref -> x22 "CASTCLASS eval op1" ;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V22 tmp12 [V22,T12] ( 3, 4.81) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -56,45 +56,35 @@ ; V44 rat5 [V44,T31] ( 3, 0.33) long -> x0 "CSE for expectedClsNode" ; V45 rat6 [V45,T00] ( 3, 16.67) int -> x20 "ReplaceWithLclVar is creating a new local variable" ;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]! - stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - str x23, [sp, #0x38]
+ stp fp, lr, [sp, #-0x30]! + stp x19, x20, [sp, #0x10] + stp x21, x22, [sp, #0x20]
mov fp, sp mov x19, x0 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG09
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG09
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldr x23, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x40 - ret lr - ;; size=20 bbWeight=1.04 PerfScore 6.22 -G_M35244_IG04: ; bbWeight=3.22, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG35
+ bls G_M35244_IG33
;; size=16 bbWeight=3.22 PerfScore 16.11
-G_M35244_IG05: ; bbWeight=2.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG09
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -102,12 +92,12 @@ G_M35244_IG05: ; bbWeight=2.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add x0, x0, x2 br x0 ;; size=36 bbWeight=2.78 PerfScore 22.22
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG09
+ cbz x20, G_M35244_IG08
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG07: ; bbWeight=1.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -116,90 +106,111 @@ G_M35244_IG07: ; bbWeight=1.40, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG13
+ cbz x0, G_M35244_IG10
;; size=24 bbWeight=1.40 PerfScore 5.62
-G_M35244_IG08: ; bbWeight=0.68, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=0.68, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10]
- b G_M35244_IG14
+ b G_M35244_IG11
;; size=8 bbWeight=0.68 PerfScore 2.72
-G_M35244_IG09: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov w21, wzr
- b G_M35244_IG14
+ b G_M35244_IG11
;; size=8 bbWeight=0.60 PerfScore 0.89
-G_M35244_IG10: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[x19-x20] + ldp x21, x22, [sp, #0x20] + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x30 + ret lr + ;; size=16 bbWeight=0.13 PerfScore 0.51 +G_M35244_IG10: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19-x20] + mov w21, #1 + ;; size=4 bbWeight=0.72 PerfScore 0.36 +G_M35244_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + sub w21, w21, #1 + mov x22, x20 + ; gcrRegs +[x22] + cbz x22, G_M35244_IG17 + ;; size=12 bbWeight=2 PerfScore 4.00 +G_M35244_IG12: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ldr x1, [x22] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + cmp x1, x0 + beq G_M35244_IG17 + ;; size=24 bbWeight=1 PerfScore 6.00 +G_M35244_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22] + b G_M35244_IG26 + ;; size=4 bbWeight=0.50 PerfScore 0.50 +G_M35244_IG14: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr x20, [x19, #0x08] ; gcrRegs +[x20] mov x19, x20
- cbnz x19, G_M35244_IG27
+ cbnz x19, G_M35244_IG28
;; size=12 bbWeight=0.11 PerfScore 0.50
-G_M35244_IG11: ; bbWeight=0.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbz x19, G_M35244_IG16
+G_M35244_IG15: ; bbWeight=0.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbz x19, G_M35244_IG19
;; size=4 bbWeight=0.11 PerfScore 0.11
-G_M35244_IG12: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=4 bbWeight=0.11 PerfScore 0.11
-G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x20] - mov w21, #1 - ;; size=4 bbWeight=0.72 PerfScore 0.36 -G_M35244_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - sub w21, w21, #1 - mov x22, x20 - ; gcrRegs +[x22] - cbz x22, G_M35244_IG24 - ;; size=12 bbWeight=2 PerfScore 4.00 -G_M35244_IG15: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - b G_M35244_IG31 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M35244_IG16: ; bbWeight=0.07, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x19 x22]
+G_M35244_IG17: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x20 x22] + cbz x22, G_M35244_IG26 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M35244_IG18: ; bbWeight=0.81, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] + mov x21, x22 + ; gcrRegs +[x21] + b G_M35244_IG21 + ;; size=8 bbWeight=0.81 PerfScore 1.22 +G_M35244_IG19: ; bbWeight=0.07, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x19 x21-x22] +[x20]
mov x19, x20 ; gcrRegs +[x19]
- cbnz x19, G_M35244_IG21
+ cbnz x19, G_M35244_IG23
;; size=8 bbWeight=0.07 PerfScore 0.10
-G_M35244_IG17: ; bbWeight=0.07, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=0.07, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr w1, [x19, #0x10]
- cbz w1, G_M35244_IG55
+ cbz w1, G_M35244_IG53
ldr x1, [x19, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w0, #0
- bls G_M35244_IG56
+ bls G_M35244_IG54
ldr x19, [x1, #0x10]
- b G_M35244_IG12
+ b G_M35244_IG16
;; size=32 bbWeight=0.07 PerfScore 1.02
-G_M35244_IG18: ; bbWeight=0.81, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1] +[x22] - mov x23, x22 - ; gcrRegs +[x23] - ;; size=4 bbWeight=0.81 PerfScore 0.41 -G_M35244_IG19: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] - ldrb w1, [x23, #0x2E]
+G_M35244_IG21: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x1] +[x21] + ldrb w1, [x21, #0x2E]
sub w0, w1, #26 sub w2, w1, #33 cmp w1, #24 ccmp w0, #1, z, ne ccmp w2, #1, z, hi
- bhi G_M35244_IG23
+ bhi G_M35244_IG25
;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG20: ; bbWeight=0.11, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref - b G_M35244_IG40
+G_M35244_IG22: ; bbWeight=0.11, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref + b G_M35244_IG38
;; size=4 bbWeight=0.11 PerfScore 0.11
-G_M35244_IG21: ; bbWeight=0.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x23] +[x20]
+G_M35244_IG23: ; bbWeight=0.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21] +[x20]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x19] cmp x1, x0
- beq G_M35244_IG17
+ beq G_M35244_IG20
;; size=24 bbWeight=0.03 PerfScore 0.20
-G_M35244_IG22: ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x1, x20 ; gcrRegs +[x1] @@ -208,67 +219,47 @@ G_M35244_IG22: ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- b G_M35244_IG17
+ b G_M35244_IG20
;; size=16 bbWeight=0.02 PerfScore 0.05
-G_M35244_IG23: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x19] +[x23] - mov x19, x23
...

-4 (-0.74%) : 565260.dasm - System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 52742
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 52742
; 2 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -72,7 +72,7 @@ G_M35891_IG03: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, beq G_M35891_IG10 ;; size=12 bbWeight=1.00 PerfScore 4.49 G_M35891_IG04: ; bbWeight=0.69, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
- cbnz x2, G_M35891_IG15
+ cbnz x2, G_M35891_IG14
;; size=4 bbWeight=0.69 PerfScore 0.69 G_M35891_IG05: ; bbWeight=0.54, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref ; gcrRegs -[x2] @@ -99,9 +99,39 @@ G_M35891_IG10: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcrRegs +[x2] ; byrRegs +[x0] sub w19, w1, #3
- cbz w19, G_M35891_IG12
+ cbnz w19, G_M35891_IG15
;; size=8 bbWeight=0.31 PerfScore 0.47
-G_M35891_IG11: ; bbWeight=0.14, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz
+G_M35891_IG11: ; bbWeight=0.17, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz + cmp w1, #1 + bls G_M35891_IG29 + ldrb w3, [x0, #0x01] + cmp w3, #105 + bne G_M35891_IG04 + cmp w1, #2 + bls G_M35891_IG29 + ldrb w3, [x0, #0x02] + cmp w3, #100 + bne G_M35891_IG04 + ;; size=40 bbWeight=0.17 PerfScore 2.08 +G_M35891_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x2] + ; byrRegs -[x0] + mov w0, #2 + ;; size=4 bbWeight=0.17 PerfScore 0.09 +G_M35891_IG13: ; bbWeight=0.17, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.17 PerfScore 0.69 +G_M35891_IG14: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref + ; gcrRegs +[x2] + ; byrRegs +[x0] + ldr x3, [x2, #0x28] + ; gcrRegs +[x3] + b G_M35891_IG06 + ;; size=8 bbWeight=0.15 PerfScore 0.58 +G_M35891_IG15: ; bbWeight=0.14, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz + ; gcrRegs -[x3]
cmp w19, #4 bhi G_M35891_IG04 mov w3, w19 @@ -111,37 +141,8 @@ G_M35891_IG11: ; bbWeight=0.14, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, add x4, x4, x5 br x4 ;; size=32 bbWeight=0.14 PerfScore 1.04
-G_M35891_IG12: ; bbWeight=0.17, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz - cmp w1, #1 - bls G_M35891_IG30 - ldrb w3, [x0, #0x01] - cmp w3, #105 - bne G_M35891_IG04 - cmp w1, #2 - bls G_M35891_IG30 - ldrb w3, [x0, #0x02] - cmp w3, #100 - bne G_M35891_IG04 - ;; size=40 bbWeight=0.17 PerfScore 2.08 -G_M35891_IG13: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x2] - ; byrRegs -[x0] - mov w0, #2 - ;; size=4 bbWeight=0.17 PerfScore 0.09 -G_M35891_IG14: ; bbWeight=0.17, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0.17 PerfScore 0.69 -G_M35891_IG15: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, gcvars, byref - ; gcrRegs +[x2] - ; byrRegs +[x0] - ldr x3, [x2, #0x28] - ; gcrRegs +[x3] - b G_M35891_IG06 - ;; size=8 bbWeight=0.15 PerfScore 0.58
G_M35891_IG16: ; bbWeight=0.07, gcrefRegs=0008 {x3}, byrefRegs=0001 {x0}, byref, isz
- ; gcrRegs -[x2]
+ ; gcrRegs -[x2] +[x3]
add x4, x3, #16 ; byrRegs +[x4] ldr w2, [x3, #0x08] @@ -178,26 +179,26 @@ G_M35891_IG19: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=000 G_M35891_IG20: ; bbWeight=0.08, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz ; gcrRegs -[x3] cmp w1, #1
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x01] cmp w3, #116 bne G_M35891_IG04 ;; size=20 bbWeight=0.08 PerfScore 0.46 G_M35891_IG21: ; bbWeight=0.08, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz cmp w1, #2
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x02] cmp w3, #121 bne G_M35891_IG04 ;; size=20 bbWeight=0.08 PerfScore 0.46 G_M35891_IG22: ; bbWeight=0.08, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz cmp w1, #3
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x03] cmp w3, #112 bne G_M35891_IG04 cmp w1, #4
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x04] cmp w3, #101 bne G_M35891_IG04 @@ -205,34 +206,34 @@ G_M35891_IG22: ; bbWeight=0.08, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, ;; size=44 bbWeight=0.08 PerfScore 0.99 G_M35891_IG23: ; bbWeight=0.04, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz cmp w1, #1
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x01] cmp w3, #118 bne G_M35891_IG04 ;; size=20 bbWeight=0.04 PerfScore 0.24 G_M35891_IG24: ; bbWeight=0.04, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz cmp w1, #2
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x02] cmp w3, #97 bne G_M35891_IG04 cmp w1, #3
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x03] cmp w3, #108 bne G_M35891_IG04 cmp w1, #4
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x04] cmp w3, #117 bne G_M35891_IG04 cmp w1, #5
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x05] cmp w3, #101 bne G_M35891_IG04 cmp w1, #6
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x06] cmp w3, #115 bne G_M35891_IG04 @@ -240,23 +241,24 @@ G_M35891_IG24: ; bbWeight=0.04, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, G_M35891_IG25: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x2] ; byrRegs -[x0]
- b G_M35891_IG29 - ;; size=4 bbWeight=0.04 PerfScore 0.04
+ mov w1, #1 + b G_M35891_IG08 + ;; size=8 bbWeight=0.04 PerfScore 0.06
G_M35891_IG26: ; bbWeight=0.02, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref, isz ; gcrRegs +[x2] ; byrRegs +[x0] cmp w1, #1
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x01] cmp w3, #114 bne G_M35891_IG04 cmp w1, #2
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x02] cmp w3, #101 bne G_M35891_IG04 cmp w1, #3
- bls G_M35891_IG30
+ bls G_M35891_IG29
ldrb w3, [x0, #0x03] cmp w3, #102 bne G_M35891_IG04 @@ -271,22 +273,18 @@ G_M35891_IG28: ; bbWeight=0.02, epilog, nogc, extend ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0.02 PerfScore 0.09
-G_M35891_IG29: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov w1, #1 - b G_M35891_IG08 - ;; size=8 bbWeight=0.04 PerfScore 0.06 -G_M35891_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35891_IG29: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL brk_windows #0 ;; size=8 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35891_IG12 - G_M35891_IG02
+RWD00 dd G_M35891_IG11 - G_M35891_IG02
dd G_M35891_IG26 - G_M35891_IG02 dd G_M35891_IG19 - G_M35891_IG02 dd G_M35891_IG04 - G_M35891_IG02 dd G_M35891_IG23 - G_M35891_IG02
-; Total bytes of code 544, prolog size 12, PerfScore 24.20, instruction count 136, allocated bytes for code 544 (MethodHash=1fe073cc) for method System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte (Tier1)
+; Total bytes of code 540, prolog size 12, PerfScore 24.16, instruction count 135, allocated bytes for code 540 (MethodHash=1fe073cc) for method System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -297,7 +295,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 136 (0x00088) Actual length = 544 (0x000220)
+ Function Length : 135 (0x00087) Actual length = 540 (0x00021c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.46%) : 394067.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)

@@ -97,27 +97,27 @@ G_M38617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x19] ;; size=40 bbWeight=1 PerfScore 8.00 G_M38617_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x19, G_M38617_IG18
+ cbz x19, G_M38617_IG37
ldr x0, [x20] movz x21, #0xD1FFAB1E movk x21, #0xD1FFAB1E LSL #16 movk x21, #0xD1FFAB1E LSL #32 cmp x0, x21
- bne G_M38617_IG20
+ bne G_M38617_IG39
ldr x0, [x20, #0x10] ; gcrRegs +[x0] ldr x1, [x0] add x2, x21, #0xD1FFAB1E cmp x1, x2
- bne G_M38617_IG19
+ bne G_M38617_IG38
ldr w22, [x0, #0x0C] ;; size=52 bbWeight=1 PerfScore 18.00 G_M38617_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] cmp w22, #2
- bgt G_M38617_IG22
+ bgt G_M38617_IG12
cmp w22, #1
- bne G_M38617_IG21
+ bne G_M38617_IG11
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> @@ -134,7 +134,7 @@ G_M38617_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x0] add x2, x21, #0xD1FFAB1E cmp x1, x2
- bne G_M38617_IG15
+ bne G_M38617_IG10
;; size=64 bbWeight=1 PerfScore 15.50 G_M38617_IG04: ; bbWeight=0.96, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, byref ldr w20, [x0, #0x0C] @@ -142,11 +142,11 @@ G_M38617_IG04: ; bbWeight=0.96, gcrefRegs=880001 {x0 x19 x23}, byrefRegs= G_M38617_IG05: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] cmp w20, #1
- beq G_M38617_IG37
+ beq G_M38617_IG34
cmp w20, #2
- beq G_M38617_IG36
+ beq G_M38617_IG33
sub w20, w20, #12
- cbnz w20, G_M38617_IG30
+ cbnz w20, G_M38617_IG27
;; size=24 bbWeight=1 PerfScore 4.50 G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V00} @@ -154,7 +154,7 @@ G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=880000 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x23, x0
- beq G_M38617_IG33
+ beq G_M38617_IG30
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -170,7 +170,7 @@ G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=880000 ; gcrRegs +[x14] ldr x15, [x14, #0x70] ; gcrRegs +[x15]
- cbz x15, G_M38617_IG34
+ cbz x15, G_M38617_IG31
add x14, x23, #8 ; gcrRegs -[x14] ; byrRegs +[x14] @@ -213,7 +213,7 @@ G_M38617_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=880000 ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w1, w0
- bge G_M38617_IG35
+ bge G_M38617_IG32
;; size=156 bbWeight=1 PerfScore 36.50 G_M38617_IG07: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x08] @@ -227,95 +227,19 @@ G_M38617_IG07: ; bbWeight=1, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { bl CORINFO_HELP_ARRADDR_ST ; gcrRegs -[x0 x2 x23] ; gcr arg pop 0
- b G_M38617_IG16 - ;; size=32 bbWeight=1 PerfScore 10.50 -G_M38617_IG08: ; bbWeight=0, gcVars=0000000000280100 {V00 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x19] - ; GC ptr vars +{V00 V06 V08 V09 V19 V21} - b G_M38617_IG10 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M38617_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x18] // [V09 loc6]
+ ;; size=28 bbWeight=1 PerfScore 9.50 +G_M38617_IG08: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19
; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x1, [x11] - blr x1 - ; gcr arg pop 0 - movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryRuntime:EnsureNavigator(System.Object):System.Xml.XPath.XPathNavigator - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - mov x1, x0 - ; gcrRegs +[x1] - ldr x0, [fp, #0x20] // [V06 loc3] - movz x2, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:Add(System.__Canon):this - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; gcr arg pop 0 - ;; size=72 bbWeight=0 PerfScore 0.00 -G_M38617_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [fp, #0x18] // [V09 loc6] - ; gcrRegs +[x0] - movz x11, #0xD1FFAB1E // code for <unknown method> - movk x11, #0xD1FFAB1E LSL #16 - movk x11, #0xD1FFAB1E LSL #32 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbnz w0, G_M38617_IG09 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M38617_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ldr x0, [fp, #0x30] // [V67 PSPSym] - bl G_M38617_IG40 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M38617_IG12: ; bbWeight=0, nogc, extend - nop - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M38617_IG13: ; bbWeight=0, gcVars=0000000000080100 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V08 V09 V19 V21} - ldr x0, [fp, #0x20] // [V06 loc3] - ; gcrRegs +[x0] - mov x19, x0 - ; gcrRegs +[x19] - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M38617_IG14: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] - ; GC ptr vars -{V06} - mov x1, x19 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_CHKCASTCLASS - ; gcrRegs -[x1 x19] +[x0] - ; gcr arg pop 0 - ldr x2, [fp, #0x28] // [V00 this] - ; gcrRegs +[x2] - ldr x1, [x2, #0x68] - ; gcrRegs +[x1] - movz x2, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryNodeSequence:DocOrderDistinct(System.Collections.Generic.IComparer`1[System.Xml.XPath.XPathNavigator]):System.Xml.Xsl.Runtime.XmlQueryNodeSequence:this - ; gcrRegs -[x2] - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - ldr wzr, [x0] - ; GC ptr vars -{V00} - blr x2 - ; gcrRegs -[x1] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - b G_M38617_IG16 - ;; size=60 bbWeight=0 PerfScore 0.00 -G_M38617_IG15: ; bbWeight=0.04, gcVars=0000000000000100 {V00}, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38617_IG09: ; bbWeight=1, epilog, nogc, extend + ldr x23, [sp, #0x58] + ldp x21, x22, [sp, #0x48] + ldp x19, x20, [sp, #0x38] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=20 bbWeight=1 PerfScore 6.00 +G_M38617_IG10: ; bbWeight=0.04, gcVars=0000000000000100 {V00}, gcrefRegs=880001 {x0 x19 x23}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x23] ; GC ptr vars +{V00 V08} ldr x1, [x0] @@ -327,97 +251,10 @@ G_M38617_IG15: ; bbWeight=0.04, gcVars=0000000000000100 {V00}, gcrefRegs= sxtw w20, w0 b G_M38617_IG05 ;; size=24 bbWeight=0.04 PerfScore 0.46
-G_M38617_IG16: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x23] - ; GC ptr vars -{V00 V08} - mov x0, x19 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1 PerfScore 0.50 -G_M38617_IG17: ; bbWeight=1, epilog, nogc, extend - ldr x23, [sp, #0x58] - ldp x21, x22, [sp, #0x48] - ldp x19, x20, [sp, #0x38] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=20 bbWeight=1 PerfScore 6.00 -G_M38617_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x19] - movz x0, #0xD1FFAB1E // code for <unknown method> - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x22, x0 - ; gcrRegs +[x22] - movz x0, #0xD1FFAB1E - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - mov x1, #1 - bl CORINFO_HELP_NEWARR_1_OBJ - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x21, x0 - ; gcrRegs +[x21] - movz x0, #8 - ; gcrRegs -[x0] - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - str x0, [x21, #0x10] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - ; gcr arg pop 0 - mov x19, x0 - ; gcrRegs +[x19] - mov x1, x22 - ; gcrRegs +[x1] - mov x2, x21 - ; gcrRegs +[x2] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32
...

+0 (0.00%) : 392734.dasm - System.Xml.Xsl.IlGen.XmlILVisitor:VisitNodeProperty(System.Xml.Xsl.Qil.QilUnary):System.Xml.Xsl.Qil.QilUnary:this (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 330
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 330
; 6 inlinees with PGO data; 26 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -171,7 +171,7 @@ G_M41811_IG10: ; bbWeight=0.15, gcrefRegs=780000 {x19 x20 x21 x22}, byref ;; size=24 bbWeight=0.15 PerfScore 1.65 G_M41811_IG11: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz tst w24, #0xD1FFAB1E
- bne G_M41811_IG29
+ bne G_M41811_IG30
movz x24, #0xD1FFAB1E movk x24, #0xD1FFAB1E LSL #16 movk x24, #0xD1FFAB1E LSL #32 @@ -179,10 +179,10 @@ G_M41811_IG11: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg ; gcrRegs +[x25] ldr x0, [x22] cmp x0, x23
- bne G_M41811_IG27
+ bne G_M41811_IG28
ldr w0, [x22, #0x0C] cmp w0, #55
- bhs G_M41811_IG26
+ bhs G_M41811_IG27
add x1, x25, #16 ; byrRegs +[x1] ldr x26, [x1, w0, UXTW #3] @@ -199,7 +199,7 @@ G_M41811_IG13: ; bbWeight=0.60, gcrefRegs=4380000 {x19 x20 x21 x26}, byre movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x26, x0
- bne G_M41811_IG28
+ bne G_M41811_IG29
;; size=20 bbWeight=0.60 PerfScore 1.80 G_M41811_IG14: ; bbWeight=1, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz ldr x0, [x21] @@ -269,19 +269,9 @@ G_M41811_IG20: ; bbWeight=1, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRe ldr w0, [x20, #0x20] sub w25, w0, #90 cmp w25, #1
- beq G_M41811_IG22
+ bne G_M41811_IG25
;; size=84 bbWeight=1 PerfScore 24.50
-G_M41811_IG21: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cmp w25, #3 - bhi G_M41811_IG23 - mov w0, w25 - adr x1, [@RWD00] - ldr w1, [x1, x0, LSL #2] - adr x2, [G_M41811_IG02] - add x1, x1, x2 - br x1 - ;; size=32 bbWeight=0.40 PerfScore 3.00 -G_M41811_IG22: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M41811_IG21: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x10] ; gcrRegs +[x0] ldr x1, [x24, #0xD1FFAB1E] @@ -304,12 +294,12 @@ G_M41811_IG22: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=000 str w1, [x0, #0x40] strb wzr, [x0, #0x44] ;; size=68 bbWeight=0.60 PerfScore 14.10
-G_M41811_IG23: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M41811_IG22: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] mov x0, x20 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M41811_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M41811_IG23: ; bbWeight=1, epilog, nogc, extend
ldr x27, [sp, #0x88] ldp x25, x26, [sp, #0x78] ldp x23, x24, [sp, #0x68] @@ -318,7 +308,7 @@ G_M41811_IG24: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x90 ret lr ;; size=28 bbWeight=1 PerfScore 8.00
-G_M41811_IG25: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M41811_IG24: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19] ldr x0, [x19, #0x10] ; gcrRegs +[x0] @@ -341,86 +331,20 @@ G_M41811_IG25: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=180 mov w1, #1 str w1, [x0, #0x40] strb wzr, [x0, #0x44]
- b G_M41811_IG23
+ b G_M41811_IG22
;; size=72 bbWeight=0.40 PerfScore 9.80
-G_M41811_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x19-x20] - bl CORINFO_HELP_RNGCHKFAIL - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M41811_IG27: ; bbWeight=0, gcrefRegs=2780000 {x19 x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x19-x22 x25] - mov x0, x22 - ; gcrRegs +[x0] - ldr x1, [x22] - ldr x1, [x1, #0x60] - ldr x1, [x1, #0x38] - blr x1
+G_M41811_IG25: ; bbWeight=0.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp w0, #55 - bhs G_M41811_IG26 - add x1, x25, #16 - ; byrRegs +[x1] - ldr x26, [x1, w0, UXTW #3] - ; gcrRegs +[x26] - mov x0, x22 - ; gcrRegs +[x0] - ldr x1, [x22] - ; byrRegs -[x1] - ldr x1, [x1, #0x68] - ldr x1, [x1, #0x20] - blr x1 - ; gcrRegs -[x0 x22 x25] - sxtw w27, w0 - b G_M41811_IG12 - ;; size=64 bbWeight=0 PerfScore 0.00 -G_M41811_IG28: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x26] - movz x26, #0xD1FFAB1E - movk x26, #0xD1FFAB1E LSL #16 - movk x26, #0xD1FFAB1E LSL #32 - b G_M41811_IG14 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M41811_IG29: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x22] - movz x24, #0xD1FFAB1E - movk x24, #0xD1FFAB1E LSL #16 - movk x24, #0xD1FFAB1E LSL #32 - ldr x26, [x24, #0xD1FFAB1E] - ; gcrRegs +[x26] - mov x0, x22 - ; gcrRegs +[x0] - ldr x1, [x22] - ldr x1, [x1, #0x60] - ldr x1, [x1, #0x38] - blr x1 - ; gcrRegs -[x0] - cmp w0, #55 - bhs G_M41811_IG26 - add x1, x26, #16 - ; byrRegs +[x1] - ldr x26, [x1, w0, UXTW #3] - mov x0, x22 - ; gcrRegs +[x0] - ldr x1, [x22] - ; byrRegs -[x1] - ldr x1, [x1, #0x68] - ldr x1, [x1, #0x20] - blr x1 - ; gcrRegs -[x0 x22] - cbnz w0, G_M41811_IG14 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - cmp x26, x0 - beq G_M41811_IG14 - movz x26, #0xD1FFAB1E - ; gcrRegs -[x26] - movk x26, #0xD1FFAB1E LSL #16 - movk x26, #0xD1FFAB1E LSL #32 - b G_M41811_IG14 - ;; size=112 bbWeight=0 PerfScore 0.00 -G_M41811_IG30: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21]
+ cmp w25, #3 + bhi G_M41811_IG22 + mov w0, w25 + adr x1, [@RWD00] + ldr w1, [x1, x0, LSL #2] + adr x2, [G_M41811_IG02] + add x1, x1, x2 + br x1 + ;; size=32 bbWeight=0.40 PerfScore 3.00 +G_M41811_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x10] ; gcrRegs +[x0] ldr x0, [x0, #0x10] @@ -485,11 +409,87 @@ G_M41811_IG30: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { bl CORINFO_HELP_ASSIGN_BYREF ldr x12, [x13], #0x08 str x12, [x14], #0x08
- b G_M41811_IG23
+ b G_M41811_IG22
;; size=204 bbWeight=0 PerfScore 0.00
-G_M41811_IG31: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x19]
+G_M41811_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20]
; byrRegs -[x13-x14]
+ bl CORINFO_HELP_RNGCHKFAIL + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M41811_IG28: ; bbWeight=0, gcrefRegs=2780000 {x19 x20 x21 x22 x25}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x19-x22 x25] + mov x0, x22 + ; gcrRegs +[x0] + ldr x1, [x22] + ldr x1, [x1, #0x60] + ldr x1, [x1, #0x38] + blr x1 + ; gcrRegs -[x0] + cmp w0, #55 + bhs G_M41811_IG27 + add x1, x25, #16 + ; byrRegs +[x1] + ldr x26, [x1, w0, UXTW #3] + ; gcrRegs +[x26] + mov x0, x22 + ; gcrRegs +[x0] + ldr x1, [x22] + ; byrRegs -[x1] + ldr x1, [x1, #0x68] + ldr x1, [x1, #0x20] + blr x1 + ; gcrRegs -[x0 x22 x25] + sxtw w27, w0 + b G_M41811_IG12 + ;; size=64 bbWeight=0 PerfScore 0.00 +G_M41811_IG29: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x26] + movz x26, #0xD1FFAB1E + movk x26, #0xD1FFAB1E LSL #16 + movk x26, #0xD1FFAB1E LSL #32 + b G_M41811_IG14 + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M41811_IG30: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x22] + movz x24, #0xD1FFAB1E + movk x24, #0xD1FFAB1E LSL #16 + movk x24, #0xD1FFAB1E LSL #32 + ldr x26, [x24, #0xD1FFAB1E] + ; gcrRegs +[x26] + mov x0, x22 + ; gcrRegs +[x0] + ldr x1, [x22] + ldr x1, [x1, #0x60] + ldr x1, [x1, #0x38] + blr x1 + ; gcrRegs -[x0] + cmp w0, #55 + bhs G_M41811_IG27 + add x1, x26, #16 + ; byrRegs +[x1]
...

+0 (0.00%) : 396239.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -61,30 +61,22 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M35244_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz bl <unknown method> ; gcr arg pop 0
- cbz w0, G_M35244_IG03
+ cbz w0, G_M35244_IG43
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG43
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=1.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=1.12 PerfScore 4.49 -G_M35244_IG04: ; bbWeight=2.83, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=2.83, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG28
+ bls G_M35244_IG27
;; size=16 bbWeight=2.83 PerfScore 14.17
-G_M35244_IG05: ; bbWeight=2.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG43
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -92,12 +84,12 @@ G_M35244_IG05: ; bbWeight=2.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add x0, x0, x2 br x0 ;; size=36 bbWeight=2.67 PerfScore 21.33
-G_M35244_IG06: ; bbWeight=1.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=1.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG13
+ cbz x20, G_M35244_IG12
;; size=8 bbWeight=1.67 PerfScore 6.67
-G_M35244_IG07: ; bbWeight=1.17, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.17, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -106,57 +98,57 @@ G_M35244_IG07: ; bbWeight=1.17, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG09
+ cbz x0, G_M35244_IG08
;; size=24 bbWeight=1.17 PerfScore 4.68
-G_M35244_IG08: ; bbWeight=0.57, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=0.57, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10]
- b G_M35244_IG10
+ b G_M35244_IG09
;; size=8 bbWeight=0.57 PerfScore 2.27
-G_M35244_IG09: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov w21, #1 ;; size=4 bbWeight=0.60 PerfScore 0.30
-G_M35244_IG10: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG14
+ cbz x22, G_M35244_IG13
;; size=12 bbWeight=1.67 PerfScore 3.33
-G_M35244_IG11: ; bbWeight=0.83, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.83, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG14
+ beq G_M35244_IG13
;; size=24 bbWeight=0.83 PerfScore 5.00
-G_M35244_IG12: ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22]
- b G_M35244_IG15
+ b G_M35244_IG14
;; size=4 bbWeight=0.42 PerfScore 0.42
-G_M35244_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, wzr
- b G_M35244_IG10
+ b G_M35244_IG09
;; size=8 bbWeight=0.50 PerfScore 0.74
-G_M35244_IG14: ; bbWeight=1.67, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.67, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x22]
- cbnz x22, G_M35244_IG21
+ cbnz x22, G_M35244_IG20
;; size=4 bbWeight=1.67 PerfScore 1.67
-G_M35244_IG15: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG17
;; size=8 bbWeight=0.99 PerfScore 1.48
-G_M35244_IG16: ; bbWeight=0.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=0.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x22] cmp x1, x0
- beq G_M35244_IG18
+ beq G_M35244_IG17
;; size=24 bbWeight=0.49 PerfScore 2.96
-G_M35244_IG17: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -166,23 +158,23 @@ G_M35244_IG17: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.25 PerfScore 0.49
-G_M35244_IG18: ; bbWeight=0.99, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=0.99, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG42
+ bhs G_M35244_IG41
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG43
+ bhs G_M35244_IG42
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20] ;; size=36 bbWeight=0.99 PerfScore 15.31
-G_M35244_IG19: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ; byrRegs -[x0] ldrb w0, [x20, #0x2E] @@ -191,45 +183,45 @@ G_M35244_IG19: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG25
+ bls G_M35244_IG24
;; size=28 bbWeight=1.67 PerfScore 10.83
-G_M35244_IG20: ; bbWeight=1.67, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=1.67, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=8 bbWeight=1.67 PerfScore 2.50
-G_M35244_IG21: ; bbWeight=0.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=0.68, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x22] mov x20, x22 ; gcrRegs +[x20]
- b G_M35244_IG19
+ b G_M35244_IG18
;; size=8 bbWeight=0.68 PerfScore 1.02
-G_M35244_IG22: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG21: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20 x22] ldr w1, [x19, #0x24] cmp w1, #1
- bne G_M35244_IG41
+ bne G_M35244_IG40
;; size=12 bbWeight=0.17 PerfScore 0.75
-G_M35244_IG23: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20] mov x19, x20
- cbz x19, G_M35244_IG30
+ cbz x19, G_M35244_IG29
;; size=12 bbWeight=0.17 PerfScore 0.75
-G_M35244_IG24: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M35244_IG33
+G_M35244_IG23: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + b G_M35244_IG32
;; size=4 bbWeight=0.08 PerfScore 0.08
-G_M35244_IG25: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG24: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG26
+ cbz x0, G_M35244_IG25
ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG20
+ beq G_M35244_IG19
;; size=20 bbWeight=0.08 PerfScore 0.71
-G_M35244_IG26: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -275,13 +267,13 @@ G_M35244_IG26: ; bbWeight=0.08, gcrefRegs=180000 {x19 x20}, byrefRegs=000 blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG20
+ b G_M35244_IG19
;; size=124 bbWeight=0.08 PerfScore 2.42
-G_M35244_IG27: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] +[x19]
- b G_M35244_IG04
+ b G_M35244_IG03
;; size=4 bbWeight=0.17 PerfScore 0.17
-G_M35244_IG28: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this @@ -289,58 +281,58 @@ G_M35244_IG28: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0.17 PerfScore 0.83
-G_M35244_IG29: ; bbWeight=0.17, epilog, nogc, extend
+G_M35244_IG28: ; bbWeight=0.17, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=0.17 PerfScore 0.67
-G_M35244_IG30: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
...

+0 (0.00%) : 578351.dasm - System.Text.RegularExpressions.RegexCharClass:CharsToStringClass(System.ReadOnlySpan`1[ushort]):System.String (Tier1)

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 262200
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 262200
; 8 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -91,19 +91,9 @@ G_M30761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=44 bbWeight=1 PerfScore 9.00 G_M30761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz cmp w1, #2
- beq G_M30761_IG04
+ bne G_M30761_IG07
;; size=8 bbWeight=1 PerfScore 1.50
-G_M30761_IG03: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cmp w1, #2 - bhi G_M30761_IG11 - mov w0, w1 - adr x2, [@RWD00] - ldr w2, [x2, x0, LSL #2] - adr x3, [G_M30761_IG02] - add x2, x2, x3 - br x2 - ;; size=32 bbWeight=0.37 PerfScore 2.76 -G_M30761_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M30761_IG03: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, #0 bls G_M30761_IG19 ldrh w20, [x19] @@ -112,7 +102,7 @@ G_M30761_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, cmp w0, #25 bhi G_M30761_IG11 ;; size=28 bbWeight=0.63 PerfScore 4.43
-G_M30761_IG05: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M30761_IG04: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, #1 bls G_M30761_IG19 ldrh w2, [x19, #0x02] @@ -120,7 +110,7 @@ G_M30761_IG05: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, cmp w21, w2 bne G_M30761_IG11 ;; size=24 bbWeight=0.63 PerfScore 4.09
-G_M30761_IG06: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M30761_IG05: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x19] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -139,7 +129,7 @@ G_M30761_IG06: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs +[x0] cbz x0, G_M30761_IG17 ;; size=44 bbWeight=0.62 PerfScore 7.50
-G_M30761_IG07: ; bbWeight=0.62, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M30761_IG06: ; bbWeight=0.62, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x1 x22] ldr x23, [sp, #0x68] ldp x21, x22, [sp, #0x58] @@ -147,9 +137,19 @@ G_M30761_IG07: ; bbWeight=0.62, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldp fp, lr, [sp], #0x70 ret lr ;; size=20 bbWeight=0.62 PerfScore 3.75
-G_M30761_IG08: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+G_M30761_IG07: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
; gcrRegs -[x0] ; byrRegs +[x19]
+ cmp w1, #2 + bhi G_M30761_IG11 + mov w0, w1 + adr x2, [@RWD00] + ldr w2, [x2, x0, LSL #2] + adr x3, [G_M30761_IG02] + add x2, x2, x3 + br x2 + ;; size=32 bbWeight=0.37 PerfScore 2.76 +G_M30761_IG08: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w1, #0 bls G_M30761_IG19 ldrh w20, [x19] @@ -239,7 +239,7 @@ G_M30761_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000 ldr w0, [fp, #0x20] // [V07 loc6+0x10] ldr w1, [fp, #0x30] // [V07 loc6+0x20] cmp w0, w1
- bhi G_M30761_IG25
+ bhi G_M30761_IG22
ldr x2, [fp, #0x28] // [V07 loc6+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -255,7 +255,7 @@ G_M30761_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=000 blr x1 ; byrRegs -[x2] cmp w23, #3
- blo G_M30761_IG24
+ blo G_M30761_IG25
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -316,7 +316,7 @@ G_M30761_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=400000 {x22} ldr w0, [fp, #0x20] // [V07 loc6+0x10] ldr w1, [fp, #0x30] // [V07 loc6+0x20] cmp w0, w1
- bhi G_M30761_IG25
+ bhi G_M30761_IG22
ldr x2, [fp, #0x28] // [V07 loc6+0x18] ; byrRegs +[x2] ubfiz x3, x0, #1, #32 @@ -391,7 +391,7 @@ G_M30761_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=400000 {x22} bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14 x22]
- b G_M30761_IG07
+ b G_M30761_IG06
;; size=164 bbWeight=0.00 PerfScore 0.00 G_M30761_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -439,18 +439,26 @@ G_M30761_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=100 bbWeight=0 PerfScore 0.00 G_M30761_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x2 x19]
+ movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x0, [x0] + blr x0 + brk_windows #0 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M30761_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M30761_IG23: ; bbWeight=0, epilog, nogc, extend
+G_M30761_IG24: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x68] ldp x21, x22, [sp, #0x58] ldp x19, x20, [sp, #0x48] ldp fp, lr, [sp], #0x70 ret lr ;; size=20 bbWeight=0 PerfScore 0.00
-G_M30761_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref
+G_M30761_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=480000 {x19 x22}, gcvars, byref
; byrRegs +[x19 x22] add x0, fp, #16 // [V07 loc6] movz x1, #0xD1FFAB1E @@ -463,17 +471,8 @@ G_M30761_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { blr x2 b G_M30761_IG16 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M30761_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[x19 x22] - movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException() - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - ldr x0, [x0] - blr x0 - brk_windows #0 - ;; size=24 bbWeight=0 PerfScore 0.00
G_M30761_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- ; byrRegs +[x22]
+ ; byrRegs -[x19]
add x0, fp, #16 // [V07 loc6] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -485,9 +484,9 @@ G_M30761_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b blr x2 b G_M30761_IG18 ;; size=40 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M30761_IG22 - G_M30761_IG02
+RWD00 dd G_M30761_IG23 - G_M30761_IG02
dd G_M30761_IG08 - G_M30761_IG02
- dd G_M30761_IG04 - G_M30761_IG02
+ dd G_M30761_IG03 - G_M30761_IG02
; Total bytes of code 1196, prolog size 40, PerfScore 42.86, instruction count 299, allocated bytes for code 1196 (MethodHash=fc3c87d6) for method System.Text.RegularExpressions.RegexCharClass:CharsToStringClass(System.ReadOnlySpan`1[ushort]):System.String (Tier1)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.arm64.checked.mch 6 1 2 3 -4 +8
benchmarks.run_tiered.windows.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.arm64.checked.mch 2 0 0 2 -0 +0
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.arm64.Release.mch 7 4 0 3 -36 +0
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
15 5 2 8 -40 +8

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,621 4 24,617 31 (0.13%) 31 (0.13%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,277 48,766 47,511 3 (0.00%) 3 (0.00%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,749 37,119 11,630 7 (0.01%) 7 (0.01%)
coreclr_tests.run.windows.arm64.checked.mch 615,369 377,106 238,263 71 (0.01%) 71 (0.01%)
libraries.crossgen2.windows.arm64.checked.mch 276,148 15 276,133 8 (0.00%) 8 (0.00%)
libraries.pmi.windows.arm64.checked.mch 310,521 6 310,515 335 (0.11%) 335 (0.11%)
libraries_tests.run.windows.arm64.Release.mch 641,071 465,402 175,669 143 (0.02%) 143 (0.02%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 316,905 21,618 295,287 470 (0.15%) 470 (0.15%)
realworld.run.windows.arm64.checked.mch 33,214 3 33,211 96 (0.29%) 96 (0.29%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,190 8 24,182 5 (0.02%) 5 (0.02%)
2,387,065 950,047 1,437,018 1,169 (0.05%) 1,169 (0.05%)

jit-analyze output

benchmarks.run_pgo.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 46736428 (overridden on cmd)
Total bytes of diff: 46736432 (overridden on cmd)
Total bytes of delta: 4 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
           4 : 87354.dasm (0.53 % of base)
           4 : 83995.dasm (0.53 % of base)

Top file improvements (bytes):
          -4 : 85516.dasm (-0.53 % of base)

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

Top method regressions (bytes):
           4 (0.53 % of base) : 87354.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.53 % of base) : 83995.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (bytes):
          -4 (-0.53 % of base) : 85516.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method regressions (percentages):
           4 (0.53 % of base) : 83995.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.53 % of base) : 87354.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
          -4 (-0.53 % of base) : 85516.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

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


coreclr_tests.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 511499484 (overridden on cmd)
Total bytes of diff: 511499484 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



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

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


libraries_tests.run.windows.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 320238700 (overridden on cmd)
Total bytes of diff: 320238664 (overridden on cmd)
Total bytes of delta: -36 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -16 : 471767.dasm (-1.53 % of base)
         -12 : 394067.dasm (-0.46 % of base)
          -4 : 588835.dasm (-0.45 % of base)
          -4 : 565260.dasm (-0.74 % of base)

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

Top method improvements (bytes):
         -16 (-1.53 % of base) : 471767.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
         -12 (-0.46 % of base) : 394067.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.45 % of base) : 588835.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -4 (-0.74 % of base) : 565260.dasm - System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte (Tier1)

Top method improvements (percentages):
         -16 (-1.53 % of base) : 471767.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -4 (-0.74 % of base) : 565260.dasm - System.Text.Json.JsonSerializer:GetMetadataPropertyName(System.ReadOnlySpan`1[ubyte],System.Text.Json.Serialization.Metadata.PolymorphicTypeResolver):ubyte (Tier1)
         -12 (-0.46 % of base) : 394067.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.45 % of base) : 588835.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)

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



windows x64

Diffs are based on 2,558,349 contexts (1,011,639 MinOpts, 1,546,710 FullOpts).

MISSED contexts: 3,924 (0.15%)

Overall (+80 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 38,879,813 +2
benchmarks.run_pgo.windows.x64.checked.mch 36,663,291 +40
coreclr_tests.run.windows.x64.checked.mch 407,274,585 +69
libraries_tests.run.windows.x64.Release.mch 284,562,984 -31

FullOpts (+80 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 18,449,122 +2
benchmarks.run_pgo.windows.x64.checked.mch 22,106,522 +40
coreclr_tests.run.windows.x64.checked.mch 126,759,692 +69
libraries_tests.run.windows.x64.Release.mch 108,640,954 -31

Example diffs

aspnet.run.windows.x64.checked.mch

-1 (-0.13%) : 88044.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

@@ -152,20 +152,20 @@ G_M42373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=42 bbWeight=1 PerfScore 11.58 G_M42373_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref cmp dword ptr [rdi+0x2C], 0
- je G_M42373_IG29
+ je G_M42373_IG16
mov rcx, gword ptr [rdi+0x30] ; gcrRegs +[rcx] test rcx, rcx
- je G_M42373_IG30
+ je G_M42373_IG17
mov eax, dword ptr [rcx+0x08] cmp eax, esi
- jb G_M42373_IG22
+ jb G_M42373_IG28
mov edx, esi lea r8, bword ptr [rcx+rdx+0x10] ; byrRegs +[r8] sub eax, esi cmp eax, 12
- jl G_M42373_IG31
+ jl G_M42373_IG18
;; size=52 bbWeight=1 PerfScore 13.25 G_M42373_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0100 {r8}, byref ; gcrRegs -[rcx] @@ -177,18 +177,18 @@ G_M42373_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0100 {r8 shr ecx, 28 movzx r10, cl dec r10d
- jne G_M42373_IG32
+ jne G_M42373_IG19
;; size=36 bbWeight=1 PerfScore 9.00 G_M42373_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; byrRegs -[r8] mov ecx, dword ptr [rbx+0x28] and ecx, 0xD1FFAB1E cmp ecx, dword ptr [rbx+0x68]
- jge G_M42373_IG33
+ jge G_M42373_IG20
mov ecx, dword ptr [rbx+0x6C] and ecx, 3 cmp ecx, 2
- jne G_M42373_IG15
+ jne G_M42373_IG13
;; size=33 bbWeight=1 PerfScore 9.75 G_M42373_IG05: ; bbWeight=0.99, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rbx+0x44] @@ -217,7 +217,7 @@ G_M42373_IG07: ; bbWeight=0.98, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0 ; byrRegs -[r14] mov rdx, qword ptr [rcx] test dword ptr [rdx], 0xD1FFAB1E
- je G_M42373_IG34
+ je G_M42373_IG21
lea r14, bword ptr [rcx+0x10] ; byrRegs +[r14] mov r15d, dword ptr [rcx+0x08] @@ -231,7 +231,7 @@ G_M42373_IG08: ; bbWeight=0.98, gcrefRegs=0088 {rbx rdi}, byrefRegs=4020 add r8, rcx mov eax, r15d cmp r8, rax
- ja G_M42373_IG22
+ ja G_M42373_IG28
add r14, rcx mov r15d, edx ;; size=36 bbWeight=0.98 PerfScore 6.62 @@ -243,17 +243,17 @@ G_M42373_IG09: ; bbWeight=0.99, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 lea edx, [rcx+0x01] mov dword ptr [rbx+0x30], edx cmp ecx, r15d
- jae G_M42373_IG28
+ jae SHORT G_M42373_IG15
mov byte ptr [r14+rcx], 44
- ;; size=29 bbWeight=0.99 PerfScore 9.70 -G_M42373_IG10: ; bbWeight=0.99, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref
+ ;; size=25 bbWeight=0.99 PerfScore 9.70 +G_M42373_IG10: ; bbWeight=0.99, gcrefRegs=0088 {rbx rdi}, byrefRegs=4000 {r14}, byref, isz
mov ecx, dword ptr [rbx+0x30] lea edx, [rcx+0x01] mov dword ptr [rbx+0x30], edx cmp ecx, r15d
- jae G_M42373_IG28
+ jae SHORT G_M42373_IG15
mov byte ptr [r14+rcx], 123
- ;; size=23 bbWeight=0.99 PerfScore 5.72
+ ;; size=19 bbWeight=0.99 PerfScore 5.72
G_M42373_IG11: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; byrRegs -[r14] mov ecx, dword ptr [rbx+0x28] @@ -263,7 +263,7 @@ G_M42373_IG11: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, mov dword ptr [rbx+0x28], ecx mov byte ptr [rbx+0x36], 1 ;; size=21 bbWeight=1 PerfScore 5.50
-G_M42373_IG12: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M42373_IG12: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi ; gcrRegs +[rcx] mov edx, esi @@ -272,21 +272,9 @@ G_M42373_IG12: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rcx rbx rdi r8] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75 -G_M42373_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - ;; size=1 bbWeight=1 PerfScore 0.25 -G_M42373_IG14: ; bbWeight=1, epilog, nogc, extend - add rsp, 104 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - pop r15 - ret - ;; size=13 bbWeight=1 PerfScore 4.25 -G_M42373_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M42373_IG14 + ;; size=16 bbWeight=1 PerfScore 5.75 +G_M42373_IG13: ; bbWeight=0.01, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi] mov rcx, rbx ; gcrRegs +[rcx] @@ -296,168 +284,37 @@ G_M42373_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=008 ; gcr arg pop 0 jmp SHORT G_M42373_IG11 ;; size=16 bbWeight=0.01 PerfScore 0.03
-G_M42373_IG16: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - cmp byte ptr [rbx], bl - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 91 - call [System.Text.Json.Utf8JsonWriter:WriteStart(ubyte):this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov byte ptr [rbx+0x36], 3 - jmp SHORT G_M42373_IG12 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M42373_IG17: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - lea rdx, [rsp+0x58] - mov rcx, rdi - ; gcrRegs +[rcx] - mov r8, rbx - ; gcrRegs +[r8] - call [<unknown method>] - ; gcrRegs -[rcx rbx rdi r8] - ; gcr arg pop 0 - jmp SHORT G_M42373_IG13 - ;; size=19 bbWeight=0 PerfScore 0.00 -G_M42373_IG18: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rdi] - add rdi, 32 - ; gcrRegs -[rdi] - ; byrRegs +[rdi] - mov esi, dword ptr [rsp+0x58] - mov ebp, dword ptr [rsp+0x5C] - and ebp, 0xD1FFAB1E - mov ecx, esi - mov eax, ebp - add rcx, rax - mov eax, dword ptr [rdi+0x0C] - cmp rcx, rax - jbe SHORT G_M42373_IG19 - mov ecx, 33 - call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] - ; gcrRegs -[rbx] - ; byrRegs -[rdi] - ; gcr arg pop 0 - int3 - ;; size=45 bbWeight=0 PerfScore 0.00 -G_M42373_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - mov rcx, gword ptr [rdi] - ; gcrRegs +[rcx] - add esi, dword ptr [rdi+0x08] - xor rdi, rdi - xor r14d, r14d - test rcx, rcx - je SHORT G_M42373_IG24 - mov rdx, qword ptr [rcx] - test dword ptr [rdx], 0xD1FFAB1E - je SHORT G_M42373_IG20 - lea rdi, bword ptr [rcx+0x10] - mov r14d, dword ptr [rcx+0x08] - jmp SHORT G_M42373_IG21 - ;; size=37 bbWeight=0 PerfScore 0.00 -G_M42373_IG20: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - lea rdx, [rsp+0x38] - mov rax, qword ptr [rcx] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov rdi, bword ptr [rsp+0x38] - ; byrRegs +[rdi] - mov r14d, dword ptr [rsp+0x40] - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M42373_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - and esi, 0xD1FFAB1E - mov edx, esi - mov ecx, ebp - add rcx, rdx - mov eax, r14d - cmp rcx, rax - jbe SHORT G_M42373_IG23 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M42373_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - ; byrRegs -[rdi] - call [System.ThrowHelper:ThrowArgumentOutOfRangeException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M42373_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - add rdi, rdx - mov r14d, ebp - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M42373_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref - mov rdx, rdi - ; byrRegs +[rdx] - mov bword ptr [rsp+0x28], rdx - mov dword ptr [rsp+0x30], r14d - lea rdx, [rsp+0x28] - ; byrRegs -[rdx] - mov rcx, rbx - ; gcrRegs +[rcx] - cmp dword ptr [rcx], ecx - call [System.Text.Json.Utf8JsonWriter:WriteNumberValue(System.ReadOnlySpan`1[ubyte]):this] - ; gcrRegs -[rcx rbx] - ; byrRegs -[rdi] - ; gcr arg pop 0 - jmp G_M42373_IG13 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M42373_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 1 - cmp dword ptr [rcx], ecx - call [System.Text.Json.Utf8JsonWriter:WriteBooleanValue(ubyte):this] - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - jmp G_M42373_IG13 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M42373_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx] - mov rcx, rbx
...

+3 (+0.26%) : 123784.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

@@ -175,20 +175,20 @@ G_M42373_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=46 bbWeight=1 PerfScore 13.58 G_M42373_IG02: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref cmp dword ptr [rdi+0x2C], 0
- je G_M42373_IG31
+ je G_M42373_IG18
mov rcx, gword ptr [rdi+0x30] ; gcrRegs +[rcx] test rcx, rcx
- je G_M42373_IG32
+ je G_M42373_IG19
mov eax, dword ptr [rcx+0x08] cmp eax, esi
- jb G_M42373_IG24
+ jb G_M42373_IG38
mov edx, esi lea r8, bword ptr [rcx+rdx+0x10] ; byrRegs +[r8] sub eax, esi cmp eax, 12
- jl G_M42373_IG33
+ jl G_M42373_IG20
;; size=52 bbWeight=1 PerfScore 13.25 G_M42373_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0100 {r8}, byref ; gcrRegs -[rcx] @@ -200,18 +200,18 @@ G_M42373_IG03: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0100 {r8 shr ecx, 28 movzx r10, cl dec r10d
- jne G_M42373_IG34
+ jne G_M42373_IG21
;; size=36 bbWeight=1 PerfScore 9.00 G_M42373_IG04: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; byrRegs -[r8] mov ecx, dword ptr [rbx+0x28] and ecx, 0xD1FFAB1E cmp ecx, dword ptr [rbx+0x68]
- jge G_M42373_IG35
+ jge G_M42373_IG22
mov ecx, dword ptr [rbx+0x6C] and ecx, 3 cmp ecx, 2
- jne G_M42373_IG17
+ jne G_M42373_IG15
;; size=33 bbWeight=1 PerfScore 9.75 G_M42373_IG05: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref mov ecx, dword ptr [rbx+0x44] @@ -221,16 +221,16 @@ G_M42373_IG05: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 ;; size=15 bbWeight=1.00 PerfScore 6.23 G_M42373_IG06: ; bbWeight=0.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref cmp dword ptr [rbx+0x44], 0
- jne G_M42373_IG39
+ jne G_M42373_IG26
cmp gword ptr [rbx+0x10], 0
- jne G_M42373_IG36
+ jne G_M42373_IG23
mov rbp, gword ptr [rbx+0x08] ; gcrRegs +[rbp] lea r14, bword ptr [rbx+0x38] ; byrRegs +[r14] mov rcx, 0xD1FFAB1E ; System.Text.Json.PooledByteBufferWriter cmp qword ptr [rbp], rcx
- jne G_M42373_IG38
+ jne G_M42373_IG25
mov rcx, rbp ; gcrRegs +[rcx] mov edx, 256 @@ -242,10 +242,10 @@ G_M42373_IG06: ; bbWeight=0.59, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 mov ebp, dword ptr [rbp+0x10] ; gcrRegs -[rbp] test rdx, rdx
- je G_M42373_IG37
+ je G_M42373_IG24
mov r15d, dword ptr [rdx+0x08] cmp r15d, ebp
- jb G_M42373_IG24
+ jb G_M42373_IG38
sub r15d, ebp ;; size=95 bbWeight=0.59 PerfScore 16.02 G_M42373_IG07: ; bbWeight=0.59, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=4000 {r14}, byref @@ -257,7 +257,7 @@ G_M42373_IG07: ; bbWeight=0.59, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=4 mov dword ptr [r14+0x08], ebp mov dword ptr [r14+0x0C], r15d cmp dword ptr [rbx+0x44], 256
- jl G_M42373_IG42
+ jl G_M42373_IG29
;; size=29 bbWeight=0.59 PerfScore 4.30 G_M42373_IG08: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r14] @@ -275,7 +275,7 @@ G_M42373_IG09: ; bbWeight=0.95, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=2 ; byrRegs -[r12] mov rax, qword ptr [rcx] test dword ptr [rax], 0xD1FFAB1E
- je G_M42373_IG43
+ je G_M42373_IG30
lea r12, bword ptr [rcx+0x10] ; byrRegs +[r12] mov eax, dword ptr [rcx+0x08] @@ -289,24 +289,24 @@ G_M42373_IG10: ; bbWeight=0.95, gcrefRegs=0088 {rbx rdi}, byrefRegs=3000 add r8, rcx mov eax, eax cmp r8, rax
- ja G_M42373_IG24
+ ja G_M42373_IG38
add r12, rcx mov eax, edx ;; size=36 bbWeight=0.95 PerfScore 6.44 G_M42373_IG11: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=1000 {r12}, byref ; byrRegs -[r13] cmp dword ptr [rbx+0x28], 0
- jl G_M42373_IG44
+ jl G_M42373_IG31
;; size=10 bbWeight=1.00 PerfScore 3.99
-G_M42373_IG12: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=1000 {r12}, byref
+G_M42373_IG12: ; bbWeight=1.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=1000 {r12}, byref, isz
mov r10d, dword ptr [rbx+0x30] lea ecx, [r10+0x01] mov dword ptr [rbx+0x30], ecx cmp r10d, eax
- jae G_M42373_IG30
+ jae SHORT G_M42373_IG17
mov ecx, r10d mov byte ptr [r12+rcx], 123
- ;; size=28 bbWeight=1.00 PerfScore 5.98
+ ;; size=24 bbWeight=1.00 PerfScore 5.98
G_M42373_IG13: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref ; byrRegs -[r12] mov ecx, dword ptr [rbx+0x28] @@ -316,7 +316,7 @@ G_M42373_IG13: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, mov dword ptr [rbx+0x28], ecx mov byte ptr [rbx+0x36], 1 ;; size=21 bbWeight=1 PerfScore 5.50
-G_M42373_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+G_M42373_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi ; gcrRegs +[rcx] mov edx, esi @@ -325,11 +325,20 @@ G_M42373_IG14: ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, call [System.Text.Json.JsonDocument:WriteComplexElement(int,System.Text.Json.Utf8JsonWriter):this] ; gcrRegs -[rcx rbx rdi r8] ; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75 -G_M42373_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - ;; size=1 bbWeight=1 PerfScore 0.25 -G_M42373_IG16: ; bbWeight=1, epilog, nogc, extend
+ jmp SHORT G_M42373_IG16 + ;; size=16 bbWeight=1 PerfScore 5.75 +G_M42373_IG15: ; bbWeight=0.00, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx rdi] + mov rcx, rbx + ; gcrRegs +[rcx] + mov edx, 123 + call [System.Text.Json.Utf8JsonWriter:WriteStartSlow(ubyte):this] + ; gcrRegs -[rcx] + ; gcr arg pop 0 + jmp SHORT G_M42373_IG13 + ;; size=16 bbWeight=0.00 PerfScore 0.02 +G_M42373_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx rdi]
add rsp, 104 pop rbx pop rbp @@ -341,178 +350,26 @@ G_M42373_IG16: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=1 PerfScore 5.25
-G_M42373_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx rdi] - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 123 - call [System.Text.Json.Utf8JsonWriter:WriteStartSlow(ubyte):this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - jmp SHORT G_M42373_IG13 - ;; size=16 bbWeight=0.00 PerfScore 0.02 -G_M42373_IG18: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - cmp byte ptr [rbx], bl - mov rcx, rbx - ; gcrRegs +[rcx] - mov edx, 91 - call [System.Text.Json.Utf8JsonWriter:WriteStart(ubyte):this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov byte ptr [rbx+0x36], 3 - jmp SHORT G_M42373_IG14 - ;; size=22 bbWeight=0 PerfScore 0.00 -G_M42373_IG19: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - lea rdx, [rsp+0x58] - mov rcx, rdi - ; gcrRegs +[rcx] - mov r8, rbx - ; gcrRegs +[r8] - call [<unknown method>] - ; gcrRegs -[rcx rbx rdi r8] - ; gcr arg pop 0 - jmp SHORT G_M42373_IG15 - ;; size=19 bbWeight=0 PerfScore 0.00 -G_M42373_IG20: ; bbWeight=0, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rdi] - add rdi, 32 - ; gcrRegs -[rdi] - ; byrRegs +[rdi] - mov esi, dword ptr [rsp+0x58] - mov ebp, dword ptr [rsp+0x5C] - and ebp, 0xD1FFAB1E - mov ecx, esi - mov eax, ebp - add rcx, rax - mov eax, dword ptr [rdi+0x0C] - cmp rcx, rax - jbe SHORT G_M42373_IG21 - mov ecx, 33 - call [System.ThrowHelper:ThrowArgumentOutOfRangeException(int)] - ; gcrRegs -[rbx] - ; byrRegs -[rdi] - ; gcr arg pop 0 - int3 - ;; size=45 bbWeight=0 PerfScore 0.00 -G_M42373_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz - ; gcrRegs +[rbx] - ; byrRegs +[rdi] - mov rcx, gword ptr [rdi] - ; gcrRegs +[rcx] - add esi, dword ptr [rdi+0x08] - xor rdi, rdi - xor r14d, r14d - test rcx, rcx - je SHORT G_M42373_IG26 - mov rdx, qword ptr [rcx] - test dword ptr [rdx], 0xD1FFAB1E - je SHORT G_M42373_IG22 - lea rdi, bword ptr [rcx+0x10] - mov r14d, dword ptr [rcx+0x08] - jmp SHORT G_M42373_IG23 - ;; size=37 bbWeight=0 PerfScore 0.00 -G_M42373_IG22: ; bbWeight=0, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref - ; byrRegs -[rdi] - lea rdx, [rsp+0x38] - mov rax, qword ptr [rcx] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov rdi, bword ptr [rsp+0x38] - ; byrRegs +[rdi] - mov r14d, dword ptr [rsp+0x40] - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M42373_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
...

benchmarks.run_pgo.windows.x64.checked.mch

-18 (-3.49%) : 27503.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -48,31 +48,31 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG08
+ je G_M35244_IG20
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG08 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG20 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=3.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG20
+ jbe G_M35244_IG17
;; size=16 bbWeight=3.00 PerfScore 11.26
-G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG08
+ ja G_M35244_IG20
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2.00 PerfScore 15.01
+ ;; size=36 bbWeight=2.00 PerfScore 15.01
G_M35244_IG05: ; bbWeight=1.71, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref ; gcrRegs +[rsi] mov edi, 1 @@ -82,56 +82,18 @@ G_M35244_IG06: ; bbWeight=2.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG09
+ je SHORT G_M35244_IG13
;; size=10 bbWeight=2.00 PerfScore 3.50 G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M35244_IG18 - ;; size=2 bbWeight=1.00 PerfScore 2.00 -G_M35244_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rbp rsi] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.00 PerfScore 0.00 -G_M35244_IG09: ; bbWeight=2.00, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rbp rsi] - test rbp, rbp - je G_M35244_IG24 - ;; size=9 bbWeight=2.00 PerfScore 2.50 -G_M35244_IG10: ; bbWeight=2.00, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi] - movzx rcx, byte ptr [rbp+0x2E] - cmp ecx, 24 - je G_M35244_IG25 - ;; size=13 bbWeight=2.00 PerfScore 6.51 -G_M35244_IG11: ; bbWeight=1.98, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref - lea edx, [rcx-0x1A] - cmp edx, 1 - jbe G_M35244_IG25 - add ecx, -33 - cmp ecx, 1 - jbe G_M35244_IG25 - ;; size=24 bbWeight=1.98 PerfScore 6.44 -G_M35244_IG12: ; bbWeight=2.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx] - mov rbx, rbp - ; gcrRegs +[rbx] - jmp SHORT G_M35244_IG03 - ;; size=5 bbWeight=2.00 PerfScore 4.50 -G_M35244_IG13: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode + cmp qword ptr [rbp], rcx + je SHORT G_M35244_IG13 + ;; size=16 bbWeight=1.00 PerfScore 4.25 +G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
- mov rsi, gword ptr [rbx+0x08] - ; gcrRegs +[rsi] - test rsi, rsi - jne SHORT G_M35244_IG17 - ;; size=9 bbWeight=2.00 PerfScore 6.51 -G_M35244_IG14: ; bbWeight=0.29, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M35244_IG16 - ;; size=2 bbWeight=0.29 PerfScore 0.58 -G_M35244_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jmp G_M35244_IG23 + ;; size=5 bbWeight=0.50 PerfScore 1.00 +G_M35244_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] mov rcx, rbx ; gcrRegs +[rcx] @@ -141,14 +103,16 @@ G_M35244_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- jmp G_M35244_IG03 - ;; size=19 bbWeight=0 PerfScore 0.00 -G_M35244_IG16: ; bbWeight=0.29, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] +[rsi] - xor edi, edi - jmp SHORT G_M35244_IG06 - ;; size=4 bbWeight=0.29 PerfScore 0.65 -G_M35244_IG17: ; bbWeight=1.71, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M35244_IG03 + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M35244_IG10: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rsi, gword ptr [rbx+0x08] + ; gcrRegs +[rsi] + test rsi, rsi + je SHORT G_M35244_IG12 + ;; size=9 bbWeight=2.00 PerfScore 6.51 +G_M35244_IG11: ; bbWeight=1.71, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -156,25 +120,45 @@ G_M35244_IG17: ; bbWeight=1.71, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- jne SHORT G_M35244_IG23 - jmp G_M35244_IG05 - ;; size=28 bbWeight=1.71 PerfScore 8.14 -G_M35244_IG18: ; bbWeight=1.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] +[rbp] - mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode - cmp qword ptr [rbp], rcx - je G_M35244_IG09 - ;; size=20 bbWeight=1.00 PerfScore 4.25 -G_M35244_IG19: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbp] - jmp SHORT G_M35244_IG24 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M35244_IG20: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M35244_IG22 + jmp SHORT G_M35244_IG05 + ;; size=25 bbWeight=1.71 PerfScore 8.14 +G_M35244_IG12: ; bbWeight=0.29, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + xor edi, edi + jmp SHORT G_M35244_IG06 + ;; size=4 bbWeight=0.29 PerfScore 0.65 +G_M35244_IG13: ; bbWeight=2.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbp] + test rbp, rbp + je SHORT G_M35244_IG23 + ;; size=5 bbWeight=2.00 PerfScore 2.50 +G_M35244_IG14: ; bbWeight=2.00, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
+ movzx rcx, byte ptr [rbp+0x2E] + cmp ecx, 24 + je SHORT G_M35244_IG24 + ;; size=9 bbWeight=2.00 PerfScore 6.51 +G_M35244_IG15: ; bbWeight=1.98, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz + lea edx, [rcx-0x1A] + cmp edx, 1 + jbe SHORT G_M35244_IG24 + add ecx, -33 + cmp ecx, 1 + jbe SHORT G_M35244_IG24 + ;; size=16 bbWeight=1.98 PerfScore 6.44 +G_M35244_IG16: ; bbWeight=2.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + mov rbx, rbp + ; gcrRegs +[rbx] + jmp G_M35244_IG03 + ;; size=8 bbWeight=2.00 PerfScore 4.50 +G_M35244_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp]
mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG21: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG18: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -183,17 +167,28 @@ G_M35244_IG21: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.25
-G_M35244_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rbx] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG23: ; bbWeight=0, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG21: ; bbWeight=0, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rax rbx rsi] mov edi, dword ptr [rax+0x10] jmp G_M35244_IG06 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rdx, rsi ; gcrRegs +[rdx] @@ -202,27 +197,27 @@ G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs -[rdx rsi] +[rax] ; gcr arg pop 0 cmp edi, dword ptr [rax+0x10]
- jae G_M35244_IG32
+ jae G_M35244_IG31
mov rcx, gword ptr [rax+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M35244_IG22
+ jae SHORT G_M35244_IG19
mov eax, edi ; gcrRegs -[rax] mov rbp, gword ptr [rcx+8*rax+0x10] ; gcrRegs +[rbp]
- jmp G_M35244_IG10 - ;; size=48 bbWeight=0 PerfScore 0.00 -G_M35244_IG25: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M35244_IG14 + ;; size=45 bbWeight=0 PerfScore 0.00 +G_M35244_IG24: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG26
+ je SHORT G_M35244_IG25
mov rcx, gword ptr [rbx+0x18] ...

-8 (-1.52%) : 103836.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -20,10 +20,10 @@ ; V08 loc7 [V08,T18] ( 5, 0 ) int -> rdi ; V09 loc8 [V09,T19] ( 3, 0 ) ref -> rbx class-hnd exact <System.Text.RegularExpressions.RegexNode> ; V10 OutArgs [V10 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T17] ( 5, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T13] ( 4, 5.98) int -> rdi "Inline return value spill temp" ; V13 tmp3 [V13,T14] ( 3, 5.82) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T07] ( 6, 8.98) ref -> rbp class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T07] ( 6, 8.98) ref -> rsi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T00] ( 4, 20.94) ref -> rbp "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T08] ( 3, 7.89) ref -> rbp class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -50,31 +50,31 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG08
+ je G_M35244_IG28
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG08 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG28 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=3.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG25
+ jbe G_M35244_IG24
;; size=16 bbWeight=3.99 PerfScore 14.97
-G_M35244_IG04: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG08
+ ja G_M35244_IG28
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2.99 PerfScore 22.44
+ ;; size=36 bbWeight=2.99 PerfScore 22.44
G_M35244_IG05: ; bbWeight=1.57, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref ; gcrRegs +[rsi] mov edi, 1 @@ -84,38 +84,74 @@ G_M35244_IG06: ; bbWeight=2.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG09
+ je SHORT G_M35244_IG12
;; size=10 bbWeight=2.99 PerfScore 5.24
-G_M35244_IG07: ; bbWeight=1.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref - jmp G_M35244_IG23 - ;; size=5 bbWeight=1.50 PerfScore 2.99 -G_M35244_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rbp rsi] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.00 PerfScore 0.01 -G_M35244_IG09: ; bbWeight=2.99, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx rbp rsi] - test rbp, rbp - jne SHORT G_M35244_IG17 - ;; size=5 bbWeight=2.99 PerfScore 3.74 -G_M35244_IG10: ; bbWeight=1.08, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=1.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode + cmp qword ptr [rbp], rdx + je SHORT G_M35244_IG12 + ;; size=16 bbWeight=1.50 PerfScore 6.36 +G_M35244_IG08: ; bbWeight=0.75, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
+ jmp SHORT G_M35244_IG17 + ;; size=2 bbWeight=0.75 PerfScore 1.50 +G_M35244_IG09: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + mov rsi, gword ptr [rbx+0x08] + ; gcrRegs +[rsi] + test rsi, rsi + je SHORT G_M35244_IG14 + ;; size=9 bbWeight=2.99 PerfScore 9.72 +G_M35244_IG10: ; bbWeight=2.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, rsi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0 + test rax, rax + je SHORT G_M35244_IG05 + ;; size=23 bbWeight=2.46 PerfScore 6.77 +G_M35244_IG11: ; bbWeight=0.90, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz + mov edi, dword ptr [rax+0x10] + jmp SHORT G_M35244_IG06 + ;; size=5 bbWeight=0.90 PerfScore 3.58 +G_M35244_IG12: ; bbWeight=2.99, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] +[rbp] + test rbp, rbp + je SHORT G_M35244_IG17 + ;; size=5 bbWeight=2.99 PerfScore 3.74 +G_M35244_IG13: ; bbWeight=1.91, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + mov rsi, rbp + ; gcrRegs +[rsi] + jmp SHORT G_M35244_IG15 + ;; size=5 bbWeight=1.91 PerfScore 4.29 +G_M35244_IG14: ; bbWeight=0.53, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbp] + xor edi, edi + jmp SHORT G_M35244_IG06 + ;; size=4 bbWeight=0.53 PerfScore 1.19 +G_M35244_IG15: ; bbWeight=2.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + movzx rcx, byte ptr [rsi+0x2E] + cmp ecx, 24 + je G_M35244_IG31 + ;; size=13 bbWeight=2.99 PerfScore 9.72 +G_M35244_IG16: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M35244_IG22 + ;; size=2 bbWeight=2.97 PerfScore 5.94 +G_M35244_IG17: ; bbWeight=1.08, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.08 PerfScore 1.63
-G_M35244_IG11: ; bbWeight=0.54, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.54, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbp], rcx
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.54 PerfScore 2.30
-G_M35244_IG12: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -125,87 +161,42 @@ G_M35244_IG12: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=11 bbWeight=0.27 PerfScore 0.41
-G_M35244_IG13: ; bbWeight=1.08, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.08, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG36
+ jae SHORT G_M35244_IG26
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae G_M35244_IG27
+ jae SHORT G_M35244_IG27
mov edx, edi
- mov rbp, gword ptr [rcx+8*rdx+0x10] - jmp SHORT G_M35244_IG17 - ;; size=31 bbWeight=1.08 PerfScore 15.45 -G_M35244_IG14: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx rbp] - mov rsi, gword ptr [rbx+0x08]
+ mov rsi, gword ptr [rcx+8*rdx+0x10]
; gcrRegs +[rsi]
- test rsi, rsi - je SHORT G_M35244_IG19 - ;; size=9 bbWeight=2.99 PerfScore 9.72 -G_M35244_IG15: ; bbWeight=2.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - mov rdx, rsi - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[rdx] +[rax] - ; gcr arg pop 0 - test rax, rax - je G_M35244_IG05 - ;; size=27 bbWeight=2.46 PerfScore 6.77 -G_M35244_IG16: ; bbWeight=0.90, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref - mov edi, dword ptr [rax+0x10] - jmp G_M35244_IG06 - ;; size=8 bbWeight=0.90 PerfScore 3.58 -G_M35244_IG17: ; bbWeight=2.99, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rsi] +[rbp] - movzx rcx, byte ptr [rbp+0x2E] - cmp ecx, 24 - je SHORT G_M35244_IG29 - ;; size=9 bbWeight=2.99 PerfScore 9.72 -G_M35244_IG18: ; bbWeight=2.97, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M35244_IG21 - ;; size=2 bbWeight=2.97 PerfScore 5.94 -G_M35244_IG19: ; bbWeight=0.53, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp] +[rsi] - xor edi, edi - jmp G_M35244_IG06 - ;; size=7 bbWeight=0.53 PerfScore 1.19 -G_M35244_IG20: ; bbWeight=2.99, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx rsi] +[rbp] - mov rbx, rbp
+ jmp SHORT G_M35244_IG15 + ;; size=23 bbWeight=1.08 PerfScore 15.45 +G_M35244_IG21: ; bbWeight=2.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx rbx rbp] + mov rbx, rsi
; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=2.99 PerfScore 6.73
-G_M35244_IG21: ; bbWeight=2.97, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG29
+ jbe SHORT G_M35244_IG31
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG29
+ ja SHORT G_M35244_IG21
;; size=16 bbWeight=2.97 PerfScore 9.66
-G_M35244_IG22: ; bbWeight=2.99, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbx] - jmp SHORT G_M35244_IG20 - ;; size=2 bbWeight=2.99 PerfScore 5.98 -G_M35244_IG23: ; bbWeight=1.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode - cmp qword ptr [rbp], rcx - je G_M35244_IG09 - ;; size=20 bbWeight=1.50 PerfScore 6.36 -G_M35244_IG24: ; bbWeight=0.75, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp] - jmp G_M35244_IG10 - ;; size=5 bbWeight=0.75 PerfScore 1.50 -G_M35244_IG25: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG23: ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M35244_IG31 + ;; size=2 bbWeight=0.02 PerfScore 0.04 +G_M35244_IG24: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov rcx, rbx ; gcrRegs +[rcx] ...

-6 (-1.47%) : 100166.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Collections.Generic.HashSet`1[System.Canon]):this (Tier1)

@@ -53,12 +53,12 @@ G_M417_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 { call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M417_IG14
+ je G_M417_IG13
mov ebp, dword ptr [rsi+0x28] cmp ebp, 1 jne SHORT G_M417_IG09 ;; size=21 bbWeight=1 PerfScore 5.50
-G_M417_IG03: ; bbWeight=0.57, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M417_IG03: ; bbWeight=0.57, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rdx, gword ptr [rsi+0x08] ; gcrRegs +[rdx] @@ -69,26 +69,16 @@ G_M417_IG03: ; bbWeight=0.57, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {} call [<unknown method>] ; gcrRegs -[rcx rdx rbx] ; gcr arg pop 0
- ;; size=20 bbWeight=0.57 PerfScore 4.97 -G_M417_IG04: ; bbWeight=0.69, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - nop - ;; size=1 bbWeight=0.69 PerfScore 0.17 -G_M417_IG05: ; bbWeight=0.69, epilog, nogc, extend - add rsp, 72 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.69 PerfScore 2.24 -G_M417_IG06: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M417_IG07 + ;; size=22 bbWeight=0.57 PerfScore 6.11 +G_M417_IG04: ; bbWeight=0.10, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi] mov rbp, rsi ; gcrRegs +[rbp] cmp dword ptr [rsi+0x28], 2
- jne SHORT G_M417_IG08
+ jne SHORT G_M417_IG06
;; size=9 bbWeight=0.10 PerfScore 0.44
-G_M417_IG07: ; bbWeight=0.78, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.78, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x10] ; gcrRegs +[rcx] mov rdx, rdi @@ -101,9 +91,9 @@ G_M417_IG07: ; bbWeight=0.78, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs ; gcr arg pop 0 mov rbp, gword ptr [rbp+0x18] cmp dword ptr [rbp+0x28], 2
- je SHORT G_M417_IG07
+ je SHORT G_M417_IG05
;; size=28 bbWeight=0.78 PerfScore 11.25
-G_M417_IG08: ; bbWeight=0.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M417_IG06: ; bbWeight=0.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, rbp ; gcrRegs +[rcx] mov rdx, rdi @@ -113,12 +103,22 @@ G_M417_IG08: ; bbWeight=0.10, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs call [System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this] ; gcrRegs -[rcx rdx rbx rbp rdi r8] ; gcr arg pop 0
- jmp SHORT G_M417_IG04 - ;; size=17 bbWeight=0.10 PerfScore 0.60 -G_M417_IG09: ; bbWeight=0.43, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=15 bbWeight=0.10 PerfScore 0.39 +G_M417_IG07: ; bbWeight=0.69, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0.69 PerfScore 0.17 +G_M417_IG08: ; bbWeight=0.69, epilog, nogc, extend + add rsp, 72 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0.69 PerfScore 2.24 +G_M417_IG09: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rdi] cmp ebp, 17
- ja SHORT G_M417_IG04
+ ja SHORT G_M417_IG07
mov ecx, ebp lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rcx] @@ -137,9 +137,9 @@ G_M417_IG10: ; bbWeight=0.02, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=000 call [System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this] ; gcrRegs -[rcx rdx rbx rdi r8] ; gcr arg pop 0
- jmp SHORT G_M417_IG04
+ jmp SHORT G_M417_IG07
;; size=20 bbWeight=0.02 PerfScore 0.17
-G_M417_IG11: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M417_IG11: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi] mov rcx, gword ptr [rsi+0x10] ; gcrRegs +[rcx] @@ -161,22 +161,9 @@ G_M417_IG11: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 { call [System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this] ; gcrRegs -[rcx rdx rbx rdi r8] ; gcr arg pop 0
- jmp G_M417_IG04 - ;; size=41 bbWeight=0 PerfScore 0.00 -G_M417_IG12: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rdi] - mov rdx, gword ptr [rdi+0x80] - ; gcrRegs +[rdx] - cmp byte ptr [rbx], bl - lea r8, [rsp+0x28] - mov rcx, rbx - ; gcrRegs +[rcx] - call [<unknown method>] - ; gcrRegs -[rcx rdx rbx rdi] - ; gcr arg pop 0 - jmp G_M417_IG04 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M417_IG13: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M417_IG07 + ;; size=38 bbWeight=0 PerfScore 0.00 +G_M417_IG12: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi] mov rdx, gword ptr [rdi+0x88] ; gcrRegs +[rdx] @@ -187,25 +174,25 @@ G_M417_IG13: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 { call [<unknown method>] ; gcrRegs -[rcx rdx rbx rdi] ; gcr arg pop 0
- jmp G_M417_IG04 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M417_IG14: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M417_IG07 + ;; size=25 bbWeight=0 PerfScore 0.00 +G_M417_IG13: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi] mov rcx, qword ptr [rsi] mov rdx, qword ptr [rcx+0x38] mov rdx, qword ptr [rdx] mov rdx, qword ptr [rdx+0x40] test rdx, rdx
- je SHORT G_M417_IG15 - jmp SHORT G_M417_IG16
+ je SHORT G_M417_IG14 + jmp SHORT G_M417_IG15
;; size=21 bbWeight=0 PerfScore 0.00
-G_M417_IG15: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M417_IG14: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rdx, rax ;; size=18 bbWeight=0 PerfScore 0.00
-G_M417_IG16: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M417_IG15: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdx call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -225,17 +212,17 @@ G_M417_IG16: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 { mov rdx, qword ptr [rdx] mov rax, qword ptr [rdx+0x48] test rax, rax
- je SHORT G_M417_IG17
+ je SHORT G_M417_IG16
mov rcx, rax
- jmp SHORT G_M417_IG18
+ jmp SHORT G_M417_IG17
;; size=57 bbWeight=0 PerfScore 0.00
-G_M417_IG17: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M417_IG16: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS ; gcr arg pop 0 mov rcx, rax ;; size=18 bbWeight=0 PerfScore 0.00
-G_M417_IG18: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
+G_M417_IG17: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, rbp ; gcrRegs +[rdx] mov r8, rdi @@ -245,29 +232,42 @@ G_M417_IG18: ; bbWeight=0, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=00 call [System.Threading.StackHelper:CallOnEmptyStack[System.__Canon,System.__Canon](System.Action`2[System.__Canon,System.__Canon],System.__Canon,System.__Canon)] ; gcrRegs -[rdx rbx rbp rdi r8-r9] ; gcr arg pop 0
- jmp G_M417_IG04
+ jmp G_M417_IG07
;; size=20 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+G_M417_IG18: ; bbWeight=0, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx rdi] + mov rdx, gword ptr [rdi+0x80] + ; gcrRegs +[rdx] + cmp byte ptr [rbx], bl + lea r8, [rsp+0x28] + mov rcx, rbx + ; gcrRegs +[rcx] + call [<unknown method>] + ; gcrRegs -[rcx rdx rbx rdi] + ; gcr arg pop 0 + jmp G_M417_IG07 + ;; size=28 bbWeight=0 PerfScore 0.00 +RWD00 dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG06 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02
dd G_M417_IG10 - G_M417_IG02 dd G_M417_IG11 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG13 - G_M417_IG02 - dd G_M417_IG13 - G_M417_IG02 - dd G_M417_IG13 - G_M417_IG02 - dd G_M417_IG13 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG12 - G_M417_IG02 dd G_M417_IG12 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG12 - G_M417_IG02 + dd G_M417_IG12 - G_M417_IG02 + dd G_M417_IG18 - G_M417_IG02 + dd G_M417_IG18 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG10 - G_M417_IG02
-; Total bytes of code 407, prolog size 13, PerfScore 34.47, instruction count 113, allocated bytes for code 407 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
+; Total bytes of code 401, prolog size 13, PerfScore 35.40, instruction count 113, allocated bytes for code 401 (MethodHash=dd76fe5e) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+15 (+3.01%) : 89243.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -50,36 +50,36 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG09
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG09 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=3.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5 jbe G_M35244_IG22 ;; size=16 bbWeight=3.99 PerfScore 14.97
-G_M35244_IG04: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG09
+ ja G_M35244_IG25
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2.99 PerfScore 22.44
+ ;; size=36 bbWeight=2.99 PerfScore 22.44
G_M35244_IG05: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG08
+ je SHORT G_M35244_IG12
;; size=9 bbWeight=2.99 PerfScore 9.73 G_M35244_IG06: ; bbWeight=2.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdx, rsi @@ -89,43 +89,38 @@ G_M35244_IG06: ; bbWeight=2.48, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG10
+ je SHORT G_M35244_IG08
;; size=23 bbWeight=2.48 PerfScore 6.81 G_M35244_IG07: ; bbWeight=0.89, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG11
+ jmp SHORT G_M35244_IG09
;; size=5 bbWeight=0.89 PerfScore 3.57
-G_M35244_IG08: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=1.58, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- xor edi, edi - jmp SHORT G_M35244_IG11 - ;; size=4 bbWeight=0.52 PerfScore 1.16 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rsi] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.00 PerfScore 0.01 -G_M35244_IG10: ; bbWeight=1.58, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi]
mov edi, 1 ;; size=5 bbWeight=1.58 PerfScore 0.40
-G_M35244_IG11: ; bbWeight=2.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
dec edi mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp je SHORT G_M35244_IG13 ;; size=10 bbWeight=2.99 PerfScore 5.24
-G_M35244_IG12: ; bbWeight=1.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- jne SHORT G_M35244_IG14
+ je SHORT G_M35244_IG13
;; size=16 bbWeight=1.50 PerfScore 6.36
+G_M35244_IG11: ; bbWeight=0.75, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbp] + jmp SHORT G_M35244_IG14 + ;; size=2 bbWeight=0.75 PerfScore 1.50 +G_M35244_IG12: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + xor edi, edi + jmp SHORT G_M35244_IG09 + ;; size=4 bbWeight=0.52 PerfScore 1.16
G_M35244_IG13: ; bbWeight=2.99, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbp]
test rbp, rbp jne SHORT G_M35244_IG18 ;; size=5 bbWeight=2.99 PerfScore 3.74 @@ -154,7 +149,7 @@ G_M35244_IG16: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 G_M35244_IG17: ; bbWeight=1.09, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG33
+ jae G_M35244_IG35
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08] @@ -173,15 +168,15 @@ G_M35244_IG19: ; bbWeight=2.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rbp] movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je SHORT G_M35244_IG26
+ je SHORT G_M35244_IG28
;; size=9 bbWeight=2.99 PerfScore 9.73 G_M35244_IG20: ; bbWeight=2.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG28
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG28
;; size=16 bbWeight=2.98 PerfScore 9.67 G_M35244_IG21: ; bbWeight=2.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -208,7 +203,18 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -220,16 +226,16 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rsi] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG29
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x2E], 32 je SHORT G_M35244_IG21 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -262,7 +268,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG21 ;; size=69 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -271,9 +277,9 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov esi, eax mov edi, 1
- jmp SHORT G_M35244_IG30
+ jmp SHORT G_M35244_IG32
;; size=18 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov edx, edi @@ -288,20 +294,20 @@ G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc edi ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- jl SHORT G_M35244_IG29
+ jl SHORT G_M35244_IG31
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG09 - jmp G_M35244_IG25
+ je G_M35244_IG25 + jmp G_M35244_IG27
;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x20] mov dword ptr [rbx+0x24], ecx ;; size=6 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x24], 1
- je G_M35244_IG25
+ je G_M35244_IG27
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -310,29 +316,29 @@ G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG09
+ je G_M35244_IG25
jmp G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG28 - G_M35244_IG02
+RWD00 dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG32 - G_M35244_IG02 - dd G_M35244_IG31 - G_M35244_IG02
+ dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG33 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG09 - G_M35244_IG02
dd G_M35244_IG25 - G_M35244_IG02
- dd G_M35244_IG25 - G_M35244_IG02 - dd G_M35244_IG25 - G_M35244_IG02 - dd G_M35244_IG28 - G_M35244_IG02 - dd G_M35244_IG28 - G_M35244_IG02
...

+15 (+3.01%) : 101887.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -50,36 +50,36 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG09
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG09 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=4.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5 jbe G_M35244_IG22 ;; size=16 bbWeight=4.05 PerfScore 15.18
-G_M35244_IG04: ; bbWeight=3.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=3.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG09
+ ja G_M35244_IG25
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=3.05 PerfScore 22.86
+ ;; size=36 bbWeight=3.05 PerfScore 22.86
G_M35244_IG05: ; bbWeight=3.05, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG08
+ je SHORT G_M35244_IG12
;; size=9 bbWeight=3.05 PerfScore 9.90 G_M35244_IG06: ; bbWeight=2.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdx, rsi @@ -89,43 +89,38 @@ G_M35244_IG06: ; bbWeight=2.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG10
+ je SHORT G_M35244_IG08
;; size=23 bbWeight=2.52 PerfScore 6.94 G_M35244_IG07: ; bbWeight=0.89, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz mov edi, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG11
+ jmp SHORT G_M35244_IG09
;; size=5 bbWeight=0.89 PerfScore 3.57
-G_M35244_IG08: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=1.63, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- xor edi, edi - jmp SHORT G_M35244_IG11 - ;; size=4 bbWeight=0.52 PerfScore 1.18 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rsi] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.00 PerfScore 0.00 -G_M35244_IG10: ; bbWeight=1.63, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi]
mov edi, 1 ;; size=5 bbWeight=1.63 PerfScore 0.41
-G_M35244_IG11: ; bbWeight=3.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=3.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
dec edi mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp je SHORT G_M35244_IG13 ;; size=10 bbWeight=3.05 PerfScore 5.33
-G_M35244_IG12: ; bbWeight=1.52, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.52, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- jne SHORT G_M35244_IG14
+ je SHORT G_M35244_IG13
;; size=16 bbWeight=1.52 PerfScore 6.48
+G_M35244_IG11: ; bbWeight=0.76, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbp] + jmp SHORT G_M35244_IG14 + ;; size=2 bbWeight=0.76 PerfScore 1.52 +G_M35244_IG12: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + xor edi, edi + jmp SHORT G_M35244_IG09 + ;; size=4 bbWeight=0.52 PerfScore 1.18
G_M35244_IG13: ; bbWeight=3.05, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbp]
test rbp, rbp jne SHORT G_M35244_IG18 ;; size=5 bbWeight=3.05 PerfScore 3.81 @@ -154,7 +149,7 @@ G_M35244_IG16: ; bbWeight=0.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 G_M35244_IG17: ; bbWeight=1.11, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG33
+ jae G_M35244_IG35
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08] @@ -173,15 +168,15 @@ G_M35244_IG19: ; bbWeight=3.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rbp] movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je SHORT G_M35244_IG26
+ je SHORT G_M35244_IG28
;; size=9 bbWeight=3.05 PerfScore 9.90 G_M35244_IG20: ; bbWeight=2.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG28
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG28
;; size=16 bbWeight=2.99 PerfScore 9.71 G_M35244_IG21: ; bbWeight=3.05, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -208,7 +203,18 @@ G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -220,16 +226,16 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rsi] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG29
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x2E], 32 je SHORT G_M35244_IG21 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -262,7 +268,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG21 ;; size=69 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -271,9 +277,9 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov esi, eax mov edi, 1
- jmp SHORT G_M35244_IG30
+ jmp SHORT G_M35244_IG32
;; size=18 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov edx, edi @@ -288,20 +294,20 @@ G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc edi ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- jl SHORT G_M35244_IG29
+ jl SHORT G_M35244_IG31
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG09 - jmp G_M35244_IG25
+ je G_M35244_IG25 + jmp G_M35244_IG27
;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rbx+0x20] mov dword ptr [rbx+0x24], ecx ;; size=6 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp dword ptr [rbx+0x24], 1
- je G_M35244_IG25
+ je G_M35244_IG27
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -310,29 +316,29 @@ G_M35244_IG32: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG09
+ je G_M35244_IG25
jmp G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG28 - G_M35244_IG02
+RWD00 dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG32 - G_M35244_IG02 - dd G_M35244_IG31 - G_M35244_IG02
+ dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG33 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG09 - G_M35244_IG02
dd G_M35244_IG25 - G_M35244_IG02
- dd G_M35244_IG25 - G_M35244_IG02 - dd G_M35244_IG25 - G_M35244_IG02 - dd G_M35244_IG28 - G_M35244_IG02 - dd G_M35244_IG28 - G_M35244_IG02
...

+21 (+4.15%) : 93947.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -50,37 +50,37 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG10
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG10 - ;; size=18 bbWeight=1 PerfScore 6.25
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25
G_M35244_IG03: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG22
+ jbe G_M35244_IG21
;; size=16 bbWeight=2.99 PerfScore 11.20
-G_M35244_IG04: ; bbWeight=2.95, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.95, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG10
+ ja G_M35244_IG25
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2.95 PerfScore 22.14 -G_M35244_IG05: ; bbWeight=1.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=2.95 PerfScore 22.14 +G_M35244_IG05: ; bbWeight=1.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- jne G_M35244_IG18 - ;; size=13 bbWeight=1.99 PerfScore 6.46
+ jne SHORT G_M35244_IG10 + ;; size=9 bbWeight=1.99 PerfScore 6.46
G_M35244_IG06: ; bbWeight=0.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref xor edi, edi ;; size=2 bbWeight=0.97 PerfScore 0.24 @@ -89,44 +89,76 @@ G_M35244_IG07: ; bbWeight=1.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG11
+ je SHORT G_M35244_IG12
;; size=10 bbWeight=1.99 PerfScore 3.48 G_M35244_IG08: ; bbWeight=0.99, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- je SHORT G_M35244_IG11
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=0.99 PerfScore 4.22 G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG12
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 0.99
-G_M35244_IG10: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rsi] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.02 PerfScore 0.06 -G_M35244_IG11: ; bbWeight=1.99, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx rbp rsi]
+G_M35244_IG10: ; bbWeight=1.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, rsi + ; gcrRegs +[rdx] + mov rcx, 0xD1FFAB1E ; <unknown class> + call CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0 + test rax, rax + je SHORT G_M35244_IG14 + ;; size=23 bbWeight=1.02 PerfScore 2.80 +G_M35244_IG11: ; bbWeight=0.76, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz + mov edi, dword ptr [rax+0x10] + jmp SHORT G_M35244_IG07 + ;; size=5 bbWeight=0.76 PerfScore 3.05 +G_M35244_IG12: ; bbWeight=1.99, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] +[rbp]
test rbp, rbp
- jne SHORT G_M35244_IG20
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=1.99 PerfScore 2.48
-G_M35244_IG12: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.44, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + mov rsi, rbp + ; gcrRegs +[rsi] + jmp SHORT G_M35244_IG15 + ;; size=5 bbWeight=0.44 PerfScore 0.99 +G_M35244_IG14: ; bbWeight=0.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
+ mov edi, 1 + jmp SHORT G_M35244_IG07 + ;; size=7 bbWeight=0.26 PerfScore 0.58 +G_M35244_IG15: ; bbWeight=1.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + movzx rcx, byte ptr [rsi+0x2E] + cmp ecx, 24 + je G_M35244_IG28 + lea edx, [rcx-0x1A] + cmp edx, 1 + jbe G_M35244_IG28 + add ecx, -33 + cmp ecx, 1 + jbe G_M35244_IG28 + ;; size=37 bbWeight=1.99 PerfScore 12.92 +G_M35244_IG16: ; bbWeight=1.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + mov rbx, rsi + ; gcrRegs +[rbx] + jmp G_M35244_IG03 + ;; size=8 bbWeight=1.99 PerfScore 4.47 +G_M35244_IG17: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.55 PerfScore 2.32
-G_M35244_IG13: ; bbWeight=0.77, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.77, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbp], rcx
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.77 PerfScore 3.29
-G_M35244_IG14: ; bbWeight=0.39, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.39, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -136,67 +168,25 @@ G_M35244_IG14: ; bbWeight=0.39, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=11 bbWeight=0.39 PerfScore 0.58
-G_M35244_IG15: ; bbWeight=1.55, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.55, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae SHORT G_M35244_IG24
+ jae SHORT G_M35244_IG23
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M35244_IG25
+ jae SHORT G_M35244_IG24
mov edx, edi mov rsi, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[rsi]
- ;; size=21 bbWeight=1.55 PerfScore 18.96 -G_M35244_IG16: ; bbWeight=1.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx rbp] - movzx rcx, byte ptr [rsi+0x2E] - cmp ecx, 24 - je SHORT G_M35244_IG27 - lea edx, [rcx-0x1A] - cmp edx, 1 - jbe SHORT G_M35244_IG27 - add ecx, -33 - cmp ecx, 1 - jbe SHORT G_M35244_IG27 - ;; size=25 bbWeight=1.99 PerfScore 12.92 -G_M35244_IG17: ; bbWeight=1.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - mov rbx, rsi - ; gcrRegs +[rbx] - jmp G_M35244_IG03 - ;; size=8 bbWeight=1.99 PerfScore 4.47 -G_M35244_IG18: ; bbWeight=1.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - mov rdx, rsi - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_ISINSTANCEOFCLASS - ; gcrRegs -[rdx] +[rax] - ; gcr arg pop 0 - test rax, rax - je SHORT G_M35244_IG21 - ;; size=23 bbWeight=1.02 PerfScore 2.80 -G_M35244_IG19: ; bbWeight=0.76, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref - mov edi, dword ptr [rax+0x10] - jmp G_M35244_IG07 - ;; size=8 bbWeight=0.76 PerfScore 3.05 -G_M35244_IG20: ; bbWeight=0.44, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rsi] +[rbp] - mov rsi, rbp - ; gcrRegs +[rsi] - jmp SHORT G_M35244_IG16 - ;; size=5 bbWeight=0.44 PerfScore 0.99 -G_M35244_IG21: ; bbWeight=0.26, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp] - mov edi, 1 - jmp G_M35244_IG07 - ;; size=10 bbWeight=0.26 PerfScore 0.58 -G_M35244_IG22: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi]
+ jmp SHORT G_M35244_IG15 + ;; size=23 bbWeight=1.55 PerfScore 22.06 +G_M35244_IG21: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx rbp rsi]
mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=0.04 PerfScore 0.01
-G_M35244_IG23: ; bbWeight=0.04, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=0.04, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -205,17 +195,28 @@ G_M35244_IG23: ; bbWeight=0.04, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=0.04 PerfScore 0.15
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0 PerfScore 0.00
...

coreclr_tests.run.windows.x64.checked.mch

-4 (-0.51%) : 449054.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

@@ -102,7 +102,7 @@ G_M19663_IG06: ; bbWeight=98.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR mov eax, ecx movzx r12, byte ptr [r15+rax+0x10] cmp r12d, 3
- ja SHORT G_M19663_IG09
+ ja SHORT G_M19663_IG08
mov edx, r12d lea r8, [reloc @RWD00] mov r8d, dword ptr [r8+4*rdx] @@ -110,7 +110,7 @@ G_M19663_IG06: ; bbWeight=98.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR add r8, r9 jmp r8 ;; size=71 bbWeight=98.96 PerfScore 1533.89
-G_M19663_IG07: ; bbWeight=30.80, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M19663_IG07: ; bbWeight=30.80, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
mov eax, r14d shl rax, 4 lea rcx, bword ptr [rbx+rax+0x10] @@ -122,9 +122,16 @@ G_M19663_IG07: ; bbWeight=30.80, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR call [EMFloat:MultiplyInternalFPF(byref,byref,byref)] ; byrRegs -[rcx rdx r8] ; gcr arg pop 0
- jmp SHORT G_M19663_IG09 - ;; size=30 bbWeight=30.80 PerfScore 269.51 -G_M19663_IG08: ; bbWeight=18.48, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=30.80 PerfScore 207.91 +G_M19663_IG08: ; bbWeight=98.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz + inc r14d + cmp r14d, ebp + jl SHORT G_M19663_IG06 + ;; size=8 bbWeight=98.96 PerfScore 148.44 +G_M19663_IG09: ; bbWeight=0.04, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref + jmp G_M19663_IG18 + ;; size=5 bbWeight=0.04 PerfScore 0.08 +G_M19663_IG10: ; bbWeight=18.48, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov eax, r14d shl rax, 4 lea rcx, bword ptr [rbx+rax+0x10] @@ -136,15 +143,8 @@ G_M19663_IG08: ; bbWeight=18.48, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR call [EMFloat:DivideInternalFPF(byref,byref,byref)] ; byrRegs -[rcx rdx r8] ; gcr arg pop 0
- ;; size=28 bbWeight=18.48 PerfScore 124.75 -G_M19663_IG09: ; bbWeight=98.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref - inc r14d - cmp r14d, ebp - jl G_M19663_IG06 - ;; size=12 bbWeight=98.96 PerfScore 148.44 -G_M19663_IG10: ; bbWeight=0.04, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref - jmp G_M19663_IG18 - ;; size=5 bbWeight=0.04 PerfScore 0.08
+ jmp SHORT G_M19663_IG08 + ;; size=30 bbWeight=18.48 PerfScore 161.71
G_M19663_IG11: ; bbWeight=24.90, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz mov eax, r14d shl rax, 4 @@ -158,7 +158,7 @@ G_M19663_IG11: ; bbWeight=24.90, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR call [EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref)] ; byrRegs -[rdx r8-r9] ; gcr arg pop 0
- jmp SHORT G_M19663_IG09
+ jmp SHORT G_M19663_IG08
;; size=32 bbWeight=24.90 PerfScore 224.08 G_M19663_IG12: ; bbWeight=24.78, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz mov eax, r14d @@ -173,7 +173,7 @@ G_M19663_IG12: ; bbWeight=24.78, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR call [EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref)] ; byrRegs -[rdx r8-r9] ; gcr arg pop 0
- jmp SHORT G_M19663_IG09
+ jmp SHORT G_M19663_IG08
;; size=35 bbWeight=24.78 PerfScore 223.02 G_M19663_IG13: ; bbWeight=1.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref mov eax, r14d @@ -320,14 +320,14 @@ G_M19663_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref RWD00 dd G_M19663_IG11 - G_M19663_IG02 dd G_M19663_IG12 - G_M19663_IG02 dd G_M19663_IG07 - G_M19663_IG02
- dd G_M19663_IG08 - G_M19663_IG02
+ dd G_M19663_IG10 - G_M19663_IG02
RWD16 dd G_M19663_IG21 - G_M19663_IG02 dd G_M19663_IG22 - G_M19663_IG02 dd G_M19663_IG15 - G_M19663_IG02 dd G_M19663_IG16 - G_M19663_IG02
-; Total bytes of code 784, prolog size 115, PerfScore 2585.71, instruction count 182, allocated bytes for code 784 (MethodHash=0767b330) for method EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
+; Total bytes of code 780, prolog size 115, PerfScore 2561.06, instruction count 182, allocated bytes for code 780 (MethodHash=0767b330) for method EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
; ============================================================ Unwind Info:

+5 (+1.00%) : 314215.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -50,48 +50,38 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG33
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.67 PerfScore 2.17 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG33 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG22
+ jbe G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG33
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2 PerfScore 15.00 -G_M35244_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2 PerfScore 15.00 +G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -99,97 +89,97 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG12
+ je SHORT G_M35244_IG11
;; size=23 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rax+0x10] ;; size=3 bbWeight=1.09 PerfScore 2.18
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] dec edi mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=10 bbWeight=2 PerfScore 3.50
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1 PerfScore 4.25
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG18
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=7 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=2 PerfScore 2.50
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] mov rsi, rbp ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] xor edi, edi
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=4 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je SHORT G_M35244_IG25
+ je SHORT G_M35244_IG24
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG25
+ jbe SHORT G_M35244_IG24
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG25
+ jbe SHORT G_M35244_IG24
;; size=25 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, rsi ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG20
+ je SHORT G_M35244_IG19
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbp], rcx
- jne SHORT G_M35244_IG24
+ jne SHORT G_M35244_IG23
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG32
+ jae G_M35244_IG31
;; size=9 bbWeight=1.28 PerfScore 5.12
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae G_M35244_IG33
+ jae G_M35244_IG32
mov edx, edi mov rsi, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=22 bbWeight=1.28 PerfScore 13.12
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbp rsi] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -198,7 +188,7 @@ G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.25
-G_M35244_IG24: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx] +[rsi] mov rdx, rsi ; gcrRegs +[rdx] @@ -207,18 +197,18 @@ G_M35244_IG24: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=004 ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- jmp SHORT G_M35244_IG20
+ jmp SHORT G_M35244_IG19
;; size=14 bbWeight=0.32 PerfScore 1.76
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbp] +[rsi] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG26
+ je SHORT G_M35244_IG25
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x2E], 32
- je SHORT G_M35244_IG17
+ je SHORT G_M35244_IG16
;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -249,9 +239,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, call [System.Text.RegularExpressions.RegexNode:ReplaceChild(int,System.Text.RegularExpressions.RegexNode):this] ; gcrRegs -[rcx rbx rdi r8] ; gcr arg pop 0
- jmp G_M35244_IG17
+ jmp G_M35244_IG16
;; size=69 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -260,9 +250,9 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov esi, eax mov edi, 1
- jmp SHORT G_M35244_IG29
+ jmp SHORT G_M35244_IG28
;; size=18 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov edx, edi @@ -277,20 +267,20 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ...

+5 (+1.00%) : 437997.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -50,48 +50,38 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG32
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.67 PerfScore 2.17 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG32 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG21
+ jbe G_M35244_IG20
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG32
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2 PerfScore 15.00 -G_M35244_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2 PerfScore 15.00 +G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -99,95 +89,95 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG12
+ je SHORT G_M35244_IG11
;; size=23 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rax+0x10] ;; size=3 bbWeight=1.09 PerfScore 2.18
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] dec edi mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=10 bbWeight=2 PerfScore 3.50
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1 PerfScore 4.25
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG18
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=7 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=2 PerfScore 2.50
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] mov rsi, rbp ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] xor edi, edi
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=4 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je SHORT G_M35244_IG24
+ je SHORT G_M35244_IG23
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG24
+ jbe SHORT G_M35244_IG23
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG24
+ jbe SHORT G_M35244_IG23
;; size=25 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, rsi ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG20
+ je SHORT G_M35244_IG19
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbp], rcx
- jne SHORT G_M35244_IG23
+ jne SHORT G_M35244_IG22
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG31
+ jae G_M35244_IG30
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae G_M35244_IG32
+ jae G_M35244_IG31
mov edx, edi mov rsi, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=31 bbWeight=1.28 PerfScore 18.24
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbp rsi] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG21: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -196,7 +186,7 @@ G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.25
-G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35244_IG22: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx] +[rsi] mov rdx, rsi ; gcrRegs +[rdx] @@ -205,18 +195,18 @@ G_M35244_IG23: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=004 ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- jmp SHORT G_M35244_IG20
+ jmp SHORT G_M35244_IG19
;; size=13 bbWeight=0.32 PerfScore 1.12
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbp] +[rsi] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG25
+ je SHORT G_M35244_IG24
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x2E], 32
- je SHORT G_M35244_IG17
+ je SHORT G_M35244_IG16
;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -247,9 +237,9 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, call [System.Text.RegularExpressions.RegexNode:ReplaceChild(int,System.Text.RegularExpressions.RegexNode):this] ; gcrRegs -[rcx rbx rdi r8] ; gcr arg pop 0
- jmp G_M35244_IG17
+ jmp G_M35244_IG16
;; size=69 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -258,9 +248,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov esi, eax mov edi, 1
- jmp SHORT G_M35244_IG28
+ jmp SHORT G_M35244_IG27
;; size=18 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov edx, edi @@ -275,20 +265,20 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc edi ;; size=24 bbWeight=0 PerfScore 0.00 ...

+21 (+4.14%) : 583925.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -50,69 +50,59 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.67 PerfScore 2.17 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG22
+ jbe G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG25
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2 PerfScore 15.00 -G_M35244_IG06: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=2 PerfScore 15.00 +G_M35244_IG05: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi] mov edi, 1 ;; size=5 bbWeight=0.45 PerfScore 0.11
-G_M35244_IG07: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
dec edi mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=10 bbWeight=2 PerfScore 3.50
-G_M35244_IG08: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1 PerfScore 4.25
-G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG18
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35244_IG10: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=9 bbWeight=2.00 PerfScore 6.50
-G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -120,57 +110,57 @@ G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG06
+ je SHORT G_M35244_IG05
;; size=23 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG12: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG07
+ jmp SHORT G_M35244_IG06
;; size=5 bbWeight=1.09 PerfScore 4.36
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rbp] test rbp, rbp
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=2 PerfScore 2.50
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] mov rsi, rbp ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] xor edi, edi
- jmp SHORT G_M35244_IG07
+ jmp SHORT G_M35244_IG06
;; size=4 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je G_M35244_IG27
+ je G_M35244_IG28
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG27
+ jbe G_M35244_IG28
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG27 - ;; size=29 bbWeight=2 PerfScore 13.00 -G_M35244_IG17: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ jbe G_M35244_IG28 + ;; size=37 bbWeight=2 PerfScore 13.00 +G_M35244_IG16: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, rsi ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbp], rcx
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -180,25 +170,25 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=12 bbWeight=0.32 PerfScore 1.12
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae SHORT G_M35244_IG24
+ jae SHORT G_M35244_IG23
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M35244_IG25
+ jae SHORT G_M35244_IG24
mov edx, edi mov rsi, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=23 bbWeight=1.28 PerfScore 18.24
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbp rsi] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -207,17 +197,28 @@ G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.25
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -227,18 +228,18 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rsi] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG28
+ je SHORT G_M35244_IG29
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x2E], 32
- je G_M35244_IG17
+ je G_M35244_IG16
...

+21 (+4.14%) : 463039.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -50,69 +50,59 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.67 PerfScore 2.17 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG22
+ jbe G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG25
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2 PerfScore 15.00 -G_M35244_IG06: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=2 PerfScore 15.00 +G_M35244_IG05: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi] mov edi, 1 ;; size=5 bbWeight=0.45 PerfScore 0.11
-G_M35244_IG07: ; bbWeight=2.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=2.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
dec edi mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=10 bbWeight=2.00 PerfScore 3.50
-G_M35244_IG08: ; bbWeight=1.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1.00 PerfScore 4.25
-G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG18
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35244_IG10: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -120,57 +110,57 @@ G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG06
+ je SHORT G_M35244_IG05
;; size=23 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG12: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG07
+ jmp SHORT G_M35244_IG06
;; size=5 bbWeight=1.09 PerfScore 4.36
-G_M35244_IG13: ; bbWeight=2.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rbp] test rbp, rbp
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=2.00 PerfScore 2.50
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] mov rsi, rbp ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] xor edi, edi
- jmp SHORT G_M35244_IG07
+ jmp SHORT G_M35244_IG06
;; size=4 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je G_M35244_IG27
+ je G_M35244_IG28
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG27
+ jbe G_M35244_IG28
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG27 - ;; size=29 bbWeight=2 PerfScore 13.00 -G_M35244_IG17: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ jbe G_M35244_IG28 + ;; size=37 bbWeight=2 PerfScore 13.00 +G_M35244_IG16: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, rsi ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbp], rcx
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -180,25 +170,25 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=12 bbWeight=0.32 PerfScore 1.12
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae SHORT G_M35244_IG24
+ jae SHORT G_M35244_IG23
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M35244_IG25
+ jae SHORT G_M35244_IG24
mov edx, edi mov rsi, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=23 bbWeight=1.28 PerfScore 18.24
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbp rsi] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -207,17 +197,28 @@ G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.25
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -227,18 +228,18 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rsi] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG28
+ je SHORT G_M35244_IG29
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x2E], 32
- je G_M35244_IG17
+ je G_M35244_IG16
...

+21 (+4.14%) : 463732.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -50,48 +50,38 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=0.67 PerfScore 2.17 -G_M35244_IG04: ; bbWeight=3, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG25 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG22
+ jbe G_M35244_IG21
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG25
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2 PerfScore 15.00 -G_M35244_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2 PerfScore 15.00 +G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -99,77 +89,77 @@ G_M35244_IG07: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG12
+ je SHORT G_M35244_IG11
;; size=23 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG08: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rax+0x10] ;; size=3 bbWeight=1.09 PerfScore 2.18
-G_M35244_IG09: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] dec edi mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=10 bbWeight=2 PerfScore 3.50
-G_M35244_IG10: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1 PerfScore 4.25
-G_M35244_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG18
+ jmp SHORT G_M35244_IG17
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M35244_IG12: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, 1
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=7 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG13: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=5 bbWeight=2 PerfScore 2.50
-G_M35244_IG14: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] mov rsi, rbp ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG15: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] xor edi, edi
- jmp SHORT G_M35244_IG09
+ jmp SHORT G_M35244_IG08
;; size=4 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je G_M35244_IG27
+ je G_M35244_IG28
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG27
+ jbe G_M35244_IG28
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG27 - ;; size=29 bbWeight=2 PerfScore 13.00 -G_M35244_IG17: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ jbe G_M35244_IG28 + ;; size=37 bbWeight=2 PerfScore 13.00 +G_M35244_IG16: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, rsi ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG19: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbp], rcx
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -179,25 +169,25 @@ G_M35244_IG20: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=12 bbWeight=0.32 PerfScore 1.12
-G_M35244_IG21: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae SHORT G_M35244_IG24
+ jae SHORT G_M35244_IG23
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M35244_IG25
+ jae SHORT G_M35244_IG24
mov edx, edi mov rsi, gword ptr [rcx+8*rdx+0x10] ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=23 bbWeight=1.28 PerfScore 18.24
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbp rsi] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -206,17 +196,28 @@ G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=1 PerfScore 4.25
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rbx] call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] ; gcr arg pop 0 int3 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -226,18 +227,18 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=19 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rsi] cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG28
+ je SHORT G_M35244_IG29
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x2E], 32
- je G_M35244_IG17
+ je G_M35244_IG16
;; size=21 bbWeight=0 PerfScore 0.00 ...

libraries_tests.run.windows.x64.Release.mch

-27 (-1.38%) : 428623.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)

@@ -101,10 +101,10 @@ G_M38617_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=37 bbWeight=1 PerfScore 10.50 G_M38617_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz test rbx, rbx
- je G_M38617_IG20
+ je G_M38617_IG38
mov rcx, 0xD1FFAB1E ; System.Xml.Xsl.XmlQueryTypeFactory+SequenceType cmp qword ptr [rsi], rcx
- jne G_M38617_IG21
+ jne G_M38617_IG39
mov rcx, gword ptr [rsi+0x10] ; gcrRegs +[rcx] mov rax, 0xD1FFAB1E ; System.Xml.Xsl.XmlQueryTypeFactory+ItemType @@ -125,9 +125,9 @@ G_M38617_IG04: ; bbWeight=0.10, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0 ;; size=12 bbWeight=0.10 PerfScore 0.73 G_M38617_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref cmp edi, 2
- jg G_M38617_IG23
+ jg G_M38617_IG14
cmp edi, 1
- jne G_M38617_IG22
+ jne G_M38617_IG13
mov rcx, rbx ; gcrRegs +[rcx] call <unknown method> @@ -142,7 +142,7 @@ G_M38617_IG05: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 mov rcx, 0xD1FFAB1E ; System.Xml.Xsl.XmlQueryTypeFactory+ItemType cmp qword ptr [rax], rcx
- jne G_M38617_IG17
+ jne G_M38617_IG12
;; size=57 bbWeight=1 PerfScore 11.50 G_M38617_IG06: ; bbWeight=0.90, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, byref mov r15d, dword ptr [rax+0x0C] @@ -150,18 +150,18 @@ G_M38617_IG06: ; bbWeight=0.90, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0 G_M38617_IG07: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] cmp r15d, 1
- je G_M38617_IG37
+ je G_M38617_IG35
cmp r15d, 2
- je G_M38617_IG36
+ je G_M38617_IG34
add r15d, -12
- jne G_M38617_IG31
+ jne G_M38617_IG29
;; size=30 bbWeight=1 PerfScore 3.75 G_M38617_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V00} mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] cmp r14, rcx
- je G_M38617_IG34
+ je G_M38617_IG32
mov rcx, 0xD1FFAB1E ; System.Xml.Schema.XmlAtomicValue ; gcrRegs -[rcx] call CORINFO_HELP_NEWSFAST @@ -222,7 +222,7 @@ G_M38617_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4008 { mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] cmp edx, dword ptr [rcx+0x08]
- jge G_M38617_IG35
+ jge G_M38617_IG33
;; size=182 bbWeight=1 PerfScore 30.50 G_M38617_IG09: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -237,81 +237,22 @@ G_M38617_IG09: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rcx r8 r14] ; gcr arg pop 0
- jmp G_M38617_IG18 - ;; size=31 bbWeight=1 PerfScore 9.00 -G_M38617_IG10: ; bbWeight=0, gcVars=0000000000140100 {V00 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rbx] - ; GC ptr vars +{V00 V06 V08 V09 V18 V20} - jmp SHORT G_M38617_IG12 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M38617_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, gword ptr [rbp-0x38] - ; gcrRegs +[rcx] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rcx] +[rax] - ; gcr arg pop 0 - mov rcx, rax - ; gcrRegs +[rcx] - call [System.Xml.Xsl.Runtime.XmlQueryRuntime:EnsureNavigator(System.Object):System.Xml.XPath.XPathNavigator] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - mov rcx, gword ptr [rbp-0x30] - ; gcrRegs +[rcx] - call [System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:Add(System.__Canon):this] - ; gcrRegs -[rax rcx rdx] - ; gcr arg pop 0 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M38617_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov rcx, gword ptr [rbp-0x38] - ; gcrRegs +[rcx] - mov r11, 0xD1FFAB1E ; code for <unknown method> - call [r11]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - jne SHORT G_M38617_IG11 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M38617_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, rsp - call G_M38617_IG40 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M38617_IG14: ; bbWeight=0, nogc, extend - nop - ;; size=1 bbWeight=0 PerfScore 0.00 -G_M38617_IG15: ; bbWeight=0, gcVars=0000000000040100 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V08 V09 V18 V20} - mov rcx, gword ptr [rbp-0x30] - ; gcrRegs +[rcx] - mov rbx, rcx - ; gcrRegs +[rbx] - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M38617_IG16: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rcx] - ; GC ptr vars -{V06} - mov rdx, rbx - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; System.Xml.Xsl.Runtime.XmlQueryNodeSequence - call CORINFO_HELP_CHKCASTCLASS - ; gcrRegs -[rdx rbx] +[rax] - ; gcr arg pop 0 - mov rcx, rax - ; gcrRegs +[rcx] - mov rax, gword ptr [rbp+0x10] - mov rdx, gword ptr [rax+0x68] - ; gcrRegs +[rdx] - cmp dword ptr [rcx], ecx - ; GC ptr vars -{V00} - call [System.Xml.Xsl.Runtime.XmlQueryNodeSequence:DocOrderDistinct(System.Collections.Generic.IComparer`1[System.Xml.XPath.XPathNavigator]):System.Xml.Xsl.Runtime.XmlQueryNodeSequence:this] - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - jmp SHORT G_M38617_IG18 - ;; size=42 bbWeight=0 PerfScore 0.00 -G_M38617_IG17: ; bbWeight=0.10, gcVars=0000000000000100 {V00}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=26 bbWeight=1 PerfScore 7.00 +G_M38617_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + mov rax, rbx + ; gcrRegs +[rax] + ;; size=3 bbWeight=1 PerfScore 0.25 +G_M38617_IG11: ; bbWeight=1, epilog, nogc, extend + add rsp, 56 + pop rbx + pop rsi + pop rdi + pop r14 + pop r15 + pop rbp + ret + ;; size=13 bbWeight=1 PerfScore 4.25 +G_M38617_IG12: ; bbWeight=0.10, gcVars=0000000000000100 {V00}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r14] ; GC ptr vars +{V00 V08} mov rcx, rax @@ -325,99 +266,34 @@ G_M38617_IG17: ; bbWeight=0.10, gcVars=0000000000000100 {V00}, gcrefRegs= mov r15d, eax jmp G_M38617_IG07 ;; size=21 bbWeight=0.10 PerfScore 0.95
-G_M38617_IG18: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r14] - ; GC ptr vars -{V00 V08} - mov rax, rbx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M38617_IG19: ; bbWeight=1, epilog, nogc, extend - add rsp, 56 - pop rbx - pop rsi - pop rdi - pop r14 - pop r15 - pop rbp - ret - ;; size=13 bbWeight=1 PerfScore 4.25 -G_M38617_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax rbx] - call [<unknown method>] - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rdi, rax - ; gcrRegs +[rdi] - mov rcx, 0xD1FFAB1E ; <unknown class> - mov edx, 1 - call CORINFO_HELP_NEWARR_1_OBJ - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov gword ptr [rbx+0x10], rcx - mov rcx, 0xD1FFAB1E ; <unknown class> - ; gcrRegs -[rcx] - call CORINFO_HELP_NEWSFAST - ; gcr arg pop 0 - mov r15, rax - ; gcrRegs +[r15] - mov rcx, r15 - ; gcrRegs +[rcx] - mov rdx, rdi - ; gcrRegs +[rdx] - mov r8, rbx - ; gcrRegs +[r8] - call [<unknown method>] - ; gcrRegs -[rax rcx rdx rbx rdi r8] - ; gcr arg pop 0 - mov rcx, r15 - ; gcrRegs +[rcx] - call CORINFO_HELP_THROW - ; gcrRegs -[rcx r15] - ; gcr arg pop 0 - ;; size=87 bbWeight=0 PerfScore 0.00 -G_M38617_IG21: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi] - ; GC ptr vars +{V00 V08} - mov rcx, rsi - ; gcrRegs +[rcx] - mov rax, qword ptr [rsi] - mov rax, qword ptr [rax+0x60] - call [rax+0x38]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - mov edi, eax - jmp G_M38617_IG05 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M38617_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M38617_IG13: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14] +[rsi]
cmp edi, 2
- jne SHORT G_M38617_IG18
+ jne SHORT G_M38617_IG10
mov rcx, rsi ; gcrRegs +[rcx] call [System.Xml.Xsl.XmlQueryType:get_IsSingleton():ubyte:this] ; gcrRegs -[rcx rsi] ; gcr arg pop 0 test eax, eax
- jne G_M38617_IG18 - jmp G_M38617_IG26 - ;; size=27 bbWeight=0 PerfScore 0.00 -G_M38617_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
...

-6 (-0.79%) : 505412.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -13,7 +13,7 @@ ; V01 loc0 [V01,T04] ( 23, 9.78) ref -> rbx class-hnd <System.Text.RegularExpressions.RegexNode> ;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode> ; V03 loc2 [V03,T05] ( 3, 9.22) ubyte -> rax
-; V04 loc3 [V04,T07] ( 4, 7.89) ubyte -> rbp
+; V04 loc3 [V04,T07] ( 4, 7.89) ubyte -> rdi
;* V05 loc4 [V05,T16] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode> ; V07 loc6 [V07,T37] ( 2, 0 ) int -> rsi @@ -47,7 +47,7 @@ ; V35 tmp25 [V35,T27] ( 2, 0.44) int -> rdx "argument with side effect" ; V36 tmp26 [V36,T21] ( 3, 0.79) ref -> rcx "arr expr" ; V37 cse0 [V37,T03] ( 14, 9.80) ref -> rsi multi-def "CSE - aggressive"
-; V38 cse1 [V38,T30] ( 3, 0.33) ref -> r14 "CSE - conservative"
+; V38 cse1 [V38,T30] ( 3, 0.33) ref -> rbp "CSE - conservative"
; V39 rat0 [V39,T24] ( 5, 0.49) ref -> rbx "replacement local" ; V40 rat1 [V40,T34] ( 3, 0.16) long -> rcx "CSE for expectedClsNode" ; V41 rat2 [V41,T06] ( 5, 8.89) ref -> rbp "replacement local" @@ -56,47 +56,35 @@ ; V44 rat5 [V44,T31] ( 3, 0.33) long -> rcx "CSE for expectedClsNode" ; V45 rat6 [V45,T00] ( 3, 16.67) int -> rax "ReplaceWithLclVar is creating a new local variable" ;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push r14
push rdi push rsi push rbp push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 5.50
+ ;; size=11 bbWeight=1 PerfScore 4.50
G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je SHORT G_M35244_IG09
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04
+ jne SHORT G_M35244_IG09
;; size=18 bbWeight=1 PerfScore 6.25
-G_M35244_IG03: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - ret - ;; size=11 bbWeight=1.04 PerfScore 3.89 -G_M35244_IG04: ; bbWeight=3.22, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+G_M35244_IG03: ; bbWeight=3.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5 jbe G_M35244_IG38 ;; size=16 bbWeight=3.22 PerfScore 12.08
-G_M35244_IG05: ; bbWeight=2.78, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.78, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja SHORT G_M35244_IG09
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] @@ -104,13 +92,13 @@ G_M35244_IG05: ; bbWeight=2.78, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, add rcx, rax jmp rcx ;; size=32 bbWeight=2.78 PerfScore 20.83
-G_M35244_IG06: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG09
+ je SHORT G_M35244_IG08
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG07: ; bbWeight=1.40, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.40, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -118,55 +106,81 @@ G_M35244_IG07: ; bbWeight=1.40, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG10
;; size=23 bbWeight=1.40 PerfScore 3.86
-G_M35244_IG08: ; bbWeight=0.68, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=0.68, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG14
+ jmp SHORT G_M35244_IG11
;; size=5 bbWeight=0.68 PerfScore 2.72
-G_M35244_IG09: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] xor edi, edi
- jmp SHORT G_M35244_IG14
+ jmp SHORT G_M35244_IG11
;; size=4 bbWeight=0.60 PerfScore 1.34
-G_M35244_IG10: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG09: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx rsi] + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + ret + ;; size=9 bbWeight=0.13 PerfScore 0.41 +G_M35244_IG10: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx rsi] + mov edi, 1 + ;; size=5 bbWeight=0.72 PerfScore 0.18 +G_M35244_IG11: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + dec edi + mov rbp, rsi + ; gcrRegs +[rbp] + test rbp, rbp + je SHORT G_M35244_IG17 + ;; size=10 bbWeight=2 PerfScore 3.50 +G_M35244_IG12: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz + mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode + cmp qword ptr [rbp], rdx + je SHORT G_M35244_IG17 + ;; size=16 bbWeight=1 PerfScore 4.25 +G_M35244_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp] + jmp G_M35244_IG29 + ;; size=5 bbWeight=0.50 PerfScore 1.00 +G_M35244_IG14: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rbx, rsi test rbx, rbx
- jne G_M35244_IG24
+ jne G_M35244_IG26
;; size=16 bbWeight=0.11 PerfScore 0.39
-G_M35244_IG11: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je SHORT G_M35244_IG16
+ je SHORT G_M35244_IG19
;; size=5 bbWeight=0.11 PerfScore 0.14
-G_M35244_IG12: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=0.11, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- jmp SHORT G_M35244_IG04 - ;; size=2 bbWeight=0.11 PerfScore 0.22 -G_M35244_IG13: ; bbWeight=0.72, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rsi] - mov edi, 1 - ;; size=5 bbWeight=0.72 PerfScore 0.18 -G_M35244_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - dec edi - mov rbp, rsi - ; gcrRegs +[rbp]
+ jmp G_M35244_IG03 + ;; size=5 bbWeight=0.11 PerfScore 0.22 +G_M35244_IG17: ; bbWeight=2, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbp rsi]
test rbp, rbp
- je G_M35244_IG28 - ;; size=14 bbWeight=2 PerfScore 3.50 -G_M35244_IG15: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref - jmp G_M35244_IG27 - ;; size=5 bbWeight=1 PerfScore 2.00 -G_M35244_IG16: ; bbWeight=0.07, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M35244_IG29 + ;; size=9 bbWeight=2 PerfScore 2.50 +G_M35244_IG18: ; bbWeight=0.81, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + mov rsi, rbp + ; gcrRegs +[rsi] + jmp SHORT G_M35244_IG21 + ;; size=5 bbWeight=0.81 PerfScore 1.83 +G_M35244_IG19: ; bbWeight=0.07, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rbp] mov rbx, rsi ; gcrRegs +[rbx] test rbx, rbx
- jne SHORT G_M35244_IG21
+ jne SHORT G_M35244_IG23
;; size=8 bbWeight=0.07 PerfScore 0.10
-G_M35244_IG17: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] cmp dword ptr [rbx+0x10], 0 je G_M35244_IG56 @@ -175,31 +189,26 @@ G_M35244_IG17: ; bbWeight=0.07, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, cmp dword ptr [rdx+0x08], 0 jbe G_M35244_IG57 mov rbx, gword ptr [rdx+0x10]
- jmp SHORT G_M35244_IG12
+ jmp SHORT G_M35244_IG16
;; size=30 bbWeight=0.07 PerfScore 0.92
-G_M35244_IG18: ; bbWeight=0.81, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdx] +[rbp] - mov rsi, rbp - ; gcrRegs +[rsi] - ;; size=3 bbWeight=0.81 PerfScore 0.20 -G_M35244_IG19: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbp] - movzx rbp, byte ptr [rsi+0x2E] - cmp ebp, 24 - je SHORT G_M35244_IG23 - lea ecx, [rbp-0x1A]
+G_M35244_IG21: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdx] +[rsi] + movzx rdi, byte ptr [rsi+0x2E] + cmp edi, 24 + je SHORT G_M35244_IG25 + lea ecx, [rdi-0x1A]
cmp ecx, 1
- jbe SHORT G_M35244_IG23
+ jbe SHORT G_M35244_IG25
;; size=18 bbWeight=2 PerfScore 10.00
-G_M35244_IG20: ; bbWeight=1.89, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=1.89, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
jmp G_M35244_IG36 ;; size=5 bbWeight=1.89 PerfScore 3.78
-G_M35244_IG21: ; bbWeight=0.03, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0.03, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbx], rcx
- je SHORT G_M35244_IG17
+ je SHORT G_M35244_IG20
;; size=15 bbWeight=0.03 PerfScore 0.14
-G_M35244_IG22: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG24: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx] mov rdx, rsi ; gcrRegs +[rdx] @@ -208,42 +217,32 @@ G_M35244_IG22: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- jmp SHORT G_M35244_IG17
...

-6 (-0.54%) : 57077.dasm - Microsoft.CodeAnalysis.ArrayBuilderExtensions:SelectAsArraySystem.Canon,System.Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rsp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6929
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6929
; 6 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -113,7 +113,7 @@ G_M57371_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ; gcrRegs +[rcx] mov ebp, dword ptr [rcx+0x10] cmp ebp, 1
- jne SHORT G_M57371_IG10
+ jne SHORT G_M57371_IG11
;; size=12 bbWeight=1 PerfScore 5.25 G_M57371_IG03: ; bbWeight=0.90, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -125,7 +125,7 @@ G_M57371_IG03: ; bbWeight=0.90, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 ; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Binder+<>c:<.cctor>b__1119_1(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this cmp qword ptr [rdi+0x18], rdx
- jne G_M57371_IG33
+ jne G_M57371_IG35
mov rdx, rax ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol @@ -139,24 +139,34 @@ G_M57371_IG04: ; bbWeight=0.90, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcrRegs -[rax] mov rcx, qword ptr [rbx+0x38] cmp qword ptr [rcx+0x10], 64
- jle SHORT G_M57371_IG09
+ jle SHORT G_M57371_IG07
;; size=11 bbWeight=0.90 PerfScore 5.41 G_M57371_IG05: ; bbWeight=0.72, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz mov rcx, qword ptr [rcx+0x40] test rcx, rcx
- je SHORT G_M57371_IG09
+ je SHORT G_M57371_IG07
;; size=9 bbWeight=0.72 PerfScore 2.34
-G_M57371_IG06: ; bbWeight=0.90, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57371_IG06: ; bbWeight=0.58, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M57371_IG08 + ;; size=2 bbWeight=0.58 PerfScore 1.15 +G_M57371_IG07: ; bbWeight=0.32, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_METHOD + ; gcr arg pop 0 + mov rcx, rax + ;; size=21 bbWeight=0.32 PerfScore 0.57 +G_M57371_IG08: ; bbWeight=0.90, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
mov rdx, r14 ; gcrRegs +[rdx] call [System.Collections.Immutable.ImmutableArray:Create[System.__Canon](System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon]] ; gcrRegs -[rdx r14] +[rax] ; gcr arg pop 0 ;; size=9 bbWeight=0.90 PerfScore 2.93
-G_M57371_IG07: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+G_M57371_IG09: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
nop ;; size=1 bbWeight=1 PerfScore 0.25
-G_M57371_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M57371_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 64 pop rbx pop rbp @@ -167,19 +177,10 @@ G_M57371_IG08: ; bbWeight=1, epilog, nogc, extend pop r15 ret ;; size=15 bbWeight=1 PerfScore 4.75
-G_M57371_IG09: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[r14] - mov rcx, rbx - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - ; gcr arg pop 0 - mov rcx, rax - jmp SHORT G_M57371_IG06 - ;; size=23 bbWeight=0.32 PerfScore 1.22 -G_M57371_IG10: ; bbWeight=0.10, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[r14] +[rsi rdi]
+G_M57371_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rsi rdi]
cmp ebp, 4
- ja G_M57371_IG38
+ ja G_M57371_IG40
mov ecx, ebp lea rdx, [reloc @RWD00] mov edx, dword ptr [rdx+4*rcx] @@ -187,7 +188,7 @@ G_M57371_IG10: ; bbWeight=0.10, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 add rdx, rax jmp rdx ;; size=33 bbWeight=0.10 PerfScore 0.72
-G_M57371_IG11: ; bbWeight=0.08, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+G_M57371_IG12: ; bbWeight=0.08, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi ; gcrRegs +[rcx] xor edx, edx @@ -196,9 +197,9 @@ G_M57371_IG11: ; bbWeight=0.08, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 ; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Binder+<>c:<.cctor>b__1119_1(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this cmp qword ptr [rdi+0x18], rdx
- jne G_M57371_IG19 - ;; size=31 bbWeight=0.08 PerfScore 0.64 -G_M57371_IG12: ; bbWeight=0.05, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0000 {}, byref
+ jne SHORT G_M57371_IG19 + ;; size=27 bbWeight=0.08 PerfScore 0.64 +G_M57371_IG13: ; bbWeight=0.05, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, rax ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol @@ -208,7 +209,7 @@ G_M57371_IG12: ; bbWeight=0.05, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0 mov rbp, rax ; gcrRegs +[rbp] ;; size=21 bbWeight=0.05 PerfScore 0.09
-G_M57371_IG13: ; bbWeight=0.08, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG14: ; bbWeight=0.08, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rcx, rsi ; gcrRegs +[rcx] @@ -218,9 +219,9 @@ G_M57371_IG13: ; bbWeight=0.08, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0 ; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Binder+<>c:<.cctor>b__1119_1(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this cmp qword ptr [rdi+0x18], rdx
- jne SHORT G_M57371_IG18
+ jne SHORT G_M57371_IG22
;; size=30 bbWeight=0.08 PerfScore 0.64
-G_M57371_IG14: ; bbWeight=0.05, gcrefRegs=0021 {rax rbp}, byrefRegs=0000 {}, byref
+G_M57371_IG15: ; bbWeight=0.05, gcrefRegs=0021 {rax rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdx, rax ; gcrRegs +[rdx] @@ -231,18 +232,42 @@ G_M57371_IG14: ; bbWeight=0.05, gcrefRegs=0021 {rax rbp}, byrefRegs=0000 mov rsi, rax ; gcrRegs +[rsi] ;; size=21 bbWeight=0.05 PerfScore 0.09
-G_M57371_IG15: ; bbWeight=0.08, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG16: ; bbWeight=0.08, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rcx, qword ptr [rbx+0x38] cmp qword ptr [rcx+0x10], 56 jle SHORT G_M57371_IG20 ;; size=11 bbWeight=0.08 PerfScore 0.50
-G_M57371_IG16: ; bbWeight=0.07, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG17: ; bbWeight=0.07, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38] test rcx, rcx je SHORT G_M57371_IG20 ;; size=9 bbWeight=0.07 PerfScore 0.22
-G_M57371_IG17: ; bbWeight=0.08, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
+G_M57371_IG18: ; bbWeight=0.05, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M57371_IG21 + ;; size=2 bbWeight=0.05 PerfScore 0.11 +G_M57371_IG19: ; bbWeight=0.03, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbp] +[rax rdi] + mov rdx, rax + ; gcrRegs +[rdx] + mov rcx, gword ptr [rdi+0x08] + ; gcrRegs +[rcx] + call [rdi+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this + ; gcrRegs -[rcx rdx] + ; gcr arg pop 0 + mov rbp, rax + ; gcrRegs +[rbp] + jmp SHORT G_M57371_IG14 + ;; size=15 bbWeight=0.03 PerfScore 0.24 +G_M57371_IG20: ; bbWeight=0.03, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdi] + mov rcx, rbx + mov rdx, 0xD1FFAB1E ; global ptr + call CORINFO_HELP_RUNTIMEHANDLE_METHOD + ; gcr arg pop 0 + mov rcx, rax + ;; size=21 bbWeight=0.03 PerfScore 0.05 +G_M57371_IG21: ; bbWeight=0.08, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
mov rdx, rbp ; gcrRegs +[rdx] mov r8, rsi @@ -250,9 +275,9 @@ G_M57371_IG17: ; bbWeight=0.08, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 call [System.Collections.Immutable.ImmutableArray:Create[System.__Canon](System.__Canon,System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon]] ; gcrRegs -[rdx rbp rsi r8] +[rax] ; gcr arg pop 0
- jmp G_M57371_IG07
+ jmp G_M57371_IG09
;; size=17 bbWeight=0.08 PerfScore 0.46
-G_M57371_IG18: ; bbWeight=0.03, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG22: ; bbWeight=0.03, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbp rdi] mov rdx, rax ; gcrRegs +[rdx] @@ -263,40 +288,18 @@ G_M57371_IG18: ; bbWeight=0.03, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0 ; gcr arg pop 0 mov rsi, rax ; gcrRegs +[rsi]
- jmp SHORT G_M57371_IG15
+ jmp SHORT G_M57371_IG16
;; size=15 bbWeight=0.03 PerfScore 0.26
-G_M57371_IG19: ; bbWeight=0.03, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbp] +[rdi] - mov rdx, rax - ; gcrRegs +[rdx] - mov rcx, gword ptr [rdi+0x08] - ; gcrRegs +[rcx] - call [rdi+0x18]System.Func`2[System.__Canon,System.__Canon]:Invoke(System.__Canon):System.__Canon:this - ; gcrRegs -[rcx rdx] - ; gcr arg pop 0 - mov rbp, rax - ; gcrRegs +[rbp] - jmp SHORT G_M57371_IG13 - ;; size=15 bbWeight=0.03 PerfScore 0.24 -G_M57371_IG20: ; bbWeight=0.03, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rdi] - mov rcx, rbx - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - ; gcr arg pop 0 - mov rcx, rax - jmp SHORT G_M57371_IG17 - ;; size=23 bbWeight=0.03 PerfScore 0.11 -G_M57371_IG21: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp rsi]
+G_M57371_IG23: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rbp rsi]
mov rbp, qword ptr [rbx+0x38] cmp qword ptr [rbp+0x10], 72
- jle G_M57371_IG27
+ jle G_M57371_IG31
;; size=15 bbWeight=0.01 PerfScore 0.07
-G_M57371_IG22: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - jmp G_M57371_IG29 - ;; size=5 bbWeight=0.01 PerfScore 0.02 -G_M57371_IG23: ; bbWeight=0.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+G_M57371_IG24: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + jmp G_M57371_IG33 + ;; size=5 bbWeight=0.01 PerfScore 0.01 +G_M57371_IG25: ; bbWeight=0.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi rdi] mov rcx, rsi ; gcrRegs +[rcx] @@ -306,7 +309,7 @@ G_M57371_IG23: ; bbWeight=0.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 ; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Binder+<>c:<.cctor>b__1119_1(Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:this cmp qword ptr [rdi+0x18], rdx
- jne G_M57371_IG34
+ jne G_M57371_IG36
mov rdx, rax ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol @@ -344,18 +347,28 @@ G_M57371_IG23: ; bbWeight=0.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 ...

+3 (+0.80%) : 252728.dasm - System.Xml.Schema.XsdBuilder:GetContainer(int):System.Xml.Schema.XmlSchemaObject:this (Tier1)

@@ -22,27 +22,21 @@ G_M49782_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr xor rax, rax ; gcrRegs +[rax] cmp edx, 14
- jne SHORT G_M49782_IG06
+ jne SHORT G_M49782_IG05
;; size=7 bbWeight=1 PerfScore 1.50
-G_M49782_IG03: ; bbWeight=0.75, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M49782_IG03: ; bbWeight=0.75, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rax, gword ptr [rcx+0xF8] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05 - ;; size=9 bbWeight=0.75 PerfScore 2.99 -G_M49782_IG04: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rax, gword ptr [rcx+0x80] - ; gcrRegs +[rax] - ;; size=7 bbWeight=0.08 PerfScore 0.16 -G_M49782_IG05: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=7 bbWeight=0.75 PerfScore 1.49 +G_M49782_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx] ret ;; size=1 bbWeight=1 PerfScore 1.00
-G_M49782_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M49782_IG05: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx] cmp edx, 47
- ja SHORT G_M49782_IG05
+ ja SHORT G_M49782_IG04
mov edx, edx lea r8, [reloc @RWD00] mov r8d, dword ptr [r8+4*rdx] @@ -50,193 +44,199 @@ G_M49782_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000 add r8, r10 jmp r8 ;; size=31 bbWeight=0.25 PerfScore 1.84
+G_M49782_IG06: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + mov rax, gword ptr [rcx+0x80] + ; gcrRegs +[rax] + jmp SHORT G_M49782_IG04 + ;; size=9 bbWeight=0.08 PerfScore 0.32
G_M49782_IG07: ; bbWeight=0.08, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x60] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=6 bbWeight=0.08 PerfScore 0.32 G_M49782_IG08: ; bbWeight=0.07, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xF0] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=9 bbWeight=0.07 PerfScore 0.27 G_M49782_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x50] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=6 bbWeight=0.01 PerfScore 0.05 G_M49782_IG10: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x140] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=9 bbWeight=0 PerfScore 0.00 G_M49782_IG11: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x130] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=9 bbWeight=0 PerfScore 0.00 G_M49782_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x138] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=9 bbWeight=0 PerfScore 0.00 G_M49782_IG13: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x70] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=6 bbWeight=0 PerfScore 0.00 G_M49782_IG14: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x108] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=9 bbWeight=0 PerfScore 0.00 G_M49782_IG15: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x110] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=9 bbWeight=0 PerfScore 0.00 G_M49782_IG16: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x78] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=6 bbWeight=0 PerfScore 0.00 G_M49782_IG17: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xD8] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05
+ jmp SHORT G_M49782_IG04
;; size=9 bbWeight=0 PerfScore 0.00
-G_M49782_IG18: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M49782_IG18: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rax, gword ptr [rcx+0xE0] ; gcrRegs +[rax]
- jmp SHORT G_M49782_IG05 - ;; size=9 bbWeight=0 PerfScore 0.00
+ jmp G_M49782_IG04 + ;; size=12 bbWeight=0 PerfScore 0.00
G_M49782_IG19: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xE8] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG20: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x68] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=9 bbWeight=0 PerfScore 0.00 G_M49782_IG21: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x118] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG22: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x88] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG23: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x90] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG24: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x98] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG25: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xA0] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG26: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xA8] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG27: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xB0] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG28: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xB8] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG29: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xC0] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG30: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xC8] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG31: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0xD0] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG32: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x120] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG33: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x128] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG34: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x158] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG35: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov rax, gword ptr [rcx+0x148] ; gcrRegs +[rax]
- jmp G_M49782_IG05
+ jmp G_M49782_IG04
;; size=12 bbWeight=0 PerfScore 0.00 G_M49782_IG36: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref ...

+5 (+0.81%) : 423578.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -59,48 +59,38 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=11 bbWeight=1 PerfScore 4.50
-G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call <unknown method> ; gcr arg pop 0 test eax, eax
- je SHORT G_M35244_IG03
+ je G_M35244_IG44
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=1.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - ret - ;; size=9 bbWeight=1.10 PerfScore 3.59 -G_M35244_IG04: ; bbWeight=2.89, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG44 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=2.89, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG29
+ jbe G_M35244_IG28
;; size=16 bbWeight=2.89 PerfScore 10.83
-G_M35244_IG05: ; bbWeight=2.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=2.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG44
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rax, G_M35244_IG02 add rcx, rax jmp rcx
- ;; size=32 bbWeight=2.67 PerfScore 20.00 -G_M35244_IG06: ; bbWeight=1.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2.67 PerfScore 20.00 +G_M35244_IG05: ; bbWeight=1.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG12
;; size=9 bbWeight=1.67 PerfScore 5.42
-G_M35244_IG07: ; bbWeight=1.17, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.17, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -108,54 +98,54 @@ G_M35244_IG07: ; bbWeight=1.17, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG09
+ je SHORT G_M35244_IG08
;; size=23 bbWeight=1.17 PerfScore 3.22
-G_M35244_IG08: ; bbWeight=0.57, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG07: ; bbWeight=0.57, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
mov edi, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG10
+ jmp SHORT G_M35244_IG09
;; size=5 bbWeight=0.57 PerfScore 2.27
-G_M35244_IG09: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov edi, 1 ;; size=5 bbWeight=0.60 PerfScore 0.15
-G_M35244_IG10: ; bbWeight=1.67, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=1.67, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
dec edi mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG14
+ je SHORT G_M35244_IG13
;; size=10 bbWeight=1.67 PerfScore 2.92
-G_M35244_IG11: ; bbWeight=0.83, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.83, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rbp], rdx
- je SHORT G_M35244_IG14
+ je SHORT G_M35244_IG13
;; size=16 bbWeight=0.83 PerfScore 3.54
-G_M35244_IG12: ; bbWeight=0.42, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=0.42, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG15
+ jmp SHORT G_M35244_IG14
;; size=2 bbWeight=0.42 PerfScore 0.83
-G_M35244_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
xor edi, edi
- jmp SHORT G_M35244_IG10
+ jmp SHORT G_M35244_IG09
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M35244_IG14: ; bbWeight=1.67, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.67, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbp] test rbp, rbp
- jne SHORT G_M35244_IG22
+ jne SHORT G_M35244_IG21
;; size=5 bbWeight=1.67 PerfScore 2.08
-G_M35244_IG15: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=8 bbWeight=0.99 PerfScore 1.48
-G_M35244_IG16: ; bbWeight=0.49, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=0.49, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [rbp], rcx
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG17
;; size=16 bbWeight=0.49 PerfScore 2.10
-G_M35244_IG17: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -165,68 +155,68 @@ G_M35244_IG17: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=11 bbWeight=0.25 PerfScore 0.37
-G_M35244_IG18: ; bbWeight=0.99, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+G_M35244_IG17: ; bbWeight=0.99, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG43
+ jae G_M35244_IG42
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae G_M35244_IG44
+ jae G_M35244_IG43
mov eax, edi mov rsi, gword ptr [rcx+8*rax+0x10] ; gcrRegs +[rsi] ;; size=29 bbWeight=0.99 PerfScore 12.10
-G_M35244_IG19: ; bbWeight=1.67, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=1.67, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rbp] movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je SHORT G_M35244_IG26
+ je SHORT G_M35244_IG25
lea eax, [rcx-0x1A] cmp eax, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG25
;; size=17 bbWeight=1.67 PerfScore 8.33
-G_M35244_IG20: ; bbWeight=1.56, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.56, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG26
+ jbe SHORT G_M35244_IG25
;; size=8 bbWeight=1.56 PerfScore 2.33
-G_M35244_IG21: ; bbWeight=1.67, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=1.67, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, rsi ; gcrRegs +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=8 bbWeight=1.67 PerfScore 3.75
-G_M35244_IG22: ; bbWeight=0.68, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG21: ; bbWeight=0.68, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi] +[rbp] mov rsi, rbp ; gcrRegs +[rsi]
- jmp SHORT G_M35244_IG19
+ jmp SHORT G_M35244_IG18
;; size=5 bbWeight=0.68 PerfScore 1.53
-G_M35244_IG23: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp rsi] cmp dword ptr [rbx+0x24], 1
- jne G_M35244_IG42
+ jne G_M35244_IG41
;; size=10 bbWeight=0.22 PerfScore 0.89
-G_M35244_IG24: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rbx, rsi test rbx, rbx
- je SHORT G_M35244_IG31
+ je SHORT G_M35244_IG30
;; size=12 bbWeight=0.22 PerfScore 0.78
-G_M35244_IG25: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - jmp G_M35244_IG34
+G_M35244_IG24: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + jmp G_M35244_IG33
;; size=5 bbWeight=0.11 PerfScore 0.22
-G_M35244_IG26: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG25: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] test rcx, rcx
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG26
cmp byte ptr [rcx+0x2E], 32
- je SHORT G_M35244_IG21
+ je SHORT G_M35244_IG20
;; size=15 bbWeight=0.11 PerfScore 0.81
-G_M35244_IG27: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG26: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -257,17 +247,17 @@ G_M35244_IG27: ; bbWeight=0.11, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 call [System.Text.RegularExpressions.RegexNode:ReplaceChild(int,System.Text.RegularExpressions.RegexNode):this] ; gcrRegs -[rcx rbx rdi r8] ; gcr arg pop 0
- jmp SHORT G_M35244_IG21
+ jmp SHORT G_M35244_IG20
;; size=66 bbWeight=0.11 PerfScore 2.03
-G_M35244_IG28: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] +[rbx]
- jmp G_M35244_IG04
+ jmp G_M35244_IG03
;; size=5 bbWeight=0.22 PerfScore 0.44
-G_M35244_IG29: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=0.22 PerfScore 0.06
-G_M35244_IG30: ; bbWeight=0.22, epilog, nogc, extend
+G_M35244_IG29: ; bbWeight=0.22, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -276,46 +266,46 @@ G_M35244_IG30: ; bbWeight=0.22, epilog, nogc, extend ...

+7 (+0.90%) : 622866.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 28578
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 28578
; 3 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -75,17 +75,13 @@ G_M57106_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rcx ; gcrRegs +[rbx] ;; size=34 bbWeight=1 PerfScore 11.08
-G_M57106_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, qword ptr [rbx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol cmp rsi, rcx
- jne SHORT G_M57106_IG04 - ;; size=18 bbWeight=1 PerfScore 3.50 -G_M57106_IG03: ; bbWeight=0.46, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov edi, 9 - jmp SHORT G_M57106_IG05 - ;; size=7 bbWeight=0.46 PerfScore 1.04 -G_M57106_IG04: ; bbWeight=0.54, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je G_M57106_IG10 + ;; size=22 bbWeight=1 PerfScore 3.50 +G_M57106_IG03: ; bbWeight=0.54, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rsi+0x58] @@ -94,12 +90,12 @@ G_M57106_IG04: ; bbWeight=0.54, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 mov edi, eax ;; size=11 bbWeight=0.54 PerfScore 2.97
-G_M57106_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M57106_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
lea ebp, [rdi-0x04] cmp ebp, 5
- jne G_M57106_IG14
+ jne G_M57106_IG12
;; size=12 bbWeight=1 PerfScore 1.75
-G_M57106_IG06: ; bbWeight=0.85, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG05: ; bbWeight=0.85, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rdx, rbx ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol @@ -108,22 +104,9 @@ G_M57106_IG06: ; bbWeight=0.85, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol cmp rsi, rcx
- jne SHORT G_M57106_IG08
+ je SHORT G_M57106_IG11
;; size=33 bbWeight=0.85 PerfScore 2.56
-G_M57106_IG07: ; bbWeight=0.36, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz - mov rcx, rax - ; gcrRegs +[rcx] - mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_TypeArgumentsWithAnnotations():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this - ; gcrRegs -[rax] - call [rax]Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_TypeArgumentsWithAnnotations():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this - ; gcrRegs -[rcx] +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - jmp SHORT G_M57106_IG09 - ;; size=20 bbWeight=0.36 PerfScore 2.06 -G_M57106_IG08: ; bbWeight=0.49, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx]
+G_M57106_IG06: ; bbWeight=0.49, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov rcx, rax ; gcrRegs +[rcx] mov rax, qword ptr [rsi+0xF0] @@ -134,16 +117,16 @@ G_M57106_IG08: ; bbWeight=0.49, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, mov rbx, rax ; gcrRegs +[rbx] ;; size=16 bbWeight=0.49 PerfScore 2.72
-G_M57106_IG09: ; bbWeight=0.85, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG07: ; bbWeight=0.85, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rdx, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdx] ; gcrRegs +[rsi] mov edx, dword ptr [rbx+0x08] test edx, edx
- jne SHORT G_M57106_IG16 - ;; size=20 bbWeight=0.85 PerfScore 4.69 -G_M57106_IG10: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne G_M57106_IG16 + ;; size=24 bbWeight=0.85 PerfScore 4.69 +G_M57106_IG08: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi] mov rdx, 0xD1FFAB1E ; box for <unknown class>:<unknown field> mov rdx, gword ptr [rdx] @@ -151,7 +134,7 @@ G_M57106_IG10: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rax, gword ptr [rdx+0x08] ; gcrRegs +[rax] ;; size=17 bbWeight=0.80 PerfScore 3.39
-G_M57106_IG11: ; bbWeight=0.85, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M57106_IG09: ; bbWeight=0.85, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rdx] add rsp, 64 pop rbx @@ -163,14 +146,47 @@ G_M57106_IG11: ; bbWeight=0.85, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, pop r15 ret ;; size=15 bbWeight=0.85 PerfScore 4.05
-G_M57106_IG12: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M57106_IG10: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax] +[rbx] + mov edi, 9 + jmp SHORT G_M57106_IG04 + ;; size=7 bbWeight=0.46 PerfScore 1.04 +G_M57106_IG11: ; bbWeight=0.36, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx] +[rax] + mov rcx, rax + ; gcrRegs +[rcx] + mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_TypeArgumentsWithAnnotations():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this
; gcrRegs -[rax]
+ call [rax]Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_TypeArgumentsWithAnnotations():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this + ; gcrRegs -[rcx] +[rax] + ; gcr arg pop 0 + mov rbx, rax + ; gcrRegs +[rbx] + jmp SHORT G_M57106_IG07 + ;; size=20 bbWeight=0.36 PerfScore 2.06 +G_M57106_IG12: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] + cmp ebp, 7 + ja SHORT G_M57106_IG13 + mov eax, ebp + lea rcx, [reloc @RWD00] + mov ecx, dword ptr [rcx+4*rax] + lea rdx, G_M57106_IG02 + add rcx, rdx + jmp rcx + ;; size=29 bbWeight=0.15 PerfScore 1.07 +G_M57106_IG13: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + cmp edi, 15 + jne G_M57106_IG34 + ;; size=9 bbWeight=0.15 PerfScore 0.18 +G_M57106_IG14: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx]
mov rax, 0xD1FFAB1E ; box for <unknown class>:<unknown field> mov rax, gword ptr [rax] ; gcrRegs +[rax] mov rax, gword ptr [rax+0x08] ;; size=17 bbWeight=0.15 PerfScore 0.63
-G_M57106_IG13: ; bbWeight=0.15, epilog, nogc, extend
+G_M57106_IG15: ; bbWeight=0.15, epilog, nogc, extend
add rsp, 64 pop rbx pop rbp @@ -181,24 +197,8 @@ G_M57106_IG13: ; bbWeight=0.15, epilog, nogc, extend pop r15 ret ;; size=15 bbWeight=0.15 PerfScore 0.70
-G_M57106_IG14: ; bbWeight=0.15, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[rbx] - cmp ebp, 7 - ja SHORT G_M57106_IG15 - mov eax, ebp - lea rcx, [reloc @RWD00] - mov ecx, dword ptr [rcx+4*rax] - lea rdx, G_M57106_IG02 - add rcx, rdx - jmp rcx - ;; size=29 bbWeight=0.15 PerfScore 1.07 -G_M57106_IG15: ; bbWeight=0.15, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - cmp edi, 15 - jne G_M57106_IG34 - jmp SHORT G_M57106_IG12 - ;; size=11 bbWeight=0.15 PerfScore 0.48 -G_M57106_IG16: ; bbWeight=0.06, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rsi]
+G_M57106_IG16: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx rsi]
movsxd rdx, edx mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_OBJ @@ -209,12 +209,12 @@ G_M57106_IG16: ; bbWeight=0.06, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 xor r14d, r14d mov r15d, dword ptr [rdi+0x08] test r15d, r15d
- jle G_M57106_IG24
+ jle G_M57106_IG25
;; size=37 bbWeight=0.06 PerfScore 0.29 G_M57106_IG17: ; bbWeight=0.03, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] cmp dword ptr [rbx+0x08], r15d
- jl G_M57106_IG25
+ jl G_M57106_IG26
;; size=10 bbWeight=0.03 PerfScore 0.11 G_M57106_IG18: ; bbWeight=0.06, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref mov edx, r14d @@ -228,17 +228,17 @@ G_M57106_IG18: ; bbWeight=0.06, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0 movzx r13, byte ptr [rbp+0x10] mov r8, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap+<>c:<.cctor>b__19_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this cmp qword ptr [rsi+0x18], r8
- jne G_M57106_IG36
+ jne G_M57106_IG37
;; size=45 bbWeight=0.06 PerfScore 0.66 G_M57106_IG19: ; bbWeight=0.06, gcrefRegs=00CE {rcx rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz ; byrRegs -[rbp] test rcx, rcx
- je SHORT G_M57106_IG22
+ je SHORT G_M57106_IG23
;; size=5 bbWeight=0.06 PerfScore 0.07 G_M57106_IG20: ; bbWeight=0.06, gcrefRegs=00CE {rcx rdx rbx rsi rdi}, byrefRegs=0000 {}, byref mov r8, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType cmp qword ptr [rcx], r8
- jne G_M57106_IG35
+ jne G_M57106_IG36
mov r8, rdx ; gcrRegs +[r8] ;; size=22 bbWeight=0.06 PerfScore 0.25 @@ -253,14 +253,18 @@ G_M57106_IG21: ; bbWeight=0.06, gcrefRegs=01C8 {rbx rsi rdi r8}, byrefReg inc r14d cmp r15d, r14d jg SHORT G_M57106_IG18
- jmp SHORT G_M57106_IG24 - ;; size=21 bbWeight=0.06 PerfScore 0.28 -G_M57106_IG22: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=0.06 PerfScore 0.17 +G_M57106_IG22: ; bbWeight=0.03, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbx rsi] + jmp SHORT G_M57106_IG25 + ;; size=2 bbWeight=0.03 PerfScore 0.06 +G_M57106_IG23: ; bbWeight=0.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx rsi]
xor r8, r8 ; gcrRegs +[r8] jmp SHORT G_M57106_IG21 ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG23: ; bbWeight=0.00, gcrefRegs=01C8 {rbx rsi rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG24: ; bbWeight=0.00, gcrefRegs=01C8 {rbx rsi rdi r8}, byrefRegs=0000 {}, byref, isz
movsxd rdx, r14d mov rcx, rdi ; gcrRegs +[rcx] @@ -269,18 +273,18 @@ G_M57106_IG23: ; bbWeight=0.00, gcrefRegs=01C8 {rbx rsi rdi r8}, byrefReg ; gcr arg pop 0 inc r14d cmp r15d, r14d
- jg SHORT G_M57106_IG25
+ jg SHORT G_M57106_IG26
;; size=19 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG24: ; bbWeight=0.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+G_M57106_IG25: ; bbWeight=0.06, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi] mov rax, rdi ; gcrRegs +[rax] ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 2 1 1 0 -1 +3
benchmarks.run.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x64.checked.mch 13 5 6 2 -40 +80
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x64.checked.mch 6 1 5 0 -4 +73
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.x64.Release.mch 9 5 3 1 -46 +15
librariestestsnotieredcompilation.run.windows.x64.Release.mch 0 0 0 0 -0 +0
realworld.run.windows.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
30 12 15 3 -91 +171

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 122,303 69,144 53,159 2,697 (2.16%) 2,697 (2.16%)
benchmarks.run.windows.x64.checked.mch 27,983 4 27,979 30 (0.11%) 30 (0.11%)
benchmarks.run_pgo.windows.x64.checked.mch 104,556 51,487 53,069 1 (0.00%) 1 (0.00%)
benchmarks.run_tiered.windows.x64.checked.mch 55,104 37,303 17,801 7 (0.01%) 7 (0.01%)
coreclr_tests.run.windows.x64.checked.mch 583,899 348,198 235,701 72 (0.01%) 72 (0.01%)
libraries.crossgen2.windows.x64.checked.mch 275,762 15 275,747 8 (0.00%) 8 (0.00%)
libraries.pmi.windows.x64.checked.mch 313,964 6 313,958 335 (0.11%) 335 (0.11%)
libraries_tests.run.windows.x64.Release.mch 684,990 483,523 201,467 187 (0.03%) 187 (0.03%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 320,420 21,945 298,475 468 (0.15%) 468 (0.15%)
realworld.run.windows.x64.checked.mch 36,795 3 36,792 114 (0.31%) 114 (0.31%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,573 11 32,562 5 (0.02%) 5 (0.02%)
2,558,349 1,011,639 1,546,710 3,924 (0.15%) 3,924 (0.15%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38879813 (overridden on cmd)
Total bytes of diff: 38879815 (overridden on cmd)
Total bytes of delta: 2 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
           3 : 123784.dasm (0.26 % of base)

Top file improvements (bytes):
          -1 : 88044.dasm (-0.13 % of base)

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

Top method regressions (bytes):
           3 (0.26 % of base) : 123784.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

Top method improvements (bytes):
          -1 (-0.13 % of base) : 88044.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

Top method regressions (percentages):
           3 (0.26 % of base) : 123784.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

Top method improvements (percentages):
          -1 (-0.13 % of base) : 88044.dasm - System.Text.Json.JsonDocument:WriteElementTo(int,System.Text.Json.Utf8JsonWriter):this (Tier1)

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


benchmarks.run_pgo.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 36663291 (overridden on cmd)
Total bytes of diff: 36663331 (overridden on cmd)
Total bytes of delta: 40 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          21 : 93947.dasm (4.15 % of base)
          15 : 89243.dasm (3.01 % of base)
          15 : 101887.dasm (3.01 % of base)
          13 : 88253.dasm (2.60 % of base)
          11 : 91714.dasm (2.08 % of base)
           5 : 93966.dasm (0.70 % of base)

Top file improvements (bytes):
         -18 : 27503.dasm (-3.49 % of base)
          -8 : 103836.dasm (-1.52 % of base)
          -6 : 100166.dasm (-1.47 % of base)
          -4 : 36615.dasm (-0.51 % of base)
          -4 : 36620.dasm (-0.51 % of base)

11 total files with Code Size differences (5 improved, 6 regressed), 2 unchanged.

Top method regressions (bytes):
          21 (4.15 % of base) : 93947.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          15 (3.01 % of base) : 89243.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          15 (3.01 % of base) : 101887.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          13 (2.60 % of base) : 88253.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          11 (2.08 % of base) : 91714.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.70 % of base) : 93966.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 improvements (bytes):
         -18 (-3.49 % of base) : 27503.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -8 (-1.52 % of base) : 103836.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-1.47 % of base) : 100166.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
          -4 (-0.51 % of base) : 36615.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -4 (-0.51 % of base) : 36620.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

Top method regressions (percentages):
          21 (4.15 % of base) : 93947.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          15 (3.01 % of base) : 89243.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          15 (3.01 % of base) : 101887.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          13 (2.60 % of base) : 88253.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          11 (2.08 % of base) : 91714.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.70 % of base) : 93966.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 improvements (percentages):
         -18 (-3.49 % of base) : 27503.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -8 (-1.52 % of base) : 103836.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-1.47 % of base) : 100166.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CollectSets(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Collections.Generic.HashSet`1[System.__Canon]):this (Tier1)
          -4 (-0.51 % of base) : 36615.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -4 (-0.51 % of base) : 36620.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

11 total methods with Code Size differences (5 improved, 6 regressed).


coreclr_tests.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 407274585 (overridden on cmd)
Total bytes of diff: 407274654 (overridden on cmd)
Total bytes of delta: 69 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          21 : 463732.dasm (4.14 % of base)
          21 : 583925.dasm (4.14 % of base)
          21 : 463039.dasm (4.14 % of base)
           5 : 314215.dasm (1.00 % of base)
           5 : 437997.dasm (1.00 % of base)

Top file improvements (bytes):
          -4 : 449054.dasm (-0.51 % of base)

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

Top method regressions (bytes):
          21 (4.14 % of base) : 463732.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          21 (4.14 % of base) : 583925.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          21 (4.14 % of base) : 463039.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (1.00 % of base) : 314215.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (1.00 % of base) : 437997.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (bytes):
          -4 (-0.51 % of base) : 449054.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

Top method regressions (percentages):
          21 (4.14 % of base) : 463732.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          21 (4.14 % of base) : 583925.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          21 (4.14 % of base) : 463039.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (1.00 % of base) : 437997.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (1.00 % of base) : 314215.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
          -4 (-0.51 % of base) : 449054.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

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


libraries_tests.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 284562984 (overridden on cmd)
Total bytes of diff: 284562953 (overridden on cmd)
Total bytes of delta: -31 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           7 : 622866.dasm (0.90 % of base)
           5 : 423578.dasm (0.81 % of base)
           3 : 252728.dasm (0.80 % of base)

Top file improvements (bytes):
         -27 : 428623.dasm (-1.38 % of base)
          -6 : 57077.dasm (-0.54 % of base)
          -6 : 85160.dasm (-0.27 % of base)
          -6 : 505412.dasm (-0.79 % of base)
          -1 : 422846.dasm (-0.15 % of base)

8 total files with Code Size differences (5 improved, 3 regressed), 1 unchanged.

Top method regressions (bytes):
           7 (0.90 % of base) : 622866.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
           5 (0.81 % of base) : 423578.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           3 (0.80 % of base) : 252728.dasm - System.Xml.Schema.XsdBuilder:GetContainer(int):System.Xml.Schema.XmlSchemaObject:this (Tier1)

Top method improvements (bytes):
         -27 (-1.38 % of base) : 428623.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -6 (-0.54 % of base) : 57077.dasm - Microsoft.CodeAnalysis.ArrayBuilderExtensions:SelectAsArray[System.__Canon,System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          -6 (-0.27 % of base) : 85160.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          -6 (-0.79 % of base) : 505412.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -1 (-0.15 % of base) : 422846.dasm - System.Xml.Schema.BaseValidator:CreateInstance(int,System.Xml.XmlValidatingReaderImpl,System.Xml.Schema.XmlSchemaCollection,System.Xml.IValidationEventHandling,ubyte):System.Xml.Schema.BaseValidator (Tier1)

Top method regressions (percentages):
           7 (0.90 % of base) : 622866.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
           5 (0.81 % of base) : 423578.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           3 (0.80 % of base) : 252728.dasm - System.Xml.Schema.XsdBuilder:GetContainer(int):System.Xml.Schema.XmlSchemaObject:this (Tier1)

Top method improvements (percentages):
         -27 (-1.38 % of base) : 428623.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -6 (-0.79 % of base) : 505412.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-0.54 % of base) : 57077.dasm - Microsoft.CodeAnalysis.ArrayBuilderExtensions:SelectAsArray[System.__Canon,System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier1)
          -6 (-0.27 % of base) : 85160.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          -1 (-0.15 % of base) : 422846.dasm - System.Xml.Schema.BaseValidator:CreateInstance(int,System.Xml.XmlValidatingReaderImpl,System.Xml.Schema.XmlSchemaCollection,System.Xml.IValidationEventHandling,ubyte):System.Xml.Schema.BaseValidator (Tier1)

8 total methods with Code Size differences (5 improved, 3 regressed).