Assembly Diffs

linux arm64

Diffs are based on 2,544,350 contexts (1,012,496 MinOpts, 1,531,854 FullOpts).

Overall (-140 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 77,518,372 -4
coreclr_tests.run.linux.arm64.checked.mch 518,928,384 +4
libraries_tests.run.linux.arm64.Release.mch 383,432,472 -140

FullOpts (-140 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 55,144,000 -4
coreclr_tests.run.linux.arm64.checked.mch 167,326,840 +4
libraries_tests.run.linux.arm64.Release.mch 167,615,256 -140

Example diffs

benchmarks.run_pgo.linux.arm64.checked.mch

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

@@ -53,22 +53,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_IG19
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG19
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG23
+ bls G_M35244_IG21
;; size=16 bbWeight=3.00 PerfScore 14.98 G_M35244_IG04: ; bbWeight=2.96, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG19
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -104,7 +104,7 @@ G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x22] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M35244_IG10: ; bbWeight=2.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- cbnz x22, G_M35244_IG21
+ cbnz x22, G_M35244_IG19
;; size=4 bbWeight=2.00 PerfScore 2.00 G_M35244_IG11: ; bbWeight=1.57, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] @@ -138,12 +138,12 @@ G_M35244_IG14: ; bbWeight=1.57, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG25
+ bhs G_M35244_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG26
+ bhs G_M35244_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -159,7 +159,7 @@ G_M35244_IG15: ; bbWeight=2.00, gcrefRegs=280000 {x19 x21}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG28
+ bls G_M35244_IG27
;; size=28 bbWeight=2.00 PerfScore 12.98 G_M35244_IG16: ; bbWeight=2.00, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -177,35 +177,24 @@ G_M35244_IG17: ; bbWeight=1.02, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG22
+ cbz x0, G_M35244_IG20
;; size=24 bbWeight=1.02 PerfScore 4.06 G_M35244_IG18: ; bbWeight=0.76, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
- b G_M35244_IG20 - ;; size=4 bbWeight=0.76 PerfScore 0.76 -G_M35244_IG19: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x0 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_IG20: ; bbWeight=0.76, gcVars=0000000000000000 {}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x0 x19-x20]
ldr w21, [x0, #0x10] b G_M35244_IG07 ;; size=8 bbWeight=0.76 PerfScore 3.04
-G_M35244_IG21: ; bbWeight=0.42, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.42, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20] +[x22] mov x21, x22 ; gcrRegs +[x21] b G_M35244_IG15 ;; size=8 bbWeight=0.42 PerfScore 0.64
-G_M35244_IG22: ; bbWeight=0.26, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=0.26, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21-x22] +[x20] mov w21, #1 b G_M35244_IG07 ;; size=8 bbWeight=0.26 PerfScore 0.38
-G_M35244_IG23: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x0, x19 ; gcrRegs +[x0] @@ -214,14 +203,14 @@ G_M35244_IG23: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0.03 PerfScore 0.16
-G_M35244_IG24: ; bbWeight=0.03, epilog, nogc, extend
+G_M35244_IG22: ; 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 ;; size=16 bbWeight=0.03 PerfScore 0.13
-G_M35244_IG25: ; 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 @@ -231,11 +220,17 @@ G_M35244_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; 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_IG27: ; 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] @@ -251,18 +246,18 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x21] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG29
+ cbz x0, G_M35244_IG28
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32 beq G_M35244_IG16 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -310,7 +305,7 @@ G_M35244_IG29: ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG16 ;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -323,9 +318,9 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG32
+ b G_M35244_IG31
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -345,22 +340,22 @@ G_M35244_IG31: ; 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_IG32: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG31
+ blt G_M35244_IG30
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG19 - b G_M35244_IG27
+ beq G_M35244_IG25 + b G_M35244_IG26
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; 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_IG34: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1
- beq G_M35244_IG27
+ beq G_M35244_IG26
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this @@ -372,23 +367,23 @@ G_M35244_IG34: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG19
+ cbz x19, G_M35244_IG25
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG30 - G_M35244_IG02
+RWD00 dd G_M35244_IG29 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG34 - G_M35244_IG02
dd G_M35244_IG33 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG19 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02 - dd G_M35244_IG30 - G_M35244_IG02 - dd G_M35244_IG30 - G_M35244_IG02
+ dd G_M35244_IG25 - 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
-; Total bytes of code 772, prolog size 20, PerfScore 129.58, instruction count 193, allocated bytes for code 772 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 768, prolog size 20, PerfScore 128.77, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info: @@ -399,7 +394,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 193 (0x000c1) Actual length = 772 (0x000304)
+ Function Length : 192 (0x000c0) Actual length = 768 (0x000300)
...

+0 (0.00%) : 35645.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.46 -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.05 +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.81, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.81, 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.81, 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.81 PerfScore 16.13
-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.81 -G_M417_IG08: ; bbWeight=0.40, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.71 +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.22, 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.71, 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%) : 127101.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -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_IG15
+ cbz w0, G_M35244_IG27
ldr w1, [x19, #0x28] mov w0, #0xD1FFAB1E tst w1, w0
- bne G_M35244_IG15
+ bne G_M35244_IG27
;; 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_IG23
;; 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_IG27
mov w1, w1 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -99,7 +99,7 @@ G_M35244_IG08: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x23] ;; size=4 bbWeight=0.25 PerfScore 0.13 G_M35244_IG09: ; bbWeight=1.00, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- cbz x23, G_M35244_IG17
+ cbz x23, G_M35244_IG15
;; size=4 bbWeight=1.00 PerfScore 1.00 G_M35244_IG10: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20] @@ -109,7 +109,7 @@ G_M35244_IG10: ; 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_IG16
;; size=28 bbWeight=1.00 PerfScore 6.50 G_M35244_IG11: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -140,32 +140,7 @@ G_M35244_IG14: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov w21, wzr b G_M35244_IG06 ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M35244_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - 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.09 -G_M35244_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19] - mov x0, x19 - ; gcrRegs +[x0] - mov w1, wzr - 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 - ; gcrRegs -[x19] - ; gcr arg pop 0 - mov x19, x0 - ; 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_IG15: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -176,11 +151,11 @@ 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_IG25
ldr x0, [x0, #0x08] ldr w1, [x0, #0x08] cmp w22, w1
- bhs G_M35244_IG28
+ bhs G_M35244_IG26
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -188,18 +163,18 @@ G_M35244_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs +[x23] b G_M35244_IG10 ;; size=60 bbWeight=0 PerfScore 0.00
-G_M35244_IG18: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG19
+ cbz x0, G_M35244_IG17
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32 beq G_M35244_IG11 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG19: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M35244_IG17: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -247,7 +222,7 @@ G_M35244_IG19: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG11 ;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x23] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -260,9 +235,9 @@ G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG22
+ b G_M35244_IG20
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -282,22 +257,22 @@ G_M35244_IG21: ; 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_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG21
+ blt G_M35244_IG19
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG15 - b G_M35244_IG16
+ beq G_M35244_IG27 + b G_M35244_IG28
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG23: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; 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_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1
- beq G_M35244_IG16
+ beq G_M35244_IG28
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this @@ -309,14 +284,14 @@ G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG15
+ cbz x19, G_M35244_IG27
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_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this @@ -324,7 +299,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend
+G_M35244_IG24: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -332,7 +307,7 @@ G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend br x1 ; gcr arg pop 0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG25: ; 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 @@ -342,29 +317,52 @@ G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
+G_M35244_IG27: ; 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 PerfScore 0.00 +G_M35244_IG28: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19] + mov x0, x19 + ; gcrRegs +[x0] + mov w1, wzr + 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 + ; gcrRegs -[x19] + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + b G_M35244_IG03 + ;; size=36 bbWeight=0 PerfScore 0.00
G_M35244_IG29: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0 x19-x20]
+ ; gcrRegs +[x20]
ldr w21, [x0, #0x10] b G_M35244_IG06 ;; size=8 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG20 - G_M35244_IG02
+RWD00 dd G_M35244_IG18 - G_M35244_IG02
dd G_M35244_IG12 - G_M35244_IG02
- dd G_M35244_IG24 - G_M35244_IG02 - dd G_M35244_IG23 - G_M35244_IG02
+ dd G_M35244_IG22 - G_M35244_IG02 + dd G_M35244_IG21 - G_M35244_IG02
dd G_M35244_IG12 - G_M35244_IG02
- dd G_M35244_IG15 - G_M35244_IG02 - dd G_M35244_IG16 - G_M35244_IG02 - dd G_M35244_IG16 - G_M35244_IG02
...

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

@@ -53,22 +53,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_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=3.99, 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.99 PerfScore 19.93 G_M35244_IG04: ; bbWeight=2.99, 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] @@ -79,7 +79,7 @@ G_M35244_IG04: ; bbWeight=2.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=2.99, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG08
+ cbz x20, G_M35244_IG17
;; size=8 bbWeight=2.99 PerfScore 11.95 G_M35244_IG06: ; bbWeight=2.47, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -90,65 +90,53 @@ G_M35244_IG06: ; bbWeight=2.47, 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.47 PerfScore 9.88 G_M35244_IG07: ; bbWeight=0.88, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10]
- b G_M35244_IG11
+ b G_M35244_IG09
;; size=8 bbWeight=0.88 PerfScore 3.54
-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.77 -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.79
-G_M35244_IG11: ; bbWeight=2.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2.99, 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_IG12
;; size=12 bbWeight=2.99 PerfScore 5.97
-G_M35244_IG12: ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.49, 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_IG12
;; size=24 bbWeight=1.49 PerfScore 8.96
-G_M35244_IG13: ; bbWeight=0.75, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.75, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x22, xzr ; gcrRegs +[x22] ;; size=4 bbWeight=0.75 PerfScore 0.37
-G_M35244_IG14: ; bbWeight=2.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz - cbnz x22, G_M35244_IG19
+G_M35244_IG12: ; bbWeight=2.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x22, G_M35244_IG18
;; size=4 bbWeight=2.99 PerfScore 2.99
-G_M35244_IG15: ; bbWeight=1.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.08, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG16
;; size=8 bbWeight=1.08 PerfScore 1.62
-G_M35244_IG16: ; bbWeight=0.54, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.54, 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_IG16
;; size=24 bbWeight=0.54 PerfScore 3.25
-G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=0.27, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -162,7 +150,7 @@ G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=28 bbWeight=0.27 PerfScore 1.76
-G_M35244_IG18: ; bbWeight=1.08, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.08, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0 @@ -171,21 +159,26 @@ G_M35244_IG18: ; bbWeight=1.08, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG24
+ bhs G_M35244_IG23
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ldr x20, [x0, w21, UXTW #3] ; gcrRegs +[x20]
- b G_M35244_IG20
+ b G_M35244_IG19
;; size=40 bbWeight=1.08 PerfScore 17.87
-G_M35244_IG19: ; bbWeight=1.90, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
+G_M35244_IG17: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
; byrRegs -[x0]
+ mov w21, wzr + b G_M35244_IG09 + ;; size=8 bbWeight=0.52 PerfScore 0.77 +G_M35244_IG18: ; bbWeight=1.90, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] +[x22]
mov x20, x22 ; gcrRegs +[x20] ;; size=4 bbWeight=1.90 PerfScore 0.95
-G_M35244_IG20: ; bbWeight=2.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=2.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ldrb w0, [x20, #0x2E] sub w1, w0, #26 @@ -195,13 +188,13 @@ G_M35244_IG20: ; bbWeight=2.99, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ccmp w2, #1, z, hi bls G_M35244_IG26 ;; size=28 bbWeight=2.99 PerfScore 19.41
-G_M35244_IG21: ; bbWeight=2.98, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=2.98, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=2.98 PerfScore 4.48
-G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x0, x19 ; gcrRegs +[x0] @@ -210,19 +203,25 @@ 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] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; 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] @@ -247,7 +246,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG21
+ beq G_M35244_IG20
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -295,7 +294,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { blr x3 ; gcrRegs -[x0 x2 x19 x21] ; gcr arg pop 0
- b G_M35244_IG21
+ b G_M35244_IG20
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -337,7 +336,7 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blt G_M35244_IG29 ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG09
+ beq G_M35244_IG24
b G_M35244_IG25 ;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref @@ -359,7 +358,7 @@ G_M35244_IG32: ; 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_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -377,7 +376,7 @@ RWD00 dd G_M35244_IG28 - G_M35244_IG02 dd G_M35244_IG32 - G_M35244_IG02 dd G_M35244_IG31 - 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_IG25 - G_M35244_IG02 dd G_M35244_IG25 - G_M35244_IG02 dd G_M35244_IG25 - G_M35244_IG02 @@ -385,7 +384,7 @@ RWD00 dd G_M35244_IG28 - G_M35244_IG02 dd G_M35244_IG28 - G_M35244_IG02 ...

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

@@ -53,22 +53,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_IG09
+ cbz w0, G_M35244_IG25
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG09
+ bne G_M35244_IG25
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=4.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG23
+ bls G_M35244_IG22
;; size=16 bbWeight=4.05 PerfScore 20.25 G_M35244_IG04: ; bbWeight=3.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG09
+ bhi G_M35244_IG25
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -79,7 +79,7 @@ G_M35244_IG04: ; bbWeight=3.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=3.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG08
+ cbz x20, G_M35244_IG18
;; size=8 bbWeight=3.05 PerfScore 12.20 G_M35244_IG06: ; bbWeight=2.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -90,65 +90,53 @@ G_M35244_IG06: ; bbWeight=2.52, 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.52 PerfScore 10.08 G_M35244_IG07: ; bbWeight=0.91, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10]
- b G_M35244_IG11
+ b G_M35244_IG09
;; size=8 bbWeight=0.91 PerfScore 3.64
-G_M35244_IG08: ; bbWeight=0.53, 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.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.00 -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.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=3.05, 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_IG12
;; size=12 bbWeight=3.05 PerfScore 6.10
-G_M35244_IG12: ; bbWeight=1.53, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.53, 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_IG12
;; size=24 bbWeight=1.53 PerfScore 9.15
-G_M35244_IG13: ; bbWeight=0.76, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.76, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x22, xzr ; gcrRegs +[x22] ;; size=4 bbWeight=0.76 PerfScore 0.38
-G_M35244_IG14: ; bbWeight=3.05, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz - cbnz x22, G_M35244_IG20
+G_M35244_IG12: ; bbWeight=3.05, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x22, G_M35244_IG19
;; size=4 bbWeight=3.05 PerfScore 3.05
-G_M35244_IG15: ; bbWeight=1.10, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.10, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG18
+ cbz x22, G_M35244_IG16
;; size=8 bbWeight=1.10 PerfScore 1.65
-G_M35244_IG16: ; bbWeight=0.55, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.55, 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_IG16
;; size=24 bbWeight=0.55 PerfScore 3.30
-G_M35244_IG17: ; bbWeight=0.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=0.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -158,32 +146,37 @@ G_M35244_IG17: ; bbWeight=0.28, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.28 PerfScore 0.55
-G_M35244_IG18: ; bbWeight=1.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0 bhs G_M35244_IG34 ;; size=12 bbWeight=1.10 PerfScore 4.95
-G_M35244_IG19: ; bbWeight=1.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
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_IG21
+ b G_M35244_IG20
;; size=28 bbWeight=1.10 PerfScore 13.21
-G_M35244_IG20: ; bbWeight=1.95, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20]
+G_M35244_IG18: ; bbWeight=0.53, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
; byrRegs -[x0]
+ mov w21, wzr + b G_M35244_IG09 + ;; size=8 bbWeight=0.53 PerfScore 0.80 +G_M35244_IG19: ; bbWeight=1.95, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] +[x22]
mov x20, x22 ; gcrRegs +[x20] ;; size=4 bbWeight=1.95 PerfScore 0.97
-G_M35244_IG21: ; bbWeight=3.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=3.05, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ldrb w0, [x20, #0x2E] sub w1, w0, #26 @@ -193,13 +186,13 @@ G_M35244_IG21: ; bbWeight=3.05, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ccmp w2, #1, z, hi bls G_M35244_IG27 ;; size=28 bbWeight=3.05 PerfScore 19.83
-G_M35244_IG22: ; bbWeight=3.05, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=3.05, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=3.05 PerfScore 4.58
-G_M35244_IG23: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x0, x19 ; gcrRegs +[x0] @@ -208,19 +201,25 @@ G_M35244_IG23: ; 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_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG23: ; 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_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 -[x0 x19] 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 +244,7 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32
- beq G_M35244_IG22
+ beq G_M35244_IG21
;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG28: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E @@ -293,7 +292,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_IG22
+ b G_M35244_IG21
;; size=124 bbWeight=0 PerfScore 0.00 G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] +[x19] @@ -335,7 +334,7 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blt G_M35244_IG30 ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG09
+ beq G_M35244_IG25
b G_M35244_IG26 ;; size=24 bbWeight=0 PerfScore 0.00 G_M35244_IG32: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref @@ -357,7 +356,7 @@ G_M35244_IG33: ; 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_IG25
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00 G_M35244_IG34: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -375,7 +374,7 @@ RWD00 dd G_M35244_IG29 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG32 - 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_IG26 - G_M35244_IG02 ...

+0 (0.00%) : 92828.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.58, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.58 PerfScore 7.27 -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.58 PerfScore 7.85 +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.75
-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.42, 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.42, 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.97, 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.45, 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:

coreclr_tests.run.linux.arm64.checked.mch

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

@@ -53,11 +53,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_IG21
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG21
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG21
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG23
+ cbz x0, G_M35244_IG21
;; size=24 bbWeight=1.55 PerfScore 6.18 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10] @@ -146,12 +146,12 @@ G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] 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] @@ -167,7 +167,7 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { 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 ; gcrRegs -[x19] @@ -197,33 +197,26 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=480 ; gcrRegs +[x20] b G_M35244_IG16 ;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG21: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20 x22] - 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_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - mov w21, wzr - b G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 0.68 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov w21, #1 b G_M35244_IG08 ;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 0.68 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -271,7 +264,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG17 ;; 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] @@ -284,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 @@ -306,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
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG27
+ blt G_M35244_IG26
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG21
+ beq G_M35244_IG32
b G_M35244_IG33 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1 beq G_M35244_IG33 @@ -333,10 +326,10 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG21
+ cbz x19, G_M35244_IG32
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -346,11 +339,17 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; 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_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -366,20 +365,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02
- dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 752, prolog size 20, PerfScore 128.05, instruction count 188, allocated bytes for code 752 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 752, prolog size 20, PerfScore 125.39, instruction count 188, allocated bytes for code 752 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

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

@@ -53,11 +53,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_IG21
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG21
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG21
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG23
+ cbz x0, G_M35244_IG21
;; size=24 bbWeight=1.55 PerfScore 6.18 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10] @@ -146,12 +146,12 @@ G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] 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] @@ -167,7 +167,7 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { 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 ; gcrRegs -[x19] @@ -197,33 +197,26 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=480 ; gcrRegs +[x20] b G_M35244_IG16 ;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG21: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20 x22] - 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_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - mov w21, wzr - b G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 0.68 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov w21, #1 b G_M35244_IG08 ;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 0.68 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -271,7 +264,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG17 ;; 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] @@ -284,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 @@ -306,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
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG27
+ blt G_M35244_IG26
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG21
+ beq G_M35244_IG32
b G_M35244_IG33 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1 beq G_M35244_IG33 @@ -333,10 +326,10 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG21
+ cbz x19, G_M35244_IG32
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -346,11 +339,17 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; 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_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -366,20 +365,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02
- dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 752, prolog size 20, PerfScore 128.05, instruction count 188, allocated bytes for code 752 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 752, prolog size 20, PerfScore 125.39, instruction count 188, allocated bytes for code 752 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

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

@@ -53,11 +53,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_IG21
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG21
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG21
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG23
+ cbz x0, G_M35244_IG21
;; size=24 bbWeight=1.55 PerfScore 6.18 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10] @@ -150,12 +150,12 @@ G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] 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] @@ -171,7 +171,7 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { 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 ; gcrRegs -[x19] @@ -201,33 +201,26 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=480 ; gcrRegs +[x20] b G_M35244_IG16 ;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG21: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20 x22] - 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_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - mov w21, wzr - b G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 0.68 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov w21, #1 b G_M35244_IG08 ;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 0.68 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -275,7 +268,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG17 ;; 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] @@ -288,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 @@ -310,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
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG27
+ blt G_M35244_IG26
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG21
+ beq G_M35244_IG32
b G_M35244_IG33 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1 beq G_M35244_IG33 @@ -337,10 +330,10 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG21
+ cbz x19, G_M35244_IG32
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -350,11 +343,17 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; 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_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -370,20 +369,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02
- dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 768, prolog size 20, PerfScore 129.49, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 768, prolog size 20, PerfScore 126.83, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

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

@@ -53,11 +53,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_IG21
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG21
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG21
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG23
+ cbz x0, G_M35244_IG21
;; size=24 bbWeight=1.55 PerfScore 6.18 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10] @@ -150,12 +150,12 @@ G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] 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] @@ -171,7 +171,7 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { 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 ; gcrRegs -[x19] @@ -201,33 +201,26 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=480 ; gcrRegs +[x20] b G_M35244_IG16 ;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG21: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20 x22] - 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_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - mov w21, wzr - b G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 0.68 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov w21, #1 b G_M35244_IG08 ;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 0.68 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -275,7 +268,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG17 ;; 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] @@ -288,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 @@ -310,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
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG27
+ blt G_M35244_IG26
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG21
+ beq G_M35244_IG32
b G_M35244_IG33 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1 beq G_M35244_IG33 @@ -337,10 +330,10 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG21
+ cbz x19, G_M35244_IG32
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -350,11 +343,17 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; 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_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -370,20 +369,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02
- dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 768, prolog size 20, PerfScore 129.49, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 768, prolog size 20, PerfScore 126.83, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

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

@@ -20,10 +20,10 @@ ; V08 loc7 [V08,T19] ( 5, 0 ) int -> x21 ; V09 loc8 [V09,T20] ( 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,T18] ( 5, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T18] ( 5, 0 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T15] ( 4, 4.00) int -> x21 "Inline return value spill temp" ; V13 tmp3 [V13,T14] ( 3, 4.18) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T11] ( 6, 6 ) ref -> x22 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T11] ( 6, 6 ) ref -> x20 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T07] ( 2, 8.00) ref -> x22 "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T13] ( 3, 4.72) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -53,22 +53,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_IG09
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG09
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00 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_IG19
;; size=16 bbWeight=3 PerfScore 15.00 G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG09
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -84,7 +84,7 @@ G_M35244_IG06: ; bbWeight=2.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG11
+ cbz x22, G_M35244_IG09
;; size=12 bbWeight=2.00 PerfScore 4.00 G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x22] @@ -92,42 +92,31 @@ G_M35244_IG07: ; 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_IG09
;; size=24 bbWeight=1.00 PerfScore 6.00 G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x22]
- b G_M35244_IG10 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M35244_IG09: ; bbWeight=0.67, 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.67 PerfScore 2.67 -G_M35244_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20]
mov x22, xzr ; gcrRegs +[x22] ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35244_IG11: ; bbWeight=2.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz - cbnz x22, G_M35244_IG23
+G_M35244_IG09: ; bbWeight=2.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x22, G_M35244_IG21
;; size=4 bbWeight=2.00 PerfScore 2.00
-G_M35244_IG12: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.28, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG15
+ cbz x22, G_M35244_IG13
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG13: ; bbWeight=0.64, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; 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_IG15
+ beq G_M35244_IG13
;; size=24 bbWeight=0.64 PerfScore 3.84
-G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG12: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x1, x20 ; gcrRegs +[x1] @@ -137,44 +126,46 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=12 bbWeight=0.32 PerfScore 0.64
-G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG32
+ bhs G_M35244_IG30
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG33
+ bhs G_M35244_IG31
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0]
- ldr x22, [x0, w21, UXTW #3]
+ ldr x20, [x0, w21, UXTW #3] + ; gcrRegs +[x20]
;; size=36 bbWeight=1.28 PerfScore 19.84
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x22]
; byrRegs -[x0]
- ldrb w0, [x22, #0x2E]
+ 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_IG25
+ bls G_M35244_IG23
;; size=28 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- mov x19, x22
+ mov x19, x20
; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG18: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22]
+G_M35244_IG16: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20]
ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG24
+ cbz x20, G_M35244_IG22
;; size=8 bbWeight=2 PerfScore 8.00
-G_M35244_IG19: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -185,11 +176,11 @@ G_M35244_IG19: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcr arg pop 0 cbz x0, G_M35244_IG05 ;; size=24 bbWeight=1.55 PerfScore 6.18
-G_M35244_IG20: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG18: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10] b G_M35244_IG06 ;; size=8 bbWeight=1.09 PerfScore 4.36
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20] mov x0, x19 ; gcrRegs +[x0] @@ -198,50 +189,51 @@ 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_IG20: ; 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.72, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG21: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x22]
- b G_M35244_IG16 - ;; size=4 bbWeight=0.72 PerfScore 0.72 -G_M35244_IG24: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x22] +[x20]
+ mov x20, x22 + ; gcrRegs +[x20] + b G_M35244_IG14 + ;; size=8 bbWeight=0.72 PerfScore 1.08 +G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov w21, wzr b G_M35244_IG06 ;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x20] +[x22]
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG26
+ 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_IG15
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, 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 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20] - ldr w0, [x22, #0x28]
+ mov x21, x0 + ; gcrRegs +[x21] + ldr w0, [x20, #0x28]
; gcrRegs -[x0] mov w1, #32
- strb w1, [x20, #0x2E] - str w0, [x20, #0x28] - mov x0, x20
+ strb w1, [x21, #0x2E] + str w0, [x21, #0x28] + mov x0, x21
; gcrRegs +[x0]
- mov x1, x22
+ mov x1, x20
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this movk x2, #0xD1FFAB1E LSL #16 @@ -262,19 +254,19 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 { sub w1, w0, #1 mov x0, x19 ; gcrRegs +[x0]
- mov x2, x20
+ mov x2, x21
...

+4 (+0.46%) : 523249.dasm - DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)

@@ -84,7 +84,7 @@ G_M46668_IG03: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ;; size=36 bbWeight=0.01 PerfScore 0.05 G_M46668_IG04: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz cmp w22, w19
- bge G_M46668_IG15
+ bge G_M46668_IG08
;; size=8 bbWeight=0.01 PerfScore 0.01 G_M46668_IG05: ; bbWeight=99.99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz and w0, w22, #7 @@ -92,7 +92,7 @@ G_M46668_IG05: ; bbWeight=99.99, gcrefRegs=100000 {x20}, byrefRegs=0000 { and w1, w1, #7 csneg w24, w0, w1, mi cmp w24, #7
- bhi G_M46668_IG14
+ bhi G_M46668_IG07
mov w0, w24 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -129,10 +129,24 @@ G_M46668_IG06: ; bbWeight=12.64, gcrefRegs=100000 {x20}, byrefRegs=0000 { ; gcrRegs +[x0] ; gcr arg pop 0 str w22, [x0, #0x08]
- b G_M46668_IG14 - ;; size=80 bbWeight=12.64 PerfScore 227.54 -G_M46668_IG07: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ;; size=76 bbWeight=12.64 PerfScore 214.90 +G_M46668_IG07: ; bbWeight=99.99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
+ add w22, w22, #1 + cmp w22, w19 + blt G_M46668_IG05 + ;; size=12 bbWeight=99.99 PerfScore 199.98 +G_M46668_IG08: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + movn w0, #0 + mov w1, #2 + bl <unknown method> + ; gcr arg pop 0 + add w23, w23, #1 + cmp w23, w21 + bge G_M46668_IG16 + b G_M46668_IG03 + ;; size=28 bbWeight=0.01 PerfScore 0.05 +G_M46668_IG09: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -162,9 +176,9 @@ G_M46668_IG07: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 { ; gcrRegs +[x0] ; gcr arg pop 0 strb wzr, [x0, #0x08]
- b G_M46668_IG14
+ b G_M46668_IG07
;; size=84 bbWeight=12.48 PerfScore 230.90
-G_M46668_IG08: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M46668_IG10: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -197,73 +211,73 @@ G_M46668_IG08: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 { ; gcrRegs +[x0] ; gcr arg pop 0 str s8, [x0, #0x08]
- b G_M46668_IG14
+ b G_M46668_IG07
;; size=92 bbWeight=12.48 PerfScore 393.16
-G_M46668_IG09: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - ; gcr arg pop 0 - ldr x3, [x20, #0x08] - ; gcrRegs +[x3] - strb w22, [x0, #0x08] - mov x2, x0 - ; gcrRegs +[x2] - sxtw x1, w22 - mov x0, x3 - movz x3, #0xD1FFAB1E // code for CORINFO_HELP_ARRADDR_ST - ; gcrRegs -[x3] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0 x2] - ; gcr arg pop 0 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - ; gcr arg pop 0 - strb w22, [x0, #0x08] - b G_M46668_IG14 - ;; size=80 bbWeight=12.48 PerfScore 224.66 -G_M46668_IG10: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - ; gcr arg pop 0 - ldr x3, [x20, #0x08] - ; gcrRegs +[x3] - strh w22, [x0, #0x08] - mov x2, x0 - ; gcrRegs +[x2] - sxtw x1, w22 - mov x0, x3 - movz x3, #0xD1FFAB1E // code for CORINFO_HELP_ARRADDR_ST - ; gcrRegs -[x3] - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0 x2] - ; gcr arg pop 0 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - ; gcr arg pop 0 - strh w22, [x0, #0x08] - b G_M46668_IG14 - ;; size=80 bbWeight=12.48 PerfScore 224.66
G_M46668_IG11: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + ; gcr arg pop 0 + ldr x3, [x20, #0x08] + ; gcrRegs +[x3] + strb w22, [x0, #0x08] + mov x2, x0 + ; gcrRegs +[x2] + sxtw x1, w22 + mov x0, x3 + movz x3, #0xD1FFAB1E // code for CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[x3] + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x0 x2] + ; gcr arg pop 0 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + ; gcr arg pop 0 + strb w22, [x0, #0x08] + b G_M46668_IG07 + ;; size=80 bbWeight=12.48 PerfScore 224.66 +G_M46668_IG12: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + ; gcr arg pop 0 + ldr x3, [x20, #0x08] + ; gcrRegs +[x3] + strh w22, [x0, #0x08] + mov x2, x0 + ; gcrRegs +[x2] + sxtw x1, w22 + mov x0, x3 + movz x3, #0xD1FFAB1E // code for CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[x3] + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x0 x2] + ; gcr arg pop 0 + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + ; gcr arg pop 0 + strh w22, [x0, #0x08] + b G_M46668_IG07 + ;; size=80 bbWeight=12.48 PerfScore 224.66 +G_M46668_IG13: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -295,9 +309,9 @@ G_M46668_IG11: ; bbWeight=12.48, gcrefRegs=100000 {x20}, byrefRegs=0000 { ; gcr arg pop 0 sxtw x1, w22 str x1, [x0, #0x08]
- b G_M46668_IG14
+ b G_M46668_IG07
;; size=88 bbWeight=12.48 PerfScore 237.14
-G_M46668_IG12: ; bbWeight=12.47, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M46668_IG14: ; bbWeight=12.47, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] movz x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -328,9 +342,9 @@ G_M46668_IG12: ; bbWeight=12.47, gcrefRegs=100000 {x20}, byrefRegs=0000 { ; gcrRegs +[x0] ; gcr arg pop 0 str d8, [x0, #0x08]
- b G_M46668_IG14
+ b G_M46668_IG07
;; size=84 bbWeight=12.47 PerfScore 461.44
-G_M46668_IG13: ; bbWeight=12.47, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M46668_IG15: ; bbWeight=12.47, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -360,24 +374,10 @@ G_M46668_IG13: ; bbWeight=12.47, gcrefRegs=100000 {x20}, byrefRegs=0000 { ; gcrRegs +[x0] ; gcr arg pop 0 strh w22, [x0, #0x08]
- ;; size=76 bbWeight=12.47 PerfScore 212.01 -G_M46668_IG14: ; bbWeight=99.99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - add w22, w22, #1 - cmp w22, w19 - blt G_M46668_IG05 - ;; size=12 bbWeight=99.99 PerfScore 199.98 -G_M46668_IG15: ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - movn w0, #0 - mov w1, #2 - bl <unknown method> - ; gcr arg pop 0 - add w23, w23, #1 - cmp w23, w21 - blt G_M46668_IG03 - ;; size=24 bbWeight=0.01 PerfScore 0.04
+ b G_M46668_IG07 + ;; size=80 bbWeight=12.47 PerfScore 224.48
G_M46668_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x20]
+ ; gcrRegs -[x0 x20]
mov w0, #1 ;; size=4 bbWeight=0 PerfScore 0.00 G_M46668_IG17: ; bbWeight=0, epilog, nogc, extend @@ -390,17 +390,17 @@ G_M46668_IG17: ; bbWeight=0, epilog, nogc, extend ...

libraries_tests.run.linux.arm64.Release.mch

-4 (-0.63%) : 636139.dasm - System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -55,117 +55,44 @@ G_M8145_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=56 bbWeight=1 PerfScore 11.50 G_M8145_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldrb w0, [x19, #0x04]
- cbnz w0, G_M8145_IG13
+ cbnz w0, G_M8145_IG21
;; size=8 bbWeight=1 PerfScore 4.00 G_M8145_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ldr x0, [x19, #0x10] ; gcrRegs +[x0]
- cbnz x0, G_M8145_IG05
+ cbnz x0, G_M8145_IG07
;; size=8 bbWeight=1 PerfScore 4.00 G_M8145_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref ; gcrRegs -[x0] mov w0, #3
- str w0, [x19] - b G_M8145_IG08 - ;; size=12 bbWeight=0.50 PerfScore 1.25 -G_M8145_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - ldr w21, [x19] - cbnz w21, G_M8145_IG17 - ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M8145_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - mov w0, #1
str w0, [x19] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M8145_IG07: ; bbWeight=0.50, epilog, nogc, extend
+G_M8145_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x19] + mov w0, wzr + ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M8145_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldr x21, [sp, #0xB8] ldp x19, x20, [sp, #0xA8] ldp fp, lr, [sp], #0xC0 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M8145_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[x19] - mov w0, wzr - ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M8145_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz + ; byrRegs +[x19] + ldr w21, [x19] + cbnz w21, G_M8145_IG25 + ;; size=8 bbWeight=0.50 PerfScore 2.00 +G_M8145_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + mov w0, #1 + str w0, [x19] + ;; size=8 bbWeight=0.50 PerfScore 0.75
G_M8145_IG09: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0xB8] ldp x19, x20, [sp, #0xA8] ldp fp, lr, [sp], #0xC0 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M8145_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_NEWSFAST - ; gcrRegs +[x0] - mov x21, x0 - ; gcrRegs +[x21] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0] - mov x0, x21 - ; gcrRegs +[x0] - bl CORINFO_HELP_THROW - ; gcrRegs -[x0 x21] - ;; size=48 bbWeight=0 PerfScore 0.00 -G_M8145_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - uxtb w0, w0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M8145_IG12: ; bbWeight=0, epilog, nogc, extend - ldr x21, [sp, #0xB8] - ldp x19, x20, [sp, #0xA8] - ldp fp, lr, [sp], #0xC0 - ret lr - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M8145_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz - ; byrRegs +[x19] - ldr x0, [x20, #0x38] - ldr x0, [x0] - ldr x0, [x0, #0x20] - cbz x0, G_M8145_IG14 - b G_M8145_IG15 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M8145_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - mov x0, x20 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M8145_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, nogc - sub x1, x19, #24 - ldr x2, [x1, #0x18] - str x2, [fp, #0x18] - ldp q16, q17, [x1, #0x20] - stp q16, q17, [fp, #0x20] - ldp q16, q17, [x1, #0x40] - stp q16, q17, [fp, #0x40] - ldr x2, [x1, #0x60] - str x2, [fp, #0x60] - ;; size=36 bbWeight=0 PerfScore 0.00 -G_M8145_IG16: ; bbWeight=0, extend - add x1, fp, #24 // [V14 tmp11] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - b G_M8145_IG03 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M8145_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz - cmp w21, #3 - bhi G_M8145_IG10 - mov w0, w21 - adr x1, [@RWD00] - ldr w1, [x1, x0, LSL #2] - adr x2, [G_M8145_IG02] - add x1, x1, x2 - br x1 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M8145_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M8145_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
ldr x0, [x19, #0x10] ; gcrRegs +[x0] ldr x0, [x0, #0x10] @@ -176,10 +103,10 @@ G_M8145_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr ldr x0, [x20, #0x38] ldr x0, [x0] ldr x1, [x0, #0x18]
- cbz x1, G_M8145_IG19 - b G_M8145_IG20
+ cbz x1, G_M8145_IG11 + b G_M8145_IG12
;; size=40 bbWeight=0 PerfScore 0.00
-G_M8145_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M8145_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -187,7 +114,7 @@ G_M8145_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8145_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M8145_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
ldr x2, [x19, #0x10] ; gcrRegs +[x2] add x0, fp, #104 // [V07 tmp4] @@ -216,10 +143,10 @@ G_M8145_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr ldr x0, [x20, #0x38] ldr x0, [x0] ldr x1, [x0, #0x18]
- cbz x1, G_M8145_IG21 - b G_M8145_IG22
+ cbz x1, G_M8145_IG13 + b G_M8145_IG14
;; size=104 bbWeight=0 PerfScore 0.00
-G_M8145_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M8145_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
; byrRegs -[x13-x14] mov x0, x20 movz x1, #0xD1FFAB1E @@ -228,7 +155,7 @@ G_M8145_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8145_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M8145_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x19, #24 ; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this @@ -237,17 +164,17 @@ G_M8145_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr ldr x2, [x2] blr x2 ; byrRegs -[x0 x19]
- b G_M8145_IG11
+ b G_M8145_IG19
;; size=28 bbWeight=0 PerfScore 0.00
-G_M8145_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M8145_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19] ldr x0, [x20, #0x38] ldr x0, [x0] ldr x1, [x0, #0x18]
- cbz x1, G_M8145_IG24 - b G_M8145_IG25
+ cbz x1, G_M8145_IG16 + b G_M8145_IG17
;; size=20 bbWeight=0 PerfScore 0.00
-G_M8145_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M8145_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
mov x0, x20 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -255,7 +182,7 @@ G_M8145_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8145_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M8145_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
add x0, x19, #24 ; byrRegs +[x0] movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this @@ -264,15 +191,88 @@ G_M8145_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byr ldr x2, [x2] blr x2 ; byrRegs -[x0 x19]
- b G_M8145_IG11
+ b G_M8145_IG19
;; size=28 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M8145_IG06 - G_M8145_IG02 - dd G_M8145_IG18 - G_M8145_IG02 - dd G_M8145_IG23 - G_M8145_IG02 - dd G_M8145_IG08 - G_M8145_IG02
+G_M8145_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + mov x21, x0 + ; gcrRegs +[x21] + movz x1, #0xD1FFAB1E // code for <unknown method> + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0] + mov x0, x21 + ; gcrRegs +[x0] + bl CORINFO_HELP_THROW + ; gcrRegs -[x0 x21] + ;; size=48 bbWeight=0 PerfScore 0.00 +G_M8145_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + uxtb w0, w0 + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M8145_IG20: ; bbWeight=0, epilog, nogc, extend + ldr x21, [sp, #0xB8] + ldp x19, x20, [sp, #0xA8] + ldp fp, lr, [sp], #0xC0
...

-12 (-0.46%) : 453371.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.80
-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%) : 672472.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 21139
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 21139
; 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.34, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov w21, #9 - b G_M57106_IG05 - ;; size=8 bbWeight=0.34 PerfScore 0.51 -G_M57106_IG04: ; bbWeight=0.66, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M57106_IG03: ; bbWeight=0.66, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x20, #0x58] @@ -93,12 +89,12 @@ G_M57106_IG04: ; bbWeight=0.66, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcr arg pop 0 sxtw w21, w0 ;; size=20 bbWeight=0.66 PerfScore 5.28
-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.87, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG05: ; bbWeight=0.87, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -111,21 +107,9 @@ G_M57106_IG06: ; bbWeight=0.87, 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.87 PerfScore 5.19
-G_M57106_IG07: ; bbWeight=0.31, 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.31 PerfScore 2.18 -G_M57106_IG08: ; bbWeight=0.55, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19]
+G_M57106_IG06: ; bbWeight=0.55, 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.55, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b mov x19, x0 ; gcrRegs +[x19] ;; size=16 bbWeight=0.55 PerfScore 4.15
-G_M57106_IG09: ; bbWeight=0.87, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG07: ; bbWeight=0.87, 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.87, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr w1, [x19, #0x08] cbnz w1, G_M57106_IG16 ;; size=24 bbWeight=0.87 PerfScore 7.35
-G_M57106_IG10: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57106_IG08: ; 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 @@ -153,7 +137,7 @@ G_M57106_IG10: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr x0, [x1, #0x08] ; gcrRegs +[x0] ;; size=20 bbWeight=0.80 PerfScore 5.98
-G_M57106_IG11: ; bbWeight=0.87, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M57106_IG09: ; bbWeight=0.87, 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.87, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.87 PerfScore 6.06
-G_M57106_IG12: ; bbWeight=0.13, 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.13 PerfScore 1.01 -G_M57106_IG13: ; bbWeight=0.13, 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.13 PerfScore 0.94 -G_M57106_IG14: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57106_IG10: ; bbWeight=0.34, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
+ mov w21, #9 + b G_M57106_IG04 + ;; size=8 bbWeight=0.34 PerfScore 0.51 +G_M57106_IG11: ; bbWeight=0.31, 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.31 PerfScore 2.18 +G_M57106_IG12: ; bbWeight=0.13, 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.13, gcVars=0000000000000000 {}, gcrefRegs=800 add x1, x1, x2 br x1 ;; size=32 bbWeight=0.13 PerfScore 1.01
-G_M57106_IG15: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG13: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, #15 bne G_M57106_IG34
- b G_M57106_IG12 - ;; size=12 bbWeight=0.13 PerfScore 0.34 -G_M57106_IG16: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20]
+ ;; size=8 bbWeight=0.13 PerfScore 0.20 +G_M57106_IG14: ; bbWeight=0.13, 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.13 PerfScore 1.01 +G_M57106_IG15: ; bbWeight=0.13, 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.13 PerfScore 0.94 +G_M57106_IG16: ; bbWeight=0.07, 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.07, 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.07 PerfScore 0.57 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.15 G_M57106_IG18: ; bbWeight=0.07, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov w1, #24 @@ -231,8 +231,8 @@ G_M57106_IG18: ; bbWeight=0.07, 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.07 PerfScore 1.37 G_M57106_IG19: ; bbWeight=0.07, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x22] @@ -241,7 +241,7 @@ G_M57106_IG19: ; bbWeight=0.07, 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.07 PerfScore 0.40 G_M57106_IG20: ; bbWeight=0.07, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -259,14 +259,18 @@ G_M57106_IG21: ; bbWeight=0.07, 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.07 PerfScore 0.33 -G_M57106_IG22: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.07 PerfScore 0.27 +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.07, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57106_IG25: ; bbWeight=0.07, 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.07 PerfScore 0.10
-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
...

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

@@ -73,30 +73,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_IG55
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- beq G_M35244_IG04
+ bne G_M35244_IG55
;; size=24 bbWeight=1 PerfScore 7.00
-G_M35244_IG03: ; bbWeight=1.28, 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.28 PerfScore 5.14 -G_M35244_IG04: ; bbWeight=3.80, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x19]
+G_M35244_IG03: ; bbWeight=3.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG46
+ bls G_M35244_IG45
;; size=16 bbWeight=3.80 PerfScore 19.00
-G_M35244_IG05: ; bbWeight=3.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=3.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG03
+ bhi G_M35244_IG55
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -104,11 +96,11 @@ G_M35244_IG05: ; bbWeight=3.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add x0, x0, x2 br x0 ;; size=36 bbWeight=3.40 PerfScore 27.20
-G_M35244_IG06: ; bbWeight=0.07, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M35244_IG05: ; bbWeight=0.07, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20-x21] mov w22, #1 ;; size=4 bbWeight=0.07 PerfScore 0.04
-G_M35244_IG07: ; bbWeight=0.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=0.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
sub w22, w22, #1 add x14, x21, #24 ; byrRegs +[x14] @@ -137,12 +129,12 @@ G_M35244_IG07: ; bbWeight=0.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; byrRegs -[x14] ldr x14, [x19, #0x08] ; gcrRegs +[x14]
- cbnz x14, G_M35244_IG10
+ cbnz x14, G_M35244_IG09
;; size=64 bbWeight=0.20 PerfScore 3.00
-G_M35244_IG08: ; bbWeight=0.20, gcrefRegs=384000 {x14 x19 x20 x21}, byrefRegs=0000 {}, byref, isz - cbz x14, G_M35244_IG26
+G_M35244_IG07: ; bbWeight=0.20, gcrefRegs=384000 {x14 x19 x20 x21}, byrefRegs=0000 {}, byref, isz + cbz x14, G_M35244_IG25
;; size=4 bbWeight=0.20 PerfScore 0.20
-G_M35244_IG09: ; bbWeight=3.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=3.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x14] add x14, x19, #8 ; byrRegs +[x14] @@ -151,80 +143,80 @@ G_M35244_IG09: ; bbWeight=3.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15 x19 x21] ; byrRegs -[x14]
- b G_M35244_IG40
+ b G_M35244_IG39
;; size=16 bbWeight=3.20 PerfScore 9.60
-G_M35244_IG10: ; bbWeight=0.10, gcrefRegs=384000 {x14 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=0.10, gcrefRegs=384000 {x14 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x14 x19 x21] ldr x15, [x14] movz x12, #0xD1FFAB1E movk x12, #0xD1FFAB1E LSL #16 movk x12, #0xD1FFAB1E LSL #32 cmp x15, x12
- beq G_M35244_IG08
+ beq G_M35244_IG07
;; size=24 bbWeight=0.10 PerfScore 0.60
-G_M35244_IG11: ; bbWeight=0.05, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M35244_IG10: ; bbWeight=0.05, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x14] mov x14, xzr ; gcrRegs +[x14]
- b G_M35244_IG08
+ b G_M35244_IG07
;; size=8 bbWeight=0.05 PerfScore 0.08
-G_M35244_IG12: ; bbWeight=0.87, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.87, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x14 x21] mov w21, #1 ;; size=4 bbWeight=0.87 PerfScore 0.43
-G_M35244_IG13: ; bbWeight=2.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG16
+ cbz x22, G_M35244_IG15
;; size=12 bbWeight=2.40 PerfScore 4.80
-G_M35244_IG14: ; bbWeight=1.20, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.20, 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_IG16
+ beq G_M35244_IG15
;; size=24 bbWeight=1.20 PerfScore 7.20
-G_M35244_IG15: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov x22, xzr ; gcrRegs +[x22] ;; size=4 bbWeight=0.60 PerfScore 0.30
-G_M35244_IG16: ; bbWeight=2.40, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz - cbnz x22, G_M35244_IG31
+G_M35244_IG15: ; bbWeight=2.40, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x22, G_M35244_IG30
;; size=4 bbWeight=2.40 PerfScore 2.40
-G_M35244_IG17: ; bbWeight=1.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG19
+ cbz x22, G_M35244_IG18
;; size=8 bbWeight=1.42 PerfScore 2.13
-G_M35244_IG18: ; bbWeight=0.71, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=0.71, 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_IG22
+ bne G_M35244_IG21
;; size=24 bbWeight=0.71 PerfScore 4.27
-G_M35244_IG19: ; bbWeight=1.42, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=1.42, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr w1, [x22, #0x10] cmp w21, w1
- bhs G_M35244_IG54
+ bhs G_M35244_IG53
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w21, w0
- bhs G_M35244_IG55
+ bhs G_M35244_IG54
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] ldr x20, [x1, w21, UXTW #3] ; gcrRegs +[x20] ;; size=36 bbWeight=1.42 PerfScore 22.04
-G_M35244_IG20: ; bbWeight=2.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=2.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ; byrRegs -[x1] ldrb w1, [x20, #0x2E] @@ -233,12 +225,12 @@ G_M35244_IG20: ; bbWeight=2.40, gcrefRegs=180000 {x19 x20}, byrefRegs=000 cmp w1, #24 ccmp w0, #1, z, ne ccmp w2, #1, z, hi
- bhi G_M35244_IG40
+ bhi G_M35244_IG39
;; size=28 bbWeight=2.40 PerfScore 15.60
-G_M35244_IG21: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - b G_M35244_IG33
+G_M35244_IG20: ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + b G_M35244_IG32
;; size=4 bbWeight=0.20 PerfScore 0.20
-G_M35244_IG22: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov x1, x20 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTCLASS_SPECIAL @@ -246,15 +238,15 @@ G_M35244_IG22: ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcr arg pop 0 mov x22, x0 ; gcrRegs +[x22]
- b G_M35244_IG19
+ b G_M35244_IG18
;; size=16 bbWeight=0.36 PerfScore 1.07
-G_M35244_IG23: ; bbWeight=2.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=2.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x22] ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG28
+ cbz x20, G_M35244_IG27
;; size=8 bbWeight=2.40 PerfScore 9.60
-G_M35244_IG24: ; bbWeight=1.69, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=1.69, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -263,66 +255,66 @@ G_M35244_IG24: ; bbWeight=1.69, 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.69 PerfScore 6.74
-G_M35244_IG25: ; bbWeight=0.82, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0.82, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
ldr w21, [x0, #0x10]
- b G_M35244_IG13
+ b G_M35244_IG12
;; size=8 bbWeight=0.82 PerfScore 3.27
-G_M35244_IG26: ; bbWeight=0.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG25: ; bbWeight=0.20, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x21] ldr x1, [x19, #0x08] ; gcrRegs +[x1] mov x19, x1
- cbz x19, G_M35244_IG37
+ cbz x19, G_M35244_IG36
;; size=12 bbWeight=0.20 PerfScore 0.90
-G_M35244_IG27: ; bbWeight=0.10, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref - b G_M35244_IG29
+G_M35244_IG26: ; bbWeight=0.10, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref + b G_M35244_IG28
;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M35244_IG28: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x1 x21] mov w21, wzr
- b G_M35244_IG13
+ b G_M35244_IG12
;; size=8 bbWeight=0.71 PerfScore 1.07
-G_M35244_IG29: ; bbWeight=0.10, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0.10, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1 x21] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x2, [x19] cmp x2, x0
- beq G_M35244_IG37
...

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

@@ -64,22 +64,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_IG18
+ cbz w0, G_M35244_IG48
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG18
+ bne G_M35244_IG48
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=3.71, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] sub w1, w0, #3 cmp w1, #5
- bls G_M35244_IG32
+ bls G_M35244_IG31
;; size=16 bbWeight=3.71 PerfScore 18.57 G_M35244_IG04: ; bbWeight=3.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG18
+ bhi G_M35244_IG48
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -90,7 +90,7 @@ G_M35244_IG04: ; bbWeight=3.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=2.43, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG21
+ cbz x20, G_M35244_IG20
;; size=8 bbWeight=2.43 PerfScore 9.71 G_M35244_IG06: ; bbWeight=1.82, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -101,7 +101,7 @@ G_M35244_IG06: ; bbWeight=1.82, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG20
+ cbz x0, G_M35244_IG19
;; size=24 bbWeight=1.82 PerfScore 7.29 G_M35244_IG07: ; bbWeight=1.05, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10] @@ -127,7 +127,7 @@ G_M35244_IG10: ; bbWeight=0.61, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x22] ;; size=4 bbWeight=0.61 PerfScore 0.30 G_M35244_IG11: ; bbWeight=2.43, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- cbnz x22, G_M35244_IG19
+ cbnz x22, G_M35244_IG18
;; size=4 bbWeight=2.43 PerfScore 2.43 G_M35244_IG12: ; bbWeight=1.49, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] @@ -157,12 +157,12 @@ G_M35244_IG15: ; bbWeight=1.49, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] ldr w0, [x22, #0x10] cmp w21, w0
- bhs G_M35244_IG47
+ bhs G_M35244_IG46
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w21, w1
- bhs G_M35244_IG48
+ bhs G_M35244_IG47
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -178,7 +178,7 @@ G_M35244_IG16: ; bbWeight=2.43, gcrefRegs=180000 {x19 x20}, byrefRegs=000 cmp w0, #24 ccmp w1, #1, z, ne ccmp w2, #1, z, hi
- bls G_M35244_IG34
+ bls G_M35244_IG33
;; size=28 bbWeight=2.43 PerfScore 15.79 G_M35244_IG17: ; bbWeight=2.43, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -186,71 +186,64 @@ G_M35244_IG17: ; bbWeight=2.43, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=2.43 PerfScore 3.64
-G_M35244_IG18: ; bbWeight=1.33, 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=1.33 PerfScore 5.31 -G_M35244_IG19: ; bbWeight=0.94, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19 x22]
+G_M35244_IG18: ; bbWeight=0.94, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20] +[x22]
mov x20, x22 ; gcrRegs +[x20] b G_M35244_IG16 ;; size=8 bbWeight=0.94 PerfScore 1.41
-G_M35244_IG20: ; bbWeight=0.77, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.77, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] mov w21, #1 b G_M35244_IG08 ;; size=8 bbWeight=0.77 PerfScore 1.15
-G_M35244_IG21: ; bbWeight=0.61, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=0.61, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w21, wzr b G_M35244_IG08 ;; size=8 bbWeight=0.61 PerfScore 0.91
-G_M35244_IG22: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG21: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] ldr w1, [x19, #0x24] cmp w1, #1
- bne G_M35244_IG46
+ bne G_M35244_IG45
;; size=12 bbWeight=0.29 PerfScore 1.29
-G_M35244_IG23: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x08] ; gcrRegs +[x20] mov x19, x20
- cbz x19, G_M35244_IG26
+ cbz x19, G_M35244_IG25
;; size=12 bbWeight=0.29 PerfScore 1.29
-G_M35244_IG24: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x1, [x19] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- beq G_M35244_IG26
+ beq G_M35244_IG25
;; size=24 bbWeight=0.14 PerfScore 0.86
-G_M35244_IG25: ; bbWeight=0.07, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0.07, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, xzr ; gcrRegs +[x19] ;; size=4 bbWeight=0.07 PerfScore 0.04
-G_M35244_IG26: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - cbnz x19, G_M35244_IG39
+G_M35244_IG25: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + cbnz x19, G_M35244_IG38
;; size=4 bbWeight=0.29 PerfScore 0.29
-G_M35244_IG27: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG26: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG30
+ cbz x19, G_M35244_IG29
;; size=8 bbWeight=0.18 PerfScore 0.26
-G_M35244_IG28: ; bbWeight=0.09, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0.09, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x19] cmp x1, x0
- beq G_M35244_IG30
+ beq G_M35244_IG29
;; size=24 bbWeight=0.09 PerfScore 0.53
-G_M35244_IG29: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x1, x20 ; gcrRegs +[x1] @@ -260,22 +253,22 @@ G_M35244_IG29: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov x19, x0 ; gcrRegs +[x19] ;; size=12 bbWeight=0.04 PerfScore 0.09
-G_M35244_IG30: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w0, [x19, #0x10]
- cbz w0, G_M35244_IG47
+ cbz w0, G_M35244_IG46
ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M35244_IG48
+ bls G_M35244_IG47
ldr x19, [x0, #0x10] ;; size=28 bbWeight=0.18 PerfScore 2.54
-G_M35244_IG31: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] b G_M35244_IG03 ;; size=4 bbWeight=0.29 PerfScore 0.29
-G_M35244_IG32: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this @@ -283,24 +276,24 @@ G_M35244_IG32: ; bbWeight=0.29, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0.29 PerfScore 1.43
-G_M35244_IG33: ; bbWeight=0.29, epilog, nogc, extend
+G_M35244_IG32: ; bbWeight=0.29, 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.29 PerfScore 1.14
-G_M35244_IG34: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35244_IG33: ; bbWeight=0.14, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x20] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG35
+ cbz x0, G_M35244_IG34
ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32 beq G_M35244_IG17 ;; size=20 bbWeight=0.14 PerfScore 1.21
-G_M35244_IG35: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG34: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -327,9 +320,9 @@ G_M35244_IG35: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcr arg pop 0 ldr x1, [x19, #0x08] ; gcrRegs +[x1]
- cbz x1, G_M35244_IG41
+ cbz x1, G_M35244_IG40
;; size=72 bbWeight=0.14 PerfScore 2.71
-G_M35244_IG36: ; bbWeight=0.11, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG35: ; bbWeight=0.11, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1] ldr x1, [x19, #0x08] ; gcrRegs +[x1] @@ -339,12 +332,12 @@ G_M35244_IG36: ; bbWeight=0.11, gcrefRegs=380000 {x19 x20 x21}, byrefRegs bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG40
+ cbz x0, G_M35244_IG39
;; size=24 bbWeight=0.11 PerfScore 0.70
-G_M35244_IG37: ; bbWeight=0.06, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M35244_IG36: ; bbWeight=0.06, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
ldr w22, [x0, #0x10] ;; size=4 bbWeight=0.06 PerfScore 0.19
-G_M35244_IG38: ; bbWeight=0.14, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M35244_IG37: ; bbWeight=0.14, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
...

+0 (0.00%) : 447584.dasm - System.Xml.Xsl.XsltOld.ForEachAction:Execute(System.Xml.Xsl.XsltOld.Processor,System.Xml.Xsl.XsltOld.ActionFrame):this (Tier1)

@@ -107,7 +107,7 @@ G_M23326_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M23326_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w2, [x19, #0x48] cmp w2, #5
- bne G_M23326_IG18
+ bne G_M23326_IG43
;; size=12 bbWeight=1 PerfScore 4.50 G_M23326_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x21] @@ -138,7 +138,7 @@ G_M23326_IG05: ; bbWeight=0.59, gcrefRegs=580000 {x19 x20 x22}, byrefRegs movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M23326_IG40
+ bne G_M23326_IG37
;; size=32 bbWeight=0.59 PerfScore 5.61 G_M23326_IG06: ; bbWeight=0.57, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref movz x23, #0xD1FFAB1E @@ -150,7 +150,7 @@ G_M23326_IG07: ; bbWeight=1.07, gcrefRegs=780000 {x19 x20 x21 x22}, byref ; gcrRegs +[x0] ldr x1, [x0] cmp x1, x23
- bne G_M23326_IG45
+ bne G_M23326_IG42
;; size=16 bbWeight=1.07 PerfScore 8.02 G_M23326_IG08: ; bbWeight=0.67, gcrefRegs=780001 {x0 x19 x20 x21 x22}, byrefRegs=0000 {}, byref movz x1, #0xD1FFAB1E // code for MS.Internal.Xml.XPath.ChildrenQuery:Advance():System.Xml.XPath.XPathNavigator:this @@ -167,7 +167,7 @@ G_M23326_IG09: ; bbWeight=1.07, gcrefRegs=780001 {x0 x19 x20 x21 x22}, by bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- cbz x0, G_M23326_IG17
+ cbz x0, G_M23326_IG47
;; size=16 bbWeight=1.07 PerfScore 3.21 G_M23326_IG10: ; bbWeight=0.80, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -187,7 +187,7 @@ G_M23326_IG11: ; bbWeight=0.30, gcrefRegs=780000 {x19 x20 x21 x22}, byref str w0, [x21, #0x38] ldr x23, [x21, #0x30] ; gcrRegs +[x23]
- b G_M23326_IG41
+ b G_M23326_IG38
;; size=20 bbWeight=0.30 PerfScore 2.54 G_M23326_IG12: ; bbWeight=0.41, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x21 x23] @@ -209,39 +209,184 @@ G_M23326_IG14: ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x0] ldrb w0, [x0, #0x4C] ; gcrRegs -[x0]
- cbnz w0, G_M23326_IG63
+ cbnz w0, G_M23326_IG51
;; size=12 bbWeight=0.64 PerfScore 4.45 G_M23326_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz w22, G_M23326_IG48
+ cbz w22, G_M23326_IG46
;; size=4 bbWeight=1 PerfScore 1.00 G_M23326_IG16: ; bbWeight=0.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref mov w0, #4 str w0, [x19, #0x48]
- b G_M23326_IG22 - ;; size=12 bbWeight=0.67 PerfScore 1.67 -G_M23326_IG17: ; bbWeight=0.27, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref - ; gcrRegs +[x22] - mov x23, xzr - ; gcrRegs +[x23] - b G_M23326_IG41 - ;; size=8 bbWeight=0.27 PerfScore 0.40 -G_M23326_IG18: ; bbWeight=0.33, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22-x23] +[x21] - cmp w2, #5 - bhi G_M23326_IG21 - mov w2, w2 - adr x1, [@RWD00] - ldr w1, [x1, x2, LSL #2] - adr x0, [G_M23326_IG02] - add x1, x1, x0 - br x1 - ;; size=32 bbWeight=0.33 PerfScore 2.50 -G_M23326_IG19: ; bbWeight=0.15, gcrefRegs=3080000 {x19 x24 x25}, byrefRegs=0000 {}, byref - ; gcrRegs -[x20-x21] +[x24-x25] - mov x0, xzr
+ ;; size=8 bbWeight=0.67 PerfScore 1.00 +G_M23326_IG17: ; bbWeight=0.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ldr x24, [x19, #0x30] + ; gcrRegs +[x24] + ldr x0, [x20, #0x30]
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.15 PerfScore 0.08 -G_M23326_IG20: ; bbWeight=0.67, gcrefRegs=3080001 {x0 x19 x24 x25}, byrefRegs=0000 {}, byref
+ mov x1, x0 + ; gcrRegs +[x1] + ldr w2, [x1, #0x14] + cmp w2, #0 + ble G_M23326_IG50 + ;; size=24 bbWeight=0.67 PerfScore 7.33 +G_M23326_IG18: ; bbWeight=0.62, gcrefRegs=1180003 {x0 x1 x19 x20 x24}, byrefRegs=0000 {}, byref, isz + ldr x1, [x1, #0x08] + sub w2, w2, #1 + ldr w3, [x1, #0x08] + cmp w2, w3 + bhs G_M23326_IG64 + add x1, x1, #16 + ; gcrRegs -[x1] + ; byrRegs +[x1] + ldr x1, [x1, w2, UXTW #3] + ; gcrRegs +[x1] + ; byrRegs -[x1] + ;; size=28 bbWeight=0.62 PerfScore 7.18 +G_M23326_IG19: ; bbWeight=0.67, gcrefRegs=1180003 {x0 x1 x19 x20 x24}, byrefRegs=0000 {}, byref, isz + mov x23, x1 + ; gcrRegs +[x23] + cbz x23, G_M23326_IG21 + ;; size=8 bbWeight=0.67 PerfScore 1.00 +G_M23326_IG20: ; bbWeight=0.33, gcrefRegs=1980003 {x0 x1 x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x3, [x23] + cmp x3, x2 + bne G_M23326_IG59 + ;; size=24 bbWeight=0.33 PerfScore 2.00 +G_M23326_IG21: ; bbWeight=0.67, gcrefRegs=1980001 {x0 x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x1] + movz x1, #0xD1FFAB1E // code for System.Xml.HWStack:Push():System.Object:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + mov x1, x0 + ; gcrRegs +[x1] + mov x25, x1 + ; gcrRegs +[x25] + cbz x25, G_M23326_IG23 + ;; size=32 bbWeight=0.67 PerfScore 5.00 +G_M23326_IG22: ; bbWeight=0.33, gcrefRegs=3980002 {x1 x19 x20 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x2, [x25] + cmp x2, x0 + bne G_M23326_IG60 + ;; size=24 bbWeight=0.33 PerfScore 2.00 +G_M23326_IG23: ; bbWeight=0.67, gcrefRegs=3980000 {x19 x20 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x1] + cbnz x25, G_M23326_IG25 + ;; size=4 bbWeight=0.67 PerfScore 0.67 +G_M23326_IG24: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x25] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + mov x25, x0 + ; gcrRegs +[x25] + ldr x0, [x20, #0x30] + ldr w1, [x0, #0x14] + cmp w1, #0 + ble G_M23326_IG25 + sub w1, w1, #1 + sxtw x1, w1 + ldr x0, [x0, #0x08] + mov x2, x25 + ; gcrRegs +[x2] + bl CORINFO_HELP_ARRADDR_ST + ; gcrRegs -[x0 x2 x20] + ;; size=56 bbWeight=0.50 PerfScore 8.03 +G_M23326_IG25: ; bbWeight=0.67, gcrefRegs=3880000 {x19 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + cbz x23, G_M23326_IG27 + ;; size=4 bbWeight=0.67 PerfScore 0.67 +G_M23326_IG26: ; bbWeight=0.56, gcrefRegs=3880000 {x19 x23 x24 x25}, byrefRegs=0000 {}, byref + ldrsb wzr, [x25] + ldr x15, [x23, #0x08] + ; gcrRegs +[x15] + add x14, x25, #8 + ; byrRegs +[x14] + bl CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[x15 x23] + ; byrRegs -[x14] + ;; size=16 bbWeight=0.56 PerfScore 4.18 +G_M23326_IG27: ; bbWeight=0.67, gcrefRegs=3080000 {x19 x24 x25}, byrefRegs=0000 {}, byref, isz + ldrsb wzr, [x25] + ldr x1, [x19, #0x18] + ; gcrRegs +[x1] + mov x23, x1 + ; gcrRegs +[x23] + cbz x23, G_M23326_IG30 + ;; size=16 bbWeight=0.67 PerfScore 5.00 +G_M23326_IG28: ; bbWeight=0.33, gcrefRegs=3880002 {x1 x19 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ldr x2, [x23] + cmp x2, x0 + beq G_M23326_IG30 + ;; size=24 bbWeight=0.33 PerfScore 2.00 +G_M23326_IG29: ; bbWeight=0.17, gcrefRegs=3080002 {x1 x19 x24 x25}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + bl CORINFO_HELP_CHKCASTCLASS_SPECIAL + ; gcrRegs -[x1] +[x0] + mov x23, x0 + ; gcrRegs +[x23] + ;; size=8 bbWeight=0.17 PerfScore 0.25 +G_M23326_IG30: ; bbWeight=0.67, gcrefRegs=3880000 {x19 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + ldr x0, [x23, #0x08] + ; gcrRegs +[x0] + cbz x0, G_M23326_IG48 + ldr x1, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + bne G_M23326_IG61 + ldr w26, [x0, #0x10] + ;; size=36 bbWeight=0.67 PerfScore 8.67 +G_M23326_IG31: ; bbWeight=0.67, gcrefRegs=3880000 {x19 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + cmp w26, #0 + ble G_M23326_IG48 + ;; size=8 bbWeight=0.67 PerfScore 1.00 +G_M23326_IG32: ; bbWeight=0.52, gcrefRegs=3880000 {x19 x23 x24 x25}, byrefRegs=0000 {}, byref, isz + ldr x0, [x23, #0x08] + ; gcrRegs +[x0] + ldr x1, [x0] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + cmp x1, x2 + bne G_M23326_IG63 + ;; size=28 bbWeight=0.52 PerfScore 4.64 +G_M23326_IG33: ; bbWeight=0.52, gcrefRegs=3080001 {x0 x19 x24 x25}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x23] + ldr w1, [x0, #0x10] + cmp w1, #0 + ble G_M23326_IG62 + ldr x1, [x0, #0x08] + ; gcrRegs +[x1] + ldr w0, [x1, #0x08] + ; gcrRegs -[x0] + cmp w0, #0 + bls G_M23326_IG64 + ldr x1, [x1, #0x10] + ;; size=32 bbWeight=0.52 PerfScore 7.74 +G_M23326_IG34: ; bbWeight=0.52, gcrefRegs=3080002 {x1 x19 x24 x25}, byrefRegs=0000 {}, byref + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_CHKCASTCLASS
...

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 7 1 0 6 -4 +0
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 11 0 1 10 -0 +4
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 14 5 0 9 -140 +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
32 6 1 25 -144 +4

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 36,750 3,694 33,056 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.arm64.checked.mch 150,824 57,618 93,206 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.linux.arm64.checked.mch 64,740 48,874 15,866 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch 636,247 390,444 245,803 0 (0.00%) 0 (0.00%)
libraries.crossgen2.linux.arm64.checked.mch 265,473 15 265,458 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 297,587 6 297,581 0 (0.00%) 0 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 735,172 490,071 245,101 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 305,215 21,620 283,595 0 (0.00%) 0 (0.00%)
realworld.run.linux.arm64.checked.mch 33,342 147 33,195 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,000 7 18,993 0 (0.00%) 0 (0.00%)
2,544,350 1,012,496 1,531,854 0 (0.00%) 0 (0.00%)

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

Detail diffs



Top file improvements (bytes):
          -4 : 21218.dasm (-0.52 % of base)

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

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

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

1 total methods with Code Size differences (1 improved, 0 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: 518928384 (overridden on cmd)
Total bytes of diff: 518928388 (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 : 523249.dasm (0.46 % of base)

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

Top method regressions (bytes):
           4 (0.46 % of base) : 523249.dasm - DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)

Top method regressions (percentages):
           4 (0.46 % of base) : 523249.dasm - DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)

1 total methods with Code Size differences (0 improved, 1 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: 383432472 (overridden on cmd)
Total bytes of diff: 383432332 (overridden on cmd)
Total bytes of delta: -140 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -116 : 84138.dasm (-2.41 % of base)
         -12 : 453371.dasm (-0.46 % of base)
          -4 : 64715.dasm (-0.25 % of base)
          -4 : 672472.dasm (-0.43 % of base)
          -4 : 636139.dasm (-0.63 % of base)

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

Top method improvements (bytes):
        -116 (-2.41 % of base) : 84138.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
         -12 (-0.46 % of base) : 453371.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.25 % of base) : 64715.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.43 % of base) : 672472.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -4 (-0.63 % of base) : 636139.dasm - System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method improvements (percentages):
        -116 (-2.41 % of base) : 84138.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
          -4 (-0.63 % of base) : 636139.dasm - System.Collections.Immutable.ImmutableHashSet`1+HashBucket+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-0.46 % of base) : 453371.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.43 % of base) : 672472.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -4 (-0.25 % of base) : 64715.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)

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



linux x64

Diffs are based on 2,535,371 contexts (984,668 MinOpts, 1,550,703 FullOpts).

Overall (-134 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 67,166,891 -13
coreclr_tests.run.linux.x64.checked.mch 418,408,742 -57
libraries_tests.run.linux.x64.Release.mch 331,729,893 -64

FullOpts (-134 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,174,268 -13
coreclr_tests.run.linux.x64.checked.mch 130,639,266 -57
libraries_tests.run.linux.x64.Release.mch 147,894,249 -64

Example diffs

benchmarks.run_pgo.linux.x64.checked.mch

-9 (-1.60%) : 78304.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -56,20 +56,20 @@ G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG20
+ je G_M35244_IG26
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG20
+ 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_IG24
+ jbe G_M35244_IG22
;; size=16 bbWeight=2.99 PerfScore 11.22 G_M35244_IG04: ; bbWeight=2.96, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG20
+ ja G_M35244_IG26
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] @@ -105,7 +105,7 @@ G_M35244_IG09: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ;; size=3 bbWeight=0.50 PerfScore 0.12 G_M35244_IG10: ; bbWeight=1.99, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref test r13, r13
- jne G_M35244_IG22
+ jne G_M35244_IG20
;; size=9 bbWeight=1.99 PerfScore 2.49 G_M35244_IG11: ; bbWeight=1.56, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r13] @@ -129,18 +129,18 @@ G_M35244_IG13: ; bbWeight=0.39, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=12 bbWeight=0.39 PerfScore 1.36
-G_M35244_IG14: ; bbWeight=1.56, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=1.56, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG26
+ jae SHORT G_M35244_IG24
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG27
+ jae SHORT G_M35244_IG25
mov esi, r14d mov r14, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[r14]
- ;; size=32 bbWeight=1.56 PerfScore 19.09
+ ;; size=24 bbWeight=1.56 PerfScore 19.09
G_M35244_IG15: ; bbWeight=1.99, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rdi r13] movzx rdi, byte ptr [r14+0x2E] @@ -170,42 +170,29 @@ G_M35244_IG18: ; bbWeight=1.01, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG23
+ je SHORT G_M35244_IG21
;; size=23 bbWeight=1.01 PerfScore 2.79
-G_M35244_IG19: ; bbWeight=0.76, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M35244_IG21 - ;; size=2 bbWeight=0.76 PerfScore 1.52 -G_M35244_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rax rbx r15] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.02 PerfScore 0.06 -G_M35244_IG21: ; bbWeight=0.76, gcVars=0000000000000000 {}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rax rbx r15]
+G_M35244_IG19: ; bbWeight=0.76, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rax+0x10] jmp G_M35244_IG07 ;; size=9 bbWeight=0.76 PerfScore 3.03
-G_M35244_IG22: ; bbWeight=0.43, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=0.43, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r15] +[r13] mov r14, r13 ; gcrRegs +[r14] jmp SHORT G_M35244_IG15 ;; size=5 bbWeight=0.43 PerfScore 0.98
-G_M35244_IG23: ; bbWeight=0.26, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.26, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13-r14] +[r15] mov r14d, 1 jmp G_M35244_IG07 ;; size=11 bbWeight=0.26 PerfScore 0.58
-G_M35244_IG24: ; bbWeight=0.03, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; 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_IG25: ; bbWeight=0.03, epilog, nogc, extend
+G_M35244_IG23: ; bbWeight=0.03, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -214,17 +201,28 @@ G_M35244_IG25: ; bbWeight=0.03, epilog, nogc, extend tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0 ;; size=14 bbWeight=0.03 PerfScore 0.15
-G_M35244_IG26: ; 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_IG27: ; 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_IG28: ; 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] @@ -308,7 +306,7 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp r14d, r15d jl SHORT G_M35244_IG32 cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG20
+ je G_M35244_IG26
jmp G_M35244_IG28 ;; size=20 bbWeight=0 PerfScore 0.00 G_M35244_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref @@ -326,7 +324,7 @@ G_M35244_IG35: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG20
+ je G_M35244_IG26
jmp G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00 RWD00 dd G_M35244_IG31 - G_M35244_IG02 @@ -334,7 +332,7 @@ RWD00 dd G_M35244_IG31 - 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_IG20 - G_M35244_IG02
+ dd G_M35244_IG26 - G_M35244_IG02
dd G_M35244_IG28 - G_M35244_IG02 dd G_M35244_IG28 - G_M35244_IG02 dd G_M35244_IG28 - G_M35244_IG02 @@ -342,7 +340,7 @@ RWD00 dd G_M35244_IG31 - G_M35244_IG02 dd G_M35244_IG31 - G_M35244_IG02
-; Total bytes of code 563, prolog size 16, PerfScore 115.10, instruction count 147, allocated bytes for code 563 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 554, prolog size 16, PerfScore 113.52, instruction count 147, allocated bytes for code 554 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

-6 (-1.42%) : 136566.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.79, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.79, 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.79, 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.79 PerfScore 11.40
-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.49, 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.45, 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%) : 44886.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

@@ -110,7 +110,7 @@ G_M37647_IG06: ; bbWeight=98.97, gcrefRegs=C009 {rax rbx r14 r15}, byrefR mov edx, ecx movzx rdx, byte ptr [rax+rdx+0x10] cmp edx, 3
- ja SHORT G_M37647_IG10
+ ja SHORT G_M37647_IG09
lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] lea rdi, G_M37647_IG02 @@ -122,7 +122,7 @@ G_M37647_IG07: ; bbWeight=0.02, gcrefRegs=C009 {rax rbx r14 r15}, byrefRe ; GC ptr vars +{V06} jmp G_M37647_IG18 ;; size=9 bbWeight=0.02 PerfScore 0.05
-G_M37647_IG08: ; bbWeight=31.01, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M37647_IG08: ; bbWeight=31.01, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
; GC ptr vars -{V06} mov gword ptr [rbp+0x78], rax ; GC ptr vars +{V06} @@ -142,9 +142,19 @@ G_M37647_IG08: ; bbWeight=31.01, 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_IG10 - ;; size=43 bbWeight=31.01 PerfScore 480.69 -G_M37647_IG09: ; bbWeight=18.61, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=41 bbWeight=31.01 PerfScore 418.67 +G_M37647_IG09: ; bbWeight=98.97, 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_IG06 + ;; size=7 bbWeight=98.97 PerfScore 148.45 +G_M37647_IG10: ; bbWeight=0.03, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref + mov gword ptr [rbp+0x78], rax + ; GC ptr vars +{V06} + jmp G_M37647_IG18 + ;; size=9 bbWeight=0.03 PerfScore 0.10 +G_M37647_IG11: ; bbWeight=18.61, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; GC ptr vars -{V06} mov gword ptr [rbp+0x78], rax ; GC ptr vars +{V06} @@ -164,42 +174,9 @@ G_M37647_IG09: ; bbWeight=18.61, gcVars=0000000000000000 {}, gcrefRegs=C0 mov rax, gword ptr [rbp+0x78] ; gcrRegs +[rax] mov esi, dword ptr [rbp+0x74]
- ;; size=41 bbWeight=18.61 PerfScore 251.20 -G_M37647_IG10: ; bbWeight=98.97, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V06} - inc esi - cmp esi, r13d - jl G_M37647_IG06 - ;; size=11 bbWeight=98.97 PerfScore 148.45 -G_M37647_IG11: ; bbWeight=0.03, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref - mov gword ptr [rbp+0x78], rax - ; GC ptr vars +{V06} - jmp G_M37647_IG18 - ;; size=9 bbWeight=0.03 PerfScore 0.10 -G_M37647_IG12: ; bbWeight=24.41, 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_IG10 - ;; size=45 bbWeight=24.41 PerfScore 384.48 -G_M37647_IG13: ; bbWeight=24.94, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M37647_IG09 + ;; size=43 bbWeight=18.61 PerfScore 288.42 +G_M37647_IG12: ; bbWeight=24.94, 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} @@ -220,8 +197,31 @@ G_M37647_IG13: ; bbWeight=24.94, gcVars=0000000000000000 {}, gcrefRegs=C0 mov rax, gword ptr [rbp+0x78] ; gcrRegs +[rax] mov esi, dword ptr [rbp+0x74]
- jmp SHORT G_M37647_IG10
+ jmp SHORT G_M37647_IG09
;; size=48 bbWeight=24.94 PerfScore 392.75
+G_M37647_IG13: ; bbWeight=24.41, 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_IG09 + ;; size=48 bbWeight=24.41 PerfScore 384.48
G_M37647_IG14: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V06} mov edx, esi @@ -388,17 +388,17 @@ G_M37647_IG24: ; bbWeight=0, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M37647_IG12 - G_M37647_IG02 - dd G_M37647_IG13 - G_M37647_IG02
+RWD00 dd G_M37647_IG13 - G_M37647_IG02 + dd G_M37647_IG12 - G_M37647_IG02
dd G_M37647_IG08 - G_M37647_IG02
- dd G_M37647_IG09 - G_M37647_IG02
+ dd G_M37647_IG11 - G_M37647_IG02
RWD16 dd G_M37647_IG21 - G_M37647_IG02 dd G_M37647_IG20 - G_M37647_IG02 dd G_M37647_IG15 - G_M37647_IG02 dd G_M37647_IG16 - G_M37647_IG02
-; Total bytes of code 858, prolog size 96, PerfScore 3238.26, 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.45, 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:

+9 (+1.26%) : 78234.dasm - System.Text.RegularExpressions.RegexCompiler+<>cDisplayClass158_0:gEmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)

@@ -57,23 +57,23 @@ G_M17183_IG02: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 mov rax, gword ptr [rax+0x10] mov rax, gword ptr [rax+0x10] cmp dword ptr [rax+0x20], 19
- je G_M17183_IG23
+ je G_M17183_IG11
;; size=22 bbWeight=1 PerfScore 10.00 G_M17183_IG03: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] call <unknown method> test eax, eax
- je G_M17183_IG28
+ je G_M17183_IG16
test byte ptr [rbx+0x28], 64
- jne G_M17183_IG29
+ jne G_M17183_IG17
;; size=23 bbWeight=1 PerfScore 6.25 G_M17183_IG04: ; bbWeight=1, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz movzx rax, byte ptr [rbx+0x2E] add eax, -3 cmp eax, 22
- jne SHORT G_M17183_IG08
+ jne SHORT G_M17183_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M17183_IG05: ; bbWeight=0.58, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+G_M17183_IG05: ; bbWeight=0.58, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
movzx rcx, r14b mov rdi, r15 ; gcrRegs +[rdi] @@ -83,25 +83,12 @@ G_M17183_IG05: ; bbWeight=0.58, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0 ; gcrRegs +[rdx] call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitConcatenation|15(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this] ; gcrRegs -[rdx rbx rsi rdi r13 r15]
- ;; size=19 bbWeight=0.58 PerfScore 2.32 -G_M17183_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - ;; size=1 bbWeight=1 PerfScore 0.25 -G_M17183_IG07: ; bbWeight=1, epilog, nogc, extend - vzeroupper - add rsp, 40 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=18 bbWeight=1 PerfScore 5.25 -G_M17183_IG08: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M17183_IG09 + ;; size=21 bbWeight=0.58 PerfScore 3.47 +G_M17183_IG06: ; bbWeight=0.42, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r13 r15] cmp eax, 43
- ja SHORT G_M17183_IG06
+ ja SHORT G_M17183_IG09
mov edx, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rdx] @@ -109,7 +96,7 @@ G_M17183_IG08: ; bbWeight=0.42, gcVars=0000000000000000 {}, gcrefRegs=A00 add rdi, rsi jmp rdi ;; size=29 bbWeight=0.42 PerfScore 3.05
-G_M17183_IG09: ; bbWeight=0.42, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M17183_IG07: ; bbWeight=0.42, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] movzx rdx, r14b mov rdi, r15 @@ -120,9 +107,9 @@ G_M17183_IG09: ; bbWeight=0.42, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleChar|16(System.Text.RegularExpressions.RegexNode,ubyte,System.Reflection.Emit.LocalBuilder):this] ; gcrRegs -[rcx rbx rsi rdi r15]
- jmp SHORT G_M17183_IG06
+ jmp SHORT G_M17183_IG09
;; size=20 bbWeight=0.42 PerfScore 2.52
-G_M17183_IG10: ; bbWeight=0.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M17183_IG08: ; bbWeight=0.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx r15] mov rdi, r15 ; gcrRegs +[rdi] @@ -130,160 +117,50 @@ G_M17183_IG10: ; bbWeight=0.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rbx rsi rdi r15]
- jmp SHORT G_M17183_IG06 - ;; size=14 bbWeight=0.00 PerfScore 0.00 -G_M17183_IG11: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rbx rsi rdi r15] - jmp SHORT G_M17183_IG06 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M17183_IG12: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rbx rsi rdi r15] - jmp SHORT G_M17183_IG06 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M17183_IG13: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitAlternation|4(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rbx rsi rdi r15] - jmp SHORT G_M17183_IG06 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M17183_IG14: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r13 r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdx, r13 - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rdx rbx rsi rdi r13 r15] - jmp G_M17183_IG06 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M17183_IG15: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rbx rsi rdi r15] - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG16: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rbx rsi rdi r15] - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG17: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rbx rsi rdi r15] - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG18: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r13 r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - mov rdx, r13 - ; gcrRegs +[rdx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitCapture|8(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rdx rbx rsi rdi r13 r15] - jmp G_M17183_IG06 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M17183_IG19: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitPositiveLookaroundAssertion|10(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rbx rsi rdi r15] - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG20: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNegativeLookaroundAssertion|11(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rbx rsi rdi r15] - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG21: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[r15] - mov rdi, gword ptr [r15+0x08] - ; gcrRegs +[rdi] - mov esi, dword ptr [r15+0x40] - call [<unknown method>] - ; gcrRegs -[rdi r15] - jmp G_M17183_IG06 - ;; size=19 bbWeight=0 PerfScore 0.00 -G_M17183_IG22: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx r15] - mov rdi, r15 - ; gcrRegs +[rdi] - mov rsi, rbx - ; gcrRegs +[rsi] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitUpdateBumpalong|14(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rbx rsi rdi r15] - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG23: ; bbWeight=0, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=0.00 PerfScore 0.00 +G_M17183_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=1 PerfScore 0.25 +G_M17183_IG10: ; bbWeight=1, epilog, nogc, extend + vzeroupper + add rsp, 40 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=18 bbWeight=1 PerfScore 5.25 +G_M17183_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx r13 r15] mov rdi, gword ptr [r15+0x08] ; gcrRegs +[rdi] mov rdi, gword ptr [rdi+0x10] mov rdi, gword ptr [rdi+0x10] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M17183_IG24: ; bbWeight=0, nogc, extend
+G_M17183_IG12: ; bbWeight=0, nogc, extend
vmovdqu ymm0, ymmword ptr [rdi+0x48] vmovdqu ymmword ptr [rbp-0x50], ymm0 mov rsi, qword ptr [rdi+0x68] mov qword ptr [rbp-0x30], rsi ;; size=18 bbWeight=0 PerfScore 0.00
-G_M17183_IG25: ; bbWeight=0, isz, extend
+G_M17183_IG13: ; bbWeight=0, isz, extend
lea rdi, bword ptr [rbp-0x50] ; gcrRegs -[rdi] ; byrRegs +[rdi] cmp byte ptr [rbp-0x50], 0
- jne SHORT G_M17183_IG26
+ jne SHORT G_M17183_IG14
xor rsi, rsi ; gcrRegs +[rsi]
- jmp SHORT G_M17183_IG27
...

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

@@ -52,37 +52,37 @@ 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_IG24
+ 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.28 -G_M35244_IG05: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2.97 PerfScore 22.28 +G_M35244_IG05: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M35244_IG08 - ;; size=9 bbWeight=2.97 PerfScore 9.65
+ je G_M35244_IG18 + ;; size=13 bbWeight=2.97 PerfScore 9.65
G_M35244_IG06: ; bbWeight=2.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rsi, r15 ; gcrRegs +[rsi] @@ -91,64 +91,50 @@ G_M35244_IG06: ; bbWeight=2.45, 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.45 PerfScore 6.73 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.50
-G_M35244_IG08: ; bbWeight=0.52, 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.52 PerfScore 1.17 -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_IG14
+ je SHORT G_M35244_IG12
;; 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
- je SHORT G_M35244_IG14
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1.49 PerfScore 6.31
-G_M35244_IG13: ; bbWeight=0.74, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.74, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] xor r13, r13 ; gcrRegs +[r13] ;; size=3 bbWeight=0.74 PerfScore 0.19
-G_M35244_IG14: ; bbWeight=2.97, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.97, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
test r13, r13
- jne SHORT G_M35244_IG20
+ jne SHORT G_M35244_IG19
;; size=5 bbWeight=2.97 PerfScore 3.71
-G_M35244_IG15: ; bbWeight=1.08, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.08, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG16
;; size=8 bbWeight=1.08 PerfScore 1.63
-G_M35244_IG16: ; bbWeight=0.54, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.54, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG16
;; size=16 bbWeight=0.54 PerfScore 2.30
-G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -158,52 +144,57 @@ G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=12 bbWeight=0.27 PerfScore 0.95
-G_M35244_IG18: ; bbWeight=1.08, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=1.08, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG35
+ jae G_M35244_IG36
;; size=10 bbWeight=1.08 PerfScore 4.34
-G_M35244_IG19: ; bbWeight=1.08, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=1.08, 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_IG21
+ jmp SHORT G_M35244_IG20
;; size=20 bbWeight=1.08 PerfScore 11.12
-G_M35244_IG20: ; bbWeight=1.89, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi r15]
+G_M35244_IG18: ; bbWeight=0.52, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi r13] + xor r14d, r14d + jmp SHORT G_M35244_IG09 + ;; size=5 bbWeight=0.52 PerfScore 1.17 +G_M35244_IG19: ; bbWeight=1.89, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref + ; gcrRegs -[r15] +[r13]
mov r15, r13 ; gcrRegs +[r15] ;; size=3 bbWeight=1.89 PerfScore 0.47
-G_M35244_IG21: ; bbWeight=2.97, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=2.97, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG28
+ je SHORT G_M35244_IG29
;; size=10 bbWeight=2.97 PerfScore 9.65
-G_M35244_IG22: ; bbWeight=2.97, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+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_IG28
+ jbe SHORT G_M35244_IG29
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG28
+ jbe SHORT G_M35244_IG29
;; size=16 bbWeight=2.97 PerfScore 9.64
-G_M35244_IG23: ; bbWeight=2.97, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=2.97, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, r15 ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=2.97 PerfScore 6.68
-G_M35244_IG24: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG23: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15] mov rdi, rbx ; gcrRegs +[rdi] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG25: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG24: ; bbWeight=1, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -212,12 +203,23 @@ G_M35244_IG25: ; 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_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+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_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,16 +231,16 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] 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
- je SHORT G_M35244_IG23
+ je SHORT G_M35244_IG22
;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; 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 @@ -269,9 +271,9 @@ G_M35244_IG29: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ...

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

@@ -52,37 +52,37 @@ 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=3.99, 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.99 PerfScore 14.94
-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 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.99 PerfScore 22.39 -G_M35244_IG05: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2.99 PerfScore 22.39 +G_M35244_IG05: ; bbWeight=2.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je SHORT G_M35244_IG08 - ;; size=9 bbWeight=2.99 PerfScore 9.70
+ je G_M35244_IG17 + ;; size=13 bbWeight=2.99 PerfScore 9.70
G_M35244_IG06: ; bbWeight=2.47, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz mov rsi, r15 ; gcrRegs +[rsi] @@ -91,64 +91,50 @@ G_M35244_IG06: ; bbWeight=2.47, 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.47 PerfScore 6.80 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.52
-G_M35244_IG08: ; bbWeight=0.51, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=1.59, 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.00 -G_M35244_IG10: ; bbWeight=1.59, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15]
mov r14d, 1 ;; size=6 bbWeight=1.59 PerfScore 0.40
-G_M35244_IG11: ; bbWeight=2.99, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2.99, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG14
+ je SHORT G_M35244_IG12
;; size=11 bbWeight=2.99 PerfScore 5.22
-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
- je SHORT G_M35244_IG14
+ je SHORT G_M35244_IG12
;; size=16 bbWeight=1.49 PerfScore 6.34
-G_M35244_IG13: ; bbWeight=0.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] xor r13, r13 ; gcrRegs +[r13] ;; size=3 bbWeight=0.75 PerfScore 0.19
-G_M35244_IG14: ; bbWeight=2.99, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.99, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
test r13, r13
- jne SHORT G_M35244_IG19
+ jne SHORT G_M35244_IG18
;; size=5 bbWeight=2.99 PerfScore 3.73
-G_M35244_IG15: ; bbWeight=1.07, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.07, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG16
;; size=8 bbWeight=1.07 PerfScore 1.61
-G_M35244_IG16: ; bbWeight=0.54, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; bbWeight=0.54, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG16
;; size=16 bbWeight=0.54 PerfScore 2.28
-G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -158,50 +144,55 @@ G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=12 bbWeight=0.27 PerfScore 0.94
-G_M35244_IG18: ; bbWeight=1.07, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.07, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG34
+ jae G_M35244_IG35
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_IG20
+ jmp SHORT G_M35244_IG19
;; size=30 bbWeight=1.07 PerfScore 15.31
-G_M35244_IG19: ; bbWeight=1.91, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi r15]
+G_M35244_IG17: ; bbWeight=0.51, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi r13] + xor r14d, r14d + jmp SHORT G_M35244_IG09 + ;; size=5 bbWeight=0.51 PerfScore 1.15 +G_M35244_IG18: ; bbWeight=1.91, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref + ; gcrRegs -[r15] +[r13]
mov r15, r13 ; gcrRegs +[r15] ;; size=3 bbWeight=1.91 PerfScore 0.48
-G_M35244_IG20: ; bbWeight=2.99, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=2.99, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG28
;; size=10 bbWeight=2.99 PerfScore 9.70
-G_M35244_IG21: ; bbWeight=2.92, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=2.92, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea esi, [rdi-0x1A] cmp esi, 1
- jbe SHORT G_M35244_IG27
+ jbe SHORT G_M35244_IG28
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG27
+ jbe SHORT G_M35244_IG28
;; size=16 bbWeight=2.92 PerfScore 9.51
-G_M35244_IG22: ; bbWeight=2.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=2.99, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, r15 ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=2.99 PerfScore 6.72
-G_M35244_IG23: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[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 @@ -210,12 +201,23 @@ 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 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,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_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 SHORT G_M35244_IG22
+ je SHORT G_M35244_IG21
;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; 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 @@ -267,9 +269,9 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, call [System.Text.RegularExpressions.RegexNode:ReplaceChild(int,System.Text.RegularExpressions.RegexNode):this] ; gcrRegs -[rdx rbx rdi r14] ; gcr arg pop 0 ...

coreclr_tests.run.linux.x64.checked.mch

-7 (-1.28%) : 445350.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -56,9 +56,9 @@ G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG21
+ je G_M35244_IG32
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG21
+ 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] @@ -69,7 +69,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG21
+ ja G_M35244_IG32
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] @@ -91,7 +91,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M35244_IG23
+ je G_M35244_IG21
;; size=27 bbWeight=1.55 PerfScore 4.25 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref mov r14d, dword ptr [rax+0x10] @@ -143,11 +143,11 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG31
+ jae G_M35244_IG30
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG32
+ jae G_M35244_IG31
mov esi, r14d mov r15, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[r15] @@ -156,13 +156,13 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG24
+ je SHORT G_M35244_IG23
lea esi, [rdi-0x1A] cmp esi, 1
- jbe SHORT G_M35244_IG24
+ jbe SHORT G_M35244_IG23
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG24
+ jbe SHORT G_M35244_IG23
;; size=26 bbWeight=2 PerfScore 13.00 G_M35244_IG17: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -190,33 +190,24 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=200 ; gcrRegs +[r15] jmp SHORT G_M35244_IG16 ;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG21: ; bbWeight=0.67, 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.67 PerfScore 2.33 -G_M35244_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15] - xor r14d, r14d - jmp G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 1.02 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r13]
mov r14d, 1 jmp G_M35244_IG08 ;; size=11 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + xor r14d, r14d + jmp G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 1.02 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG25
+ je SHORT G_M35244_IG24
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32 je SHORT G_M35244_IG17 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -249,7 +240,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG17 ;; size=72 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 -[r15] +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -258,9 +249,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov r15d, eax mov r14d, 1
- jmp SHORT G_M35244_IG28
+ jmp SHORT G_M35244_IG27
;; size=20 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 rdi, rbx ; gcrRegs +[rdi] mov esi, r14d @@ -275,20 +266,20 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc r14d ;; size=26 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- jl SHORT G_M35244_IG27
+ jl SHORT G_M35244_IG26
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG21 - jmp SHORT G_M35244_IG33 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M35244_IG32 + jmp SHORT G_M35244_IG34 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x24], 1
- je SHORT G_M35244_IG33
+ je SHORT G_M35244_IG34
mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -297,20 +288,31 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG21
+ je SHORT G_M35244_IG32
jmp G_M35244_IG03
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0 PerfScore 0.00 +G_M35244_IG30: ; 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
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG33: ; 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_IG34: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -322,20 +324,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 545, prolog size 16, PerfScore 110.61, instruction count 146, allocated bytes for code 545 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 538, prolog size 16, PerfScore 108.27, instruction count 147, allocated bytes for code 538 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

-7 (-1.28%) : 332141.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -56,9 +56,9 @@ G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG21
+ je G_M35244_IG32
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG21
+ 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] @@ -69,7 +69,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG21
+ ja G_M35244_IG32
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] @@ -91,7 +91,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M35244_IG23
+ je G_M35244_IG21
;; size=27 bbWeight=1.55 PerfScore 4.25 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref mov r14d, dword ptr [rax+0x10] @@ -143,11 +143,11 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG31
+ jae G_M35244_IG30
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG32
+ jae G_M35244_IG31
mov esi, r14d mov r15, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[r15] @@ -156,13 +156,13 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG24
+ je SHORT G_M35244_IG23
lea esi, [rdi-0x1A] cmp esi, 1
- jbe SHORT G_M35244_IG24
+ jbe SHORT G_M35244_IG23
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG24
+ jbe SHORT G_M35244_IG23
;; size=26 bbWeight=2 PerfScore 13.00 G_M35244_IG17: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -190,33 +190,24 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=200 ; gcrRegs +[r15] jmp SHORT G_M35244_IG16 ;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG21: ; bbWeight=0.67, 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.67 PerfScore 2.33 -G_M35244_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15] - xor r14d, r14d - jmp G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 1.02 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r13]
mov r14d, 1 jmp G_M35244_IG08 ;; size=11 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + xor r14d, r14d + jmp G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 1.02 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG25
+ je SHORT G_M35244_IG24
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32 je SHORT G_M35244_IG17 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -249,7 +240,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG17 ;; size=72 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 -[r15] +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -258,9 +249,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov r15d, eax mov r14d, 1
- jmp SHORT G_M35244_IG28
+ jmp SHORT G_M35244_IG27
;; size=20 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 rdi, rbx ; gcrRegs +[rdi] mov esi, r14d @@ -275,20 +266,20 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc r14d ;; size=26 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- jl SHORT G_M35244_IG27
+ jl SHORT G_M35244_IG26
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG21 - jmp SHORT G_M35244_IG33 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M35244_IG32 + jmp SHORT G_M35244_IG34 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x24], 1
- je SHORT G_M35244_IG33
+ je SHORT G_M35244_IG34
mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -297,20 +288,31 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG21
+ je SHORT G_M35244_IG32
jmp G_M35244_IG03
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0 PerfScore 0.00 +G_M35244_IG30: ; 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
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG33: ; 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_IG34: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -322,20 +324,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 546, prolog size 16, PerfScore 111.25, instruction count 146, allocated bytes for code 546 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 539, prolog size 16, PerfScore 108.91, instruction count 147, allocated bytes for code 539 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

-7 (-1.28%) : 467533.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -56,9 +56,9 @@ G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG21
+ je G_M35244_IG32
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG21
+ 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] @@ -69,7 +69,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG21
+ ja G_M35244_IG32
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] @@ -91,7 +91,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M35244_IG23
+ je G_M35244_IG21
;; size=27 bbWeight=1.55 PerfScore 4.25 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref mov r14d, dword ptr [rax+0x10] @@ -143,11 +143,11 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG31
+ jae G_M35244_IG30
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG32
+ jae G_M35244_IG31
mov esi, r14d mov r15, gword ptr [rdi+8*rsi+0x10] ; gcrRegs +[r15] @@ -156,13 +156,13 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG24
+ je SHORT G_M35244_IG23
lea esi, [rdi-0x1A] cmp esi, 1
- jbe SHORT G_M35244_IG24
+ jbe SHORT G_M35244_IG23
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG24
+ jbe SHORT G_M35244_IG23
;; size=26 bbWeight=2 PerfScore 13.00 G_M35244_IG17: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -190,33 +190,24 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=200 ; gcrRegs +[r15] jmp SHORT G_M35244_IG16 ;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG21: ; bbWeight=0.67, 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.67 PerfScore 2.33 -G_M35244_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15] - xor r14d, r14d - jmp G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 1.02 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r13]
mov r14d, 1 jmp G_M35244_IG08 ;; size=11 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + xor r14d, r14d + jmp G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 1.02 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG25
+ je SHORT G_M35244_IG24
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32 je SHORT G_M35244_IG17 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -249,7 +240,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG17 ;; size=72 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 -[r15] +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -258,9 +249,9 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov r15d, eax mov r14d, 1
- jmp SHORT G_M35244_IG28
+ jmp SHORT G_M35244_IG27
;; size=20 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 rdi, rbx ; gcrRegs +[rdi] mov esi, r14d @@ -275,20 +266,20 @@ G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc r14d ;; size=26 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp r14d, r15d
- jl SHORT G_M35244_IG27
+ jl SHORT G_M35244_IG26
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG21 - jmp SHORT G_M35244_IG33 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M35244_IG32 + jmp SHORT G_M35244_IG34 + ;; size=13 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x24], 1
- je SHORT G_M35244_IG33
+ je SHORT G_M35244_IG34
mov rdi, rbx ; gcrRegs +[rdi] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -297,20 +288,31 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG21
+ je SHORT G_M35244_IG32
jmp G_M35244_IG03
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0 PerfScore 0.00 +G_M35244_IG30: ; 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
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG33: ; 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_IG34: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rdi, rbx ; gcrRegs +[rdi] @@ -322,20 +324,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 546, prolog size 16, PerfScore 111.25, instruction count 146, allocated bytes for code 546 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 539, prolog size 16, PerfScore 108.91, instruction count 147, allocated bytes for code 539 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

-1 (-0.11%) : 464286.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

@@ -106,7 +106,7 @@ G_M19663_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_M19663_IG09
+ ja SHORT G_M19663_IG08
mov esi, edi lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] @@ -114,7 +114,7 @@ G_M19663_IG06: ; bbWeight=98.97, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR add rdi, r8 jmp rdi ;; size=63 bbWeight=98.97 PerfScore 1533.96
-G_M19663_IG07: ; bbWeight=31.06, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M19663_IG07: ; bbWeight=31.06, 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 @@ -133,10 +133,17 @@ G_M19663_IG07: ; bbWeight=31.06, gcrefRegs=C00A {rcx rbx r14 r15}, byrefR mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- jmp SHORT G_M19663_IG09 - ;; size=44 bbWeight=31.06 PerfScore 395.98 -G_M19663_IG08: ; bbWeight=18.63, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=42 bbWeight=31.06 PerfScore 333.87 +G_M19663_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_M19663_IG06 + ;; size=7 bbWeight=98.97 PerfScore 148.45 +G_M19663_IG09: ; bbWeight=0.03, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref + jmp G_M19663_IG17 + ;; size=5 bbWeight=0.03 PerfScore 0.07 +G_M19663_IG10: ; bbWeight=18.63, 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 @@ -155,41 +162,9 @@ G_M19663_IG08: ; bbWeight=18.63, gcVars=0000000000000000 {}, gcrefRegs=C0 mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- ;; size=42 bbWeight=18.63 PerfScore 200.32 -G_M19663_IG09: ; bbWeight=98.97, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V06} - inc eax - cmp eax, r13d - jl G_M19663_IG06 - ;; size=11 bbWeight=98.97 PerfScore 148.45 -G_M19663_IG10: ; bbWeight=0.03, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref - jmp G_M19663_IG17 - ;; size=5 bbWeight=0.03 PerfScore 0.07 -G_M19663_IG11: ; bbWeight=24.30, 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 - mov r8d, eax - shl r8, 4 - lea rsi, bword ptr [rbx+r8+0x10] - ; byrRegs +[rsi] - lea r9, bword ptr [r15+r8+0x10] - ; byrRegs +[r9] - mov rdx, r9 - ; byrRegs +[rdx] - lea rcx, bword ptr [r14+r8+0x10] - ; gcrRegs -[rcx] - ; byrRegs +[rcx] - xor edi, edi - call [EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref)] - ; byrRegs -[rcx rdx rsi r9] - ; gcr arg pop 0 - mov eax, dword ptr [rbp+0x74] - mov rcx, gword ptr [rbp+0x78] - ; gcrRegs +[rcx] - jmp SHORT G_M19663_IG09 - ;; size=49 bbWeight=24.30 PerfScore 321.94 -G_M19663_IG12: ; bbWeight=24.98, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M19663_IG08 + ;; size=44 bbWeight=18.63 PerfScore 237.59 +G_M19663_IG11: ; bbWeight=24.98, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V06} mov gword ptr [rbp+0x78], rcx ; GC ptr vars +{V06} @@ -212,8 +187,33 @@ G_M19663_IG12: ; bbWeight=24.98, gcVars=0000000000000000 {}, gcrefRegs=C0 mov eax, dword ptr [rbp+0x74] mov rcx, gword ptr [rbp+0x78] ; gcrRegs +[rcx]
- jmp SHORT G_M19663_IG09
+ jmp SHORT G_M19663_IG08
;; size=52 bbWeight=24.98 PerfScore 330.93
+G_M19663_IG12: ; bbWeight=24.30, 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} + mov dword ptr [rbp+0x74], eax + mov r8d, eax + shl r8, 4 + lea rsi, bword ptr [rbx+r8+0x10] + ; byrRegs +[rsi] + lea r9, bword ptr [r15+r8+0x10] + ; byrRegs +[r9] + mov rdx, r9 + ; byrRegs +[rdx] + lea rcx, bword ptr [r14+r8+0x10] + ; gcrRegs -[rcx] + ; byrRegs +[rcx] + xor edi, edi + call [EMFloat:AddSubInternalFPF(ubyte,byref,byref,byref)] + ; byrRegs -[rcx rdx rsi r9] + ; gcr arg pop 0 + mov eax, dword ptr [rbp+0x74] + mov rcx, gword ptr [rbp+0x78] + ; gcrRegs +[rcx] + jmp G_M19663_IG08 + ;; size=52 bbWeight=24.30 PerfScore 321.94
G_M19663_IG13: ; bbWeight=1.00, gcVars=0000000000000000 {}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V06} mov edi, eax @@ -387,17 +387,17 @@ G_M19663_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M19663_IG11 - G_M19663_IG02 - dd G_M19663_IG12 - G_M19663_IG02
+RWD00 dd G_M19663_IG12 - G_M19663_IG02 + dd G_M19663_IG11 - 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_IG20 - G_M19663_IG02 dd G_M19663_IG14 - G_M19663_IG02 dd G_M19663_IG15 - G_M19663_IG02
-; Total bytes of code 873, prolog size 96, PerfScore 2998.86, instruction count 218, allocated bytes for code 873 (MethodHash=0767b330) for method EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
+; Total bytes of code 872, prolog size 96, PerfScore 2974.01, instruction count 218, allocated bytes for code 872 (MethodHash=0767b330) for method EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
; ============================================================ Unwind Info:

+4 (+0.49%) : 464229.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)

@@ -118,12 +118,12 @@ G_M16822_IG05: ; bbWeight=105, gcrefRegs=8008 {rbx r15}, byrefRegs=0002 { ; gcrRegs +[rax] mov edx, dword ptr [rax+0x08] test edx, edx
- je G_M16822_IG26
+ je G_M16822_IG27
mov r9d, dword ptr [rax+0x10] imul r10d, r9d, 0x3E322 mov rax, r8 cmp edx, 1
- jbe G_M16822_IG26
+ jbe G_M16822_IG27
imul r11d, dword ptr [rax+0x14], 0xD1FFAB1E add r10d, r11d mov edx, 0xD1FFAB1E @@ -167,7 +167,7 @@ G_M16822_IG06: ; bbWeight=51.83, gcrefRegs=8108 {rbx r8 r15}, byrefRegs=0 G_M16822_IG07: ; bbWeight=105, gcrefRegs=8108 {rbx r8 r15}, byrefRegs=0A02 {rcx r9 r11}, byref, isz lea r13d, [rdi+rdi] cmp r13d, dword ptr [r15+0x08]
- jae G_M16822_IG26
+ jae G_M16822_IG27
mov eax, r13d mov dword ptr [r15+4*rax+0x10], r10d mov r12d, dword ptr [rcx] @@ -210,7 +210,7 @@ G_M16822_IG08: ; bbWeight=51.83, gcrefRegs=8008 {rbx r15}, byrefRegs=0002 G_M16822_IG09: ; bbWeight=105, gcrefRegs=8008 {rbx r15}, byrefRegs=0002 {rcx}, byref inc r13d cmp r13d, dword ptr [r15+0x08]
- jae G_M16822_IG26
+ jae G_M16822_IG27
mov eax, r13d mov dword ptr [r15+4*rax+0x10], edx add edx, r12d @@ -226,7 +226,7 @@ G_M16822_IG10: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, movsxd r13, eax xor edi, edi test r14d, r14d
- jle G_M16822_IG24
+ jle G_M16822_IG25
;; size=19 bbWeight=1 PerfScore 2.75 G_M16822_IG11: ; bbWeight=105, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov edx, 0xD1FFAB1E @@ -239,7 +239,7 @@ G_M16822_IG11: ; bbWeight=105, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { mov r12d, edi sub r12d, eax cmp r12d, 2
- ja G_M16822_IG23
+ ja G_M16822_IG15
mov eax, r12d lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rax] @@ -247,20 +247,20 @@ G_M16822_IG11: ; bbWeight=105, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 { add rcx, rdx jmp rcx ;; size=60 bbWeight=105 PerfScore 1338.75
-G_M16822_IG12: ; bbWeight=35.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16822_IG12: ; bbWeight=35.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea eax, [rdi+rdi] cmp eax, dword ptr [r15+0x08]
- jae G_M16822_IG26
+ jae G_M16822_IG27
mov ecx, eax mov ecx, dword ptr [r15+4*rcx+0x10] inc eax cmp eax, dword ptr [r15+0x08]
- jae G_M16822_IG26
+ jae G_M16822_IG27
mov eax, dword ptr [r15+4*rax+0x10] lea edx, [rax-0x01] test eax, eax
- jle G_M16822_IG23 - ;; size=48 bbWeight=35.50 PerfScore 523.62
+ jle SHORT G_M16822_IG15 + ;; size=44 bbWeight=35.50 PerfScore 523.62
G_M16822_IG13: ; bbWeight=35.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref mov esi, dword ptr [rbx+0x08] ;; size=3 bbWeight=35.50 PerfScore 71.00 @@ -275,7 +275,7 @@ G_M16822_IG14: ; bbWeight=941419.43, gcrefRegs=8008 {rbx r15}, byrefRegs= mov r9d, ecx sub r9d, r8d cmp eax, esi
- jae G_M16822_IG26
+ jae G_M16822_IG27
lea rax, bword ptr [rbx+4*rax+0x10] ; byrRegs +[rax] mov r8d, 1 @@ -288,27 +288,34 @@ G_M16822_IG14: ; bbWeight=941419.43, gcrefRegs=8008 {rbx r15}, byrefRegs= test eax, eax jg SHORT G_M16822_IG14 ;; size=67 bbWeight=941419.43 PerfScore 10355613.71
-G_M16822_IG15: ; bbWeight=35.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - jmp G_M16822_IG23 - ;; size=5 bbWeight=35.50 PerfScore 71.00 -G_M16822_IG16: ; bbWeight=34.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M16822_IG15: ; bbWeight=105, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + inc edi + cmp edi, r14d + jl G_M16822_IG11 + ;; size=11 bbWeight=105 PerfScore 157.50 +G_M16822_IG16: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx r15] + jmp G_M16822_IG25 + ;; size=5 bbWeight=0.99 PerfScore 1.98 +G_M16822_IG17: ; bbWeight=34.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx r15]
lea eax, [rdi+rdi] cmp eax, dword ptr [r15+0x08]
- jae G_M16822_IG26
+ jae G_M16822_IG27
mov esi, eax mov ecx, dword ptr [r15+4*rsi+0x10] inc eax cmp eax, dword ptr [r15+0x08]
- jae G_M16822_IG26
+ jae G_M16822_IG27
mov eax, dword ptr [r15+4*rax+0x10] lea edx, [rax-0x01] test eax, eax
- jle G_M16822_IG23 - ;; size=48 bbWeight=34.75 PerfScore 512.56 -G_M16822_IG17: ; bbWeight=34.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jle SHORT G_M16822_IG15 + ;; size=44 bbWeight=34.75 PerfScore 512.56 +G_M16822_IG18: ; bbWeight=34.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov esi, dword ptr [rbx+0x08] ;; size=3 bbWeight=34.75 PerfScore 69.50
-G_M16822_IG18: ; bbWeight=921530.29, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M16822_IG19: ; bbWeight=921530.29, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov eax, ecx sar eax, 5 mov r8d, ecx @@ -319,7 +326,7 @@ G_M16822_IG18: ; bbWeight=921530.29, gcrefRegs=8008 {rbx r15}, byrefRegs= mov r9d, ecx sub r9d, r8d cmp eax, esi
- jae G_M16822_IG26
+ jae G_M16822_IG27
lea rax, bword ptr [rbx+4*rax+0x10] ; byrRegs +[rax] mov r8d, 1 @@ -331,29 +338,29 @@ G_M16822_IG18: ; bbWeight=921530.29, gcrefRegs=8008 {rbx r15}, byrefRegs= ; byrRegs -[rax] lea edx, [rax-0x01] test eax, eax
- jg SHORT G_M16822_IG18
+ jg SHORT G_M16822_IG19
;; size=70 bbWeight=921530.29 PerfScore 10367215.71
-G_M16822_IG19: ; bbWeight=34.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M16822_IG23 - ;; size=2 bbWeight=34.75 PerfScore 69.50 -G_M16822_IG20: ; bbWeight=34.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M16822_IG20: ; bbWeight=34.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + jmp G_M16822_IG15 + ;; size=5 bbWeight=34.75 PerfScore 69.50 +G_M16822_IG21: ; bbWeight=34.75, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
lea eax, [rdi+rdi] cmp eax, dword ptr [r15+0x08]
- jae G_M16822_IG26
+ jae G_M16822_IG27
mov esi, eax mov ecx, dword ptr [r15+4*rsi+0x10] inc eax cmp eax, dword ptr [r15+0x08]
- jae SHORT G_M16822_IG26
+ jae SHORT G_M16822_IG27
mov eax, dword ptr [r15+4*rax+0x10] lea edx, [rax-0x01] test eax, eax
- jle SHORT G_M16822_IG23 - ;; size=40 bbWeight=34.75 PerfScore 512.56 -G_M16822_IG21: ; bbWeight=34.72, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+ jle G_M16822_IG15 + ;; size=44 bbWeight=34.75 PerfScore 512.56 +G_M16822_IG22: ; bbWeight=34.72, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov esi, dword ptr [rbx+0x08] ;; size=3 bbWeight=34.72 PerfScore 69.43
-G_M16822_IG22: ; bbWeight=34715.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M16822_IG23: ; bbWeight=34715.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov eax, ecx sar eax, 5 mov r8d, ecx @@ -364,7 +371,7 @@ G_M16822_IG22: ; bbWeight=34715.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0 mov r9d, ecx sub r9d, r8d cmp eax, esi
- jae SHORT G_M16822_IG26
+ jae SHORT G_M16822_IG27
lea rax, bword ptr [rbx+4*rax+0x10] ; byrRegs +[rax] mov r8d, 1 @@ -375,21 +382,19 @@ G_M16822_IG22: ; bbWeight=34715.25, gcrefRegs=8008 {rbx r15}, byrefRegs=0 ; byrRegs -[rax] lea edx, [rax-0x01] test eax, eax
- jg SHORT G_M16822_IG22
+ jg SHORT G_M16822_IG23
;; size=63 bbWeight=34715.25 PerfScore 381867.75
-G_M16822_IG23: ; bbWeight=105, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - inc edi - cmp edi, r14d - jl G_M16822_IG11 - ;; size=11 bbWeight=105 PerfScore 157.50 -G_M16822_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M16822_IG24: ; bbWeight=34.72, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + jmp G_M16822_IG15 + ;; size=5 bbWeight=34.72 PerfScore 69.43 +G_M16822_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r15] call <unknown method> ; gcr arg pop 0 cdqe sub rax, r13 ;; size=10 bbWeight=1 PerfScore 1.50
-G_M16822_IG25: ; bbWeight=1, epilog, nogc, extend
+G_M16822_IG26: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -399,17 +404,17 @@ G_M16822_IG25: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M16822_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M16822_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00 RWD00 dd G_M16822_IG12 - G_M16822_IG02
- dd G_M16822_IG16 - G_M16822_IG02 - dd G_M16822_IG20 - G_M16822_IG02
+ dd G_M16822_IG17 - G_M16822_IG02 + dd G_M16822_IG21 - G_M16822_IG02
-; Total bytes of code 821, prolog size 25, PerfScore 21118664.51, instruction count 242, allocated bytes for code 821 (MethodHash=7135be49) for method BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
+; Total bytes of code 825, prolog size 25, PerfScore 21118664.93, instruction count 243, allocated bytes for code 825 (MethodHash=7135be49) for method BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
; ============================================================ Unwind Info:

+6 (+1.13%) : 481333.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -20,10 +20,10 @@ ; V08 loc7 [V08,T19] ( 5, 0 ) int -> r14 ; V09 loc8 [V09,T20] ( 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,T18] ( 5, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T18] ( 5, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T15] ( 4, 4.00) int -> r14 "Inline return value spill temp" ; V13 tmp3 [V13,T14] ( 3, 4.18) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T11] ( 6, 6 ) ref -> r13 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T11] ( 6, 6 ) ref -> r15 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T07] ( 2, 8.00) ref -> r13 "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T13] ( 3, 4.72) ref -> r13 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -52,31 +52,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_IG09
+ je G_M35244_IG32
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG09 - ;; size=18 bbWeight=1 PerfScore 6.25
+ 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 edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG21
+ jbe G_M35244_IG19
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG04: ; 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_IG09
+ ja G_M35244_IG32
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
+ ;; 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 @@ -86,48 +86,35 @@ G_M35244_IG06: ; bbWeight=2.00, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG11
+ je SHORT G_M35244_IG09
;; size=11 bbWeight=2.00 PerfScore 3.50 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_IG11
+ je SHORT G_M35244_IG09
;; size=16 bbWeight=1.00 PerfScore 4.25
-G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
- jmp SHORT G_M35244_IG10 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M35244_IG09: ; bbWeight=0.67, 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.67 PerfScore 2.33 -G_M35244_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15]
xor r13, r13 ; gcrRegs +[r13] ;; size=3 bbWeight=0.50 PerfScore 0.13
-G_M35244_IG11: ; bbWeight=2.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG09: ; bbWeight=2.00, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
test r13, r13
- jne G_M35244_IG23
+ jne G_M35244_IG21
;; size=9 bbWeight=2.00 PerfScore 2.50
-G_M35244_IG12: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.28, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG13
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG13: ; bbWeight=0.64, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; 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_IG15
+ je SHORT G_M35244_IG13
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG12: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -137,43 +124,44 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=11 bbWeight=0.32 PerfScore 0.48
-G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=1.28, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG32
+ jae G_M35244_IG30
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG33
+ jae G_M35244_IG31
mov esi, r14d
- mov r13, gword ptr [rdi+8*rsi+0x10]
+ mov r15, gword ptr [rdi+8*rsi+0x10] + ; gcrRegs +[r15]
;; size=32 bbWeight=1.28 PerfScore 15.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - movzx rdi, byte ptr [r13+0x2E]
+G_M35244_IG14: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi r13] + movzx rdi, byte ptr [r15+0x2E]
cmp edi, 24
- je SHORT G_M35244_IG25
+ je SHORT G_M35244_IG23
lea esi, [rdi-0x1A] cmp esi, 1
- jbe SHORT G_M35244_IG25
+ jbe SHORT G_M35244_IG23
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG25
+ jbe SHORT G_M35244_IG23
;; size=26 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rbx, r13
+ mov rbx, r15
; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r13]
+G_M35244_IG16: ; 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_IG24
+ je SHORT G_M35244_IG22
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG19: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG17: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, r15 ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -183,16 +171,16 @@ G_M35244_IG19: ; bbWeight=1.55, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 test rax, rax je G_M35244_IG05 ;; size=27 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG20: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG18: ; bbWeight=1.09, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rax+0x10] jmp G_M35244_IG06 ;; size=9 bbWeight=1.09 PerfScore 4.36
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r15] mov rdi, rbx ; gcrRegs +[rdi] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG20: ; bbWeight=1, epilog, nogc, extend
pop rbx pop r13 pop r14 @@ -201,38 +189,39 @@ 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.50
-G_M35244_IG23: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35244_IG21: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rdi] +[r13]
- jmp SHORT G_M35244_IG16 - ;; size=2 bbWeight=0.72 PerfScore 1.44 -G_M35244_IG24: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13] +[r15]
+ mov r15, r13 + ; gcrRegs +[r15] + jmp SHORT G_M35244_IG14 + ;; size=5 bbWeight=0.72 PerfScore 1.62 +G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r13]
xor r14d, r14d jmp G_M35244_IG06 ;; size=8 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r15] +[r13]
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG26
+ je SHORT G_M35244_IG24
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] cmp byte ptr [rdi+0x2E], 32
- je SHORT G_M35244_IG17
+ je SHORT G_M35244_IG15
;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
- mov r15, rax - ; gcrRegs +[r15] - mov edi, dword ptr [r13+0x28] - mov byte ptr [r15+0x2E], 32 - mov dword ptr [r15+0x28], edi - mov rdi, r15
+ mov r14, rax + ; gcrRegs +[r14] + mov edi, dword ptr [r15+0x28] + mov byte ptr [r14+0x2E], 32 + mov dword ptr [r14+0x28], edi + mov rdi, r14
; gcrRegs +[rdi]
- mov rsi, r13
+ mov rsi, r15
; gcrRegs +[rsi] call [System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this] ; gcrRegs -[rax rsi rdi] ...

libraries_tests.run.linux.x64.Release.mch

-25 (-3.40%) : 460629.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -13,22 +13,22 @@ ; V01 loc0 [V01,T02] ( 22, 9.54) 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,T04] ( 3, 9.14) ubyte -> rax
-; V04 loc3 [V04,T07] ( 4, 7.29) ubyte -> r13
+; V04 loc3 [V04,T07] ( 4, 7.29) ubyte -> rdi
;* V05 loc4 [V05,T17] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode> ; V07 loc6 [V07,T33] ( 2, 0 ) int -> r15 ; V08 loc7 [V08,T31] ( 5, 0 ) int -> r14 ; V09 loc8 [V09,T32] ( 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,T18] ( 5, 1.43) ref -> r15 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T18] ( 5, 1.43) ref -> r14 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T14] ( 4, 3.71) int -> r14 "Inline return value spill temp" ; V13 tmp3 [V13,T15] ( 3, 3.53) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T12] ( 6, 5.86) ref -> r12 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T12] ( 6, 5.86) ref -> r15 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T06] ( 2, 7.43) ref -> r13 "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T13] ( 3, 4.38) ref -> r13 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> ; V18 tmp8 [V18,T01] ( 4, 10.85) int -> r14 "Inlining Arg"
-; V19 tmp9 [V19,T08] ( 3, 7.13) ref -> rdi class-hnd "Inlining Arg" <<unknown class>>
+; V19 tmp9 [V19,T08] ( 3, 7.13) ref -> r13 class-hnd "Inlining Arg" <<unknown class>>
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode> ; V21 tmp11 [V21,T26] ( 2, 0.57) int -> rdi "Inlining Arg" ; V22 tmp12 [V22,T29] ( 4, 0.29) int -> rsi "Inline return value spill temp" @@ -40,49 +40,47 @@ ; V28 tmp18 [V28,T24] ( 3, 0.67) ref -> rbx class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> ; V29 tmp19 [V29,T21] ( 3, 1.10) ref -> rbx class-hnd "Inlining Arg" <<unknown class>> ; V30 tmp20 [V30,T09] ( 3, 7.13) ref -> rdi "arr expr"
-; V31 tmp21 [V31,T22] ( 3, 1.10) ref -> rsi "arr expr"
+; V31 tmp21 [V31,T22] ( 3, 1.10) ref -> rdi "arr expr"
; V32 tmp22 [V32,T10] ( 5, 6.96) ref -> r13 "CastInstOf QMark result" ; V33 tmp23 [V33,T23] ( 5, 1.07) ref -> rbx "CastInstOf QMark result" ; V34 cse0 [V34,T03] ( 10, 9.34) ref -> r15 multi-def "CSE - aggressive" ; V35 cse1 [V35,T28] ( 3, 0.43) ref -> rdi "CSE - conservative"
-; V36 rat0 [V36,T05] ( 5, 8.91) ref -> rdi "replacement local" -; V37 rat1 [V37,T16] ( 3, 2.97) long -> rax "CSE for expectedClsNode"
+; V36 rat0 [V36,T05] ( 5, 8.91) ref -> r13 "replacement local" +; V37 rat1 [V37,T16] ( 3, 2.97) long -> rdi "CSE for expectedClsNode"
; V38 rat2 [V38,T19] ( 5, 1.37) ref -> rbx "replacement local" ; V39 rat3 [V39,T27] ( 3, 0.46) long -> rdi "CSE for expectedClsNode" ; V40 rat4 [V40,T00] ( 3, 17.14) int -> rax "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 push rbp push r15 push r14 push r13
- push r12
push rbx
- push rax - lea rbp, [rsp+0x30]
+ lea rbp, [rsp+0x20]
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 7.75
+ ;; size=16 bbWeight=1 PerfScore 5.75
G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG22
+ je G_M35244_IG49
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG22
+ jne G_M35244_IG49
;; size=26 bbWeight=1 PerfScore 6.25 G_M35244_IG03: ; bbWeight=3.14, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG34
+ jbe G_M35244_IG32
;; size=16 bbWeight=3.14 PerfScore 11.79 G_M35244_IG04: ; bbWeight=2.86, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG22
+ ja G_M35244_IG49
mov esi, eax lea rdi, [reloc @RWD00] mov edi, dword ptr [rdi+4*rsi] @@ -94,9 +92,9 @@ G_M35244_IG05: ; bbWeight=1.86, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je G_M35244_IG23
+ je G_M35244_IG21
;; size=13 bbWeight=1.86 PerfScore 6.04
-G_M35244_IG06: ; bbWeight=1.49, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=1.49, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, r15 ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -104,8 +102,8 @@ G_M35244_IG06: ; bbWeight=1.49, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- jne SHORT G_M35244_IG15 - ;; size=23 bbWeight=1.49 PerfScore 4.09
+ jne G_M35244_IG20 + ;; size=27 bbWeight=1.49 PerfScore 4.09
G_M35244_IG07: ; bbWeight=0.93, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov r14d, 1 @@ -118,8 +116,8 @@ G_M35244_IG08: ; bbWeight=1.86, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 je SHORT G_M35244_IG11 ;; size=11 bbWeight=1.86 PerfScore 3.25 G_M35244_IG09: ; bbWeight=0.93, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode - cmp qword ptr [r13], rdi
+ mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode + cmp qword ptr [r13], rsi
je SHORT G_M35244_IG11 ;; size=16 bbWeight=0.93 PerfScore 3.95 G_M35244_IG10: ; bbWeight=0.46, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref @@ -129,132 +127,117 @@ G_M35244_IG10: ; bbWeight=0.46, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ;; size=3 bbWeight=0.46 PerfScore 0.12 G_M35244_IG11: ; bbWeight=1.86, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz test r13, r13
- jne SHORT G_M35244_IG16
+ jne SHORT G_M35244_IG19
;; size=5 bbWeight=1.86 PerfScore 2.32 G_M35244_IG12: ; bbWeight=1.19, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r13]
- mov rdi, r15 - ; gcrRegs +[rdi] - test rdi, rdi - je SHORT G_M35244_IG21
+ mov r13, r15 + ; gcrRegs +[r13] + test r13, r13 + je SHORT G_M35244_IG15
;; size=8 bbWeight=1.19 PerfScore 1.78
-G_M35244_IG13: ; bbWeight=0.59, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz - mov rax, 0xD1FFAB1E ; <unknown class> - cmp qword ptr [rdi], rax - je SHORT G_M35244_IG21 - ;; size=15 bbWeight=0.59 PerfScore 2.53 -G_M35244_IG14: ; bbWeight=7.14, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdi] - jmp SHORT G_M35244_IG20 - ;; size=2 bbWeight=7.14 PerfScore 14.29 -G_M35244_IG15: ; bbWeight=0.56, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rax] - mov r14d, dword ptr [rax+0x10] - jmp SHORT G_M35244_IG08 - ;; size=6 bbWeight=0.56 PerfScore 2.23 -G_M35244_IG16: ; bbWeight=0.67, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax r15] +[r13] - mov r12, r13 - ; gcrRegs +[r12] - ;; size=3 bbWeight=0.67 PerfScore 0.17 -G_M35244_IG17: ; bbWeight=1.86, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=0.59, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz + mov rdi, 0xD1FFAB1E ; <unknown class> + cmp qword ptr [r13], rdi + je SHORT G_M35244_IG15 + ;; size=16 bbWeight=0.59 PerfScore 2.53 +G_M35244_IG14: ; bbWeight=0.30, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
- movzx r13, byte ptr [r12+0x2E] - cmp r13d, 24 - je G_M35244_IG36 - lea edi, [r13-0x1A] - cmp edi, 1 - jbe G_M35244_IG36 - ;; size=29 bbWeight=1.86 PerfScore 9.29 -G_M35244_IG18: ; bbWeight=1.71, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, byref - add r13d, -33 - cmp r13d, 1 - jbe G_M35244_IG36 - ;; size=14 bbWeight=1.71 PerfScore 2.57 -G_M35244_IG19: ; bbWeight=1.86, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - mov rbx, r12 - ; gcrRegs +[rbx] - jmp G_M35244_IG03 - ;; size=8 bbWeight=1.86 PerfScore 4.18 -G_M35244_IG20: ; bbWeight=0.30, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r12] +[r15]
mov rsi, r15 ; gcrRegs +[rsi]
- mov rdi, rax
call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rsi r15] +[rax] ; gcr arg pop 0
- mov rdi, rax - ; gcrRegs +[rdi] - ;; size=14 bbWeight=0.30 PerfScore 0.52 -G_M35244_IG21: ; bbWeight=1.19, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ mov r13, rax + ; gcrRegs +[r13] + ;; size=11 bbWeight=0.30 PerfScore 0.45 +G_M35244_IG15: ; bbWeight=1.19, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- cmp r14d, dword ptr [rdi+0x10] - jae G_M35244_IG49 - mov rdi, gword ptr [rdi+0x08]
+ cmp r14d, dword ptr [r13+0x10] + jae G_M35244_IG47 + mov rdi, gword ptr [r13+0x08] + ; gcrRegs +[rdi]
cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG50
+ jae G_M35244_IG48
mov eax, r14d
- mov r12, gword ptr [rdi+8*rax+0x10] - ; gcrRegs +[r12] - jmp SHORT G_M35244_IG17 - ;; size=34 bbWeight=1.19 PerfScore 16.94 -G_M35244_IG22: ; bbWeight=1.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rdi r12] - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=1.14 PerfScore 4.86 -G_M35244_IG23: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx r15]
+ mov r15, gword ptr [rdi+8*rax+0x10] + ; gcrRegs +[r15] + ;; size=32 bbWeight=1.19 PerfScore 14.56 +G_M35244_IG16: ; bbWeight=1.86, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi r13] + movzx rdi, byte ptr [r15+0x2E] + cmp edi, 24 + je G_M35244_IG34 + lea eax, [rdi-0x1A] + cmp eax, 1 + jbe G_M35244_IG34 + ;; size=26 bbWeight=1.86 PerfScore 9.29 +G_M35244_IG17: ; bbWeight=1.71, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + add edi, -33 + cmp edi, 1 + jbe G_M35244_IG34 + ;; size=12 bbWeight=1.71 PerfScore 2.57 +G_M35244_IG18: ; bbWeight=1.86, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + mov rbx, r15 + ; gcrRegs +[rbx]
...

-16 (-1.84%) : 637481.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%) : 465905.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.93, gcrefRegs=2009 {rax rbx r13}, byrefRegs=0000 {}, byref mov r12d, dword ptr [rax+0x0C] @@ -140,18 +140,18 @@ G_M38617_IG04: ; bbWeight=0.93, 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.07, 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.07, 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.07, gcVars=0000000000000100 {V00}, gcrefRegs= mov r12d, eax jmp G_M38617_IG05 ;; size=21 bbWeight=0.07 PerfScore 0.66
-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]
...

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

@@ -74,48 +74,36 @@ G_M35244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rdi ; gcrRegs +[rbx] ;; size=19 bbWeight=1 PerfScore 7.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_IG56
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=1.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=1.23 PerfScore 5.23 -G_M35244_IG04: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG56 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG42
+ jbe G_M35244_IG41
;; size=16 bbWeight=4 PerfScore 15.00
-G_M35244_IG05: ; bbWeight=3.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=3.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG56
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.40 PerfScore 25.50 -G_M35244_IG06: ; bbWeight=0.07, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=3.40 PerfScore 25.50 +G_M35244_IG05: ; bbWeight=0.07, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r14-r15] mov r13d, 1 ;; size=6 bbWeight=0.07 PerfScore 0.02
-G_M35244_IG07: ; bbWeight=0.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=0.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
dec r13d lea rdi, bword ptr [r14+0x18] ; byrRegs +[rdi] @@ -141,13 +129,13 @@ G_M35244_IG07: ; bbWeight=0.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M35244_IG10
+ jne SHORT G_M35244_IG09
;; size=48 bbWeight=0.20 PerfScore 2.10
-G_M35244_IG08: ; bbWeight=0.20, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=0.20, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
test rdi, rdi
- je G_M35244_IG27
+ je G_M35244_IG26
;; size=9 bbWeight=0.20 PerfScore 0.25
-G_M35244_IG09: ; bbWeight=3.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=3.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi] @@ -156,28 +144,28 @@ G_M35244_IG09: ; bbWeight=3.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rbx rsi r14] ; byrRegs -[rdi]
- jmp G_M35244_IG41
+ jmp G_M35244_IG40
;; size=17 bbWeight=3.20 PerfScore 12.00
-G_M35244_IG10: ; bbWeight=0.10, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=0.10, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi r14] mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rdi], rsi
- je SHORT G_M35244_IG08
+ je SHORT G_M35244_IG07
;; size=15 bbWeight=0.10 PerfScore 0.43
-G_M35244_IG11: ; bbWeight=0.05, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.05, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] xor rdi, rdi ; gcrRegs +[rdi]
- jmp SHORT G_M35244_IG08
+ jmp SHORT G_M35244_IG07
;; size=4 bbWeight=0.05 PerfScore 0.11
-G_M35244_IG12: ; bbWeight=2.60, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=2.60, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi r14-r15] mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je G_M35244_IG29
+ je G_M35244_IG28
;; size=13 bbWeight=2.60 PerfScore 8.45
-G_M35244_IG13: ; bbWeight=1.83, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=1.83, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, r15 ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -185,80 +173,80 @@ G_M35244_IG13: ; bbWeight=1.83, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=23 bbWeight=1.83 PerfScore 5.02
-G_M35244_IG14: ; bbWeight=0.89, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.89, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=6 bbWeight=0.89 PerfScore 3.54
-G_M35244_IG15: ; bbWeight=0.94, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.94, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov r14d, 1 ;; size=6 bbWeight=0.94 PerfScore 0.24
-G_M35244_IG16: ; bbWeight=2.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG19
+ je SHORT G_M35244_IG18
;; size=11 bbWeight=2.60 PerfScore 4.55
-G_M35244_IG17: ; bbWeight=1.30, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.30, 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_IG19
+ je SHORT G_M35244_IG18
;; size=16 bbWeight=1.30 PerfScore 5.53
-G_M35244_IG18: ; bbWeight=0.65, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG17: ; bbWeight=0.65, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] xor r13, r13 ; gcrRegs +[r13] ;; size=3 bbWeight=0.65 PerfScore 0.16
-G_M35244_IG19: ; bbWeight=2.60, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG18: ; bbWeight=2.60, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
test r13, r13
- jne G_M35244_IG32
+ jne G_M35244_IG31
;; size=9 bbWeight=2.60 PerfScore 3.25
-G_M35244_IG20: ; bbWeight=1.54, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.54, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG22
+ je SHORT G_M35244_IG21
;; size=8 bbWeight=1.54 PerfScore 2.31
-G_M35244_IG21: ; bbWeight=0.77, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=0.77, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- jne SHORT G_M35244_IG26
+ jne SHORT G_M35244_IG25
;; size=16 bbWeight=0.77 PerfScore 3.27
-G_M35244_IG22: ; bbWeight=1.54, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=1.54, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs -[r15] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG55
+ jae G_M35244_IG54
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG56
+ jae G_M35244_IG55
mov eax, r14d mov r15, gword ptr [rdi+8*rax+0x10] ; gcrRegs +[r15] ;; size=32 bbWeight=1.54 PerfScore 18.87
-G_M35244_IG23: ; bbWeight=2.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=2.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG34
+ je SHORT G_M35244_IG33
lea eax, [rdi-0x1A] cmp eax, 1
- jbe SHORT G_M35244_IG34
+ jbe SHORT G_M35244_IG33
;; size=18 bbWeight=2.60 PerfScore 13.00
-G_M35244_IG24: ; bbWeight=2.40, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=2.40, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG34
+ jbe SHORT G_M35244_IG33
;; size=8 bbWeight=2.40 PerfScore 3.60
-G_M35244_IG25: ; bbWeight=2.60, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=2.60, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- jmp G_M35244_IG41
+ jmp G_M35244_IG40
;; size=5 bbWeight=2.60 PerfScore 5.20
-G_M35244_IG26: ; bbWeight=0.39, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG25: ; bbWeight=0.39, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] mov rsi, r15 ; gcrRegs +[rsi] @@ -267,61 +255,61 @@ G_M35244_IG26: ; bbWeight=0.39, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcr arg pop 0 mov r13, rax ; gcrRegs +[r13]
- jmp SHORT G_M35244_IG22
+ jmp SHORT G_M35244_IG21
;; size=13 bbWeight=0.39 PerfScore 1.35
-G_M35244_IG27: ; bbWeight=0.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r13] +[r14-r15] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov r12, rsi ; gcrRegs +[r12] test r12, r12
- je G_M35244_IG38
+ je G_M35244_IG37
;; size=16 bbWeight=0.20 PerfScore 0.70
-G_M35244_IG28: ; bbWeight=0.10, gcrefRegs=D040 {rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0.10, gcrefRegs=D040 {rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- jmp SHORT G_M35244_IG30
+ jmp SHORT G_M35244_IG29
;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M35244_IG29: ; bbWeight=0.77, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0.77, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi r12 r14] +[rbx] xor r14d, r14d ...

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

@@ -72,46 +72,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_IG03
+ je G_M35244_IG54
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=1.34, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=1.34 PerfScore 4.68 -G_M35244_IG04: ; bbWeight=3.83, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG54 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3.83, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG43
+ jbe G_M35244_IG42
;; size=16 bbWeight=3.83 PerfScore 14.38
-G_M35244_IG05: ; bbWeight=3.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=3.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG54
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.50 PerfScore 26.25 -G_M35244_IG06: ; bbWeight=0.05, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=3.50 PerfScore 26.25 +G_M35244_IG05: ; bbWeight=0.05, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r14-r15] mov r13d, 1 ;; size=6 bbWeight=0.05 PerfScore 0.01
-G_M35244_IG07: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
dec r13d lea rdi, bword ptr [r14+0x18] ; byrRegs +[rdi] @@ -137,13 +127,13 @@ G_M35244_IG07: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M35244_IG10
+ jne SHORT G_M35244_IG09
;; size=48 bbWeight=0.17 PerfScore 1.75
-G_M35244_IG08: ; bbWeight=0.17, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=0.17, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
test rdi, rdi
- je G_M35244_IG28
+ je G_M35244_IG27
;; size=9 bbWeight=0.17 PerfScore 0.21
-G_M35244_IG09: ; bbWeight=2.67, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=2.67, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi] @@ -152,58 +142,58 @@ G_M35244_IG09: ; bbWeight=2.67, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rbx rsi r14] ; byrRegs -[rdi]
- jmp G_M35244_IG30
+ jmp G_M35244_IG29
;; size=17 bbWeight=2.67 PerfScore 10.00
-G_M35244_IG10: ; bbWeight=0.08, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=0.08, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi r14] mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rdi], rsi
- je SHORT G_M35244_IG08
+ je SHORT G_M35244_IG07
;; size=15 bbWeight=0.08 PerfScore 0.35
-G_M35244_IG11: ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] xor rdi, rdi ; gcrRegs +[rdi]
- jmp SHORT G_M35244_IG08
+ jmp SHORT G_M35244_IG07
;; size=4 bbWeight=0.04 PerfScore 0.09
-G_M35244_IG12: ; bbWeight=0.79, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.79, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi r14] mov r14d, 1 ;; size=6 bbWeight=0.79 PerfScore 0.20
-G_M35244_IG13: ; bbWeight=2.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG16
+ je SHORT G_M35244_IG15
;; size=11 bbWeight=2.50 PerfScore 4.38
-G_M35244_IG14: ; bbWeight=1.25, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.25, 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_IG16
+ je SHORT G_M35244_IG15
;; size=16 bbWeight=1.25 PerfScore 5.31
-G_M35244_IG15: ; bbWeight=0.62, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.62, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] xor r13, r13 ; gcrRegs +[r13] ;; size=3 bbWeight=0.62 PerfScore 0.16
-G_M35244_IG16: ; bbWeight=2.50, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=2.50, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
test r13, r13
- jne G_M35244_IG38
+ jne G_M35244_IG37
;; size=9 bbWeight=2.50 PerfScore 3.12
-G_M35244_IG17: ; bbWeight=1.65, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.65, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG20
+ je SHORT G_M35244_IG19
;; size=8 bbWeight=1.65 PerfScore 2.47
-G_M35244_IG18: ; bbWeight=0.82, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG17: ; bbWeight=0.82, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- je SHORT G_M35244_IG20
+ je SHORT G_M35244_IG19
;; size=16 bbWeight=0.82 PerfScore 3.50
-G_M35244_IG19: ; bbWeight=0.41, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG18: ; bbWeight=0.41, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -213,41 +203,41 @@ G_M35244_IG19: ; bbWeight=0.41, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=11 bbWeight=0.41 PerfScore 0.62
-G_M35244_IG20: ; bbWeight=1.65, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=1.65, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG53
+ jae G_M35244_IG52
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG54
+ jae G_M35244_IG53
mov eax, r14d mov r15, gword ptr [rdi+8*rax+0x10] ; gcrRegs +[r15] ;; size=32 bbWeight=1.65 PerfScore 20.20
-G_M35244_IG21: ; bbWeight=2.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=2.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG23
+ je SHORT G_M35244_IG22
lea eax, [rdi-0x1A] cmp eax, 1
- jbe SHORT G_M35244_IG23
+ jbe SHORT G_M35244_IG22
;; size=18 bbWeight=2.50 PerfScore 12.50
-G_M35244_IG22: ; bbWeight=2.33, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=2.33, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
add edi, -33 cmp edi, 1
- ja G_M35244_IG30
+ ja G_M35244_IG29
;; size=12 bbWeight=2.33 PerfScore 3.50
-G_M35244_IG23: ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x18] ; gcrRegs +[rdi] test rdi, rdi
- je SHORT G_M35244_IG24
+ je SHORT G_M35244_IG23
cmp byte ptr [rdi+0x2E], 32
- je G_M35244_IG30
+ je G_M35244_IG29
;; size=19 bbWeight=0.17 PerfScore 1.21
-G_M35244_IG24: ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -266,9 +256,9 @@ G_M35244_IG24: ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rax rsi rdi] ; gcr arg pop 0 cmp gword ptr [rbx+0x08], 0
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG26
;; size=50 bbWeight=0.17 PerfScore 2.17
-G_M35244_IG25: ; bbWeight=0.11, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG24: ; bbWeight=0.11, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -276,27 +266,27 @@ G_M35244_IG25: ; bbWeight=0.11, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M35244_IG06
+ je G_M35244_IG05
;; size=28 bbWeight=0.11 PerfScore 0.48
-G_M35244_IG26: ; bbWeight=0.05, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref - jmp G_M35244_IG41
+G_M35244_IG25: ; bbWeight=0.05, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref + jmp G_M35244_IG40
;; size=5 bbWeight=0.05 PerfScore 0.11
-G_M35244_IG27: ; bbWeight=0.06, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0.06, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] xor r13d, r13d
- jmp G_M35244_IG07
+ jmp G_M35244_IG06
;; size=8 bbWeight=0.06 PerfScore 0.13
-G_M35244_IG28: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rbx, rsi test rbx, rbx
- jne SHORT G_M35244_IG33
+ jne SHORT G_M35244_IG32
;; size=12 bbWeight=0.17 PerfScore 0.58
-G_M35244_IG29: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] ...

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

@@ -72,46 +72,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_IG03
+ je G_M35244_IG55
test dword ptr [rbx+0x28], 0x440
- je SHORT G_M35244_IG04 - ;; size=18 bbWeight=1 PerfScore 6.25 -G_M35244_IG03: ; bbWeight=1.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=1.28 PerfScore 4.49 -G_M35244_IG04: ; bbWeight=3.67, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jne G_M35244_IG55 + ;; size=26 bbWeight=1 PerfScore 6.25 +G_M35244_IG03: ; bbWeight=3.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rax, byte ptr [rbx+0x2E] lea edi, [rax-0x03] cmp edi, 5
- jbe G_M35244_IG46
+ jbe G_M35244_IG45
;; size=16 bbWeight=3.67 PerfScore 13.75
-G_M35244_IG05: ; bbWeight=3.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG04: ; bbWeight=3.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
add eax, -24 cmp eax, 10
- ja SHORT G_M35244_IG03
+ ja G_M35244_IG55
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.33 PerfScore 25.00 -G_M35244_IG06: ; bbWeight=0.06, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=36 bbWeight=3.33 PerfScore 25.00 +G_M35244_IG05: ; bbWeight=0.06, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r14-r15] mov r13d, 1 ;; size=6 bbWeight=0.06 PerfScore 0.02
-G_M35244_IG07: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG06: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
dec r13d lea rdi, bword ptr [r14+0x18] ; byrRegs +[rdi] @@ -137,13 +127,13 @@ G_M35244_IG07: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] test rdi, rdi
- jne SHORT G_M35244_IG10
+ jne SHORT G_M35244_IG09
;; size=48 bbWeight=0.17 PerfScore 1.75
-G_M35244_IG08: ; bbWeight=0.17, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG07: ; bbWeight=0.17, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
test rdi, rdi
- je G_M35244_IG28
+ je G_M35244_IG27
;; size=9 bbWeight=0.17 PerfScore 0.21
-G_M35244_IG09: ; bbWeight=2.67, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=2.67, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] lea rdi, bword ptr [rbx+0x08] ; byrRegs +[rdi] @@ -152,28 +142,28 @@ G_M35244_IG09: ; bbWeight=2.67, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0 call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rbx rsi r14] ; byrRegs -[rdi]
- jmp G_M35244_IG40
+ jmp G_M35244_IG39
;; size=17 bbWeight=2.67 PerfScore 10.00
-G_M35244_IG10: ; bbWeight=0.08, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=0.08, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rdi r14] mov rsi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode cmp qword ptr [rdi], rsi
- je SHORT G_M35244_IG08
+ je SHORT G_M35244_IG07
;; size=15 bbWeight=0.08 PerfScore 0.35
-G_M35244_IG11: ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] xor rdi, rdi ; gcrRegs +[rdi]
- jmp SHORT G_M35244_IG08
+ jmp SHORT G_M35244_IG07
;; size=4 bbWeight=0.04 PerfScore 0.09
-G_M35244_IG12: ; bbWeight=2.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=2.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi r14-r15] mov r15, gword ptr [rbx+0x08] ; gcrRegs +[r15] test r15, r15
- je G_M35244_IG27
+ je G_M35244_IG26
;; size=13 bbWeight=2.33 PerfScore 7.58
-G_M35244_IG13: ; bbWeight=1.64, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=1.64, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov rsi, r15 ; gcrRegs +[rsi] mov rdi, 0xD1FFAB1E ; <unknown class> @@ -181,50 +171,50 @@ G_M35244_IG13: ; bbWeight=1.64, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 test rax, rax
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG14
;; size=23 bbWeight=1.64 PerfScore 4.51
-G_M35244_IG14: ; bbWeight=0.79, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=0.79, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, byref, isz
mov r14d, dword ptr [rax+0x10]
- jmp SHORT G_M35244_IG16
+ jmp SHORT G_M35244_IG15
;; size=6 bbWeight=0.79 PerfScore 3.18
-G_M35244_IG15: ; bbWeight=0.84, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG14: ; bbWeight=0.84, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov r14d, 1 ;; size=6 bbWeight=0.84 PerfScore 0.21
-G_M35244_IG16: ; bbWeight=2.33, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=2.33, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
dec r14d mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG19
+ je SHORT G_M35244_IG18
;; size=11 bbWeight=2.33 PerfScore 4.08
-G_M35244_IG17: ; bbWeight=1.17, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.17, 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_IG19
+ je SHORT G_M35244_IG18
;; size=16 bbWeight=1.17 PerfScore 4.96
-G_M35244_IG18: ; bbWeight=0.58, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG17: ; bbWeight=0.58, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] xor r13, r13 ; gcrRegs +[r13] ;; size=3 bbWeight=0.58 PerfScore 0.15
-G_M35244_IG19: ; bbWeight=2.33, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG18: ; bbWeight=2.33, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
test r13, r13
- jne G_M35244_IG30
+ jne G_M35244_IG29
;; size=9 bbWeight=2.33 PerfScore 2.92
-G_M35244_IG20: ; bbWeight=1.38, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=1.38, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13] mov r13, r15 ; gcrRegs +[r13] test r13, r13
- je SHORT G_M35244_IG23
+ je SHORT G_M35244_IG22
;; size=8 bbWeight=1.38 PerfScore 2.07
-G_M35244_IG21: ; bbWeight=0.69, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=0.69, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r13], rdi
- je SHORT G_M35244_IG23
+ je SHORT G_M35244_IG22
;; size=16 bbWeight=0.69 PerfScore 2.94
-G_M35244_IG22: ; bbWeight=0.35, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.35, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r13] mov rsi, r15 ; gcrRegs +[rsi] @@ -234,78 +224,78 @@ G_M35244_IG22: ; bbWeight=0.35, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 mov r13, rax ; gcrRegs +[r13] ;; size=11 bbWeight=0.35 PerfScore 0.52
-G_M35244_IG23: ; bbWeight=1.38, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=1.38, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] cmp r14d, dword ptr [r13+0x10]
- jae G_M35244_IG54
+ jae G_M35244_IG53
mov rdi, gword ptr [r13+0x08] ; gcrRegs +[rdi] cmp r14d, dword ptr [rdi+0x08]
- jae G_M35244_IG55
+ jae G_M35244_IG54
mov eax, r14d mov r15, gword ptr [rdi+8*rax+0x10] ; gcrRegs +[r15] ;; size=32 bbWeight=1.38 PerfScore 16.94
-G_M35244_IG24: ; bbWeight=2.33, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=2.33, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi r13] movzx rdi, byte ptr [r15+0x2E] cmp edi, 24
- je SHORT G_M35244_IG33
+ je SHORT G_M35244_IG32
lea eax, [rdi-0x1A] cmp eax, 1
- jbe SHORT G_M35244_IG33
+ jbe SHORT G_M35244_IG32
;; size=18 bbWeight=2.33 PerfScore 11.67
-G_M35244_IG25: ; bbWeight=2.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG24: ; bbWeight=2.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
add edi, -33 cmp edi, 1
- jbe SHORT G_M35244_IG33
+ jbe SHORT G_M35244_IG32
;; size=8 bbWeight=2.17 PerfScore 3.25
-G_M35244_IG26: ; bbWeight=2.33, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=2.33, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- jmp G_M35244_IG40
+ jmp G_M35244_IG39
;; size=5 bbWeight=2.33 PerfScore 4.67
-G_M35244_IG27: ; bbWeight=0.70, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M35244_IG26: ; bbWeight=0.70, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] xor r14d, r14d
- jmp G_M35244_IG16
+ jmp G_M35244_IG15
;; size=8 bbWeight=0.70 PerfScore 1.56
-G_M35244_IG28: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M35244_IG27: ; bbWeight=0.17, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r14] mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rbx, rsi test rbx, rbx
- je G_M35244_IG39
+ je G_M35244_IG38
;; size=16 bbWeight=0.17 PerfScore 0.58
-G_M35244_IG29: ; bbWeight=0.08, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M35244_IG31
+G_M35244_IG28: ; bbWeight=0.08, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M35244_IG30
;; size=2 bbWeight=0.08 PerfScore 0.17
-G_M35244_IG30: ; bbWeight=0.95, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0.95, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi r14-r15] +[r13] mov r15, r13 ...

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 7 4 1 -70 +57
benchmarks.run_tiered.linux.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.x64.checked.mch 15 13 2 0 -67 +10
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 17 8 7 2 -97 +33
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
44 28 13 3 -234 +100

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 31,764 2,052 29,712 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch 155,049 57,390 97,659 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.linux.x64.checked.mch 58,135 43,840 14,295 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 608,390 362,472 245,918 0 (0.00%) 0 (0.00%)
libraries.crossgen2.linux.x64.checked.mch 265,301 15 265,286 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 298,707 6 298,701 0 (0.00%) 0 (0.00%)
libraries_tests.run.linux.x64.Release.mch 751,536 496,905 254,631 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 305,837 21,933 283,904 0 (0.00%) 0 (0.00%)
realworld.run.linux.x64.checked.mch 33,245 45 33,200 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,407 10 27,397 0 (0.00%) 0 (0.00%)
2,535,371 984,668 1,550,703 0 (0.00%) 0 (0.00%)

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

Detail diffs



Top file regressions (bytes):
          17 : 129274.dasm (3.25 % of base)
          17 : 24298.dasm (3.25 % of base)
          14 : 101196.dasm (1.23 % of base)
           9 : 78234.dasm (1.26 % of base)

Top file improvements (bytes):
         -51 : 32924.dasm (-8.85 % of base)
          -9 : 78304.dasm (-1.60 % of base)
          -6 : 136566.dasm (-1.42 % of base)
          -1 : 42930.dasm (-0.11 % of base)
          -1 : 44886.dasm (-0.12 % of base)
          -1 : 44844.dasm (-0.12 % of base)
          -1 : 42973.dasm (-0.11 % of base)

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

Top method regressions (bytes):
          17 (3.25 % of base) : 129274.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.25 % of base) : 24298.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          14 (1.23 % of base) : 101196.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetTypeOrReturnType(Microsoft.CodeAnalysis.CSharp.Symbol,byref,byref,byref) (Tier1)
           9 (1.26 % of base) : 78234.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):
         -51 (-8.85 % of base) : 32924.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -9 (-1.60 % of base) : 78304.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-1.42 % of base) : 136566.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) : 42930.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 42973.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 44886.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 44844.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

Top method regressions (percentages):
          17 (3.25 % of base) : 129274.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.25 % of base) : 24298.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           9 (1.26 % of base) : 78234.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)
          14 (1.23 % of base) : 101196.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetTypeOrReturnType(Microsoft.CodeAnalysis.CSharp.Symbol,byref,byref,byref) (Tier1)

Top method improvements (percentages):
         -51 (-8.85 % of base) : 32924.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -9 (-1.60 % of base) : 78304.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-1.42 % of base) : 136566.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) : 44886.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 44844.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 42930.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 42973.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

11 total methods with Code Size differences (7 improved, 4 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: 418408742 (overridden on cmd)
Total bytes of diff: 418408685 (overridden on cmd)
Total bytes of delta: -57 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           6 : 481333.dasm (1.13 % of base)
           4 : 464229.dasm (0.49 % of base)

Top file improvements (bytes):
          -7 : 332141.dasm (-1.28 % of base)
          -7 : 310788.dasm (-1.28 % of base)
          -7 : 465007.dasm (-1.28 % of base)
          -7 : 476691.dasm (-1.28 % of base)
          -7 : 497108.dasm (-0.90 % of base)
          -7 : 432844.dasm (-1.28 % of base)
          -7 : 467533.dasm (-1.28 % of base)
          -7 : 445350.dasm (-1.28 % of base)
          -7 : 470526.dasm (-1.28 % of base)
          -1 : 464329.dasm (-0.12 % of base)
          -1 : 464283.dasm (-0.11 % of base)
          -1 : 464286.dasm (-0.11 % of base)
          -1 : 464332.dasm (-0.12 % of base)

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

Top method regressions (bytes):
           6 (1.13 % of base) : 481333.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.49 % of base) : 464229.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)

Top method improvements (bytes):
          -7 (-0.90 % of base) : 497108.dasm - DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)
          -7 (-1.28 % of base) : 332141.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 310788.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 465007.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 476691.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 432844.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 467533.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 445350.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 470526.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -1 (-0.11 % of base) : 464283.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 464286.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 464329.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 464332.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

Top method regressions (percentages):
           6 (1.13 % of base) : 481333.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.49 % of base) : 464229.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)

Top method improvements (percentages):
          -7 (-1.28 % of base) : 445350.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 332141.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 310788.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 465007.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 476691.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 432844.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 467533.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.28 % of base) : 470526.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-0.90 % of base) : 497108.dasm - DefaultNamespace.GCVariant2:runTest(int,int):ubyte:this (Tier1-OSR)
          -1 (-0.12 % of base) : 464329.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.12 % of base) : 464332.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 464283.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.11 % of base) : 464286.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)

15 total methods with Code Size differences (13 improved, 2 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: 331729893 (overridden on cmd)
Total bytes of diff: 331729829 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           7 : 714255.dasm (0.54 % of base)
           5 : 542155.dasm (0.58 % of base)
           5 : 112815.dasm (0.60 % of base)
           5 : 153396.dasm (0.59 % of base)
           5 : 175615.dasm (0.58 % of base)
           4 : 67695.dasm (0.45 % of base)
           2 : 688242.dasm (0.35 % of base)

Top file improvements (bytes):
         -31 : 465905.dasm (-1.57 % of base)
         -25 : 460629.dasm (-3.40 % of base)
         -16 : 637481.dasm (-1.84 % of base)
          -7 : 691345.dasm (-0.95 % of base)
          -7 : 524359.dasm (-1.04 % of base)
          -7 : 43745.dasm (-0.97 % of base)
          -2 : 93990.dasm (-0.20 % of base)
          -2 : 57248.dasm (-0.18 % of base)

15 total files with Code Size differences (8 improved, 7 regressed), 2 unchanged.

Top method regressions (bytes):
           7 (0.54 % of base) : 714255.dasm - System.Text.RegularExpressions.Tests.MonoTests+<ValidateRegex_MemberData>d__1:MoveNext():ubyte:this (Tier1)
           5 (0.58 % of base) : 542155.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.60 % of base) : 112815.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.59 % of base) : 153396.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.58 % of base) : 175615.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           4 (0.45 % of base) : 67695.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (Tier1)
           2 (0.35 % of base) : 688242.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)

Top method improvements (bytes):
         -31 (-1.57 % of base) : 465905.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
         -25 (-3.40 % of base) : 460629.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
         -16 (-1.84 % of base) : 637481.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[byte]:MoveNext():ubyte:this (Tier1)
          -7 (-0.95 % of base) : 691345.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -7 (-1.04 % of base) : 524359.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-0.97 % of base) : 43745.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -2 (-0.20 % of base) : 93990.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)
          -2 (-0.18 % of base) : 57248.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)

Top method regressions (percentages):
           5 (0.60 % of base) : 112815.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.59 % of base) : 153396.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.58 % of base) : 542155.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.58 % of base) : 175615.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           7 (0.54 % of base) : 714255.dasm - System.Text.RegularExpressions.Tests.MonoTests+<ValidateRegex_MemberData>d__1:MoveNext():ubyte:this (Tier1)
           4 (0.45 % of base) : 67695.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (Tier1)
           2 (0.35 % of base) : 688242.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)

Top method improvements (percentages):
         -25 (-3.40 % of base) : 460629.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
         -16 (-1.84 % of base) : 637481.dasm - System.Collections.Concurrent.ConcurrentQueue`1+<Enumerate>d__26[byte]:MoveNext():ubyte:this (Tier1)
         -31 (-1.57 % of base) : 465905.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -7 (-1.04 % of base) : 524359.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-0.97 % of base) : 43745.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-0.95 % of base) : 691345.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -2 (-0.20 % of base) : 93990.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)
          -2 (-0.18 % of base) : 57248.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)

15 total methods with Code Size differences (8 improved, 7 regressed).



windows arm64

Diffs are based on 2,376,931 contexts (945,150 MinOpts, 1,431,781 FullOpts).

MISSED contexts: 5 (0.00%)

Overall (-20 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 46,555,288 -4
coreclr_tests.run.windows.arm64.checked.mch 505,264,984 +0
libraries_tests.run.windows.arm64.Release.mch 321,619,196 -16

FullOpts (-20 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 30,069,536 -4
coreclr_tests.run.windows.arm64.checked.mch 163,807,860 +0
libraries_tests.run.windows.arm64.Release.mch 117,557,144 -16

Example diffs

benchmarks.run_pgo.windows.arm64.checked.mch

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

@@ -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_IG14
+ cbz w0, G_M35244_IG26
ldr w1, [x19, #0x28] mov w0, #0xD1FFAB1E tst w1, w0
- bne G_M35244_IG14
+ bne G_M35244_IG26
;; 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_IG22
;; size=16 bbWeight=2.00 PerfScore 10.02 G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w1, w20, #24 cmp w1, #10
- bhi G_M35244_IG14
+ bhi G_M35244_IG26
mov w1, w1 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -89,7 +89,7 @@ G_M35244_IG06: ; bbWeight=0.72, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M35244_IG15
+ cbnz x0, G_M35244_IG28
mov w21, #1 ;; size=28 bbWeight=0.72 PerfScore 3.22 G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -113,7 +113,7 @@ G_M35244_IG09: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x23] ;; size=4 bbWeight=0.25 PerfScore 0.13 G_M35244_IG10: ; bbWeight=1.00, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- cbz x23, G_M35244_IG17
+ cbz x23, G_M35244_IG14
;; size=4 bbWeight=1.00 PerfScore 1.00 G_M35244_IG11: ; bbWeight=1.00, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x20] @@ -123,7 +123,7 @@ G_M35244_IG11: ; 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_IG15
;; size=28 bbWeight=1.00 PerfScore 6.53 G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -136,37 +136,7 @@ G_M35244_IG13: ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov w21, wzr b G_M35244_IG07 ;; size=8 bbWeight=0.29 PerfScore 0.43
-G_M35244_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - 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.07 -G_M35244_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x0 x19-x20] - ldr w21, [x0, #0x10] - b G_M35244_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M35244_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0 x20] - mov x0, x19 - ; gcrRegs +[x0] - mov w1, wzr - 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 - ; gcrRegs -[x19] - ; gcr arg pop 0 - mov x19, x0 - ; 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_IG14: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -177,11 +147,11 @@ 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_IG24
ldr x0, [x0, #0x08] ldr w1, [x0, #0x08] cmp w22, w1
- bhs G_M35244_IG28
+ bhs G_M35244_IG25
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -189,18 +159,18 @@ G_M35244_IG17: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs +[x23] b G_M35244_IG11 ;; size=60 bbWeight=0 PerfScore 0.00
-G_M35244_IG18: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG15: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0] ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG19
+ cbz x0, G_M35244_IG16
ldr x0, [x19, #0x18] ldrb w0, [x0, #0x2E] ; gcrRegs -[x0] cmp w0, #32 beq G_M35244_IG12 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG19: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -248,7 +218,7 @@ G_M35244_IG19: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG12 ;; size=124 bbWeight=0 PerfScore 0.00
-G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG17: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x23] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -261,9 +231,9 @@ G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG22
+ b G_M35244_IG19
;; size=36 bbWeight=0 PerfScore 0.00
-G_M35244_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -283,22 +253,22 @@ G_M35244_IG21: ; 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_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG21
+ blt G_M35244_IG18
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG14 - b G_M35244_IG16
+ beq G_M35244_IG26 + b G_M35244_IG27
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG23: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; 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_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1
- beq G_M35244_IG16
+ beq G_M35244_IG27
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this @@ -310,14 +280,14 @@ G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG14
+ cbz x19, G_M35244_IG26
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_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this @@ -325,7 +295,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend
+G_M35244_IG23: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -333,7 +303,7 @@ G_M35244_IG26: ; bbWeight=0, epilog, nogc, extend br x1 ; gcr arg pop 0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG24: ; 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 @@ -343,25 +313,52 @@ G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0
- brk_windows #0
+ ;; size=4 bbWeight=0 PerfScore 0.00 +G_M35244_IG26: ; 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 PerfScore 0.00 +G_M35244_IG27: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[x19] + mov x0, x19 + ; gcrRegs +[x0] + mov w1, wzr + 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 + ; gcrRegs -[x19] + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + b G_M35244_IG03 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20]
...

+0 (0.00%) : 94685.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.58, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.58 PerfScore 7.30 -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.80 -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.58 PerfScore 7.88 +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.78, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M417_IG05: ; bbWeight=0.78, 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.78, 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.78 PerfScore 15.62
-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.42, 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.80 +G_M417_IG08: ; bbWeight=0.42, 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.85, 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.34, 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%) : 91828.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.45 -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.05 +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.01
-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.81 -G_M417_IG08: ; bbWeight=0.40, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.71 +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.09, 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:

coreclr_tests.run.windows.arm64.checked.mch

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

@@ -53,11 +53,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_IG21
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG21
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG21
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG23
+ cbz x0, G_M35244_IG21
;; size=24 bbWeight=1.55 PerfScore 6.18 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10] @@ -146,12 +146,12 @@ G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] 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] @@ -167,7 +167,7 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { 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 ; gcrRegs -[x19] @@ -197,33 +197,26 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=480 ; gcrRegs +[x20] b G_M35244_IG16 ;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG21: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20 x22] - 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_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - mov w21, wzr - b G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 0.68 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov w21, #1 b G_M35244_IG08 ;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 0.68 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -271,7 +264,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG17 ;; 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] @@ -284,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 @@ -306,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
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG27
+ blt G_M35244_IG26
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG21
+ beq G_M35244_IG32
b G_M35244_IG33 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1 beq G_M35244_IG33 @@ -333,10 +326,10 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG21
+ cbz x19, G_M35244_IG32
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -346,11 +339,17 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; 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_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -366,20 +365,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02
- dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 752, prolog size 20, PerfScore 128.05, instruction count 188, allocated bytes for code 752 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 752, prolog size 20, PerfScore 125.39, instruction count 188, allocated bytes for code 752 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

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

@@ -53,11 +53,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_IG21
+ cbz w0, G_M35244_IG32
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG21
+ bne G_M35244_IG32
;; size=24 bbWeight=1 PerfScore 7.00 G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldrb w0, [x19, #0x2E] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by G_M35244_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG21
+ bhi G_M35244_IG32
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG23
+ cbz x0, G_M35244_IG21
;; size=24 bbWeight=1.55 PerfScore 6.18 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10] @@ -150,12 +150,12 @@ G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=480000 {x19 x22}, byrefRegs=000 ; gcrRegs -[x0] 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] @@ -171,7 +171,7 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { 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 ; gcrRegs -[x19] @@ -201,33 +201,26 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=480 ; gcrRegs +[x20] b G_M35244_IG16 ;; size=8 bbWeight=0.72 PerfScore 1.08
-G_M35244_IG21: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20 x22] - 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_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20] - mov w21, wzr - b G_M35244_IG08 - ;; size=8 bbWeight=0.45 PerfScore 0.68 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov w21, #1 b G_M35244_IG08 ;; size=8 bbWeight=0.45 PerfScore 0.68
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + mov w21, wzr + b G_M35244_IG08 + ;; size=8 bbWeight=0.45 PerfScore 0.68 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -275,7 +268,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcr arg pop 0 b G_M35244_IG17 ;; 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] @@ -288,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 @@ -310,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
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG27
+ blt G_M35244_IG26
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG21
+ beq G_M35244_IG32
b G_M35244_IG33 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1 beq G_M35244_IG33 @@ -337,10 +330,10 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG21
+ cbz x19, G_M35244_IG32
b G_M35244_IG03 ;; size=48 bbWeight=0 PerfScore 0.00
-G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19] movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 @@ -350,11 +343,17 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; 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_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -370,20 +369,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcrRegs +[x19] b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02
dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02 dd G_M35244_IG33 - G_M35244_IG02
- dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 768, prolog size 20, PerfScore 129.49, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 768, prolog size 20, PerfScore 126.83, instruction count 192, allocated bytes for code 768 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

libraries_tests.run.windows.arm64.Release.mch

-4 (-0.45%) : 401473.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -20,15 +20,15 @@ ; V08 loc7 [V08,T30] ( 5, 0 ) int -> x21 ; V09 loc8 [V09,T31] ( 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,T18] ( 5, 0.83) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T18] ( 5, 0.83) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T14] ( 4, 3.33) int -> x21 "Inline return value spill temp" ; V13 tmp3 [V13,T15] ( 3, 2.91) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T12] ( 6, 5.17) ref -> x22 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T12] ( 6, 5.17) ref -> x20 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T07] ( 2, 6.67) ref -> x22 "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T13] ( 3, 4.01) ref -> x22 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> ; V18 tmp8 [V18,T01] ( 4, 9.26) int -> x21 "Inlining Arg"
-; V19 tmp9 [V19,T10] ( 3, 5.93) ref -> x1 class-hnd "Inlining Arg" <<unknown class>>
+; V19 tmp9 [V19,T10] ( 3, 5.93) ref -> x22 class-hnd "Inlining Arg" <<unknown class>>
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode> ; V21 tmp11 [V21,T26] ( 2, 0.33) int -> x0 "Inlining Arg" ;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -37,14 +37,14 @@ ;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V26 tmp16 [V26,T24] ( 3, 0.40) ref -> x19 class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> ; V27 tmp17 [V27,T22] ( 3, 0.59) ref -> x19 class-hnd "Inlining Arg" <<unknown class>>
-; V28 tmp18 [V28,T11] ( 3, 5.93) ref -> x1 "arr expr"
+; V28 tmp18 [V28,T11] ( 3, 5.93) ref -> x0 "arr expr"
; V29 tmp19 [V29,T27] ( 2, 0.33) int -> x1 "argument with side effect"
-; V30 tmp20 [V30,T23] ( 3, 0.59) ref -> x1 "arr expr"
+; V30 tmp20 [V30,T23] ( 3, 0.59) ref -> x0 "arr expr"
; V31 tmp21 [V31,T08] ( 5, 6.25) ref -> x22 "CastInstOf QMark result" ; V32 tmp22 [V32,T21] ( 5, 0.62) ref -> x19 "CastInstOf QMark result" ; V33 cse0 [V33,T04] ( 10, 7.86) ref -> x20 multi-def "CSE - aggressive" ; V34 cse1 [V34,T28] ( 3, 0.25) ref -> x0 "CSE - conservative"
-; V35 rat0 [V35,T05] ( 5, 7.41) ref -> x1 "replacement local"
+; V35 rat0 [V35,T05] ( 5, 7.41) ref -> x22 "replacement local"
; V36 rat1 [V36,T16] ( 3, 2.47) long -> x0 "CSE for expectedClsNode" ; V37 rat2 [V37,T19] ( 5, 0.74) ref -> x19 "replacement local" ; V38 rat3 [V38,T29] ( 3, 0.25) long -> x0 "CSE for expectedClsNode" @@ -63,22 +63,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_IG19
+ cbz w0, G_M35244_IG38
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG19
+ bne G_M35244_IG38
;; size=24 bbWeight=1 PerfScore 7.00 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_IG32
+ bls G_M35244_IG30
;; size=16 bbWeight=2.83 PerfScore 14.17 G_M35244_IG04: ; bbWeight=2.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG19
+ bhi G_M35244_IG38
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -89,7 +89,7 @@ G_M35244_IG04: ; bbWeight=2.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=1.67, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG16
+ cbz x20, G_M35244_IG20
;; size=8 bbWeight=1.67 PerfScore 6.67 G_M35244_IG06: ; bbWeight=1.17, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -100,7 +100,7 @@ G_M35244_IG06: ; bbWeight=1.17, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M35244_IG11
+ cbnz x0, G_M35244_IG19
;; size=24 bbWeight=1.17 PerfScore 4.68 G_M35244_IG07: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -110,147 +110,138 @@ G_M35244_IG08: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=000 sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG13
+ cbz x22, G_M35244_IG11
;; size=12 bbWeight=1.67 PerfScore 3.33 G_M35244_IG09: ; bbWeight=0.83, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x22] - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - cmp x0, x1 - beq G_M35244_IG13 - ;; size=24 bbWeight=0.83 PerfScore 5.00 -G_M35244_IG10: ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x22] - b G_M35244_IG12 - ;; size=4 bbWeight=0.42 PerfScore 0.42 -G_M35244_IG11: ; bbWeight=0.57, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0] - ldr w21, [x0, #0x10] - b G_M35244_IG08 - ;; size=8 bbWeight=0.57 PerfScore 2.27 -G_M35244_IG12: ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x22, xzr - ; gcrRegs +[x22] - ;; size=4 bbWeight=0.42 PerfScore 0.21 -G_M35244_IG13: ; bbWeight=1.67, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz - cbnz x22, G_M35244_IG17 - ;; size=4 bbWeight=1.67 PerfScore 1.67 -G_M35244_IG14: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22] - mov x1, x20 - ; gcrRegs +[x1] - cbz x1, G_M35244_IG22 - ;; size=8 bbWeight=0.99 PerfScore 1.48 -G_M35244_IG15: ; bbWeight=4.17, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref - b G_M35244_IG20 - ;; size=4 bbWeight=4.17 PerfScore 4.17 -G_M35244_IG16: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1] - mov w21, wzr - b G_M35244_IG08 - ;; size=8 bbWeight=0.50 PerfScore 0.74 -G_M35244_IG17: ; bbWeight=1.67, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x20] +[x22] - ldrb w0, [x22, #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_IG34 - ;; size=28 bbWeight=1.67 PerfScore 10.83 -G_M35244_IG18: ; bbWeight=1.67, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - mov x19, x22 - ; gcrRegs +[x19] - b G_M35244_IG03 - ;; size=8 bbWeight=1.67 PerfScore 2.50 -G_M35244_IG19: ; bbWeight=1.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19 x22] - 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_IG20: ; bbWeight=0.49, gcVars=0000000000000000 {}, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x1 x19-x20]
+ ldr x1, [x22]
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- ldr x2, [x1] - cmp x2, x0 - beq G_M35244_IG22
+ cmp x1, x0 + beq G_M35244_IG11 + ;; size=24 bbWeight=0.83 PerfScore 5.00 +G_M35244_IG10: ; bbWeight=0.42, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22] + mov x22, xzr + ; gcrRegs +[x22] + ;; size=4 bbWeight=0.42 PerfScore 0.21 +G_M35244_IG11: ; bbWeight=1.67, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x22, G_M35244_IG18 + ;; size=4 bbWeight=1.67 PerfScore 1.67 +G_M35244_IG12: ; bbWeight=0.99, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x22] + mov x22, x20 + ; gcrRegs +[x22] + cbz x22, G_M35244_IG15 + ;; size=8 bbWeight=0.99 PerfScore 1.48 +G_M35244_IG13: ; 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_IG15
;; size=24 bbWeight=0.49 PerfScore 2.96
-G_M35244_IG21: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1]
+G_M35244_IG14: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x22]
mov x1, x20 ; gcrRegs +[x1] bl CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[x1 x20] +[x0] ; gcr arg pop 0
- mov x1, x0 - ; gcrRegs +[x1] - ;; size=12 bbWeight=0.25 PerfScore 0.49 -G_M35244_IG22: ; bbWeight=0.99, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] - ldr w0, [x1, #0x10] - cmp w21, w0 - bhs G_M35244_IG38 - ldr x1, [x1, #0x08] - ldr w0, [x1, #0x08] - cmp w21, w0 - bhs G_M35244_IG39 - add x1, x1, #16 - ; gcrRegs -[x1] - ; byrRegs +[x1] - ldr x22, [x1, w21, UXTW #3]
+ mov x22, x0
; gcrRegs +[x22]
- b G_M35244_IG17 - ;; size=40 bbWeight=0.99 PerfScore 16.30 -G_M35244_IG23: ; bbWeight=0.17, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=12 bbWeight=0.25 PerfScore 0.49 +G_M35244_IG15: ; bbWeight=0.99, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + ldr w0, [x22, #0x10] + cmp w21, w0 + bhs G_M35244_IG36 + ldr x0, [x22, #0x08] + ; gcrRegs +[x0] + ldr w1, [x0, #0x08] + cmp w21, w1 + bhs G_M35244_IG37 + 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_IG16: ; bbWeight=1.67, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
- ; byrRegs -[x1]
+ ; byrRegs -[x0] + 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_IG32 + ;; size=28 bbWeight=1.67 PerfScore 10.83 +G_M35244_IG17: ; bbWeight=1.67, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + mov x19, x20 + ; gcrRegs +[x19] + b G_M35244_IG03 + ;; size=8 bbWeight=1.67 PerfScore 2.50
...

-4 (-0.45%) : 590738.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 30650
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 30650
; 3 inlinees with PGO data; 9 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -74,13 +74,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_IG08
;; size=24 bbWeight=1 PerfScore 6.00
-G_M57106_IG03: ; bbWeight=0.39, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref - mov w21, #9 - b G_M57106_IG05 - ;; size=8 bbWeight=0.39 PerfScore 0.58 -G_M57106_IG04: ; bbWeight=0.61, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M57106_IG03: ; bbWeight=0.61, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] ldr x1, [x20, #0x58] @@ -90,12 +86,12 @@ G_M57106_IG04: ; bbWeight=0.61, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcr arg pop 0 sxtw w21, w0 ;; size=20 bbWeight=0.61 PerfScore 4.88
-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_IG11
+ bne G_M57106_IG09
;; size=12 bbWeight=1 PerfScore 2.00
-G_M57106_IG06: ; bbWeight=0.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG05: ; bbWeight=0.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov x1, x19 ; gcrRegs +[x1] movz x0, #24 @@ -118,7 +114,7 @@ G_M57106_IG06: ; bbWeight=0.89, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr w1, [x19, #0x08] cbnz w1, G_M57106_IG13 ;; size=60 bbWeight=0.89 PerfScore 16.89
-G_M57106_IG07: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57106_IG06: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19-x20] movz x1, #0xD1FFAB1E // box for <unknown class>:<unknown field> movk x1, #0xD1FFAB1E LSL #16 @@ -128,7 +124,7 @@ G_M57106_IG07: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr x0, [x1, #0x08] ; gcrRegs +[x0] ;; size=20 bbWeight=0.82 PerfScore 6.15
-G_M57106_IG08: ; bbWeight=0.89, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M57106_IG07: ; bbWeight=0.89, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x1] ldr x25, [sp, #0x58] ldp x23, x24, [sp, #0x48] @@ -137,27 +133,14 @@ G_M57106_IG08: ; bbWeight=0.89, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.89 PerfScore 6.22
-G_M57106_IG09: ; bbWeight=0.11, 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.11 PerfScore 0.83 -G_M57106_IG10: ; bbWeight=0.11, 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.11 PerfScore 0.78 -G_M57106_IG11: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M57106_IG08: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19]
+ mov w21, #9 + b G_M57106_IG04 + ;; size=8 bbWeight=0.39 PerfScore 0.58 +G_M57106_IG09: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, #7
- bhi G_M57106_IG12
+ bhi G_M57106_IG10
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -165,13 +148,29 @@ G_M57106_IG11: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=800 add x1, x1, x2 br x1 ;; size=32 bbWeight=0.11 PerfScore 0.83
-G_M57106_IG12: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG10: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, #15 bne G_M57106_IG29
- b G_M57106_IG09 - ;; size=12 bbWeight=0.11 PerfScore 0.28 -G_M57106_IG13: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x20]
+ ;; size=8 bbWeight=0.11 PerfScore 0.17 +G_M57106_IG11: ; bbWeight=0.11, 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.11 PerfScore 0.83 +G_M57106_IG12: ; bbWeight=0.11, 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.11 PerfScore 0.78 +G_M57106_IG13: ; bbWeight=0.07, 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 @@ -184,13 +183,13 @@ G_M57106_IG13: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov w23, wzr ldr w24, [x21, #0x08] cmp w24, #0
- ble G_M57106_IG20
+ ble G_M57106_IG21
;; size=40 bbWeight=0.07 PerfScore 0.59 G_M57106_IG14: ; bbWeight=0.03, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr w1, [x19, #0x08] cmp w1, w24
- blt G_M57106_IG21
+ blt G_M57106_IG22
;; size=12 bbWeight=0.03 PerfScore 0.16 G_M57106_IG15: ; bbWeight=0.07, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz mov w1, #24 @@ -206,8 +205,8 @@ G_M57106_IG15: ; bbWeight=0.07, gcrefRegs=380000 {x19 x20 x21}, byrefRegs movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M57106_IG31 - cbz x0, G_M57106_IG18
+ bne G_M57106_IG32 + cbz x0, G_M57106_IG19
;; size=52 bbWeight=0.07 PerfScore 1.41 G_M57106_IG16: ; bbWeight=0.07, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x22] @@ -216,7 +215,7 @@ G_M57106_IG16: ; bbWeight=0.07, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byr movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M57106_IG30
+ bne G_M57106_IG31
mov x2, x1 ; gcrRegs +[x2] ;; size=28 bbWeight=0.07 PerfScore 0.45 @@ -231,14 +230,18 @@ G_M57106_IG17: ; bbWeight=0.07, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR add w23, w23, #1 cmp w24, w23 bgt G_M57106_IG15
- b G_M57106_IG20 - ;; size=28 bbWeight=0.07 PerfScore 0.34 -G_M57106_IG18: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.07 PerfScore 0.27 +G_M57106_IG18: ; bbWeight=0.03, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19-x20] + b G_M57106_IG21 + ;; size=4 bbWeight=0.03 PerfScore 0.03 +G_M57106_IG19: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19-x20]
mov x2, xzr ; gcrRegs +[x2] b G_M57106_IG17 ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG19: ; bbWeight=0.00, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG20: ; bbWeight=0.00, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
sxtw x1, w23 mov x0, x21 ; gcrRegs +[x0] @@ -247,19 +250,19 @@ G_M57106_IG19: ; bbWeight=0.00, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR ; gcr arg pop 0 add w23, w23, #1 cmp w24, w23
- bgt G_M57106_IG21
+ bgt G_M57106_IG22
;; size=24 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG20: ; bbWeight=0.07, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
+G_M57106_IG21: ; bbWeight=0.07, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20] mov x0, x21 ; gcrRegs +[x0]
- b G_M57106_IG08
+ b G_M57106_IG07
;; size=8 bbWeight=0.07 PerfScore 0.10
-G_M57106_IG21: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG22: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] +[x19-x20] ldr w1, [x19, #0x08] cmp w23, w1
- bhs G_M57106_IG28
+ bhs G_M57106_IG30
mov w1, #24 mov x0, #16 umaddl x1, w23, w1, x0 @@ -273,31 +276,31 @@ G_M57106_IG21: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M57106_IG25 - cbz x0, G_M57106_IG24
+ bne G_M57106_IG26 + cbz x0, G_M57106_IG25
;; size=64 bbWeight=0.00 PerfScore 0.02
-G_M57106_IG22: ; bbWeight=0.00, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57106_IG23: ; bbWeight=0.00, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x22] ldr x2, [x0] movz x3, #0xD1FFAB1E movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 cmp x2, x3
- bne G_M57106_IG32
+ bne G_M57106_IG33
mov x2, x1 ; gcrRegs +[x2] ;; size=28 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG23: ; bbWeight=0.00, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M57106_IG24: ; bbWeight=0.00, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x0-x1]
- b G_M57106_IG19
+ b G_M57106_IG20
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG24: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M57106_IG25: ; bbWeight=0.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] mov x2, xzr ; gcrRegs +[x2]
- b G_M57106_IG23
+ b G_M57106_IG24
;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M57106_IG25: ; bbWeight=0, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M57106_IG26: ; bbWeight=0, gcrefRegs=380003 {x0 x1 x19 x20 x21}, byrefRegs=0000 {}, byref
...

-8 (-0.30%) : 399305.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)

@@ -96,13 +96,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_IG28
+ cbz x19, G_M38617_IG37
ldr x0, [x20] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- bne G_M38617_IG29
+ bne G_M38617_IG38
ldr x0, [x20, #0x10] ; gcrRegs +[x0] ldr x1, [x0] @@ -127,9 +127,9 @@ G_M38617_IG04: ; bbWeight=0.04, gcrefRegs=180001 {x0 x19 x20}, byrefRegs= ;; size=20 bbWeight=0.04 PerfScore 0.42 G_M38617_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cmp w21, #2
- bgt G_M38617_IG31
+ bgt G_M38617_IG12
cmp w21, #1
- bne G_M38617_IG30
+ bne G_M38617_IG11
mov x0, x19 ; gcrRegs +[x0] bl <unknown method> @@ -148,17 +148,17 @@ G_M38617_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x1, x2
- bne G_M38617_IG16
+ bne G_M38617_IG27
ldr w23, [x0, #0x0C] ;; size=76 bbWeight=1 PerfScore 19.50 G_M38617_IG06: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] cmp w23, #1
- beq G_M38617_IG23
+ beq G_M38617_IG34
cmp w23, #2
- beq G_M38617_IG22
+ beq G_M38617_IG33
sub w24, w23, #12
- cbnz w24, G_M38617_IG17
+ cbnz w24, G_M38617_IG28
;; size=24 bbWeight=1 PerfScore 4.50 G_M38617_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars -{V00} @@ -166,7 +166,7 @@ G_M38617_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=480000 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x22, x0
- beq G_M38617_IG20
+ beq G_M38617_IG31
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -249,7 +249,7 @@ G_M38617_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=480000 ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w1, w0
- bge G_M38617_IG21
+ bge G_M38617_IG32
;; size=228 bbWeight=1 PerfScore 51.00 G_M38617_IG08: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref ldr x0, [x19, #0x08] @@ -263,14 +263,237 @@ G_M38617_IG08: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 { bl CORINFO_HELP_ARRADDR_ST ; gcrRegs -[x0 x2 x22] ; gcr arg pop 0
+ ;; size=28 bbWeight=1 PerfScore 9.50 +G_M38617_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M38617_IG10: ; bbWeight=1, epilog, nogc, extend + ldp x23, x24, [sp, #0x50] + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=20 bbWeight=1 PerfScore 5.00 +G_M38617_IG11: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0] +[x20] + ; GC ptr vars +{V00 V08} + cmp w21, #2 + bne G_M38617_IG09 + mov x0, x20 + ; gcrRegs +[x0] + movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.XmlQueryType:get_IsSingleton():ubyte:this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0 x20] + ; gcr arg pop 0 + cbnz w0, G_M38617_IG09 + b G_M38617_IG15 + ;; size=40 bbWeight=0 PerfScore 0.00 +G_M38617_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars -{V00 V08} + cmp w21, #12 + beq G_M38617_IG13 + cmp w21, #16 + bne G_M38617_IG09 + ldr x1, [x19] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + cmp x1, x0 + beq G_M38617_IG09 + b G_M38617_IG14 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M38617_IG13: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ldr x1, [x19] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + cmp x1, x0 + bne G_M38617_IG09 + mov x1, x19 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_UNBOX + ; gcrRegs -[x1 x19] + ; byrRegs +[x0] + ; gcr arg pop 0 + ldr x0, [x0] + ; byrRegs -[x0] + movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XsltConvert:ToString(System.DateTime):System.String + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs +[x0] + ; gcr arg pop 0 + mov x19, x0 + ; gcrRegs +[x19] + b G_M38617_IG09 + ;; size=76 bbWeight=0 PerfScore 0.00 +G_M38617_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_NEWSFAST + ; gcrRegs +[x0] + ; gcr arg pop 0 + mov x24, x0 + ; gcrRegs +[x24] + mov x1, x19 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_CHKCASTINTERFACE + ; gcrRegs -[x1 x19] +[x0] + ; gcr arg pop 0 + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32 + mov x1, xzr + ldr x2, [x11] + blr x2 + ; gcrRegs -[x0] + ; gcr arg pop 0 + str d0, [x24, #0x08] + mov x19, x24 + ; gcrRegs +[x19] + b G_M38617_IG09 + ;; size=76 bbWeight=0 PerfScore 0.00 +G_M38617_IG15: ; bbWeight=0, gcVars=0000000000000100 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x24] + ; GC ptr vars +{V00 V08} + mov x1, x19 + ; 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_M38617_IG16 + ldr x1, [x0, #0x10] + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + ; gcrRegs -[x0] + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_ISINSTANCEOFCLASS + ; gcrRegs -[x1] +[x0] + ; gcr arg pop 0 + cbz x0, G_M38617_IG16 + mov x19, x0
b G_M38617_IG26
- ;; size=32 bbWeight=1 PerfScore 10.50 -G_M38617_IG09: ; bbWeight=0, gcVars=0000000000140100 {V00 V06 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=56 bbWeight=0 PerfScore 0.00 +G_M38617_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + 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] + movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQuerySequence`1[System.__Canon]:.ctor():this + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + ldr x1, [x1] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + str x22, [fp, #0x18] // [V06 loc3] + ; GC ptr vars +{V06} + mov x1, x19 + ; gcrRegs +[x1] + movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32 + ; GC ptr vars -{V08} + bl CORINFO_HELP_ISINSTANCEOFINTERFACE + ; gcrRegs -[x1 x22] +[x0] + ; gcr arg pop 0 + mov x20, x0 + ; gcrRegs +[x20] + cbz x20, G_M38617_IG19 + mov w19, wzr
; gcrRegs -[x19]
- ; GC ptr vars +{V00 V06 V08 V09 V18 V20} - b G_M38617_IG11
+ b G_M38617_IG18 + ;; size=80 bbWeight=0 PerfScore 0.00 +G_M38617_IG17: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref + ; gcrRegs -[x0] + mov x0, x20 + ; gcrRegs +[x0] + mov w1, w19 + movz x11, #0xD1FFAB1E // code for <unknown method> + movk x11, #0xD1FFAB1E LSL #16 + movk x11, #0xD1FFAB1E LSL #32 + ldr x2, [x11] + blr x2
...

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

@@ -72,22 +72,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_IG21
+ cbz w0, G_M35244_IG35
ldr w0, [x19, #0x28] mov w1, #0xD1FFAB1E tst w0, w1
- bne G_M35244_IG21
+ bne G_M35244_IG35
;; size=24 bbWeight=1 PerfScore 7.00 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_IG24
+ bls G_M35244_IG23
;; size=16 bbWeight=3.22 PerfScore 16.11 G_M35244_IG04: ; bbWeight=2.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_IG21
+ bhi G_M35244_IG35
mov w1, w20 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -98,7 +98,7 @@ G_M35244_IG04: ; bbWeight=2.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x20, [x19, #0x08] ; gcrRegs +[x20]
- cbz x20, G_M35244_IG23
+ cbz x20, G_M35244_IG22
;; size=8 bbWeight=2 PerfScore 8.00 G_M35244_IG06: ; bbWeight=1.40, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -144,7 +144,7 @@ G_M35244_IG12: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ; gcrRegs +[x22] ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M35244_IG13: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- cbnz x22, G_M35244_IG22
+ cbnz x22, G_M35244_IG21
;; size=4 bbWeight=2 PerfScore 2.00 G_M35244_IG14: ; bbWeight=1.19, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] @@ -203,23 +203,15 @@ G_M35244_IG20: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, b ; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=2 PerfScore 3.00
-G_M35244_IG21: ; bbWeight=1.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19 x22] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=1.04 PerfScore 4.15 -G_M35244_IG22: ; bbWeight=0.81, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19 x22]
+G_M35244_IG21: ; bbWeight=0.81, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
b G_M35244_IG19 ;; size=4 bbWeight=0.81 PerfScore 0.81
-G_M35244_IG23: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=0.60, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x22] +[x20] mov w21, wzr b G_M35244_IG08 ;; size=8 bbWeight=0.60 PerfScore 0.89
-G_M35244_IG24: ; bbWeight=0.44, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG23: ; bbWeight=0.44, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20] mov x0, x19 ; gcrRegs +[x0] @@ -228,56 +220,56 @@ G_M35244_IG24: ; bbWeight=0.44, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0.44 PerfScore 2.22
-G_M35244_IG25: ; bbWeight=0.44, epilog, nogc, extend
+G_M35244_IG24: ; bbWeight=0.44, 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.44 PerfScore 1.78
-G_M35244_IG26: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35244_IG25: ; bbWeight=0.22, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] ldr w1, [x19, #0x24] cmp w1, #1 bne G_M35244_IG53 ;; size=12 bbWeight=0.22 PerfScore 1.00
-G_M35244_IG27: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG26: ; bbWeight=0.22, 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.22 PerfScore 1.00
-G_M35244_IG28: ; bbWeight=0.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0.11, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x19] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1
- beq G_M35244_IG30
+ beq G_M35244_IG29
;; size=24 bbWeight=0.11 PerfScore 0.67
-G_M35244_IG29: ; bbWeight=0.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG28: ; bbWeight=0.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, xzr ; gcrRegs +[x19] ;; size=4 bbWeight=0.06 PerfScore 0.03
-G_M35244_IG30: ; bbWeight=0.22, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0.22, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz x19, G_M35244_IG47 ;; size=4 bbWeight=0.22 PerfScore 0.22
-G_M35244_IG31: ; bbWeight=0.13, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0.13, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG34
+ cbz x19, G_M35244_IG33
;; size=8 bbWeight=0.13 PerfScore 0.20
-G_M35244_IG32: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG31: ; bbWeight=0.07, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 ldr x1, [x19] cmp x1, x0
- beq G_M35244_IG34
+ beq G_M35244_IG33
;; size=24 bbWeight=0.07 PerfScore 0.40
-G_M35244_IG33: ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x1, x20 ; gcrRegs +[x1] @@ -287,7 +279,7 @@ G_M35244_IG33: ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov x19, x0 ; gcrRegs +[x19] ;; size=12 bbWeight=0.03 PerfScore 0.07
-G_M35244_IG34: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG33: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr w1, [x19, #0x10] cbz w1, G_M35244_IG54 @@ -298,12 +290,19 @@ G_M35244_IG34: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, bls G_M35244_IG55 ldr x19, [x1, #0x10] ;; size=28 bbWeight=0.13 PerfScore 1.91
-G_M35244_IG35: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG34: ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] b G_M35244_IG03 ;; size=4 bbWeight=0.22 PerfScore 0.22
-G_M35244_IG36: ; bbWeight=0.11, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[x22]
+G_M35244_IG35: ; bbWeight=0.13, 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.13 PerfScore 0.51 +G_M35244_IG36: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x19 x22]
ldr x0, [x19, #0x18] ; gcrRegs +[x0] cbz x0, G_M35244_IG37 @@ -423,7 +422,7 @@ G_M35244_IG46: ; bbWeight=0.11, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, b G_M35244_IG03 ;; size=4 bbWeight=0.11 PerfScore 0.11 G_M35244_IG47: ; bbWeight=0.09, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- b G_M35244_IG35
+ b G_M35244_IG34
;; size=4 bbWeight=0.09 PerfScore 0.09 G_M35244_IG48: ; bbWeight=0.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref b G_M35244_IG46 @@ -467,7 +466,7 @@ G_M35244_IG51: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by blt G_M35244_IG50 ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG21
+ beq G_M35244_IG35
mov x0, x19 ; gcrRegs +[x0] mov w1, wzr @@ -488,7 +487,7 @@ G_M35244_IG52: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by str w0, [x19, #0x24] ldr w0, [x19, #0x24] cmp w0, #1
- beq G_M35244_IG27
+ beq G_M35244_IG26
;; size=20 bbWeight=0 PerfScore 0.00 G_M35244_IG53: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz mov x0, x19 @@ -502,7 +501,7 @@ G_M35244_IG53: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov x19, x0 ; gcrRegs +[x19]
- cbz x19, G_M35244_IG21
+ cbz x19, G_M35244_IG35
b G_M35244_IG03 ;; size=36 bbWeight=0 PerfScore 0.00 G_M35244_IG54: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -522,10 +521,10 @@ G_M35244_IG55: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=8 bbWeight=0 PerfScore 0.00 RWD00 dd G_M35244_IG49 - G_M35244_IG02 dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG52 - G_M35244_IG02 dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02
+ dd G_M35244_IG35 - G_M35244_IG02
dd G_M35244_IG38 - G_M35244_IG02 dd G_M35244_IG38 - G_M35244_IG02 dd G_M35244_IG38 - G_M35244_IG02 @@ -533,7 +532,7 @@ RWD00 dd G_M35244_IG49 - G_M35244_IG02 dd G_M35244_IG49 - G_M35244_IG02
-; Total bytes of code 1008, prolog size 20, PerfScore 141.30, instruction count 252, allocated bytes for code 1008 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 1008, prolog size 20, PerfScore 137.66, instruction count 252, allocated bytes for code 1008 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

+0 (0.00%) : 588199.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 40160
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 40160
; 4 inlinees with PGO data; 14 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -165,13 +165,21 @@ G_M29172_IG14: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=800 ;; size=36 bbWeight=0.28 PerfScore 2.25 G_M29172_IG15: ; bbWeight=0.27, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz sub w24, w22, #110
- cbz w24, G_M29172_IG18
+ cbnz w24, G_M29172_IG17
;; size=8 bbWeight=0.27 PerfScore 0.41
-G_M29172_IG16: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M29172_IG16: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x19] + ; byrRegs -[x20] + mov w22, #10 + b G_M29172_IG12 + ;; size=8 bbWeight=0.18 PerfScore 0.27 +G_M29172_IG17: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ; gcrRegs +[x19] + ; byrRegs +[x20]
cmp w24, #10 bhi G_M29172_IG34 ;; size=8 bbWeight=0.10 PerfScore 0.14
-G_M29172_IG17: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
+G_M29172_IG18: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
mov w1, w24 adr x0, [@RWD24] ldr w0, [x0, x1, LSL #2] @@ -179,15 +187,7 @@ G_M29172_IG17: ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=100000 { add x0, x0, x2 br x0 ;; size=24 bbWeight=0.10 PerfScore 0.57
-G_M29172_IG18: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] - ; byrRegs -[x20] - mov w22, #10 - b G_M29172_IG12 - ;; size=8 bbWeight=0.18 PerfScore 0.27
G_M29172_IG19: ; bbWeight=0.08, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
- ; gcrRegs +[x19] - ; byrRegs +[x20]
ldr x0, [x19, #0x08] ; gcrRegs +[x0] mov w1, w21 @@ -387,7 +387,7 @@ RWD00 dd G_M29172_IG27 - G_M29172_IG02 dd G_M29172_IG34 - G_M29172_IG02 dd G_M29172_IG32 - G_M29172_IG02 dd G_M29172_IG25 - G_M29172_IG02
-RWD24 dd G_M29172_IG18 - G_M29172_IG02
+RWD24 dd G_M29172_IG16 - G_M29172_IG02
dd G_M29172_IG34 - G_M29172_IG02 dd G_M29172_IG34 - G_M29172_IG02 dd G_M29172_IG34 - G_M29172_IG02

+0 (0.00%) : 583632.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 260240
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 260240
; 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.38, 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.38 PerfScore 2.82 -G_M30761_IG04: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M30761_IG03: ; bbWeight=0.62, 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.62, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, cmp w0, #25 bhi G_M30761_IG11 ;; size=28 bbWeight=0.62 PerfScore 4.37
-G_M30761_IG05: ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+G_M30761_IG04: ; bbWeight=0.62, 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.62, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, cmp w21, w2 bne G_M30761_IG11 ;; size=24 bbWeight=0.62 PerfScore 4.04
-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.45
-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.73
-G_M30761_IG08: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+G_M30761_IG07: ; bbWeight=0.38, 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.38 PerfScore 2.82 +G_M30761_IG08: ; bbWeight=0.33, 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.85, 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 3 1 0 2 -4 +0
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 6 3 0 3 -16 +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
11 4 0 7 -20 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,654 4 24,650 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,699 49,319 47,380 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.arm64.checked.mch 49,429 37,113 12,316 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 605,280 369,845 235,435 5 (0.00%) 5 (0.00%)
libraries.crossgen2.windows.arm64.checked.mch 275,113 15 275,098 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 307,382 6 307,376 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 643,567 467,219 176,348 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 317,389 21,618 295,771 0 (0.00%) 0 (0.00%)
realworld.run.windows.arm64.checked.mch 33,259 3 33,256 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,159 8 24,151 0 (0.00%) 0 (0.00%)
2,376,931 945,150 1,431,781 5 (0.00%) 5 (0.00%)

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

Detail diffs



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

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

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

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

1 total methods with Code Size differences (1 improved, 0 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: 505264984 (overridden on cmd)
Total bytes of diff: 505264984 (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: 321619196 (overridden on cmd)
Total bytes of diff: 321619180 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
          -8 : 399305.dasm (-0.30 % of base)
          -4 : 590738.dasm (-0.45 % of base)
          -4 : 401473.dasm (-0.45 % of base)

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

Top method improvements (bytes):
          -8 (-0.30 % of base) : 399305.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.45 % of base) : 590738.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -4 (-0.45 % of base) : 401473.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
          -4 (-0.45 % of base) : 401473.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -4 (-0.45 % of base) : 590738.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -8 (-0.30 % of base) : 399305.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)

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



windows x64

Diffs are based on 2,416,976 contexts (937,071 MinOpts, 1,479,905 FullOpts).

Overall (-59 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x64.checked.mch 34,024,626 -22
coreclr_tests.run.windows.x64.checked.mch 407,341,578 -26
libraries_tests.run.windows.x64.Release.mch 281,668,285 -11

FullOpts (-59 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x64.checked.mch 20,368,333 -22
coreclr_tests.run.windows.x64.checked.mch 126,875,214 -26
libraries_tests.run.windows.x64.Release.mch 106,974,901 -11

Example diffs

benchmarks.run_pgo.windows.x64.checked.mch

-38 (-7.09%) : 83080.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -13,7 +13,7 @@ ; V01 loc0 [V01,T03] ( 20, 5.00) 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,T01] ( 5, 6.00) ubyte -> rsi
-; V04 loc3 [V04,T04] ( 6, 4.00) ubyte -> r14
+; V04 loc3 [V04,T04] ( 4, 4.00) ubyte -> rcx
;* V05 loc4 [V05,T13] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode> ; V07 loc6 [V07,T19] ( 2, 0 ) int -> rsi @@ -23,7 +23,7 @@ ; V11 tmp1 [V11,T14] ( 5, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode> ; V12 tmp2 [V12,T10] ( 4, 2.00) int -> rdi "Inline return value spill temp" ; V13 tmp3 [V13,T12] ( 3, 1.43) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T08] ( 7, 3.00) ref -> rbp class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T08] ( 6, 3.00) ref -> rbp class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T05] ( 2, 4.00) ref -> rbp "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T09] ( 3, 3.00) ref -> rbp class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> @@ -38,36 +38,35 @@ ; V26 cse0 [V26,T07] ( 5, 3.72) ref -> rsi "CSE - aggressive" ; V27 rat0 [V27,T00] ( 3, 12.00) int -> rsi "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 call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG14
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG14
+ jne G_M35244_IG25
;; size=26 bbWeight=1 PerfScore 6.25 G_M35244_IG03: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rsi, byte ptr [rbx+0x2E] lea edx, [rsi-0x03] cmp edx, 5
- jbe G_M35244_IG24
+ jbe G_M35244_IG21
;; size=17 bbWeight=2.00 PerfScore 7.50 G_M35244_IG04: ; bbWeight=2.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add esi, -24 cmp esi, 10
- ja G_M35244_IG14
+ ja G_M35244_IG25
mov edx, esi lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] @@ -110,22 +109,22 @@ G_M35244_IG09: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 xor rbp, rbp ; gcrRegs +[rbp] ;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M35244_IG10: ; bbWeight=1.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
test rbp, rbp
- je SHORT G_M35244_IG16 - movzx r14, byte ptr [rbp+0x2E] - cmp r14d, 24 - je SHORT G_M35244_IG17 - ;; size=16 bbWeight=1.00 PerfScore 4.50
+ je G_M35244_IG29 + ;; size=9 bbWeight=1.00 PerfScore 1.25
G_M35244_IG11: ; bbWeight=1.00, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi]
- lea ecx, [r14-0x1A]
+ movzx rcx, byte ptr [rbp+0x2E] + cmp ecx, 24 + je SHORT G_M35244_IG14 + lea edx, [rcx-0x1A] + cmp edx, 1 + jbe SHORT G_M35244_IG14 + add ecx, -33
cmp ecx, 1
- jbe SHORT G_M35244_IG17 - add r14d, -33 - cmp r14d, 1 - jbe SHORT G_M35244_IG17 - ;; size=19 bbWeight=1.00 PerfScore 3.25
+ jbe SHORT G_M35244_IG14 + ;; size=25 bbWeight=1.00 PerfScore 6.50
G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] mov rbx, rbp @@ -137,60 +136,16 @@ G_M35244_IG13: ; bbWeight=0.29, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 xor edi, edi jmp SHORT G_M35244_IG07 ;; size=4 bbWeight=0.29 PerfScore 0.64
-G_M35244_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rsi] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - ret - ;; size=11 bbWeight=0.02 PerfScore 0.08 -G_M35244_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - xor edx, edx - call [System.Text.RegularExpressions.RegexNode:Child(int):System.Text.RegularExpressions.RegexNode:this] - ; gcrRegs -[rcx rbx] +[rax] - ; 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, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] +[rsi] - mov rdx, rsi - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_CHKCASTCLASS - ; gcrRegs -[rdx rsi] +[rax] - ; gcr arg pop 0 - cmp edi, dword ptr [rax+0x10] - jae G_M35244_IG26 - mov rcx, gword ptr [rax+0x08] - ; gcrRegs +[rcx] - cmp edi, dword ptr [rcx+0x08] - jae G_M35244_IG27 - mov eax, edi - ; gcrRegs -[rax] - mov rbp, gword ptr [rcx+8*rax+0x10] - ; gcrRegs +[rbp] - movzx r14, byte ptr [rbp+0x2E] - cmp r14d, 24 - jne SHORT G_M35244_IG11 - ;; size=58 bbWeight=0 PerfScore 0.00 -G_M35244_IG17: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx]
+G_M35244_IG14: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] +[rbp]
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG18
+ je SHORT G_M35244_IG15
mov rcx, gword ptr [rbx+0x18] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x2E], 32 je SHORT G_M35244_IG12 ;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG18: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx] mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST @@ -221,9 +176,9 @@ G_M35244_IG18: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, call [System.Text.RegularExpressions.RegexNode:ReplaceChild(int,System.Text.RegularExpressions.RegexNode):this] ; gcrRegs -[rcx rbx rsi r8] ; gcr arg pop 0
- jmp G_M35244_IG12 - ;; size=69 bbWeight=0 PerfScore 0.00 -G_M35244_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M35244_IG12 + ;; size=66 bbWeight=0 PerfScore 0.00 +G_M35244_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -232,9 +187,9 @@ G_M35244_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 mov esi, eax mov edi, 1
- jmp SHORT G_M35244_IG21
+ jmp SHORT G_M35244_IG18
;; size=18 bbWeight=0 PerfScore 0.00
-G_M35244_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] mov edx, edi @@ -249,20 +204,20 @@ G_M35244_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc edi ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- jl SHORT G_M35244_IG20
+ jl SHORT G_M35244_IG17
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG14 - jmp G_M35244_IG15 - ;; size=19 bbWeight=0 PerfScore 0.00 -G_M35244_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M35244_IG25 + jmp SHORT G_M35244_IG27 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M35244_IG19: ; 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_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x24], 1
- je G_M35244_IG15
+ je SHORT G_M35244_IG27
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -271,56 +226,98 @@ G_M35244_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG14
+ je SHORT G_M35244_IG25
movzx rsi, byte ptr [rbx+0x2E] lea ecx, [rsi-0x03] cmp ecx, 5 ja G_M35244_IG04
- ;; size=48 bbWeight=0 PerfScore 0.00 -G_M35244_IG24: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=0 PerfScore 0.00 +G_M35244_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, epilog, nogc, extend - add rsp, 32
+G_M35244_IG22: ; bbWeight=0, epilog, nogc, extend + add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=14 bbWeight=0 PerfScore 0.00 +G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx rbx] ...

-6 (-1.47%) : 92473.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.98 -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.12 +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.26
-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.16
-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.48, 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.41, 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:

-8 (-1.40%) : 85267.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -13,22 +13,22 @@ ; V01 loc0 [V01,T07] ( 19, 8.00) 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, 8.93) ubyte -> rax
-; V04 loc3 [V04,T08] ( 4, 7.95) ubyte -> rdx
+; V04 loc3 [V04,T08] ( 4, 7.95) ubyte -> rcx
;* V05 loc4 [V05,T17] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode> ; V07 loc6 [V07,T21] ( 2, 0 ) int -> rsi ; V08 loc7 [V08,T19] ( 5, 0 ) int -> rdi ; V09 loc8 [V09,T20] ( 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,T18] ( 5, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T18] ( 5, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T14] ( 4, 3.98) int -> rdi "Inline return value spill temp" ; V13 tmp3 [V13,T16] ( 3, 2.78) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T12] ( 6, 5.96) ref -> r14 class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T12] ( 6, 5.96) ref -> rsi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T09] ( 2, 7.95) ref -> rbp "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T13] ( 3, 4.41) ref -> rbp class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> ; V18 tmp8 [V18,T01] ( 4, 13.29) int -> rdi "Inlining Arg"
-; V19 tmp9 [V19,T03] ( 3, 9.31) ref -> rdx class-hnd "Inlining Arg" <<unknown class>>
+; V19 tmp9 [V19,T03] ( 3, 9.31) ref -> rbp class-hnd "Inlining Arg" <<unknown class>>
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode> ; V21 tmp11 [V21,T22] ( 2, 0 ) int -> rcx "Inlining Arg" ;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -36,40 +36,39 @@ ; V24 tmp14 [V24,T23] ( 2, 0 ) int -> rdx "argument with side effect" ; V25 tmp15 [V25,T10] ( 5, 7.45) ref -> rbp "CastInstOf QMark result" ; V26 cse0 [V26,T06] ( 6, 8.92) ref -> rsi "CSE - aggressive"
-; V27 rat0 [V27,T02] ( 5, 11.64) ref -> rdx "replacement local"
+; V27 rat0 [V27,T02] ( 5, 11.64) ref -> rbp "replacement local"
; V28 rat1 [V28,T15] ( 3, 3.88) long -> rcx "CSE for expectedClsNode" ; V29 rat2 [V29,T00] ( 3, 17.72) 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 call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG20
+ je G_M35244_IG25
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG20
+ 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_IG23
+ jbe G_M35244_IG21
;; size=16 bbWeight=2.99 PerfScore 11.20 G_M35244_IG04: ; bbWeight=2.95, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG20
+ ja G_M35244_IG25
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] @@ -100,48 +99,47 @@ G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M35244_IG09: ; bbWeight=1.99, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref test rbp, rbp
- jne G_M35244_IG21
+ jne G_M35244_IG20
;; size=9 bbWeight=1.99 PerfScore 2.48 G_M35244_IG10: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[rbp]
- mov rdx, rsi - ; gcrRegs +[rdx] - test rdx, rdx
+ mov rbp, rsi + ; gcrRegs +[rbp] + test rbp, rbp
jne G_M35244_IG18 ;; size=12 bbWeight=1.55 PerfScore 2.33
-G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=1.55, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
- cmp edi, dword ptr [rdx+0x10] - jae G_M35244_IG25 - mov rcx, gword ptr [rdx+0x08]
+ cmp edi, dword ptr [rbp+0x10] + jae G_M35244_IG23 + mov rcx, gword ptr [rbp+0x08]
; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae G_M35244_IG26
+ jae G_M35244_IG24
mov edx, edi
- ; gcrRegs -[rdx] - mov r14, gword ptr [rcx+8*rdx+0x10] - ; gcrRegs +[r14]
+ mov rsi, gword ptr [rcx+8*rdx+0x10] + ; gcrRegs +[rsi]
;; size=29 bbWeight=1.55 PerfScore 19.02
-G_M35244_IG12: ; bbWeight=1.99, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx] - movzx rdx, byte ptr [r14+0x2E] - cmp edx, 24
+G_M35244_IG12: ; bbWeight=1.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx rbp] + movzx rcx, byte ptr [rsi+0x2E] + cmp ecx, 24
je G_M35244_IG28
- lea ecx, [rdx-0x1A] - cmp ecx, 1 - jbe G_M35244_IG28 - add edx, -33
+ lea edx, [rcx-0x1A]
cmp edx, 1 jbe G_M35244_IG28
- ;; size=38 bbWeight=1.99 PerfScore 12.92 -G_M35244_IG13: ; bbWeight=1.99, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ add ecx, -33 + cmp ecx, 1 + jbe G_M35244_IG28 + ;; size=37 bbWeight=1.99 PerfScore 12.92 +G_M35244_IG13: ; bbWeight=1.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rbx, r14
+ mov rbx, rsi
; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=1.99 PerfScore 4.47 G_M35244_IG14: ; bbWeight=1.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
+ ; gcrRegs -[rsi]
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi @@ -165,69 +163,65 @@ G_M35244_IG17: ; bbWeight=0.76, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0 mov edi, dword ptr [rax+0x10] jmp G_M35244_IG06 ;; size=8 bbWeight=0.76 PerfScore 3.03
-G_M35244_IG18: ; bbWeight=0.78, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] +[rdx]
+G_M35244_IG18: ; bbWeight=0.78, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] +[rbp]
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rdx], rcx
+ cmp qword ptr [rbp], rcx
je G_M35244_IG11
- ;; size=19 bbWeight=0.78 PerfScore 3.30 -G_M35244_IG19: ; bbWeight=0.01, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdx] - jmp SHORT G_M35244_IG22 - ;; size=2 bbWeight=0.01 PerfScore 0.03 -G_M35244_IG20: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rsi] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - ret - ;; size=11 bbWeight=0.02 PerfScore 0.08 -G_M35244_IG21: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rbp] - mov r14, rbp - ; gcrRegs +[r14] - jmp G_M35244_IG12 - ;; size=8 bbWeight=0.44 PerfScore 0.98 -G_M35244_IG22: ; bbWeight=0.39, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp r14] +[rsi]
+ ;; size=20 bbWeight=0.78 PerfScore 3.30 +G_M35244_IG19: ; bbWeight=0.39, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp]
mov rdx, rsi ; gcrRegs +[rdx] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rdx rsi] +[rax] ; gcr arg pop 0
- mov rdx, rax - ; gcrRegs +[rdx]
+ mov rbp, rax + ; gcrRegs +[rbp]
jmp G_M35244_IG11 ;; size=16 bbWeight=0.39 PerfScore 1.36
-G_M35244_IG23: ; bbWeight=0.03, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax rdx]
+G_M35244_IG20: ; bbWeight=0.44, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + mov rsi, rbp + ; gcrRegs +[rsi] + jmp G_M35244_IG12 + ;; size=8 bbWeight=0.44 PerfScore 0.98 +G_M35244_IG21: ; bbWeight=0.03, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp rsi]
mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=0.03 PerfScore 0.01
-G_M35244_IG24: ; bbWeight=0.03, epilog, nogc, extend - add rsp, 32
+G_M35244_IG22: ; bbWeight=0.03, epilog, nogc, extend + add rsp, 40
pop rbx pop rbp pop rsi pop rdi
- pop r14
tail.jmp [System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this] ; gcr arg pop 0
- ;; size=16 bbWeight=0.03 PerfScore 0.17 -G_M35244_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=14 bbWeight=0.03 PerfScore 0.15 +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_IG26: ; 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_IG27: ; 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 ...

+5 (+0.70%) : 85291.dasm - System.Text.RegularExpressions.RegexCompiler+<>cDisplayClass158_0:gEmitNode|12(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)

@@ -49,30 +49,30 @@ G_M17183_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[rbp] mov edi, r9d ;; size=39 bbWeight=1 PerfScore 9.83
-G_M17183_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17183_IG02: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rsi+0x08] ; gcrRegs +[rax] mov rax, gword ptr [rax+0x10] mov rax, gword ptr [rax+0x10] cmp dword ptr [rax+0x20], 19
- je G_M17183_IG25 - ;; size=22 bbWeight=1 PerfScore 10.00
+ je SHORT G_M17183_IG10 + ;; size=18 bbWeight=1 PerfScore 10.00
G_M17183_IG03: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M17183_IG30
+ je G_M17183_IG15
test byte ptr [rbx+0x28], 64
- jne G_M17183_IG31
+ jne G_M17183_IG16
;; size=23 bbWeight=1 PerfScore 6.25 G_M17183_IG04: ; bbWeight=1, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz movzx rax, byte ptr [rbx+0x2E] add eax, -3 cmp eax, 22
- jne SHORT G_M17183_IG08
+ jne SHORT G_M17183_IG06
;; size=12 bbWeight=1 PerfScore 3.50
-G_M17183_IG05: ; bbWeight=0.56, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M17183_IG05: ; bbWeight=0.56, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
movzx r9, dil mov rcx, rsi ; gcrRegs +[rcx] @@ -83,24 +83,12 @@ G_M17183_IG05: ; bbWeight=0.56, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0 call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitConcatenation|15(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte):this] ; gcrRegs -[rcx rdx rbx rbp rsi r8] ; gcr arg pop 0
- ;; size=19 bbWeight=0.56 PerfScore 2.24 -G_M17183_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - nop - ;; size=1 bbWeight=1 PerfScore 0.25 -G_M17183_IG07: ; bbWeight=1, epilog, nogc, extend - vzeroupper - add rsp, 80 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - ret - ;; size=14 bbWeight=1 PerfScore 4.75 -G_M17183_IG08: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M17183_IG08 + ;; size=21 bbWeight=0.56 PerfScore 3.37 +G_M17183_IG06: ; bbWeight=0.44, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx rbp rsi] cmp eax, 43
- ja SHORT G_M17183_IG06
+ ja SHORT G_M17183_IG08
mov r8d, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*r8] @@ -108,7 +96,7 @@ G_M17183_IG08: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=006 add rcx, rdx jmp rcx ;; size=31 bbWeight=0.44 PerfScore 3.18
-G_M17183_IG09: ; bbWeight=0.44, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M17183_IG07: ; bbWeight=0.44, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] movzx r8, dil mov rcx, rsi @@ -120,211 +108,49 @@ G_M17183_IG09: ; bbWeight=0.44, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleChar|16(System.Text.RegularExpressions.RegexNode,ubyte,System.Reflection.Emit.LocalBuilder):this] ; gcrRegs -[rcx rdx rbx rsi r9] ; gcr arg pop 0
- jmp SHORT G_M17183_IG06 - ;; size=21 bbWeight=0.44 PerfScore 2.63 -G_M17183_IG10: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rbp rsi] - movzx r9, dil - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - mov r8, rbp - ; gcrRegs +[r8] - call [<unknown method>] - ; gcrRegs -[rcx rdx rbx rbp rsi r8] - ; gcr arg pop 0 - jmp SHORT G_M17183_IG06 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M17183_IG11: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rbp rsi] - movzx r9, dil - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - mov r8, rbp - ; gcrRegs +[r8] - call [<unknown method>] - ; gcrRegs -[rcx rdx rbx rbp rsi r8] - ; gcr arg pop 0 - jmp SHORT G_M17183_IG06 - ;; size=21 bbWeight=0 PerfScore 0.00 -G_M17183_IG12: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp SHORT G_M17183_IG06 - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M17183_IG13: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG14: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG15: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitAlternation|4(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG16: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rbp rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - mov r8, rbp - ; gcrRegs +[r8] - call [<unknown method>] - ; gcrRegs -[rcx rdx rbx rbp rsi r8] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M17183_IG17: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [<unknown method>] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG18: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreferenceConditional|6(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG19: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitExpressionConditional|7(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG20: ; bbWeight=0, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rbp rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - mov r8, rbp - ; gcrRegs +[r8] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitCapture|8(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rcx rdx rbx rbp rsi r8] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M17183_IG21: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitPositiveLookaroundAssertion|10(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG22: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx - ; gcrRegs +[rdx] - call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitNegativeLookaroundAssertion|11(System.Text.RegularExpressions.RegexNode):this] - ; gcrRegs -[rcx rdx rbx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M17183_IG23: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rsi] - mov rcx, gword ptr [rsi+0x08] - ; gcrRegs +[rcx] - mov edx, dword ptr [rsi+0x40] - call [<unknown method>] - ; gcrRegs -[rcx rsi] - ; gcr arg pop 0 - jmp G_M17183_IG06 - ;; size=18 bbWeight=0 PerfScore 0.00 -G_M17183_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx rsi] - mov rcx, rsi - ; gcrRegs +[rcx] - mov rdx, rbx
...

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

@@ -51,37 +51,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_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.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG23
+ jbe G_M35244_IG22
;; size=16 bbWeight=3.97 PerfScore 14.90
-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_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.97 PerfScore 22.30 -G_M35244_IG05: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2.97 PerfScore 22.30 +G_M35244_IG05: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG08 - ;; size=9 bbWeight=2.97 PerfScore 9.66
+ je G_M35244_IG17 + ;; size=13 bbWeight=2.97 PerfScore 9.66
G_M35244_IG06: ; bbWeight=2.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdx, rsi ; gcrRegs +[rdx] @@ -90,64 +90,50 @@ G_M35244_IG06: ; bbWeight=2.45, 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.45 PerfScore 6.75 G_M35244_IG07: ; bbWeight=0.88, 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.88 PerfScore 3.53
-G_M35244_IG08: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=1.57, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- xor edi, edi - jmp SHORT G_M35244_IG11 - ;; size=4 bbWeight=0.52 PerfScore 1.17 -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.57, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi]
mov edi, 1 ;; size=5 bbWeight=1.57 PerfScore 0.39
-G_M35244_IG11: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2.97, 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_IG12
;; size=10 bbWeight=2.97 PerfScore 5.20
-G_M35244_IG12: ; bbWeight=1.49, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.49, 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_IG12
;; size=16 bbWeight=1.49 PerfScore 6.32
-G_M35244_IG13: ; bbWeight=0.74, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.74, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] xor rbp, rbp ; gcrRegs +[rbp] ;; size=2 bbWeight=0.74 PerfScore 0.19
-G_M35244_IG14: ; bbWeight=2.97, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.97, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
test rbp, rbp
- jne SHORT G_M35244_IG19
+ jne SHORT G_M35244_IG18
;; size=5 bbWeight=2.97 PerfScore 3.72
-G_M35244_IG15: ; bbWeight=1.08, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.08, 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_IG16
;; size=8 bbWeight=1.08 PerfScore 1.62
-G_M35244_IG16: ; bbWeight=0.54, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; 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_IG18
+ je SHORT G_M35244_IG16
;; size=16 bbWeight=0.54 PerfScore 2.30
-G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -157,50 +143,55 @@ G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=11 bbWeight=0.27 PerfScore 0.41
-G_M35244_IG18: ; bbWeight=1.08, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.08, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG34
+ jae G_M35244_IG35
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_IG20
+ jmp SHORT G_M35244_IG19
;; size=27 bbWeight=1.08 PerfScore 15.39
-G_M35244_IG19: ; bbWeight=1.89, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx rsi]
+G_M35244_IG17: ; bbWeight=0.52, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx rbp] + xor edi, edi + jmp SHORT G_M35244_IG09 + ;; size=4 bbWeight=0.52 PerfScore 1.17 +G_M35244_IG18: ; bbWeight=1.89, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] +[rbp]
mov rsi, rbp ; gcrRegs +[rsi] ;; size=3 bbWeight=1.89 PerfScore 0.47
-G_M35244_IG20: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG28
;; size=9 bbWeight=2.97 PerfScore 9.66
-G_M35244_IG21: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG27
+ jbe SHORT G_M35244_IG28
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG27
+ jbe SHORT G_M35244_IG28
;; size=16 bbWeight=2.97 PerfScore 9.65
-G_M35244_IG22: ; bbWeight=2.97, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=2.97, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, rsi ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=2.97 PerfScore 6.69
-G_M35244_IG23: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -209,12 +200,23 @@ 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.25
-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 -[rcx rbx] 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,16 +228,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=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 SHORT G_M35244_IG22
+ je SHORT G_M35244_IG21
;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; 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 @@ -266,9 +268,9 @@ G_M35244_IG28: ; 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 ...

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

@@ -51,37 +51,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_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.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rax, byte ptr [rbx+0x2E] lea ecx, [rax-0x03] cmp ecx, 5
- jbe G_M35244_IG23
+ jbe G_M35244_IG22
;; size=16 bbWeight=3.97 PerfScore 14.91
-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_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.97 PerfScore 22.31 -G_M35244_IG05: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=2.97 PerfScore 22.31 +G_M35244_IG05: ; bbWeight=2.97, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG08 - ;; size=9 bbWeight=2.97 PerfScore 9.67
+ je G_M35244_IG17 + ;; size=13 bbWeight=2.97 PerfScore 9.67
G_M35244_IG06: ; bbWeight=2.46, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdx, rsi ; gcrRegs +[rdx] @@ -90,64 +90,50 @@ G_M35244_IG06: ; bbWeight=2.46, 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.46 PerfScore 6.77 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.54
-G_M35244_IG08: ; bbWeight=0.51, 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.51 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.39
-G_M35244_IG11: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=2.97, 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_IG12
;; size=10 bbWeight=2.97 PerfScore 5.21
-G_M35244_IG12: ; bbWeight=1.49, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.49, 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_IG12
;; size=16 bbWeight=1.49 PerfScore 6.32
-G_M35244_IG13: ; bbWeight=0.74, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG11: ; bbWeight=0.74, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] xor rbp, rbp ; gcrRegs +[rbp] ;; size=2 bbWeight=0.74 PerfScore 0.19
-G_M35244_IG14: ; bbWeight=2.97, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=2.97, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
test rbp, rbp
- jne SHORT G_M35244_IG19
+ jne SHORT G_M35244_IG18
;; size=5 bbWeight=2.97 PerfScore 3.72
-G_M35244_IG15: ; bbWeight=1.08, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG13: ; bbWeight=1.08, 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_IG16
;; size=8 bbWeight=1.08 PerfScore 1.62
-G_M35244_IG16: ; bbWeight=0.54, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG14: ; 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_IG18
+ je SHORT G_M35244_IG16
;; size=16 bbWeight=0.54 PerfScore 2.29
-G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -157,50 +143,55 @@ G_M35244_IG17: ; bbWeight=0.27, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=11 bbWeight=0.27 PerfScore 0.40
-G_M35244_IG18: ; bbWeight=1.08, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG16: ; bbWeight=1.08, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG34
+ jae G_M35244_IG35
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_IG20
+ jmp SHORT G_M35244_IG19
;; size=27 bbWeight=1.08 PerfScore 15.38
-G_M35244_IG19: ; bbWeight=1.90, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx rsi]
+G_M35244_IG17: ; bbWeight=0.51, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx rbp] + xor edi, edi + jmp SHORT G_M35244_IG09 + ;; size=4 bbWeight=0.51 PerfScore 1.16 +G_M35244_IG18: ; bbWeight=1.90, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref + ; gcrRegs -[rsi] +[rbp]
mov rsi, rbp ; gcrRegs +[rsi] ;; size=3 bbWeight=1.90 PerfScore 0.47
-G_M35244_IG20: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=2.97, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] movzx rcx, byte ptr [rsi+0x2E] cmp ecx, 24
- je SHORT G_M35244_IG27
+ je SHORT G_M35244_IG28
;; size=9 bbWeight=2.97 PerfScore 9.67
-G_M35244_IG21: ; bbWeight=2.93, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=2.93, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG27
+ jbe SHORT G_M35244_IG28
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG27
+ jbe SHORT G_M35244_IG28
;; size=16 bbWeight=2.93 PerfScore 9.51
-G_M35244_IG22: ; bbWeight=2.97, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=2.97, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] mov rbx, rsi ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=2.97 PerfScore 6.69
-G_M35244_IG23: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -209,12 +200,23 @@ 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.25
-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 -[rcx rbx] 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,16 +228,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=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 SHORT G_M35244_IG22
+ je SHORT G_M35244_IG21
;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG28: ; 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 @@ -266,9 +268,9 @@ G_M35244_IG28: ; 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 ...

coreclr_tests.run.windows.x64.checked.mch

-7 (-1.34%) : 209974.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -55,9 +55,9 @@ G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG21
+ je G_M35244_IG32
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG21
+ 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] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG21
+ ja G_M35244_IG32
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M35244_IG23
+ je G_M35244_IG21
;; size=27 bbWeight=1.55 PerfScore 4.25 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref mov edi, dword ptr [rax+0x10] @@ -142,11 +142,11 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] 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] @@ -155,13 +155,13 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs -[rcx rbp] 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 ; gcrRegs -[rbx] @@ -189,33 +189,24 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=002 ; gcrRegs +[rsi] jmp SHORT G_M35244_IG16 ;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG21: ; bbWeight=0.67, 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.67 PerfScore 2.17 -G_M35244_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi] - xor edi, edi - jmp G_M35244_IG08 - ;; size=7 bbWeight=0.45 PerfScore 1.02 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp]
mov edi, 1 jmp G_M35244_IG08 ;; size=10 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + xor edi, edi + jmp G_M35244_IG08 + ;; size=7 bbWeight=0.45 PerfScore 1.02 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -248,7 +239,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG17 ;; 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] @@ -257,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 @@ -274,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
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- jl SHORT G_M35244_IG27
+ jl SHORT G_M35244_IG26
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG21 - jmp SHORT G_M35244_IG33 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M35244_IG32 + jmp SHORT G_M35244_IG34 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x24], 1
- je SHORT G_M35244_IG33
+ je SHORT G_M35244_IG34
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -296,20 +287,31 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG21
+ je SHORT G_M35244_IG32
jmp G_M35244_IG03
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0 PerfScore 0.00 +G_M35244_IG30: ; 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
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG33: ; 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_IG34: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -321,20 +323,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 523, prolog size 11, PerfScore 108.94, instruction count 145, allocated bytes for code 523 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 516, prolog size 11, PerfScore 106.77, instruction count 146, allocated bytes for code 516 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

-7 (-1.34%) : 241481.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -55,9 +55,9 @@ G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG21
+ je G_M35244_IG32
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG21
+ 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] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG21
+ ja G_M35244_IG32
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M35244_IG23
+ je G_M35244_IG21
;; size=27 bbWeight=1.55 PerfScore 4.25 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref mov edi, dword ptr [rax+0x10] @@ -142,11 +142,11 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] 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] @@ -155,13 +155,13 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs -[rcx rbp] 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 ; gcrRegs -[rbx] @@ -189,33 +189,24 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=002 ; gcrRegs +[rsi] jmp SHORT G_M35244_IG16 ;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG21: ; bbWeight=0.67, 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.67 PerfScore 2.17 -G_M35244_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi] - xor edi, edi - jmp G_M35244_IG08 - ;; size=7 bbWeight=0.45 PerfScore 1.02 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp]
mov edi, 1 jmp G_M35244_IG08 ;; size=10 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + xor edi, edi + jmp G_M35244_IG08 + ;; size=7 bbWeight=0.45 PerfScore 1.02 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -248,7 +239,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG17 ;; 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] @@ -257,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 @@ -274,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
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- jl SHORT G_M35244_IG27
+ jl SHORT G_M35244_IG26
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG21 - jmp SHORT G_M35244_IG33 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M35244_IG32 + jmp SHORT G_M35244_IG34 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x24], 1
- je SHORT G_M35244_IG33
+ je SHORT G_M35244_IG34
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -296,20 +287,31 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG21
+ je SHORT G_M35244_IG32
jmp G_M35244_IG03
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0 PerfScore 0.00 +G_M35244_IG30: ; 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
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG33: ; 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_IG34: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -321,20 +323,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 524, prolog size 11, PerfScore 109.58, instruction count 145, allocated bytes for code 524 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 517, prolog size 11, PerfScore 107.41, instruction count 146, allocated bytes for code 517 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

-7 (-1.34%) : 381761.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -55,9 +55,9 @@ G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG21
+ je G_M35244_IG32
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG21
+ 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] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG21
+ ja G_M35244_IG32
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M35244_IG23
+ je G_M35244_IG21
;; size=27 bbWeight=1.55 PerfScore 4.25 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref mov edi, dword ptr [rax+0x10] @@ -142,11 +142,11 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] 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] @@ -155,13 +155,13 @@ G_M35244_IG16: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs -[rcx rbp] 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 ; gcrRegs -[rbx] @@ -189,33 +189,24 @@ G_M35244_IG20: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=002 ; gcrRegs +[rsi] jmp SHORT G_M35244_IG16 ;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG21: ; bbWeight=0.67, 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.67 PerfScore 2.17 -G_M35244_IG22: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi] - xor edi, edi - jmp G_M35244_IG08 - ;; size=7 bbWeight=0.45 PerfScore 1.02 -G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp]
mov edi, 1 jmp G_M35244_IG08 ;; size=10 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + xor edi, edi + jmp G_M35244_IG08 + ;; size=7 bbWeight=0.45 PerfScore 1.02 +G_M35244_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
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 ;; 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 @@ -248,7 +239,7 @@ G_M35244_IG25: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG17 ;; 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] @@ -257,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 @@ -274,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
-G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG27: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- jl SHORT G_M35244_IG27
+ jl SHORT G_M35244_IG26
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG21 - jmp SHORT G_M35244_IG33 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M35244_IG32 + jmp SHORT G_M35244_IG34 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M35244_IG28: ; 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_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x24], 1
- je SHORT G_M35244_IG33
+ je SHORT G_M35244_IG34
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -296,20 +287,31 @@ G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG21
+ je SHORT G_M35244_IG32
jmp G_M35244_IG03
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0 PerfScore 0.00 +G_M35244_IG30: ; 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
-G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG31: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG33: ; 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_IG34: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -321,20 +323,20 @@ G_M35244_IG33: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG26 - G_M35244_IG02
+RWD00 dd G_M35244_IG25 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG30 - G_M35244_IG02
dd G_M35244_IG29 - G_M35244_IG02
+ dd G_M35244_IG28 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG21 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG33 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02 - dd G_M35244_IG26 - G_M35244_IG02
+ dd G_M35244_IG32 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG34 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02 + dd G_M35244_IG25 - G_M35244_IG02
-; Total bytes of code 524, prolog size 11, PerfScore 109.58, instruction count 145, allocated bytes for code 524 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 517, prolog size 11, PerfScore 107.41, instruction count 146, allocated bytes for code 517 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

-7 (-1.34%) : 2760.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -55,9 +55,9 @@ G_M35244_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG22
+ je G_M35244_IG33
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG22
+ 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] @@ -68,7 +68,7 @@ G_M35244_IG03: ; bbWeight=3, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M35244_IG04: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG22
+ ja G_M35244_IG33
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] @@ -90,7 +90,7 @@ G_M35244_IG06: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M35244_IG24
+ je G_M35244_IG22
;; size=27 bbWeight=1.55 PerfScore 4.25 G_M35244_IG07: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref mov edi, dword ptr [rax+0x10] @@ -142,13 +142,13 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG32
+ jae G_M35244_IG31
;; size=9 bbWeight=1.28 PerfScore 5.12 G_M35244_IG16: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref 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] @@ -157,13 +157,13 @@ G_M35244_IG17: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcrRegs -[rcx rbp] 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_IG18: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx] @@ -191,33 +191,24 @@ G_M35244_IG21: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=002 ; gcrRegs +[rsi] jmp SHORT G_M35244_IG17 ;; size=5 bbWeight=0.72 PerfScore 1.62
-G_M35244_IG22: ; bbWeight=0.67, 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.67 PerfScore 2.17 -G_M35244_IG23: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi] - xor edi, edi - jmp G_M35244_IG08 - ;; size=7 bbWeight=0.45 PerfScore 1.02 -G_M35244_IG24: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp]
mov edi, 1 jmp G_M35244_IG08 ;; size=10 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG23: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + xor edi, edi + jmp G_M35244_IG08 + ;; size=7 bbWeight=0.45 PerfScore 1.02 +G_M35244_IG24: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
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_IG18 ;; 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 @@ -250,7 +241,7 @@ G_M35244_IG26: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M35244_IG18 ;; 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] @@ -259,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 @@ -276,20 +267,20 @@ G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 inc edi ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG29: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG28: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, esi
- jl SHORT G_M35244_IG28
+ jl SHORT G_M35244_IG27
cmp byte ptr [rbx+0x2E], 34
- je G_M35244_IG22 - jmp SHORT G_M35244_IG34 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M35244_IG33 + jmp SHORT G_M35244_IG35 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M35244_IG29: ; 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_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG30: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rbx+0x24], 1
- je SHORT G_M35244_IG34
+ je SHORT G_M35244_IG35
mov rcx, rbx ; gcrRegs +[rcx] call [System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this] @@ -298,20 +289,31 @@ G_M35244_IG31: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr mov rbx, rax ; gcrRegs +[rbx] test rbx, rbx
- je G_M35244_IG22
+ je SHORT G_M35244_IG33
jmp G_M35244_IG03
- ;; size=32 bbWeight=0 PerfScore 0.00 -G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=28 bbWeight=0 PerfScore 0.00 +G_M35244_IG31: ; 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
-G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35244_IG32: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M35244_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + nop + ;; size=1 bbWeight=0 PerfScore 0.00 +G_M35244_IG34: ; 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_IG35: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -323,20 +325,20 @@ G_M35244_IG34: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=19 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M35244_IG27 - G_M35244_IG02
+RWD00 dd G_M35244_IG26 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG31 - G_M35244_IG02
dd G_M35244_IG30 - G_M35244_IG02
+ dd G_M35244_IG29 - G_M35244_IG02
dd G_M35244_IG05 - G_M35244_IG02
- dd G_M35244_IG22 - G_M35244_IG02 - dd G_M35244_IG34 - G_M35244_IG02 - dd G_M35244_IG34 - G_M35244_IG02 - dd G_M35244_IG34 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02 - dd G_M35244_IG27 - G_M35244_IG02
+ dd G_M35244_IG33 - G_M35244_IG02 + dd G_M35244_IG35 - G_M35244_IG02 + dd G_M35244_IG35 - G_M35244_IG02 + dd G_M35244_IG35 - G_M35244_IG02 + dd G_M35244_IG26 - G_M35244_IG02 + dd G_M35244_IG26 - G_M35244_IG02
-; Total bytes of code 524, prolog size 11, PerfScore 109.58, instruction count 145, allocated bytes for code 524 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 517, prolog size 11, PerfScore 107.41, instruction count 146, allocated bytes for code 517 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info:

-4 (-0.53%) : 234146.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

@@ -102,7 +102,7 @@ G_M37647_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_M37647_IG09
+ ja SHORT G_M37647_IG08
mov edx, r12d lea r8, [reloc @RWD00] mov r8d, dword ptr [r8+4*rdx] @@ -110,7 +110,7 @@ G_M37647_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_M37647_IG07: ; bbWeight=30.67, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M37647_IG07: ; bbWeight=30.67, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
mov r12d, r14d mov rcx, gword ptr [rbx+8*r12+0x10] ; gcrRegs +[rcx] @@ -121,9 +121,16 @@ G_M37647_IG07: ; bbWeight=30.67, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR call [EMFloatClass:MultiplyInternalFPF(EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF)] ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0
- jmp SHORT G_M37647_IG09 - ;; size=26 bbWeight=30.67 PerfScore 345.00 -G_M37647_IG08: ; bbWeight=18.40, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=30.67 PerfScore 283.67 +G_M37647_IG08: ; bbWeight=98.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz + inc r14d + cmp r14d, ebp + jl SHORT G_M37647_IG06 + ;; size=8 bbWeight=98.96 PerfScore 148.44 +G_M37647_IG09: ; bbWeight=0.04, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref + jmp G_M37647_IG17 + ;; size=5 bbWeight=0.04 PerfScore 0.08 +G_M37647_IG10: ; bbWeight=18.40, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov r12d, r14d mov rcx, gword ptr [rbx+8*r12+0x10] ; gcrRegs +[rcx] @@ -134,15 +141,8 @@ G_M37647_IG08: ; bbWeight=18.40, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR call [EMFloatClass:DivideInternalFPF(EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF)] ; gcrRegs -[rcx rdx r8] ; gcr arg pop 0
- ;; size=24 bbWeight=18.40 PerfScore 170.20 -G_M37647_IG09: ; bbWeight=98.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref - inc r14d - cmp r14d, ebp - jl G_M37647_IG06 - ;; size=12 bbWeight=98.96 PerfScore 148.44 -G_M37647_IG10: ; bbWeight=0.04, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref - jmp G_M37647_IG17 - ;; size=5 bbWeight=0.04 PerfScore 0.08
+ jmp SHORT G_M37647_IG08 + ;; size=26 bbWeight=18.40 PerfScore 207.00
G_M37647_IG11: ; bbWeight=25.22, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz mov r12d, r14d mov rdx, gword ptr [rbx+8*r12+0x10] @@ -155,7 +155,7 @@ G_M37647_IG11: ; bbWeight=25.22, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR call [EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF)] ; gcrRegs -[rdx r8-r9] ; gcr arg pop 0
- jmp SHORT G_M37647_IG09
+ jmp SHORT G_M37647_IG08
;; size=28 bbWeight=25.22 PerfScore 290.06 G_M37647_IG12: ; bbWeight=24.67, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz mov r12d, r14d @@ -169,7 +169,7 @@ G_M37647_IG12: ; bbWeight=24.67, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefR call [EMFloatClass:AddSubInternalFPF(ubyte,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF,EMFloatClass+InternalFPF)] ; gcrRegs -[rdx r8-r9] ; gcr arg pop 0
- jmp SHORT G_M37647_IG09
+ jmp SHORT G_M37647_IG08
;; size=31 bbWeight=24.67 PerfScore 283.72 G_M37647_IG13: ; bbWeight=1.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref mov eax, r14d @@ -310,14 +310,14 @@ G_M37647_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref 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 752, prolog size 115, PerfScore 2835.82, instruction count 174, allocated bytes for code 752 (MethodHash=73346cf0) for method EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
+; Total bytes of code 748, prolog size 115, PerfScore 2811.29, instruction count 174, allocated bytes for code 748 (MethodHash=73346cf0) for method EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)
; ============================================================ Unwind Info:

+6 (+1.17%) : 255404.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -20,10 +20,10 @@ ; V08 loc7 [V08,T19] ( 5, 0 ) int -> rdi ; V09 loc8 [V09,T20] ( 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,T18] ( 5, 0 ) ref -> rsi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T18] ( 5, 0 ) ref -> rdi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T15] ( 4, 4.00) int -> rdi "Inline return value spill temp" ; V13 tmp3 [V13,T14] ( 3, 4.18) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T11] ( 6, 6 ) ref -> rbp class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T11] ( 6, 6 ) ref -> rsi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T07] ( 2, 8.00) ref -> rbp "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T13] ( 3, 4.72) ref -> rbp 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, 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_IG32
test dword ptr [rbx+0x28], 0x440
- jne SHORT G_M35244_IG09 - ;; size=18 bbWeight=1 PerfScore 6.25
+ 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_IG19
;; size=16 bbWeight=3 PerfScore 11.25
-G_M35244_IG04: ; 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_IG09
+ 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
+ ;; 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 @@ -85,48 +85,35 @@ G_M35244_IG06: ; bbWeight=2.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG11
+ je SHORT G_M35244_IG09
;; size=10 bbWeight=2.00 PerfScore 3.50 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_IG11
+ je SHORT G_M35244_IG09
;; size=16 bbWeight=1.00 PerfScore 4.25
-G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG10 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M35244_IG09: ; bbWeight=0.67, 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.67 PerfScore 2.17 -G_M35244_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx rsi]
xor rbp, rbp ; gcrRegs +[rbp] ;; size=2 bbWeight=0.50 PerfScore 0.13
-G_M35244_IG11: ; bbWeight=2.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG09: ; bbWeight=2.00, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref
test rbp, rbp
- jne G_M35244_IG23
+ jne G_M35244_IG21
;; size=9 bbWeight=2.00 PerfScore 2.50
-G_M35244_IG12: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.28, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG15
+ je SHORT G_M35244_IG13
;; size=8 bbWeight=1.28 PerfScore 1.92
-G_M35244_IG13: ; bbWeight=0.64, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; 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_IG15
+ je SHORT G_M35244_IG13
;; size=16 bbWeight=0.64 PerfScore 2.72
-G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG12: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp] mov rdx, rsi ; gcrRegs +[rdx] @@ -136,43 +123,44 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rax ; gcrRegs +[rbp] ;; size=12 bbWeight=0.32 PerfScore 1.12
-G_M35244_IG15: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
+G_M35244_IG13: ; bbWeight=1.28, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] cmp edi, dword ptr [rbp+0x10]
- jae G_M35244_IG32
+ jae G_M35244_IG30
mov rcx, gword ptr [rbp+0x08] ; gcrRegs +[rcx] cmp edi, dword ptr [rcx+0x08]
- jae G_M35244_IG33
+ jae G_M35244_IG31
mov edx, edi
- mov rbp, gword ptr [rcx+8*rdx+0x10]
+ mov rsi, gword ptr [rcx+8*rdx+0x10] + ; gcrRegs +[rsi]
;; size=29 bbWeight=1.28 PerfScore 15.68
-G_M35244_IG16: ; bbWeight=2, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - movzx rcx, byte ptr [rbp+0x2E]
+G_M35244_IG14: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rcx rbp] + movzx rcx, byte ptr [rsi+0x2E]
cmp ecx, 24
- je SHORT G_M35244_IG25
+ je SHORT G_M35244_IG23
lea edx, [rcx-0x1A] cmp edx, 1
- jbe SHORT G_M35244_IG25
+ jbe SHORT G_M35244_IG23
add ecx, -33 cmp ecx, 1
- jbe SHORT G_M35244_IG25
+ jbe SHORT G_M35244_IG23
;; size=25 bbWeight=2 PerfScore 13.00
-G_M35244_IG17: ; bbWeight=2, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rbx, rbp
+ mov rbx, rsi
; gcrRegs +[rbx] jmp G_M35244_IG03 ;; size=8 bbWeight=2 PerfScore 4.50
-G_M35244_IG18: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rbp]
+G_M35244_IG16: ; 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_IG24
+ je SHORT G_M35244_IG22
;; size=9 bbWeight=2 PerfScore 6.50
-G_M35244_IG19: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG17: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -182,16 +170,16 @@ G_M35244_IG19: ; bbWeight=1.55, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 test rax, rax je G_M35244_IG05 ;; size=27 bbWeight=1.55 PerfScore 4.25
-G_M35244_IG20: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
+G_M35244_IG18: ; bbWeight=1.09, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rax+0x10] jmp G_M35244_IG06 ;; size=8 bbWeight=1.09 PerfScore 4.36
-G_M35244_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rsi] mov rcx, rbx ; gcrRegs +[rcx] ;; size=3 bbWeight=1 PerfScore 0.25
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG20: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop rbp @@ -200,38 +188,39 @@ 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.72, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35244_IG21: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx] +[rbp]
- jmp SHORT G_M35244_IG16 - ;; size=2 bbWeight=0.72 PerfScore 1.44 -G_M35244_IG24: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbp] +[rsi]
+ mov rsi, rbp + ; gcrRegs +[rsi] + jmp SHORT G_M35244_IG14 + ;; size=5 bbWeight=0.72 PerfScore 1.62 +G_M35244_IG22: ; bbWeight=0.45, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp]
xor edi, edi jmp G_M35244_IG06 ;; size=7 bbWeight=0.45 PerfScore 1.02
-G_M35244_IG25: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rsi] +[rbp]
+G_M35244_IG23: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x18], 0
- je SHORT G_M35244_IG26
+ 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_IG15
;; size=17 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; bbWeight=0, gcrefRegs=0028 {rbx rbp}, 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 ; gcrRegs +[rax] ; gcr arg pop 0
- mov rsi, rax - ; gcrRegs +[rsi] - mov ecx, dword ptr [rbp+0x28] - mov byte ptr [rsi+0x2E], 32 - mov dword ptr [rsi+0x28], ecx - mov rcx, rsi
+ mov rdi, rax + ; gcrRegs +[rdi] + mov ecx, dword ptr [rsi+0x28] + mov byte ptr [rdi+0x2E], 32 + mov dword ptr [rdi+0x28], ecx + mov rcx, rdi
; gcrRegs +[rcx]
- mov rdx, rbp
+ mov rdx, rsi
; gcrRegs +[rdx] call [System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this] ; gcrRegs -[rax rcx rdx] ...

libraries_tests.run.windows.x64.Release.mch

-27 (-1.38%) : 424451.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
...

-4 (-0.62%) : 419683.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

@@ -13,22 +13,22 @@ ; V01 loc0 [V01,T02] ( 20, 8.44) 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,T03] ( 3, 8.44) ubyte -> rax
-; V04 loc3 [V04,T07] ( 4, 6.56) ubyte -> r14
+; V04 loc3 [V04,T07] ( 4, 6.56) ubyte -> rcx
;* V05 loc4 [V05,T17] ( 0, 0 ) ubyte -> zero-ref ;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.RegularExpressions.RegexNode> ; V07 loc6 [V07,T32] ( 2, 0 ) int -> rsi ; V08 loc7 [V08,T30] ( 5, 0 ) int -> rdi ; V09 loc8 [V09,T31] ( 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,T18] ( 5, 1.11) ref -> rsi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
+; V11 tmp1 [V11,T18] ( 5, 1.11) ref -> rdi class-hnd exact "NewObj constructor temp" <System.Text.RegularExpressions.RegexNode>
; V12 tmp2 [V12,T14] ( 4, 3.33) int -> rdi "Inline return value spill temp" ; V13 tmp3 [V13,T15] ( 3, 2.91) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
-; V14 tmp4 [V14,T12] ( 6, 5.22) ref -> rbp class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
+; V14 tmp4 [V14,T12] ( 6, 5.22) ref -> rsi class-hnd "Inline return value spill temp" <System.Text.RegularExpressions.RegexNode>
; V15 tmp5 [V15,T06] ( 2, 6.67) ref -> rbp "CASTCLASS eval op1" ;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V17 tmp7 [V17,T13] ( 3, 4.01) ref -> rbp class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> ; V18 tmp8 [V18,T01] ( 4, 9.26) int -> rdi "Inlining Arg"
-; V19 tmp9 [V19,T10] ( 3, 5.93) ref -> rdx class-hnd "Inlining Arg" <<unknown class>>
+; V19 tmp9 [V19,T10] ( 3, 5.93) ref -> rbp class-hnd "Inlining Arg" <<unknown class>>
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.RegexNode> ; V21 tmp11 [V21,T26] ( 2, 0.44) int -> rcx "Inlining Arg" ;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -37,49 +37,48 @@ ;* V25 tmp15 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Text.RegularExpressions.RegexNode> ; V26 tmp16 [V26,T24] ( 3, 0.53) ref -> rbx class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexNode> ; V27 tmp17 [V27,T22] ( 3, 0.79) ref -> rbx class-hnd "Inlining Arg" <<unknown class>>
-; V28 tmp18 [V28,T11] ( 3, 5.93) ref -> rdx "arr expr"
+; V28 tmp18 [V28,T11] ( 3, 5.93) ref -> rcx "arr expr"
; V29 tmp19 [V29,T27] ( 2, 0.44) int -> rdx "argument with side effect"
-; V30 tmp20 [V30,T23] ( 3, 0.79) ref -> rdx "arr expr"
+; V30 tmp20 [V30,T23] ( 3, 0.79) ref -> rcx "arr expr"
; V31 tmp21 [V31,T08] ( 5, 6.25) ref -> rbp "CastInstOf QMark result" ; V32 tmp22 [V32,T21] ( 5, 0.83) ref -> rbx "CastInstOf QMark result" ; V33 cse0 [V33,T04] ( 10, 8.01) ref -> rsi multi-def "CSE - aggressive" ; V34 cse1 [V34,T28] ( 3, 0.33) ref -> rcx "CSE - conservative"
-; V35 rat0 [V35,T05] ( 5, 7.41) ref -> rdx "replacement local"
+; V35 rat0 [V35,T05] ( 5, 7.41) ref -> rbp "replacement local"
; V36 rat1 [V36,T16] ( 3, 2.47) long -> rcx "CSE for expectedClsNode" ; V37 rat2 [V37,T19] ( 5, 0.99) ref -> rbx "replacement local" ; V38 rat3 [V38,T29] ( 3, 0.33) long -> rcx "CSE for expectedClsNode" ; V39 rat4 [V39,T00] ( 3, 16.00) 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 call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M35244_IG20
+ je G_M35244_IG39
test dword ptr [rbx+0x28], 0x440
- jne G_M35244_IG20
+ jne G_M35244_IG39
;; 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_IG33
+ jbe G_M35244_IG31
;; size=16 bbWeight=2.89 PerfScore 10.83 G_M35244_IG04: ; bbWeight=2.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref add eax, -24 cmp eax, 10
- ja G_M35244_IG20
+ ja G_M35244_IG39
mov edx, eax lea rcx, [reloc @RWD00] mov ecx, dword ptr [rcx+4*rdx] @@ -87,13 +86,13 @@ G_M35244_IG04: ; bbWeight=2.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, add rcx, rax jmp rcx ;; size=36 bbWeight=2.67 PerfScore 20.00
-G_M35244_IG05: ; bbWeight=1.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG05: ; bbWeight=1.67, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] test rsi, rsi
- je SHORT G_M35244_IG16 - ;; size=9 bbWeight=1.67 PerfScore 5.42 -G_M35244_IG06: ; bbWeight=1.17, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ je G_M35244_IG21 + ;; size=13 bbWeight=1.67 PerfScore 5.42 +G_M35244_IG06: ; bbWeight=1.17, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdx, rsi ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; <unknown class> @@ -101,8 +100,8 @@ G_M35244_IG06: ; bbWeight=1.17, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs -[rdx] +[rax] ; gcr arg pop 0 test rax, rax
- jne SHORT G_M35244_IG11 - ;; size=23 bbWeight=1.17 PerfScore 3.22
+ jne G_M35244_IG20 + ;; size=27 bbWeight=1.17 PerfScore 3.22
G_M35244_IG07: ; bbWeight=0.60, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] mov edi, 1 @@ -112,141 +111,129 @@ G_M35244_IG08: ; bbWeight=1.67, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 mov rbp, rsi ; gcrRegs +[rbp] test rbp, rbp
- je SHORT G_M35244_IG13
+ je SHORT G_M35244_IG11
;; size=10 bbWeight=1.67 PerfScore 2.92 G_M35244_IG09: ; bbWeight=0.83, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode - cmp qword ptr [rbp], rcx - je SHORT G_M35244_IG13
+ mov rdx, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode + cmp qword ptr [rbp], rdx + je SHORT G_M35244_IG11
;; size=16 bbWeight=0.83 PerfScore 3.54
-G_M35244_IG10: ; bbWeight=0.42, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=0.42, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbp]
- jmp SHORT G_M35244_IG12 - ;; size=2 bbWeight=0.42 PerfScore 0.83 -G_M35244_IG11: ; bbWeight=0.57, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rax] - mov edi, dword ptr [rax+0x10] - jmp SHORT G_M35244_IG08 - ;; size=5 bbWeight=0.57 PerfScore 2.27 -G_M35244_IG12: ; bbWeight=0.42, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
xor rbp, rbp ; gcrRegs +[rbp] ;; size=2 bbWeight=0.42 PerfScore 0.10
-G_M35244_IG13: ; bbWeight=1.67, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG11: ; bbWeight=1.67, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
test rbp, rbp
- jne SHORT G_M35244_IG17
+ jne SHORT G_M35244_IG19
;; size=5 bbWeight=1.67 PerfScore 2.08
-G_M35244_IG14: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG12: ; bbWeight=0.99, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
- mov rdx, rsi - ; gcrRegs +[rdx] - test rdx, rdx - je SHORT G_M35244_IG23
+ mov rbp, rsi + ; gcrRegs +[rbp] + test rbp, rbp + je SHORT G_M35244_IG15
;; size=8 bbWeight=0.99 PerfScore 1.48
-G_M35244_IG15: ; bbWeight=5.56, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M35244_IG21 - ;; size=2 bbWeight=5.56 PerfScore 11.11 -G_M35244_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdx] - xor edi, edi - jmp SHORT G_M35244_IG08 - ;; size=4 bbWeight=0.50 PerfScore 1.12 -G_M35244_IG17: ; bbWeight=1.67, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi] +[rbp] - movzx r14, byte ptr [rbp+0x2E] - cmp r14d, 24 - je G_M35244_IG35 - lea ecx, [r14-0x1A] - cmp ecx, 1 - jbe G_M35244_IG35 - ;; size=28 bbWeight=1.67 PerfScore 8.33 -G_M35244_IG18: ; bbWeight=1.56, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref - add r14d, -33 - cmp r14d, 1 - jbe G_M35244_IG35 - ;; size=14 bbWeight=1.56 PerfScore 2.33 -G_M35244_IG19: ; bbWeight=1.67, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx] - mov rbx, rbp - ; gcrRegs +[rbx] - jmp G_M35244_IG03 - ;; size=8 bbWeight=1.67 PerfScore 3.75 -G_M35244_IG20: ; bbWeight=1.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx rbp] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - ret - ;; size=11 bbWeight=1.10 PerfScore 4.14 -G_M35244_IG21: ; bbWeight=0.49, gcVars=0000000000000000 {}, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rdx rbx rsi]
+G_M35244_IG13: ; bbWeight=0.49, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; <unknown class>
- cmp qword ptr [rdx], rcx - je SHORT G_M35244_IG23 - ;; size=15 bbWeight=0.49 PerfScore 2.10 -G_M35244_IG22: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdx]
+ cmp qword ptr [rbp], rcx + je SHORT G_M35244_IG15 + ;; size=16 bbWeight=0.49 PerfScore 2.10 +G_M35244_IG14: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp]
mov rdx, rsi ; gcrRegs +[rdx] call CORINFO_HELP_CHKCASTCLASS_SPECIAL ; gcrRegs -[rdx rsi] +[rax] ; gcr arg pop 0
- mov rdx, rax - ; gcrRegs +[rdx] - ;; size=11 bbWeight=0.25 PerfScore 0.37 -G_M35244_IG23: ; bbWeight=0.99, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] - cmp edi, dword ptr [rdx+0x10] - jae G_M35244_IG39 - mov rdx, gword ptr [rdx+0x08] - cmp edi, dword ptr [rdx+0x08] - jae G_M35244_IG40 - mov ecx, edi - mov rbp, gword ptr [rdx+8*rcx+0x10]
+ mov rbp, rax
; gcrRegs +[rbp]
- jmp SHORT G_M35244_IG17 - ;; size=31 bbWeight=0.99 PerfScore 14.07 -G_M35244_IG24: ; bbWeight=0.22, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rdx rbp]
+ ;; size=11 bbWeight=0.25 PerfScore 0.37 +G_M35244_IG15: ; bbWeight=0.99, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax] + cmp edi, dword ptr [rbp+0x10] + jae G_M35244_IG37 + mov rcx, gword ptr [rbp+0x08] + ; gcrRegs +[rcx] + cmp edi, dword ptr [rcx+0x08] + jae G_M35244_IG38 + mov eax, edi + mov rsi, gword ptr [rcx+8*rax+0x10]
...

-2 (-0.19%) : 63172.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 12871
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 12871
; 5 inlinees with PGO data; 7 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.89, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref ; gcrRegs -[rcx] @@ -125,7 +125,7 @@ G_M57371_IG03: ; bbWeight=0.89, 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.89, 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.89 PerfScore 5.34 G_M57371_IG05: ; bbWeight=0.71, 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.71 PerfScore 2.31
-G_M57371_IG06: ; bbWeight=0.89, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M57371_IG06: ; bbWeight=0.57, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M57371_IG08 + ;; size=2 bbWeight=0.57 PerfScore 1.14 +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.56 +G_M57371_IG08: ; bbWeight=0.89, 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.89 PerfScore 2.89
-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.20 -G_M57371_IG10: ; bbWeight=0.11, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[r14] +[rsi rdi]
+G_M57371_IG11: ; bbWeight=0.11, 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.11, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 add rdx, rax jmp rdx ;; size=33 bbWeight=0.11 PerfScore 0.80
-G_M57371_IG11: ; bbWeight=0.10, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG12: ; bbWeight=0.10, 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.10, 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 SHORT G_M57371_IG15
+ jne SHORT G_M57371_IG16
;; size=27 bbWeight=0.10 PerfScore 0.79
-G_M57371_IG12: ; bbWeight=0.06, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0000 {}, byref
+G_M57371_IG13: ; bbWeight=0.06, 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.06, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0 mov rbp, rax ; gcrRegs +[rbp] ;; size=21 bbWeight=0.06 PerfScore 0.11
-G_M57371_IG13: ; bbWeight=0.10, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG14: ; bbWeight=0.10, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rcx, rsi ; gcrRegs +[rcx] @@ -218,15 +219,15 @@ G_M57371_IG13: ; bbWeight=0.10, gcrefRegs=00E0 {rbp rsi rdi}, byrefRegs=0 ; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.Binder+<>c:<MakeDeconstructInvocationExpression>b__282_1(Microsoft.CodeAnalysis.CSharp.OutDeconstructVarPendingInference):Microsoft.CodeAnalysis.CSharp.BoundDeconstructValuePlaceholder:this cmp qword ptr [rdi+0x18], rdx
- jne SHORT G_M57371_IG16
+ jne SHORT G_M57371_IG17
;; size=30 bbWeight=0.10 PerfScore 0.79
-G_M57371_IG14: ; bbWeight=0.05, gcrefRegs=0021 {rax rbp}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG15: ; bbWeight=0.05, gcrefRegs=0021 {rax rbp}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi] mov rsi, gword ptr [rax+0x20] ; gcrRegs +[rsi]
- jmp SHORT G_M57371_IG17
+ jmp SHORT G_M57371_IG18
;; size=6 bbWeight=0.05 PerfScore 0.20
-G_M57371_IG15: ; bbWeight=0.04, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG16: ; bbWeight=0.04, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp] +[rdi] mov rdx, rax ; gcrRegs +[rdx] @@ -237,9 +238,9 @@ G_M57371_IG15: ; bbWeight=0.04, gcrefRegs=00C1 {rax rsi rdi}, byrefRegs=0 ; gcr arg pop 0 mov rbp, rax ; gcrRegs +[rbp]
- jmp SHORT G_M57371_IG13
+ jmp SHORT G_M57371_IG14
;; size=15 bbWeight=0.04 PerfScore 0.29
-G_M57371_IG16: ; bbWeight=0.05, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0000 {}, byref
+G_M57371_IG17: ; bbWeight=0.05, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov rdx, rax ; gcrRegs +[rdx] @@ -251,18 +252,28 @@ G_M57371_IG16: ; bbWeight=0.05, gcrefRegs=00A1 {rax rbp rdi}, byrefRegs=0 mov rsi, rax ; gcrRegs +[rsi] ;; size=13 bbWeight=0.05 PerfScore 0.28
-G_M57371_IG17: ; bbWeight=0.10, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG18: ; bbWeight=0.10, 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
+ jle SHORT G_M57371_IG21
;; size=11 bbWeight=0.10 PerfScore 0.61
-G_M57371_IG18: ; bbWeight=0.08, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG19: ; bbWeight=0.08, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x38] test rcx, rcx
- je SHORT G_M57371_IG20
+ je SHORT G_M57371_IG21
;; size=9 bbWeight=0.08 PerfScore 0.26
-G_M57371_IG19: ; bbWeight=0.10, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
+G_M57371_IG20: ; bbWeight=0.07, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M57371_IG22 + ;; size=2 bbWeight=0.07 PerfScore 0.13 +G_M57371_IG21: ; bbWeight=0.04, gcrefRegs=0060 {rbp rsi}, 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.04 PerfScore 0.06 +G_M57371_IG22: ; bbWeight=0.10, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref
mov rdx, rbp ; gcrRegs +[rdx] mov r8, rsi @@ -270,27 +281,18 @@ G_M57371_IG19: ; bbWeight=0.10, 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.10 PerfScore 0.56
-G_M57371_IG20: ; bbWeight=0.04, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] +[rbp rsi] - mov rcx, rbx - mov rdx, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - ; gcr arg pop 0 - mov rcx, rax - jmp SHORT G_M57371_IG19 - ;; size=23 bbWeight=0.04 PerfScore 0.14 -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]
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.04
-G_M57371_IG22: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - jmp G_M57371_IG29 - ;; size=5 bbWeight=0.01 PerfScore 0.01 -G_M57371_IG23: ; bbWeight=0.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+G_M57371_IG24: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + jmp G_M57371_IG33 + ;; size=5 bbWeight=0.00 PerfScore 0.01 +G_M57371_IG25: ; bbWeight=0.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi rdi] mov rcx, rsi ; gcrRegs +[rcx] @@ -300,7 +302,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 @@ -338,18 +340,28 @@ G_M57371_IG23: ; bbWeight=0.00, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 mov r15, rax ; gcrRegs +[r15] ;; size=122 bbWeight=0.00 PerfScore 0.04
-G_M57371_IG24: ; bbWeight=0.00, gcrefRegs=C020 {rbp r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG26: ; bbWeight=0.00, gcrefRegs=C020 {rbp r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov rcx, qword ptr [rbx+0x38] cmp qword ptr [rcx+0x10], 48
- jle SHORT G_M57371_IG31
+ jle SHORT G_M57371_IG29
;; size=11 bbWeight=0.00 PerfScore 0.01
-G_M57371_IG25: ; bbWeight=0.00, gcrefRegs=C020 {rbp r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG27: ; bbWeight=0.00, gcrefRegs=C020 {rbp r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rcx+0x30] test rcx, rcx
- je SHORT G_M57371_IG31
+ je SHORT G_M57371_IG29
;; size=9 bbWeight=0.00 PerfScore 0.00 ...

+2 (+0.38%) : 625384.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)

@@ -57,7 +57,7 @@ G_M13290_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, ;; size=9 bbWeight=1 PerfScore 3.25 G_M13290_IG03: ; bbWeight=0.75, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref cmp eax, 42
- je G_M13290_IG16
+ je G_M13290_IG17
;; size=9 bbWeight=0.75 PerfScore 0.94 G_M13290_IG04: ; bbWeight=0.75, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz add eax, -110 @@ -69,7 +69,7 @@ G_M13290_IG05: ; bbWeight=0.45, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 ; gcrRegs +[rcx] mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundLocal cmp qword ptr [rcx], rax
- jne G_M13290_IG18
+ jne G_M13290_IG19
mov rdx, gword ptr [rcx+0x20] mov dword ptr [rsp+0x20], 1 mov rcx, rbx @@ -92,7 +92,7 @@ G_M13290_IG07: ; bbWeight=0.76, epilog, nogc, extend G_M13290_IG08: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[rdx rbx] cmp eax, 7
- ja SHORT G_M13290_IG11
+ ja SHORT G_M13290_IG13
mov ecx, eax lea r8, [reloc @RWD00] mov r8d, dword ptr [r8+4*rcx] @@ -102,29 +102,24 @@ G_M13290_IG08: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=000 ;; size=31 bbWeight=0.29 PerfScore 2.14 G_M13290_IG09: ; bbWeight=0.25, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz cmp eax, 187
- je SHORT G_M13290_IG14
+ je SHORT G_M13290_IG15
;; size=7 bbWeight=0.25 PerfScore 0.31 G_M13290_IG10: ; bbWeight=0.13, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz lea ecx, [rax-0xBD] cmp ecx, 1
- jbe SHORT G_M13290_IG14
+ jbe SHORT G_M13290_IG15
;; size=11 bbWeight=0.13 PerfScore 0.23
-G_M13290_IG11: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13290_IG11: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rbx]
- mov eax, -1 - ;; size=5 bbWeight=0.24 PerfScore 0.06 -G_M13290_IG12: ; bbWeight=0.24, epilog, nogc, extend - add rsp, 64 - pop rbx - ret - ;; size=6 bbWeight=0.24 PerfScore 0.43 -G_M13290_IG13: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ jmp SHORT G_M13290_IG13 + ;; size=2 bbWeight=0.11 PerfScore 0.23 +G_M13290_IG12: ; bbWeight=0.16, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rbx] mov rcx, rdx ; gcrRegs +[rcx] mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundParameter cmp qword ptr [rcx], rax
- jne G_M13290_IG19
+ jne G_M13290_IG20
mov rdx, gword ptr [rcx+0x20] mov dword ptr [rsp+0x20], 1 mov rcx, rbx @@ -137,11 +132,19 @@ G_M13290_IG13: ; bbWeight=0.16, gcVars=0000000000000000 {}, gcrefRegs=000 ; gcr arg pop 0 jmp SHORT G_M13290_IG06 ;; size=58 bbWeight=0.16 PerfScore 2.82
-G_M13290_IG14: ; bbWeight=0.13, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M13290_IG13: ; bbWeight=0.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov eax, -1 + ;; size=5 bbWeight=0.24 PerfScore 0.06 +G_M13290_IG14: ; bbWeight=0.24, epilog, nogc, extend + add rsp, 64 + pop rbx + ret + ;; size=6 bbWeight=0.24 PerfScore 0.43 +G_M13290_IG15: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdx rbx] mov r8, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.NullableWalker cmp qword ptr [rbx], r8
- jne G_M13290_IG21
+ jne G_M13290_IG22
lea r8, [rsp+0x38] lea r9, [rsp+0x30] mov rcx, rbx @@ -151,9 +154,9 @@ G_M13290_IG14: ; bbWeight=0.13, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=44 bbWeight=0.13 PerfScore 1.17
-G_M13290_IG15: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M13290_IG16: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test eax, eax
- je SHORT G_M13290_IG11
+ je SHORT G_M13290_IG13
mov rcx, rbx ; gcrRegs +[rcx] mov rdx, gword ptr [rsp+0x38] @@ -166,13 +169,13 @@ G_M13290_IG15: ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M13290_IG06 ;; size=34 bbWeight=0.13 PerfScore 1.17
-G_M13290_IG16: ; bbWeight=0.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M13290_IG17: ; bbWeight=0.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx rbx] mov rcx, rdx ; gcrRegs +[rcx] mov r8, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator cmp qword ptr [rcx], r8
- jne G_M13290_IG22
+ jne G_M13290_IG23
mov rdx, gword ptr [rcx+0x20] mov rcx, rbx mov rax, qword ptr [rbx] @@ -182,7 +185,7 @@ G_M13290_IG16: ; bbWeight=0.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 ; gcr arg pop 0 jmp G_M13290_IG06 ;; size=46 bbWeight=0.01 PerfScore 0.11
-G_M13290_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M13290_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx] mov rcx, rbx ; gcrRegs +[rcx] @@ -191,7 +194,7 @@ G_M13290_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0 test rax, rax
- je G_M13290_IG11
+ je G_M13290_IG13
mov rcx, rbx ; gcrRegs +[rcx] mov rax, 0xD1FFAB1E ; code for Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:get_MethodThisParameter():Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this @@ -214,7 +217,7 @@ G_M13290_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 jmp G_M13290_IG06 ;; size=77 bbWeight=0 PerfScore 0.00
-G_M13290_IG18: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M13290_IG19: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx] mov rcx, rax call CORINFO_HELP_CHKCASTCLASS @@ -222,7 +225,7 @@ G_M13290_IG18: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 int3 ;; size=9 bbWeight=0 PerfScore 0.00
-G_M13290_IG19: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M13290_IG20: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[rdx] mov rcx, rax call CORINFO_HELP_CHKCASTCLASS @@ -230,7 +233,7 @@ G_M13290_IG19: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 int3 ;; size=9 bbWeight=0 PerfScore 0.00
-G_M13290_IG20: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M13290_IG21: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[rdx rbx] mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.BoundRangeVariable call CORINFO_HELP_CHKCASTCLASS @@ -248,7 +251,7 @@ G_M13290_IG20: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, ; gcr arg pop 0 jmp G_M13290_IG06 ;; size=39 bbWeight=0 PerfScore 0.00
-G_M13290_IG21: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+G_M13290_IG22: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx rbx] lea r8, [rsp+0x38] lea r9, [rsp+0x30] @@ -259,9 +262,9 @@ G_M13290_IG21: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, call [rax+0x38]<unknown method> ; gcrRegs -[rcx rdx] ; gcr arg pop 0
- jmp G_M13290_IG15
+ jmp G_M13290_IG16
;; size=31 bbWeight=0 PerfScore 0.00
-G_M13290_IG22: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+G_M13290_IG23: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx] +[rdx] mov rcx, r8 call CORINFO_HELP_CHKCASTCLASS @@ -269,17 +272,17 @@ G_M13290_IG22: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 int3 ;; size=9 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M13290_IG17 - G_M13290_IG02 - dd G_M13290_IG11 - G_M13290_IG02 - dd G_M13290_IG11 - G_M13290_IG02 - dd G_M13290_IG17 - G_M13290_IG02 - dd G_M13290_IG05 - G_M13290_IG02 - dd G_M13290_IG11 - G_M13290_IG02 - dd G_M13290_IG20 - G_M13290_IG02
+RWD00 dd G_M13290_IG18 - G_M13290_IG02
dd G_M13290_IG13 - G_M13290_IG02
+ dd G_M13290_IG13 - G_M13290_IG02 + dd G_M13290_IG18 - G_M13290_IG02 + dd G_M13290_IG05 - G_M13290_IG02 + dd G_M13290_IG13 - G_M13290_IG02 + dd G_M13290_IG21 - G_M13290_IG02 + dd G_M13290_IG12 - G_M13290_IG02
-; Total bytes of code 525, prolog size 17, PerfScore 25.90, instruction count 127, allocated bytes for code 525 (MethodHash=6c25cc15) for method Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)
+; Total bytes of code 527, prolog size 17, PerfScore 26.13, instruction count 128, allocated bytes for code 527 (MethodHash=6c25cc15) for method Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)
; ============================================================ Unwind Info:

+3 (+0.80%) : 251289.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 ...

+16 (+0.92%) : 636719.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 (40) [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 -> r13 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 -> rdx 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 -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.__Canon> ; V11 tmp7 [V11,T14] ( 2, 3.38) ref -> rdx class-hnd exact "Strict ordering of exceptions for Array store" <System.String> ; V12 tmp8 [V12,T51] ( 2, 0.00) ref -> r8 class-hnd "dup spill" <<unknown class>>
-; V13 tmp9 [V13,T56] ( 2, 0.00) int -> r13 "impSpillLclRefs" -; V14 tmp10 [V14,T52] ( 2, 0.00) ref -> r15 class-hnd exact "impSpillLclRefs" <<unknown class>>
+; V13 tmp9 [V13,T56] ( 2, 0.00) int -> rbx "impSpillLclRefs" +; V14 tmp10 [V14,T52] ( 2, 0.00) ref -> rdi 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 -> r8
-; V19 tmp15 [V19,T58] ( 5, 0.00) ref -> rdi class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp15 [V19,T58] ( 5, 0.00) ref -> r15 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 -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.__Canon> @@ -46,7 +46,7 @@ ; V34 tmp30 [V34,T48] ( 4, 0.01) ref -> rcx "guarded devirt arg temp" ;* V35 tmp31 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.RegularExpressions.Tests.RegexHelpers+<get_AvailableEngines>d__12> ;* V36 tmp32 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Tests.RegexHelpers+<get_AvailableEngines>d__12>
-; V37 tmp33 [V37,T61] ( 4, 0.00) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Tests.RegexHelpers+<get_AvailableEngines>d__12>
+; V37 tmp33 [V37,T61] ( 4, 0.00) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Tests.RegexHelpers+<get_AvailableEngines>d__12>
;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.Tests.RegexHelpers+<get_AvailableEngines>d__12> ; V39 tmp35 [V39,T63] ( 2, 0.00) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>> ;* V40 tmp36 [V40 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -80,7 +80,7 @@ ; V68 tmp64 [V68,T29] ( 6, 0.76) ref -> [rbp-0x50] ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.RegexReplacement> ; V69 tmp65 [V69,T39] ( 2, 0.61) int -> [rbp-0x3C] "Inlining Arg" ; V70 tmp66 [V70,T37] ( 2, 0.61) ref -> rbx class-hnd "Inlining Arg" <System.Collections.Hashtable>
-; V71 tmp67 [V71,T40] ( 2, 0.61) int -> rdi "Inlining Arg"
+; V71 tmp67 [V71,T40] ( 2, 0.61) int -> registers "Inlining Arg"
; V72 tmp68 [V72,T38] ( 2, 0.61) ref -> [rbp-0x58] class-hnd "Inlining Arg" <System.Collections.Hashtable> ;* V73 tmp69 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V74 tmp70 [V74 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Text.RegularExpressions.RegexReplacement> @@ -107,7 +107,7 @@ ; V95 PSPSym [V95,T21] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym" ; V96 cse0 [V96,T15] ( 3, 2.53) int -> rcx "CSE - moderate" ; V97 cse1 [V97,T50] ( 5, 0.00) long -> rbx multi-def "CSE - conservative"
-; V98 cse2 [V98,T60] ( 3, 0.00) long -> rbx "CSE - conservative"
+; V98 cse2 [V98,T60] ( 3, 0.00) long -> r14 "CSE - conservative"
; ; Lcl frame size = 88 @@ -128,114 +128,42 @@ G_M22758_IG01: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, mov rsi, rcx ; gcrRegs +[rsi] ;; size=35 bbWeight=1 PerfScore 11.00
-G_M22758_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22758_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000001 {V00}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
mov ebx, dword ptr [rsi+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=0040 {rsi}, byrefRegs=0000 {}, byref mov dword ptr [rsi+0x30], -3 test byte ptr [rsi+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=0040 {rsi}, byrefRegs=0000 {}, byref - jmp G_M22758_IG37 - ;; size=5 bbWeight=0.16 PerfScore 0.31 -G_M22758_IG05: ; bbWeight=0.16, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - cmp ebx, 2 - ja G_M22758_IG13 - mov ecx, ebx - lea rax, [reloc @RWD00] - mov eax, dword ptr [rax+4*rcx] - lea rdx, G_M22758_IG02 - add rax, rdx - jmp rax - ;; size=33 bbWeight=0.16 PerfScore 1.13 -G_M22758_IG06: ; bbWeight=0.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - mov dword ptr [rsi+0x38], edi - mov ecx, dword ptr [rsi+0x38] - mov rax, 0xD1FFAB1E ; code for 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]] - call [rax]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]] - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; <unknown method> - mov rax, 0xD1FFAB1E ; code for 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 -[rax] - call [rax]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 -[rdx] +[rax] - ; gcr arg pop 0 - lea rcx, bword ptr [rsi+0x18] - ; byrRegs +[rcx] - mov rdx, rax - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - mov r13d, dword ptr [rsi+0x38] - mov r15, gword ptr [rsi+0x18] - ; gcrRegs +[r15] - mov rbx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> - mov r8, gword ptr [rbx] - ; gcrRegs +[r8] - test r8, r8 - je G_M22758_IG36 - ;; size=85 bbWeight=0.00 PerfScore 0.02 -G_M22758_IG07: ; bbWeight=0.00, gcrefRegs=8140 {rsi r8 r15}, byrefRegs=0000 {}, byref - mov rdx, r15 - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; <unknown method> - mov rax, 0xD1FFAB1E ; code for 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]]] - call [rax]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 r8 r15] +[rax] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - mov rcx, 0xD1FFAB1E ; <unknown method> - mov rax, 0xD1FFAB1E ; code for 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 -[rax] - call [rax]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 -[rdx] +[rax] - ; gcr arg pop 0 - mov rdx, rax - ; gcrRegs +[rdx] - mov ecx, r13d - mov rax, 0xD1FFAB1E ; code for 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 -[rax] - call [rax]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 -[rdx] +[rax] - ; gcr arg pop 0 - mov rcx, rax
+G_M22758_IG04: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + xor rcx, rcx
; gcrRegs +[rcx]
- mov rax, 0xD1FFAB1E ; code for System.Threading.Tasks.Task`1[System.__Canon]:get_Result():System.__Canon:this - ; gcrRegs -[rax] - cmp dword ptr [rcx], ecx - call [rax]System.Threading.Tasks.Task`1[System.__Canon]:get_Result():System.__Canon:this - ; gcrRegs -[rcx] +[rax] - ; gcr arg pop 0 - lea rcx, bword ptr [rsi+0x20] - ; byrRegs +[rcx] - mov rdx, rax - ; gcrRegs +[rdx] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rdx] - ; byrRegs -[rcx] - xor ecx, ecx - mov dword ptr [rsi+0x3C], ecx
+ mov gword ptr [rsi+0x28], rcx + ;; size=6 bbWeight=0.84 PerfScore 1.06 +G_M22758_IG05: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rcx] + mov qword ptr [rsi+0x40], rcx + mov qword ptr [rsi+0x48], rcx + mov qword ptr [rsi+0x50], rcx + mov qword ptr [rsi+0x58], rcx
mov ecx, dword ptr [rsi+0x3C]
- mov rax, gword ptr [rsi+0x20] - ; gcrRegs +[rax] - cmp ecx, dword ptr [rax+0x08] - jge G_M22758_IG41 - ;; size=118 bbWeight=0.00 PerfScore 0.03 -G_M22758_IG08: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax]
+ inc ecx + mov dword ptr [rsi+0x3C], ecx + mov rdx, gword ptr [rsi+0x20] + ; gcrRegs +[rdx] + cmp dword ptr [rdx+0x08], ecx + jle G_M22758_IG27 + ;; size=37 bbWeight=0.84 PerfScore 11.18 +G_M22758_IG06: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx]
mov rcx, gword ptr [rsi+0x18] ; gcrRegs +[rcx] mov edx, dword ptr [rsi+0x3C] cmp edx, dword ptr [rcx+0x08]
- jae G_M22758_IG11
+ jae G_M22758_IG41
shl rdx, 5 mov rdx, gword ptr [rcx+rdx+0x20] ; gcrRegs +[rdx] @@ -246,14 +174,14 @@ G_M22758_IG08: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, ; gcrRegs -[rdx] ; byrRegs -[rcx] cmp dword ptr [rsi+0x38], 2
- je G_M22758_IG32
+ je G_M22758_IG26
;; size=44 bbWeight=0.84 PerfScore 13.50
-G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M22758_IG07: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rsi+0x18] ; gcrRegs +[rax] mov ecx, dword ptr [rsi+0x3C] cmp ecx, dword ptr [rax+0x08]
- jae G_M22758_IG11
+ jae G_M22758_IG41
shl rcx, 5 lea rsi, bword ptr [rax+rcx+0x10] ; gcrRegs -[rsi] @@ -273,14 +201,14 @@ G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, ; gcrRegs +[rax] ; byrRegs -[rsi rdi] ; gcr arg pop 0
- mov r12, rax - ; gcrRegs +[r12]
+ mov r13, rax + ; gcrRegs +[r13]
mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST ; gcr arg pop 0 mov ecx, dword ptr [r14+0x38] mov dword ptr [rax+0x08], ecx
- lea rcx, bword ptr [r12+0x10]
+ lea rcx, bword ptr [r13+0x10]
; byrRegs +[rcx] mov rdx, rax ; gcrRegs +[rdx] @@ -289,7 +217,7 @@ G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, ; byrRegs -[rcx] mov rdx, gword ptr [r14+0x40] ; gcrRegs +[rdx]
- lea rcx, bword ptr [r12+0x18]
+ lea rcx, bword ptr [r13+0x18]
; byrRegs +[rcx] call CORINFO_HELP_ASSIGN_REF ; gcrRegs -[rdx] @@ -300,7 +228,7 @@ G_M22758_IG09: ; bbWeight=0.84, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, ; gcr arg pop 0 mov ecx, dword ptr [r14+0x58] mov dword ptr [rax+0x08], ecx ...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x64.checked.mch 11 6 3 2 -61 +39
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x64.checked.mch 6 5 1 0 -32 +6
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 13 5 5 3 -35 +24
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 16 9 5 -128 +69

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x64.checked.mch 27,982 4 27,978 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 96,695 48,836 47,859 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.x64.checked.mch 54,111 37,293 16,818 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 584,001 348,100 235,901 0 (0.00%) 0 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 274,686 15 274,671 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 310,928 6 310,922 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.x64.Release.mch 678,242 480,859 197,383 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 320,863 21,944 298,919 0 (0.00%) 0 (0.00%)
realworld.run.windows.x64.checked.mch 36,896 3 36,893 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,572 11 32,561 0 (0.00%) 0 (0.00%)
2,416,976 937,071 1,479,905 0 (0.00%) 0 (0.00%)

jit-analyze output

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

Detail diffs



Top file regressions (bytes):
          17 : 96092.dasm (3.40 % of base)
          17 : 80253.dasm (3.40 % of base)
           5 : 85291.dasm (0.70 % of base)

Top file improvements (bytes):
         -38 : 83080.dasm (-7.09 % of base)
          -8 : 85267.dasm (-1.40 % of base)
          -6 : 92473.dasm (-1.47 % of base)
          -4 : 35193.dasm (-0.51 % of base)
          -4 : 35187.dasm (-0.51 % of base)
          -1 : 80879.dasm (-0.19 % of base)

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

Top method regressions (bytes):
          17 (3.40 % of base) : 96092.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.40 % of base) : 80253.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.70 % of base) : 85291.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):
         -38 (-7.09 % of base) : 83080.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -8 (-1.40 % of base) : 85267.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-1.47 % of base) : 92473.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) : 35193.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -4 (-0.51 % of base) : 35187.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.19 % of base) : 80879.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method regressions (percentages):
          17 (3.40 % of base) : 96092.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          17 (3.40 % of base) : 80253.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
           5 (0.70 % of base) : 85291.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):
         -38 (-7.09 % of base) : 83080.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -6 (-1.47 % of base) : 92473.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)
          -8 (-1.40 % of base) : 85267.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -4 (-0.51 % of base) : 35187.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -4 (-0.51 % of base) : 35193.dasm - EMFloat:DoEmFloatIteration(EMFloat+InternalFPF[],EMFloat+InternalFPF[],EMFloat+InternalFPF[],int,int):long (Tier1-OSR)
          -1 (-0.19 % of base) : 80879.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

9 total methods with Code Size differences (6 improved, 3 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: 407341578 (overridden on cmd)
Total bytes of diff: 407341552 (overridden on cmd)
Total bytes of delta: -26 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           6 : 255404.dasm (1.17 % of base)

Top file improvements (bytes):
          -7 : 2760.dasm (-1.34 % of base)
          -7 : 209974.dasm (-1.34 % of base)
          -7 : 241481.dasm (-1.34 % of base)
          -7 : 381761.dasm (-1.34 % of base)
          -4 : 234146.dasm (-0.53 % of base)

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

Top method regressions (bytes):
           6 (1.17 % of base) : 255404.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (bytes):
          -7 (-1.34 % of base) : 2760.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.34 % of base) : 209974.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.34 % of base) : 241481.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.34 % of base) : 381761.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -4 (-0.53 % of base) : 234146.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

Top method regressions (percentages):
           6 (1.17 % of base) : 255404.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
          -7 (-1.34 % of base) : 209974.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.34 % of base) : 2760.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.34 % of base) : 241481.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -7 (-1.34 % of base) : 381761.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -4 (-0.53 % of base) : 234146.dasm - EMFloatClass:DoEmFloatIteration(EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],EMFloatClass+InternalFPF[],int,int):long (Tier1-OSR)

6 total methods with Code Size differences (5 improved, 1 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: 281668285 (overridden on cmd)
Total bytes of diff: 281668274 (overridden on cmd)
Total bytes of delta: -11 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 636719.dasm (0.92 % of base)
           3 : 251289.dasm (0.80 % of base)
           2 : 625384.dasm (0.38 % of base)
           2 : 88816.dasm (0.09 % of base)
           1 : 616424.dasm (0.15 % of base)

Top file improvements (bytes):
         -27 : 424451.dasm (-1.38 % of base)
          -4 : 419683.dasm (-0.62 % of base)
          -2 : 63172.dasm (-0.19 % of base)
          -1 : 625268.dasm (-0.13 % of base)
          -1 : 418363.dasm (-0.15 % of base)

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

Top method regressions (bytes):
          16 (0.92 % of base) : 636719.dasm - System.Text.RegularExpressions.Tests.MonoTests+<ValidateRegex_MemberData>d__1:MoveNext():ubyte:this (Tier1)
           3 (0.80 % of base) : 251289.dasm - System.Xml.Schema.XsdBuilder:GetContainer(int):System.Xml.Schema.XmlSchemaObject:this (Tier1)
           2 (0.38 % of base) : 625384.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)
           2 (0.09 % of base) : 88816.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)
           1 (0.15 % of base) : 616424.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AreNullableAnnotationsEnabled(Microsoft.CodeAnalysis.SyntaxTree,int):ubyte:this (Tier1)

Top method improvements (bytes):
         -27 (-1.38 % of base) : 424451.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.62 % of base) : 419683.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -2 (-0.19 % of base) : 63172.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)
          -1 (-0.13 % of base) : 625268.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)
          -1 (-0.15 % of base) : 418363.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):
          16 (0.92 % of base) : 636719.dasm - System.Text.RegularExpressions.Tests.MonoTests+<ValidateRegex_MemberData>d__1:MoveNext():ubyte:this (Tier1)
           3 (0.80 % of base) : 251289.dasm - System.Xml.Schema.XsdBuilder:GetContainer(int):System.Xml.Schema.XmlSchemaObject:this (Tier1)
           2 (0.38 % of base) : 625384.dasm - Microsoft.CodeAnalysis.CSharp.LocalDataFlowPass`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,System.__Canon]:MakeSlot(Microsoft.CodeAnalysis.CSharp.BoundExpression):int:this (Tier1)
           1 (0.15 % of base) : 616424.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AreNullableAnnotationsEnabled(Microsoft.CodeAnalysis.SyntaxTree,int):ubyte:this (Tier1)
           2 (0.09 % of base) : 88816.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseTermWithoutPostfix(uint):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ExpressionSyntax:this (Tier1)

Top method improvements (percentages):
         -27 (-1.38 % of base) : 424451.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.62 % of base) : 419683.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
          -2 (-0.19 % of base) : 63172.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)
          -1 (-0.15 % of base) : 418363.dasm - System.Xml.Schema.BaseValidator:CreateInstance(int,System.Xml.XmlValidatingReaderImpl,System.Xml.Schema.XmlSchemaCollection,System.Xml.IValidationEventHandling,ubyte):System.Xml.Schema.BaseValidator (Tier1)
          -1 (-0.13 % of base) : 625268.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetMemberTypeArgumentsNoUseSiteDiagnostics(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol] (Tier1)

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