Assembly Diffs

osx arm64

Diffs are based on 2,293,443 contexts (933,876 MinOpts, 1,359,567 FullOpts).

Overall (-20 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,290,048 -4
coreclr_tests.run.osx.arm64.checked.mch 491,746,024 +0
libraries_tests.run.osx.arm64.Release.mch 313,602,060 -16

FullOpts (-20 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 17,918,744 -4
coreclr_tests.run.osx.arm64.checked.mch 153,251,180 +0
libraries_tests.run.osx.arm64.Release.mch 110,669,088 -16

Example diffs

benchmarks.run_pgo.osx.arm64.checked.mch

-4 (-0.53%) : 69487.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=2.99, 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=2.99 PerfScore 14.94 G_M35244_IG04: ; bbWeight=2.95, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz sub w20, w0, #24 cmp w20, #10
- bhi G_M35244_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=1.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- cbnz x22, G_M35244_IG21
+ cbnz x22, G_M35244_IG19
;; size=4 bbWeight=1.99 PerfScore 1.99 G_M35244_IG11: ; bbWeight=1.56, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] @@ -134,12 +134,12 @@ G_M35244_IG14: ; bbWeight=1.56, 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] @@ -155,7 +155,7 @@ G_M35244_IG15: ; bbWeight=1.99, 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=1.99 PerfScore 12.92 G_M35244_IG16: ; bbWeight=1.99, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -173,35 +173,24 @@ G_M35244_IG17: ; bbWeight=1.01, 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.01 PerfScore 4.04 G_M35244_IG18: ; bbWeight=0.75, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref
- b G_M35244_IG20 - ;; size=4 bbWeight=0.75 PerfScore 0.75 -G_M35244_IG19: ; bbWeight=0.02, 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.02 PerfScore 0.07 -G_M35244_IG20: ; bbWeight=0.75, 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.75 PerfScore 3.02
-G_M35244_IG21: ; bbWeight=0.43, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; bbWeight=0.43, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20] +[x22] mov x21, x22 ; gcrRegs +[x21] b G_M35244_IG15 ;; size=8 bbWeight=0.43 PerfScore 0.65
-G_M35244_IG22: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21-x22] +[x20] mov w21, #1 b G_M35244_IG07 ;; size=8 bbWeight=0.25 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] @@ -210,14 +199,14 @@ G_M35244_IG23: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0.03 PerfScore 0.17
-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 @@ -227,11 +216,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] @@ -247,18 +242,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, #1 LSL #32 @@ -306,7 +301,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] @@ -319,9 +314,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 @@ -341,22 +336,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 @@ -368,23 +363,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 756, prolog size 20, PerfScore 127.22, instruction count 189, allocated bytes for code 756 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
+; Total bytes of code 752, prolog size 20, PerfScore 126.40, instruction count 188, allocated bytes for code 752 (MethodHash=c35b7653) for method System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)
; ============================================================ Unwind Info: @@ -395,7 +390,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 189 (0x000bd) Actual length = 756 (0x0002f4)
+ Function Length : 188 (0x000bc) Actual length = 752 (0x0002f0)
...

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

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

+0 (0.00%) : 74135.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.21 -G_M417_IG04: ; bbWeight=0.69, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=0.69 PerfScore 2.78 -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.78 +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.51
-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.60
-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.82 -G_M417_IG08: ; bbWeight=0.42, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.71 +G_M417_IG07: ; bbWeight=0.69, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=0.69 PerfScore 2.78 +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.21 G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs +[x19 x21] @@ -173,25 +173,9 @@ G_M417_IG10: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr wzr, [x0] blr x3 ; gcrRegs -[x0-x2 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=76 bbWeight=0 PerfScore 0.00 G_M417_IG11: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x19 x21] - ldr x1, [x21, #0x80] - ; gcrRegs +[x1] - ldrsb wzr, [x19] - add x2, fp, #16 // [V14 tmp9] - mov x0, x19 - ; gcrRegs +[x0] - movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3] - blr x3 - ; gcrRegs -[x0-x1 x19 x21] - b G_M417_IG04 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x19 x21] ldr x1, [x21, #0x88] ; gcrRegs +[x1] @@ -205,25 +189,25 @@ G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19 x21]
- b G_M417_IG04
+ b G_M417_IG07
;; size=40 bbWeight=0 PerfScore 0.00
-G_M417_IG13: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M417_IG12: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] ldr x0, [x20] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x1, [x1, #0x40]
- cbz x1, G_M417_IG14 - b G_M417_IG15
+ cbz x1, G_M417_IG13 + b G_M417_IG14
;; size=24 bbWeight=0 PerfScore 0.00
-G_M417_IG14: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M417_IG13: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS mov x1, x0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M417_IG14: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x1 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -244,17 +228,17 @@ G_M417_IG15: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 ldr x1, [x0, #0x38] ldr x1, [x1] ldr x2, [x1, #0x48]
- cbz x2, G_M417_IG16
+ cbz x2, G_M417_IG15
mov x0, x2
- b G_M417_IG17
+ b G_M417_IG16
;; size=76 bbWeight=0 PerfScore 0.00
-G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG15: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_CLASS ;; size=16 bbWeight=0 PerfScore 0.00
-G_M417_IG17: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M417_IG16: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
mov x1, x22 ; gcrRegs +[x1] mov x2, x21 @@ -267,29 +251,45 @@ G_M417_IG17: ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs= ldr x4, [x4] blr x4 ; gcrRegs -[x1-x3 x19 x21-x22]
- b G_M417_IG04
+ b G_M417_IG07
;; size=36 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M417_IG04 - G_M417_IG02
+G_M417_IG17: ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x19 x21] + ldr x1, [x21, #0x80] + ; gcrRegs +[x1] + ldrsb wzr, [x19] + add x2, fp, #16 // [V14 tmp9] + mov x0, x19 + ; gcrRegs +[x0] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x0-x1 x19 x21] + b G_M417_IG07 + ;; size=40 bbWeight=0 PerfScore 0.00 +RWD00 dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG03 - G_M417_IG02
- dd G_M417_IG05 - G_M417_IG02
+ dd G_M417_IG04 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02 dd G_M417_IG10 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02 - dd G_M417_IG12 - G_M417_IG02
+ dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG11 - G_M417_IG02 dd G_M417_IG11 - G_M417_IG02
- dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02 - dd G_M417_IG04 - G_M417_IG02
+ dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG11 - G_M417_IG02 + dd G_M417_IG17 - G_M417_IG02 + dd G_M417_IG17 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02 + dd G_M417_IG07 - G_M417_IG02
dd G_M417_IG09 - G_M417_IG02
-; Total bytes of code 608, prolog size 20, PerfScore 42.80, 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.28, 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%) : 66512.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=4.00, 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=4.00 PerfScore 19.98 G_M35244_IG04: ; bbWeight=3.00, 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=3.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, G_M35244_IG05: ; bbWeight=3.00, 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=3.00 PerfScore 11.99 G_M35244_IG06: ; bbWeight=2.48, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz mov x1, x20 @@ -90,65 +90,53 @@ G_M35244_IG06: ; bbWeight=2.48, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbz x0, G_M35244_IG10
+ cbz x0, G_M35244_IG08
;; size=24 bbWeight=2.48 PerfScore 9.91 G_M35244_IG07: ; bbWeight=0.89, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref ldr w21, [x0, #0x10]
- b G_M35244_IG11
+ b G_M35244_IG09
;; size=8 bbWeight=0.89 PerfScore 3.55
-G_M35244_IG08: ; bbWeight=0.52, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M35244_IG08: ; bbWeight=1.59, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- mov w21, wzr - b G_M35244_IG11 - ;; size=8 bbWeight=0.52 PerfScore 0.78 -G_M35244_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[x19-x20] - ldp x21, x22, [sp, #0x20] - ldp x19, x20, [sp, #0x10] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=0.00 PerfScore 0.01 -G_M35244_IG10: ; bbWeight=1.59, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[x19-x20]
mov w21, #1 ;; size=4 bbWeight=1.59 PerfScore 0.80
-G_M35244_IG11: ; bbWeight=3.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG09: ; bbWeight=3.00, 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.00 PerfScore 5.99
-G_M35244_IG12: ; bbWeight=1.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG10: ; bbWeight=1.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
ldr x1, [x22] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG14
+ beq G_M35244_IG12
;; size=24 bbWeight=1.50 PerfScore 8.99
-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=3.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz - cbnz x22, G_M35244_IG19
+G_M35244_IG12: ; bbWeight=3.00, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x22, G_M35244_IG18
;; size=4 bbWeight=3.00 PerfScore 3.00
-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, #1 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.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.79
-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 @@ -171,21 +159,26 @@ G_M35244_IG18: ; bbWeight=1.10, 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.10 PerfScore 18.14
-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.78 +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=3.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG19: ; bbWeight=3.00, 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=3.00, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ccmp w2, #1, z, hi bls G_M35244_IG26 ;; size=28 bbWeight=3.00 PerfScore 19.48
-G_M35244_IG21: ; bbWeight=3.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M35244_IG20: ; bbWeight=3.00, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] mov x19, x20 ; gcrRegs +[x19] b G_M35244_IG03 ;; size=8 bbWeight=3.00 PerfScore 4.49
-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, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG23: ; bbWeight=1, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x21, x22, [sp, #0x20] ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x30 br x1 ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35244_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35244_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19] 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%) : 67756.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_IG25
ldr w1, [x19, #0x28] mov w0, #0xD1FFAB1E tst w1, w0
- bne G_M35244_IG14
+ bne G_M35244_IG25
;; 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_IG24
+ bls G_M35244_IG21
;; 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_IG14
+ bhi G_M35244_IG25
mov w1, w1 adr x0, [@RWD00] ldr w0, [x0, x1, LSL #2] @@ -89,7 +89,7 @@ G_M35244_IG06: ; bbWeight=0.71, gcrefRegs=180000 {x19 x20}, byrefRegs=000 bl CORINFO_HELP_ISINSTANCEOFCLASS ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- cbnz x0, G_M35244_IG28
+ cbnz x0, G_M35244_IG27
mov w21, #1 ;; size=28 bbWeight=0.71 PerfScore 3.22 G_M35244_IG07: ; bbWeight=1.00, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -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_IG16
+ cbz x23, G_M35244_IG28
;; 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_IG17
+ bls G_M35244_IG14
;; size=28 bbWeight=1.00 PerfScore 6.50 G_M35244_IG12: ; bbWeight=1.00, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x19] @@ -136,66 +136,18 @@ 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.02, 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.02 PerfScore 0.12 -G_M35244_IG15: ; 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, #1 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_IG16: ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0] +[x20] - mov x1, x20 - ; gcrRegs +[x1] - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32 - bl CORINFO_HELP_CHKCASTCLASS - ; gcrRegs -[x1 x20] +[x0] - ; gcr arg pop 0 - ldr w1, [x0, #0x10] - cmp w22, w1 - bhs G_M35244_IG26 - ldr x0, [x0, #0x08] - ldr w1, [x0, #0x08] - cmp w22, w1 - bhs G_M35244_IG27 - add x0, x0, #16 - ; gcrRegs -[x0] - ; byrRegs +[x0] - ldr x23, [x0, w22, UXTW #3] - ; gcrRegs +[x23] - b G_M35244_IG11 - ;; size=60 bbWeight=0 PerfScore 0.00 -G_M35244_IG17: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x0]
+G_M35244_IG14: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x20] +[x23]
ldr x0, [x19, #0x18] ; gcrRegs +[x0]
- cbz x0, G_M35244_IG18
+ cbz x0, G_M35244_IG15
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_IG18: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M35244_IG15: ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -243,7 +195,7 @@ G_M35244_IG18: ; 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_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x23] +[x19] mov x0, x19 ; gcrRegs +[x0] @@ -256,9 +208,9 @@ G_M35244_IG19: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 sxtw w20, w0 mov w21, #1
- b G_M35244_IG21
+ b G_M35244_IG18
;; size=36 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
mov x0, x19 ; gcrRegs +[x0] mov w1, w21 @@ -278,22 +230,22 @@ G_M35244_IG20: ; 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_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG18: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w21, w20
- blt G_M35244_IG20
+ blt G_M35244_IG17
ldrb w0, [x19, #0x2E] cmp w0, #34
- beq G_M35244_IG14 - b G_M35244_IG15
+ beq G_M35244_IG25 + b G_M35244_IG26
;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG22: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG19: ; 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_IG23: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M35244_IG20: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x24] cmp w0, #1
- beq G_M35244_IG15
+ beq G_M35244_IG26
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:FindLastExpressionInLoopForAutoAtomic():System.Text.RegularExpressions.RegexNode:this @@ -305,14 +257,14 @@ G_M35244_IG23: ; 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_IG25
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_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M35244_IG21: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.RegularExpressions.RegexNode:MakeLoopAtomic():this @@ -320,7 +272,7 @@ G_M35244_IG24: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG25: ; bbWeight=0, epilog, nogc, extend
+G_M35244_IG22: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38] ldp x21, x22, [sp, #0x28] ldp x19, x20, [sp, #0x18] @@ -328,7 +280,7 @@ G_M35244_IG25: ; bbWeight=0, epilog, nogc, extend br x1 ; gcr arg pop 0 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M35244_IG26: ; 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 @@ -338,29 +290,76 @@ G_M35244_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M35244_IG27: ; 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_IG28: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x19-x20]
+G_M35244_IG25: ; 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_IG26: ; 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, #1 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_IG27: ; bbWeight=0, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + ; gcrRegs +[x20]
ldr w21, [x0, #0x10] b G_M35244_IG07 ;; size=8 bbWeight=0 PerfScore 0.00 ...

+0 (0.00%) : 72628.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.59, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 ldr x3, [x3] blr x3 ; gcrRegs -[x0-x1 x19]
- ;; size=36 bbWeight=0.59 PerfScore 7.35 -G_M417_IG04: ; bbWeight=0.69, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc - ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30] - ldp fp, lr, [sp], #0x50 - ret lr - ;; size=16 bbWeight=0.69 PerfScore 2.76 -G_M417_IG05: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M417_IG07 + ;; size=40 bbWeight=0.59 PerfScore 7.94 +G_M417_IG04: ; bbWeight=0.10, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21] mov x22, x20 ; gcrRegs +[x22] ldr w0, [x20, #0x28] cmp w0, #2
- bne G_M417_IG07
+ bne G_M417_IG06
;; size=16 bbWeight=0.10 PerfScore 0.52
-G_M417_IG06: ; bbWeight=0.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.88
-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.82 -G_M417_IG08: ; bbWeight=0.41, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=0.10 PerfScore 0.72 +G_M417_IG07: ; bbWeight=0.69, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, epilog, nogc + ldp x21, x22, [sp, #0x40] + ldp x19, x20, [sp, #0x30] + ldp fp, lr, [sp], #0x50 + ret lr + ;; size=16 bbWeight=0.69 PerfScore 2.76 +G_M417_IG08: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19 x21] cmp w22, #17
- bhi G_M417_IG04
+ bhi G_M417_IG07
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -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 42.92, 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.41, 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.osx.arm64.checked.mch

+0 (0.00%) : 484033.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, #1 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%) : 319970.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, #1 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%) : 340438.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 ) 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, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { sub w21, w21, #1 mov x22, x20 ; gcrRegs +[x22]
- cbz x22, G_M35244_IG11
+ cbz x22, G_M35244_IG09
;; size=12 bbWeight=2 PerfScore 4.00 G_M35244_IG07: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldr x1, [x22] @@ -92,42 +92,31 @@ G_M35244_IG07: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- beq G_M35244_IG11
+ beq G_M35244_IG09
;; size=24 bbWeight=1 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, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz - cbnz x22, G_M35244_IG23
+G_M35244_IG09: ; bbWeight=2, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + cbnz x22, G_M35244_IG21
;; size=4 bbWeight=2 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, #1 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] @@ -141,44 +130,46 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=28 bbWeight=0.32 PerfScore 2.08
-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.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22]
+G_M35244_IG16: ; bbWeight=2.00, 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.00 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 @@ -189,11 +180,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] @@ -202,50 +193,51 @@ G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_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, #1 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 @@ -266,19 +258,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
...

+0 (0.00%) : 508471.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, #1 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%) : 474404.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, #1 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%) : 486132.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, #1 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, #1 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] @@ -141,44 +130,46 @@ G_M35244_IG14: ; bbWeight=0.32, gcrefRegs=180000 {x19 x20}, byrefRegs=000 mov x22, x0 ; gcrRegs +[x22] ;; size=28 bbWeight=0.32 PerfScore 2.08
-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 @@ -189,11 +180,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] @@ -202,50 +193,51 @@ G_M35244_IG21: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by movk x1, #1 LSL #32 ldr x1, [x1] ;; size=20 bbWeight=1 PerfScore 5.00
-G_M35244_IG22: ; bbWeight=1, epilog, nogc, extend
+G_M35244_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, #1 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 @@ -266,19 +258,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
...

libraries_tests.run.osx.arm64.Release.mch

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

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

-4 (-0.45%) : 388505.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, #2 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, #2 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, #2 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
...

+0 (0.00%) : 90233.dasm - Microsoft.CodeAnalysis.ArrayBuilderExtensions:SelectAsArraySystem.Canon,System.Canon:System.Collections.Immutable.ImmutableArray`1System.__Canon

@@ -5,7 +5,7 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4103
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4103
; 3 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -106,7 +106,7 @@ G_M57371_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcrRegs +[x0] ldr w22, [x0, #0x10] cmp w22, #1
- bne G_M57371_IG09
+ bne G_M57371_IG10
;; size=16 bbWeight=1 PerfScore 7.50 G_M57371_IG03: ; bbWeight=0.90, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -124,7 +124,7 @@ G_M57371_IG03: ; bbWeight=0.90, gcrefRegs=300000 {x20 x21}, byrefRegs=000 movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M57371_IG19
+ bne G_M57371_IG22
mov x1, x0 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -141,13 +141,23 @@ G_M57371_IG04: ; bbWeight=0.90, gcrefRegs=800000 {x23}, byrefRegs=0000 {} ldr x0, [x19, #0x38] ldr x1, [x0, #0x10] cmp x1, #64
- ble G_M57371_IG08
+ ble G_M57371_IG07
;; size=16 bbWeight=0.90 PerfScore 6.76 G_M57371_IG05: ; bbWeight=0.72, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref, isz ldr x0, [x0, #0x40]
- cbz x0, G_M57371_IG08
+ cbz x0, G_M57371_IG07
;; size=8 bbWeight=0.72 PerfScore 2.88
-G_M57371_IG06: ; bbWeight=0.90, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+G_M57371_IG06: ; bbWeight=0.58, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref + b G_M57371_IG08 + ;; size=4 bbWeight=0.58 PerfScore 0.58 +G_M57371_IG07: ; bbWeight=0.32, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_METHOD + ;; size=20 bbWeight=0.32 PerfScore 0.97 +G_M57371_IG08: ; bbWeight=0.90, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
mov x1, x23 ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for System.Collections.Immutable.ImmutableArray:Create[System.__Canon](System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon] @@ -157,7 +167,7 @@ G_M57371_IG06: ; bbWeight=0.90, gcrefRegs=800000 {x23}, byrefRegs=0000 {} blr x2 ; gcrRegs -[x1 x23] +[x0] ;; size=24 bbWeight=0.90 PerfScore 5.41
-G_M57371_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M57371_IG09: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x25, [sp, #0x58] ldp x23, x24, [sp, #0x48] ldp x21, x22, [sp, #0x38] @@ -165,19 +175,10 @@ G_M57371_IG07: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=1 PerfScore 7.00
-G_M57371_IG08: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x23] - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - b G_M57371_IG06 - ;; size=24 bbWeight=0.32 PerfScore 1.30 -G_M57371_IG09: ; bbWeight=0.10, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x23] +[x20-x21]
+G_M57371_IG10: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[x0] +[x20-x21]
cmp w22, #4
- bhi G_M57371_IG27
+ bhi G_M57371_IG30
mov w0, w22 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -185,7 +186,7 @@ G_M57371_IG09: ; bbWeight=0.10, gcrefRegs=300000 {x20 x21}, byrefRegs=000 add x1, x1, x2 br x1 ;; size=32 bbWeight=0.10 PerfScore 0.74
-G_M57371_IG10: ; bbWeight=0.08, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG11: ; bbWeight=0.08, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x20 ; gcrRegs +[x0] mov w1, wzr @@ -199,7 +200,7 @@ G_M57371_IG10: ; bbWeight=0.08, gcrefRegs=300000 {x20 x21}, byrefRegs=000 movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x1, x2
- bne G_M57371_IG20
+ bne G_M57371_IG23
mov x1, x0 ; gcrRegs +[x1] movz x0, #0xD1FFAB1E @@ -229,18 +230,28 @@ G_M57371_IG10: ; bbWeight=0.08, gcrefRegs=300000 {x20 x21}, byrefRegs=000 mov x23, x0 ; gcrRegs +[x23] ;; size=128 bbWeight=0.08 PerfScore 2.05
-G_M57371_IG11: ; bbWeight=0.08, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG12: ; bbWeight=0.08, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [x19, #0x38] ldr x1, [x0, #0x10] cmp x1, #56
- ble G_M57371_IG14
+ ble G_M57371_IG15
;; size=16 bbWeight=0.08 PerfScore 0.59
-G_M57371_IG12: ; bbWeight=0.06, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG13: ; bbWeight=0.06, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref, isz
ldr x0, [x0, #0x38]
- cbz x0, G_M57371_IG14
+ cbz x0, G_M57371_IG15
;; size=8 bbWeight=0.06 PerfScore 0.25
-G_M57371_IG13: ; bbWeight=0.08, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
+G_M57371_IG14: ; bbWeight=0.05, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref + b G_M57371_IG16 + ;; size=4 bbWeight=0.05 PerfScore 0.05 +G_M57371_IG15: ; bbWeight=0.03, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref + mov x0, x19 + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #1 LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_METHOD + ;; size=20 bbWeight=0.03 PerfScore 0.09 +G_M57371_IG16: ; bbWeight=0.08, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref
mov x1, x22 ; gcrRegs +[x1] mov x2, x23 @@ -251,48 +262,40 @@ G_M57371_IG13: ; bbWeight=0.08, gcrefRegs=C00000 {x22 x23}, byrefRegs=000 ldr x3, [x3] blr x3 ; gcrRegs -[x1-x2 x22-x23] +[x0]
- b G_M57371_IG07
+ b G_M57371_IG09
;; size=32 bbWeight=0.08 PerfScore 0.59
-G_M57371_IG14: ; bbWeight=0.03, gcrefRegs=C00000 {x22 x23}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] +[x22-x23]
+G_M57371_IG17: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0] + ldr x0, [x19, #0x38] + ldr x1, [x0, #0x10] + cmp x1, #72 + ble G_M57371_IG20 + ;; size=16 bbWeight=0.02 PerfScore 0.15 +G_M57371_IG18: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr x0, [x0, #0x48] + cbz x0, G_M57371_IG20 + ;; size=8 bbWeight=0.02 PerfScore 0.06 +G_M57371_IG19: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + b G_M57371_IG21 + ;; size=4 bbWeight=0.01 PerfScore 0.01 +G_M57371_IG20: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
- b G_M57371_IG13 - ;; size=24 bbWeight=0.03 PerfScore 0.11 -G_M57371_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22-x23] - ldr x0, [x19, #0x38] - ldr x1, [x0, #0x10] - cmp x1, #72 - ble G_M57371_IG18 - ;; size=16 bbWeight=0.02 PerfScore 0.15 -G_M57371_IG16: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr x0, [x0, #0x48] - cbz x0, G_M57371_IG18 - ;; size=8 bbWeight=0.02 PerfScore 0.06 -G_M57371_IG17: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=0.01 PerfScore 0.02 +G_M57371_IG21: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE ; byrRegs +[x0] ldr x0, [x0] ; gcrRegs +[x0] ; byrRegs -[x0] ldr x0, [x0, #0x08]
- b G_M57371_IG07
+ b G_M57371_IG09
;; size=16 bbWeight=0.02 PerfScore 0.16
-G_M57371_IG18: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x0] - mov x0, x19 - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_METHOD - b G_M57371_IG17 - ;; size=24 bbWeight=0.01 PerfScore 0.03 -G_M57371_IG19: ; bbWeight=0, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref - ; gcrRegs +[x0 x21]
+G_M57371_IG22: ; bbWeight=0, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref + ; gcrRegs +[x21]
mov x1, x0 ; gcrRegs +[x1] ldr x0, [x21, #0x08] @@ -303,7 +306,7 @@ G_M57371_IG19: ; bbWeight=0, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {} ; gcrRegs +[x23] b G_M57371_IG04 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M57371_IG20: ; bbWeight=0, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=0000 {}, byref
+G_M57371_IG23: ; bbWeight=0, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x23] +[x20-x21] mov x1, x0 ; gcrRegs +[x1] @@ -329,9 +332,9 @@ G_M57371_IG20: ; bbWeight=0, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=000 ; gcrRegs -[x1 x21] mov x23, x0 ; gcrRegs +[x23]
- b G_M57371_IG11
+ b G_M57371_IG12
;; size=72 bbWeight=0 PerfScore 0.00
-G_M57371_IG21: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M57371_IG24: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x22-x23] +[x20-x21] mov x0, x20 ; gcrRegs +[x0] @@ -368,12 +371,12 @@ G_M57371_IG21: ; bbWeight=0, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcrRegs -[x0] ldr x1, [x0, #0x10] cmp x1, #48
- ble G_M57371_IG22
+ ble G_M57371_IG25
ldr x24, [x0, #0x30]
- cbz x24, G_M57371_IG22 - b G_M57371_IG23
+ cbz x24, G_M57371_IG25 + b G_M57371_IG26
;; size=124 bbWeight=0 PerfScore 0.00
-G_M57371_IG22: ; bbWeight=0, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref
+G_M57371_IG25: ; bbWeight=0, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefRegs=0000 {}, byref
mov x0, x19 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -381,7 +384,7 @@ G_M57371_IG22: ; bbWeight=0, gcrefRegs=F00000 {x20 x21 x22 x23}, byrefReg bl CORINFO_HELP_RUNTIMEHANDLE_METHOD mov x24, x0 ;; size=24 bbWeight=0 PerfScore 0.00 ...

+0 (0.00%) : 592758.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AreNullableAnnotationsEnabled(Microsoft.CodeAnalysis.SyntaxTree,int):ubyte: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 228064
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 228064
; 8 inlinees with PGO data; 20 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; @@ -18,7 +18,7 @@ ;* V06 loc3 [V06 ] ( 0, 0 ) ubyte -> zero-ref ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V08 tmp1 [V08,T36] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V09 tmp2 [V09,T25] ( 3, 0.51) int -> x1
+; V09 tmp2 [V09,T25] ( 3, 0.51) int -> x19
; V10 tmp3 [V10,T29] ( 2, 0.30) ref -> x1 class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxTreeOptionsProvider> ;* V11 tmp4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken> ; V12 tmp5 [V12,T26] ( 3, 0.51) int -> x0 "guarded devirt return temp" @@ -113,17 +113,9 @@ G_M13949_IG02: ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {} ; gcrRegs +[x1] mov x21, x1 ; gcrRegs +[x21]
- cbz x21, G_M13949_IG04
+ cbnz x21, G_M13949_IG14
;; size=8 bbWeight=1 PerfScore 1.50
-G_M13949_IG03: ; bbWeight=0.50, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, byref, isz - ldr x0, [x21] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - cmp x0, x2 - bne G_M13949_IG36 - ;; size=24 bbWeight=0.50 PerfScore 3.00 -G_M13949_IG04: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M13949_IG03: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1] ldrsb wzr, [x21] add x22, x21, #72 @@ -135,35 +127,35 @@ G_M13949_IG04: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; gcrRegs +[x2] cbz x2, G_M13949_IG37 ;; size=28 bbWeight=1 PerfScore 9.00
-G_M13949_IG05: ; bbWeight=1, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=400000 {x22}, byref, isz
+G_M13949_IG04: ; bbWeight=1, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=400000 {x22}, byref, isz
ldapr w0, [x22] cmp w0, #2
- bne G_M13949_IG21
+ bne G_M13949_IG20
;; size=12 bbWeight=1 PerfScore 4.50
-G_M13949_IG06: ; bbWeight=0.98, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=400000 {x22}, byref
+G_M13949_IG05: ; bbWeight=0.98, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=400000 {x22}, byref
ldr x23, [x22, #0x08] ; gcrRegs +[x23] mov w0, #1 ;; size=8 bbWeight=0.98 PerfScore 3.44
-G_M13949_IG07: ; bbWeight=1, gcrefRegs=B00004 {x2 x20 x21 x23}, byrefRegs=400000 {x22}, byref, isz - cbz w0, G_M13949_IG19
+G_M13949_IG06: ; bbWeight=1, gcrefRegs=B00004 {x2 x20 x21 x23}, byrefRegs=400000 {x22}, byref, isz + cbz w0, G_M13949_IG29
;; size=4 bbWeight=1 PerfScore 1.00
-G_M13949_IG08: ; bbWeight=0.98, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M13949_IG07: ; bbWeight=0.98, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] ; byrRegs -[x22] mov x22, x23 ; gcrRegs +[x22] ;; size=4 bbWeight=0.98 PerfScore 0.49
-G_M13949_IG09: ; bbWeight=1.00, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M13949_IG08: ; bbWeight=1.00, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 ldr x5, [x0] ; gcrRegs +[x5]
- cbz x22, G_M13949_IG31
+ cbz x22, G_M13949_IG32
;; size=20 bbWeight=1.00 PerfScore 5.50
-G_M13949_IG10: ; bbWeight=1.00, gcrefRegs=700020 {x5 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M13949_IG09: ; bbWeight=1.00, gcrefRegs=700020 {x5 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w3, [x22, #0x08] ldr wzr, [x22, #0x08] movz x0, #0xD1FFAB1E @@ -188,12 +180,12 @@ G_M13949_IG10: ; bbWeight=1.00, gcrefRegs=700020 {x5 x20 x21 x22}, byrefR sub w1, w1, #1 cmp w0, #0 csel w0, w0, w1, ge
- tbnz w0, #31, G_M13949_IG26
+ tbnz w0, #31, G_M13949_IG25
;; size=88 bbWeight=1.00 PerfScore 25.06
-G_M13949_IG11: ; bbWeight=0.75, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M13949_IG10: ; bbWeight=0.75, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w1, [x22, #0x08] cmp w0, w1
- bhs G_M13949_IG35
+ bhs G_M13949_IG36
ubfiz x0, x0, #3, #32 add x0, x0, #16 add x0, x22, x0 @@ -201,28 +193,40 @@ G_M13949_IG11: ; bbWeight=0.75, gcrefRegs=700000 {x20 x21 x22}, byrefRegs ldr wzr, [x0] ldrb w19, [x0, #0x05] ;; size=32 bbWeight=0.75 PerfScore 9.39
-G_M13949_IG12: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M13949_IG11: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22] ; byrRegs -[x0] uxtb w1, w19 cmp w1, #2
- bne G_M13949_IG15
+ bne G_M13949_IG16
;; size=12 bbWeight=1 PerfScore 2.00
-G_M13949_IG13: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13949_IG12: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20-x21] mov w0, #1 ;; size=4 bbWeight=0.75 PerfScore 0.37
-G_M13949_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M13949_IG13: ; bbWeight=1, 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=1 PerfScore 6.00
-G_M13949_IG15: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x20-x21]
+G_M13949_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300002 {x1 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x1 x20-x21] + ldr x0, [x21] + movz x2, #0xD1FFAB1E + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + cmp x0, x2 + bne G_M13949_IG38 + ;; size=24 bbWeight=0.50 PerfScore 3.00 +G_M13949_IG15: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M13949_IG03 + ;; size=4 bbWeight=0.25 PerfScore 0.25 +G_M13949_IG16: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
cmp w1, #3
- bhi G_M13949_IG34
+ bhi G_M13949_IG35
mov w0, w1 adr x1, [@RWD00] ldr w1, [x1, x0, LSL #2] @@ -230,15 +234,15 @@ G_M13949_IG15: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=300 add x1, x1, x2 br x1 ;; size=32 bbWeight=0.25 PerfScore 1.90
-G_M13949_IG16: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M13949_IG17: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- bne G_M13949_IG22
+ bne G_M13949_IG21
;; size=24 bbWeight=0.25 PerfScore 1.52
-G_M13949_IG17: ; bbWeight=0.16, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M13949_IG18: ; bbWeight=0.16, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20, #0x10] ; gcrRegs +[x0] ldr x19, [x0] @@ -246,48 +250,26 @@ G_M13949_IG17: ; bbWeight=0.16, gcrefRegs=300000 {x20 x21}, byrefRegs=000 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x19, x1
- bne G_M13949_IG27
+ bne G_M13949_IG26
;; size=28 bbWeight=0.16 PerfScore 1.46
-G_M13949_IG18: ; bbWeight=0.07, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=0000 {}, byref
+G_M13949_IG19: ; bbWeight=0.07, gcrefRegs=300001 {x0 x20 x21}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Binder:AreNullableAnnotationsGloballyEnabled():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1 ; gcrRegs -[x0]
- b G_M13949_IG28
+ b G_M13949_IG27
;; size=24 bbWeight=0.07 PerfScore 0.44
-G_M13949_IG19: ; bbWeight=0.02, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=400000 {x22}, byref, isz
+G_M13949_IG20: ; bbWeight=0.02, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x2] ; byrRegs +[x22]
- ldr x0, [x2, #0x18] - movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree+<>c:<GetNullableContextStateMap>b__45_0(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree):Microsoft.CodeAnalysis.CSharp.Syntax.NullableContextStateMap:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - cmp x0, x1 - bne G_M13949_IG38 - ;; size=24 bbWeight=0.02 PerfScore 0.10 -G_M13949_IG20: ; bbWeight=0.02, gcrefRegs=300000 {x20 x21}, byrefRegs=400000 {x22}, byref - ; gcrRegs -[x2] - mov x0, x21 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for <unknown method> - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - mov x1, x0 - ; gcrRegs +[x1] - b G_M13949_IG30 - ;; size=32 bbWeight=0.02 PerfScore 0.13 -G_M13949_IG21: ; bbWeight=0.02, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=400000 {x22}, byref - ; gcrRegs -[x0-x1] +[x2]
mov w0, wzr mov x23, xzr ; gcrRegs +[x23]
- b G_M13949_IG07
+ b G_M13949_IG06
;; size=12 bbWeight=0.02 PerfScore 0.03
-G_M13949_IG22: ; bbWeight=0.09, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M13949_IG21: ; bbWeight=0.09, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2 x23] ; byrRegs -[x22] mov x0, x20 @@ -298,33 +280,33 @@ G_M13949_IG22: ; bbWeight=0.09, gcrefRegs=300000 {x20 x21}, byrefRegs=000 blr x1 ; gcrRegs -[x0] ;; size=20 bbWeight=0.09 PerfScore 0.96
-G_M13949_IG23: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz - cbnz w0, G_M13949_IG29
+G_M13949_IG22: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz + cbnz w0, G_M13949_IG28
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M13949_IG24: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13949_IG23: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x20-x21]
- mov w1, wzr
+ mov w19, wzr
;; size=4 bbWeight=0.18 PerfScore 0.09
-G_M13949_IG25: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - uxtb w0, w1 - b G_M13949_IG14
+G_M13949_IG24: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + uxtb w0, w19 + b G_M13949_IG13
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M13949_IG26: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M13949_IG25: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs +[x20-x21] mov w19, wzr
- b G_M13949_IG12
+ b G_M13949_IG11
;; size=8 bbWeight=0.25 PerfScore 0.37 ...

+0 (0.00%) : 276416.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier1)

@@ -32,26 +32,40 @@ G_M31052_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, csel w5, w5, w6, eq sub w0, w0, #1 cmp w0, #1
- bne G_M31052_IG08
+ bne G_M31052_IG04
;; size=28 bbWeight=1 PerfScore 4.00 G_M31052_IG03: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref orr w5, w5, #32
- ;; size=4 bbWeight=0.14 PerfScore 0.07 -G_M31052_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - sub w0, w1, #1 - cmp w0, #2
+ b G_M31052_IG06 + ;; size=8 bbWeight=0.14 PerfScore 0.22 +G_M31052_IG04: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp w0, #5
bhi G_M31052_IG06 mov w0, w0
- adr x1, [@RWD00]
+ adr x4, [@RWD00] + ldr w4, [x4, x0, LSL #2] + adr x6, [G_M31052_IG02] + add x4, x4, x6 + br x4 + ;; size=32 bbWeight=0.41 PerfScore 3.10 +G_M31052_IG05: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + orr w5, w5, #96 + ;; size=4 bbWeight=0.02 PerfScore 0.01 +G_M31052_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sub w0, w1, #1 + cmp w0, #2 + bhi G_M31052_IG08 + mov w0, w0 + adr x1, [@RWD24]
ldr w1, [x1, x0, LSL #2] adr x4, [G_M31052_IG02] add x1, x1, x4 br x1 ;; size=36 bbWeight=1 PerfScore 8.00
-G_M31052_IG05: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG07: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
orr w5, w5, #1 ;; size=4 bbWeight=0.44 PerfScore 0.22
-G_M31052_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
orr w0, w5, #16 tst w2, #16 csel w5, w5, w0, ne @@ -60,40 +74,26 @@ G_M31052_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref csel w5, w5, w0, eq mov w0, w5 ;; size=28 bbWeight=1 PerfScore 3.50
-G_M31052_IG07: ; bbWeight=1, epilog, nogc, extend
+G_M31052_IG09: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-G_M31052_IG08: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - cmp w0, #5 - bhi G_M31052_IG04 - mov w0, w0 - adr x4, [@RWD12] - ldr w4, [x4, x0, LSL #2] - adr x6, [G_M31052_IG02] - add x4, x4, x6 - br x4 - ;; size=32 bbWeight=0.41 PerfScore 3.10 -G_M31052_IG09: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31052_IG10: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
orr w5, w5, #2
- b G_M31052_IG06
+ b G_M31052_IG08
;; size=8 bbWeight=0.30 PerfScore 0.45
-G_M31052_IG10: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - orr w5, w5, #96 - b G_M31052_IG04 - ;; size=8 bbWeight=0.02 PerfScore 0.04 -RWD00 dd G_M31052_IG06 - G_M31052_IG02 - dd G_M31052_IG05 - G_M31052_IG02 - dd G_M31052_IG09 - G_M31052_IG02 -RWD12 dd G_M31052_IG10 - G_M31052_IG02
+RWD00 dd G_M31052_IG05 - G_M31052_IG02
dd G_M31052_IG03 - G_M31052_IG02
- dd G_M31052_IG04 - G_M31052_IG02
+ dd G_M31052_IG06 - G_M31052_IG02
dd G_M31052_IG03 - G_M31052_IG02
- dd G_M31052_IG04 - G_M31052_IG02
+ dd G_M31052_IG06 - G_M31052_IG02
dd G_M31052_IG03 - G_M31052_IG02
+RWD24 dd G_M31052_IG08 - G_M31052_IG02 + dd G_M31052_IG07 - G_M31052_IG02 + dd G_M31052_IG10 - G_M31052_IG02
-; Total bytes of code 164, prolog size 8, PerfScore 22.88, instruction count 41, allocated bytes for code 164 (MethodHash=393f86b3) for method Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier1)
+; Total bytes of code 164, prolog size 8, PerfScore 23.00, instruction count 41, allocated bytes for code 164 (MethodHash=393f86b3) for method Microsoft.Win32.SafeHandles.SafeFileHandle:PreOpenConfigurationFromOptions(int,int,int,int,ubyte):int (Tier1)
; ============================================================ Unwind Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.osx.arm64.checked.mch 6 1 0 5 -4 +0
benchmarks.run_tiered.osx.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.osx.arm64.checked.mch 11 0 0 11 -0 +0
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.osx.arm64.Release.mch 5 2 0 3 -16 +0
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 0 0 0 0 -0 +0
realworld.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
22 3 0 19 -20 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 25,053 4 25,049 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.osx.arm64.checked.mch 83,954 48,224 35,730 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,600 37,748 10,852 0 (0.00%) 0 (0.00%)
coreclr_tests.run.osx.arm64.checked.mch 587,982 360,346 227,636 0 (0.00%) 0 (0.00%)
libraries.crossgen2.osx.arm64.checked.mch 265,044 15 265,029 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 318,225 18 318,207 0 (0.00%) 0 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 632,615 465,983 166,632 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 300,370 21,535 278,835 0 (0.00%) 0 (0.00%)
realworld.run.osx.arm64.checked.mch 31,600 3 31,597 0 (0.00%) 0 (0.00%)
2,293,443 933,876 1,359,567 0 (0.00%) 0 (0.00%)

jit-analyze output

benchmarks.run_pgo.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34290048 (overridden on cmd)
Total bytes of diff: 34290044 (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 : 69487.dasm (-0.53 % of base)

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

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

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

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


coreclr_tests.run.osx.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

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

Detail diffs



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

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


libraries_tests.run.osx.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 313602060 (overridden on cmd)
Total bytes of diff: 313602044 (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):
         -12 : 386396.dasm (-0.46 % of base)
          -4 : 388505.dasm (-0.45 % of base)

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

Top method improvements (bytes):
         -12 (-0.46 % of base) : 386396.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.45 % of base) : 388505.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

Top method improvements (percentages):
         -12 (-0.46 % of base) : 386396.dasm - System.Xml.Xsl.Runtime.XmlQueryRuntime:ChangeTypeXsltResult(System.Xml.Xsl.XmlQueryType,System.Object):System.Object:this (Tier1)
          -4 (-0.45 % of base) : 388505.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (Tier1)

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