Assembly Diffs

linux arm64

Diffs are based on 2,259,462 contexts (1,008,044 MinOpts, 1,251,418 FullOpts).

MISSED contexts: base: 159 (0.01%), diff: 160 (0.01%)

Overall (+42,496 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 14,972,060 +136
coreclr_tests.run.linux.arm64.checked.mch 509,739,552 +15,164
libraries.pmi.linux.arm64.checked.mch 76,280,108 +252
libraries_tests.run.linux.arm64.Release.mch 400,018,564 +26,788
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 165,109,668 +12
realworld.run.linux.arm64.checked.mch 15,918,288 +144

FullOpts (+42,496 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 14,712,308 +136
coreclr_tests.run.linux.arm64.checked.mch 160,831,696 +15,164
libraries.pmi.linux.arm64.checked.mch 76,160,124 +252
libraries_tests.run.linux.arm64.Release.mch 183,279,660 +26,788
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 151,612,392 +12
realworld.run.linux.arm64.checked.mch 15,336,748 +144

Example diffs

benchmarks.run.linux.arm64.checked.mch

+64 (+1.92%) : 2623.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 37 single block inlinees; 58 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> x19 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> x19 this single-def
; V01 arg1 [V01,T35] ( 7, 11.50) ref -> x21 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T26] ( 5, 15 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T72] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0x9C] -; V07 loc3 [V07,T06] ( 12, 62 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x9C] +; V07 loc3 [V07,T06] ( 15, 62 ) int -> x28
; V08 loc4 [V08,T25] ( 5, 18 ) ubyte -> [fp+0x98] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T08] ( 7, 48 ) int -> [fp+0x94] @@ -225,8 +225,8 @@ ; V214 cse3 [V214,T78] ( 3, 6 ) int -> x1 "CSE - conservative" ; V215 cse4 [V215,T79] ( 3, 6 ) int -> x1 "CSE - conservative" ; V216 cse5 [V216,T91] ( 3, 1.50) int -> x2 "CSE - conservative"
-; V217 cse6 [V217,T02] ( 18,142 ) int -> x26 "CSE - aggressive" -; V218 cse7 [V218,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V217 cse6 [V217,T03] ( 19,126.16) int -> x26 "CSE - aggressive" +; V218 cse7 [V218,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V219 cse8 [V219,T07] ( 21, 58 ) int -> x26 "CSE - aggressive" ; V220 cse9 [V220,T05] ( 35, 65.50) ref -> registers multi-def "CSE - aggressive" ; V221 cse10 [V221,T13] ( 11, 29 ) byref -> [fp+0x18] multi-def "CSE - aggressive" @@ -253,7 +253,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG82
+ cbz x20, G_M36935_IG85
cbnz x21, G_M36935_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref @@ -293,7 +293,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcrRegs -[x0] ldr w26, [x20, #0x08] cmp w26, w25
- bls G_M36935_IG77
+ bls G_M36935_IG80
;; size=12 bbWeight=8 PerfScore 36.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz add x27, x20, #12 @@ -342,10 +342,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ; gcr arg pop 0 sxtw w2, w0 str w2, [fp, #0x90] // [V15 loc11]
- tbnz w2, #31, G_M36935_IG78
+ tbnz w2, #31, G_M36935_IG81
ldr w3, [fp, #0x68] // [V154 tmp133] cmp w2, w3
- bhi G_M36935_IG89
+ bhi G_M36935_IG92
ldr w0, [x19, #0x08] ldr w1, [x19, #0x18] sub w1, w1, w2 @@ -375,7 +375,7 @@ G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w1, [x19, #0x08] ldr w4, [x0, #0x08] cmp w1, w4
- bhi G_M36935_IG89
+ bhi G_M36935_IG92
ldr x0, [x0] ubfiz x5, x1, #1, #32 add x5, x0, x5 @@ -410,7 +410,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=00000000000000000000000020002000 {V70 G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480020 {x5 x19 x22 x27 x28}, byref, isz ldr w4, [fp, #0x80] // [V69 tmp48] cmp w2, w4
- bhi G_M36935_IG90
+ bhi G_M36935_IG93
mov w0, w2 lsl x2, x0, #1 mov x0, x5 @@ -431,11 +431,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 str w0, [x19, #0x08] add w25, w25, w28 cmp w25, w26
- bhs G_M36935_IG81
+ bhs G_M36935_IG84
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M36935_IG18 @@ -483,7 +483,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V22 ; byrRegs +[x27] ; GC ptr vars +{V13 V221} cmp w28, #123
- bne G_M36935_IG83
+ bne G_M36935_IG86
mov w28, wzr str wzr, [fp, #0x98] // [V08 loc4] str xzr, [fp, #0x20] // [V145 tmp124] @@ -491,7 +491,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V22 str wzr, [fp, #0x6C] // [V146 tmp125] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG81
+ bhs G_M36935_IG84
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 beq G_M36935_IG20 @@ -540,10 +540,10 @@ G_M36935_IG22: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 ldr w2, [fp, #0x9C] // [V06 loc2] sub w6, w2, #48 cmp w6, #10
- bhs G_M36935_IG84
+ bhs G_M36935_IG87
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #125 beq G_M36935_IG24 @@ -554,7 +554,7 @@ G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 G_M36935_IG24: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref ldr x4, [fp, #0x20] // [V145 tmp124] ; byrRegs +[x4]
- b G_M36935_IG41
+ b G_M36935_IG44
;; size=8 bbWeight=2 PerfScore 6.00 G_M36935_IG25: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz ; byrRegs -[x4] @@ -564,7 +564,7 @@ G_M36935_IG25: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 str w6, [fp, #0x94] // [V10 loc6] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] ldr w6, [fp, #0x94] // [V10 loc6] ;; size=36 bbWeight=8 PerfScore 88.00 @@ -583,19 +583,19 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 G_M36935_IG28: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32 beq G_M36935_IG28 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG29: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #44
- bne G_M36935_IG37
+ bne G_M36935_IG40
;; size=8 bbWeight=2 PerfScore 3.00 G_M36935_IG30: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32 beq G_M36935_IG30 @@ -607,29 +607,28 @@ G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 str w3, [fp, #0x98] // [V08 loc4] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] ;; size=32 bbWeight=2 PerfScore 16.00 G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz sub w28, w2, #48 cmp w28, #10
- bhs G_M36935_IG84
+ bhs G_M36935_IG87
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88 + tbnz w25, #31, G_M36935_IG37
b G_M36935_IG34
- ;; size=28 bbWeight=2 PerfScore 10.00 -G_M36935_IG33: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=32 bbWeight=2 PerfScore 12.00 +G_M36935_IG33: ; bbWeight=7.92, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
mov w0, #10 madd w2, w28, w0, w2 sub w28, w2, #48 add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85 - ;; size=24 bbWeight=8 PerfScore 40.00 -G_M36935_IG34: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - cmp w25, w26 - bhs G_M36935_IG81
+ bls G_M36935_IG88 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M36935_IG34: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
ldrh w2, [x27, w25, UXTW #2] sub w0, w2, #48 movz w1, #0xD1FFAB1E @@ -637,42 +636,64 @@ G_M36935_IG34: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs= cmp w0, #9 ccmp w28, w1, z, ls blt G_M36935_IG33
- ;; size=36 bbWeight=16 PerfScore 128.00 -G_M36935_IG35: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - cmp w2, #32 - bne G_M36935_IG37 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M36935_IG36: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=28 bbWeight=15.84 PerfScore 102.96 +G_M36935_IG35: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref + b G_M36935_IG38 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M36935_IG36: ; bbWeight=0.08, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + mov w0, #10 + madd w2, w28, w0, w2 + sub w28, w2, #48
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88 + ;; size=24 bbWeight=0.08 PerfScore 0.40 +G_M36935_IG37: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + cmp w25, w26 + bhs G_M36935_IG84 + ldrh w2, [x27, w25, UXTW #2] + sub w0, w2, #48 + movz w1, #0xD1FFAB1E + movk w1, #15 LSL #16 + cmp w0, #9 + ccmp w28, w1, z, ls + blt G_M36935_IG36 + ;; size=36 bbWeight=0.16 PerfScore 1.28 +G_M36935_IG38: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + cmp w2, #32 + bne G_M36935_IG40 + ;; size=8 bbWeight=2 PerfScore 3.00 +G_M36935_IG39: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + add w25, w25, #1 + cmp w26, w25 + bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32
- beq G_M36935_IG36
+ beq G_M36935_IG39
...

+72 (+2.66%) : 4878.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T32] ( 5, 15 ) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T61] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 61, 455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [fp+0x6C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [fp+0x68]
+; V05 loc1 [V05,T02] ( 66, 441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [fp+0x6C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [fp+0x68]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [fp+0x64] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [fp+0x60] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def ; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T43] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>> @@ -160,8 +160,8 @@ ; V149 cse3 [V149,T45] ( 3, 12 ) ref -> x4 "CSE - moderate" ; V150 cse4 [V150,T47] ( 3, 12 ) int -> x1 "CSE - moderate" ; V151 cse5 [V151,T03] ( 6, 416 ) int -> [fp+0x3C] spill-single-def "CSE - aggressive"
-; V152 cse6 [V152,T11] ( 18, 142 ) int -> x26 "CSE - aggressive" -; V153 cse7 [V153,T12] ( 15, 120 ) byref -> x27 "CSE - aggressive"
+; V152 cse6 [V152,T11] ( 19, 126.16) int -> x26 "CSE - aggressive" +; V153 cse7 [V153,T12] ( 16, 120 ) byref -> x27 "CSE - aggressive"
; V154 cse8 [V154,T48] ( 3, 12 ) int -> x0 "CSE - moderate" ; ; Lcl frame size = 96 @@ -185,7 +185,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG63
+ cbz x21, G_M4730_IG67
cbnz x20, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -225,7 +225,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcrRegs -[x0] ldr w26, [x21, #0x08] cmp w26, w25
- bls G_M4730_IG58
+ bls G_M4730_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz add x27, x21, #12 @@ -259,10 +259,10 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x5C] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG60
+ tbnz w1, #31, G_M4730_IG64
ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2
- bhi G_M4730_IG74
+ bhi G_M4730_IG78
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -287,11 +287,11 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w28, [fp, #0x5C] // [V15 loc11] add w25, w25, w28 cmp w25, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66
+ bls G_M4730_IG70
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M4730_IG11 @@ -333,7 +333,7 @@ G_M4730_IG10: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz ; byrRegs +[x27] cmp w28, #123
- bne G_M4730_IG64
+ bne G_M4730_IG68
str w2, [fp, #0x6C] // [V06 loc2] mov w28, wzr str wzr, [fp, #0x64] // [V08 loc4] @@ -342,7 +342,7 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg str wzr, [fp, #0x44] // [V90 tmp68] sub w0, w25, #1 cmp w0, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -361,188 +361,212 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0x6C] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M4730_IG65
+ ldr w1, [fp, #0x6C] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M4730_IG13 ;; size=144 bbWeight=4 PerfScore 146.00 G_M4730_IG12: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref b G_M4730_IG15 ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG13: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- str w1, [fp, #0x60] // [V10 loc6] - b G_M4730_IG30
+ str w2, [fp, #0x60] // [V10 loc6] + b G_M4730_IG34
;; size=8 bbWeight=2 PerfScore 4.00 G_M4730_IG14: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0x60] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0x60] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0x60] // [V10 loc6]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0x60] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M4730_IG15: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M4730_IG14 ;; size=24 bbWeight=16 PerfScore 56.00 G_M4730_IG16: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M4730_IG18 ;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG17: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG17 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M4730_IG26
+ cmp w1, #44 + mov w3, w1 + bne G_M4730_IG22
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG19: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M4730_IG21
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0x64] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M4730_IG21: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M4730_IG65
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - b G_M4730_IG23 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M4730_IG22: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0x68] // [V07 loc3]
+ bls G_M4730_IG70 + tbnz w25, #31, G_M4730_IG27 + b G_M4730_IG24 + ;; size=32 bbWeight=2 PerfScore 12.00 +G_M4730_IG22: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref + mov w1, w28 + b G_M4730_IG30 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M4730_IG23: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz + mov w0, #10 + madd w1, w1, w0, w3 + sub w1, w1, #48
add w25, w25, #1 cmp w26, w25
- ldr w2, [fp, #0x68] // [V07 loc3] - bls G_M4730_IG66 - ;; size=32 bbWeight=8 PerfScore 64.00 -G_M4730_IG23: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - cmp w25, w26 - bhs G_M4730_IG62
+ bls G_M4730_IG70 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
ldrh w0, [x27, w25, UXTW #2]
- sub w3, w0, #48
...

coreclr_tests.run.linux.arm64.checked.mch

+64 (+1.69%) : 307259.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T39] ( 6, 13 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T70] ( 3, 5 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T08] ( 62, 98 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T14] ( 31, 37 ) ushort -> [fp+0xEC] -; V07 loc3 [V07,T55] ( 12, 8 ) int -> [fp+0xE8]
+; V05 loc1 [V05,T08] ( 67, 98 ) int -> x25 ld-addr-op +; V06 loc2 [V06,T14] ( 34, 37 ) ushort -> [fp+0xEC] +; V07 loc3 [V07,T55] ( 15, 8 ) int -> [fp+0xE8]
; V08 loc4 [V08,T40] ( 5, 12 ) ubyte -> [fp+0xE4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T35] ( 7, 16 ) int -> [fp+0xE0] @@ -283,8 +283,8 @@ ; V271 cse2 [V271,T43] ( 3, 12 ) int -> x5 "CSE - moderate" ; V272 cse3 [V272,T78] ( 3, 3 ) int -> x2 "CSE - conservative" ; V273 cse4 [V273,T02] ( 35,530.54) ref -> registers multi-def "CSE - aggressive"
-; V274 cse5 [V274,T13] ( 20, 39 ) int -> x27 "CSE - aggressive" -; V275 cse6 [V275,T16] ( 15, 34 ) byref -> x28 "CSE - moderate"
+; V274 cse5 [V274,T13] ( 21, 39 ) int -> x27 "CSE - aggressive" +; V275 cse6 [V275,T16] ( 16, 34 ) byref -> x28 "CSE - moderate"
; V276 cse7 [V276,T44] ( 3, 12 ) int -> x0 "CSE - moderate" ; V277 rat0 [V277,T22] ( 5, 29 ) ref -> x2 class-hnd "replacement local" <System.ISpanFormattable> ; @@ -335,7 +335,7 @@ G_M36935_IG03: ; bbWeight=1, gcrefRegs=900002 {x1 x20 x23}, byrefRegs=280 G_M36935_IG04: ; bbWeight=5, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, byref, isz ldr w27, [x20, #0x08] cmp w27, w25
- bls G_M36935_IG107
+ bls G_M36935_IG109
;; size=12 bbWeight=5 PerfScore 22.50 G_M36935_IG05: ; bbWeight=5, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, byref, isz add x28, x20, #12 @@ -596,15 +596,15 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRe ; gcrRegs +[x3] str x3, [fp, #0x78] // [V13 loc9] ; GC ptr vars +{V13}
- cbnz x24, G_M36935_IG92
+ cbnz x24, G_M36935_IG94
;; size=36 bbWeight=4 PerfScore 40.00 G_M36935_IG22: ; bbWeight=4, gcVars=00000000000000004020000000000000 {V13 V184}, gcrefRegs=1D900008 {x3 x20 x23 x24 x26 x27 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
- cbnz x27, G_M36935_IG100
+ cbnz x27, G_M36935_IG102
ldr w27, [fp, #0xE4] // [V08 loc4] ; gcrRegs -[x27] cbnz w27, G_M36935_IG23 ldr w4, [fp, #0xE8] // [V07 loc3]
- cbnz w4, G_M36935_IG95
+ cbnz w4, G_M36935_IG97
;; size=20 bbWeight=4 PerfScore 28.00 G_M36935_IG23: ; bbWeight=4, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref, isz mov x2, x3 @@ -622,7 +622,7 @@ G_M36935_IG24: ; bbWeight=2, gcrefRegs=1590000C {x2 x3 x20 x23 x24 x26 x2 G_M36935_IG25: ; bbWeight=4, gcrefRegs=1590000C {x2 x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref, isz str x2, [fp, #0x70] // [V18 loc14] ; GC ptr vars +{V18}
- cbz x2, G_M36935_IG95
+ cbz x2, G_M36935_IG97
add x0, x19, #16 ; byrRegs +[x0] ldr w1, [x19, #0x08] @@ -1000,12 +1000,12 @@ G_M36935_IG57: ; bbWeight=4, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, by str w6, [fp, #0x88] // [V185 tmp164] ldr x3, [fp, #0x78] // [V13 loc9] ; gcrRegs +[x3]
- cbz w0, G_M36935_IG95
+ cbz w0, G_M36935_IG97
ldr w0, [x19, #0x08] ldr w1, [fp, #0xD0] // [V19 loc15] add w0, w0, w1 str w0, [x19, #0x08]
- cbnz w27, G_M36935_IG94
+ cbnz w27, G_M36935_IG96
b G_M36935_IG04 ;; size=36 bbWeight=4 PerfScore 50.00 G_M36935_IG58: ; bbWeight=0.00, gcVars=00000000000001004020000000000000 {V13 V184 V190}, gcrefRegs=15900001 {x0 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref @@ -1102,7 +1102,7 @@ G_M36935_IG61: ; bbWeight=1, gcVars=00000000000000000000000400000000 {V19 ldr w28, [fp, #0x80] // [V193 tmp172] sub w1, w1, w28 cmp w0, w1
- bgt G_M36935_IG108
+ bgt G_M36935_IG110
;; size=24 bbWeight=1 PerfScore 10.00 G_M36935_IG62: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz add x0, x19, #16 @@ -1153,7 +1153,7 @@ G_M36935_IG65: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, ldr w0, [x19, #0x08] add w0, w0, w28 str w0, [x19, #0x08]
- b G_M36935_IG107
+ b G_M36935_IG109
;; size=16 bbWeight=1 PerfScore 5.50 G_M36935_IG66: ; bbWeight=0.01, gcVars=00000000000000004020000000000000 {V13 V184}, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280002 {x1 x19 x21}, gcvars, byref ; gcrRegs +[x20 x23-x24 x26 x28] @@ -1429,10 +1429,30 @@ G_M36935_IG87: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRe bhs G_M36935_IG70 add w25, w25, #1 cmp w27, w25
- bhi G_M36935_IG89 - b G_M36935_IG71 - ;; size=28 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG71 + tbnz w25, #31, G_M36935_IG91 + b G_M36935_IG89 + ;; size=32 bbWeight=0 PerfScore 0.00
G_M36935_IG88: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+ mov w0, #10 + madd w4, w4, w0, w2 + sub w4, w4, #48 + add w25, w25, #1 + cmp w27, w25 + bls G_M36935_IG71 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG89: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz + ldrh w2, [x28, w25, UXTW #2] + sub w0, w2, #48 + cmp w0, #9 + bhi G_M36935_IG93 + movz w0, #0xD1FFAB1E + movk w0, #15 LSL #16 + cmp w4, w0 + blt G_M36935_IG88 + b G_M36935_IG93 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M36935_IG90: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
mov w0, #10 madd w4, w4, w0, w2 sub w4, w4, #48 @@ -1442,37 +1462,37 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRe ldr w4, [fp, #0xE8] // [V07 loc3] bls G_M36935_IG71 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M36935_IG89: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+G_M36935_IG91: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
cmp w25, w27 bhs G_M36935_IG76 ldrh w2, [x28, w25, UXTW #2] sub w0, w2, #48 cmp w0, #9
- bhi G_M36935_IG91
+ bhi G_M36935_IG93
movz w0, #0xD1FFAB1E movk w0, #15 LSL #16 cmp w4, w0
- blt G_M36935_IG88 - b G_M36935_IG91
+ blt G_M36935_IG90 + b G_M36935_IG93
;; size=44 bbWeight=0 PerfScore 0.00
-G_M36935_IG90: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+G_M36935_IG92: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
add w25, w25, #1 cmp w27, w25 bls G_M36935_IG71 ldrh w2, [x28, w25, UXTW #2] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG91: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+G_M36935_IG93: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
cmp w2, #32
- beq G_M36935_IG90
+ beq G_M36935_IG92
str w4, [fp, #0xE8] // [V07 loc3] b G_M36935_IG49 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG92: ; bbWeight=0, gcVars=00000000000000004020000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG94: ; bbWeight=0, gcVars=00000000000000004020000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
; gcrRegs +[x3 x28] ; byrRegs -[x28] ; GC ptr vars +{V13 V53} ldr w27, [fp, #0x88] // [V185 tmp164]
- cbz w27, G_M36935_IG93
+ cbz w27, G_M36935_IG95
ldr x0, [fp, #0x30] // [V184 tmp163] ; byrRegs +[x0] mov w1, w27 @@ -1483,7 +1503,7 @@ G_M36935_IG92: ; bbWeight=0, gcVars=00000000000000004020000000000000 {V13 mov x28, x0 ; gcrRegs +[x28] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG93: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
+G_M36935_IG95: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
; gcrRegs -[x0] mov x0, x24 ; gcrRegs +[x0] @@ -1508,7 +1528,7 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, by ldr x3, [fp, #0x78] // [V13 loc9] b G_M36935_IG22 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M36935_IG94: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG96: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
; gcrRegs -[x0 x3 x27-x28] ; GC ptr vars -{V13 V53 V184} ldr w2, [fp, #0xD0] // [V19 loc15] @@ -1529,7 +1549,7 @@ G_M36935_IG94: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcr arg pop 0 b G_M36935_IG04 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000004020000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000004020000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
; gcrRegs +[x3 x28] ; GC ptr vars +{V13 V53 V184} mov x1, x3 @@ -1544,11 +1564,11 @@ G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000004020000000000000 {V13 ; gcrRegs +[x2] str x2, [fp, #0x68] // [V20 loc16] ; GC ptr vars +{V20}
- cbz x2, G_M36935_IG97
+ cbz x2, G_M36935_IG99
ldr x2, [fp, #0x68] // [V20 loc16] ldr w3, [fp, #0x88] // [V185 tmp164]
- cbz w3, G_M36935_IG96 - cbnz x28, G_M36935_IG96
+ cbz w3, G_M36935_IG98 + cbnz x28, G_M36935_IG98
ldr x0, [fp, #0x30] // [V184 tmp163] ; gcrRegs -[x0] ; byrRegs +[x0] @@ -1563,7 +1583,7 @@ G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000004020000000000000 {V13 ldr x2, [fp, #0x68] // [V20 loc16] ; gcrRegs +[x2] ;; size=68 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=15900004 {x2 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=15900004 {x2 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
; gcrRegs -[x0] mov x0, x2 ; gcrRegs +[x0] @@ -1580,18 +1600,18 @@ G_M36935_IG96: ; bbWeight=0, gcrefRegs=15900004 {x2 x20 x23 x24 x26 x28}, ; gcr arg pop 0 mov x28, x0 ; gcrRegs +[x28]
- b G_M36935_IG99
+ b G_M36935_IG101
;; size=40 bbWeight=0 PerfScore 0.00
-G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000000020000000000000 {V13}, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG99: ; bbWeight=0, gcVars=00000000000000000020000000000000 {V13}, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
; gcrRegs -[x0 x28] ; GC ptr vars +{V13 V53} ldr x28, [fp, #0x78] // [V13 loc9] ; gcrRegs +[x28]
- cbnz x28, G_M36935_IG98
+ cbnz x28, G_M36935_IG100
mov x28, xzr
- b G_M36935_IG99
+ b G_M36935_IG101
;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
+G_M36935_IG100: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
mov x0, x28 ; gcrRegs +[x0] ldr x1, [x28] ...

+64 (+1.72%) : 249921.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,14 +14,14 @@ ; V02 arg2 [V02,T15] ( 5, 7.82) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T58] ( 3, 2.65) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T03] ( 61, 59.90) int -> x25 ld-addr-op -; V06 loc2 [V06,T06] ( 32, 29.87) ushort -> registers -; V07 loc3 [V07,T29] ( 12, 5.69) int -> [fp+0x8C]
+; V05 loc1 [V05,T03] ( 66, 59.75) int -> x25 ld-addr-op +; V06 loc2 [V06,T06] ( 35, 29.87) ushort -> registers +; V07 loc3 [V07,T29] ( 15, 5.69) int -> [fp+0x8C]
; V08 loc4 [V08,T41] ( 5, 4.28) ubyte -> [fp+0x88] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T22] ( 7, 6.61) int -> x28 ; V11 loc7 [V11,T21] ( 14, 7.25) ref -> registers class-hnd <System.String>
-; V12 loc8 [V12,T61] ( 7, 2.12) ref -> x27 class-hnd <System.String>
+; V12 loc8 [V12,T61] ( 7, 2.12) ref -> x26 class-hnd <System.String>
; V13 loc9 [V13,T26] ( 10, 6.53) ref -> x28 class-hnd <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T07] ( 9, 25.81) int -> [fp+0x84] spill-single-def @@ -33,7 +33,7 @@ ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V22 tmp1 [V22,T65] ( 3, 2 ) ref -> x1 ;* V23 tmp2 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp3 [V24,T71] ( 3, 1.66) ref -> x27
+; V24 tmp3 [V24,T71] ( 3, 1.66) ref -> x26
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V26 tmp5 [V26,T77] ( 3, 1.38) ref -> x1 "guarded devirt return temp" ;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp" @@ -69,7 +69,7 @@ ; V57 tmp36 [V57,T51] ( 3, 3.11) byref -> x0 single-def "Inlining Arg" ;* V58 tmp37 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V59 tmp38 [V59,T52] ( 3, 3.11) int -> x26 "Inlining Arg"
-; V60 tmp39 [V60,T62] ( 3, 2.07) byref -> x27 single-def "Inlining Arg"
+; V60 tmp39 [V60,T62] ( 3, 2.07) byref -> x25 single-def "Inlining Arg"
;* V61 tmp40 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V62 tmp41 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V63 tmp42 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -242,9 +242,9 @@ ; V230 cse5 [V230,T89] ( 3, 0.93) long -> x3 "CSE - conservative" ; V231 cse6 [V231,T90] ( 3, 0.93) int -> x28 "CSE - conservative" ; V232 cse7 [V232,T02] ( 35,148.82) ref -> registers multi-def "CSE - aggressive"
-; V233 cse8 [V233,T08] ( 18, 22.34) int -> x26 "CSE - aggressive" -; V234 cse9 [V234,T09] ( 15, 20.54) byref -> x27 "CSE - aggressive" -; V235 cse10 [V235,T12] ( 16, 10.83) int -> x27 "CSE - moderate"
+; V233 cse8 [V233,T08] ( 19, 21.88) int -> x26 "CSE - aggressive" +; V234 cse9 [V234,T09] ( 16, 20.54) byref -> x27 "CSE - aggressive" +; V235 cse10 [V235,T12] ( 16, 10.83) int -> x26 "CSE - moderate"
; V236 cse11 [V236,T34] ( 3, 4.96) int -> x0 "CSE - moderate" ; V237 rat0 [V237,T20] ( 6, 7.88) ref -> registers class-hnd "replacement local" <System.IFormattable> ; @@ -269,7 +269,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG110
+ cbz x20, G_M36935_IG114
cbz x21, G_M36935_IG16 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.69, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz @@ -278,7 +278,7 @@ G_M36935_IG03: ; bbWeight=0.69, gcrefRegs=300000 {x20 x21}, byrefRegs=480 movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- bne G_M36935_IG111
+ bne G_M36935_IG115
mov x1, xzr ; gcrRegs +[x1] ;; size=28 bbWeight=0.69 PerfScore 4.48 @@ -301,7 +301,7 @@ G_M36935_IG05: ; bbWeight=2.65, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ; gcrRegs -[x0] ldr w26, [x20, #0x08] cmp w26, w25
- bls G_M36935_IG97
+ bls G_M36935_IG101
;; size=12 bbWeight=2.65 PerfScore 11.93 G_M36935_IG06: ; bbWeight=2.17, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz add x27, x20, #12 @@ -349,19 +349,19 @@ G_M36935_IG08: ; bbWeight=2.17, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ; gcr arg pop 0 sxtw w2, w0 str w2, [fp, #0x84] // [V15 loc11]
- tbnz w2, #31, G_M36935_IG92
+ tbnz w2, #31, G_M36935_IG96
;; size=56 bbWeight=2.17 PerfScore 28.21 G_M36935_IG09: ; bbWeight=1.65, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz ldr w3, [fp, #0x58] // [V166 tmp145] cmp w2, w3
- bhi G_M36935_IG107
+ bhi G_M36935_IG111
;; size=12 bbWeight=1.65 PerfScore 5.78 G_M36935_IG10: ; bbWeight=13.21, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz ldr w0, [x19, #0x08] ldr w1, [x19, #0x18] sub w1, w1, w2 cmp w0, w1
- bgt G_M36935_IG112
+ bgt G_M36935_IG116
;; size=20 bbWeight=13.21 PerfScore 105.72 G_M36935_IG11: ; bbWeight=1.65, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz add x0, x19, #16 @@ -369,7 +369,7 @@ G_M36935_IG11: ; bbWeight=1.65, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w1, [x19, #0x08] ldr w3, [x0, #0x08] cmp w1, w3
- bhi G_M36935_IG107
+ bhi G_M36935_IG111
ldr x0, [x0] ubfiz x4, x1, #1, #32 add x4, x0, x4 @@ -402,7 +402,7 @@ G_M36935_IG13: ; bbWeight=1.65, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w3, [fp, #0x84] // [V15 loc11] ldr w0, [fp, #0x70] // [V78 tmp57] cmp w3, w0
- bhi G_M36935_IG108
+ bhi G_M36935_IG112
;; size=16 bbWeight=1.65 PerfScore 9.09 G_M36935_IG14: ; bbWeight=1.65, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz mov w0, w3 @@ -427,18 +427,18 @@ G_M36935_IG16: ; bbWeight=0.31, gcVars=00000000000000000000000000000000 { ; gcrRegs +[x1] b G_M36935_IG04 ;; size=8 bbWeight=0.31 PerfScore 0.47
-G_M36935_IG17: ; bbWeight=0.31, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref, isz - ; gcrRegs -[x1] +[x24 x26] - sub w28, w2, w27
+G_M36935_IG17: ; bbWeight=0.31, gcrefRegs=9300000 {x20 x21 x24 x27}, byrefRegs=480000 {x19 x22}, byref, isz + ; gcrRegs -[x1] +[x24 x27] + sub w28, w2, w26
ldr w0, [x19, #0x08] ldr w1, [x19, #0x18] sub w1, w1, w28 cmp w0, w1
- ble G_M36935_IG75 - b G_M36935_IG69
+ ble G_M36935_IG79 + b G_M36935_IG73
;; size=28 bbWeight=0.31 PerfScore 2.96 G_M36935_IG18: ; bbWeight=0.83, gcVars=00000000000000000000000000800000 {V79}, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, gcvars, byref
- ; gcrRegs -[x26]
+ ; gcrRegs -[x27]
; byrRegs +[x27-x28] ; GC ptr vars +{V79} ldr x0, [fp, #0x40] // [V79 tmp58] @@ -461,25 +461,25 @@ G_M36935_IG19: ; bbWeight=1.65, gcrefRegs=1300000 {x20 x21 x24}, byrefReg str w0, [x19, #0x08] add w25, w25, w3 cmp w25, w26
- bhs G_M36935_IG109
+ bhs G_M36935_IG113
ldrh w0, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG103
+ bls G_M36935_IG107
;; size=44 bbWeight=1.65 PerfScore 22.30 G_M36935_IG20: ; bbWeight=1.65, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz ldrh w28, [x27, w25, UXTW #2] cmp w0, w28
- beq G_M36935_IG113
+ beq G_M36935_IG117
cmp w0, #123
- bne G_M36935_IG101
+ bne G_M36935_IG105
str xzr, [fp, #0x88] str xzr, [fp, #0x10] // [V157 tmp136] ; GC ptr vars +{V157} str wzr, [fp, #0x5C] // [V158 tmp137] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG109
+ bhs G_M36935_IG113
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 beq G_M36935_IG22 @@ -526,23 +526,23 @@ G_M36935_IG23: ; bbWeight=6.61, gcrefRegs=1300000 {x20 x21 x24}, byrefReg G_M36935_IG24: ; bbWeight=1.65, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz sub w28, w28, #48 cmp w28, #10
- bhs G_M36935_IG102
+ bhs G_M36935_IG106
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG103
+ bls G_M36935_IG107
ldrh w0, [x27, w25, UXTW #2] sxtw w2, w0 cmp w2, #125
- beq G_M36935_IG40
+ beq G_M36935_IG44
;; size=40 bbWeight=1.65 PerfScore 14.87 G_M36935_IG25: ; bbWeight=0.76, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz sub w0, w2, #48 cmp w0, #9
- bls G_M36935_IG117
+ bls G_M36935_IG121
;; size=12 bbWeight=0.76 PerfScore 1.51 G_M36935_IG26: ; bbWeight=0.76, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #32
- beq G_M36935_IG118
+ beq G_M36935_IG122
;; size=8 bbWeight=0.76 PerfScore 1.13 G_M36935_IG27: ; bbWeight=0.76, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #44 @@ -550,76 +550,101 @@ G_M36935_IG27: ; bbWeight=0.76, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ;; size=8 bbWeight=0.76 PerfScore 1.13 G_M36935_IG28: ; bbWeight=0.76, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #125
- beq G_M36935_IG40
+ beq G_M36935_IG44
;; size=8 bbWeight=0.76 PerfScore 1.13 G_M36935_IG29: ; bbWeight=0.60, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, gcvars, byref, isz ; GC ptr vars -{V157} cmp w2, #58
- bne G_M36935_IG104
+ bne G_M36935_IG108
sxtw w3, w25 ;; size=12 bbWeight=0.60 PerfScore 1.20 G_M36935_IG30: ; bbWeight=4.76, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG103
+ bls G_M36935_IG107
ldrh w2, [x27, w25, UXTW #2] cmp w2, #125
- beq G_M36935_IG37
+ beq G_M36935_IG41
;; size=24 bbWeight=4.76 PerfScore 30.96 G_M36935_IG31: ; bbWeight=4.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #123
- beq G_M36935_IG104
+ beq G_M36935_IG108
b G_M36935_IG30 ;; size=12 bbWeight=4.16 PerfScore 10.41 G_M36935_IG32: ; bbWeight=0.31, gcVars=00000000000000000020000000000000 {V157}, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, gcvars, byref, isz ; GC ptr vars +{V157} add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG103
+ bls G_M36935_IG107
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32 beq G_M36935_IG32 cmp w2, #45
- beq G_M36935_IG119
+ beq G_M36935_IG123
;; size=32 bbWeight=0.31 PerfScore 2.49 G_M36935_IG33: ; bbWeight=0.31, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz sub w2, w2, #48 cmp w2, #10
- bhs G_M36935_IG102
...

+64 (+1.76%) : 254888.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T17] ( 5, 7.50) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T67] ( 3, 2.50) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 62, 48.50) int -> x25 ld-addr-op -; V06 loc2 [V06,T04] ( 31, 22 ) ushort -> registers -; V07 loc3 [V07,T56] ( 13, 3.50) int -> [fp+0x94]
+; V05 loc1 [V05,T01] ( 67, 48.50) int -> x25 ld-addr-op +; V06 loc2 [V06,T04] ( 34, 22 ) ushort -> registers +; V07 loc3 [V07,T56] ( 16, 3.50) int -> [fp+0x94]
; V08 loc4 [V08,T47] ( 5, 4 ) ubyte -> [fp+0x90] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T28] ( 7, 6 ) int -> x28 @@ -210,8 +210,8 @@ ; V198 cse3 [V198,T87] ( 3, 1.50) int -> x1 "CSE - conservative" ; V199 cse4 [V199,T86] ( 5, 1.50) int -> x27 multi-def "CSE - conservative" ; V200 cse5 [V200,T00] ( 29,127.49) ref -> registers multi-def "CSE - aggressive"
-; V201 cse6 [V201,T06] ( 18, 18.50) int -> x26 "CSE - aggressive" -; V202 cse7 [V202,T07] ( 15, 15.50) byref -> x27 "CSE - aggressive"
+; V201 cse6 [V201,T06] ( 19, 18.50) int -> x26 "CSE - aggressive" +; V202 cse7 [V202,T07] ( 16, 15.50) byref -> x27 "CSE - aggressive"
; V203 cse8 [V203,T11] ( 4, 11.91) long -> [fp+0x58] spill-single-def "CSE - moderate" ; V204 cse9 [V204,T36] ( 14, 5.49) int -> registers "CSE - moderate" ; V205 rat0 [V205,T65] ( 3, 2.98) byref -> x0 "TLS field access" @@ -314,7 +314,7 @@ G_M36935_IG07: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 G_M36935_IG08: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz ldr w3, [fp, #0x68] // [V147 tmp126] cmp w2, w3
- bhi G_M36935_IG122
+ bhi G_M36935_IG124
ldr w0, [x19, #0x08] ldr w1, [x19, #0x18] sub w1, w1, w2 @@ -327,7 +327,7 @@ G_M36935_IG09: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w1, [x19, #0x08] ldr w3, [x0, #0x08] cmp w1, w3
- bhi G_M36935_IG122
+ bhi G_M36935_IG124
ldr x0, [x0] ubfiz x4, x1, #1, #32 add x4, x0, x4 @@ -360,7 +360,7 @@ G_M36935_IG11: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w3, [fp, #0x8C] // [V15 loc11] ldr w0, [fp, #0x78] // [V73 tmp52] cmp w3, w0
- bhi G_M36935_IG123
+ bhi G_M36935_IG125
;; size=16 bbWeight=1.50 PerfScore 8.25 G_M36935_IG12: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz mov w0, w3 @@ -403,14 +403,14 @@ G_M36935_IG15: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldrh w0, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG117
+ bls G_M36935_IG119
;; size=44 bbWeight=1.50 PerfScore 20.25 G_M36935_IG16: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz ldrh w28, [x27, w25, UXTW #2] cmp w0, w28 beq G_M36935_IG84 cmp w0, #123
- bne G_M36935_IG115
+ bne G_M36935_IG117
str xzr, [fp, #0x90] str xzr, [fp, #0x20] // [V138 tmp117] ; GC ptr vars +{V138} @@ -465,10 +465,10 @@ G_M36935_IG19: ; bbWeight=6, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 G_M36935_IG20: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz sub w28, w28, #48 cmp w28, #10
- bhs G_M36935_IG116
+ bhs G_M36935_IG118
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG117
+ bls G_M36935_IG119
ldrh w0, [x27, w25, UXTW #2] sxtw w2, w0 cmp w2, #125 @@ -491,21 +491,21 @@ G_M36935_IG24: ; bbWeight=1, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 cmp w2, #125 beq G_M36935_IG30 cmp w2, #58
- bne G_M36935_IG118
+ bne G_M36935_IG120
sxtw w3, w25 ;; size=20 bbWeight=1 PerfScore 3.50 G_M36935_IG25: ; bbWeight=3, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, gcvars, byref, isz ; GC ptr vars -{V138} add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG117
+ bls G_M36935_IG119
ldrh w2, [x27, w25, UXTW #2] cmp w2, #125 beq G_M36935_IG27 ;; size=24 bbWeight=3 PerfScore 19.50 G_M36935_IG26: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #123
- beq G_M36935_IG118
+ beq G_M36935_IG120
b G_M36935_IG25 ;; size=12 bbWeight=2 PerfScore 5.00 G_M36935_IG27: ; bbWeight=1, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz @@ -517,7 +517,7 @@ G_M36935_IG27: ; bbWeight=1, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 add x0, x0, w6, UXTW mov w1, w26 cmp x0, x1
- bhi G_M36935_IG119
+ bhi G_M36935_IG121
ubfiz x0, x3, #1, #32 add x2, x27, x0 ; byrRegs +[x2] @@ -583,10 +583,10 @@ G_M36935_IG32: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefReg mov x27, xzr ; gcrRegs +[x27] cmp w28, w23
- bhs G_M36935_IG120
+ bhs G_M36935_IG122
ldr x28, [x22, w28, UXTW #3] ; gcrRegs +[x28]
- cbnz x24, G_M36935_IG96
+ cbnz x24, G_M36935_IG98
;; size=28 bbWeight=1.50 PerfScore 10.50 G_M36935_IG33: ; bbWeight=1.50, gcrefRegs=1D300000 {x20 x21 x24 x26 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz cbnz x26, G_M36935_IG61 @@ -613,7 +613,7 @@ G_M36935_IG36: ; bbWeight=1, gcVars=00000000000000000400008000000000 {V18 ldr w1, [x19, #0x08] ldr w4, [x0, #0x08] cmp w1, w4
- bhi G_M36935_IG122
+ bhi G_M36935_IG124
ldr x0, [x0] ubfiz x5, x1, #1, #32 add x5, x0, x5 @@ -652,7 +652,7 @@ G_M36935_IG38: ; bbWeight=1, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, by movz x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 cmp x0, x4
- bne G_M36935_IG99
+ bne G_M36935_IG101
ldr x1, [fp, #0x18] // [V184 tmp163] ldr w2, [fp, #0x64] // [V185 tmp164] add x0, x3, #8 @@ -765,7 +765,7 @@ G_M36935_IG45: ; bbWeight=1, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, by ldr w0, [fp, #0x80] // [V19 loc15] add w1, w1, w0 str w1, [x19, #0x08]
- cbnz w26, G_M36935_IG100
+ cbnz w26, G_M36935_IG102
b G_M36935_IG04 ;; size=28 bbWeight=1 PerfScore 9.50 G_M36935_IG46: ; bbWeight=1.49, gcVars=00000000000008000400000000000000 {V138 V184}, gcrefRegs=19300001 {x0 x20 x21 x24 x27 x28}, byrefRegs=480002 {x1 x19 x22}, gcvars, byref @@ -779,10 +779,10 @@ G_M36935_IG47: ; bbWeight=1.49, gcrefRegs=19300001 {x0 x20 x21 x24 x27 x2 ;; size=4 bbWeight=1.49 PerfScore 1.49 G_M36935_IG48: ; bbWeight=0.37, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, byrefRegs=480002 {x1 x19 x22}, byref ; gcrRegs -[x0]
- b G_M36935_IG98
+ b G_M36935_IG100
;; size=4 bbWeight=0.37 PerfScore 0.37 G_M36935_IG49: ; bbWeight=0.37, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, byrefRegs=480002 {x1 x19 x22}, byref
- b G_M36935_IG98
+ b G_M36935_IG100
;; size=4 bbWeight=0.37 PerfScore 0.37 G_M36935_IG50: ; bbWeight=0.26, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, byrefRegs=480002 {x1 x19 x22}, byref mov x0, x21 @@ -858,7 +858,7 @@ G_M36935_IG55: ; bbWeight=1.49, gcVars=00000000000008000400000000000000 { movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x0, x2
- bne G_M36935_IG121
+ bne G_M36935_IG123
;; size=24 bbWeight=1.49 PerfScore 8.93 G_M36935_IG56: ; bbWeight=2.98, gcrefRegs=19300008 {x3 x20 x21 x24 x27 x28}, byrefRegs=480000 {x19 x22}, byref ; gcrRegs -[x1] @@ -880,20 +880,20 @@ G_M36935_IG58: ; bbWeight=0.50, gcrefRegs=19300008 {x3 x20 x21 x24 x27 x2 ; gcrRegs +[x4] str x4, [fp, #0x48] // [V20 loc16] ; GC ptr vars +{V20}
- cbnz x4, G_M36935_IG102 - cbz x28, G_M36935_IG104
+ cbnz x4, G_M36935_IG104 + cbz x28, G_M36935_IG106
ldr x1, [x28] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 cmp x1, x0
- bne G_M36935_IG105
+ bne G_M36935_IG107
;; size=40 bbWeight=0.50 PerfScore 4.75 G_M36935_IG59: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=11300000 {x20 x21 x24 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz ; gcrRegs -[x3-x4 x27] ; GC ptr vars -{V20 V138} str w26, [fp, #0x90] // [V08 loc4]
- cbz x28, G_M36935_IG106
+ cbz x28, G_M36935_IG108
;; size=8 bbWeight=0.50 PerfScore 1.00 G_M36935_IG60: ; bbWeight=0.25, gcrefRegs=11300000 {x20 x21 x24 x28}, byrefRegs=480000 {x19 x22}, byref mov x26, x28 @@ -904,7 +904,7 @@ G_M36935_IG61: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byre ldr w28, [x26, #0x08] ldr w2, [fp, #0x94] // [V07 loc3] cmp w28, w2
- blt G_M36935_IG107
+ blt G_M36935_IG109
;; size=16 bbWeight=0.50 PerfScore 3.25 G_M36935_IG62: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref, isz ldr w27, [x19, #0x08] @@ -935,7 +935,7 @@ G_M36935_IG65: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byre ; byrRegs +[x0] ldr w1, [x0, #0x08] cmp w27, w1
- bhi G_M36935_IG122
+ bhi G_M36935_IG124
ldr x0, [x0] ubfiz x2, x27, #1, #32 add x2, x0, x2 @@ -962,7 +962,7 @@ G_M36935_IG66: ; bbWeight=2.00, gcVars=00000000000000400000000000000000 { ;; size=36 bbWeight=2.00 PerfScore 14.97 G_M36935_IG67: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref, isz cmp w28, w27
- bhi G_M36935_IG123
+ bhi G_M36935_IG125
add x1, x26, #12 ; byrRegs +[x1] mov w0, w28 @@ -1010,7 +1010,7 @@ G_M36935_IG71: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 { ldr w26, [fp, #0x68] // [V147 tmp126] sub w1, w1, w26 cmp w0, w1
- bgt G_M36935_IG114
+ bgt G_M36935_IG116
;; size=24 bbWeight=0.50 PerfScore 5.00 G_M36935_IG72: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=10080000 {x19 x28}, byref, isz add x0, x19, #16 @@ -1018,7 +1018,7 @@ G_M36935_IG72: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=10080000 {x1 ldr w1, [x19, #0x08] ldr w2, [x0, #0x08] cmp w1, w2
- bhi G_M36935_IG122
+ bhi G_M36935_IG124
ldr x0, [x0] ubfiz x3, x1, #1, #32 add x20, x0, x3 @@ -1041,7 +1041,7 @@ G_M36935_IG72: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=10080000 {x1 ;; size=76 bbWeight=0.50 PerfScore 10.75 G_M36935_IG73: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=10180000 {x19 x20 x28}, byref, isz ...

+124 (+3.14%) : 309835.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T24] ( 5, 11.50) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T30] ( 4, 9 ) ref -> x25 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 63, 69 ) int -> x26 ld-addr-op -; V06 loc2 [V06,T06] ( 31, 63.50) ushort -> [fp+0x9C] -; V07 loc3 [V07,T02] ( 12,160.50) int -> [fp+0x98]
+; V05 loc1 [V05,T05] ( 68, 70.50) int -> x26 ld-addr-op +; V06 loc2 [V06,T06] ( 34, 63.50) ushort -> [fp+0x9C] +; V07 loc3 [V07,T02] ( 15,160.50) int -> [fp+0x98]
; V08 loc4 [V08,T12] ( 5, 44.50) ubyte -> [fp+0x94] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 33 ) int -> [fp+0x90] @@ -192,10 +192,10 @@ ; V181 cse9 [V181,T78] ( 3, 0.01) long -> x0 "CSE - conservative" ; V182 cse10 [V182,T79] ( 3, 0.01) long -> x0 "CSE - conservative" ; V183 cse11 [V183,T80] ( 3, 0.01) long -> x0 "CSE - conservative"
-; V184 cse12 [V184,T00] ( 74,258.50) long -> [fp+0x60] multi-def "CSE - aggressive" -; V185 cse13 [V185,T13] ( 18, 35.50) int -> x27 "CSE - aggressive"
+; V184 cse12 [V184,T00] ( 76,258.50) long -> [fp+0x60] multi-def "CSE - aggressive" +; V185 cse13 [V185,T13] ( 19, 35.01) int -> x27 "CSE - aggressive"
; V186 cse14 [V186,T10] ( 17, 46 ) ref -> registers multi-def "CSE - aggressive"
-; V187 cse15 [V187,T23] ( 15, 14.50) byref -> x28 "CSE - moderate"
+; V187 cse15 [V187,T23] ( 16, 14.50) byref -> x28 "CSE - moderate"
; V188 cse16 [V188,T25] ( 3, 12 ) int -> x0 "CSE - moderate" ; V189 cse17 [V189,T74] ( 6, 0.01) long -> x3 multi-def "CSE - conservative" ; V190 cse18 [V190,T81] ( 3, 0.01) long -> x2 "CSE - conservative" @@ -221,7 +221,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG105
+ cbz x21, G_M4730_IG111
cbnz x19, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -284,7 +284,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byre ; gcrRegs -[x0] ldr w27, [x21, #0x08] cmp w27, w26
- bls G_M4730_IG100
+ bls G_M4730_IG106
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=400000 {x22}, byref, isz add x28, x21, #12 @@ -340,10 +340,10 @@ G_M4730_IG09: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b ; gcr arg pop 0 sxtw w3, w0 str w3, [fp, #0x8C] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG102
+ tbnz w3, #31, G_M4730_IG108
ldr w4, [fp, #0x70] // [V118 tmp96] cmp w3, w4
- bhi G_M4730_IG118
+ bhi G_M4730_IG124
mov x0, x20 ; gcrRegs +[x0] ldr x1, [fp, #0x28] // [V117 tmp95] @@ -361,11 +361,11 @@ G_M4730_IG09: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b ldr w0, [fp, #0x8C] // [V15 loc11] add w26, w26, w0 cmp w26, w27
- bhs G_M4730_IG104
+ bhs G_M4730_IG110
ldrh w1, [x28, w26, UXTW #2] add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldrh w2, [x28, w26, UXTW #2] str w2, [fp, #0x9C] // [V06 loc2] cmp w1, w2 @@ -416,14 +416,14 @@ G_M4730_IG12: ; bbWeight=0.00, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b G_M4730_IG13: ; bbWeight=4, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz ; byrRegs +[x28] cmp w1, #123
- bne G_M4730_IG106
+ bne G_M4730_IG112
str xzr, [fp, #0x94] str xzr, [fp, #0x30] // [V107 tmp85] ; GC ptr vars +{V107} str wzr, [fp, #0x74] // [V108 tmp86] sub w0, w26, #1 cmp w0, w27
- bhs G_M4730_IG104
+ bhs G_M4730_IG110
ldrh w0, [x28, w0, UXTW #2] cmp w0, #123 beq G_M4730_IG15 @@ -470,12 +470,12 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byre ldr w2, [fp, #0x9C] // [V06 loc2] sub w1, w2, #48 cmp w1, #10
- bhs G_M4730_IG107
+ bhs G_M4730_IG113
;; size=16 bbWeight=4 PerfScore 16.00 G_M4730_IG18: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldrh w2, [x28, w26, UXTW #2] cmp w2, #125 beq G_M4730_IG20 @@ -485,7 +485,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byre ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG20: ; bbWeight=0.25, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref str w1, [fp, #0x90] // [V10 loc6]
- b G_M4730_IG54
+ b G_M4730_IG60
;; size=8 bbWeight=0.25 PerfScore 0.50 G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz movz x0, #0xD1FFAB1E @@ -503,7 +503,7 @@ G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b str w2, [fp, #0x90] // [V10 loc6] add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldrh w1, [x28, w26, UXTW #2] str w1, [fp, #0x9C] // [V06 loc2] ldr w1, [fp, #0x90] // [V10 loc6] @@ -546,7 +546,7 @@ G_M4730_IG26: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byre ; gcr arg pop 0 add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG110
+ bls G_M4730_IG116
;; size=32 bbWeight=2 PerfScore 10.00 G_M4730_IG27: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz ldrh w2, [x28, w26, UXTW #2] @@ -560,12 +560,12 @@ G_M4730_IG28: ; bbWeight=0.25, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b ;; size=4 bbWeight=0.25 PerfScore 0.50 G_M4730_IG29: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz cmp w2, #44
- bne G_M4730_IG44
+ bne G_M4730_IG51
;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG30: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG110
+ bls G_M4730_IG116
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG31: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz ldrh w2, [x28, w26, UXTW #2] @@ -600,117 +600,25 @@ G_M4730_IG34: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b str w4, [fp, #0x94] // [V08 loc4] add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldrh w2, [x28, w26, UXTW #2] ldr w1, [fp, #0x90] // [V10 loc6] ;; size=56 bbWeight=0.50 PerfScore 6.50 G_M4730_IG35: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz sub w3, w2, #48 cmp w3, #10
- bhs G_M4730_IG108
+ bhs G_M4730_IG114
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG36: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG110
+ bls G_M4730_IG116
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M4730_IG37: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - cmp w26, w27 - bhs G_M4730_IG104 - ldrh w2, [x28, w26, UXTW #2] - str w2, [fp, #0x9C] // [V06 loc2] - sub w0, w2, #48 - cmp w0, #9 - bhi G_M4730_IG48 - ;; size=28 bbWeight=0.50 PerfScore 3.75 -G_M4730_IG38: ; bbWeight=16, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - movz w0, #0xD1FFAB1E - movk w0, #15 LSL #16 - str w3, [fp, #0x98] // [V07 loc3] - cmp w3, w0 - blt G_M4730_IG49 - ;; size=20 bbWeight=16 PerfScore 56.00 -G_M4730_IG39: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref - str w1, [fp, #0x90] // [V10 loc6] - movz x7, #0xD1FFAB1E - movk x7, #0xD1FFAB1E LSL #16 - movk x7, #0xD1FFAB1E LSL #32 - add x0, x7, #40 - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ;; size=24 bbWeight=2 PerfScore 8.00 -G_M4730_IG40: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - ldr w1, [fp, #0x9C] // [V06 loc2] - cmp w1, #32 - str w1, [fp, #0x9C] // [V06 loc2] - bne G_M4730_IG43 - ;; size=16 bbWeight=2 PerfScore 9.00 -G_M4730_IG41: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - movz x7, #0xD1FFAB1E - movk x7, #0xD1FFAB1E LSL #16 - movk x7, #0xD1FFAB1E LSL #32 - mov x2, x7 - add x0, x2, #44 - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - add w26, w26, #1 - cmp w27, w26 - bls G_M4730_IG110 - ;; size=36 bbWeight=2 PerfScore 11.00 -G_M4730_IG42: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - ldrh w1, [x28, w26, UXTW #2] - str w1, [fp, #0x9C] // [V06 loc2] - cmp w1, #32 - beq G_M4730_IG41 - ;; size=16 bbWeight=0.50 PerfScore 2.75 -G_M4730_IG43: ; bbWeight=1, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - add x0, x2, #48 - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ldr w1, [fp, #0x90] // [V10 loc6] - ldr w2, [fp, #0x9C] // [V06 loc2] - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M4730_IG44: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - cmp w2, #125 - beq G_M4730_IG50 - cmp w2, #58 - bne G_M4730_IG109 - str w26, [fp, #0x88] // [V17 loc13] - ;; size=20 bbWeight=2 PerfScore 8.00 -G_M4730_IG45: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, gcvars, byref, isz - ; GC ptr vars -{V107} - add w26, w26, #1 - cmp w27, w26 - bls G_M4730_IG110 - ldrh w2, [x28, w26, UXTW #2] - cmp w2, #125 - beq G_M4730_IG51 - ;; size=24 bbWeight=0.50 PerfScore 3.25 -G_M4730_IG46: ; bbWeight=16, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - cmp w2, #123 - beq G_M4730_IG111 - ;; size=8 bbWeight=16 PerfScore 24.00 -G_M4730_IG47: ; bbWeight=8, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref - str w1, [fp, #0x90] // [V10 loc6] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16
...

+116 (+3.27%) : 419408.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T23] ( 5, 11.50) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T29] ( 4, 9 ) ref -> x26 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 63, 69 ) int -> x27 ld-addr-op -; V06 loc2 [V06,T06] ( 31, 63.50) ushort -> [fp+0xAC] -; V07 loc3 [V07,T02] ( 12,160.50) int -> [fp+0xA8]
+; V05 loc1 [V05,T05] ( 68, 70.50) int -> x27 ld-addr-op +; V06 loc2 [V06,T06] ( 34, 63.50) ushort -> [fp+0xAC] +; V07 loc3 [V07,T02] ( 15,160.50) int -> [fp+0xA8]
; V08 loc4 [V08,T11] ( 5, 44.50) ubyte -> [fp+0xA4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T13] ( 7, 33 ) int -> [fp+0xA0] @@ -182,9 +182,9 @@ ; V171 cse9 [V171,T77] ( 3, 0.01) long -> x0 "CSE - conservative" ; V172 cse10 [V172,T78] ( 3, 0.01) long -> x0 "CSE - conservative" ; V173 cse11 [V173,T79] ( 3, 0.01) long -> x0 "CSE - conservative"
-; V174 cse12 [V174,T00] ( 50,218 ) long -> x25 multi-def "CSE - aggressive" -; V175 cse13 [V175,T12] ( 18, 35.50) int -> x28 "CSE - aggressive" -; V176 cse14 [V176,T22] ( 15, 14.50) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V174 cse12 [V174,T00] ( 51,218 ) long -> x25 multi-def "CSE - aggressive" +; V175 cse13 [V175,T12] ( 19, 35.01) int -> x28 "CSE - aggressive" +; V176 cse14 [V176,T22] ( 16, 14.50) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V177 cse15 [V177,T24] ( 3, 12 ) int -> x0 "CSE - moderate" ; V178 cse16 [V178,T73] ( 6, 0.01) long -> x3 multi-def "CSE - conservative" ; V179 cse17 [V179,T80] ( 3, 0.01) long -> x2 "CSE - conservative" @@ -210,7 +210,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG96
+ cbz x21, G_M4730_IG103
cbnz x19, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -273,7 +273,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; gcrRegs -[x0] ldr w28, [x21, #0x08] cmp w28, w27
- bls G_M4730_IG91
+ bls G_M4730_IG98
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x1, x21, #12 @@ -317,10 +317,10 @@ G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x9C] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG93
+ tbnz w1, #31, G_M4730_IG100
ldr w2, [fp, #0x7C] // [V108 tmp86] cmp w1, w2
- bhi G_M4730_IG109
+ bhi G_M4730_IG116
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -346,13 +346,13 @@ G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ldr w0, [fp, #0x9C] // [V15 loc11] add w27, w27, w0 cmp w27, w28
- bhs G_M4730_IG95
+ bhs G_M4730_IG102
ldr x1, [fp, #0x10] // [V176 cse14] ; byrRegs +[x1] ldrh w2, [x1, w27, UXTW #2] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
ldrh w3, [x1, w27, UXTW #2] str w3, [fp, #0xAC] // [V06 loc2] cmp w2, w3 @@ -402,14 +402,14 @@ G_M4730_IG11: ; bbWeight=4, gcVars=00000000000000000000000000400000 {V176 ; byrRegs +[x1] ; GC ptr vars +{V176} cmp w2, #123
- bne G_M4730_IG97
+ bne G_M4730_IG104
str xzr, [fp, #0xA4] str xzr, [fp, #0x30] // [V97 tmp75] ; GC ptr vars +{V97} str wzr, [fp, #0x80] // [V98 tmp76] sub w0, w27, #1 cmp w0, w28
- bhs G_M4730_IG95
+ bhs G_M4730_IG102
ldrh w0, [x1, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -432,12 +432,12 @@ G_M4730_IG11: ; bbWeight=4, gcVars=00000000000000000000000000400000 {V176 ldr w1, [fp, #0xAC] // [V06 loc2] sub w2, w1, #48 cmp w2, #10
- bhs G_M4730_IG98
+ bhs G_M4730_IG105
;; size=112 bbWeight=4 PerfScore 114.00 G_M4730_IG12: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
ldr x3, [fp, #0x10] // [V176 cse14] ; byrRegs +[x3] ldrh w1, [x3, w27, UXTW #2] @@ -450,7 +450,7 @@ G_M4730_IG13: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG14: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref str w2, [fp, #0xA0] // [V10 loc6]
- b G_M4730_IG46
+ b G_M4730_IG53
;; size=8 bbWeight=0.25 PerfScore 0.50 G_M4730_IG15: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x0, x25, #0xD1FFAB1E @@ -464,7 +464,7 @@ G_M4730_IG15: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w2, [fp, #0xA0] // [V10 loc6] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
ldr x3, [fp, #0x10] // [V176 cse14] ; byrRegs +[x3] ldrh w1, [x3, w27, UXTW #2] @@ -504,7 +504,7 @@ G_M4730_IG20: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; gcr arg pop 0 add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
;; size=20 bbWeight=2 PerfScore 7.00 G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr x1, [fp, #0x10] // [V176 cse14] @@ -521,12 +521,12 @@ G_M4730_IG22: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ;; size=8 bbWeight=0.25 PerfScore 0.62 G_M4730_IG23: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz cmp w1, #44
- bne G_M4730_IG38
+ bne G_M4730_IG46
;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG24: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG25: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr x3, [fp, #0x10] // [V176 cse14] @@ -557,7 +557,7 @@ G_M4730_IG28: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b sxtw w1, w4 add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
ldr x2, [fp, #0x10] // [V176 cse14] ; byrRegs +[x2] ldrh w0, [x2, w27, UXTW #2] @@ -570,16 +570,35 @@ G_M4730_IG28: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b G_M4730_IG29: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz sub w1, w1, #48 cmp w1, #10
- bhs G_M4730_IG99
+ bhs G_M4730_IG106
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG30: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M4730_IG31: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - cmp w27, w28 - bhs G_M4730_IG95
+G_M4730_IG31: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz + tbnz w27, #31, G_M4730_IG39 + b G_M4730_IG34 + ;; size=8 bbWeight=2 PerfScore 4.00 +G_M4730_IG32: ; bbWeight=0.49, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz + str w2, [fp, #0xA0] // [V10 loc6] + add x0, x25, #0xD1FFAB1E + bl CORINFO_HELP_COUNTPROFILE32 + ; gcr arg pop 0 + mov w0, #10 + ldp w2, w1, [fp, #0xA8] // [V07 loc3], [V06 loc2] + madd w2, w2, w0, w1 + sub w2, w2, #48 + add w27, w27, #1 + cmp w28, w27 + mov w1, w2 + bls G_M4730_IG108 + ;; size=44 bbWeight=0.49 PerfScore 4.95 +G_M4730_IG33: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref + ldr w2, [fp, #0xA0] // [V10 loc6] + ;; size=4 bbWeight=0.25 PerfScore 0.49 +G_M4730_IG34: ; bbWeight=0.49, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
ldr x3, [fp, #0x10] // [V176 cse14] ; byrRegs +[x3] ldrh w0, [x3, w27, UXTW #2] @@ -587,92 +606,26 @@ G_M4730_IG31: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w4, [fp, #0xAC] // [V06 loc2] sub w0, w4, #48 cmp w0, #9
- bhi G_M4730_IG42 - ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M4730_IG32: ; bbWeight=16, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
+ bhi G_M4730_IG37 + ;; size=28 bbWeight=0.49 PerfScore 4.21 +G_M4730_IG35: ; bbWeight=15.84, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
; byrRegs -[x3] movz w0, #0xD1FFAB1E movk w0, #15 LSL #16 str w1, [fp, #0xA8] // [V07 loc3] cmp w1, w0
- blt G_M4730_IG43 - ;; size=20 bbWeight=16 PerfScore 56.00 -G_M4730_IG33: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref
+ blt G_M4730_IG32 + ;; size=20 bbWeight=15.84 PerfScore 55.44 +G_M4730_IG36: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref
str w2, [fp, #0xA0] // [V10 loc6]
- add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ;; size=12 bbWeight=2 PerfScore 5.00 -G_M4730_IG34: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - ldr w1, [fp, #0xAC] // [V06 loc2] - cmp w1, #32 - str w1, [fp, #0xAC] // [V06 loc2] - bne G_M4730_IG37 - ;; size=16 bbWeight=2 PerfScore 9.00 -G_M4730_IG35: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - add w27, w27, #1 - cmp w28, w27 - bls G_M4730_IG101 - ;; size=20 bbWeight=2 PerfScore 7.00 -G_M4730_IG36: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - ldr x1, [fp, #0x10] // [V176 cse14] - ; byrRegs +[x1] - ldrh w0, [x1, w27, UXTW #2] - sxtw w2, w0 - str w2, [fp, #0xAC] // [V06 loc2] - cmp w2, #32 - beq G_M4730_IG35 - ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M4730_IG37: ; bbWeight=1, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref - ; byrRegs -[x1] - add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32
...

+116 (+3.29%) : 423675.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T23] ( 5, 11.50) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T29] ( 4, 9 ) ref -> x26 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 63, 69 ) int -> x27 ld-addr-op -; V06 loc2 [V06,T06] ( 31, 63.50) ushort -> [fp+0xAC] -; V07 loc3 [V07,T02] ( 12,160.50) int -> [fp+0xA8]
+; V05 loc1 [V05,T05] ( 68, 70.50) int -> x27 ld-addr-op +; V06 loc2 [V06,T06] ( 34, 63.50) ushort -> [fp+0xAC] +; V07 loc3 [V07,T02] ( 15,160.50) int -> [fp+0xA8]
; V08 loc4 [V08,T11] ( 5, 44.50) ubyte -> [fp+0xA4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T13] ( 7, 33 ) int -> [fp+0xA0] @@ -179,9 +179,9 @@ ; V168 cse9 [V168,T77] ( 3, 0.01) long -> x0 "CSE - conservative" ; V169 cse10 [V169,T78] ( 3, 0.01) long -> x0 "CSE - conservative" ; V170 cse11 [V170,T79] ( 3, 0.01) long -> x0 "CSE - conservative"
-; V171 cse12 [V171,T01] ( 44,168.50) long -> x25 multi-def "CSE - aggressive" -; V172 cse13 [V172,T12] ( 18, 35.50) int -> x28 "CSE - aggressive" -; V173 cse14 [V173,T22] ( 15, 14.50) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V171 cse12 [V171,T01] ( 45,168.50) long -> x25 multi-def "CSE - aggressive" +; V172 cse13 [V172,T12] ( 19, 35.01) int -> x28 "CSE - aggressive" +; V173 cse14 [V173,T22] ( 16, 14.50) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V174 cse15 [V174,T24] ( 3, 12 ) int -> x0 "CSE - moderate" ; V175 cse16 [V175,T73] ( 6, 0.01) long -> x3 multi-def "CSE - conservative" ; V176 cse17 [V176,T80] ( 3, 0.01) long -> x2 "CSE - conservative" @@ -207,7 +207,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG96
+ cbz x21, G_M4730_IG103
cbnz x19, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -270,7 +270,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; gcrRegs -[x0] ldr w28, [x21, #0x08] cmp w28, w27
- bls G_M4730_IG91
+ bls G_M4730_IG98
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x1, x21, #12 @@ -314,10 +314,10 @@ G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x9C] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG93
+ tbnz w1, #31, G_M4730_IG100
ldr w2, [fp, #0x7C] // [V108 tmp86] cmp w1, w2
- bhi G_M4730_IG106
+ bhi G_M4730_IG113
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -343,13 +343,13 @@ G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ldr w0, [fp, #0x9C] // [V15 loc11] add w27, w27, w0 cmp w27, w28
- bhs G_M4730_IG95
+ bhs G_M4730_IG102
ldr x1, [fp, #0x10] // [V173 cse14] ; byrRegs +[x1] ldrh w2, [x1, w27, UXTW #2] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
ldrh w3, [x1, w27, UXTW #2] str w3, [fp, #0xAC] // [V06 loc2] cmp w2, w3 @@ -399,14 +399,14 @@ G_M4730_IG11: ; bbWeight=4, gcVars=00000000000000000000000000400000 {V173 ; byrRegs +[x1] ; GC ptr vars +{V173} cmp w2, #123
- bne G_M4730_IG97
+ bne G_M4730_IG104
str xzr, [fp, #0xA4] str xzr, [fp, #0x30] // [V97 tmp75] ; GC ptr vars +{V97} str wzr, [fp, #0x80] // [V98 tmp76] sub w0, w27, #1 cmp w0, w28
- bhs G_M4730_IG95
+ bhs G_M4730_IG102
ldrh w0, [x1, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -429,12 +429,12 @@ G_M4730_IG11: ; bbWeight=4, gcVars=00000000000000000000000000400000 {V173 ldr w1, [fp, #0xAC] // [V06 loc2] sub w2, w1, #48 cmp w2, #10
- bhs G_M4730_IG98
+ bhs G_M4730_IG105
;; size=112 bbWeight=4 PerfScore 114.00 G_M4730_IG12: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
ldr x3, [fp, #0x10] // [V173 cse14] ; byrRegs +[x3] ldrh w1, [x3, w27, UXTW #2] @@ -447,7 +447,7 @@ G_M4730_IG13: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG14: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref str w2, [fp, #0xA0] // [V10 loc6]
- b G_M4730_IG46
+ b G_M4730_IG53
;; size=8 bbWeight=0.25 PerfScore 0.50 G_M4730_IG15: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x0, x25, #0xD1FFAB1E @@ -461,7 +461,7 @@ G_M4730_IG15: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w2, [fp, #0xA0] // [V10 loc6] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
ldr x3, [fp, #0x10] // [V173 cse14] ; byrRegs +[x3] ldrh w1, [x3, w27, UXTW #2] @@ -501,7 +501,7 @@ G_M4730_IG20: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; gcr arg pop 0 add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
;; size=20 bbWeight=2 PerfScore 7.00 G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr x1, [fp, #0x10] // [V173 cse14] @@ -518,12 +518,12 @@ G_M4730_IG22: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ;; size=8 bbWeight=0.25 PerfScore 0.62 G_M4730_IG23: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz cmp w1, #44
- bne G_M4730_IG38
+ bne G_M4730_IG46
;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG24: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG25: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr x3, [fp, #0x10] // [V173 cse14] @@ -554,7 +554,7 @@ G_M4730_IG28: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b sxtw w1, w4 add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
ldr x2, [fp, #0x10] // [V173 cse14] ; byrRegs +[x2] ldrh w0, [x2, w27, UXTW #2] @@ -567,16 +567,35 @@ G_M4730_IG28: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b G_M4730_IG29: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz sub w1, w1, #48 cmp w1, #10
- bhs G_M4730_IG99
+ bhs G_M4730_IG106
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG30: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG108
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M4730_IG31: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - cmp w27, w28 - bhs G_M4730_IG95
+G_M4730_IG31: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz + tbnz w27, #31, G_M4730_IG39 + b G_M4730_IG34 + ;; size=8 bbWeight=2 PerfScore 4.00 +G_M4730_IG32: ; bbWeight=0.49, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz + str w2, [fp, #0xA0] // [V10 loc6] + add x0, x25, #0xD1FFAB1E + bl CORINFO_HELP_COUNTPROFILE32 + ; gcr arg pop 0 + mov w0, #10 + ldp w2, w1, [fp, #0xA8] // [V07 loc3], [V06 loc2] + madd w2, w2, w0, w1 + sub w2, w2, #48 + add w27, w27, #1 + cmp w28, w27 + mov w1, w2 + bls G_M4730_IG108 + ;; size=44 bbWeight=0.49 PerfScore 4.95 +G_M4730_IG33: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref + ldr w2, [fp, #0xA0] // [V10 loc6] + ;; size=4 bbWeight=0.25 PerfScore 0.49 +G_M4730_IG34: ; bbWeight=0.49, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
ldr x3, [fp, #0x10] // [V173 cse14] ; byrRegs +[x3] ldrh w0, [x3, w27, UXTW #2] @@ -584,92 +603,26 @@ G_M4730_IG31: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w4, [fp, #0xAC] // [V06 loc2] sub w0, w4, #48 cmp w0, #9
- bhi G_M4730_IG42 - ;; size=36 bbWeight=0.50 PerfScore 5.00 -G_M4730_IG32: ; bbWeight=16, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
+ bhi G_M4730_IG37 + ;; size=28 bbWeight=0.49 PerfScore 4.21 +G_M4730_IG35: ; bbWeight=15.84, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
; byrRegs -[x3] movz w0, #0xD1FFAB1E movk w0, #15 LSL #16 str w1, [fp, #0xA8] // [V07 loc3] cmp w1, w0
- blt G_M4730_IG43 - ;; size=20 bbWeight=16 PerfScore 56.00 -G_M4730_IG33: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref
+ blt G_M4730_IG32 + ;; size=20 bbWeight=15.84 PerfScore 55.44 +G_M4730_IG36: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref
str w2, [fp, #0xA0] // [V10 loc6]
- add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ;; size=12 bbWeight=2 PerfScore 5.00 -G_M4730_IG34: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - ldr w1, [fp, #0xAC] // [V06 loc2] - cmp w1, #32 - str w1, [fp, #0xAC] // [V06 loc2] - bne G_M4730_IG37 - ;; size=16 bbWeight=2 PerfScore 9.00 -G_M4730_IG35: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - add w27, w27, #1 - cmp w28, w27 - bls G_M4730_IG101 - ;; size=20 bbWeight=2 PerfScore 7.00 -G_M4730_IG36: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - ldr x1, [fp, #0x10] // [V173 cse14] - ; byrRegs +[x1] - ldrh w0, [x1, w27, UXTW #2] - sxtw w2, w0 - str w2, [fp, #0xAC] // [V06 loc2] - cmp w2, #32 - beq G_M4730_IG35 - ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M4730_IG37: ; bbWeight=1, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref - ; byrRegs -[x1] - add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32
...

libraries.pmi.linux.arm64.checked.mch

-16 (-12.90%) : 91673.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -8,10 +8,10 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 3, 3 ) ref -> x19 class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> x20 -; V02 loc2 [V02,T01] ( 2, 16 ) int -> x0
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> x20 +; V02 loc2 [V02,T01] ( 2, 15.84) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> x21 hoist "CSE - aggressive"
; ; Lcl frame size = 8 @@ -34,7 +34,7 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x21, x19, #16 ; byrRegs +[x21] ;; size=32 bbWeight=1 PerfScore 4.50
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0] mov w0, w20 movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint @@ -42,13 +42,11 @@ G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cmp w20, #0xD1FFAB1E - bhs G_M39919_IG06
str w0, [x21, w20, UXTW #2] add w20, w20, #1 cmp w20, #255 bls G_M39919_IG03
- ;; size=48 bbWeight=8 PerfScore 84.00
+ ;; size=40 bbWeight=7.92 PerfScore 71.28
G_M39919_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; byrRegs -[x21] mov x0, x19 @@ -60,13 +58,8 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M39919_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x19] - bl CORINFO_HELP_RNGCHKFAIL - brk_unix #0 - ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 124, prolog size 16, PerfScore 97.50, instruction count 31, allocated bytes for code 124 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 108, prolog size 16, PerfScore 84.78, instruction count 27, allocated bytes for code 108 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.linux.arm64.Release.mch

-24 (-0.59%) : 535920.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -14,14 +14,14 @@ ; V02 arg2 [V02,T12] ( 5, 6.61) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T45] ( 4, 2.22) ref -> x24 class-hnd single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T02] ( 72, 38.13) int -> x25 ld-addr-op -; V06 loc2 [V06,T06] ( 34, 15.62) ushort -> [fp+0xEC] -; V07 loc3 [V07,T24] ( 12, 4.44) int -> [fp+0xE8]
+; V05 loc1 [V05,T02] ( 67, 38.06) int -> x25 ld-addr-op +; V06 loc2 [V06,T06] ( 33, 15.62) ushort -> [fp+0xEC] +; V07 loc3 [V07,T24] ( 15, 4.44) int -> [fp+0xE8]
; V08 loc4 [V08,T34] ( 5, 2.99) ubyte -> [fp+0xE4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T22] ( 7, 5.45) int -> [fp+0xE0] ; V11 loc7 [V11,T17] ( 14, 6.73) ref -> registers class-hnd <System.String>
-; V12 loc8 [V12,T53] ( 9, 1.72) ref -> x28 class-hnd <System.String>
+; V12 loc8 [V12,T53] ( 9, 1.72) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T19] ( 12, 5.99) ref -> [fp+0x70] class-hnd spill-single-def <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T11] ( 12, 11.64) int -> [fp+0xDC] spill-single-def @@ -157,9 +157,9 @@ ; V145 tmp123 [V145,T85] ( 5, 0.68) int -> [fp+0x94] spill-single-def "Inlining Arg" ;* V146 tmp124 [V146,T98] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V147 tmp125 [V147,T113] ( 3, 0 ) ref -> x0 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V148 tmp126 [V148,T16] ( 8, 6.95) int -> x28 "Inlining Arg"
+; V148 tmp126 [V148,T16] ( 8, 6.95) int -> x27 "Inlining Arg"
; V149 tmp127 [V149,T52] ( 3, 1.74) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]>
-; V150 tmp128 [V150,T47] ( 4, 2.07) int -> x27 "Inline stloc first use temp"
+; V150 tmp128 [V150,T47] ( 4, 2.07) int -> x28 "Inline stloc first use temp"
; V151 tmp129 [V151,T37] ( 6, 2.82) byref -> x1 "Inlining Arg" ; V152 tmp130 [V152,T86] ( 5, 0.66) byref -> x0 "Inline stloc first use temp" ;* V153 tmp131 [V153 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -250,9 +250,9 @@ ; V238 cse4 [V238,T65] ( 3, 1.32) long -> x5 "CSE - conservative" ; V239 cse5 [V239,T75] ( 3, 0.99) ref -> x1 "CSE - conservative" ; V240 cse6 [V240,T88] ( 3, 0.56) long -> x0 "CSE - conservative"
-; V241 cse7 [V241,T07] ( 20, 14.70) int -> x27 "CSE - aggressive" -; V242 cse8 [V242,T10] ( 17, 11.80) byref -> x28 "CSE - moderate" -; V243 cse9 [V243,T99] ( 2, 0.10) ref -> x28 "CSE - moderate"
+; V241 cse7 [V241,T07] ( 19, 14.31) int -> x27 "CSE - aggressive" +; V242 cse8 [V242,T10] ( 16, 11.80) byref -> x28 "CSE - moderate" +; V243 cse9 [V243,T99] ( 2, 0.10) ref -> x27 "CSE - moderate"
; V244 rat0 [V244,T15] ( 5, 7 ) ref -> x24 class-hnd "replacement local" <System.ICustomFormatter> ; V245 rat1 [V245,T13] ( 6, 8.25) ref -> x0 class-hnd "replacement local" <System.ISpanFormattable> ; V246 rat2 [V246,T18] ( 6, 6.71) ref -> registers class-hnd "replacement local" <System.IFormattable> @@ -308,7 +308,7 @@ G_M4730_IG05: ; bbWeight=0.50, gcrefRegs=1380002 {x1 x19 x20 x21 x24}, by movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 cmp x0, x2
- bne G_M4730_IG136
+ bne G_M4730_IG133
;; size=24 bbWeight=0.50 PerfScore 3.00 G_M4730_IG06: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref ; gcrRegs -[x1] @@ -322,7 +322,7 @@ G_M4730_IG06: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg G_M4730_IG07: ; bbWeight=2.30, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr w27, [x20, #0x08] cmp w27, w25
- bls G_M4730_IG93
+ bls G_M4730_IG90
;; size=12 bbWeight=2.30 PerfScore 10.34 G_M4730_IG08: ; bbWeight=1.31, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x28, x20, #12 @@ -364,12 +364,12 @@ G_M4730_IG08: ; bbWeight=1.31, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0xDC] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG132
+ tbnz w1, #31, G_M4730_IG129
;; size=116 bbWeight=1.31 PerfScore 35.39 G_M4730_IG09: ; bbWeight=1.30, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz ldr w2, [fp, #0x88] // [V170 tmp148] cmp w1, w2
- bhi G_M4730_IG153
+ bhi G_M4730_IG150
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -435,8 +435,8 @@ G_M4730_IG16: ; bbWeight=0.36, gcrefRegs=1380000 {x19 x20 x21 x24}, byref ; gcrRegs +[x1] b G_M4730_IG04 ;; size=8 bbWeight=0.36 PerfScore 0.54
-G_M4730_IG17: ; bbWeight=0.36, gcVars=00000000000000002080000000080000 {V13 V159 V193}, gcrefRegs=15380008 {x3 x19 x20 x21 x24 x26 x28}, byrefRegs=400010 {x4 x22}, gcvars, byref, isz - ; gcrRegs -[x1] +[x3 x26 x28]
+G_M4730_IG17: ; bbWeight=0.36, gcVars=00000000000000002080000000080000 {V13 V159 V193}, gcrefRegs=D380008 {x3 x19 x20 x21 x24 x26 x27}, byrefRegs=400010 {x4 x22}, gcvars, byref, isz + ; gcrRegs -[x1] +[x3 x26-x27]
; byrRegs +[x4] ; GC ptr vars +{V13 V61 V159 V193} str w8, [fp, #0x90] // [V160 tmp138] @@ -465,11 +465,11 @@ G_M4730_IG17: ; bbWeight=0.36, gcVars=00000000000000002080000000080000 {V asr x9, x5, #32 ldr w5, [fp, #0x80] // [V218 tmp196] cmp w9, w5
- bgt G_M4730_IG139
+ bgt G_M4730_IG136
b G_M4730_IG19 ;; size=92 bbWeight=0.36 PerfScore 8.48 G_M4730_IG18: ; bbWeight=0.03, gcVars=00000000000000000000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs -[x24 x26 x28]
+ ; gcrRegs -[x24 x26-x27]
; GC ptr vars -{V13 V159 V217} mov x0, x21 ; gcrRegs +[x0] @@ -486,8 +486,8 @@ G_M4730_IG18: ; bbWeight=0.03, gcVars=00000000000000000000000000000000 {} ; gcrRegs +[x24] b G_M4730_IG16 ;; size=44 bbWeight=0.03 PerfScore 0.23
-G_M4730_IG19: ; bbWeight=0.36, gcVars=00000000000002000080000000080000 {V13 V159 V217}, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs -[x0] +[x26 x28]
+G_M4730_IG19: ; bbWeight=0.36, gcVars=00000000000002000080000000080000 {V13 V159 V217}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; gcrRegs -[x0] +[x26-x27]
; GC ptr vars +{V13 V159 V217} str w9, [fp, #0xD0] // [V19 loc15] ldr x4, [fp, #0x18] // [V217 tmp195] @@ -509,11 +509,11 @@ G_M4730_IG19: ; bbWeight=0.36, gcVars=00000000000002000080000000080000 {V ; gcr arg pop 0 ldr w1, [fp, #0xA4] // [V120 tmp98] cmp w1, #10
- blo G_M4730_IG87
+ blo G_M4730_IG84
b G_M4730_IG29 ;; size=72 bbWeight=0.36 PerfScore 7.22 G_M4730_IG20: ; bbWeight=0.30, gcVars=00000000000000000000000008000000 {V169}, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400001 {x0 x22 x28}, gcvars, byref
- ; gcrRegs -[x28]
+ ; gcrRegs -[x27]
; byrRegs +[x0 x28] ; GC ptr vars -{V13 V159} +{V27 V169} ldr x5, [fp, #0x30] // [V169 tmp147] @@ -545,7 +545,7 @@ G_M4730_IG22: ; bbWeight=0.00, gcVars=00000000000000000000000008000000 {V ldrh w1, [x5] strh w1, [x0] cmp w3, #2
- beq G_M4730_IG137
+ beq G_M4730_IG134
b G_M4730_IG21 ;; size=24 bbWeight=0.00 PerfScore 0.01 G_M4730_IG23: ; bbWeight=0.70, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref @@ -569,18 +569,18 @@ G_M4730_IG23: ; bbWeight=0.70, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b G_M4730_IG24: ; bbWeight=1.30, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz add w25, w25, w3 cmp w25, w27
- bhs G_M4730_IG135
+ bhs G_M4730_IG132
ldrh w2, [x28, w25, UXTW #2] add w25, w25, #1 cmp w27, w25
- bls G_M4730_IG149
+ bls G_M4730_IG146
ldrh w4, [x28, w25, UXTW #2] cmp w2, w4
- beq G_M4730_IG53
+ beq G_M4730_IG51
;; size=40 bbWeight=1.30 PerfScore 14.93 G_M4730_IG25: ; bbWeight=1.19, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz cmp w2, #123
- bne G_M4730_IG147
+ bne G_M4730_IG144
stp wzr, w4, [fp, #0xE8] // [V07 loc3], [V06 loc2] str wzr, [fp, #0xE4] // [V08 loc4] str xzr, [fp, #0x40] // [V159 tmp137] @@ -588,7 +588,7 @@ G_M4730_IG25: ; bbWeight=1.19, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str wzr, [fp, #0x90] // [V160 tmp138] sub w0, w25, #1 cmp w0, w27
- bhs G_M4730_IG135
+ bhs G_M4730_IG132
sub w0, w25, #1 ldrh w0, [x28, w0, UXTW #2] cmp w0, #123 @@ -611,10 +611,10 @@ G_M4730_IG25: ; bbWeight=1.19, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ldr w1, [fp, #0xEC] // [V06 loc2] sub w2, w1, #48 cmp w2, #10
- bhs G_M4730_IG148
+ bhs G_M4730_IG145
add w25, w25, #1 cmp w27, w25
- bls G_M4730_IG149
+ bls G_M4730_IG146
ldrh w1, [x28, w25, UXTW #2] cmp w1, #125 beq G_M4730_IG28 @@ -634,40 +634,40 @@ G_M4730_IG27: ; bbWeight=0.07, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w2, [fp, #0xE0] // [V10 loc6] add w25, w25, #1 cmp w27, w25
- bls G_M4730_IG149
+ bls G_M4730_IG146
ldrh w1, [x28, w25, UXTW #2] ldr w2, [fp, #0xE0] // [V10 loc6] b G_M4730_IG26 ;; size=40 bbWeight=0.07 PerfScore 0.89 G_M4730_IG28: ; bbWeight=0.60, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref str w2, [fp, #0xE0] // [V10 loc6]
- b G_M4730_IG61
+ b G_M4730_IG58
;; size=8 bbWeight=0.60 PerfScore 1.19
-G_M4730_IG29: ; bbWeight=1.44, gcVars=00000000000000000080000000080000 {V13 V159}, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs +[x28]
+G_M4730_IG29: ; bbWeight=1.44, gcVars=00000000000000000080000000080000 {V13 V159}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; gcrRegs +[x27]
; byrRegs -[x28] ; GC ptr vars +{V13} cmp w1, #100
- blo G_M4730_IG72
+ blo G_M4730_IG69
;; size=8 bbWeight=1.44 PerfScore 2.17
-G_M4730_IG30: ; bbWeight=1.44, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, byref - b G_M4730_IG54
+G_M4730_IG30: ; bbWeight=1.44, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, byref + b G_M4730_IG52
;; size=4 bbWeight=1.44 PerfScore 1.44 G_M4730_IG31: ; bbWeight=0.01, gcVars=00000000000000000080000000000000 {V159}, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, gcvars, byref, isz
- ; gcrRegs -[x28]
+ ; gcrRegs -[x27]
; byrRegs +[x28] ; GC ptr vars -{V13} cmp w1, #32
- beq G_M4730_IG49
+ beq G_M4730_IG48
;; size=8 bbWeight=0.01 PerfScore 0.01 G_M4730_IG32: ; bbWeight=0.46, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz cmp w1, #44
- bne G_M4730_IG41
+ bne G_M4730_IG42
;; size=8 bbWeight=0.46 PerfScore 0.69 G_M4730_IG33: ; bbWeight=0.66, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz add w25, w25, #1 cmp w27, w25
- bls G_M4730_IG149
+ bls G_M4730_IG146
ldrh w1, [x28, w25, UXTW #2] cmp w1, #32 beq G_M4730_IG33 @@ -680,7 +680,7 @@ G_M4730_IG35: ; bbWeight=0.14, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b mov w1, #1 add w25, w25, #1 cmp w27, w25
- bls G_M4730_IG149
+ bls G_M4730_IG146
ldrh w0, [x28, w25, UXTW #2] sxtw w3, w0 str w1, [fp, #0xE4] // [V08 loc4] @@ -689,14 +689,13 @@ G_M4730_IG35: ; bbWeight=0.14, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b G_M4730_IG36: ; bbWeight=0.32, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz sub w1, w1, #48 cmp w1, #10
- bhs G_M4730_IG148
+ bhs G_M4730_IG145
add w25, w25, #1 cmp w27, w25 ...

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

+12 (+0.83%) : 130183.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -8,54 +8,54 @@ ; 14 inlinees with PGO data; 44 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T33] ( 3, 5.97) ref -> x19 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T25] ( 4, 10.07) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T32] ( 3, 5.97) ref -> x19 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T14] ( 7, 21.95) ref -> x20 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T09] ( 7, 24.76) int -> x0 ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T39] ( 3, 1 ) ref -> [fp+0x38] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T38] ( 5, 2 ) ref -> [fp+0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.13) int -> x19
+; V04 loc4 [V04,T38] ( 3, 1 ) ref -> [fp+0x38] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T37] ( 5, 2 ) ref -> [fp+0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.84) int -> x19
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T31] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T26] ( 5, 10.03) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T34] ( 2, 4.03) int -> x19 "Inlining Arg" -; V11 tmp4 [V11,T32] ( 3, 6.04) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T28] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T22] ( 5, 10.03) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T33] ( 2, 4.03) int -> x19 "Inlining Arg" +; V11 tmp4 [V11,T31] ( 3, 6.04) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T37] ( 3, 3.02) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T27] ( 4, 8.06) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T28] ( 4, 8.06) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T14] ( 2, 16.12) int -> x26 "Inlining Arg" -; V17 tmp10 [V17,T10] ( 3, 24.18) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T36] ( 3, 3.02) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T26] ( 4, 8.06) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T27] ( 4, 8.06) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T15] ( 2, 15.96) int -> x26 "Inlining Arg" +; V17 tmp10 [V17,T11] ( 3, 23.94) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T17] ( 3, 12.09) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.24) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.24) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T18] ( 3, 11.97) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 31.91) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 31.91) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T15] ( 2, 16.12) int -> x26 "Inlining Arg" -; V24 tmp17 [V24,T11] ( 3, 24.18) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T16] ( 2, 15.96) int -> x26 "Inlining Arg" +; V24 tmp17 [V24,T12] ( 3, 23.94) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T18] ( 3, 12.09) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.24) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.24) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T19] ( 3, 11.97) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 31.91) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 31.91) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T16] ( 2, 16.12) ushort -> x26 "Inlining Arg" -; V34 tmp27 [V34,T12] ( 3, 24.18) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T17] ( 2, 15.96) ushort -> x26 "Inlining Arg" +; V34 tmp27 [V34,T13] ( 3, 23.94) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T19] ( 3, 12.09) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.24) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.24) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T20] ( 3, 11.97) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 31.91) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 31.91) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T35] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T29] ( 3, 8.06) ubyte -> x26 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T34] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T29] ( 3, 7.98) ubyte -> x26 "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T36] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T30] ( 2, 8.06) ubyte -> x0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T35] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T30] ( 3, 7.98) ubyte -> x22 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,15 +64,14 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> x1 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T41] ( 6, 0 ) struct ( 8) [fp+0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T40] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T13] ( 5, 20.15) byref -> x22 "CSE - aggressive" -; V59 cse1 [V59,T20] ( 3, 12.09) long -> x22 "CSE - moderate" -; V60 cse2 [V60,T08] ( 9, 27.20) long -> x25 "CSE - aggressive" -; V61 cse3 [V61,T22] ( 4, 10.07) long -> x21 "CSE - moderate" -; V62 cse4 [V62,T23] ( 4, 10.07) long -> x23 "CSE - moderate" -; V63 cse5 [V63,T24] ( 4, 10.07) long -> x24 "CSE - moderate" -; V64 cse6 [V64,T21] ( 3, 11.88) int -> x2 "CSE - moderate"
+; V56 tmp49 [V56,T40] ( 6, 0 ) struct ( 8) [fp+0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T39] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T10] ( 6, 23.94) long -> x22 "CSE - aggressive" +; V59 cse1 [V59,T08] ( 9, 26.96) long -> x25 "CSE - aggressive" +; V60 cse2 [V60,T23] ( 4, 9.99) long -> x21 "CSE - moderate" +; V61 cse3 [V61,T24] ( 4, 9.99) long -> x23 "CSE - moderate" +; V62 cse4 [V62,T25] ( 4, 9.99) long -> x24 "CSE - moderate" +; V63 cse5 [V63,T21] ( 3, 11.88) int -> x2 "CSE - moderate"
; ; Lcl frame size = 64 @@ -147,7 +146,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { str x21, [fp, #0x38] // [V04 loc4] ; GC ptr vars +{V04} ;; size=48 bbWeight=1 PerfScore 10.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -171,7 +170,7 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=380 str x22, [fp, #0x30] // [V05 loc5] ; GC ptr vars +{V05} ;; size=60 bbWeight=1 PerfScore 11.50
-G_M53770_IG06: ; bbWeight=1.01, gcVars=000000C000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1.01, gcVars=0000006000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
mov x0, x22 ; gcrRegs +[x0] mov x2, x19 @@ -291,7 +290,7 @@ G_M53770_IG06: ; bbWeight=1.01, gcVars=000000C000000000 {V04 V05}, gcrefR ; gcr arg pop 0 mov w19, wzr ;; size=300 bbWeight=1.01 PerfScore 54.90
-G_M53770_IG07: ; bbWeight=4.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG07: ; bbWeight=3.99, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ubfiz x0, x19, #4, #32 add x22, x0, #16 ldr w26, [x20, x22] @@ -374,10 +373,11 @@ G_M53770_IG07: ; bbWeight=4.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x27] ; gcr arg pop 0
- add x22, x20, x22 - ; byrRegs +[x22] - ldr w26, [x22, #0x08]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldr w26, [x0, #0x08]
mov x0, x21
+ ; byrRegs -[x0]
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -456,10 +456,14 @@ G_M53770_IG07: ; bbWeight=4.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x27] ; gcr arg pop 0
- ldrb w26, [x22, #0x04]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldrb w26, [x0, #0x04]
cbnz w26, G_M53770_IG10
- ldrh w26, [x22, #0x0C]
+ add x0, x20, x22 + ldrh w26, [x0, #0x0C]
movz x0, #0xD1FFAB1E
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST @@ -545,15 +549,17 @@ G_M53770_IG07: ; bbWeight=4.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x27] ; gcr arg pop 0
- ldrb w0, [x22, #0x0E] - cbz w0, G_M53770_IG11 - ;; size=572 bbWeight=4.03 PerfScore 501.67 -G_M53770_IG08: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x22]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldrb w22, [x0, #0x0E] + cbz w22, G_M53770_IG11 + ;; size=584 bbWeight=3.99 PerfScore 502.64 +G_M53770_IG08: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0]
add w19, w19, #1 cmp w19, #12 blt G_M53770_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=12 bbWeight=3.96 PerfScore 7.92
G_M53770_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] b G_M53770_IG12 @@ -578,7 +584,7 @@ G_M53770_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M53770_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w1, #1 strb w1, [fp, #0x40] // [V56 tmp49]
- strb wzr, [fp, #0x41] // [V56 tmp49+0x01]
+ strb w22, [fp, #0x41] // [V56 tmp49+0x01]
ldrh w1, [fp, #0x40] // [V56 tmp49] mov x0, xzr movz x2, #0xD1FFAB1E // code for <unknown method> @@ -622,8 +628,8 @@ G_M53770_IG14: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0xA0 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M53770_IG15: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V05 V38}
+G_M53770_IG15: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V05 V37 V38}
stp fp, lr, [sp, #-0x70]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -633,11 +639,11 @@ G_M53770_IG15: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs add x3, fp, #160 str x3, [sp, #0x18] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M53770_IG16: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG16: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x30] // [V05 loc5] ; gcrRegs +[x0] strb wzr, [x0, #0x24]
- ; GC ptr vars -{V05 V38}
+ ; GC ptr vars -{V05 V37 V38}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 @@ -661,7 +667,7 @@ G_M53770_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x3, fp, #160 str x3, [sp, #0x18] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M53770_IG19: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG19: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x38] // [V04 loc4] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -683,7 +689,7 @@ G_M53770_IG20: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 1448, prolog size 36, PerfScore 660.67, instruction count 362, allocated bytes for code 1448 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
+Total bytes of code 1460, prolog size 36, PerfScore 661.56, instruction count 365, allocated bytes for code 1460 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
; ============================================================ Unwind Info: @@ -694,7 +700,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 323 (0x00143) Actual length = 1292 (0x00050c)
...

realworld.run.linux.arm64.checked.mch

+72 (+2.29%) : 2966.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 25 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> x19 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> x19 this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> x21 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T25] ( 5, 15 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T71] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0xAC] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [fp+0xA8]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0xAC] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [fp+0xA8]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [fp+0xA4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [fp+0xA0] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T09] ( 10, 38 ) int -> [fp+0x9C] spill-single-def ; V16 loc12 [V16,T44] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T36] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T36] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T39] ( 3, 12 ) ref -> [fp+0x60] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T74] ( 3, 6 ) ref -> [fp+0x58] class-hnd spill-single-def <<unknown class>> @@ -203,8 +203,8 @@ ; V192 cse3 [V192,T77] ( 3, 6 ) int -> x1 "CSE - conservative" ; V193 cse4 [V193,T78] ( 3, 6 ) int -> x1 "CSE - conservative" ; V194 cse5 [V194,T90] ( 3, 1.50) int -> x2 "CSE - conservative"
-; V195 cse6 [V195,T02] ( 18,142 ) int -> x26 "CSE - aggressive" -; V196 cse7 [V196,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V195 cse6 [V195,T03] ( 19,126.16) int -> x26 "CSE - aggressive" +; V196 cse7 [V196,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V197 cse8 [V197,T06] ( 21, 58 ) int -> x27 "CSE - aggressive" ; V198 cse9 [V198,T12] ( 11, 29 ) byref -> [fp+0x18] multi-def "CSE - aggressive" ; V199 cse10 [V199,T50] ( 3, 12 ) int -> x0 "CSE - moderate" @@ -230,7 +230,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG62
+ cbz x20, G_M36935_IG66
cbnz x21, G_M36935_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref @@ -270,7 +270,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcrRegs -[x0] ldr w26, [x20, #0x08] cmp w26, w25
- bls G_M36935_IG58
+ bls G_M36935_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz add x27, x20, #12 @@ -304,10 +304,10 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x9C] // [V15 loc11]
- tbnz w1, #31, G_M36935_IG59
+ tbnz w1, #31, G_M36935_IG63
ldr w2, [fp, #0x70] // [V132 tmp111] cmp w1, w2
- bhi G_M36935_IG69
+ bhi G_M36935_IG73
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -346,7 +346,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w3, [x19, #0x08] ldr w4, [x0, #0x08] cmp w3, w4
- bhi G_M36935_IG69
+ bhi G_M36935_IG73
ldr x0, [x0] ubfiz x5, x3, #1, #32 add x5, x0, x5 @@ -368,7 +368,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w3, [fp, #0x9C] // [V15 loc11] ldr w2, [fp, #0x88] // [V63 tmp42] cmp w3, w2
- bhi G_M36935_IG70
+ bhi G_M36935_IG74
mov w2, w3 lsl x2, x2, #1 ldr x0, [fp, #0x50] // [V64 tmp43] @@ -389,11 +389,11 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 str w0, [x19, #0x08] add w25, w25, w28 cmp w25, w26
- bhs G_M36935_IG61
+ bhs G_M36935_IG65
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65
+ bls G_M36935_IG69
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M36935_IG13 @@ -433,7 +433,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 ; byrRegs +[x27] ; GC ptr vars +{V12 V198} cmp w28, #123
- bne G_M36935_IG63
+ bne G_M36935_IG67
str w2, [fp, #0xAC] // [V06 loc2] mov w28, wzr str wzr, [fp, #0xA4] // [V08 loc4] @@ -442,7 +442,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 str wzr, [fp, #0x74] // [V124 tmp103] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG61
+ bhs G_M36935_IG65
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -462,188 +462,212 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0xAC] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M36935_IG64
+ ldr w1, [fp, #0xAC] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M36935_IG68
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M36935_IG15 ;; size=144 bbWeight=4 PerfScore 146.00 G_M36935_IG14: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref b G_M36935_IG17 ;; size=4 bbWeight=2 PerfScore 2.00 G_M36935_IG15: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
- str w1, [fp, #0xA0] // [V10 loc6] - b G_M36935_IG32
+ str w2, [fp, #0xA0] // [V10 loc6] + b G_M36935_IG36
;; size=8 bbWeight=2 PerfScore 4.00 G_M36935_IG16: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0xA0] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0xA0] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0xA0] // [V10 loc6]
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0xA0] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M36935_IG17: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M36935_IG16 ;; size=24 bbWeight=16 PerfScore 56.00 G_M36935_IG18: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M36935_IG20 ;; size=8 bbWeight=2 PerfScore 3.00 G_M36935_IG19: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M36935_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG20: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M36935_IG28
+ cmp w1, #44 + mov w3, w1 + bne G_M36935_IG24
;; size=12 bbWeight=2 PerfScore 4.00 G_M36935_IG21: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M36935_IG21 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M36935_IG23
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0xA4] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M36935_IG64
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M36935_IG68
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - b G_M36935_IG25 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0xA8] // [V07 loc3]
+ bls G_M36935_IG69
...

+72 (+2.66%) : 2729.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T32] ( 5, 15 ) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T61] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 61, 455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [fp+0x6C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [fp+0x68]
+; V05 loc1 [V05,T02] ( 66, 441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [fp+0x6C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [fp+0x68]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [fp+0x64] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [fp+0x60] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def ; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T43] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>> @@ -160,8 +160,8 @@ ; V149 cse3 [V149,T45] ( 3, 12 ) ref -> x4 "CSE - moderate" ; V150 cse4 [V150,T47] ( 3, 12 ) int -> x1 "CSE - moderate" ; V151 cse5 [V151,T03] ( 6, 416 ) int -> [fp+0x3C] spill-single-def "CSE - aggressive"
-; V152 cse6 [V152,T11] ( 18, 142 ) int -> x26 "CSE - aggressive" -; V153 cse7 [V153,T12] ( 15, 120 ) byref -> x27 "CSE - aggressive"
+; V152 cse6 [V152,T11] ( 19, 126.16) int -> x26 "CSE - aggressive" +; V153 cse7 [V153,T12] ( 16, 120 ) byref -> x27 "CSE - aggressive"
; V154 cse8 [V154,T48] ( 3, 12 ) int -> x0 "CSE - moderate" ; ; Lcl frame size = 96 @@ -185,7 +185,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG63
+ cbz x21, G_M4730_IG67
cbnz x20, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -225,7 +225,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcrRegs -[x0] ldr w26, [x21, #0x08] cmp w26, w25
- bls G_M4730_IG58
+ bls G_M4730_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz add x27, x21, #12 @@ -259,10 +259,10 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x5C] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG60
+ tbnz w1, #31, G_M4730_IG64
ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2
- bhi G_M4730_IG74
+ bhi G_M4730_IG78
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -287,11 +287,11 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w28, [fp, #0x5C] // [V15 loc11] add w25, w25, w28 cmp w25, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66
+ bls G_M4730_IG70
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M4730_IG11 @@ -333,7 +333,7 @@ G_M4730_IG10: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz ; byrRegs +[x27] cmp w28, #123
- bne G_M4730_IG64
+ bne G_M4730_IG68
str w2, [fp, #0x6C] // [V06 loc2] mov w28, wzr str wzr, [fp, #0x64] // [V08 loc4] @@ -342,7 +342,7 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg str wzr, [fp, #0x44] // [V90 tmp68] sub w0, w25, #1 cmp w0, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -361,188 +361,212 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0x6C] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M4730_IG65
+ ldr w1, [fp, #0x6C] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M4730_IG13 ;; size=144 bbWeight=4 PerfScore 146.00 G_M4730_IG12: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref b G_M4730_IG15 ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG13: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- str w1, [fp, #0x60] // [V10 loc6] - b G_M4730_IG30
+ str w2, [fp, #0x60] // [V10 loc6] + b G_M4730_IG34
;; size=8 bbWeight=2 PerfScore 4.00 G_M4730_IG14: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0x60] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0x60] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0x60] // [V10 loc6]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0x60] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M4730_IG15: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M4730_IG14 ;; size=24 bbWeight=16 PerfScore 56.00 G_M4730_IG16: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M4730_IG18 ;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG17: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG17 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M4730_IG26
+ cmp w1, #44 + mov w3, w1 + bne G_M4730_IG22
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG19: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M4730_IG21
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0x64] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M4730_IG21: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M4730_IG65
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - b G_M4730_IG23 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M4730_IG22: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0x68] // [V07 loc3]
+ bls G_M4730_IG70 + tbnz w25, #31, G_M4730_IG27 + b G_M4730_IG24 + ;; size=32 bbWeight=2 PerfScore 12.00 +G_M4730_IG22: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref + mov w1, w28 + b G_M4730_IG30 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M4730_IG23: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz + mov w0, #10 + madd w1, w1, w0, w3 + sub w1, w1, #48
add w25, w25, #1 cmp w26, w25
- ldr w2, [fp, #0x68] // [V07 loc3] - bls G_M4730_IG66 - ;; size=32 bbWeight=8 PerfScore 64.00 -G_M4730_IG23: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - cmp w25, w26 - bhs G_M4730_IG62
+ bls G_M4730_IG70 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
ldrh w0, [x27, w25, UXTW #2]
- sub w3, w0, #48
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 2 0 2 0 -0 +136
benchmarks.run_pgo.linux.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 166 0 166 0 -0 +15,164
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 2 1 1 0 -16 +268
libraries_tests.run.linux.arm64.Release.mch 277 1 276 0 -24 +26,812
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 1 0 1 0 -0 +12
realworld.run.linux.arm64.checked.mch 2 0 2 0 -0 +144
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
450 2 448 0 -40 +42,536

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 32,433 2,362 30,071 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.arm64.checked.mch 152,737 60,751 91,986 14 (0.01%) 14 (0.01%)
benchmarks.run_tiered.linux.arm64.checked.mch 60,787 45,077 15,710 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch 626,682 383,548 243,134 12 (0.00%) 13 (0.00%)
libraries.crossgen2.linux.arm64.checked.mch 1,936 0 1,936 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 295,685 6 295,679 3 (0.00%) 3 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 750,982 494,543 256,439 128 (0.02%) 128 (0.02%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 304,825 21,600 283,225 2 (0.00%) 2 (0.00%)
realworld.run.linux.arm64.checked.mch 33,343 157 33,186 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.arm64.checked.mch 52 0 52 0 (0.00%) 0 (0.00%)
2,259,462 1,008,044 1,251,418 159 (0.01%) 160 (0.01%)

jit-analyze output

benchmarks.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14972060 (overridden on cmd)
Total bytes of diff: 14972196 (overridden on cmd)
Total bytes of delta: 136 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


coreclr_tests.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 509739552 (overridden on cmd)
Total bytes of diff: 509754716 (overridden on cmd)
Total bytes of delta: 15164 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.pmi.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 76280108 (overridden on cmd)
Total bytes of diff: 76280360 (overridden on cmd)
Total bytes of delta: 252 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


libraries_tests.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 400018564 (overridden on cmd)
Total bytes of diff: 400045352 (overridden on cmd)
Total bytes of delta: 26788 (0.01 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 165109668 (overridden on cmd)
Total bytes of diff: 165109680 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


realworld.run.linux.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15918288 (overridden on cmd)
Total bytes of diff: 15918432 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



linux x64

Diffs are based on 2,249,694 contexts (981,298 MinOpts, 1,268,396 FullOpts).

MISSED contexts: base: 134 (0.01%), diff: 135 (0.01%)

Overall (+36,024 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,722,967 +71
benchmarks.run_pgo.linux.x64.checked.mch 69,144,788 +714
coreclr_tests.run.linux.x64.checked.mch 403,316,142 +12,690
libraries.pmi.linux.x64.checked.mch 60,405,130 +291
libraries_tests.run.linux.x64.Release.mch 348,249,622 +22,187
librariestestsnotieredcompilation.run.linux.x64.Release.mch 132,683,678 +0
realworld.run.linux.x64.checked.mch 13,212,110 +71

FullOpts (+36,024 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,459,034 +71
benchmarks.run_pgo.linux.x64.checked.mch 47,802,743 +714
coreclr_tests.run.linux.x64.checked.mch 123,824,981 +12,690
libraries.pmi.linux.x64.checked.mch 60,292,273 +291
libraries_tests.run.linux.x64.Release.mch 164,494,458 +22,187
librariestestsnotieredcompilation.run.linux.x64.Release.mch 122,065,892 +0
realworld.run.linux.x64.checked.mch 12,823,228 +71

Example diffs

benchmarks.run.linux.x64.checked.mch

+34 (+1.20%) : 5158.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 33 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> rbx this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> rbx this single-def
; V01 arg1 [V01,T33] ( 7, 11.50) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T71] ( 3, 7 ) ref -> [rbp-0x90] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [rbp-0x34]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [rbp-0x3C] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T43] ( 3, 12 ) ushort -> rdx
-; V17 loc13 [V17,T35] ( 6, 12 ) int -> r9
+; V17 loc13 [V17,T35] ( 6, 12 ) int -> rdi
; V18 loc14 [V18,T38] ( 3, 12 ) ref -> [rbp-0xB0] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T74] ( 3, 6 ) ref -> [rbp-0xB8] class-hnd spill-single-def <<unknown class>> @@ -210,7 +210,7 @@ ; V199 cse3 [V199,T77] ( 3, 6 ) int -> r10 "CSE - conservative" ; V200 cse4 [V200,T78] ( 3, 6 ) int -> rsi "CSE - conservative" ; V201 cse5 [V201,T90] ( 3, 1.50) int -> r14 "CSE - conservative"
-; V202 cse6 [V202,T02] ( 18,142 ) int -> [rbp-0x80] spill-single-def "CSE - aggressive"
+; V202 cse6 [V202,T04] ( 19,126.16) int -> [rbp-0x80] spill-single-def "CSE - aggressive"
; V203 cse7 [V203,T06] ( 21, 58 ) int -> [rbp-0x84] spill-single-def "CSE - aggressive" ; V204 cse8 [V204,T12] ( 11, 29 ) byref -> [rbp-0x108] multi-def "CSE - moderate" ; @@ -237,7 +237,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=40 bbWeight=1 PerfScore 8.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz test r15, r15
- je G_M36935_IG68
+ je G_M36935_IG72
test r14, r14 jne SHORT G_M36935_IG04 ;; size=14 bbWeight=1 PerfScore 2.50 @@ -274,7 +274,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=00000000000000800000000000000000 {V04 mov edx, dword ptr [r15+0x08] mov dword ptr [rbp-0x80], edx cmp edx, ecx
- jbe G_M36935_IG64
+ jbe G_M36935_IG68
;; size=15 bbWeight=8 PerfScore 34.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref mov edi, ecx @@ -328,9 +328,9 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ; gcr arg pop 0 mov dword ptr [rbp-0x50], eax test eax, eax
- jl G_M36935_IG65
+ jl G_M36935_IG69
cmp eax, dword ptr [rbp-0x7C]
- ja G_M36935_IG75
+ ja G_M36935_IG79
mov edi, eax not edi shr edi, 31 @@ -364,7 +364,7 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb mov edx, dword ptr [rbx+0x08] mov esi, dword ptr [rdi+0x08] cmp edx, esi
- ja G_M36935_IG75
+ ja G_M36935_IG79
mov rdi, bword ptr [rdi] mov r8d, edx lea r8, bword ptr [rdi+2*r8] @@ -383,7 +383,7 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ; gcr arg pop 0 mov eax, dword ptr [rbp-0x50] cmp eax, dword ptr [rbp-0x54]
- ja G_M36935_IG76
+ ja G_M36935_IG80
mov edx, eax add rdx, rdx mov rdi, bword ptr [rbp-0xC8] @@ -400,7 +400,7 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb add ecx, edi mov eax, dword ptr [rbp-0x80] cmp ecx, eax
- jae G_M36935_IG67
+ jae G_M36935_IG71
mov edi, ecx movzx rdx, word ptr [r15+2*rdi+0x0C] inc ecx @@ -431,7 +431,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, ; byrRegs -[rbx rsi r13] ; GC ptr vars -{V04} mov edx, ecx
- jmp G_M36935_IG71
+ jmp G_M36935_IG75
;; size=7 bbWeight=2 PerfScore 4.50 G_M36935_IG13: ; bbWeight=2, gcVars=00000000000000800000000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs +[r14-r15] @@ -452,7 +452,7 @@ G_M36935_IG14: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb G_M36935_IG15: ; bbWeight=4, gcVars=00000000000000800000000000001000 {V04 V204}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz ; GC ptr vars -{V71} +{V12 V204} cmp edx, 123
- jne G_M36935_IG69
+ jne G_M36935_IG73
mov dword ptr [rbp-0x30], r8d xor edx, edx mov dword ptr [rbp-0x34], edx @@ -467,7 +467,7 @@ G_M36935_IG15: ; bbWeight=4, gcVars=00000000000000800000000000001000 {V04 mov ecx, dword ptr [rbp-0x2C] lea edi, [rcx-0x01] cmp edi, eax
- jae G_M36935_IG67
+ jae G_M36935_IG71
mov dword ptr [rbp-0x2C], ecx lea edi, [rcx-0x01] cmp word ptr [r15+2*rdi+0x0C], 123 @@ -485,175 +485,199 @@ G_M36935_IG15: ; bbWeight=4, gcVars=00000000000000800000000000001000 {V04 mov eax, dword ptr [rbp-0x30] lea ecx, [rax-0x30] cmp ecx, 10
- jae G_M36935_IG70
+ jae G_M36935_IG74
mov edx, dword ptr [rbp-0x2C] inc edx mov esi, dword ptr [rbp-0x80] cmp esi, edx
- jbe G_M36935_IG71
+ jbe G_M36935_IG75
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 125
+ cmp eax, 125
je SHORT G_M36935_IG17
- ;; size=143 bbWeight=4 PerfScore 140.00
+ ;; size=141 bbWeight=4 PerfScore 139.00
G_M36935_IG16: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz jmp SHORT G_M36935_IG19 ;; size=2 bbWeight=2 PerfScore 4.00 G_M36935_IG17: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref mov dword ptr [rbp-0x3C], ecx
- jmp G_M36935_IG35
+ jmp G_M36935_IG39
;; size=8 bbWeight=2 PerfScore 6.00 G_M36935_IG18: ; bbWeight=8, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref lea ecx, [rcx+4*rcx]
- lea ecx, [rdi+2*rcx-0x30]
+ lea ecx, [rax+2*rcx-0x30]
mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG71 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
+ jbe G_M36935_IG75 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C]
mov ecx, dword ptr [rbp-0x3C] ;; size=31 bbWeight=8 PerfScore 58.00 G_M36935_IG19: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
- lea eax, [rdi-0x30] - cmp eax, 9
+ lea edi, [rax-0x30] + cmp edi, 9
ja SHORT G_M36935_IG20 cmp ecx, 0xD1FFAB1E jl SHORT G_M36935_IG18 ;; size=16 bbWeight=16 PerfScore 48.00 G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
- cmp edi, 32
+ cmp eax, 32
jne SHORT G_M36935_IG22 ;; size=5 bbWeight=2 PerfScore 2.50 G_M36935_IG21: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe G_M36935_IG71 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32
+ jbe G_M36935_IG75 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + cmp eax, 32
je SHORT G_M36935_IG21 ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref - cmp edi, 44 - mov r8d, dword ptr [rbp-0x34] - jne G_M36935_IG29 - ;; size=13 bbWeight=2 PerfScore 4.50
+G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + cmp eax, 44 + mov r9d, eax + jne SHORT G_M36935_IG27 + ;; size=8 bbWeight=2 PerfScore 3.00
G_M36935_IG23: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe G_M36935_IG71 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32
+ jbe G_M36935_IG75 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + cmp eax, 32
je SHORT G_M36935_IG23 ;; size=23 bbWeight=16 PerfScore 80.00 G_M36935_IG24: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
- cmp edi, 45
+ cmp eax, 45
jne SHORT G_M36935_IG25 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe G_M36935_IG71 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
+ jbe G_M36935_IG75 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C]
;; size=30 bbWeight=2 PerfScore 12.00
-G_M36935_IG25: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref - add edi, -48 - mov r8d, edi - cmp r8d, 10 - jae G_M36935_IG32
+G_M36935_IG25: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + add eax, -48 + cmp eax, 10 + jae SHORT G_M36935_IG26
inc edx cmp esi, edx
- jbe G_M36935_IG71 - ;; size=26 bbWeight=2 PerfScore 6.50 -G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz - cmp edx, esi - jae G_M36935_IG67 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - lea r9d, [rdi-0x30] - cmp r9d, 9 - ja SHORT G_M36935_IG27
...

+37 (+1.56%) : 5150.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 33, 559.50) ref -> rbx this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T31] ( 7, 17.50) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T12] ( 18, 127 ) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T11] ( 19, 127 ) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T61] ( 3, 7 ) ref -> [rbp-0x78] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [rbp-0x34]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [rbp-0x3C] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T45] ( 3, 12 ) ushort -> rdx
-; V17 loc13 [V17,T42] ( 6, 12 ) int -> r9
+; V17 loc13 [V17,T42] ( 6, 12 ) int -> rdi
; V18 loc14 [V18,T43] ( 3, 12 ) ref -> rax class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [rbp-0x98] class-hnd spill-single-def <<unknown class>> @@ -167,7 +167,7 @@ ; V156 cse3 [V156,T44] ( 3, 12 ) ref -> r8 "CSE - conservative" ; V157 cse4 [V157,T46] ( 3, 12 ) int -> rsi "CSE - conservative" ; V158 cse5 [V158,T03] ( 6, 416 ) int -> [rbp-0x6C] spill-single-def "CSE - aggressive"
-; V159 cse6 [V159,T11] ( 18, 142 ) int -> [rbp-0x70] spill-single-def "CSE - moderate"
+; V159 cse6 [V159,T12] ( 19, 126.16) int -> [rbp-0x70] spill-single-def "CSE - moderate"
; ; Lcl frame size = 152 @@ -192,7 +192,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=40 bbWeight=1 PerfScore 8.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz test r15, r15
- je G_M4730_IG70
+ je G_M4730_IG74
test r14, r14 jne SHORT G_M4730_IG04 ;; size=14 bbWeight=1 PerfScore 2.50 @@ -229,7 +229,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=00000000000000002000000000000000 {V04} mov edx, dword ptr [r15+0x08] mov dword ptr [rbp-0x70], edx cmp edx, ecx
- jbe G_M4730_IG65
+ jbe G_M4730_IG69
;; size=15 bbWeight=8 PerfScore 34.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref mov edi, ecx @@ -283,9 +283,9 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 ; gcr arg pop 0 mov dword ptr [rbp-0x50], eax test eax, eax
- jl G_M4730_IG67
+ jl G_M4730_IG71
cmp eax, dword ptr [rbp-0x68]
- ja G_M4730_IG81
+ ja G_M4730_IG85
mov edi, eax not edi shr edi, 31 @@ -307,7 +307,7 @@ G_M4730_IG08: ; bbWeight=4, isz, extend add ecx, dword ptr [rbp-0x50] mov eax, dword ptr [rbp-0x70] cmp ecx, eax
- jae G_M4730_IG69
+ jae G_M4730_IG73
mov edi, ecx movzx rdx, word ptr [r15+2*rdi+0x0C] inc ecx @@ -335,7 +335,7 @@ G_M4730_IG10: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; byrRegs -[r13] ; GC ptr vars -{V04} mov edx, ecx
- jmp G_M4730_IG73
+ jmp G_M4730_IG77
;; size=7 bbWeight=2 PerfScore 4.50 G_M4730_IG11: ; bbWeight=2, gcVars=00000000000000002000000000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref ; gcrRegs +[rbx r14-r15] @@ -355,7 +355,7 @@ G_M4730_IG12: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 ;; size=10 bbWeight=4 PerfScore 13.00 G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz cmp edx, 123
- jne G_M4730_IG71
+ jne G_M4730_IG75
mov dword ptr [rbp-0x30], r8d xor edx, edx mov dword ptr [rbp-0x34], edx @@ -370,7 +370,7 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 mov ecx, dword ptr [rbp-0x2C] lea edi, [rcx-0x01] cmp edi, eax
- jae G_M4730_IG69
+ jae G_M4730_IG73
mov dword ptr [rbp-0x2C], ecx lea edi, [rcx-0x01] cmp word ptr [r15+2*rdi+0x0C], 123 @@ -388,175 +388,199 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 mov eax, dword ptr [rbp-0x30] lea ecx, [rax-0x30] cmp ecx, 10
- jae G_M4730_IG72
+ jae G_M4730_IG76
mov edx, dword ptr [rbp-0x2C] inc edx mov esi, dword ptr [rbp-0x70] cmp esi, edx
- jbe G_M4730_IG73
+ jbe G_M4730_IG77
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 125
+ cmp eax, 125
je SHORT G_M4730_IG15
- ;; size=143 bbWeight=4 PerfScore 140.00
+ ;; size=141 bbWeight=4 PerfScore 139.00
G_M4730_IG14: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz jmp SHORT G_M4730_IG17 ;; size=2 bbWeight=2 PerfScore 4.00 G_M4730_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref mov dword ptr [rbp-0x3C], ecx
- jmp G_M4730_IG33
+ jmp G_M4730_IG37
;; size=8 bbWeight=2 PerfScore 6.00 G_M4730_IG16: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref lea ecx, [rcx+4*rcx]
- lea ecx, [rdi+2*rcx-0x30]
+ lea ecx, [rax+2*rcx-0x30]
mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
+ jbe G_M4730_IG77 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C]
mov ecx, dword ptr [rbp-0x3C] ;; size=31 bbWeight=8 PerfScore 58.00 G_M4730_IG17: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
- lea eax, [rdi-0x30] - cmp eax, 9
+ lea edi, [rax-0x30] + cmp edi, 9
ja SHORT G_M4730_IG18 cmp ecx, 0xD1FFAB1E jl SHORT G_M4730_IG16 ;; size=16 bbWeight=16 PerfScore 48.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
- cmp edi, 32
+ cmp eax, 32
jne SHORT G_M4730_IG20 ;; size=5 bbWeight=2 PerfScore 2.50 G_M4730_IG19: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz inc edx cmp esi, edx
- jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32
+ jbe G_M4730_IG77 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + cmp eax, 32
je SHORT G_M4730_IG19 ;; size=23 bbWeight=16 PerfScore 80.00
-G_M4730_IG20: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref - cmp edi, 44 - mov r8d, dword ptr [rbp-0x34] - jne G_M4730_IG27 - ;; size=13 bbWeight=2 PerfScore 4.50
+G_M4730_IG20: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + cmp eax, 44 + mov r9d, eax + jne SHORT G_M4730_IG25 + ;; size=8 bbWeight=2 PerfScore 3.00
G_M4730_IG21: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz inc edx cmp esi, edx
- jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32
+ jbe G_M4730_IG77 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + cmp eax, 32
je SHORT G_M4730_IG21 ;; size=23 bbWeight=16 PerfScore 80.00 G_M4730_IG22: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
- cmp edi, 45
+ cmp eax, 45
jne SHORT G_M4730_IG23 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
+ jbe G_M4730_IG77 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C]
;; size=30 bbWeight=2 PerfScore 12.00
-G_M4730_IG23: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref - add edi, -48 - mov r8d, edi - cmp r8d, 10 - jae G_M4730_IG30
+G_M4730_IG23: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + add eax, -48 + cmp eax, 10 + jae SHORT G_M4730_IG24
inc edx cmp esi, edx
- jbe G_M4730_IG73 - ;; size=26 bbWeight=2 PerfScore 6.50 -G_M4730_IG24: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - cmp edx, esi - jae G_M4730_IG69 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - lea r9d, [rdi-0x30] - cmp r9d, 9 - ja SHORT G_M4730_IG25 - cmp r8d, 0xD1FFAB1E - jl SHORT G_M4730_IG31 - ;; size=35 bbWeight=16 PerfScore 104.00 -G_M4730_IG25: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - cmp edi, 32 - jne SHORT G_M4730_IG27 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M4730_IG26: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - inc edx - cmp esi, edx - jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32 - je SHORT G_M4730_IG26 - ;; size=23 bbWeight=16 PerfScore 80.00 -G_M4730_IG27: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - cmp edi, 125 - je SHORT G_M4730_IG29 - cmp edi, 58 - jne G_M4730_IG74
...

benchmarks.run_pgo.linux.x64.checked.mch

+357 (+32.34%) : 66409.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)

@@ -9,21 +9,21 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 91.6 ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 17, 7.85) ref -> rdi class-hnd single-def <int[][]> -; V01 arg1 [V01,T08] ( 17,104.26) ref -> rsi class-hnd single-def <int[][]> -; V02 arg2 [V02,T12] ( 12, 4.61) ref -> rdx class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 23, 9.95) ref -> rdi class-hnd single-def <int[][]> +; V01 arg1 [V01,T08] ( 24,105.66) ref -> rsi class-hnd single-def <int[][]> +; V02 arg2 [V02,T13] ( 18, 6.01) ref -> rdx class-hnd single-def <int[][]>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T13] ( 49, 4.96) int -> r8 -; V05 loc2 [V05,T06] ( 50,202.64) int -> rcx -; V06 loc3 [V06,T03] ( 53,401.63) int -> rax
+; V04 loc1 [V04,T12] ( 61, 9.15) int -> r8 +; V05 loc2 [V05,T06] ( 59,208.93) int -> rcx +; V06 loc3 [V06,T03] ( 64,407.22) int -> rax
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <int[]> ;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store"
-; V10 tmp3 [V10,T16] ( 3, 0 ) byref -> r9 "dup spill" -; V11 tmp4 [V11,T17] ( 3, 0 ) byref -> r9 "dup spill" -; V12 tmp5 [V12,T18] ( 3, 0 ) byref -> r9 "dup spill" -; V13 tmp6 [V13,T19] ( 3, 0 ) byref -> r9 "dup spill" -; V14 tmp7 [V14,T20] ( 3, 0 ) byref -> r9 "dup spill"
+; V10 tmp3 [V10,T15] ( 6, 4.19) byref -> r10 "dup spill" +; V11 tmp4 [V11,T16] ( 6, 4.19) byref -> r10 "dup spill" +; V12 tmp5 [V12,T24] ( 3, 0 ) byref -> r9 "dup spill" +; V13 tmp6 [V13,T25] ( 3, 0 ) byref -> r9 "dup spill" +; V14 tmp7 [V14,T26] ( 3, 0 ) byref -> r9 "dup spill"
; V15 tmp8 [V15,T00] ( 6,592.14) byref -> r14 "dup spill" ;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr" @@ -32,12 +32,12 @@ ; V20 tmp13 [V20,T01] ( 6,592.14) ref -> registers "arr expr" ; V21 tmp14 [V21,T04] ( 5,396.73) ref -> registers "arr expr" ; V22 tmp15 [V22,T02] ( 6,592.14) ref -> r13 "arr expr"
-; V23 tmp16 [V23,T21] ( 3, 0 ) ref -> r9 "arr expr" -; V24 tmp17 [V24,T22] ( 3, 0 ) ref -> rbx "arr expr" -; V25 tmp18 [V25,T23] ( 3, 0 ) ref -> r15 "arr expr" -; V26 tmp19 [V26,T24] ( 3, 0 ) ref -> r9 "arr expr" -; V27 tmp20 [V27,T25] ( 3, 0 ) ref -> rbx "arr expr" -; V28 tmp21 [V28,T26] ( 3, 0 ) ref -> r15 "arr expr"
+; V23 tmp16 [V23,T21] ( 5, 2.79) ref -> r9 "arr expr" +; V24 tmp17 [V24,T17] ( 6, 4.19) ref -> rbx "arr expr" +; V25 tmp18 [V25,T22] ( 5, 2.79) ref -> r15 "arr expr" +; V26 tmp19 [V26,T18] ( 6, 4.19) ref -> r9 "arr expr" +; V27 tmp20 [V27,T23] ( 5, 2.79) ref -> rbx "arr expr" +; V28 tmp21 [V28,T19] ( 6, 4.19) ref -> r15 "arr expr"
; V29 tmp22 [V29,T27] ( 3, 0 ) ref -> r9 "arr expr" ; V30 tmp23 [V30,T28] ( 3, 0 ) ref -> rbx "arr expr" ; V31 tmp24 [V31,T29] ( 3, 0 ) ref -> r15 "arr expr" @@ -49,7 +49,7 @@ ; V37 tmp30 [V37,T35] ( 3, 0 ) ref -> r15 "arr expr" ; V38 cse0 [V38,T10] ( 4,100.00) ref -> rbx hoist multi-def "CSE - moderate" ; V39 cse1 [V39,T09] ( 6,103.56) ref -> r10 multi-def "CSE - moderate"
-; V40 cse2 [V40,T15] ( 10, 2.61) int -> r11 hoist multi-def "CSE - moderate"
+; V40 cse2 [V40,T20] ( 13, 3.31) int -> r11 hoist multi-def "CSE - moderate"
; V41 cse3 [V41,T14] ( 6, 4.89) long -> r9 hoist multi-def "CSE - moderate" ; V42 cse4 [V42,T07] ( 6,198.69) long -> r15 hoist multi-def "CSE - moderate" ; V43 cse5 [V43,T05] ( 3,293.11) long -> r13 "CSE - aggressive" @@ -75,46 +75,124 @@ G_M19657_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov ecx, dword ptr [rbp+0x64] mov eax, dword ptr [rbp+0x60] ;; size=71 bbWeight=1 PerfScore 19.75
-G_M19657_IG02: ; bbWeight=1, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19657_IG04 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M19657_IG03: ; bbWeight=1.31, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+G_M19657_IG02: ; bbWeight=1, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref + jmp G_M19657_IG08 + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M19657_IG03: ; bbWeight=0.02, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref + xor ecx, ecx + jmp G_M19657_IG07 + ;; size=7 bbWeight=0.02 PerfScore 0.05 +G_M19657_IG04: ; bbWeight=0.02, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz + inc r8d + cmp r8d, 75 + jge G_M19657_IG17 + jmp SHORT G_M19657_IG03 + ;; size=15 bbWeight=0.02 PerfScore 0.08 +G_M19657_IG05: ; bbWeight=0.70, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz + mov r9d, r8d + mov r9, gword ptr [rdx+8*r9+0x10] + ; gcrRegs +[r9] + mov r10d, ecx + lea r10, bword ptr [r9+4*r10+0x10] + ; byrRegs +[r10] + mov r9d, dword ptr [r10] + ; gcrRegs -[r9] + cmp r8d, dword ptr [rdi+0x08] + jae G_M19657_IG16 + mov ebx, r8d + mov rbx, gword ptr [rdi+8*rbx+0x10] + ; gcrRegs +[rbx] + cmp eax, dword ptr [rbx+0x08] + jae G_M19657_IG16 + mov r15d, eax + mov ebx, dword ptr [rbx+4*r15+0x10] + ; gcrRegs -[rbx] + mov r15d, eax + mov r15, gword ptr [rsi+8*r15+0x10] + ; gcrRegs +[r15] + mov r14d, ecx + imul ebx, dword ptr [r15+4*r14+0x10] + add r9d, ebx + mov dword ptr [r10], r9d + inc ecx + cmp ecx, 75 + jge G_M19657_IG21 + jmp SHORT G_M19657_IG05 + ;; size=90 bbWeight=0.70 PerfScore 21.14 +G_M19657_IG06: ; bbWeight=0.70, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + ; byrRegs -[r10] + cmp r8d, r11d + jae G_M19657_IG16 + mov r9d, r8d + mov r9, gword ptr [rdx+8*r9+0x10] + ; gcrRegs +[r9] + cmp ecx, dword ptr [r9+0x08] + jae G_M19657_IG16 + mov r10d, ecx + lea r10, bword ptr [r9+4*r10+0x10] + ; byrRegs +[r10] + mov r9d, dword ptr [r10] + ; gcrRegs -[r9] + mov ebx, r8d + mov rbx, gword ptr [rdi+8*rbx+0x10] + ; gcrRegs +[rbx] + mov r15d, eax + mov ebx, dword ptr [rbx+4*r15+0x10] + ; gcrRegs -[rbx] + mov r15d, eax + mov r15, gword ptr [rsi+8*r15+0x10] + ; gcrRegs +[r15] + cmp ecx, dword ptr [r15+0x08] + jae G_M19657_IG16 + mov r14d, ecx + imul ebx, dword ptr [r15+4*r14+0x10] + add r9d, ebx + mov dword ptr [r10], r9d + inc eax + cmp eax, 75 + jge G_M19657_IG25 + jmp SHORT G_M19657_IG06 + ;; size=100 bbWeight=0.70 PerfScore 22.01 +G_M19657_IG07: ; bbWeight=1.31, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[r15] + ; byrRegs -[r10]
xor eax, eax ;; size=2 bbWeight=1.31 PerfScore 0.33
-G_M19657_IG04: ; bbWeight=1.31, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+G_M19657_IG08: ; bbWeight=1.31, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
cmp eax, 75
- jge G_M19657_IG10
+ jge G_M19657_IG14
;; size=9 bbWeight=1.31 PerfScore 1.64
-G_M19657_IG05: ; bbWeight=1.29, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG09: ; bbWeight=1.29, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je G_M19657_IG08
+ je G_M19657_IG12
test rsi, rsi
- je G_M19657_IG08
+ je G_M19657_IG12
cmp dword ptr [rdi+0x08], r8d
- jbe SHORT G_M19657_IG08
+ jbe SHORT G_M19657_IG12
mov r9d, r8d mov r10, gword ptr [rdi+8*r9+0x10] ; gcrRegs +[r10] test r10, r10
- je SHORT G_M19657_IG08
+ je SHORT G_M19657_IG12
test eax, eax
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
cmp dword ptr [r10+0x08], 75
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
cmp dword ptr [rsi+0x08], 75
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
mov r11d, dword ptr [rdx+0x08] cmp r8d, r11d
- jae G_M19657_IG19
+ jae G_M19657_IG16
mov rbx, gword ptr [rdx+8*r9+0x10] ; gcrRegs +[rbx] mov r15d, ecx ;; size=75 bbWeight=1.29 PerfScore 32.00
-G_M19657_IG06: ; bbWeight=97.70, gcrefRegs=04CC {rdx rbx rsi rdi r10}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG10: ; bbWeight=97.70, gcrefRegs=04CC {rdx rbx rsi rdi r10}, byrefRegs=0000 {}, byref, isz
mov r9, rbx ; gcrRegs +[r9] cmp ecx, dword ptr [r9+0x08]
- jae G_M19657_IG19
+ jae G_M19657_IG16
lea r14, bword ptr [r9+4*r15+0x10] ; byrRegs +[r14] mov r11d, dword ptr [r14] @@ -125,346 +203,387 @@ G_M19657_IG06: ; bbWeight=97.70, gcrefRegs=04CC {rdx rbx rsi rdi r10}, by mov r13, gword ptr [rsi+8*r13+0x10] ; gcrRegs +[r13] cmp ecx, dword ptr [r13+0x08]
- jae G_M19657_IG19
+ jae G_M19657_IG16
imul r9d, dword ptr [r13+4*r15+0x10] add r9d, r11d mov dword ptr [r14], r9d inc eax cmp eax, 75
- jl SHORT G_M19657_IG06
+ jl SHORT G_M19657_IG10
;; size=66 bbWeight=97.70 PerfScore 2296.02
-G_M19657_IG07: ; bbWeight=1.31, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG11: ; bbWeight=1.31, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r10 r13] ; byrRegs -[r14]
- jmp SHORT G_M19657_IG10
+ jmp SHORT G_M19657_IG14
;; size=2 bbWeight=1.31 PerfScore 2.62
-G_M19657_IG08: ; bbWeight=0.01, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+G_M19657_IG12: ; bbWeight=0.01, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r11d, dword ptr [rdx+0x08] mov r9d, r8d cmp r8d, r11d
- jae G_M19657_IG19
+ jae SHORT G_M19657_IG16
mov rbx, gword ptr [rdx+8*r9+0x10] ; gcrRegs +[rbx] mov r15d, ecx
- ;; size=24 bbWeight=0.01 PerfScore 0.07 -G_M19657_IG09: ; bbWeight=0.99, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.01 PerfScore 0.07 +G_M19657_IG13: ; bbWeight=0.99, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r10, rbx ; gcrRegs +[r10] cmp ecx, dword ptr [r10+0x08]
- jae G_M19657_IG19
+ jae SHORT G_M19657_IG16
lea r14, bword ptr [r10+4*r15+0x10] ; byrRegs +[r14] mov r11d, dword ptr [r14] cmp r8d, dword ptr [rdi+0x08]
- jae G_M19657_IG19
+ jae SHORT G_M19657_IG16
mov r10, gword ptr [rdi+8*r9+0x10] ...

+357 (+32.34%) : 66420.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)

@@ -9,21 +9,21 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 180.47 ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 17, 7.89) ref -> rdi class-hnd single-def <int[][]> -; V01 arg1 [V01,T08] ( 17,104.28) ref -> rsi class-hnd single-def <int[][]> -; V02 arg2 [V02,T12] ( 12, 4.64) ref -> rdx class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 23, 8.96) ref -> rdi class-hnd single-def <int[][]> +; V01 arg1 [V01,T08] ( 24,104.99) ref -> rsi class-hnd single-def <int[][]> +; V02 arg2 [V02,T12] ( 18, 5.35) ref -> rdx class-hnd single-def <int[][]>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T13] ( 49, 4.98) int -> r8 -; V05 loc2 [V05,T06] ( 50,202.66) int -> rcx -; V06 loc3 [V06,T03] ( 53,401.62) int -> rax
+; V04 loc1 [V04,T13] ( 61, 7.11) int -> r8 +; V05 loc2 [V05,T06] ( 59,205.85) int -> rcx +; V06 loc3 [V06,T03] ( 64,404.46) int -> rax
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <int[]> ;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store"
-; V10 tmp3 [V10,T16] ( 3, 0 ) byref -> r9 "dup spill" -; V11 tmp4 [V11,T17] ( 3, 0 ) byref -> r9 "dup spill" -; V12 tmp5 [V12,T18] ( 3, 0 ) byref -> r9 "dup spill" -; V13 tmp6 [V13,T19] ( 3, 0 ) byref -> r9 "dup spill" -; V14 tmp7 [V14,T20] ( 3, 0 ) byref -> r9 "dup spill"
+; V10 tmp3 [V10,T16] ( 6, 2.13) byref -> r10 "dup spill" +; V11 tmp4 [V11,T17] ( 6, 2.13) byref -> r10 "dup spill" +; V12 tmp5 [V12,T24] ( 3, 0 ) byref -> r9 "dup spill" +; V13 tmp6 [V13,T25] ( 3, 0 ) byref -> r9 "dup spill" +; V14 tmp7 [V14,T26] ( 3, 0 ) byref -> r9 "dup spill"
; V15 tmp8 [V15,T00] ( 6,592.05) byref -> r14 "dup spill" ;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr" @@ -32,12 +32,12 @@ ; V20 tmp13 [V20,T01] ( 6,592.05) ref -> registers "arr expr" ; V21 tmp14 [V21,T04] ( 5,396.68) ref -> registers "arr expr" ; V22 tmp15 [V22,T02] ( 6,592.05) ref -> r13 "arr expr"
-; V23 tmp16 [V23,T21] ( 3, 0 ) ref -> r9 "arr expr" -; V24 tmp17 [V24,T22] ( 3, 0 ) ref -> rbx "arr expr" -; V25 tmp18 [V25,T23] ( 3, 0 ) ref -> r15 "arr expr" -; V26 tmp19 [V26,T24] ( 3, 0 ) ref -> r9 "arr expr" -; V27 tmp20 [V27,T25] ( 3, 0 ) ref -> rbx "arr expr" -; V28 tmp21 [V28,T26] ( 3, 0 ) ref -> r15 "arr expr"
+; V23 tmp16 [V23,T21] ( 5, 1.42) ref -> r9 "arr expr" +; V24 tmp17 [V24,T18] ( 6, 2.13) ref -> rbx "arr expr" +; V25 tmp18 [V25,T22] ( 5, 1.42) ref -> r15 "arr expr" +; V26 tmp19 [V26,T19] ( 6, 2.13) ref -> r9 "arr expr" +; V27 tmp20 [V27,T23] ( 5, 1.42) ref -> rbx "arr expr" +; V28 tmp21 [V28,T20] ( 6, 2.13) ref -> r15 "arr expr"
; V29 tmp22 [V29,T27] ( 3, 0 ) ref -> r9 "arr expr" ; V30 tmp23 [V30,T28] ( 3, 0 ) ref -> rbx "arr expr" ; V31 tmp24 [V31,T29] ( 3, 0 ) ref -> r15 "arr expr" @@ -49,7 +49,7 @@ ; V37 tmp30 [V37,T35] ( 3, 0 ) ref -> r15 "arr expr" ; V38 cse0 [V38,T10] ( 4,100.00) ref -> rbx hoist multi-def "CSE - moderate" ; V39 cse1 [V39,T09] ( 6,103.58) ref -> r10 multi-def "CSE - moderate"
-; V40 cse2 [V40,T15] ( 10, 2.64) int -> r11 hoist multi-def "CSE - moderate"
+; V40 cse2 [V40,T15] ( 13, 2.99) int -> r11 hoist multi-def "CSE - moderate"
; V41 cse3 [V41,T14] ( 6, 4.93) long -> r9 hoist multi-def "CSE - moderate" ; V42 cse4 [V42,T07] ( 6,198.67) long -> r15 hoist multi-def "CSE - moderate" ; V43 cse5 [V43,T05] ( 3,293.07) long -> r13 "CSE - aggressive" @@ -75,46 +75,124 @@ G_M19657_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov ecx, dword ptr [rbp+0x64] mov eax, dword ptr [rbp+0x60] ;; size=71 bbWeight=1 PerfScore 19.75
-G_M19657_IG02: ; bbWeight=1, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19657_IG04 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M19657_IG03: ; bbWeight=1.32, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+G_M19657_IG02: ; bbWeight=1, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref + jmp G_M19657_IG08 + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M19657_IG03: ; bbWeight=0.02, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref + xor ecx, ecx + jmp G_M19657_IG07 + ;; size=7 bbWeight=0.02 PerfScore 0.04 +G_M19657_IG04: ; bbWeight=0.02, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz + inc r8d + cmp r8d, 75 + jge G_M19657_IG17 + jmp SHORT G_M19657_IG03 + ;; size=15 bbWeight=0.02 PerfScore 0.06 +G_M19657_IG05: ; bbWeight=0.35, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz + mov r9d, r8d + mov r9, gword ptr [rdx+8*r9+0x10] + ; gcrRegs +[r9] + mov r10d, ecx + lea r10, bword ptr [r9+4*r10+0x10] + ; byrRegs +[r10] + mov r9d, dword ptr [r10] + ; gcrRegs -[r9] + cmp r8d, dword ptr [rdi+0x08] + jae G_M19657_IG16 + mov ebx, r8d + mov rbx, gword ptr [rdi+8*rbx+0x10] + ; gcrRegs +[rbx] + cmp eax, dword ptr [rbx+0x08] + jae G_M19657_IG16 + mov r15d, eax + mov ebx, dword ptr [rbx+4*r15+0x10] + ; gcrRegs -[rbx] + mov r15d, eax + mov r15, gword ptr [rsi+8*r15+0x10] + ; gcrRegs +[r15] + mov r14d, ecx + imul ebx, dword ptr [r15+4*r14+0x10] + add r9d, ebx + mov dword ptr [r10], r9d + inc ecx + cmp ecx, 75 + jge G_M19657_IG21 + jmp SHORT G_M19657_IG05 + ;; size=90 bbWeight=0.35 PerfScore 10.73 +G_M19657_IG06: ; bbWeight=0.35, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15] + ; byrRegs -[r10] + cmp r8d, r11d + jae G_M19657_IG16 + mov r9d, r8d + mov r9, gword ptr [rdx+8*r9+0x10] + ; gcrRegs +[r9] + cmp ecx, dword ptr [r9+0x08] + jae G_M19657_IG16 + mov r10d, ecx + lea r10, bword ptr [r9+4*r10+0x10] + ; byrRegs +[r10] + mov r9d, dword ptr [r10] + ; gcrRegs -[r9] + mov ebx, r8d + mov rbx, gword ptr [rdi+8*rbx+0x10] + ; gcrRegs +[rbx] + mov r15d, eax + mov ebx, dword ptr [rbx+4*r15+0x10] + ; gcrRegs -[rbx] + mov r15d, eax + mov r15, gword ptr [rsi+8*r15+0x10] + ; gcrRegs +[r15] + cmp ecx, dword ptr [r15+0x08] + jae G_M19657_IG16 + mov r14d, ecx + imul ebx, dword ptr [r15+4*r14+0x10] + add r9d, ebx + mov dword ptr [r10], r9d + inc eax + cmp eax, 75 + jge G_M19657_IG25 + jmp SHORT G_M19657_IG06 + ;; size=100 bbWeight=0.35 PerfScore 11.17 +G_M19657_IG07: ; bbWeight=1.32, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[r15] + ; byrRegs -[r10]
xor eax, eax ;; size=2 bbWeight=1.32 PerfScore 0.33
-G_M19657_IG04: ; bbWeight=1.32, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+G_M19657_IG08: ; bbWeight=1.32, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
cmp eax, 75
- jge G_M19657_IG10
+ jge G_M19657_IG14
;; size=9 bbWeight=1.32 PerfScore 1.66
-G_M19657_IG05: ; bbWeight=1.31, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG09: ; bbWeight=1.31, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- je G_M19657_IG08
+ je G_M19657_IG12
test rsi, rsi
- je G_M19657_IG08
+ je G_M19657_IG12
cmp dword ptr [rdi+0x08], r8d
- jbe SHORT G_M19657_IG08
+ jbe SHORT G_M19657_IG12
mov r9d, r8d mov r10, gword ptr [rdi+8*r9+0x10] ; gcrRegs +[r10] test r10, r10
- je SHORT G_M19657_IG08
+ je SHORT G_M19657_IG12
test eax, eax
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
cmp dword ptr [r10+0x08], 75
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
cmp dword ptr [rsi+0x08], 75
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
mov r11d, dword ptr [rdx+0x08] cmp r8d, r11d
- jae G_M19657_IG19
+ jae G_M19657_IG16
mov rbx, gword ptr [rdx+8*r9+0x10] ; gcrRegs +[rbx] mov r15d, ecx ;; size=75 bbWeight=1.31 PerfScore 32.34
-G_M19657_IG06: ; bbWeight=97.69, gcrefRegs=04CC {rdx rbx rsi rdi r10}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG10: ; bbWeight=97.69, gcrefRegs=04CC {rdx rbx rsi rdi r10}, byrefRegs=0000 {}, byref, isz
mov r9, rbx ; gcrRegs +[r9] cmp ecx, dword ptr [r9+0x08]
- jae G_M19657_IG19
+ jae G_M19657_IG16
lea r14, bword ptr [r9+4*r15+0x10] ; byrRegs +[r14] mov r11d, dword ptr [r14] @@ -125,346 +203,387 @@ G_M19657_IG06: ; bbWeight=97.69, gcrefRegs=04CC {rdx rbx rsi rdi r10}, by mov r13, gword ptr [rsi+8*r13+0x10] ; gcrRegs +[r13] cmp ecx, dword ptr [r13+0x08]
- jae G_M19657_IG19
+ jae G_M19657_IG16
imul r9d, dword ptr [r13+4*r15+0x10] add r9d, r11d mov dword ptr [r14], r9d inc eax cmp eax, 75
- jl SHORT G_M19657_IG06
+ jl SHORT G_M19657_IG10
;; size=66 bbWeight=97.69 PerfScore 2295.69
-G_M19657_IG07: ; bbWeight=1.32, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG11: ; bbWeight=1.32, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r10 r13] ; byrRegs -[r14]
- jmp SHORT G_M19657_IG10
+ jmp SHORT G_M19657_IG14
;; size=2 bbWeight=1.32 PerfScore 2.65
-G_M19657_IG08: ; bbWeight=0.01, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+G_M19657_IG12: ; bbWeight=0.01, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r11d, dword ptr [rdx+0x08] mov r9d, r8d cmp r8d, r11d
- jae G_M19657_IG19
+ jae SHORT G_M19657_IG16
mov rbx, gword ptr [rdx+8*r9+0x10] ; gcrRegs +[rbx] mov r15d, ecx
- ;; size=24 bbWeight=0.01 PerfScore 0.08 -G_M19657_IG09: ; bbWeight=0.99, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.01 PerfScore 0.08 +G_M19657_IG13: ; bbWeight=0.99, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r10, rbx ; gcrRegs +[r10] cmp ecx, dword ptr [r10+0x08]
- jae G_M19657_IG19
+ jae SHORT G_M19657_IG16
lea r14, bword ptr [r10+4*r15+0x10] ; byrRegs +[r14] mov r11d, dword ptr [r14] cmp r8d, dword ptr [rdi+0x08]
- jae G_M19657_IG19
+ jae SHORT G_M19657_IG16
mov r10, gword ptr [rdi+8*r9+0x10] ...

coreclr_tests.run.linux.x64.checked.mch

+30 (+0.89%) : 587774.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T09] ( 24, 16.97) ref -> r15 this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T26] ( 11, 4.00) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T07] ( 18, 18 ) ref -> rbx class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 19, 18 ) ref -> rbx class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T58] ( 3, 3 ) ref -> [rbp-0xB0] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 62, 44 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T13] ( 30, 12 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T36] ( 12, 5 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T05] ( 67, 44 ) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T13] ( 33, 12 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T36] ( 15, 5 ) int -> [rbp-0x34]
; V08 loc4 [V08,T37] ( 5, 5 ) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T20] ( 7, 8 ) int -> [rbp-0x3C] @@ -246,7 +246,7 @@ ; V234 cse2 [V234,T59] ( 3, 3 ) ref -> rsi "CSE - conservative" ; V235 cse3 [V235,T61] ( 3, 3 ) int -> rdx "CSE - conservative" ; V236 cse4 [V236,T60] ( 3, 3 ) ref -> rsi "CSE - conservative"
-; V237 cse5 [V237,T10] ( 18, 18 ) int -> [rbp-0xA4] spill-single-def "CSE - moderate"
+; V237 cse5 [V237,T10] ( 19, 18 ) int -> [rbp-0xA4] spill-single-def "CSE - moderate"
; V238 rat0 [V238,T11] ( 6, 16 ) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V239 rat1 [V239,T19] ( 7, 8 ) ref -> registers class-hnd "replacement local" <<unknown class>> ; @@ -453,7 +453,7 @@ G_M4730_IG15: ; bbWeight=1.00, gcVars=00000000000000300400000000040000 {V add r10, qword ptr [rdx+8*rcx] sar r10, 32 cmp r10d, dword ptr [rbp-0x9C]
- jg G_M4730_IG111
+ jg G_M4730_IG116
jmp G_M4730_IG35 ;; size=78 bbWeight=1.00 PerfScore 17.96 G_M4730_IG16: ; bbWeight=0.47, gcVars=00000000000000000400000002000000 {V04 V167}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref @@ -559,7 +559,7 @@ G_M4730_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 mov gword ptr [rbp-0xC8], r9 ; GC ptr vars +{V13} cmp gword ptr [rbp-0xB0], 0
- jne G_M4730_IG108
+ jne G_M4730_IG113
;; size=101 bbWeight=2 PerfScore 46.00 G_M4730_IG19: ; bbWeight=2, gcVars=00000000000000300400000000040000 {V04 V12 V13 V157}, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz ; gcrRegs -[rdx] @@ -649,7 +649,7 @@ G_M4730_IG26: ; bbWeight=1, gcVars=00000000000000300400000008040000 {V04 mov dword ptr [rbp-0x94], edx mov r10, 0xD1FFAB1E ; System.Int32 cmp qword ptr [rcx], r10
- jne G_M4730_IG115
+ jne G_M4730_IG120
add rcx, 8 ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -910,7 +910,7 @@ G_M4730_IG45: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 add eax, dword ptr [rbp-0x48] mov dword ptr [r15+0x18], eax cmp dword ptr [rbp-0x38], 0
- jne G_M4730_IG113
+ jne G_M4730_IG118
mov ecx, dword ptr [rbp-0x2C] mov r12d, dword ptr [rbp-0x8C] jmp G_M4730_IG04 @@ -947,23 +947,23 @@ G_M4730_IG47: ; bbWeight=1, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=20 G_M4730_IG48: ; bbWeight=0.50, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefRegs=2000 {r13}, byref mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [rcx], rsi
- jne G_M4730_IG116
+ jne G_M4730_IG121
xor rcx, rcx ;; size=21 bbWeight=0.50 PerfScore 2.25 G_M4730_IG49: ; bbWeight=1, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefRegs=2000 {r13}, byref mov r8, rcx ; gcrRegs +[r8] test r8, r8
- jne G_M4730_IG117
+ jne G_M4730_IG122
;; size=12 bbWeight=1 PerfScore 1.50 G_M4730_IG50: ; bbWeight=1, gcVars=00000000000000000400000000040000 {V04 V13}, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref ; gcrRegs -[rcx r8] ; GC ptr vars -{V12 V157} test r9, r9
- je G_M4730_IG119
+ je G_M4730_IG124
mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r9], rsi
- jne G_M4730_IG120
+ jne G_M4730_IG125
;; size=28 bbWeight=1 PerfScore 5.50 G_M4730_IG51: ; bbWeight=1, gcVars=00000000000000000400000000000000 {V04}, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref ; GC ptr vars -{V13} @@ -980,7 +980,7 @@ G_M4730_IG53: ; bbWeight=1, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=2 test rsi, rsi mov rcx, rsi ; gcrRegs +[rcx]
- je G_M4730_IG121
+ je G_M4730_IG126
;; size=12 bbWeight=1 PerfScore 1.50 G_M4730_IG54: ; bbWeight=1, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz ; gcrRegs -[rsi] @@ -1290,12 +1290,10 @@ G_M4730_IG85: ; bbWeight=0, gcVars=00000000000000100400000000000000 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M4730_IG96
+ jbe G_M4730_IG97
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M4730_IG86: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -1306,16 +1304,14 @@ G_M4730_IG86: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 cmp eax, 32 jne SHORT G_M4730_IG89 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M4730_IG87: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+G_M4730_IG87: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc edx cmp esi, edx
- jbe G_M4730_IG95
+ jbe SHORT G_M4730_IG96
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M4730_IG88: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -1323,51 +1319,48 @@ G_M4730_IG88: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 ;; size=8 bbWeight=0 PerfScore 0.00 G_M4730_IG89: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref cmp eax, 44
- jne G_M4730_IG101
+ jne G_M4730_IG106
;; size=9 bbWeight=0 PerfScore 0.00 G_M4730_IG90: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M4730_IG94
+ jbe SHORT G_M4730_IG95
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M4730_IG90
- mov eax, edi
cmp eax, 45 jne SHORT G_M4730_IG91 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M4730_IG93
+ jbe SHORT G_M4730_IG94
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=51 bbWeight=0 PerfScore 0.00
+ ;; size=43 bbWeight=0 PerfScore 0.00
G_M4730_IG91: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz lea edi, [rax-0x30] mov r9d, edi cmp r9d, 10
- jae SHORT G_M4730_IG92
+ jae SHORT G_M4730_IG93
inc edx cmp esi, edx
- ja SHORT G_M4730_IG98 - mov ecx, edx - jmp G_M4730_IG74 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M4730_IG92 + test edx, edx + jl SHORT G_M4730_IG102 + jmp SHORT G_M4730_IG99 + ;; size=24 bbWeight=0 PerfScore 0.00
G_M4730_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rbx r14-r15] ; byrRegs -[r13] ; GC ptr vars -{V04 V157}
- mov dword ptr [rbp-0x2C], edx - jmp G_M4730_IG73 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M4730_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M4730_IG74 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M4730_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M4730_IG73 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M4730_IG94: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M4730_IG74 @@ -1380,47 +1373,77 @@ G_M4730_IG96: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M4730_IG74 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M4730_IG97: ; bbWeight=0, gcVars=00000000000000100400000000000000 {V04 V157}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+G_M4730_IG97: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M4730_IG74 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M4730_IG98: ; bbWeight=0, gcVars=00000000000000100400000000000000 {V04 V157}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
; gcrRegs +[rbx r14-r15] ; byrRegs +[r13] ; GC ptr vars +{V04 V157} lea r9d, [r9+4*r9]
- lea r9d, [rdi+2*r9-0x30]
+ lea r9d, [rax+2*r9-0x30] + inc edx + cmp esi, edx + jbe SHORT G_M4730_IG100 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M4730_IG99: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + mov eax, edx + movzx rax, word ptr [rbx+2*rax+0x0C] + lea edi, [rax-0x30] + cmp edi, 9 + ja SHORT G_M4730_IG105 + cmp r9d, 0xD1FFAB1E + jl SHORT G_M4730_IG98 + jmp SHORT G_M4730_IG103 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M4730_IG100: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rbx r14-r15] + ; byrRegs -[r13] + ; GC ptr vars -{V04 V157} + mov ecx, edx + jmp G_M4730_IG74 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M4730_IG101: ; bbWeight=0, gcVars=00000000000000100400000000000000 {V04 V157}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref + ; gcrRegs +[rbx r14-r15] + ; byrRegs +[r13] + ; GC ptr vars +{V04 V157} + lea r9d, [r9+4*r9] + lea r9d, [rax+2*r9-0x30]
mov dword ptr [rbp-0x34], r9d inc edx cmp esi, edx mov r9d, dword ptr [rbp-0x34]
- jbe G_M4730_IG106
+ jbe G_M4730_IG111
...

+30 (+0.89%) : 591299.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T09] ( 24, 17.00) ref -> r15 this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T27] ( 11, 4.00) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T07] ( 18, 18 ) ref -> rbx class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 19, 18 ) ref -> rbx class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T59] ( 3, 3 ) ref -> [rbp-0xB0] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 62, 44 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T13] ( 30, 12 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T36] ( 12, 5 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T05] ( 67, 44 ) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T13] ( 33, 12 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T36] ( 15, 5 ) int -> [rbp-0x34]
; V08 loc4 [V08,T37] ( 5, 5 ) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T20] ( 7, 8 ) int -> [rbp-0x3C] @@ -246,7 +246,7 @@ ; V234 cse2 [V234,T60] ( 3, 3 ) ref -> rsi "CSE - conservative" ; V235 cse3 [V235,T62] ( 3, 3 ) int -> rdx "CSE - conservative" ; V236 cse4 [V236,T61] ( 3, 3 ) ref -> rsi "CSE - conservative"
-; V237 cse5 [V237,T10] ( 18, 18 ) int -> [rbp-0xA4] spill-single-def "CSE - moderate"
+; V237 cse5 [V237,T10] ( 19, 18 ) int -> [rbp-0xA4] spill-single-def "CSE - moderate"
; V238 rat0 [V238,T11] ( 6, 16 ) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V239 rat1 [V239,T19] ( 7, 8 ) ref -> registers class-hnd "replacement local" <<unknown class>> ; @@ -453,7 +453,7 @@ G_M4730_IG15: ; bbWeight=1.00, gcVars=00000000000000300800000000040000 {V add r10, qword ptr [rdx+8*rcx] sar r10, 32 cmp r10d, dword ptr [rbp-0x9C]
- jg G_M4730_IG112
+ jg G_M4730_IG117
;; size=73 bbWeight=1.00 PerfScore 15.97 G_M4730_IG16: ; bbWeight=1.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=3000 {r12 r13}, byref jmp G_M4730_IG36 @@ -561,7 +561,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 mov gword ptr [rbp-0xC8], r9 ; GC ptr vars +{V13} cmp gword ptr [rbp-0xB0], 0
- jne G_M4730_IG109
+ jne G_M4730_IG114
;; size=101 bbWeight=2 PerfScore 46.00 G_M4730_IG20: ; bbWeight=2, gcVars=00000000000000300800000000040000 {V04 V12 V13 V157}, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz ; gcrRegs -[rdx] @@ -651,7 +651,7 @@ G_M4730_IG27: ; bbWeight=1, gcVars=00000000000000300800000010040000 {V04 mov dword ptr [rbp-0x94], edx mov r10, 0xD1FFAB1E ; System.Int32 cmp qword ptr [rcx], r10
- jne G_M4730_IG116
+ jne G_M4730_IG121
add rcx, 8 ; gcrRegs -[rcx] ; byrRegs +[rcx] @@ -912,7 +912,7 @@ G_M4730_IG46: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 add eax, dword ptr [rbp-0x48] mov dword ptr [r15+0x18], eax cmp dword ptr [rbp-0x38], 0
- jne G_M4730_IG114
+ jne G_M4730_IG119
mov ecx, dword ptr [rbp-0x2C] mov r12d, dword ptr [rbp-0x8C] jmp G_M4730_IG04 @@ -949,23 +949,23 @@ G_M4730_IG48: ; bbWeight=1, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=20 G_M4730_IG49: ; bbWeight=0.50, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefRegs=2000 {r13}, byref mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [rcx], rsi
- jne G_M4730_IG117
+ jne G_M4730_IG122
xor rcx, rcx ;; size=21 bbWeight=0.50 PerfScore 2.25 G_M4730_IG50: ; bbWeight=1, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefRegs=2000 {r13}, byref mov r8, rcx ; gcrRegs +[r8] test r8, r8
- jne G_M4730_IG118
+ jne G_M4730_IG123
;; size=12 bbWeight=1 PerfScore 1.50 G_M4730_IG51: ; bbWeight=1, gcVars=00000000000000000800000000040000 {V04 V13}, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref ; gcrRegs -[rcx r8] ; GC ptr vars -{V12 V157} test r9, r9
- je G_M4730_IG120
+ je G_M4730_IG125
mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r9], rsi
- jne G_M4730_IG121
+ jne G_M4730_IG126
;; size=28 bbWeight=1 PerfScore 5.50 G_M4730_IG52: ; bbWeight=1, gcVars=00000000000000000800000000000000 {V04}, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref ; GC ptr vars -{V13} @@ -982,7 +982,7 @@ G_M4730_IG54: ; bbWeight=1, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=2 test rsi, rsi mov rcx, rsi ; gcrRegs +[rcx]
- je G_M4730_IG122
+ je G_M4730_IG127
;; size=12 bbWeight=1 PerfScore 1.50 G_M4730_IG55: ; bbWeight=1, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz ; gcrRegs -[rsi] @@ -1292,12 +1292,10 @@ G_M4730_IG86: ; bbWeight=0, gcVars=00000000000000100800000000000000 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M4730_IG97
+ jbe G_M4730_IG98
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M4730_IG87: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -1308,16 +1306,14 @@ G_M4730_IG87: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 cmp eax, 32 jne SHORT G_M4730_IG90 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M4730_IG88: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+G_M4730_IG88: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc edx cmp esi, edx
- jbe G_M4730_IG96
+ jbe SHORT G_M4730_IG97
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M4730_IG89: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -1325,51 +1321,48 @@ G_M4730_IG89: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 ;; size=8 bbWeight=0 PerfScore 0.00 G_M4730_IG90: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref cmp eax, 44
- jne G_M4730_IG102
+ jne G_M4730_IG107
;; size=9 bbWeight=0 PerfScore 0.00 G_M4730_IG91: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M4730_IG95
+ jbe SHORT G_M4730_IG96
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M4730_IG91
- mov eax, edi
cmp eax, 45 jne SHORT G_M4730_IG92 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M4730_IG94
+ jbe SHORT G_M4730_IG95
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=51 bbWeight=0 PerfScore 0.00
+ ;; size=43 bbWeight=0 PerfScore 0.00
G_M4730_IG92: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz lea edi, [rax-0x30] mov r9d, edi cmp r9d, 10
- jae SHORT G_M4730_IG93
+ jae SHORT G_M4730_IG94
inc edx cmp esi, edx
- ja SHORT G_M4730_IG99 - mov ecx, edx - jmp G_M4730_IG75 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M4730_IG93 + test edx, edx + jl SHORT G_M4730_IG103 + jmp SHORT G_M4730_IG100 + ;; size=24 bbWeight=0 PerfScore 0.00
G_M4730_IG93: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rbx r14-r15] ; byrRegs -[r13] ; GC ptr vars -{V04 V157}
- mov dword ptr [rbp-0x2C], edx - jmp G_M4730_IG74 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M4730_IG94: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M4730_IG75 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M4730_IG94: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M4730_IG74 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M4730_IG95: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M4730_IG75 @@ -1382,47 +1375,77 @@ G_M4730_IG97: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M4730_IG75 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M4730_IG98: ; bbWeight=0, gcVars=00000000000000100800000000000000 {V04 V157}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+G_M4730_IG98: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M4730_IG75 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M4730_IG99: ; bbWeight=0, gcVars=00000000000000100800000000000000 {V04 V157}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
; gcrRegs +[rbx r14-r15] ; byrRegs +[r13] ; GC ptr vars +{V04 V157} lea r9d, [r9+4*r9]
- lea r9d, [rdi+2*r9-0x30]
+ lea r9d, [rax+2*r9-0x30] + inc edx + cmp esi, edx + jbe SHORT G_M4730_IG101 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M4730_IG100: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + mov eax, edx + movzx rax, word ptr [rbx+2*rax+0x0C] + lea edi, [rax-0x30] + cmp edi, 9 + ja SHORT G_M4730_IG106 + cmp r9d, 0xD1FFAB1E + jl SHORT G_M4730_IG99 + jmp SHORT G_M4730_IG104 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M4730_IG101: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rbx r14-r15] + ; byrRegs -[r13] + ; GC ptr vars -{V04 V157} + mov ecx, edx + jmp G_M4730_IG75 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M4730_IG102: ; bbWeight=0, gcVars=00000000000000100800000000000000 {V04 V157}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref + ; gcrRegs +[rbx r14-r15] + ; byrRegs +[r13] + ; GC ptr vars +{V04 V157} + lea r9d, [r9+4*r9] + lea r9d, [rax+2*r9-0x30]
mov dword ptr [rbp-0x34], r9d inc edx cmp esi, edx mov r9d, dword ptr [rbp-0x34]
- jbe G_M4730_IG107
+ jbe G_M4730_IG112
...

+34 (+1.07%) : 318690.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T02] ( 47, 20.50) byref -> rbx this single-def ; V01 arg1 [V01,T16] ( 10, 5.63) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 19, 12 ) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 20, 12 ) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T66] ( 3, 2 ) ref -> [rbp-0x90] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 63, 25 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T18] ( 31, 6 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T59] ( 13, 2.50) int -> [rbp-0x34]
+; V05 loc1 [V05,T01] ( 68, 25 ) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T18] ( 34, 6 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T59] ( 16, 2.50) int -> [rbp-0x34]
; V08 loc4 [V08,T60] ( 5, 2.50) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T32] ( 7, 4 ) int -> [rbp-0x3C] @@ -253,7 +253,7 @@ ; V241 cse3 [V241,T76] ( 3, 1.50) int -> rax "CSE - conservative" ; V242 cse4 [V242,T75] ( 5, 1.50) int -> registers multi-def "CSE - conservative" ; V243 cse5 [V243,T00] ( 29, 92.99) ref -> registers multi-def "CSE - aggressive"
-; V244 cse6 [V244,T07] ( 20, 11 ) int -> [rbp-0x84] "CSE - moderate"
+; V244 cse6 [V244,T07] ( 21, 11 ) int -> [rbp-0x84] "CSE - moderate"
; V245 rat0 [V245,T17] ( 5, 7.50) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V246 rat1 [V246,T33] ( 6, 4 ) ref -> registers class-hnd "replacement local" <<unknown class>> ; @@ -299,7 +299,7 @@ G_M36935_IG04: ; bbWeight=2, gcVars=00000000000000040000000000000000 {V04 ; gcrRegs -[rax] mov edx, dword ptr [r15+0x08] cmp edx, ecx
- jbe G_M36935_IG115
+ jbe G_M36935_IG120
;; size=12 bbWeight=2 PerfScore 6.50 G_M36935_IG05: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz mov edi, ecx @@ -351,7 +351,7 @@ G_M36935_IG07: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb G_M36935_IG08: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref mov ecx, dword ptr [rbp-0x80] cmp eax, ecx
- ja G_M36935_IG123
+ ja G_M36935_IG128
mov edi, dword ptr [rbx+0x08] mov esi, dword ptr [rbx+0x18] sub esi, eax @@ -364,7 +364,7 @@ G_M36935_IG09: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb mov esi, dword ptr [rbx+0x08] mov ecx, dword ptr [rdi+0x08] cmp esi, ecx
- ja G_M36935_IG123
+ ja G_M36935_IG128
mov rdi, bword ptr [rdi] mov edx, esi lea rdx, bword ptr [rdi+2*rdx] @@ -393,7 +393,7 @@ G_M36935_IG10: ; bbWeight=4, gcVars=00000000000000040000001000080000 {V04 G_M36935_IG11: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz mov eax, dword ptr [rbp-0x50] cmp eax, dword ptr [rbp-0x54]
- ja G_M36935_IG124
+ ja G_M36935_IG129
mov edx, eax add rdx, rdx cmp rdx, 2 @@ -434,14 +434,14 @@ G_M36935_IG14: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb movzx rdi, word ptr [r15+2*rdi+0x0C] inc ecx cmp edx, ecx
- jbe G_M36935_IG119
+ jbe G_M36935_IG124
mov esi, ecx movzx r8, word ptr [r15+2*rsi+0x0C] mov dword ptr [rbp-0x30], r8d cmp edi, r8d je G_M36935_IG70 cmp edi, 123
- jne G_M36935_IG117
+ jne G_M36935_IG122
xor r9d, r9d mov dword ptr [rbp-0x34], r9d xor r10d, r10d @@ -492,7 +492,7 @@ G_M36935_IG18: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb lea ecx, [rax-0x30] mov dword ptr [rbp-0x3C], ecx cmp ecx, 10
- jae G_M36935_IG118
+ jae G_M36935_IG123
mov edx, dword ptr [rbp-0x2C] inc edx mov r8d, dword ptr [rbp-0x84] @@ -535,14 +535,14 @@ G_M36935_IG21: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ; GC ptr vars +{V12} mov r8d, dword ptr [rbp-0x3C] cmp r8d, r12d
- jae G_M36935_IG122
+ jae G_M36935_IG127
mov esi, r8d mov r9, gword ptr [r13+8*rsi] ; gcrRegs +[r9] mov gword ptr [rbp-0xA8], r9 ; GC ptr vars +{V13} cmp gword ptr [rbp-0x90], 0
- jne G_M36935_IG96
+ jne G_M36935_IG101
;; size=61 bbWeight=1 PerfScore 12.25 G_M36935_IG22: ; bbWeight=1, gcVars=00000000000021040000000080000000 {V04 V12 V13 V162}, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz ; gcrRegs -[rdx] @@ -578,7 +578,7 @@ G_M36935_IG26: ; bbWeight=0.50, gcVars=00000000000021040002000080000000 { mov r8d, dword ptr [rbx+0x08] mov edx, dword ptr [rsi+0x08] cmp r8d, edx
- ja G_M36935_IG123
+ ja G_M36935_IG128
mov rsi, bword ptr [rsi] mov r10d, r8d lea r10, bword ptr [rsi+2*r10] @@ -614,7 +614,7 @@ G_M36935_IG28: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov r8, gword ptr [rbp-0xB0] ; gcrRegs +[r8] cmp qword ptr [r8], rdi
- jne G_M36935_IG99
+ jne G_M36935_IG104
add r8, 8 ; gcrRegs -[r8] ; byrRegs +[r8] @@ -658,7 +658,7 @@ G_M36935_IG33: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 { ; byrRegs -[rax rbx r13] ; GC ptr vars -{V04 V12 V13 V162 V168} mov ecx, edx
- jmp G_M36935_IG119
+ jmp G_M36935_IG124
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M36935_IG34: ; bbWeight=0.13, gcVars=00000000000021040000000081000000 {V04 V12 V13 V162 V168}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz ; gcrRegs +[r14-r15] @@ -778,7 +778,7 @@ G_M36935_IG42: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov esi, dword ptr [rbp-0x48] add dword ptr [rbx+0x08], esi cmp dword ptr [rbp-0x38], 0
- jne G_M36935_IG100
+ jne G_M36935_IG105
mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG04 ;; size=35 bbWeight=0.50 PerfScore 6.12 @@ -794,12 +794,12 @@ G_M36935_IG44: ; bbWeight=0.50, gcrefRegs=C202 {rcx r9 r14 r15}, byrefReg mov gword ptr [rbp-0xB8], r8 ; GC ptr vars +{V20} test r8, r8
- jne G_M36935_IG102
+ jne G_M36935_IG107
test r9, r9
- je G_M36935_IG105
+ je G_M36935_IG110
mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r9], rsi
- jne G_M36935_IG106
+ jne G_M36935_IG111
;; size=47 bbWeight=0.50 PerfScore 4.00 G_M36935_IG45: ; bbWeight=0.50, gcVars=00000000000000040000000000000000 {V04}, gcrefRegs=C200 {r9 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rcx r8] @@ -817,13 +817,13 @@ G_M36935_IG47: ; bbWeight=0.50, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2 test rsi, rsi mov rcx, rsi ; gcrRegs +[rcx]
- je G_M36935_IG107
+ je G_M36935_IG112
;; size=12 bbWeight=0.50 PerfScore 0.75 G_M36935_IG48: ; bbWeight=0.50, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2008 {rbx r13}, byref ; gcrRegs -[rsi] mov edi, dword ptr [rbp-0x34] cmp dword ptr [rcx+0x08], edi
- jl G_M36935_IG108
+ jl G_M36935_IG113
;; size=12 bbWeight=0.50 PerfScore 2.50 G_M36935_IG49: ; bbWeight=0.50, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2008 {rbx r13}, byref mov edx, dword ptr [rbx+0x08] @@ -855,7 +855,7 @@ G_M36935_IG52: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov eax, dword ptr [rdi+0x08] mov esi, dword ptr [rbp-0x70] cmp esi, eax
- ja G_M36935_IG123
+ ja G_M36935_IG128
mov rdi, bword ptr [rdi] mov ecx, esi lea rcx, bword ptr [rdi+2*rcx] @@ -885,7 +885,7 @@ G_M36935_IG54: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 ; gcrRegs +[rax] mov edi, dword ptr [rbp-0x74] cmp dword ptr [rax+0x08], edi
- ja G_M36935_IG124
+ ja G_M36935_IG129
lea rsi, bword ptr [rax+0x0C] ; byrRegs +[rsi] mov gword ptr [rbp-0x98], rax @@ -925,7 +925,7 @@ G_M36935_IG57: ; bbWeight=1, gcVars=00000000000000000000000000080000 {V17 mov r15d, dword ptr [rbp-0x80] sub esi, r15d cmp edi, esi
- jg G_M36935_IG116
+ jg G_M36935_IG121
;; size=21 bbWeight=1 PerfScore 6.50 G_M36935_IG58: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz lea rdi, bword ptr [rbx+0x10] @@ -933,7 +933,7 @@ G_M36935_IG58: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr mov esi, dword ptr [rbx+0x08] mov r14d, dword ptr [rdi+0x08] cmp esi, r14d
- ja G_M36935_IG123
+ ja G_M36935_IG128
mov rdi, bword ptr [rdi] mov eax, esi lea r13, bword ptr [rdi+2*rax] @@ -955,7 +955,7 @@ G_M36935_IG58: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ;; size=59 bbWeight=1 PerfScore 13.75 G_M36935_IG59: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=2008 {rbx r13}, byref, isz cmp r15d, r14d
- ja G_M36935_IG124
+ ja G_M36935_IG129
mov edx, r15d add rdx, rdx cmp rdx, 2 @@ -971,7 +971,7 @@ G_M36935_IG61: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, ; byrRegs -[r13-r14] ; GC ptr vars -{V170} add dword ptr [rbx+0x08], r15d
- jmp G_M36935_IG115
+ jmp G_M36935_IG120
;; size=9 bbWeight=1 PerfScore 5.00 G_M36935_IG62: ; bbWeight=0.25, gcVars=00000000000000050000000000000400 {V04 V11 V148}, gcrefRegs=C000 {r14 r15}, byrefRegs=2048 {rbx rsi r13}, gcvars, byref ; gcrRegs +[r14-r15] @@ -1005,7 +1005,7 @@ G_M36935_IG64: ; bbWeight=0.25, gcVars=00000000000021040000000080000000 { ; GC ptr vars +{V04 V12 V13 V77 V162} mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [rcx], rsi
- jne G_M36935_IG104
+ jne G_M36935_IG109
xor rcx, rcx jmp G_M36935_IG44 ;; size=26 bbWeight=0.25 PerfScore 1.62 @@ -1115,12 +1115,10 @@ G_M36935_IG73: ; bbWeight=0, gcVars=00000000000001040000000000000000 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp r8d, edx
- jbe G_M36935_IG84
+ jbe G_M36935_IG85
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=33 bbWeight=0 PerfScore 0.00
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M36935_IG74: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] ...

+48 (+1.62%) : 594632.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T02] ( 42, 35.99) byref -> rbx this single-def ; V01 arg1 [V01,T43] ( 8, 3.50) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T06] ( 19, 19 ) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T06] ( 20, 19 ) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T54] ( 3, 3 ) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 63, 46 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T13] ( 31, 12 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T31] ( 12, 6 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T01] ( 68, 46 ) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T13] ( 34, 12 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T31] ( 15, 6 ) int -> [rbp-0x34]
; V08 loc4 [V08,T49] ( 5, 4 ) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T26] ( 7, 8 ) int -> [rbp-0x3C] @@ -180,7 +180,7 @@ ; V168 cse1 [V168,T42] ( 5, 6.00) int -> registers multi-def "CSE - moderate" ; V169 cse2 [V169,T55] ( 3, 3 ) int -> r14 "CSE - conservative" ; V170 cse3 [V170,T04] ( 12, 21.97) int -> [rbp-0x74] spill-single-def "CSE - moderate"
-; V171 cse4 [V171,T08] ( 20, 19 ) int -> [rbp-0x78] "CSE - moderate"
+; V171 cse4 [V171,T08] ( 21, 19 ) int -> [rbp-0x78] "CSE - moderate"
; V172 cse5 [V172,T05] ( 9, 21.97) byref -> [rbp-0xF0] multi-def "CSE - moderate" ; V173 rat0 [V173,T10] ( 7, 16 ) ref -> registers class-hnd "replacement local" <<unknown class>> ; V174 rat1 [V174,T11] ( 7, 16 ) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -460,7 +460,7 @@ G_M36935_IG15: ; bbWeight=2, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 mov gword ptr [rbp-0x98], r8 ; GC ptr vars +{V13} cmp gword ptr [rbp-0x80], 0
- jne G_M36935_IG91
+ jne G_M36935_IG96
;; size=37 bbWeight=2 PerfScore 17.00 G_M36935_IG16: ; bbWeight=2, gcVars=00000000000000000840000000008020 {V04 V13 V113 V172}, gcrefRegs=C142 {rcx rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz ; gcrRegs +[rcx] @@ -486,7 +486,7 @@ G_M36935_IG18: ; bbWeight=2, gcrefRegs=C102 {rcx r8 r14 r15}, byrefRegs=2 G_M36935_IG19: ; bbWeight=1, gcrefRegs=C902 {rcx r8 r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r11], rsi
- jne G_M36935_IG94
+ jne G_M36935_IG99
xor r11, r11 ;; size=22 bbWeight=1 PerfScore 4.50 G_M36935_IG20: ; bbWeight=2, gcrefRegs=C902 {rcx r8 r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref @@ -508,7 +508,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=C102 {rcx r8 r14 r15}, byrefRegs=2 G_M36935_IG23: ; bbWeight=1, gcrefRegs=C142 {rcx rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, byref mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rdi
- jne G_M36935_IG97
+ jne G_M36935_IG102
xor rsi, rsi xor rdi, rdi ; gcrRegs +[rdi] @@ -519,16 +519,16 @@ G_M36935_IG24: ; bbWeight=2, gcrefRegs=C142 {rcx rsi r8 r14 r15}, byrefRe mov rdi, rsi ; gcrRegs +[rdi] test rdi, rdi
- jne G_M36935_IG98
+ jne G_M36935_IG103
;; size=12 bbWeight=2 PerfScore 3.00 G_M36935_IG25: ; bbWeight=2, gcVars=00000000000000000040000000008020 {V04 V13 V172}, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rcx rsi rdi] ; GC ptr vars -{V113} test r8, r8
- je G_M36935_IG101
+ je G_M36935_IG106
mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r8], rsi
- jne G_M36935_IG102
+ jne G_M36935_IG107
;; size=28 bbWeight=2 PerfScore 11.00 G_M36935_IG26: ; bbWeight=2, gcVars=00000000000000000040000000000020 {V04 V172}, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; GC ptr vars -{V13} @@ -540,7 +540,7 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 test rsi, rsi mov dword ptr [rbp-0x34], edx mov dword ptr [rbp-0x38], r10d
- je G_M36935_IG103
+ je G_M36935_IG108
;; size=16 bbWeight=2 PerfScore 6.50 G_M36935_IG28: ; bbWeight=2, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref mov ecx, dword ptr [rsi+0x08] @@ -634,7 +634,7 @@ G_M36935_IG35: ; bbWeight=1, gcVars=00000000000000000840000000008020 {V04 ; GC ptr vars -{V05 V11} +{V13 V113} mov gword ptr [rbp-0x90], rcx ; GC ptr vars +{V12}
- jmp G_M36935_IG95
+ jmp G_M36935_IG100
;; size=12 bbWeight=1 PerfScore 3.00 G_M36935_IG36: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rcx rdi r8 r14-r15] @@ -816,12 +816,15 @@ G_M36935_IG49: ; bbWeight=0, gcVars=00000000000000000040000000000020 {V04 jne SHORT G_M36935_IG50 cmp edi, dword ptr [rbx+0x18] jae SHORT G_M36935_IG50
- mov rsi, bword ptr [rbp-0xF0]
+ mov rax, bword ptr [rbp-0xF0] + ; byrRegs +[rax] + mov rsi, rax
; byrRegs +[rsi] cmp edi, dword ptr [rsi+0x08] jae G_M36935_IG61 mov rsi, bword ptr [rsi] mov eax, edi
+ ; byrRegs -[rax]
mov rcx, gword ptr [rbp-0x88] ; gcrRegs +[rcx] movzx rcx, word ptr [rcx+0x0C] @@ -831,7 +834,7 @@ G_M36935_IG49: ; bbWeight=0, gcVars=00000000000000000040000000000020 {V04 mov dword ptr [rbx+0x08], edi mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG06
- ;; size=86 bbWeight=0 PerfScore 0.00
+ ;; size=89 bbWeight=0 PerfScore 0.00
G_M36935_IG50: ; bbWeight=0, gcVars=00000000000000000040000000004000 {V04 V11}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; byrRegs -[rsi] ; GC ptr vars -{V172} @@ -845,13 +848,12 @@ G_M36935_IG50: ; bbWeight=0, gcVars=00000000000000000040000000004000 {V04 ; byrRegs -[rdi] ; gcr arg pop 0 mov esi, dword ptr [r15+0x08]
- mov edi, esi - mov eax, dword ptr [rbp-0x2C] - cmp edi, eax - mov ecx, eax - mov edx, edi
+ mov eax, esi + mov ecx, dword ptr [rbp-0x2C] + cmp eax, ecx + mov edx, eax
ja G_M36935_IG07
- ;; size=37 bbWeight=0 PerfScore 0.00
+ ;; size=35 bbWeight=0 PerfScore 0.00
G_M36935_IG51: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] @@ -1009,12 +1011,10 @@ G_M36935_IG68: ; bbWeight=0, gcVars=00000000000000000840000000000020 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG79
+ jbe G_M36935_IG80
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG69: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -1025,16 +1025,14 @@ G_M36935_IG69: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb cmp eax, 32 jne SHORT G_M36935_IG72 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG70: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG70: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx cmp esi, edx
- jbe G_M36935_IG78
+ jbe SHORT G_M36935_IG79
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=25 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
G_M36935_IG71: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -1042,50 +1040,47 @@ G_M36935_IG71: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG72: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref cmp eax, 44
- jne G_M36935_IG84
+ jne G_M36935_IG89
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG73: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M36935_IG77
+ jbe SHORT G_M36935_IG78
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG73
- mov eax, edi
cmp eax, 45 jne SHORT G_M36935_IG74 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M36935_IG76
+ jbe SHORT G_M36935_IG77
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG74: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz add eax, -48 cmp eax, 10
- jae SHORT G_M36935_IG75
+ jae SHORT G_M36935_IG76
inc edx cmp esi, edx
- ja SHORT G_M36935_IG81 - mov ecx, edx - jmp G_M36935_IG55 - ;; size=21 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG75 + test edx, edx + jl SHORT G_M36935_IG85 + jmp SHORT G_M36935_IG82 + ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG75: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] ; GC ptr vars -{V04 V05 V113 V172}
- mov dword ptr [rbp-0x2C], edx - jmp G_M36935_IG54 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG76: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M36935_IG55 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG76: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M36935_IG54 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG77: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG55 @@ -1098,45 +1093,79 @@ G_M36935_IG79: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG55 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG80: ; bbWeight=0, gcVars=00000000000000000840000000000020 {V04 V113 V172}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG80: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M36935_IG55 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG81: ; bbWeight=0, gcVars=00000000000000000840000000000020 {V04 V113 V172}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15] ; byrRegs +[rbx r13] ; GC ptr vars +{V04 V05 V113 V172} ...

+48 (+1.62%) : 595208.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T02] ( 42, 35.99) byref -> rbx this single-def ; V01 arg1 [V01,T43] ( 8, 3.50) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T06] ( 19, 19 ) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T06] ( 20, 19 ) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T54] ( 3, 3 ) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 63, 46 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T13] ( 31, 12 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T31] ( 12, 6 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T01] ( 68, 46 ) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T13] ( 34, 12 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T31] ( 15, 6 ) int -> [rbp-0x34]
; V08 loc4 [V08,T49] ( 5, 4 ) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T26] ( 7, 8 ) int -> [rbp-0x3C] @@ -180,7 +180,7 @@ ; V168 cse1 [V168,T42] ( 5, 6.00) int -> registers multi-def "CSE - moderate" ; V169 cse2 [V169,T55] ( 3, 3 ) int -> r14 "CSE - conservative" ; V170 cse3 [V170,T04] ( 12, 21.97) int -> [rbp-0x74] spill-single-def "CSE - moderate"
-; V171 cse4 [V171,T08] ( 20, 19 ) int -> [rbp-0x78] "CSE - moderate"
+; V171 cse4 [V171,T08] ( 21, 19 ) int -> [rbp-0x78] "CSE - moderate"
; V172 cse5 [V172,T05] ( 9, 21.97) byref -> [rbp-0xF0] multi-def "CSE - moderate" ; V173 rat0 [V173,T10] ( 7, 16 ) ref -> registers class-hnd "replacement local" <<unknown class>> ; V174 rat1 [V174,T11] ( 7, 16 ) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -460,7 +460,7 @@ G_M36935_IG15: ; bbWeight=2, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 mov gword ptr [rbp-0x98], r8 ; GC ptr vars +{V13} cmp gword ptr [rbp-0x80], 0
- jne G_M36935_IG91
+ jne G_M36935_IG96
;; size=37 bbWeight=2 PerfScore 17.00 G_M36935_IG16: ; bbWeight=2, gcVars=00000000000000000840000000008020 {V04 V13 V113 V172}, gcrefRegs=C142 {rcx rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz ; gcrRegs +[rcx] @@ -486,7 +486,7 @@ G_M36935_IG18: ; bbWeight=2, gcrefRegs=C102 {rcx r8 r14 r15}, byrefRegs=2 G_M36935_IG19: ; bbWeight=1, gcrefRegs=C902 {rcx r8 r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r11], rsi
- jne G_M36935_IG94
+ jne G_M36935_IG99
xor r11, r11 ;; size=22 bbWeight=1 PerfScore 4.50 G_M36935_IG20: ; bbWeight=2, gcrefRegs=C902 {rcx r8 r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref @@ -508,7 +508,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=C102 {rcx r8 r14 r15}, byrefRegs=2 G_M36935_IG23: ; bbWeight=1, gcrefRegs=C142 {rcx rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, byref mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rdi
- jne G_M36935_IG97
+ jne G_M36935_IG102
xor rsi, rsi xor rdi, rdi ; gcrRegs +[rdi] @@ -519,16 +519,16 @@ G_M36935_IG24: ; bbWeight=2, gcrefRegs=C142 {rcx rsi r8 r14 r15}, byrefRe mov rdi, rsi ; gcrRegs +[rdi] test rdi, rdi
- jne G_M36935_IG98
+ jne G_M36935_IG103
;; size=12 bbWeight=2 PerfScore 3.00 G_M36935_IG25: ; bbWeight=2, gcVars=00000000000000000040000000008020 {V04 V13 V172}, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rcx rsi rdi] ; GC ptr vars -{V113} test r8, r8
- je G_M36935_IG101
+ je G_M36935_IG106
mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r8], rsi
- jne G_M36935_IG102
+ jne G_M36935_IG107
;; size=28 bbWeight=2 PerfScore 11.00 G_M36935_IG26: ; bbWeight=2, gcVars=00000000000000000040000000000020 {V04 V172}, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; GC ptr vars -{V13} @@ -540,7 +540,7 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 test rsi, rsi mov dword ptr [rbp-0x34], edx mov dword ptr [rbp-0x38], r10d
- je G_M36935_IG103
+ je G_M36935_IG108
;; size=16 bbWeight=2 PerfScore 6.50 G_M36935_IG28: ; bbWeight=2, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref mov ecx, dword ptr [rsi+0x08] @@ -634,7 +634,7 @@ G_M36935_IG35: ; bbWeight=1, gcVars=00000000000000000840000000008020 {V04 ; GC ptr vars -{V05 V11} +{V13 V113} mov gword ptr [rbp-0x90], rcx ; GC ptr vars +{V12}
- jmp G_M36935_IG95
+ jmp G_M36935_IG100
;; size=12 bbWeight=1 PerfScore 3.00 G_M36935_IG36: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rcx rdi r8 r14-r15] @@ -816,12 +816,15 @@ G_M36935_IG49: ; bbWeight=0, gcVars=00000000000000000040000000000020 {V04 jne SHORT G_M36935_IG50 cmp edi, dword ptr [rbx+0x18] jae SHORT G_M36935_IG50
- mov rsi, bword ptr [rbp-0xF0]
+ mov rax, bword ptr [rbp-0xF0] + ; byrRegs +[rax] + mov rsi, rax
; byrRegs +[rsi] cmp edi, dword ptr [rsi+0x08] jae G_M36935_IG61 mov rsi, bword ptr [rsi] mov eax, edi
+ ; byrRegs -[rax]
mov rcx, gword ptr [rbp-0x88] ; gcrRegs +[rcx] movzx rcx, word ptr [rcx+0x0C] @@ -831,7 +834,7 @@ G_M36935_IG49: ; bbWeight=0, gcVars=00000000000000000040000000000020 {V04 mov dword ptr [rbx+0x08], edi mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG06
- ;; size=86 bbWeight=0 PerfScore 0.00
+ ;; size=89 bbWeight=0 PerfScore 0.00
G_M36935_IG50: ; bbWeight=0, gcVars=00000000000000000040000000004000 {V04 V11}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; byrRegs -[rsi] ; GC ptr vars -{V172} @@ -845,13 +848,12 @@ G_M36935_IG50: ; bbWeight=0, gcVars=00000000000000000040000000004000 {V04 ; byrRegs -[rdi] ; gcr arg pop 0 mov esi, dword ptr [r15+0x08]
- mov edi, esi - mov eax, dword ptr [rbp-0x2C] - cmp edi, eax - mov ecx, eax - mov edx, edi
+ mov eax, esi + mov ecx, dword ptr [rbp-0x2C] + cmp eax, ecx + mov edx, eax
ja G_M36935_IG07
- ;; size=37 bbWeight=0 PerfScore 0.00
+ ;; size=35 bbWeight=0 PerfScore 0.00
G_M36935_IG51: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] @@ -1009,12 +1011,10 @@ G_M36935_IG68: ; bbWeight=0, gcVars=00000000000000000840000000000020 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG79
+ jbe G_M36935_IG80
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG69: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -1025,16 +1025,14 @@ G_M36935_IG69: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb cmp eax, 32 jne SHORT G_M36935_IG72 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG70: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG70: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx cmp esi, edx
- jbe G_M36935_IG78
+ jbe SHORT G_M36935_IG79
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=25 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
G_M36935_IG71: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -1042,50 +1040,47 @@ G_M36935_IG71: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG72: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref cmp eax, 44
- jne G_M36935_IG84
+ jne G_M36935_IG89
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG73: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M36935_IG77
+ jbe SHORT G_M36935_IG78
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG73
- mov eax, edi
cmp eax, 45 jne SHORT G_M36935_IG74 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M36935_IG76
+ jbe SHORT G_M36935_IG77
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG74: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz add eax, -48 cmp eax, 10
- jae SHORT G_M36935_IG75
+ jae SHORT G_M36935_IG76
inc edx cmp esi, edx
- ja SHORT G_M36935_IG81 - mov ecx, edx - jmp G_M36935_IG55 - ;; size=21 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG75 + test edx, edx + jl SHORT G_M36935_IG85 + jmp SHORT G_M36935_IG82 + ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG75: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] ; GC ptr vars -{V04 V05 V113 V172}
- mov dword ptr [rbp-0x2C], edx - jmp G_M36935_IG54 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG76: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M36935_IG55 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG76: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M36935_IG54 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG77: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG55 @@ -1098,45 +1093,79 @@ G_M36935_IG79: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG55 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG80: ; bbWeight=0, gcVars=00000000000000000840000000000020 {V04 V113 V172}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG80: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M36935_IG55 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG81: ; bbWeight=0, gcVars=00000000000000000840000000000020 {V04 V113 V172}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15] ; byrRegs +[rbx r13] ; GC ptr vars +{V04 V05 V113 V172} ...

+31 (+2.71%) : 475934.dasm - JitTestlcsmixedlcs_cs.LCS:TestEntryPoint():int (Tier1-OSR)

@@ -11,13 +11,13 @@ ; Final local variable assignments ; ;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V01 loc1 [V01,T20] ( 25, 320.52) ref -> r14 class-hnd exact <int[]> -; V02 loc2 [V02,T63] ( 3, 0 ) ref -> r12 class-hnd exact <ushort[][]>
+; V01 loc1 [V01,T20] ( 26, 320.53) ref -> r14 class-hnd exact <int[]> +; V02 loc2 [V02,T64] ( 3, 0 ) ref -> r12 class-hnd exact <ushort[][]>
; V03 loc3 [V03,T49] ( 2, 2.38) ref -> r13 class-hnd <int[,,,][,,,]> ; V04 loc4 [V04,T10] ( 17, 440.89) ref -> r15 class-hnd <int[,][,][,][,]> ; V05 loc5 [V05,T02] ( 30, 684.27) ref -> rbx class-hnd exact <int[]> ;* V06 loc6 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc7 [V07,T62] ( 6, 0 ) int -> rsi
+; V07 loc7 [V07,T63] ( 10, 0.04) int -> rsi
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<unknown class>> ;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store" @@ -50,7 +50,7 @@ ; V37 tmp29 [V37,T48] ( 3, 3.35) byref -> rdx "dup spill" ; V38 tmp30 [V38,T52] ( 3, 0.59) byref -> rdx "dup spill" ; V39 tmp31 [V39,T60] ( 3, 0.13) byref -> rdi "dup spill"
-; V40 tmp32 [V40,T64] ( 3, 0 ) byref -> rdi "dup spill"
+; V40 tmp32 [V40,T61] ( 6, 0.07) byref -> rdi "dup spill"
; V41 tmp33 [V41,T00] ( 6,1028.48) ref -> rdx class-hnd "impImportNewObjArray" <int[,][,]> ; V42 tmp34 [V42,T15] ( 2, 342.83) int -> rdi "impImportNewObjArray" ; V43 tmp35 [V43,T16] ( 2, 342.83) int -> rsi "impImportNewObjArray" @@ -83,13 +83,13 @@ ; V70 cse1 [V70,T51] ( 3, 1.04) byref -> [rbp-0x60] spill-single-def hoist "CSE - conservative" ; V71 cse2 [V71,T59] ( 3, 0.22) byref -> r8 "CSE - conservative" ; V72 cse3 [V72,T58] ( 3, 0.30) int -> rdi "CSE - conservative"
-; V73 cse4 [V73,T61] ( 3, 0.07) int -> rsi "CSE - conservative"
+; V73 cse4 [V73,T62] ( 3, 0.07) int -> rsi "CSE - conservative"
; V74 cse5 [V74,T22] ( 3, 257.12) int -> rdi "CSE - moderate" ; V75 cse6 [V75,T27] ( 3, 42.88) int -> rdi "CSE - moderate" ; V76 cse7 [V76,T46] ( 3, 7.15) int -> rdi "CSE - conservative" ; V77 cse8 [V77,T50] ( 3, 1.67) int -> rdi "CSE - conservative" ; V78 cse9 [V78,T29] ( 2, 28.59) int -> rdx "CSE - aggressive"
-; V79 cse10 [V79,T25] ( 7, 204.77) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
+; V79 cse10 [V79,T25] ( 8, 204.77) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
; V80 cse11 [V80,T21] ( 9, 264.53) int -> registers multi-def "CSE - moderate" ; V81 cse12 [V81,T23] ( 3, 257.12) int -> rcx "CSE - moderate" ; V82 cse13 [V82,T24] ( 3, 257.12) int -> r9 "CSE - moderate" @@ -125,14 +125,14 @@ G_M23463_IG01: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, ; gcrRegs +[rbx] ;; size=114 bbWeight=1 PerfScore 25.33 G_M23463_IG02: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
- jmp G_M23463_IG18
+ jmp G_M23463_IG19
;; size=5 bbWeight=1 PerfScore 2.00 G_M23463_IG03: ; bbWeight=2.04, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref lea rax, bword ptr [rbx+0x1C] ; byrRegs +[rax] mov bword ptr [rbp-0x58], rax ; GC ptr vars +{V69}
- jmp G_M23463_IG15
+ jmp G_M23463_IG16
;; size=13 bbWeight=2.04 PerfScore 7.12 G_M23463_IG04: ; bbWeight=0.39, gcVars=00000000000000000000800000000000 {V69}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref ; byrRegs -[rax] @@ -140,7 +140,7 @@ G_M23463_IG04: ; bbWeight=0.39, gcVars=00000000000000000000800000000000 { ; byrRegs +[rcx] mov bword ptr [rbp-0x60], rcx ; GC ptr vars +{V70}
- jmp G_M23463_IG11
+ jmp G_M23463_IG12
;; size=13 bbWeight=0.39 PerfScore 1.37 G_M23463_IG05: ; bbWeight=0.02, gcVars=00000000000000000008800000000000 {V69 V70}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0100 {r8}, gcvars, byref, isz ; byrRegs -[rcx] +[r8] @@ -148,7 +148,7 @@ G_M23463_IG05: ; bbWeight=0.02, gcVars=00000000000000000008800000000000 { mov dword ptr [r8], edi mov edi, dword ptr [rbx+0x14] cmp edi, dword ptr [r14+0x14]
- jl SHORT G_M23463_IG07
+ jl SHORT G_M23463_IG08
;; size=14 bbWeight=0.02 PerfScore 0.16 G_M23463_IG06: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0100 {r8}, byref, isz lea rdi, bword ptr [rbx+0x10] @@ -157,23 +157,38 @@ G_M23463_IG06: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr inc esi mov dword ptr [rdi], esi cmp esi, dword ptr [r14+0x10]
- jge G_M23463_IG26
+ jge G_M23463_IG27
jmp SHORT G_M23463_IG05 ;; size=22 bbWeight=0.02 PerfScore 0.21
-G_M23463_IG07: ; bbWeight=0.09, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M23463_IG07: ; bbWeight=0.01, gcVars=00000000000000000000000000000000 {}, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rbx r13]
; byrRegs -[rdi r8]
+ ; GC ptr vars -{V69 V70} + mov edi, esi + lea rdi, bword ptr [r14+4*rdi+0x10] + ; byrRegs +[rdi] + dec dword ptr [rdi] + inc esi + cmp esi, 8 + jge G_M23463_IG29 + jmp SHORT G_M23463_IG07 + ;; size=22 bbWeight=0.01 PerfScore 0.08 +G_M23463_IG08: ; bbWeight=0.09, gcVars=00000000000000000008800000000000 {V69 V70}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rbx r13] + ; byrRegs -[rdi] + ; GC ptr vars +{V47 V69 V70}
mov edx, dword ptr [rbx+0x10] mov edi, dword ptr [rbx+0x14] mov esi, dword ptr [r14+0x18] mov r8d, dword ptr [r14+0x1C] sub edx, dword ptr [r15+0x18] cmp edx, dword ptr [r15+0x10]
- jae G_M23463_IG25
+ jae G_M23463_IG26
mov r9d, dword ptr [r15+0x14] imul edx, r9d sub edi, dword ptr [r15+0x1C] cmp edi, r9d
- jae G_M23463_IG25
+ jae G_M23463_IG26
add edx, edi lea rdi, bword ptr [r15+8*rdx+0x20] ; byrRegs +[rdi] @@ -200,9 +215,9 @@ G_M23463_IG07: ; bbWeight=0.09, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr mov dword ptr [rsi], edi mov edi, dword ptr [rbx+0x18] cmp edi, dword ptr [r14+0x18]
- jl SHORT G_M23463_IG10
+ jl SHORT G_M23463_IG11
;; size=120 bbWeight=0.09 PerfScore 3.50
-G_M23463_IG08: ; bbWeight=0.10, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M23463_IG09: ; bbWeight=0.10, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; byrRegs -[rsi] lea r8, bword ptr [rbx+0x14] ; byrRegs +[r8] @@ -212,13 +227,13 @@ G_M23463_IG08: ; bbWeight=0.10, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr inc edi mov dword ptr [rdx], edi cmp edi, dword ptr [r14+0x14]
- jl G_M23463_IG07
+ jl G_M23463_IG08
;; size=23 bbWeight=0.10 PerfScore 0.79
-G_M23463_IG09: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0100 {r8}, byref
+G_M23463_IG10: ; bbWeight=0.02, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0100 {r8}, byref
; byrRegs -[rdx] jmp G_M23463_IG06 ;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M23463_IG10: ; bbWeight=0.48, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M23463_IG11: ; bbWeight=0.48, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r8] xor edx, edx mov rax, bword ptr [rbp-0x58] @@ -228,9 +243,9 @@ G_M23463_IG10: ; bbWeight=0.48, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr cmp edx, dword ptr [r14+0x1C] mov rcx, bword ptr [rbp-0x60] ; byrRegs +[rcx]
- jl SHORT G_M23463_IG13
+ jl SHORT G_M23463_IG14
;; size=21 bbWeight=0.48 PerfScore 4.45
-G_M23463_IG11: ; bbWeight=0.56, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0002 {rcx}, byref, isz
+G_M23463_IG12: ; bbWeight=0.56, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs -[rax] mov rdx, rcx ; byrRegs +[rdx] @@ -238,24 +253,24 @@ G_M23463_IG11: ; bbWeight=0.56, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr inc edi mov dword ptr [rdx], edi cmp edi, dword ptr [r14+0x18]
- jl SHORT G_M23463_IG10
+ jl SHORT G_M23463_IG11
;; size=15 bbWeight=0.56 PerfScore 4.18
-G_M23463_IG12: ; bbWeight=0.10, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M23463_IG13: ; bbWeight=0.10, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx rdx]
- jmp SHORT G_M23463_IG08
+ jmp SHORT G_M23463_IG09
;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M23463_IG13: ; bbWeight=2.38, gcVars=00000000000000000000800000000000 {V69}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V70}
+G_M23463_IG14: ; bbWeight=2.38, gcVars=00000000000000000000800000000000 {V69}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V47 V70}
mov edx, dword ptr [rbx+0x10] mov edi, dword ptr [rbx+0x14] sub edx, dword ptr [r15+0x18] cmp edx, dword ptr [r15+0x10]
- jae G_M23463_IG25
+ jae G_M23463_IG26
mov ecx, dword ptr [r15+0x14] imul edx, ecx sub edi, dword ptr [r15+0x1C] cmp edi, ecx
- jae G_M23463_IG25
+ jae G_M23463_IG26
add edx, edi mov rdx, gword ptr [r15+8*rdx+0x20] ; gcrRegs +[rdx] @@ -265,11 +280,11 @@ G_M23463_IG13: ; bbWeight=2.38, gcVars=00000000000000000000800000000000 { mov r8d, dword ptr [r14+0x24] sub edi, dword ptr [rdx+0x18] cmp edi, dword ptr [rdx+0x10]
- jae G_M23463_IG25
+ jae G_M23463_IG26
imul edi, dword ptr [rdx+0x14] sub esi, dword ptr [rdx+0x1C] cmp esi, dword ptr [rdx+0x14]
- jae G_M23463_IG25
+ jae G_M23463_IG26
add edi, esi lea rdi, bword ptr [rdx+8*rdi+0x20] ; byrRegs +[rdi] @@ -303,12 +318,12 @@ G_M23463_IG13: ; bbWeight=2.38, gcVars=00000000000000000000800000000000 { mov edi, dword ptr [r14+0x24] mov r10d, dword ptr [rbp-0x4C] cmp r10d, 6
- jbe G_M23463_IG25
+ jbe G_M23463_IG26
mov esi, dword ptr [r14+0x28] cmp r10d, 7 ;; size=200 bbWeight=2.38 PerfScore 184.77
-G_M23463_IG14: ; bbWeight=2.38, isz, extend - jbe G_M23463_IG25
+G_M23463_IG15: ; bbWeight=2.38, isz, extend + jbe G_M23463_IG26
mov r11d, dword ptr [r14+0x2C] mov dword ptr [rbp-0x38], edx mov dword ptr [rbp-0x34], edi @@ -337,49 +352,49 @@ G_M23463_IG14: ; bbWeight=2.38, isz, extend cmp edx, dword ptr [r14+0x20] mov rax, bword ptr [rbp-0x58] ; byrRegs +[rax]
- jl SHORT G_M23463_IG17
+ jl SHORT G_M23463_IG18
;; size=89 bbWeight=2.38 PerfScore 54.24
-G_M23463_IG15: ; bbWeight=2.38, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0001 {rax}, byref
+G_M23463_IG16: ; bbWeight=2.38, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0001 {rax}, byref
mov rdx, rax ; byrRegs +[rdx] mov edi, dword ptr [rdx] inc edi mov dword ptr [rdx], edi cmp edi, dword ptr [r14+0x1C]
- jl G_M23463_IG13
+ jl G_M23463_IG14
;; size=19 bbWeight=2.38 PerfScore 17.88
-G_M23463_IG16: ; bbWeight=0.39, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M23463_IG17: ; bbWeight=0.39, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; byrRegs -[rax rdx] jmp G_M23463_IG04 ;; size=5 bbWeight=0.39 PerfScore 0.79
-G_M23463_IG17: ; bbWeight=14.29, gcVars=00000000000000000000000000000000 {}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M23463_IG18: ; bbWeight=14.29, gcVars=00000000000000000000000000000000 {}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V69} xor edx, edx ...

libraries.pmi.linux.x64.checked.mch

-15 (-17.44%) : 104608.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T02] ( 3, 10 ) ref -> rbx class-hnd exact single-def <uint[]> -; V01 loc1 [V01,T00] ( 7, 49 ) int -> r15 -; V02 loc2 [V02,T01] ( 2, 16 ) int -> rax
+; V00 loc0 [V00,T02] ( 3, 9.92) ref -> rbx class-hnd exact single-def <uint[]> +; V01 loc1 [V01,T00] ( 6, 40.60) int -> r15 +; V02 loc2 [V02,T01] ( 2, 15.84) int -> rax
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 0 @@ -29,18 +29,16 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[rbx] xor r15d, r15d ;; size=26 bbWeight=1 PerfScore 2.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov edi, r15d call [Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint]
- cmp r15d, 256 - jae SHORT G_M39919_IG06
mov ecx, r15d mov dword ptr [rbx+4*rcx+0x10], eax inc r15d cmp r15d, 255 jbe SHORT G_M39919_IG03
- ;; size=37 bbWeight=8 PerfScore 58.00
+ ;; size=28 bbWeight=7.92 PerfScore 47.52
G_M39919_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rax, rbx ; gcrRegs +[rax] @@ -51,13 +49,8 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=5 bbWeight=1 PerfScore 2.50
-G_M39919_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax rbx] - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 86, prolog size 9, PerfScore 66.25, instruction count 25, allocated bytes for code 86 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 71, prolog size 9, PerfScore 55.77, instruction count 21, allocated bytes for code 71 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.linux.x64.Release.mch

-33 (-1.08%) : 549430.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T04] ( 24, 12.59) ref -> r15 this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T11] ( 12, 5.05) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T01] ( 20, 16.86) ref -> rbx class-hnd single-def <System.String>
+; V02 arg2 [V02,T01] ( 19, 16.86) ref -> rbx class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T49] ( 5, 2.51) ref -> [rbp-0x90] class-hnd spill-single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T00] ( 72, 40.88) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T02] ( 34, 16.53) ushort -> [rbp-0x30] -; V07 loc3 [V07,T19] ( 12, 4.54) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 67, 40.87) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T02] ( 33, 16.53) ushort -> [rbp-0x30] +; V07 loc3 [V07,T19] ( 15, 4.54) int -> [rbp-0x34]
; V08 loc4 [V08,T28] ( 5, 3.58) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 5.71) int -> [rbp-0x3C] @@ -182,7 +182,7 @@ ; V170 cse5 [V170,T66] ( 3, 1.54) ref -> rdi "CSE - conservative" ; V171 cse6 [V171,T75] ( 3, 1.04) ref -> [rbp-0x100] spill-single-def "CSE - conservative" ; V172 cse7 [V172,T79] ( 3, 0.74) long -> rdi "CSE - conservative"
-; V173 cse8 [V173,T03] ( 20, 15.86) int -> [rbp-0x88] spill-single-def "CSE - aggressive"
+; V173 cse8 [V173,T03] ( 19, 15.48) int -> [rbp-0x88] spill-single-def "CSE - aggressive"
; V174 rat0 [V174,T10] ( 5, 7.18) ref -> rax class-hnd "replacement local" <System.ICustomFormatter> ; ; Lcl frame size = 232 @@ -245,7 +245,7 @@ G_M4730_IG07: ; bbWeight=2.44, gcVars=00000000000000000002000000000000 {V mov edx, dword ptr [rbx+0x08] mov dword ptr [rbp-0x88], edx cmp edx, ecx
- jbe G_M4730_IG99
+ jbe G_M4730_IG96
;; size=17 bbWeight=2.44 PerfScore 10.37 G_M4730_IG08: ; bbWeight=1.44, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref mov edi, ecx @@ -299,11 +299,11 @@ G_M4730_IG08: ; bbWeight=1.44, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=20 ; gcr arg pop 0 mov dword ptr [rbp-0x50], eax test eax, eax
- jl G_M4730_IG133
+ jl G_M4730_IG130
;; size=164 bbWeight=1.44 PerfScore 57.69 G_M4730_IG09: ; bbWeight=1.44, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz cmp eax, dword ptr [rbp-0x7C]
- ja G_M4730_IG146
+ ja G_M4730_IG143
mov ecx, eax not ecx shr ecx, 31 @@ -381,12 +381,12 @@ G_M4730_IG16: ; bbWeight=1.44, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=20 add ecx, eax mov edx, dword ptr [rbp-0x88] cmp ecx, edx
- jae G_M4730_IG136
+ jae G_M4730_IG133
mov edi, ecx movzx rdi, word ptr [rbx+2*rdi+0x0C] inc ecx cmp edx, ecx
- jbe G_M4730_IG141
+ jbe G_M4730_IG138
mov eax, ecx movzx rax, word ptr [rbx+2*rax+0x0C] mov dword ptr [rbp-0x30], eax @@ -414,7 +414,7 @@ G_M4730_IG21: ; bbWeight=1.41, gcVars=00000000000000000002000000000000 {V ; gcrRegs -[rsi] ; GC ptr vars +{V04} cmp edi, 123
- jne G_M4730_IG139
+ jne G_M4730_IG136
xor esi, esi mov dword ptr [rbp-0x34], esi xor r8d, r8d @@ -427,7 +427,7 @@ G_M4730_IG21: ; bbWeight=1.41, gcVars=00000000000000000002000000000000 {V mov dword ptr [rbp-0x78], r10d lea edi, [rcx-0x01] cmp edi, edx
- jae G_M4730_IG136
+ jae G_M4730_IG133
mov dword ptr [rbp-0x2C], ecx lea edi, [rcx-0x01] cmp word ptr [rbx+2*rdi+0x0C], 123 @@ -445,7 +445,7 @@ G_M4730_IG21: ; bbWeight=1.41, gcVars=00000000000000000002000000000000 {V lea ecx, [rax-0x30] mov dword ptr [rbp-0x3C], ecx cmp ecx, 10
- jae G_M4730_IG140
+ jae G_M4730_IG137
;; size=109 bbWeight=1.41 PerfScore 37.78 G_M4730_IG22: ; bbWeight=1.41, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz mov edx, dword ptr [rbp-0x2C] @@ -466,7 +466,7 @@ G_M4730_IG24: ; bbWeight=0.71, gcVars=00000000000000000000000000000000 {} ; byrRegs -[r13] ; GC ptr vars -{V04 V113} mov ecx, edx
- jmp G_M4730_IG141
+ jmp G_M4730_IG138
;; size=7 bbWeight=0.71 PerfScore 1.59 G_M4730_IG25: ; bbWeight=0.21, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref ; gcrRegs +[rbx r14-r15] @@ -495,7 +495,7 @@ G_M4730_IG26: ; bbWeight=0.25, gcVars=00000000000000000002000000000000 {V add rax, rdi mov r10d, esi cmp rax, r10
- ja G_M4730_IG143
+ ja G_M4730_IG140
mov edx, dword ptr [rbp-0x2C] jmp SHORT G_M4730_IG29 ;; size=38 bbWeight=0.25 PerfScore 1.91 @@ -547,7 +547,7 @@ G_M4730_IG30: ; bbWeight=1.41, gcVars=00000000000000000003000000000000 {V ; byrRegs -[rax] ; GC ptr vars -{V77} cmp edx, esi
- jae G_M4730_IG136
+ jae G_M4730_IG133
mov dword ptr [rbp-0x2C], edx mov edi, edx cmp word ptr [rbx+2*rdi+0x0C], 125 @@ -566,7 +566,7 @@ G_M4730_IG30: ; bbWeight=1.41, gcVars=00000000000000000003000000000000 {V ; GC ptr vars +{V12} mov r8d, dword ptr [rbp-0x3C] cmp r8d, r12d
- jae G_M4730_IG144
+ jae G_M4730_IG141
mov rdx, gword ptr [rbp-0xA0] mov esi, r8d mov r9, gword ptr [r13+8*rsi] @@ -574,7 +574,7 @@ G_M4730_IG30: ; bbWeight=1.41, gcVars=00000000000000000003000000000000 {V mov gword ptr [rbp-0xA8], r9 ; GC ptr vars +{V13} cmp gword ptr [rbp-0x90], 0
- je G_M4730_IG82
+ je G_M4730_IG79
;; size=101 bbWeight=1.41 PerfScore 32.48 G_M4730_IG31: ; bbWeight=0.05, gcVars=00000000000000000003000000001000 {V04 V13 V113}, gcrefRegs=C20C {rdx rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref ; gcrRegs -[rcx] @@ -591,7 +591,7 @@ G_M4730_IG32: ; bbWeight=0.00, gcVars=00000000000000000002000000400000 {V movzx rsi, word ptr [r8] mov word ptr [rdi], si cmp eax, 2
- je G_M4730_IG137
+ je G_M4730_IG134
jmp G_M4730_IG28 ;; size=28 bbWeight=0.00 PerfScore 0.00 G_M4730_IG33: ; bbWeight=0.03, gcVars=00000000000000000002000000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref @@ -629,7 +629,7 @@ G_M4730_IG34: ; bbWeight=0.01, gcVars=00000000000000000003000000001000 {V ; gcr arg pop 0 mov rsi, rax ; gcrRegs +[rsi]
- jmp G_M4730_IG81
+ jmp G_M4730_IG78
;; size=43 bbWeight=0.01 PerfScore 0.06 G_M4730_IG35: ; bbWeight=0.48, gcVars=00000000000000000003000000000000 {V04 V113}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz ; gcrRegs -[rax rsi] @@ -659,7 +659,7 @@ G_M4730_IG38: ; bbWeight=0.01, gcVars=00000000000000000000000000000000 {} ; byrRegs -[r13] ; GC ptr vars -{V04 V113} mov ecx, edx
- jmp G_M4730_IG141
+ jmp G_M4730_IG138
;; size=7 bbWeight=0.01 PerfScore 0.02 G_M4730_IG39: ; bbWeight=0.01, gcVars=00000000000000000003000000000000 {V04 V113}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz ; gcrRegs +[rbx r14-r15] @@ -672,249 +672,222 @@ G_M4730_IG40: ; bbWeight=0.05, gcVars=00000000000000000003000000001000 {V ; gcrRegs +[rdx r9] ; GC ptr vars -{V48} +{V12 V13} cmp dword ptr [rbp-0x78], 0
- je G_M4730_IG79
+ je G_M4730_IG76
;; size=10 bbWeight=0.05 PerfScore 0.15 G_M4730_IG41: ; bbWeight=0.03, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=2000 {r13}, byref ; gcrRegs -[rdx] mov r8d, dword ptr [rbp-0x78]
- jmp G_M4730_IG78
+ jmp G_M4730_IG75
;; size=9 bbWeight=0.03 PerfScore 0.08
-G_M4730_IG42: ; bbWeight=0.00, gcVars=00000000000000000003000000000000 {V04 V113}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+G_M4730_IG42: ; bbWeight=0.00, gcVars=00000000000000000003000000000000 {V04 V113}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
; gcrRegs -[r9] ; GC ptr vars -{V12 V13} cmp eax, 32
- je G_M4730_IG67 - ;; size=9 bbWeight=0.00 PerfScore 0.00 -G_M4730_IG43: ; bbWeight=0.46, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref - cmp eax, 44 - jne G_M4730_IG58 - ;; size=9 bbWeight=0.46 PerfScore 0.57 -G_M4730_IG44: ; bbWeight=0.45, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - inc edx - cmp esi, edx - jbe G_M4730_IG55 - mov eax, edx - movzx rax, word ptr [rbx+2*rax+0x0C] - cmp eax, 32 - je SHORT G_M4730_IG44 - ;; size=22 bbWeight=0.45 PerfScore 2.27 -G_M4730_IG45: ; bbWeight=0.37, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - cmp eax, 45 - jne SHORT G_M4730_IG47 - ;; size=5 bbWeight=0.37 PerfScore 0.46 -G_M4730_IG46: ; bbWeight=0.14, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - mov dword ptr [rbp-0x38], 1
+ jne SHORT G_M4730_IG45 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M4730_IG43: ; bbWeight=0.05, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc edx cmp esi, edx jbe SHORT G_M4730_IG54
+ ;; size=6 bbWeight=0.05 PerfScore 0.08 +G_M4730_IG44: ; bbWeight=0.51, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov eax, edx movzx rax, word ptr [rbx+2*rax+0x0C]
- ;; size=20 bbWeight=0.14 PerfScore 0.65
+ cmp eax, 32 + je SHORT G_M4730_IG43 + ;; size=12 bbWeight=0.51 PerfScore 1.79 +G_M4730_IG45: ; bbWeight=0.46, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref + cmp eax, 44 + jne G_M4730_IG66 + ;; size=9 bbWeight=0.46 PerfScore 0.57 +G_M4730_IG46: ; bbWeight=0.45, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + inc edx + cmp esi, edx + jbe SHORT G_M4730_IG53 + mov eax, edx + movzx rax, word ptr [rbx+2*rax+0x0C] + cmp eax, 32 + je SHORT G_M4730_IG46 + ;; size=18 bbWeight=0.45 PerfScore 2.27
G_M4730_IG47: ; bbWeight=0.37, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
- add eax, -48 - cmp eax, 10 - jae SHORT G_M4730_IG53
+ cmp eax, 45 + jne SHORT G_M4730_IG49 + ;; size=5 bbWeight=0.37 PerfScore 0.46 +G_M4730_IG48: ; bbWeight=0.14, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + mov dword ptr [rbp-0x38], 1
inc edx cmp esi, edx jbe SHORT G_M4730_IG52
- ;; size=14 bbWeight=0.37 PerfScore 1.10 -G_M4730_IG48: ; bbWeight=0.39, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - cmp edx, esi - jae G_M4730_IG136
+ mov eax, edx + movzx rax, word ptr [rbx+2*rax+0x0C] + ;; size=20 bbWeight=0.14 PerfScore 0.65 +G_M4730_IG49: ; bbWeight=0.37, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + add eax, -48
...

+30 (+0.79%) : 192109.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T03] ( 47, 32.41) byref -> rbx this single-def ; V01 arg1 [V01,T37] ( 12, 3.25) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T08] ( 18, 16.91) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T08] ( 19, 16.91) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T59] ( 3, 2.75) ref -> [rbp-0xB8] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 40.11) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T16] ( 31, 10.53) ushort -> [rbp-0x30] -; V07 loc3 [V07,T39] ( 12, 4.93) int -> [rbp-0x34]
+; V05 loc1 [V05,T02] ( 67, 40.11) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T16] ( 34, 10.53) ushort -> [rbp-0x30] +; V07 loc3 [V07,T39] ( 15, 4.93) int -> [rbp-0x34]
; V08 loc4 [V08,T51] ( 5, 3.84) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T30] ( 7, 7.02) int -> [rbp-0x3C] @@ -283,7 +283,7 @@ ; V271 cse3 [V271,T49] ( 3, 4.26) int -> rsi "CSE - conservative" ; V272 cse4 [V272,T48] ( 5, 4.26) int -> registers multi-def "CSE - conservative" ; V273 cse5 [V273,T68] ( 3, 1.89) int -> r14 "CSE - conservative"
-; V274 cse6 [V274,T09] ( 18, 16.67) int -> [rbp-0xAC] spill-single-def "CSE - moderate"
+; V274 cse6 [V274,T09] ( 19, 16.67) int -> [rbp-0xAC] spill-single-def "CSE - moderate"
; V275 rat0 [V275,T13] ( 6, 14.04) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V276 rat1 [V276,T15] ( 6, 11.37) ref -> registers class-hnd "replacement local" <<unknown class>> ; @@ -502,7 +502,7 @@ G_M36935_IG15: ; bbWeight=0.33, gcVars=00000000000000600800000000200000 { add r10, qword ptr [rdx+8*rcx] sar r10, 32 cmp r10d, dword ptr [rbp-0xA0]
- jg G_M36935_IG107
+ jg G_M36935_IG112
jmp G_M36935_IG45 ;; size=85 bbWeight=0.33 PerfScore 6.32 G_M36935_IG16: ; bbWeight=0.88, gcVars=00000000000000000800000084000000 {V04 V78 V185}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref @@ -610,7 +610,7 @@ G_M36935_IG19: ; bbWeight=1.75, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov gword ptr [rbp-0xD0], r9 ; GC ptr vars +{V13} cmp gword ptr [rbp-0xB8], 0
- jne G_M36935_IG104
+ jne G_M36935_IG109
;; size=95 bbWeight=1.75 PerfScore 38.60 G_M36935_IG20: ; bbWeight=1.75, gcVars=00000000000000600800000000200000 {V04 V12 V13 V177}, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz ; gcrRegs -[rdx] @@ -655,7 +655,7 @@ G_M36935_IG25: ; bbWeight=1.42, gcrefRegs=C200 {r9 r14 r15}, byrefRegs=20 G_M36935_IG26: ; bbWeight=0.71, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, byref mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [rcx], rsi
- jne G_M36935_IG112
+ jne G_M36935_IG117
xor rcx, rcx ;; size=21 bbWeight=0.71 PerfScore 3.20 G_M36935_IG27: ; bbWeight=1.42, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, byref @@ -664,13 +664,13 @@ G_M36935_IG27: ; bbWeight=1.42, gcrefRegs=C202 {rcx r9 r14 r15}, byrefReg mov gword ptr [rbp-0xE0], rsi ; GC ptr vars +{V20} test rsi, rsi
- jne G_M36935_IG113
+ jne G_M36935_IG118
test r9, r9
- je G_M36935_IG116
+ je G_M36935_IG121
mov rcx, 0xD1FFAB1E ; System.String ; gcrRegs -[rcx] cmp qword ptr [r9], rcx
- jne G_M36935_IG117
+ jne G_M36935_IG122
;; size=47 bbWeight=1.42 PerfScore 11.37 G_M36935_IG28: ; bbWeight=1.42, gcVars=00000000000000000800000000000000 {V04}, gcrefRegs=C200 {r9 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rsi] @@ -688,13 +688,13 @@ G_M36935_IG30: ; bbWeight=1.42, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=20 test r8, r8 mov rcx, r8 ; gcrRegs +[rcx]
- je G_M36935_IG118
+ je G_M36935_IG123
;; size=12 bbWeight=1.42 PerfScore 2.13 G_M36935_IG31: ; bbWeight=1.42, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2008 {rbx r13}, byref ; gcrRegs -[r8] mov edi, dword ptr [rbp-0x34] cmp dword ptr [rcx+0x08], edi
- jl G_M36935_IG120
+ jl G_M36935_IG125
mov r8d, dword ptr [rbx+0x08] mov edi, r8d cmp dword ptr [rcx+0x08], 1 @@ -708,7 +708,7 @@ G_M36935_IG32: ; bbWeight=1.42, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2 ; GC ptr vars +{V11} sub edi, dword ptr [rcx+0x08] cmp edx, edi
- jg G_M36935_IG119
+ jg G_M36935_IG124
;; size=30 bbWeight=1.42 PerfScore 12.06 G_M36935_IG33: ; bbWeight=1.42, gcVars=00000000000000000800000000000400 {V04 V11}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rcx] @@ -829,7 +829,7 @@ G_M36935_IG38: ; bbWeight=0.33, gcVars=00000000000000600804000000200000 { mov r8, gword ptr [rbp-0xD8] ; gcrRegs +[r8] cmp qword ptr [r8], rdi
- jne G_M36935_IG111
+ jne G_M36935_IG116
add r8, 8 ; gcrRegs -[r8] ; byrRegs +[r8] @@ -1099,7 +1099,7 @@ G_M36935_IG58: ; bbWeight=0.33, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov edi, dword ptr [rbp-0x48] add dword ptr [rbx+0x08], edi cmp dword ptr [rbp-0x38], 0
- jne G_M36935_IG109
+ jne G_M36935_IG114
mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG05 ;; size=39 bbWeight=0.33 PerfScore 4.08 @@ -1336,12 +1336,10 @@ G_M36935_IG81: ; bbWeight=0, gcVars=00000000000000200800000000000000 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG92
+ jbe G_M36935_IG93
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG82: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -1355,13 +1353,11 @@ G_M36935_IG82: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb G_M36935_IG83: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref inc edx cmp esi, edx
- jbe G_M36935_IG91
+ jbe G_M36935_IG92
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=25 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M36935_IG84: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -1369,51 +1365,48 @@ G_M36935_IG84: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG85: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref cmp eax, 44
- jne G_M36935_IG97
+ jne G_M36935_IG102
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG86: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M36935_IG90
+ jbe SHORT G_M36935_IG91
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG86
- mov eax, edi
cmp eax, 45 jne SHORT G_M36935_IG87 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M36935_IG89
+ jbe SHORT G_M36935_IG90
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] mov r9d, edi cmp r9d, 10
- jae SHORT G_M36935_IG88
+ jae SHORT G_M36935_IG89
inc edx cmp esi, edx
- ja SHORT G_M36935_IG94 - mov ecx, edx - jmp G_M36935_IG69 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG88 + test edx, edx + jl SHORT G_M36935_IG98 + jmp SHORT G_M36935_IG95 + ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG88: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] ; GC ptr vars -{V04 V177}
- mov dword ptr [rbp-0x2C], edx - jmp G_M36935_IG68 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG89: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M36935_IG69 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG89: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M36935_IG68 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG69 @@ -1426,47 +1419,77 @@ G_M36935_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG69 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG93: ; bbWeight=0, gcVars=00000000000000200800000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M36935_IG69 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG94: ; bbWeight=0, gcVars=00000000000000200800000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15] ; byrRegs +[rbx r13] ; GC ptr vars +{V04 V59 V177} lea r9d, [r9+4*r9]
- lea r9d, [rdi+2*r9-0x30]
+ lea r9d, [rax+2*r9-0x30] + inc edx + cmp esi, edx + jbe SHORT G_M36935_IG96 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M36935_IG95: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + lea edi, [rax-0x30] + cmp edi, 9 + ja SHORT G_M36935_IG101 + cmp r9d, 0xD1FFAB1E + jl SHORT G_M36935_IG94 + jmp SHORT G_M36935_IG99 + ;; size=27 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r14-r15] + ; byrRegs -[rbx r13] + ; GC ptr vars -{V04 V59 V177} + mov ecx, edx + jmp G_M36935_IG69 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000200800000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref + ; gcrRegs +[r14-r15]
...

+30 (+0.79%) : 394882.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T05] ( 47, 51.77) byref -> rbx this single-def ; V01 arg1 [V01,T34] ( 11, 3.73) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T12] ( 18, 15.65) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T12] ( 19, 15.65) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T58] ( 3, 2.58) ref -> [rbp-0xB8] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T07] ( 62, 36.33) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T20] ( 31, 9.46) ushort -> [rbp-0x30] -; V07 loc3 [V07,T40] ( 12, 4.49) int -> [rbp-0x34]
+; V05 loc1 [V05,T07] ( 67, 36.33) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T20] ( 34, 9.46) ushort -> [rbp-0x30] +; V07 loc3 [V07,T40] ( 15, 4.49) int -> [rbp-0x34]
; V08 loc4 [V08,T53] ( 5, 3.39) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T32] ( 7, 6.31) int -> [rbp-0x3C] @@ -283,7 +283,7 @@ ; V271 cse3 [V271,T48] ( 3, 4.00) int -> rsi "CSE - conservative" ; V272 cse4 [V272,T47] ( 5, 4.01) int -> registers multi-def "CSE - conservative" ; V273 cse5 [V273,T65] ( 3, 1.84) int -> r14 "CSE - conservative"
-; V274 cse6 [V274,T14] ( 18, 15.22) int -> [rbp-0xAC] spill-single-def "CSE - moderate"
+; V274 cse6 [V274,T14] ( 19, 15.22) int -> [rbp-0xAC] spill-single-def "CSE - moderate"
; V275 rat0 [V275,T17] ( 6, 12.61) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V276 rat1 [V276,T18] ( 6, 10.70) ref -> registers class-hnd "replacement local" <<unknown class>> ; @@ -493,7 +493,7 @@ G_M36935_IG14: ; bbWeight=0.24, gcVars=00000000000000180400000000800000 { add r10, qword ptr [rdx+8*rcx] sar r10, 32 cmp r10d, dword ptr [rbp-0xA0]
- jg G_M36935_IG107
+ jg G_M36935_IG112
jmp G_M36935_IG44 ;; size=85 bbWeight=0.24 PerfScore 4.53 G_M36935_IG15: ; bbWeight=0.79, gcVars=00000000000000000400000080000200 {V04 V78 V185}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref @@ -601,7 +601,7 @@ G_M36935_IG18: ; bbWeight=1.58, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov gword ptr [rbp-0xD0], r9 ; GC ptr vars +{V13} cmp gword ptr [rbp-0xB8], 0
- jne G_M36935_IG104
+ jne G_M36935_IG109
;; size=95 bbWeight=1.58 PerfScore 34.68 G_M36935_IG19: ; bbWeight=1.58, gcVars=00000000000000180400000000800000 {V04 V12 V13 V177}, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz ; gcrRegs -[rdx] @@ -646,7 +646,7 @@ G_M36935_IG24: ; bbWeight=1.34, gcrefRegs=C200 {r9 r14 r15}, byrefRegs=20 G_M36935_IG25: ; bbWeight=0.67, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, byref mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [rcx], rsi
- jne G_M36935_IG112
+ jne G_M36935_IG117
xor rcx, rcx ;; size=21 bbWeight=0.67 PerfScore 3.01 G_M36935_IG26: ; bbWeight=1.34, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, byref @@ -655,13 +655,13 @@ G_M36935_IG26: ; bbWeight=1.34, gcrefRegs=C202 {rcx r9 r14 r15}, byrefReg mov gword ptr [rbp-0xE0], rsi ; GC ptr vars +{V20} test rsi, rsi
- jne G_M36935_IG113
+ jne G_M36935_IG118
test r9, r9
- je G_M36935_IG116
+ je G_M36935_IG121
mov rcx, 0xD1FFAB1E ; System.String ; gcrRegs -[rcx] cmp qword ptr [r9], rcx
- jne G_M36935_IG117
+ jne G_M36935_IG122
;; size=47 bbWeight=1.34 PerfScore 10.70 G_M36935_IG27: ; bbWeight=1.34, gcVars=00000000000000000400000000000000 {V04}, gcrefRegs=C200 {r9 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rsi] @@ -679,13 +679,13 @@ G_M36935_IG29: ; bbWeight=1.34, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=20 test r8, r8 mov rcx, r8 ; gcrRegs +[rcx]
- je G_M36935_IG118
+ je G_M36935_IG123
;; size=12 bbWeight=1.34 PerfScore 2.01 G_M36935_IG30: ; bbWeight=1.34, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2008 {rbx r13}, byref ; gcrRegs -[r8] mov edi, dword ptr [rbp-0x34] cmp dword ptr [rcx+0x08], edi
- jl G_M36935_IG120
+ jl G_M36935_IG125
mov r8d, dword ptr [rbx+0x08] mov edi, r8d cmp dword ptr [rcx+0x08], 1 @@ -699,7 +699,7 @@ G_M36935_IG31: ; bbWeight=1.33, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2 ; GC ptr vars +{V11} sub edi, dword ptr [rcx+0x08] cmp edx, edi
- jg G_M36935_IG119
+ jg G_M36935_IG124
;; size=30 bbWeight=1.33 PerfScore 11.34 G_M36935_IG32: ; bbWeight=1.33, gcVars=00000000000000000400000000008000 {V04 V11}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rcx] @@ -821,7 +821,7 @@ G_M36935_IG37: ; bbWeight=0.24, gcVars=00000000000000180410000000800000 { mov r8, gword ptr [rbp-0xD8] ; gcrRegs +[r8] cmp qword ptr [r8], rdi
- jne G_M36935_IG111
+ jne G_M36935_IG116
add r8, 8 ; gcrRegs -[r8] ; byrRegs +[r8] @@ -1092,7 +1092,7 @@ G_M36935_IG58: ; bbWeight=0.24, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov edi, dword ptr [rbp-0x48] add dword ptr [rbx+0x08], edi cmp dword ptr [rbp-0x38], 0
- jne G_M36935_IG109
+ jne G_M36935_IG114
mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG05 ;; size=39 bbWeight=0.24 PerfScore 2.93 @@ -1329,12 +1329,10 @@ G_M36935_IG81: ; bbWeight=0, gcVars=00000000000000080400000000000000 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG92
+ jbe G_M36935_IG93
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG82: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -1348,13 +1346,11 @@ G_M36935_IG82: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb G_M36935_IG83: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref inc edx cmp esi, edx
- jbe G_M36935_IG91
+ jbe G_M36935_IG92
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=25 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
G_M36935_IG84: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -1362,51 +1358,48 @@ G_M36935_IG84: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG85: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref cmp eax, 44
- jne G_M36935_IG97
+ jne G_M36935_IG102
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG86: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M36935_IG90
+ jbe SHORT G_M36935_IG91
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG86
- mov eax, edi
cmp eax, 45 jne SHORT G_M36935_IG87 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M36935_IG89
+ jbe SHORT G_M36935_IG90
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] mov r9d, edi cmp r9d, 10
- jae SHORT G_M36935_IG88
+ jae SHORT G_M36935_IG89
inc edx cmp esi, edx
- ja SHORT G_M36935_IG94 - mov ecx, edx - jmp G_M36935_IG69 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG88 + test edx, edx + jl SHORT G_M36935_IG98 + jmp SHORT G_M36935_IG95 + ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG88: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] ; GC ptr vars -{V04 V67 V177}
- mov dword ptr [rbp-0x2C], edx - jmp G_M36935_IG68 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG89: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M36935_IG69 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG89: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M36935_IG68 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG69 @@ -1419,47 +1412,77 @@ G_M36935_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG69 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG93: ; bbWeight=0, gcVars=00000000000000080400000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M36935_IG69 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG94: ; bbWeight=0, gcVars=00000000000000080400000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15] ; byrRegs +[rbx r13] ; GC ptr vars +{V04 V67 V177} lea r9d, [r9+4*r9]
- lea r9d, [rdi+2*r9-0x30]
+ lea r9d, [rax+2*r9-0x30] + inc edx + cmp esi, edx + jbe SHORT G_M36935_IG96 + ;; size=15 bbWeight=0 PerfScore 0.00 +G_M36935_IG95: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + lea edi, [rax-0x30] + cmp edi, 9 + ja SHORT G_M36935_IG101 + cmp r9d, 0xD1FFAB1E + jl SHORT G_M36935_IG94 + jmp SHORT G_M36935_IG99 + ;; size=27 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r14-r15] + ; byrRegs -[rbx r13] + ; GC ptr vars -{V04 V67 V177} + mov ecx, edx + jmp G_M36935_IG69 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000080400000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref + ; gcrRegs +[r14-r15]
...

+49 (+1.66%) : 581397.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T01] ( 47, 32.26) byref -> rbx this single-def ; V01 arg1 [V01,T29] ( 9, 3.96) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 17.04) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 17.04) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T52] ( 3, 2.79) ref -> [rbp-0x88] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61, 38.85) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T10] ( 31, 10.77) ushort -> [rbp-0x30] -; V07 loc3 [V07,T33] ( 13, 5.36) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 66, 38.85) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T10] ( 34, 10.77) ushort -> [rbp-0x30] +; V07 loc3 [V07,T33] ( 16, 5.36) int -> [rbp-0x34]
; V08 loc4 [V08,T46] ( 5, 3.61) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T24] ( 7, 7.18) int -> [rbp-0x3C] @@ -183,7 +183,7 @@ ; V171 cse2 [V171,T35] ( 3, 5.31) int -> r8 "CSE - moderate" ; V172 cse3 [V172,T34] ( 5, 5.32) int -> rcx multi-def "CSE - moderate" ; V173 cse4 [V173,T62] ( 3, 1.44) int -> r14 "CSE - conservative"
-; V174 cse5 [V174,T04] ( 18, 16.84) int -> [rbp-0x78] spill-single-def "CSE - moderate"
+; V174 cse5 [V174,T04] ( 19, 16.84) int -> [rbp-0x78] spill-single-def "CSE - moderate"
; V175 cse6 [V175,T09] ( 14, 12.41) int -> [rbp-0x7C] "CSE - moderate" ; V176 cse7 [V176,T32] ( 3, 5.38) int -> rdi "CSE - moderate" ; V177 rat0 [V177,T05] ( 6, 14.36) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> @@ -478,7 +478,7 @@ G_M36935_IG17: ; bbWeight=1.79, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2 mov gword ptr [rbp-0xA0], r8 ; GC ptr vars +{V13} cmp gword ptr [rbp-0x88], 0
- jne G_M36935_IG85
+ jne G_M36935_IG90
;; size=47 bbWeight=1.79 PerfScore 17.05 G_M36935_IG18: ; bbWeight=1.79, gcVars=00000000000000001810000000004000 {V04 V12 V13 V115}, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz test rsi, rsi @@ -499,7 +499,7 @@ G_M36935_IG20: ; bbWeight=0.90, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2 ; gcrRegs -[r8] mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rdi
- jne G_M36935_IG88
+ jne G_M36935_IG93
xor rsi, rsi ;; size=21 bbWeight=0.90 PerfScore 4.04 G_M36935_IG21: ; bbWeight=1.79, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref @@ -523,7 +523,7 @@ G_M36935_IG23: ; bbWeight=1.77, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=20 G_M36935_IG24: ; bbWeight=0.89, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, byref mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rdi
- jne G_M36935_IG90
+ jne G_M36935_IG95
xor rsi, rsi ;; size=21 bbWeight=0.89 PerfScore 3.99 G_M36935_IG25: ; bbWeight=1.77, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, byref @@ -532,12 +532,12 @@ G_M36935_IG25: ; bbWeight=1.77, gcrefRegs=C140 {rsi r8 r14 r15}, byrefReg mov gword ptr [rbp-0xB0], r11 ; GC ptr vars +{V20} test r11, r11
- jne G_M36935_IG93
+ jne G_M36935_IG98
test r8, r8
- je G_M36935_IG96
+ je G_M36935_IG101
mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [r8], rdi
- jne G_M36935_IG97
+ jne G_M36935_IG102
;; size=47 bbWeight=1.77 PerfScore 14.19 G_M36935_IG26: ; bbWeight=1.77, gcVars=00000000000000000010000000000000 {V04}, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rsi r11] @@ -548,7 +548,7 @@ G_M36935_IG26: ; bbWeight=1.77, gcVars=00000000000000000010000000000000 { G_M36935_IG27: ; bbWeight=1.77, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref ; gcrRegs -[r8] test rsi, rsi
- je G_M36935_IG98
+ je G_M36935_IG103
;; size=9 bbWeight=1.77 PerfScore 2.22 G_M36935_IG28: ; bbWeight=1.77, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref mov edi, dword ptr [rsi+0x08] @@ -568,7 +568,7 @@ G_M36935_IG30: ; bbWeight=1.77, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2 mov dword ptr [rbp-0x7C], edi sub edx, edi cmp edx, ecx
- jl G_M36935_IG89
+ jl G_M36935_IG94
;; size=19 bbWeight=1.77 PerfScore 9.74 G_M36935_IG31: ; bbWeight=1.77, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref lea rdx, bword ptr [rbx+0x10] @@ -621,7 +621,7 @@ G_M36935_IG33: ; bbWeight=0.89, gcVars=00000000000000000010000000000000 { ; byrRegs -[rdx rsi] ; GC ptr vars -{V103} mov eax, dword ptr [rbp-0x2C]
- jmp G_M36935_IG99
+ jmp G_M36935_IG104
;; size=8 bbWeight=0.89 PerfScore 2.66 G_M36935_IG34: ; bbWeight=0.90, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rsi r14-r15] @@ -720,7 +720,7 @@ G_M36935_IG38: ; bbWeight=0.02, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov edi, dword ptr [rbp-0x48] add dword ptr [rbx+0x08], edi cmp dword ptr [rbp-0x38], 0
- jne G_M36935_IG91
+ jne G_M36935_IG96
mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG05 ;; size=39 bbWeight=0.02 PerfScore 0.25 @@ -958,12 +958,10 @@ G_M36935_IG62: ; bbWeight=0, gcVars=00000000000000000810000000000000 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG73
+ jbe G_M36935_IG74
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG63: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -974,16 +972,14 @@ G_M36935_IG63: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb cmp eax, 32 jne SHORT G_M36935_IG66 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG64: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG64: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx cmp esi, edx
- jbe G_M36935_IG72
+ jbe SHORT G_M36935_IG73
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=25 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
G_M36935_IG65: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -991,50 +987,47 @@ G_M36935_IG65: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG66: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref cmp eax, 44
- jne G_M36935_IG78
+ jne G_M36935_IG83
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG67: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M36935_IG71
+ jbe SHORT G_M36935_IG72
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG67
- mov eax, edi
cmp eax, 45 jne SHORT G_M36935_IG68 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M36935_IG70
+ jbe SHORT G_M36935_IG71
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG68: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz add eax, -48 cmp eax, 10
- jae SHORT G_M36935_IG69
+ jae SHORT G_M36935_IG70
inc edx cmp esi, edx
- ja SHORT G_M36935_IG75 - mov ecx, edx - jmp G_M36935_IG50 - ;; size=21 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG69 + test edx, edx + jl SHORT G_M36935_IG79 + jmp SHORT G_M36935_IG76 + ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG69: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] ; GC ptr vars -{V04 V59 V115}
- mov dword ptr [rbp-0x2C], edx - jmp G_M36935_IG49 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG70: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M36935_IG50 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG70: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M36935_IG49 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG71: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG50 @@ -1047,45 +1040,79 @@ G_M36935_IG73: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG50 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG74: ; bbWeight=0, gcVars=00000000000000000810000000000000 {V04 V115}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M36935_IG50 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG75: ; bbWeight=0, gcVars=00000000000000000810000000000000 {V04 V115}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15] ; byrRegs +[rbx r13] ; GC ptr vars +{V04 V59 V115} lea eax, [rax+4*rax]
- lea eax, [rdi+2*rax-0x30]
+ lea eax, [r9+2*rax-0x30] + inc edx + cmp esi, edx + jbe SHORT G_M36935_IG77 + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M36935_IG76: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + mov edi, edx + movzx rdi, word ptr [r15+2*rdi+0x0C] + mov r9d, edi + lea edi, [r9-0x30] + cmp edi, 9 + ja SHORT G_M36935_IG82 + cmp eax, 0xD1FFAB1E + jl SHORT G_M36935_IG75 + jmp SHORT G_M36935_IG80 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M36935_IG77: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r14-r15] + ; byrRegs -[rbx r13] + ; GC ptr vars -{V04 V59 V115} + mov ecx, edx + jmp G_M36935_IG50 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG78: ; bbWeight=0, gcVars=00000000000000000810000000000000 {V04 V115}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref + ; gcrRegs +[r14-r15] + ; byrRegs +[rbx r13] + ; GC ptr vars +{V04 V59 V115} + lea eax, [rax+4*rax] + lea eax, [r9+2*rax-0x30]
...

+49 (+1.71%) : 576079.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T01] ( 47, 34.62) byref -> rbx this single-def ; V01 arg1 [V01,T30] ( 9, 3.98) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 18.11) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 18.11) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T50] ( 3, 2.91) ref -> [rbp-0x88] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61, 42.12) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T12] ( 31, 11.72) ushort -> [rbp-0x30] -; V07 loc3 [V07,T33] ( 12, 5.69) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 66, 42.12) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T12] ( 34, 11.72) ushort -> [rbp-0x30] +; V07 loc3 [V07,T33] ( 15, 5.69) int -> [rbp-0x34]
; V08 loc4 [V08,T45] ( 5, 3.84) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T26] ( 7, 7.62) int -> [rbp-0x3C] @@ -183,7 +183,7 @@ ; V171 cse2 [V171,T35] ( 3, 5.63) int -> r8 "CSE - moderate" ; V172 cse3 [V172,T34] ( 5, 5.64) int -> rcx multi-def "CSE - moderate" ; V173 cse4 [V173,T62] ( 3, 1.18) int -> r15 "CSE - conservative"
-; V174 cse5 [V174,T04] ( 18, 18.11) int -> [rbp-0x78] spill-single-def "CSE - aggressive"
+; V174 cse5 [V174,T04] ( 19, 18.11) int -> [rbp-0x78] spill-single-def "CSE - aggressive"
; V175 cse6 [V175,T09] ( 12, 13.16) int -> [rbp-0x7C] spill-single-def "CSE - moderate" ; V176 cse7 [V176,T32] ( 3, 5.72) int -> rdi "CSE - moderate" ; V177 rat0 [V177,T06] ( 6, 15.25) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> @@ -482,7 +482,7 @@ G_M36935_IG19: ; bbWeight=1.91, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2 mov gword ptr [rbp-0xA0], r8 ; GC ptr vars +{V13} cmp gword ptr [rbp-0x88], 0
- jne G_M36935_IG103
+ jne G_M36935_IG108
;; size=47 bbWeight=1.91 PerfScore 18.11 G_M36935_IG20: ; bbWeight=1.91, gcVars=00000000000000000504000000004000 {V04 V12 V13 V115}, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz test rsi, rsi @@ -503,7 +503,7 @@ G_M36935_IG22: ; bbWeight=0.95, gcrefRegs=C800 {r11 r14 r15}, byrefRegs=2 ; gcrRegs -[r8] mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [r11], rdi
- jne G_M36935_IG106
+ jne G_M36935_IG111
xor r11, r11 ;; size=22 bbWeight=0.95 PerfScore 4.29 G_M36935_IG23: ; bbWeight=1.91, gcrefRegs=C800 {r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref @@ -879,7 +879,8 @@ G_M36935_IG53: ; bbWeight=0, gcVars=00000000000000000004000000000000 {V04 mov eax, dword ptr [rbp-0x34] cmp eax, dword ptr [rbp-0x48] jle SHORT G_M36935_IG54
- mov edx, eax
+ mov edi, eax + mov edx, edi
sub edx, dword ptr [rbp-0x48] mov rdi, rbx ; byrRegs +[rdi] @@ -889,7 +890,7 @@ G_M36935_IG53: ; bbWeight=0, gcVars=00000000000000000004000000000000 {V04 ; gcr arg pop 0 mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG05
- ;; size=35 bbWeight=0 PerfScore 0.00
+ ;; size=37 bbWeight=0 PerfScore 0.00
G_M36935_IG54: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG05 @@ -899,8 +900,8 @@ G_M36935_IG55: ; bbWeight=0, gcVars=00000000000000000504400000000000 {V04 mov eax, dword ptr [rbp-0x2C] mov r11, gword ptr [rbp-0xB0] ; gcrRegs +[r11]
- mov esi, dword ptr [rbp-0x6C] - test esi, esi
+ mov r8d, dword ptr [rbp-0x6C] + test r8d, r8d
je SHORT G_M36935_IG57 mov rcx, gword ptr [rbp-0x98] ; gcrRegs +[rcx] @@ -909,6 +910,7 @@ G_M36935_IG55: ; bbWeight=0, gcVars=00000000000000000504400000000000 {V04 jne SHORT G_M36935_IG56 mov rdi, bword ptr [rbp-0xE8] ; byrRegs +[rdi]
+ mov esi, r8d
; GC ptr vars -{V12 V46 V115} call <unknown method> ; gcrRegs -[rcx r11] +[rax] @@ -920,7 +922,7 @@ G_M36935_IG55: ; bbWeight=0, gcVars=00000000000000000504400000000000 {V04 ; gcrRegs +[rcx] mov r11, gword ptr [rbp-0xB0] ; gcrRegs +[r11]
- ;; size=57 bbWeight=0 PerfScore 0.00
+ ;; size=62 bbWeight=0 PerfScore 0.00
G_M36935_IG56: ; bbWeight=0, gcrefRegs=C802 {rcx r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref ; gcrRegs -[rax rsi] mov rdi, r11 @@ -1204,12 +1206,10 @@ G_M36935_IG80: ; bbWeight=0, gcVars=00000000000000000104000000000000 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG91
+ jbe G_M36935_IG92
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG81: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -1220,16 +1220,14 @@ G_M36935_IG81: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb cmp eax, 32 jne SHORT G_M36935_IG84 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG82: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG82: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx cmp esi, edx
- jbe G_M36935_IG90
+ jbe SHORT G_M36935_IG91
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=25 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
G_M36935_IG83: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -1237,50 +1235,47 @@ G_M36935_IG83: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG84: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref cmp eax, 44
- jne G_M36935_IG96
+ jne G_M36935_IG101
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG85: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M36935_IG89
+ jbe SHORT G_M36935_IG90
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG85
- mov eax, edi
cmp eax, 45 jne SHORT G_M36935_IG86 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M36935_IG88
+ jbe SHORT G_M36935_IG89
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG86: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz add eax, -48 cmp eax, 10
- jae SHORT G_M36935_IG87
+ jae SHORT G_M36935_IG88
inc edx cmp esi, edx
- ja SHORT G_M36935_IG93 - mov ecx, edx - jmp G_M36935_IG67 - ;; size=21 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG87 + test edx, edx + jl SHORT G_M36935_IG97 + jmp SHORT G_M36935_IG94 + ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] ; GC ptr vars -{V04 V115}
- mov dword ptr [rbp-0x2C], edx - jmp G_M36935_IG66 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG88: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M36935_IG67 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG88: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M36935_IG66 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG89: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG67 @@ -1293,45 +1288,79 @@ G_M36935_IG91: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG67 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG92: ; bbWeight=0, gcVars=00000000000000000104000000000000 {V04 V115}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG92: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M36935_IG67 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG93: ; bbWeight=0, gcVars=00000000000000000104000000000000 {V04 V115}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15] ; byrRegs +[rbx r13] ; GC ptr vars +{V04 V115} lea eax, [rax+4*rax]
- lea eax, [rdi+2*rax-0x30]
+ lea eax, [r9+2*rax-0x30] + inc edx + cmp esi, edx + jbe SHORT G_M36935_IG95 + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M36935_IG94: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + mov edi, edx + movzx rdi, word ptr [r15+2*rdi+0x0C] + mov r9d, edi + lea edi, [r9-0x30] + cmp edi, 9 + ja SHORT G_M36935_IG100 + cmp eax, 0xD1FFAB1E + jl SHORT G_M36935_IG93 + jmp SHORT G_M36935_IG98 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r14-r15] + ; byrRegs -[rbx r13] + ; GC ptr vars -{V04 V115} + mov ecx, edx + jmp G_M36935_IG67 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; bbWeight=0, gcVars=00000000000000000104000000000000 {V04 V115}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref + ; gcrRegs +[r14-r15] + ; byrRegs +[rbx r13] + ; GC ptr vars +{V04 V115} + lea eax, [rax+4*rax] + lea eax, [r9+2*rax-0x30]
mov dword ptr [rbp-0x34], eax inc edx cmp esi, edx mov eax, dword ptr [rbp-0x34]
- jbe G_M36935_IG101 - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M36935_IG93: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jbe G_M36935_IG106 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG97: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, esi jae G_M36935_IG73
- mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
...

+49 (+1.72%) : 74537.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T01] ( 47, 27.17) byref -> rbx this single-def ; V01 arg1 [V01,T26] ( 8, 3.14) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 13.86) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 13.86) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T52] ( 3, 2.29) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 30.71) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T12] ( 31, 7.71) ushort -> [rbp-0x30] -; V07 loc3 [V07,T44] ( 13, 3.71) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 67, 30.71) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T12] ( 34, 7.71) ushort -> [rbp-0x30] +; V07 loc3 [V07,T44] ( 16, 3.71) int -> [rbp-0x34]
; V08 loc4 [V08,T50] ( 5, 2.71) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T27] ( 7, 5.14) int -> [rbp-0x3C] @@ -180,7 +180,7 @@ ; V168 cse2 [V168,T48] ( 3, 3.42) int -> r8 "CSE - conservative" ; V169 cse3 [V169,T47] ( 5, 3.43) int -> registers multi-def "CSE - conservative" ; V170 cse4 [V170,T51] ( 3, 2.57) int -> r14 "CSE - conservative"
-; V171 cse5 [V171,T04] ( 18, 13.14) int -> [rbp-0x74] spill-single-def "CSE - moderate"
+; V171 cse5 [V171,T04] ( 19, 13.14) int -> [rbp-0x74] spill-single-def "CSE - moderate"
; V172 cse6 [V172,T11] ( 14, 8.02) int -> [rbp-0x78] "CSE - moderate" ; V173 rat0 [V173,T06] ( 6, 10.29) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V174 rat1 [V174,T09] ( 6, 9.14) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -460,7 +460,7 @@ G_M36935_IG15: ; bbWeight=1.29, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2 mov gword ptr [rbp-0x98], r8 ; GC ptr vars +{V13} cmp gword ptr [rbp-0x80], 0
- jne G_M36935_IG84
+ jne G_M36935_IG89
;; size=44 bbWeight=1.29 PerfScore 12.21 G_M36935_IG16: ; bbWeight=1.29, gcVars=00000000000000000C10000000008000 {V04 V12 V13 V112}, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz test rsi, rsi @@ -511,7 +511,7 @@ G_M36935_IG21: ; bbWeight=1.14, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=20 G_M36935_IG22: ; bbWeight=0.57, gcrefRegs=C900 {r8 r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r11], rsi
- jne G_M36935_IG87
+ jne G_M36935_IG92
xor r11, r11 ;; size=22 bbWeight=0.57 PerfScore 2.57 G_M36935_IG23: ; bbWeight=1.14, gcrefRegs=C900 {r8 r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref @@ -520,12 +520,12 @@ G_M36935_IG23: ; bbWeight=1.14, gcrefRegs=C900 {r8 r11 r14 r15}, byrefReg mov gword ptr [rbp-0xA8], rdi ; GC ptr vars +{V20} test rdi, rdi
- jne G_M36935_IG91
+ jne G_M36935_IG96
test r8, r8
- je G_M36935_IG94
+ je G_M36935_IG99
mov rsi, 0xD1FFAB1E ; System.String cmp qword ptr [r8], rsi
- jne G_M36935_IG95
+ jne G_M36935_IG100
;; size=47 bbWeight=1.14 PerfScore 9.14 G_M36935_IG24: ; bbWeight=1.14, gcVars=00000000000000000010000000000000 {V04}, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs -[rdi r11] @@ -536,7 +536,7 @@ G_M36935_IG24: ; bbWeight=1.14, gcVars=00000000000000000010000000000000 { G_M36935_IG25: ; bbWeight=1.14, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref ; gcrRegs -[r8] test rsi, rsi
- je G_M36935_IG96
+ je G_M36935_IG101
;; size=9 bbWeight=1.14 PerfScore 1.43 G_M36935_IG26: ; bbWeight=1.14, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref mov ecx, dword ptr [rsi+0x08] @@ -612,7 +612,7 @@ G_M36935_IG31: ; bbWeight=0.57, gcVars=00000000000000000010000000000000 { ; byrRegs -[rdx rsi] ; GC ptr vars -{V100} mov eax, dword ptr [rbp-0x2C]
- jmp G_M36935_IG97
+ jmp G_M36935_IG102
;; size=8 bbWeight=0.57 PerfScore 1.71 G_M36935_IG32: ; bbWeight=0.64, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rsi r14-r15] @@ -760,7 +760,7 @@ G_M36935_IG40: ; bbWeight=0.14, gcVars=00000000000000000C12000000008000 { mov rax, gword ptr [rbp-0xA0] ; gcrRegs +[rax] cmp qword ptr [rax], r8
- jne G_M36935_IG90
+ jne G_M36935_IG95
mov gword ptr [rsp], r14 ; gcr arg write mov r8, bword ptr [rbp-0xD8] @@ -783,7 +783,7 @@ G_M36935_IG41: ; bbWeight=0.14, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 mov esi, dword ptr [rbp-0x48] add dword ptr [rbx+0x08], esi cmp dword ptr [rbp-0x38], 0
- jne G_M36935_IG88
+ jne G_M36935_IG93
mov ecx, dword ptr [rbp-0x2C] jmp G_M36935_IG04 ;; size=39 bbWeight=0.14 PerfScore 1.75 @@ -958,12 +958,10 @@ G_M36935_IG61: ; bbWeight=0, gcVars=00000000000000000410000000000000 {V04 mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG72
+ jbe G_M36935_IG73
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG62: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz lea edi, [rax-0x30] cmp edi, 9 @@ -974,16 +972,14 @@ G_M36935_IG62: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb cmp eax, 32 jne SHORT G_M36935_IG65 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG63: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG63: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx cmp esi, edx
- jbe G_M36935_IG71
+ jbe SHORT G_M36935_IG72
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
mov dword ptr [rbp-0x3C], ecx
- mov eax, edi - ;; size=25 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0 PerfScore 0.00
G_M36935_IG64: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz cmp eax, 32 mov ecx, dword ptr [rbp-0x3C] @@ -991,50 +987,47 @@ G_M36935_IG64: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG65: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref cmp eax, 44
- jne G_M36935_IG77
+ jne G_M36935_IG82
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG66: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe SHORT G_M36935_IG70
+ jbe SHORT G_M36935_IG71
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG66
- mov eax, edi
cmp eax, 45 jne SHORT G_M36935_IG67 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe SHORT G_M36935_IG69
+ jbe SHORT G_M36935_IG70
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - mov eax, edi - ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG67: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz add eax, -48 cmp eax, 10
- jae SHORT G_M36935_IG68
+ jae SHORT G_M36935_IG69
inc edx cmp esi, edx
- ja SHORT G_M36935_IG74 - mov ecx, edx - jmp G_M36935_IG49 - ;; size=21 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG68 + test edx, edx + jl SHORT G_M36935_IG78 + jmp SHORT G_M36935_IG75 + ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG68: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14-r15] ; byrRegs -[rbx r13] ; GC ptr vars -{V04 V112}
- mov dword ptr [rbp-0x2C], edx - jmp G_M36935_IG48 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG69: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx jmp G_M36935_IG49 ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG69: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov dword ptr [rbp-0x2C], edx + jmp G_M36935_IG48 + ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG70: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG49 @@ -1047,43 +1040,77 @@ G_M36935_IG72: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov ecx, edx jmp G_M36935_IG49 ;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG73: ; bbWeight=0, gcVars=00000000000000000410000000000000 {V04 V112}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG73: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov ecx, edx + jmp G_M36935_IG49 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG74: ; bbWeight=0, gcVars=00000000000000000410000000000000 {V04 V112}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15] ; byrRegs +[rbx r13] ; GC ptr vars +{V04 V112} lea eax, [rax+4*rax]
- lea eax, [rdi+2*rax-0x30]
+ lea eax, [r9+2*rax-0x30]
inc edx cmp esi, edx
- jbe G_M36935_IG82 - ;; size=17 bbWeight=0 PerfScore 0.00 -G_M36935_IG74: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jbe SHORT G_M36935_IG76 + ;; size=14 bbWeight=0 PerfScore 0.00 +G_M36935_IG75: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + mov edi, edx + movzx rdi, word ptr [r15+2*rdi+0x0C] + mov r9d, edi + lea edi, [r9-0x30] + cmp edi, 9 + ja SHORT G_M36935_IG81 + cmp eax, 0xD1FFAB1E + jl SHORT G_M36935_IG74 + jmp SHORT G_M36935_IG79 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M36935_IG76: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r14-r15] + ; byrRegs -[rbx r13] + ; GC ptr vars -{V04 V112} + mov ecx, edx + jmp G_M36935_IG49 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M36935_IG77: ; bbWeight=0, gcVars=00000000000000000410000000000000 {V04 V112}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref + ; gcrRegs +[r14-r15] + ; byrRegs +[rbx r13] + ; GC ptr vars +{V04 V112} + lea eax, [rax+4*rax] + lea eax, [r9+2*rax-0x30] + inc edx + cmp esi, edx + jbe G_M36935_IG87 + ;; size=18 bbWeight=0 PerfScore 0.00 +G_M36935_IG78: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, esi ...

librariestestsnotieredcompilation.run.linux.x64.Release.mch

+0 (0.00%) : 131430.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -8,54 +8,54 @@ ; 14 inlinees with PGO data; 44 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T33] ( 3, 5.96) ref -> rbx class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T25] ( 4, 10.01) ref -> r15 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T32] ( 3, 5.96) ref -> rbx class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T13] ( 7, 21.83) ref -> r15 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T08] ( 7, 24.76) int -> rdi ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T39] ( 3, 1 ) ref -> [rbp-0x58] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T38] ( 5, 2 ) ref -> [rbp-0x60] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.03) int -> rbx
+; V04 loc4 [V04,T38] ( 3, 1 ) ref -> [rbp-0x58] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T37] ( 5, 2 ) ref -> [rbp-0x60] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.75) int -> rbx
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T31] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T26] ( 5, 10.01) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T34] ( 2, 4.01) int -> rbx "Inlining Arg" -; V11 tmp4 [V11,T32] ( 3, 6.01) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T28] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T23] ( 5, 10.01) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T33] ( 2, 4.01) int -> rbx "Inlining Arg" +; V11 tmp4 [V11,T31] ( 3, 6.01) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T37] ( 3, 3.00) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T27] ( 4, 8.01) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T28] ( 4, 8.01) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T13] ( 2, 16.02) int -> [rbp-0x2C] spill-single-def "Inlining Arg" -; V17 tmp10 [V17,T09] ( 3, 24.04) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T36] ( 3, 3.00) ref -> [rbp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T26] ( 4, 8.01) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T27] ( 4, 8.01) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T14] ( 2, 15.86) int -> [rbp-0x2C] spill-single-def "Inlining Arg" +; V17 tmp10 [V17,T10] ( 3, 23.80) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T18] ( 3, 12.02) ref -> [rbp-0x88] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.05) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T19] ( 3, 11.90) ref -> [rbp-0x88] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 31.73) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 31.73) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T14] ( 2, 16.02) int -> [rbp-0x30] spill-single-def "Inlining Arg" -; V24 tmp17 [V24,T10] ( 3, 24.04) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T15] ( 2, 15.86) int -> [rbp-0x30] spill-single-def "Inlining Arg" +; V24 tmp17 [V24,T11] ( 3, 23.80) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T19] ( 3, 12.02) ref -> [rbp-0xA8] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.05) ref -> [rbp-0xB0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> [rbp-0xB8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T20] ( 3, 11.90) ref -> [rbp-0xA8] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 31.73) ref -> [rbp-0xB0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 31.73) ref -> [rbp-0xB8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T15] ( 2, 16.02) ushort -> [rbp-0x34] spill-single-def "Inlining Arg" -; V34 tmp27 [V34,T11] ( 3, 24.04) ref -> [rbp-0xC0] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T16] ( 2, 15.86) ushort -> [rbp-0x34] spill-single-def "Inlining Arg" +; V34 tmp27 [V34,T12] ( 3, 23.80) ref -> [rbp-0xC0] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T20] ( 3, 12.02) ref -> [rbp-0xC8] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.05) ref -> [rbp-0xD0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> [rbp-0xD8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T21] ( 3, 11.90) ref -> [rbp-0xC8] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 31.73) ref -> [rbp-0xD0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 31.73) ref -> [rbp-0xD8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T35] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T29] ( 3, 8.01) ubyte -> rax "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T34] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T29] ( 3, 7.93) ubyte -> rax "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T36] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T30] ( 2, 8.01) ubyte -> rdi "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T35] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T30] ( 3, 7.93) ubyte -> r13 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,15 +64,14 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> rax "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T41] ( 6, 0 ) struct ( 8) [rbp-0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T40] ( 1, 1 ) long -> [rbp-0xE0] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T12] ( 5, 20.03) byref -> r13 "CSE - moderate" -; V59 cse1 [V59,T21] ( 3, 12.02) long -> r13 "CSE - moderate" -; V60 cse2 [V60,T16] ( 5, 14.02) long -> [rbp-0x48] spill-single-def "CSE - moderate" -; V61 cse3 [V61,T17] ( 5, 14.02) long -> [rbp-0x50] spill-single-def "CSE - moderate" -; V62 cse4 [V62,T23] ( 4, 10.02) long -> r14 "CSE - moderate" -; V63 cse5 [V63,T24] ( 4, 10.02) long -> r12 "CSE - moderate" -; V64 cse6 [V64,T22] ( 3, 11.88) int -> rcx "CSE - moderate"
+; V56 tmp49 [V56,T40] ( 6, 0 ) struct ( 8) [rbp-0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T39] ( 1, 1 ) long -> [rbp-0xE0] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T09] ( 6, 23.80) long -> r13 "CSE - moderate" +; V59 cse1 [V59,T17] ( 5, 13.90) long -> [rbp-0x48] spill-single-def "CSE - moderate" +; V60 cse2 [V60,T18] ( 5, 13.90) long -> [rbp-0x50] spill-single-def "CSE - moderate" +; V61 cse3 [V61,T24] ( 4, 9.94) long -> r14 "CSE - moderate" +; V62 cse4 [V62,T25] ( 4, 9.94) long -> r12 "CSE - moderate" +; V63 cse5 [V63,T22] ( 3, 11.88) int -> rcx "CSE - moderate"
; ; Lcl frame size = 184 @@ -136,7 +135,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, mov gword ptr [rbp-0x58], r14 ; GC ptr vars +{V04} ;; size=36 bbWeight=1 PerfScore 6.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
mov rdi, 0xD1FFAB1E ; System.IO.UnmanagedMemoryAccessor call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -156,7 +155,7 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=C00 mov gword ptr [rbp-0x60], r13 ; GC ptr vars +{V05} ;; size=47 bbWeight=1 PerfScore 6.75
-G_M53770_IG06: ; bbWeight=1.00, gcVars=000000C000000000 {V04 V05}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1.00, gcVars=0000006000000000 {V04 V05}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref
mov rdi, r13 ; gcrRegs +[rdi] mov rdx, rbx @@ -262,7 +261,7 @@ G_M53770_IG07: ; bbWeight=1.00, extend ; gcr arg pop 0 xor ebx, ebx ;; size=36 bbWeight=1.00 PerfScore 7.51
-G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+G_M53770_IG08: ; bbWeight=3.97, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
mov r13d, ebx shl r13, 4 mov eax, dword ptr [r15+r13+0x10] @@ -344,13 +343,11 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[rdx] ; gcr arg pop 0
- lea r13, bword ptr [r15+r13+0x10] - ; byrRegs +[r13] - mov eax, dword ptr [r13+0x08]
+ mov eax, dword ptr [r15+r13+0x18]
mov dword ptr [rbp-0x30], eax
- ;; size=212 bbWeight=4.01 PerfScore 167.26 -G_M53770_IG09: ; bbWeight=4.01, extend
mov rdi, r14
+ ;; size=211 bbWeight=3.97 PerfScore 162.61 +G_M53770_IG09: ; bbWeight=3.97, extend
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0 @@ -427,13 +424,13 @@ G_M53770_IG09: ; bbWeight=4.01, extend call [<unknown method>] ; gcrRegs -[rdx] ; gcr arg pop 0
- movzx rax, byte ptr [r13+0x04]
+ movzx rax, byte ptr [r15+r13+0x14]
test eax, eax jne G_M53770_IG13
- movzx rax, word ptr [r13+0x0C]
+ movzx rax, word ptr [r15+r13+0x1C]
mov dword ptr [rbp-0x34], eax
- ;; size=216 bbWeight=4.01 PerfScore 162.25 -G_M53770_IG10: ; bbWeight=4.01, isz, extend
+ ;; size=215 bbWeight=3.97 PerfScore 159.64 +G_M53770_IG10: ; bbWeight=3.97, isz, extend
mov rdi, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[ushort] call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -511,16 +508,15 @@ G_M53770_IG10: ; bbWeight=4.01, isz, extend call [<unknown method>] ; gcrRegs -[rdx] ; gcr arg pop 0
- movzx rdi, byte ptr [r13+0x0E] - test edi, edi
+ movzx r13, byte ptr [r15+r13+0x1E] + test r13d, r13d
je SHORT G_M53770_IG14
- ;; size=218 bbWeight=4.01 PerfScore 149.23 -G_M53770_IG11: ; bbWeight=4, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref - ; byrRegs -[r13]
+ ;; size=220 bbWeight=3.97 PerfScore 147.74 +G_M53770_IG11: ; bbWeight=3.96, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
inc ebx cmp ebx, 12 jl G_M53770_IG08
- ;; size=11 bbWeight=4 PerfScore 6.00
+ ;; size=11 bbWeight=3.96 PerfScore 5.94
G_M53770_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r15] jmp SHORT G_M53770_IG15 @@ -542,7 +538,7 @@ G_M53770_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=27 bbWeight=0 PerfScore 0.00 G_M53770_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov byte ptr [rbp-0x40], 1
- mov byte ptr [rbp-0x3F], 0
+ mov byte ptr [rbp-0x3F], r13b
movzx rsi, word ptr [rbp-0x40] xor rdi, rdi ; gcrRegs +[rdi] @@ -585,8 +581,8 @@ G_M53770_IG17: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=1 PerfScore 4.25
-G_M53770_IG18: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V05 V38}
+G_M53770_IG18: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V05 V37 V38}
push rbp push r15 push r14 @@ -598,11 +594,11 @@ G_M53770_IG18: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs mov qword ptr [rsp], rbp lea rbp, [rbp+0xE0] ;; size=25 bbWeight=0 PerfScore 0.00
-G_M53770_IG19: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG19: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbp-0x60] ; gcrRegs +[rdi] mov byte ptr [rdi+0x24], 0
- ; GC ptr vars -{V05 V38}
+ ; GC ptr vars -{V05 V37 V38}
call <unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0 @@ -630,7 +626,7 @@ G_M53770_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp], rbp lea rbp, [rbp+0xE0] ;; size=25 bbWeight=0 PerfScore 0.00
-G_M53770_IG22: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG22: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbp-0x58] ; gcrRegs +[rdi] ; GC ptr vars -{V04} @@ -650,7 +646,7 @@ G_M53770_IG23: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=15 bbWeight=0 PerfScore 0.00
-Total bytes of code 1315, prolog size 32, PerfScore 598.71, instruction count 310, allocated bytes for code 1315 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
+Total bytes of code 1315, prolog size 32, PerfScore 589.89, instruction count 309, allocated bytes for code 1315 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
; ============================================================ Unwind Info:

realworld.run.linux.x64.checked.mch

+34 (+1.20%) : 2469.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 33 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> rbx this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> rbx this single-def
; V01 arg1 [V01,T33] ( 7, 11.50) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T71] ( 3, 7 ) ref -> [rbp-0x90] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [rbp-0x34]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [rbp-0x3C] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T43] ( 3, 12 ) ushort -> rdx
-; V17 loc13 [V17,T35] ( 6, 12 ) int -> r9
+; V17 loc13 [V17,T35] ( 6, 12 ) int -> rdi
; V18 loc14 [V18,T38] ( 3, 12 ) ref -> [rbp-0xB0] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T74] ( 3, 6 ) ref -> [rbp-0xB8] class-hnd spill-single-def <<unknown class>> @@ -210,7 +210,7 @@ ; V199 cse3 [V199,T77] ( 3, 6 ) int -> r10 "CSE - conservative" ; V200 cse4 [V200,T78] ( 3, 6 ) int -> rsi "CSE - conservative" ; V201 cse5 [V201,T90] ( 3, 1.50) int -> r14 "CSE - conservative"
-; V202 cse6 [V202,T02] ( 18,142 ) int -> [rbp-0x80] spill-single-def "CSE - aggressive"
+; V202 cse6 [V202,T04] ( 19,126.16) int -> [rbp-0x80] spill-single-def "CSE - aggressive"
; V203 cse7 [V203,T06] ( 21, 58 ) int -> [rbp-0x84] spill-single-def "CSE - aggressive" ; V204 cse8 [V204,T12] ( 11, 29 ) byref -> [rbp-0x108] multi-def "CSE - moderate" ; @@ -237,7 +237,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=40 bbWeight=1 PerfScore 8.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz test r15, r15
- je G_M36935_IG68
+ je G_M36935_IG72
test r14, r14 jne SHORT G_M36935_IG04 ;; size=14 bbWeight=1 PerfScore 2.50 @@ -274,7 +274,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=00000000000000800000000000000000 {V04 mov edx, dword ptr [r15+0x08] mov dword ptr [rbp-0x80], edx cmp edx, ecx
- jbe G_M36935_IG64
+ jbe G_M36935_IG68
;; size=15 bbWeight=8 PerfScore 34.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref mov edi, ecx @@ -328,9 +328,9 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ; gcr arg pop 0 mov dword ptr [rbp-0x50], eax test eax, eax
- jl G_M36935_IG65
+ jl G_M36935_IG69
cmp eax, dword ptr [rbp-0x7C]
- ja G_M36935_IG75
+ ja G_M36935_IG79
mov edi, eax not edi shr edi, 31 @@ -364,7 +364,7 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb mov edx, dword ptr [rbx+0x08] mov esi, dword ptr [rdi+0x08] cmp edx, esi
- ja G_M36935_IG75
+ ja G_M36935_IG79
mov rdi, bword ptr [rdi] mov r8d, edx lea r8, bword ptr [rdi+2*r8] @@ -383,7 +383,7 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb ; gcr arg pop 0 mov eax, dword ptr [rbp-0x50] cmp eax, dword ptr [rbp-0x54]
- ja G_M36935_IG76
+ ja G_M36935_IG80
mov edx, eax add rdx, rdx mov rdi, bword ptr [rbp-0xC8] @@ -400,7 +400,7 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb add ecx, edi mov eax, dword ptr [rbp-0x80] cmp ecx, eax
- jae G_M36935_IG67
+ jae G_M36935_IG71
mov edi, ecx movzx rdx, word ptr [r15+2*rdi+0x0C] inc ecx @@ -431,7 +431,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, ; byrRegs -[rbx rsi r13] ; GC ptr vars -{V04} mov edx, ecx
- jmp G_M36935_IG71
+ jmp G_M36935_IG75
;; size=7 bbWeight=2 PerfScore 4.50 G_M36935_IG13: ; bbWeight=2, gcVars=00000000000000800000000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref ; gcrRegs +[r14-r15] @@ -452,7 +452,7 @@ G_M36935_IG14: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb G_M36935_IG15: ; bbWeight=4, gcVars=00000000000000800000000000001000 {V04 V204}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz ; GC ptr vars -{V71} +{V12 V204} cmp edx, 123
- jne G_M36935_IG69
+ jne G_M36935_IG73
mov dword ptr [rbp-0x30], r8d xor edx, edx mov dword ptr [rbp-0x34], edx @@ -467,7 +467,7 @@ G_M36935_IG15: ; bbWeight=4, gcVars=00000000000000800000000000001000 {V04 mov ecx, dword ptr [rbp-0x2C] lea edi, [rcx-0x01] cmp edi, eax
- jae G_M36935_IG67
+ jae G_M36935_IG71
mov dword ptr [rbp-0x2C], ecx lea edi, [rcx-0x01] cmp word ptr [r15+2*rdi+0x0C], 123 @@ -485,175 +485,199 @@ G_M36935_IG15: ; bbWeight=4, gcVars=00000000000000800000000000001000 {V04 mov eax, dword ptr [rbp-0x30] lea ecx, [rax-0x30] cmp ecx, 10
- jae G_M36935_IG70
+ jae G_M36935_IG74
mov edx, dword ptr [rbp-0x2C] inc edx mov esi, dword ptr [rbp-0x80] cmp esi, edx
- jbe G_M36935_IG71
+ jbe G_M36935_IG75
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 125
+ cmp eax, 125
je SHORT G_M36935_IG17
- ;; size=143 bbWeight=4 PerfScore 140.00
+ ;; size=141 bbWeight=4 PerfScore 139.00
G_M36935_IG16: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz jmp SHORT G_M36935_IG19 ;; size=2 bbWeight=2 PerfScore 4.00 G_M36935_IG17: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref mov dword ptr [rbp-0x3C], ecx
- jmp G_M36935_IG35
+ jmp G_M36935_IG39
;; size=8 bbWeight=2 PerfScore 6.00 G_M36935_IG18: ; bbWeight=8, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref lea ecx, [rcx+4*rcx]
- lea ecx, [rdi+2*rcx-0x30]
+ lea ecx, [rax+2*rcx-0x30]
mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M36935_IG71 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
+ jbe G_M36935_IG75 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C]
mov ecx, dword ptr [rbp-0x3C] ;; size=31 bbWeight=8 PerfScore 58.00 G_M36935_IG19: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
- lea eax, [rdi-0x30] - cmp eax, 9
+ lea edi, [rax-0x30] + cmp edi, 9
ja SHORT G_M36935_IG20 cmp ecx, 0xD1FFAB1E jl SHORT G_M36935_IG18 ;; size=16 bbWeight=16 PerfScore 48.00 G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
- cmp edi, 32
+ cmp eax, 32
jne SHORT G_M36935_IG22 ;; size=5 bbWeight=2 PerfScore 2.50 G_M36935_IG21: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe G_M36935_IG71 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32
+ jbe G_M36935_IG75 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + cmp eax, 32
je SHORT G_M36935_IG21 ;; size=23 bbWeight=16 PerfScore 80.00
-G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref - cmp edi, 44 - mov r8d, dword ptr [rbp-0x34] - jne G_M36935_IG29 - ;; size=13 bbWeight=2 PerfScore 4.50
+G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + cmp eax, 44 + mov r9d, eax + jne SHORT G_M36935_IG27 + ;; size=8 bbWeight=2 PerfScore 3.00
G_M36935_IG23: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz inc edx cmp esi, edx
- jbe G_M36935_IG71 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32
+ jbe G_M36935_IG75 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + cmp eax, 32
je SHORT G_M36935_IG23 ;; size=23 bbWeight=16 PerfScore 80.00 G_M36935_IG24: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
- cmp edi, 45
+ cmp eax, 45
jne SHORT G_M36935_IG25 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe G_M36935_IG71 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
+ jbe G_M36935_IG75 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C]
;; size=30 bbWeight=2 PerfScore 12.00
-G_M36935_IG25: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref - add edi, -48 - mov r8d, edi - cmp r8d, 10 - jae G_M36935_IG32
+G_M36935_IG25: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz + add eax, -48 + cmp eax, 10 + jae SHORT G_M36935_IG26
inc edx cmp esi, edx
- jbe G_M36935_IG71 - ;; size=26 bbWeight=2 PerfScore 6.50 -G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz - cmp edx, esi - jae G_M36935_IG67 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - lea r9d, [rdi-0x30] - cmp r9d, 9 - ja SHORT G_M36935_IG27
...

+37 (+1.56%) : 2232.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 33, 559.50) ref -> rbx this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T31] ( 7, 17.50) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T12] ( 18, 127 ) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T11] ( 19, 127 ) ref -> r15 class-hnd single-def <System.String>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T61] ( 3, 7 ) ref -> [rbp-0x78] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [rbp-0x2C] ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [rbp-0x30] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [rbp-0x2C] ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [rbp-0x30] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [rbp-0x34]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [rbp-0x38] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [rbp-0x3C] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T45] ( 3, 12 ) ushort -> rdx
-; V17 loc13 [V17,T42] ( 6, 12 ) int -> r9
+; V17 loc13 [V17,T42] ( 6, 12 ) int -> rdi
; V18 loc14 [V18,T43] ( 3, 12 ) ref -> rax class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [rbp-0x98] class-hnd spill-single-def <<unknown class>> @@ -167,7 +167,7 @@ ; V156 cse3 [V156,T44] ( 3, 12 ) ref -> r8 "CSE - conservative" ; V157 cse4 [V157,T46] ( 3, 12 ) int -> rsi "CSE - conservative" ; V158 cse5 [V158,T03] ( 6, 416 ) int -> [rbp-0x6C] spill-single-def "CSE - aggressive"
-; V159 cse6 [V159,T11] ( 18, 142 ) int -> [rbp-0x70] spill-single-def "CSE - moderate"
+; V159 cse6 [V159,T12] ( 19, 126.16) int -> [rbp-0x70] spill-single-def "CSE - moderate"
; ; Lcl frame size = 152 @@ -192,7 +192,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=40 bbWeight=1 PerfScore 8.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz test r15, r15
- je G_M4730_IG70
+ je G_M4730_IG74
test r14, r14 jne SHORT G_M4730_IG04 ;; size=14 bbWeight=1 PerfScore 2.50 @@ -229,7 +229,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=00000000000000002000000000000000 {V04} mov edx, dword ptr [r15+0x08] mov dword ptr [rbp-0x70], edx cmp edx, ecx
- jbe G_M4730_IG65
+ jbe G_M4730_IG69
;; size=15 bbWeight=8 PerfScore 34.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref mov edi, ecx @@ -283,9 +283,9 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 ; gcr arg pop 0 mov dword ptr [rbp-0x50], eax test eax, eax
- jl G_M4730_IG67
+ jl G_M4730_IG71
cmp eax, dword ptr [rbp-0x68]
- ja G_M4730_IG81
+ ja G_M4730_IG85
mov edi, eax not edi shr edi, 31 @@ -307,7 +307,7 @@ G_M4730_IG08: ; bbWeight=4, isz, extend add ecx, dword ptr [rbp-0x50] mov eax, dword ptr [rbp-0x70] cmp ecx, eax
- jae G_M4730_IG69
+ jae G_M4730_IG73
mov edi, ecx movzx rdx, word ptr [r15+2*rdi+0x0C] inc ecx @@ -335,7 +335,7 @@ G_M4730_IG10: ; bbWeight=2, gcVars=00000000000000000000000000000000 {}, g ; byrRegs -[r13] ; GC ptr vars -{V04} mov edx, ecx
- jmp G_M4730_IG73
+ jmp G_M4730_IG77
;; size=7 bbWeight=2 PerfScore 4.50 G_M4730_IG11: ; bbWeight=2, gcVars=00000000000000002000000000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref ; gcrRegs +[rbx r14-r15] @@ -355,7 +355,7 @@ G_M4730_IG12: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 ;; size=10 bbWeight=4 PerfScore 13.00 G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz cmp edx, 123
- jne G_M4730_IG71
+ jne G_M4730_IG75
mov dword ptr [rbp-0x30], r8d xor edx, edx mov dword ptr [rbp-0x34], edx @@ -370,7 +370,7 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 mov ecx, dword ptr [rbp-0x2C] lea edi, [rcx-0x01] cmp edi, eax
- jae G_M4730_IG69
+ jae G_M4730_IG73
mov dword ptr [rbp-0x2C], ecx lea edi, [rcx-0x01] cmp word ptr [r15+2*rdi+0x0C], 123 @@ -388,175 +388,199 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 mov eax, dword ptr [rbp-0x30] lea ecx, [rax-0x30] cmp ecx, 10
- jae G_M4730_IG72
+ jae G_M4730_IG76
mov edx, dword ptr [rbp-0x2C] inc edx mov esi, dword ptr [rbp-0x70] cmp esi, edx
- jbe G_M4730_IG73
+ jbe G_M4730_IG77
mov eax, edx movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax - cmp edi, 125
+ cmp eax, 125
je SHORT G_M4730_IG15
- ;; size=143 bbWeight=4 PerfScore 140.00
+ ;; size=141 bbWeight=4 PerfScore 139.00
G_M4730_IG14: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz jmp SHORT G_M4730_IG17 ;; size=2 bbWeight=2 PerfScore 4.00 G_M4730_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref mov dword ptr [rbp-0x3C], ecx
- jmp G_M4730_IG33
+ jmp G_M4730_IG37
;; size=8 bbWeight=2 PerfScore 6.00 G_M4730_IG16: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref lea ecx, [rcx+4*rcx]
- lea ecx, [rdi+2*rcx-0x30]
+ lea ecx, [rax+2*rcx-0x30]
mov dword ptr [rbp-0x3C], ecx inc edx cmp esi, edx
- jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
+ jbe G_M4730_IG77 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C]
mov ecx, dword ptr [rbp-0x3C] ;; size=31 bbWeight=8 PerfScore 58.00 G_M4730_IG17: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
- lea eax, [rdi-0x30] - cmp eax, 9
+ lea edi, [rax-0x30] + cmp edi, 9
ja SHORT G_M4730_IG18 cmp ecx, 0xD1FFAB1E jl SHORT G_M4730_IG16 ;; size=16 bbWeight=16 PerfScore 48.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
- cmp edi, 32
+ cmp eax, 32
jne SHORT G_M4730_IG20 ;; size=5 bbWeight=2 PerfScore 2.50 G_M4730_IG19: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz inc edx cmp esi, edx
- jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32
+ jbe G_M4730_IG77 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + cmp eax, 32
je SHORT G_M4730_IG19 ;; size=23 bbWeight=16 PerfScore 80.00
-G_M4730_IG20: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref - cmp edi, 44 - mov r8d, dword ptr [rbp-0x34] - jne G_M4730_IG27 - ;; size=13 bbWeight=2 PerfScore 4.50
+G_M4730_IG20: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + cmp eax, 44 + mov r9d, eax + jne SHORT G_M4730_IG25 + ;; size=8 bbWeight=2 PerfScore 3.00
G_M4730_IG21: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz inc edx cmp esi, edx
- jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32
+ jbe G_M4730_IG77 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C] + cmp eax, 32
je SHORT G_M4730_IG21 ;; size=23 bbWeight=16 PerfScore 80.00 G_M4730_IG22: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
- cmp edi, 45
+ cmp eax, 45
jne SHORT G_M4730_IG23 mov dword ptr [rbp-0x38], 1 inc edx cmp esi, edx
- jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C]
+ jbe G_M4730_IG77 + mov eax, edx + movzx rax, word ptr [r15+2*rax+0x0C]
;; size=30 bbWeight=2 PerfScore 12.00
-G_M4730_IG23: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref - add edi, -48 - mov r8d, edi - cmp r8d, 10 - jae G_M4730_IG30
+G_M4730_IG23: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz + add eax, -48 + cmp eax, 10 + jae SHORT G_M4730_IG24
inc edx cmp esi, edx
- jbe G_M4730_IG73 - ;; size=26 bbWeight=2 PerfScore 6.50 -G_M4730_IG24: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - cmp edx, esi - jae G_M4730_IG69 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - lea r9d, [rdi-0x30] - cmp r9d, 9 - ja SHORT G_M4730_IG25 - cmp r8d, 0xD1FFAB1E - jl SHORT G_M4730_IG31 - ;; size=35 bbWeight=16 PerfScore 104.00 -G_M4730_IG25: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - cmp edi, 32 - jne SHORT G_M4730_IG27 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M4730_IG26: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - inc edx - cmp esi, edx - jbe G_M4730_IG73 - mov edi, edx - movzx rdi, word ptr [r15+2*rdi+0x0C] - cmp edi, 32 - je SHORT G_M4730_IG26 - ;; size=23 bbWeight=16 PerfScore 80.00 -G_M4730_IG27: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz - cmp edi, 125 - je SHORT G_M4730_IG29 - cmp edi, 58 - jne G_M4730_IG74
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 2 0 2 0 -0 +71
benchmarks.run_pgo.linux.x64.checked.mch 2 0 2 0 -0 +714
benchmarks.run_tiered.linux.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.x64.checked.mch 168 0 168 0 -0 +12,690
libraries.crossgen2.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.x64.checked.mch 2 1 1 0 -15 +306
libraries_tests.run.linux.x64.Release.mch 300 1 299 0 -33 +22,220
librariestestsnotieredcompilation.run.linux.x64.Release.mch 1 0 0 1 -0 +0
realworld.run.linux.x64.checked.mch 2 0 2 0 -0 +71
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
477 2 474 1 -48 +36,072

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 34,973 3,135 31,838 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch 156,554 60,225 96,329 13 (0.01%) 13 (0.01%)
benchmarks.run_tiered.linux.x64.checked.mch 56,297 42,308 13,989 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 598,038 355,280 242,758 10 (0.00%) 11 (0.00%)
libraries.crossgen2.linux.x64.checked.mch 1,930 0 1,930 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 296,876 6 296,870 0 (0.00%) 0 (0.00%)
libraries_tests.run.linux.x64.Release.mch 766,352 498,383 267,969 111 (0.01%) 111 (0.01%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 305,395 21,912 283,483 0 (0.00%) 0 (0.00%)
realworld.run.linux.x64.checked.mch 33,215 49 33,166 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch 64 0 64 0 (0.00%) 0 (0.00%)
2,249,694 981,298 1,268,396 134 (0.01%) 135 (0.01%)

jit-analyze output

benchmarks.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13722967 (overridden on cmd)
Total bytes of diff: 13723038 (overridden on cmd)
Total bytes of delta: 71 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


benchmarks.run_pgo.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 69144788 (overridden on cmd)
Total bytes of diff: 69145502 (overridden on cmd)
Total bytes of delta: 714 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


coreclr_tests.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 403316142 (overridden on cmd)
Total bytes of diff: 403328832 (overridden on cmd)
Total bytes of delta: 12690 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.pmi.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 60405130 (overridden on cmd)
Total bytes of diff: 60405421 (overridden on cmd)
Total bytes of delta: 291 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


libraries_tests.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 348249622 (overridden on cmd)
Total bytes of diff: 348271809 (overridden on cmd)
Total bytes of delta: 22187 (0.01 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 132683678 (overridden on cmd)
Total bytes of diff: 132683678 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


realworld.run.linux.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13212110 (overridden on cmd)
Total bytes of diff: 13212181 (overridden on cmd)
Total bytes of delta: 71 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



osx arm64

Diffs are based on 2,029,378 contexts (927,368 MinOpts, 1,102,010 FullOpts).

MISSED contexts: base: 109 (0.01%), diff: 110 (0.01%)

Overall (+28,984 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,184,380 +136
coreclr_tests.run.osx.arm64.checked.mch 483,585,340 +10,140
libraries.pmi.osx.arm64.checked.mch 80,206,160 +396
libraries_tests.run.osx.arm64.Release.mch 313,700,180 +18,156
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 163,152,648 +12
realworld.run.osx.arm64.checked.mch 15,075,948 +144

FullOpts (+28,984 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,183,752 +136
coreclr_tests.run.osx.arm64.checked.mch 153,412,572 +10,140
libraries.pmi.osx.arm64.checked.mch 80,085,032 +396
libraries_tests.run.osx.arm64.Release.mch 111,962,592 +18,156
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 149,998,956 +12
realworld.run.osx.arm64.checked.mch 14,511,996 +144

Example diffs

benchmarks.run.osx.arm64.checked.mch

+64 (+1.92%) : 2274.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 37 single block inlinees; 58 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> x19 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> x19 this single-def
; V01 arg1 [V01,T35] ( 7, 11.50) ref -> x21 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T26] ( 5, 15 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T72] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0x9C] -; V07 loc3 [V07,T06] ( 12, 62 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x9C] +; V07 loc3 [V07,T06] ( 15, 62 ) int -> x28
; V08 loc4 [V08,T25] ( 5, 18 ) ubyte -> [fp+0x98] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T08] ( 7, 48 ) int -> [fp+0x94] @@ -225,8 +225,8 @@ ; V214 cse3 [V214,T78] ( 3, 6 ) int -> x1 "CSE - conservative" ; V215 cse4 [V215,T79] ( 3, 6 ) int -> x1 "CSE - conservative" ; V216 cse5 [V216,T91] ( 3, 1.50) int -> x2 "CSE - conservative"
-; V217 cse6 [V217,T02] ( 18,142 ) int -> x26 "CSE - aggressive" -; V218 cse7 [V218,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V217 cse6 [V217,T03] ( 19,126.16) int -> x26 "CSE - aggressive" +; V218 cse7 [V218,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V219 cse8 [V219,T07] ( 21, 58 ) int -> x26 "CSE - aggressive" ; V220 cse9 [V220,T05] ( 35, 65.50) ref -> registers multi-def "CSE - aggressive" ; V221 cse10 [V221,T13] ( 11, 29 ) byref -> [fp+0x18] multi-def "CSE - aggressive" @@ -253,7 +253,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG82
+ cbz x20, G_M36935_IG85
cbnz x21, G_M36935_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref @@ -293,7 +293,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcrRegs -[x0] ldr w26, [x20, #0x08] cmp w26, w25
- bls G_M36935_IG77
+ bls G_M36935_IG80
;; size=12 bbWeight=8 PerfScore 36.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz add x27, x20, #12 @@ -342,10 +342,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ; gcr arg pop 0 sxtw w2, w0 str w2, [fp, #0x90] // [V15 loc11]
- tbnz w2, #31, G_M36935_IG78
+ tbnz w2, #31, G_M36935_IG81
ldr w3, [fp, #0x68] // [V154 tmp133] cmp w2, w3
- bhi G_M36935_IG89
+ bhi G_M36935_IG92
ldr w0, [x19, #0x08] ldr w1, [x19, #0x18] sub w1, w1, w2 @@ -375,7 +375,7 @@ G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w1, [x19, #0x08] ldr w4, [x0, #0x08] cmp w1, w4
- bhi G_M36935_IG89
+ bhi G_M36935_IG92
ldr x0, [x0] ubfiz x5, x1, #1, #32 add x5, x0, x5 @@ -410,7 +410,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=00000000000000000000000020002000 {V70 G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480020 {x5 x19 x22 x27 x28}, byref, isz ldr w4, [fp, #0x80] // [V69 tmp48] cmp w2, w4
- bhi G_M36935_IG90
+ bhi G_M36935_IG93
mov w0, w2 lsl x2, x0, #1 mov x0, x5 @@ -431,11 +431,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 str w0, [x19, #0x08] add w25, w25, w28 cmp w25, w26
- bhs G_M36935_IG81
+ bhs G_M36935_IG84
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M36935_IG18 @@ -483,7 +483,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V22 ; byrRegs +[x27] ; GC ptr vars +{V13 V221} cmp w28, #123
- bne G_M36935_IG83
+ bne G_M36935_IG86
mov w28, wzr str wzr, [fp, #0x98] // [V08 loc4] str xzr, [fp, #0x20] // [V145 tmp124] @@ -491,7 +491,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V22 str wzr, [fp, #0x6C] // [V146 tmp125] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG81
+ bhs G_M36935_IG84
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 beq G_M36935_IG20 @@ -540,10 +540,10 @@ G_M36935_IG22: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 ldr w2, [fp, #0x9C] // [V06 loc2] sub w6, w2, #48 cmp w6, #10
- bhs G_M36935_IG84
+ bhs G_M36935_IG87
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #125 beq G_M36935_IG24 @@ -554,7 +554,7 @@ G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 G_M36935_IG24: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref ldr x4, [fp, #0x20] // [V145 tmp124] ; byrRegs +[x4]
- b G_M36935_IG41
+ b G_M36935_IG44
;; size=8 bbWeight=2 PerfScore 6.00 G_M36935_IG25: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz ; byrRegs -[x4] @@ -564,7 +564,7 @@ G_M36935_IG25: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 str w6, [fp, #0x94] // [V10 loc6] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] ldr w6, [fp, #0x94] // [V10 loc6] ;; size=36 bbWeight=8 PerfScore 88.00 @@ -583,19 +583,19 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 G_M36935_IG28: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32 beq G_M36935_IG28 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG29: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #44
- bne G_M36935_IG37
+ bne G_M36935_IG40
;; size=8 bbWeight=2 PerfScore 3.00 G_M36935_IG30: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32 beq G_M36935_IG30 @@ -607,29 +607,28 @@ G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 str w3, [fp, #0x98] // [V08 loc4] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] ;; size=32 bbWeight=2 PerfScore 16.00 G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz sub w28, w2, #48 cmp w28, #10
- bhs G_M36935_IG84
+ bhs G_M36935_IG87
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88 + tbnz w25, #31, G_M36935_IG37
b G_M36935_IG34
- ;; size=28 bbWeight=2 PerfScore 10.00 -G_M36935_IG33: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=32 bbWeight=2 PerfScore 12.00 +G_M36935_IG33: ; bbWeight=7.92, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
mov w0, #10 madd w2, w28, w0, w2 sub w28, w2, #48 add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85 - ;; size=24 bbWeight=8 PerfScore 40.00 -G_M36935_IG34: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - cmp w25, w26 - bhs G_M36935_IG81
+ bls G_M36935_IG88 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M36935_IG34: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
ldrh w2, [x27, w25, UXTW #2] sub w0, w2, #48 movz w1, #0xD1FFAB1E @@ -637,42 +636,64 @@ G_M36935_IG34: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs= cmp w0, #9 ccmp w28, w1, z, ls blt G_M36935_IG33
- ;; size=36 bbWeight=16 PerfScore 128.00 -G_M36935_IG35: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - cmp w2, #32 - bne G_M36935_IG37 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M36935_IG36: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=28 bbWeight=15.84 PerfScore 102.96 +G_M36935_IG35: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref + b G_M36935_IG38 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M36935_IG36: ; bbWeight=0.08, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + mov w0, #10 + madd w2, w28, w0, w2 + sub w28, w2, #48
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88 + ;; size=24 bbWeight=0.08 PerfScore 0.40 +G_M36935_IG37: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + cmp w25, w26 + bhs G_M36935_IG84 + ldrh w2, [x27, w25, UXTW #2] + sub w0, w2, #48 + movz w1, #0xD1FFAB1E + movk w1, #15 LSL #16 + cmp w0, #9 + ccmp w28, w1, z, ls + blt G_M36935_IG36 + ;; size=36 bbWeight=0.16 PerfScore 1.28 +G_M36935_IG38: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + cmp w2, #32 + bne G_M36935_IG40 + ;; size=8 bbWeight=2 PerfScore 3.00 +G_M36935_IG39: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + add w25, w25, #1 + cmp w26, w25 + bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32
- beq G_M36935_IG36
+ beq G_M36935_IG39
...

+72 (+2.68%) : 5961.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T32] ( 5, 15 ) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T61] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 61, 455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [fp+0x6C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [fp+0x68]
+; V05 loc1 [V05,T02] ( 66, 441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [fp+0x6C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [fp+0x68]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [fp+0x64] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [fp+0x60] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def ; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T43] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>> @@ -160,8 +160,8 @@ ; V149 cse3 [V149,T45] ( 3, 12 ) ref -> x4 "CSE - moderate" ; V150 cse4 [V150,T47] ( 3, 12 ) int -> x1 "CSE - moderate" ; V151 cse5 [V151,T03] ( 6, 416 ) int -> [fp+0x3C] spill-single-def "CSE - aggressive"
-; V152 cse6 [V152,T11] ( 18, 142 ) int -> x26 "CSE - aggressive" -; V153 cse7 [V153,T12] ( 15, 120 ) byref -> x27 "CSE - aggressive"
+; V152 cse6 [V152,T11] ( 19, 126.16) int -> x26 "CSE - aggressive" +; V153 cse7 [V153,T12] ( 16, 120 ) byref -> x27 "CSE - aggressive"
; V154 cse8 [V154,T48] ( 3, 12 ) int -> x0 "CSE - moderate" ; ; Lcl frame size = 96 @@ -185,7 +185,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG63
+ cbz x21, G_M4730_IG67
cbnz x20, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -225,7 +225,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcrRegs -[x0] ldr w26, [x21, #0x08] cmp w26, w25
- bls G_M4730_IG58
+ bls G_M4730_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz add x27, x21, #12 @@ -259,10 +259,10 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x5C] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG60
+ tbnz w1, #31, G_M4730_IG64
ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2
- bhi G_M4730_IG74
+ bhi G_M4730_IG78
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -287,11 +287,11 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w28, [fp, #0x5C] // [V15 loc11] add w25, w25, w28 cmp w25, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66
+ bls G_M4730_IG70
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M4730_IG11 @@ -333,7 +333,7 @@ G_M4730_IG10: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz ; byrRegs +[x27] cmp w28, #123
- bne G_M4730_IG64
+ bne G_M4730_IG68
str w2, [fp, #0x6C] // [V06 loc2] mov w28, wzr str wzr, [fp, #0x64] // [V08 loc4] @@ -342,7 +342,7 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg str wzr, [fp, #0x44] // [V90 tmp68] sub w0, w25, #1 cmp w0, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -361,188 +361,212 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0x6C] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M4730_IG65
+ ldr w1, [fp, #0x6C] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M4730_IG13 ;; size=144 bbWeight=4 PerfScore 146.00 G_M4730_IG12: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref b G_M4730_IG15 ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG13: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- str w1, [fp, #0x60] // [V10 loc6] - b G_M4730_IG30
+ str w2, [fp, #0x60] // [V10 loc6] + b G_M4730_IG34
;; size=8 bbWeight=2 PerfScore 4.00 G_M4730_IG14: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0x60] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0x60] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0x60] // [V10 loc6]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0x60] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M4730_IG15: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M4730_IG14 ;; size=24 bbWeight=16 PerfScore 56.00 G_M4730_IG16: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M4730_IG18 ;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG17: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG17 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M4730_IG26
+ cmp w1, #44 + mov w3, w1 + bne G_M4730_IG22
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG19: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M4730_IG21
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0x64] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M4730_IG21: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M4730_IG65
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - b G_M4730_IG23 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M4730_IG22: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0x68] // [V07 loc3]
+ bls G_M4730_IG70 + tbnz w25, #31, G_M4730_IG27 + b G_M4730_IG24 + ;; size=32 bbWeight=2 PerfScore 12.00 +G_M4730_IG22: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref + mov w1, w28 + b G_M4730_IG30 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M4730_IG23: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz + mov w0, #10 + madd w1, w1, w0, w3 + sub w1, w1, #48
add w25, w25, #1 cmp w26, w25
- ldr w2, [fp, #0x68] // [V07 loc3] - bls G_M4730_IG66 - ;; size=32 bbWeight=8 PerfScore 64.00 -G_M4730_IG23: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - cmp w25, w26 - bhs G_M4730_IG62
+ bls G_M4730_IG70 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
ldrh w0, [x27, w25, UXTW #2]
- sub w3, w0, #48
...

coreclr_tests.run.osx.arm64.checked.mch

+64 (+1.60%) : 465245.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T14] ( 5, 8.50) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T57] ( 3, 2.95) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 61, 60.35) int -> x25 ld-addr-op -; V06 loc2 [V06,T03] ( 30, 26.19) ushort -> [fp+0xFC] -; V07 loc3 [V07,T43] ( 13, 4.81) int -> [fp+0xF8]
+; V05 loc1 [V05,T01] ( 66, 60.35) int -> x25 ld-addr-op +; V06 loc2 [V06,T03] ( 33, 26.19) ushort -> [fp+0xFC] +; V07 loc3 [V07,T43] ( 16, 4.81) int -> [fp+0xF8]
; V08 loc4 [V08,T40] ( 5, 4.97) ubyte -> [fp+0xF4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T20] ( 7, 7.82) int -> [fp+0xF0] @@ -310,8 +310,8 @@ ; V298 cse5 [V298,T72] ( 3, 1.77) int -> x2 "CSE - conservative" ; V299 cse6 [V299,T82] ( 3, 1.09) long -> x0 "CSE - conservative" ; V300 cse7 [V300,T00] ( 38,185.11) ref -> registers multi-def "CSE - aggressive"
-; V301 cse8 [V301,T05] ( 18, 22.93) int -> x27 "CSE - aggressive" -; V302 cse9 [V302,T06] ( 15, 19.56) byref -> x28 "CSE - aggressive"
+; V301 cse8 [V301,T05] ( 19, 22.93) int -> x27 "CSE - aggressive" +; V302 cse9 [V302,T06] ( 16, 19.56) byref -> x28 "CSE - aggressive"
; V303 cse10 [V303,T17] ( 14, 9.85) int -> registers "CSE - moderate" ; V304 cse11 [V304,T33] ( 3, 5.86) int -> x0 "CSE - moderate" ; V305 rat0 [V305,T09] ( 6, 15.64) ref -> x2 class-hnd "replacement local" <System.ISpanFormattable> @@ -628,7 +628,7 @@ G_M36935_IG20: ; bbWeight=1.95, gcrefRegs=5300000 {x20 x21 x24 x26}, byre ; gcrRegs +[x3] str x3, [fp, #0x80] // [V13 loc9] ; GC ptr vars +{V13}
- cbnz x24, G_M36935_IG111
+ cbnz x24, G_M36935_IG113
;; size=36 bbWeight=1.95 PerfScore 19.55 G_M36935_IG21: ; bbWeight=1.95, gcVars=00000000000000000400000000080000 {V13 V202}, gcrefRegs=1D300008 {x3 x20 x21 x24 x26 x27 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz cbnz x27, G_M36935_IG80 @@ -750,7 +750,7 @@ G_M36935_IG31: ; bbWeight=0.43, gcVars=00000000000000000400000000080000 { add x0, x0, w5, UXTW asr x0, x0, #32 cmp w0, w2
- bgt G_M36935_IG113
+ bgt G_M36935_IG115
str w0, [fp, #0xE0] // [V19 loc15] str x1, [fp, #0xB8] // [V134 tmp113] mov x2, x1 @@ -1101,7 +1101,7 @@ G_M36935_IG65: ; bbWeight=1.06, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, ldr w0, [fp, #0xE0] // [V19 loc15] add w1, w1, w0 str w1, [x19, #0x08]
- cbnz w27, G_M36935_IG114
+ cbnz w27, G_M36935_IG116
b G_M36935_IG05 ;; size=32 bbWeight=1.06 PerfScore 12.17 G_M36935_IG66: ; bbWeight=0.00, gcVars=00000000000800000400000000080000 {V13 V202 V208}, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz @@ -1238,7 +1238,7 @@ G_M36935_IG75: ; bbWeight=0.45, gcrefRegs=1530000C {x2 x3 x20 x21 x24 x26 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x2, x1
- bne G_M36935_IG115
+ bne G_M36935_IG117
mov x2, xzr ; gcrRegs +[x2] ;; size=28 bbWeight=0.45 PerfScore 2.91 @@ -1247,14 +1247,14 @@ G_M36935_IG76: ; bbWeight=0.90, gcrefRegs=1530000C {x2 x3 x20 x21 x24 x26 ; gcrRegs +[x5] str x5, [fp, #0x70] // [V20 loc16] ; GC ptr vars +{V20}
- cbnz x5, G_M36935_IG116 - cbz x3, G_M36935_IG118
+ cbnz x5, G_M36935_IG118 + cbz x3, G_M36935_IG120
ldr x1, [x3] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- bne G_M36935_IG119
+ bne G_M36935_IG121
;; size=40 bbWeight=0.90 PerfScore 8.51 G_M36935_IG77: ; bbWeight=0.90, gcVars=00000000000000000000000000000000 {}, gcrefRegs=5300008 {x3 x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, gcvars, byref ; gcrRegs -[x2 x5 x28] @@ -1265,7 +1265,7 @@ G_M36935_IG77: ; bbWeight=0.90, gcVars=00000000000000000000000000000000 { G_M36935_IG78: ; bbWeight=0.90, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref, isz ; gcrRegs -[x3] str w27, [fp, #0xF4] // [V08 loc4]
- cbz x28, G_M36935_IG120
+ cbz x28, G_M36935_IG122
;; size=8 bbWeight=0.90 PerfScore 1.79 G_M36935_IG79: ; bbWeight=0.45, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref mov x27, x28 @@ -1276,7 +1276,7 @@ G_M36935_IG80: ; bbWeight=0.90, gcrefRegs=D300000 {x20 x21 x24 x26 x27}, ldr w28, [x27, #0x08] ldr w4, [fp, #0xF8] // [V07 loc3] cmp w28, w4
- blt G_M36935_IG121
+ blt G_M36935_IG123
;; size=16 bbWeight=0.90 PerfScore 5.82 G_M36935_IG81: ; bbWeight=0.90, gcrefRegs=D300000 {x20 x21 x24 x26 x27}, byrefRegs=480000 {x19 x22}, byref, isz ldr w2, [x19, #0x08] @@ -1614,9 +1614,10 @@ G_M36935_IG106: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefR bhs G_M36935_IG89 add w25, w25, #1 cmp w27, w25
- bhi G_M36935_IG108 - b G_M36935_IG90 - ;; size=32 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG90 + tbnz w25, #31, G_M36935_IG110 + b G_M36935_IG108 + ;; size=36 bbWeight=0 PerfScore 0.00
G_M36935_IG107: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz mov w2, #10 madd w5, w5, w2, w6 @@ -1626,38 +1627,57 @@ G_M36935_IG107: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefR bls G_M36935_IG90 ;; size=24 bbWeight=0 PerfScore 0.00 G_M36935_IG108: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
- cmp w25, w27 - bhs G_M36935_IG96
ldrh w2, [x28, w25, UXTW #2] sxtw w6, w2 sub w2, w6, #48 cmp w2, #9
- bhi G_M36935_IG110
+ bhi G_M36935_IG112
movz w2, #0xD1FFAB1E movk w2, #15 LSL #16 cmp w5, w2 blt G_M36935_IG107
- b G_M36935_IG110 - ;; size=48 bbWeight=0 PerfScore 0.00
+ b G_M36935_IG112 + ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG109: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
+ mov w2, #10 + madd w5, w5, w2, w6 + sub w5, w5, #48 + add w25, w25, #1 + cmp w27, w25 + bls G_M36935_IG90 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG110: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz + cmp w25, w27 + bhs G_M36935_IG96 + ldrh w6, [x28, w25, UXTW #2] + sub w2, w6, #48 + cmp w2, #9 + bhi G_M36935_IG112 + movz w2, #0xD1FFAB1E + movk w2, #15 LSL #16 + cmp w5, w2 + blt G_M36935_IG109 + b G_M36935_IG112 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M36935_IG111: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
add w25, w25, #1 cmp w27, w25 bls G_M36935_IG90 ldrh w6, [x28, w25, UXTW #2] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
+G_M36935_IG112: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
cmp w6, #32
- beq G_M36935_IG109
+ beq G_M36935_IG111
str w5, [fp, #0xF8] // [V07 loc3] mov w2, w6 b G_M36935_IG44 ;; size=20 bbWeight=0 PerfScore 0.00
-G_M36935_IG111: ; bbWeight=0, gcVars=00000000000000000400000000080000 {V13 V202}, gcrefRegs=15300008 {x3 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+G_M36935_IG113: ; bbWeight=0, gcVars=00000000000000000400000000080000 {V13 V202}, gcrefRegs=15300008 {x3 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
; gcrRegs +[x3 x28] ; byrRegs -[x28] ; GC ptr vars -{V58} +{V13} ldr w27, [fp, #0x90] // [V203 tmp182]
- cbz w27, G_M36935_IG112
+ cbz w27, G_M36935_IG114
ldr x0, [fp, #0x30] // [V202 tmp181] ; byrRegs +[x0] mov w1, w27 @@ -1668,7 +1688,7 @@ G_M36935_IG111: ; bbWeight=0, gcVars=00000000000000000400000000080000 {V1 mov x28, x0 ; gcrRegs +[x28] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG112: ; bbWeight=0, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
+G_M36935_IG114: ; bbWeight=0, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x0] mov x0, x24 ; gcrRegs +[x0] @@ -1692,13 +1712,13 @@ G_M36935_IG112: ; bbWeight=0, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, b ; gcrRegs +[x3] b G_M36935_IG21 ;; size=52 bbWeight=0 PerfScore 0.00
-G_M36935_IG113: ; bbWeight=0, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
+G_M36935_IG115: ; bbWeight=0, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x0 x3 x27] str wzr, [fp, #0xE0] // [V19 loc15] mov w0, wzr b G_M36935_IG58 ;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG114: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+G_M36935_IG116: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
; gcrRegs -[x28] ; GC ptr vars -{V13 V202} ldr w2, [fp, #0xE0] // [V19 loc15] @@ -1719,7 +1739,7 @@ G_M36935_IG114: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, ; gcr arg pop 0 b G_M36935_IG05 ;; size=56 bbWeight=0 PerfScore 0.00
-G_M36935_IG115: ; bbWeight=0, gcVars=00000000000000000400000000080000 {V13 V202}, gcrefRegs=15300008 {x3 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref
+G_M36935_IG117: ; bbWeight=0, gcVars=00000000000000000400000000080000 {V13 V202}, gcrefRegs=15300008 {x3 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref
; gcrRegs +[x3 x28] ; GC ptr vars +{V13 V58 V202} mov x1, x3 @@ -1736,14 +1756,14 @@ G_M36935_IG115: ; bbWeight=0, gcVars=00000000000000000400000000080000 {V1 ; gcrRegs +[x3] b G_M36935_IG76 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M36935_IG116: ; bbWeight=0, gcVars=00000000000000200400000000000000 {V20 V202}, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+G_M36935_IG118: ; bbWeight=0, gcVars=00000000000000200400000000000000 {V20 V202}, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
; gcrRegs -[x0 x2-x3] ; GC ptr vars -{V13 V58} +{V20} ldr x5, [fp, #0x70] // [V20 loc16] ; gcrRegs +[x5] ldr w2, [fp, #0x90] // [V203 tmp182]
- cbz w2, G_M36935_IG117 - cbnz x28, G_M36935_IG117
+ cbz w2, G_M36935_IG119 + cbnz x28, G_M36935_IG119
ldr x0, [fp, #0x30] // [V202 tmp181] ; byrRegs +[x0] mov w1, w2 @@ -1757,7 +1777,7 @@ G_M36935_IG116: ; bbWeight=0, gcVars=00000000000000200400000000000000 {V2 ldr x5, [fp, #0x70] // [V20 loc16] ; gcrRegs +[x5] ;; size=36 bbWeight=0 PerfScore 0.00
-G_M36935_IG117: ; bbWeight=0, gcrefRegs=15300020 {x5 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
+G_M36935_IG119: ; bbWeight=0, gcrefRegs=15300020 {x5 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x0] mov x0, x5 ; gcrRegs +[x0] @@ -1777,13 +1797,13 @@ G_M36935_IG117: ; bbWeight=0, gcrefRegs=15300020 {x5 x20 x21 x24 x26 x28} ; gcrRegs +[x28] b G_M36935_IG78 ;; size=40 bbWeight=0 PerfScore 0.00
-G_M36935_IG118: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref
+G_M36935_IG120: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x0 x28] mov x3, xzr ; gcrRegs +[x3] b G_M36935_IG77 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG119: ; bbWeight=0, gcVars=00000000000000000000000000080000 {V13}, gcrefRegs=5300008 {x3 x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, gcvars, byref
...

+64 (+1.72%) : 498721.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T31] ( 6, 13 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T69] ( 3, 5 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T03] ( 62, 98 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T09] ( 31, 37 ) ushort -> [fp+0xEC] -; V07 loc3 [V07,T50] ( 12, 8 ) int -> [fp+0xE8]
+; V05 loc1 [V05,T03] ( 67, 98 ) int -> x25 ld-addr-op +; V06 loc2 [V06,T09] ( 34, 37 ) ushort -> [fp+0xEC] +; V07 loc3 [V07,T50] ( 15, 8 ) int -> [fp+0xE8]
; V08 loc4 [V08,T33] ( 5, 12 ) ubyte -> [fp+0xE4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T26] ( 7, 16 ) int -> [fp+0xE0] @@ -283,8 +283,8 @@ ; V271 cse2 [V271,T36] ( 3, 12 ) int -> x5 "CSE - moderate" ; V272 cse3 [V272,T76] ( 3, 3 ) int -> x2 "CSE - conservative" ; V273 cse4 [V273,T00] ( 35,530.54) ref -> registers multi-def "CSE - aggressive"
-; V274 cse5 [V274,T08] ( 20, 39 ) int -> x27 "CSE - aggressive" -; V275 cse6 [V275,T11] ( 15, 34 ) byref -> x28 "CSE - aggressive"
+; V274 cse5 [V274,T08] ( 21, 39 ) int -> x27 "CSE - aggressive" +; V275 cse6 [V275,T11] ( 16, 34 ) byref -> x28 "CSE - aggressive"
; V276 cse7 [V276,T37] ( 3, 12 ) int -> x0 "CSE - moderate" ; V277 rat0 [V277,T17] ( 5, 29 ) ref -> x2 class-hnd "replacement local" <System.ISpanFormattable> ; @@ -575,7 +575,7 @@ G_M36935_IG18: ; bbWeight=4, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRe ; gcrRegs +[x3] str x3, [fp, #0x78] // [V13 loc9] ; GC ptr vars +{V13}
- cbnz x24, G_M36935_IG103
+ cbnz x24, G_M36935_IG105
;; size=36 bbWeight=4 PerfScore 40.00 G_M36935_IG19: ; bbWeight=4, gcVars=00000000000000000401000000000000 {V13 V184}, gcrefRegs=1D900008 {x3 x20 x23 x24 x26 x27 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz cbnz x27, G_M36935_IG70 @@ -1668,10 +1668,30 @@ G_M36935_IG98: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRe bhs G_M36935_IG81 add w25, w25, #1 cmp w27, w25
- bhi G_M36935_IG100 - b G_M36935_IG82 - ;; size=28 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG82 + tbnz w25, #31, G_M36935_IG102 + b G_M36935_IG100 + ;; size=32 bbWeight=0 PerfScore 0.00
G_M36935_IG99: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+ mov w0, #10 + madd w4, w4, w0, w2 + sub w4, w4, #48 + add w25, w25, #1 + cmp w27, w25 + bls G_M36935_IG82 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG100: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz + ldrh w2, [x28, w25, UXTW #2] + sub w0, w2, #48 + cmp w0, #9 + bhi G_M36935_IG104 + movz w0, #0xD1FFAB1E + movk w0, #15 LSL #16 + cmp w4, w0 + blt G_M36935_IG99 + b G_M36935_IG104 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M36935_IG101: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
mov w0, #10 madd w4, w4, w0, w2 sub w4, w4, #48 @@ -1681,37 +1701,37 @@ G_M36935_IG99: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRe ldr w4, [fp, #0xE8] // [V07 loc3] bls G_M36935_IG82 ;; size=32 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+G_M36935_IG102: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
cmp w25, w27 bhs G_M36935_IG87 ldrh w2, [x28, w25, UXTW #2] sub w0, w2, #48 cmp w0, #9
- bhi G_M36935_IG102
+ bhi G_M36935_IG104
movz w0, #0xD1FFAB1E movk w0, #15 LSL #16 cmp w4, w0
- blt G_M36935_IG99 - b G_M36935_IG102
+ blt G_M36935_IG101 + b G_M36935_IG104
;; size=44 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+G_M36935_IG103: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
add w25, w25, #1 cmp w27, w25 bls G_M36935_IG82 ldrh w2, [x28, w25, UXTW #2] ;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG102: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+G_M36935_IG104: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
cmp w2, #32
- beq G_M36935_IG101
+ beq G_M36935_IG103
str w4, [fp, #0xE8] // [V07 loc3] b G_M36935_IG48 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG103: ; bbWeight=0, gcVars=00000000000000000401000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG105: ; bbWeight=0, gcVars=00000000000000000401000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
; gcrRegs +[x3 x28] ; byrRegs -[x28] ; GC ptr vars +{V13} ldr w27, [fp, #0x88] // [V185 tmp164]
- cbz w27, G_M36935_IG104
+ cbz w27, G_M36935_IG106
ldr x0, [fp, #0x30] // [V184 tmp163] ; byrRegs +[x0] mov w1, w27 @@ -1722,7 +1742,7 @@ G_M36935_IG103: ; bbWeight=0, gcVars=00000000000000000401000000000000 {V1 mov x28, x0 ; gcrRegs +[x28] ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG104: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
+G_M36935_IG106: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
; gcrRegs -[x0] mov x0, x24 ; gcrRegs +[x0] @@ -1748,7 +1768,7 @@ G_M36935_IG104: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, b b G_M36935_IG19 ;; size=56 bbWeight=0 PerfScore 0.00
-Total bytes of code 3712, prolog size 52, PerfScore 2832.69, instruction count 928, allocated bytes for code 3712 (MethodHash=aa2b6fb8) for method System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
+Total bytes of code 3776, prolog size 52, PerfScore 2832.69, instruction count 944, allocated bytes for code 3776 (MethodHash=aa2b6fb8) for method System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
; ============================================================ Unwind Info: @@ -1759,7 +1779,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 928 (0x003a0) Actual length = 3712 (0x000e80)
+ Function Length : 944 (0x003b0) Actual length = 3776 (0x000ec0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+64 (+1.79%) : 467018.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T17] ( 5, 7.50) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T64] ( 3, 2.50) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 62, 48.50) int -> x25 ld-addr-op -; V06 loc2 [V06,T04] ( 31, 22 ) ushort -> registers -; V07 loc3 [V07,T54] ( 13, 3.50) int -> [fp+0x84]
+; V05 loc1 [V05,T01] ( 67, 48.50) int -> x25 ld-addr-op +; V06 loc2 [V06,T04] ( 34, 22 ) ushort -> registers +; V07 loc3 [V07,T54] ( 16, 3.50) int -> [fp+0x84]
; V08 loc4 [V08,T45] ( 5, 4 ) ubyte -> [fp+0x80] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T28] ( 7, 6 ) int -> x28 @@ -210,8 +210,8 @@ ; V198 cse3 [V198,T83] ( 3, 1.50) int -> x1 "CSE - conservative" ; V199 cse4 [V199,T82] ( 5, 1.50) int -> x28 multi-def "CSE - conservative" ; V200 cse5 [V200,T00] ( 29,127.49) ref -> registers multi-def "CSE - aggressive"
-; V201 cse6 [V201,T07] ( 18, 18.50) int -> x26 "CSE - aggressive" -; V202 cse7 [V202,T08] ( 15, 15.50) byref -> x27 "CSE - aggressive"
+; V201 cse6 [V201,T07] ( 19, 18.50) int -> x26 "CSE - aggressive" +; V202 cse7 [V202,T08] ( 16, 15.50) byref -> x27 "CSE - aggressive"
; V203 cse8 [V203,T11] ( 4, 11.94) long -> [fp+0x48] spill-single-def "CSE - moderate" ; V204 rat0 [V204,T62] ( 3, 2.99) byref -> x0 "TLS field access" ; V205 rat1 [V205,T42] ( 3, 4.48) long -> x0 "TLS access" @@ -318,7 +318,7 @@ G_M36935_IG07: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 G_M36935_IG08: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz ldr w3, [fp, #0x58] // [V147 tmp126] cmp w2, w3
- bhi G_M36935_IG107
+ bhi G_M36935_IG109
ldr w0, [x19, #0x08] ldr w1, [x19, #0x18] sub w1, w1, w2 @@ -343,7 +343,7 @@ G_M36935_IG10: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w1, [x19, #0x08] ldr w2, [x0, #0x08] cmp w1, w2
- bhi G_M36935_IG107
+ bhi G_M36935_IG109
ldr x0, [x0] ubfiz x3, x1, #1, #32 add x3, x0, x3 @@ -376,7 +376,7 @@ G_M36935_IG12: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w3, [fp, #0x7C] // [V15 loc11] ldr w2, [fp, #0x68] // [V73 tmp52] cmp w3, w2
- bhi G_M36935_IG108
+ bhi G_M36935_IG110
mov w2, w3 lsl x2, x2, #1 ldr x0, [fp, #0x30] // [V74 tmp53] @@ -401,12 +401,12 @@ G_M36935_IG12: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldrh w0, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG102
+ bls G_M36935_IG104
ldrh w28, [x27, w25, UXTW #2] cmp w0, w28 beq G_M36935_IG70 cmp w0, #123
- bne G_M36935_IG100
+ bne G_M36935_IG102
str xzr, [fp, #0x80] str xzr, [fp, #0x18] // [V138 tmp117] ; GC ptr vars +{V138} @@ -462,10 +462,10 @@ G_M36935_IG15: ; bbWeight=6, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 G_M36935_IG16: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz sub w28, w28, #48 cmp w28, #10
- bhs G_M36935_IG101
+ bhs G_M36935_IG103
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG102
+ bls G_M36935_IG104
ldrh w0, [x27, w25, UXTW #2] sxtw w2, w0 cmp w2, #125 @@ -488,21 +488,21 @@ G_M36935_IG20: ; bbWeight=1, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 cmp w2, #125 beq G_M36935_IG27 cmp w2, #58
- bne G_M36935_IG103
+ bne G_M36935_IG105
sxtw w3, w25 ;; size=20 bbWeight=1 PerfScore 3.50 G_M36935_IG21: ; bbWeight=3, gcVars=00000000000000000000000000000000 {}, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, gcvars, byref, isz ; GC ptr vars -{V138} add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG102
+ bls G_M36935_IG104
ldrh w2, [x27, w25, UXTW #2] cmp w2, #125 beq G_M36935_IG24 ;; size=24 bbWeight=3 PerfScore 19.50 G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #123
- beq G_M36935_IG103
+ beq G_M36935_IG105
b G_M36935_IG21 ;; size=12 bbWeight=2 PerfScore 5.00 G_M36935_IG23: ; bbWeight=0.75, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref @@ -519,7 +519,7 @@ G_M36935_IG24: ; bbWeight=1, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 add x0, x0, w5, UXTW mov w1, w26 cmp x0, x1
- bhi G_M36935_IG104
+ bhi G_M36935_IG106
ubfiz x0, x3, #1, #32 add x2, x27, x0 ; byrRegs +[x2] @@ -585,10 +585,10 @@ G_M36935_IG29: ; bbWeight=1.50, gcrefRegs=1300000 {x20 x21 x24}, byrefReg mov x27, xzr ; gcrRegs +[x27] cmp w28, w23
- bhs G_M36935_IG105
+ bhs G_M36935_IG107
ldr x28, [x22, w28, UXTW #3] ; gcrRegs +[x28]
- cbnz x24, G_M36935_IG82
+ cbnz x24, G_M36935_IG84
;; size=28 bbWeight=1.50 PerfScore 10.50 G_M36935_IG30: ; bbWeight=1.50, gcrefRegs=1D300000 {x20 x21 x24 x26 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz cbnz x26, G_M36935_IG53 @@ -615,7 +615,7 @@ G_M36935_IG33: ; bbWeight=1, gcVars=00000000000000000100002000000000 {V18 ldr w1, [x19, #0x08] ldr w4, [x0, #0x08] cmp w1, w4
- bhi G_M36935_IG107
+ bhi G_M36935_IG109
ldr x0, [x0] ubfiz x5, x1, #1, #32 add x5, x0, x5 @@ -655,7 +655,7 @@ G_M36935_IG35: ; bbWeight=1, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, by movk x4, #0xD1FFAB1E LSL #16 movk x4, #1 LSL #32 cmp x0, x4
- bne G_M36935_IG85
+ bne G_M36935_IG87
add x0, x3, #8 ; byrRegs +[x0] ldr d8, [x0] @@ -676,10 +676,10 @@ G_M36935_IG36: ; bbWeight=0.75, gcVars=00000000000000100100000000000000 { ; gcr arg pop 0 ldr w1, [x0, #0x10] cmp w1, #2
- blt G_M36935_IG84
+ blt G_M36935_IG86
ldr x0, [x0, #0x18] ldr x0, [x0, #0x10]
- cbz x0, G_M36935_IG84
+ cbz x0, G_M36935_IG86
ldr x0, [x0] ; byrRegs +[x0] add x0, x0, #16 @@ -757,7 +757,7 @@ G_M36935_IG41: ; bbWeight=1, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, by ldr w0, [fp, #0x70] // [V19 loc15] add w1, w1, w0 str w1, [x19, #0x08]
- cbnz w26, G_M36935_IG86
+ cbnz w26, G_M36935_IG88
b G_M36935_IG04 ;; size=28 bbWeight=1 PerfScore 9.50 G_M36935_IG42: ; bbWeight=0.25, gcVars=00000000000000100100000000000000 {V138 V184}, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref @@ -832,7 +832,7 @@ G_M36935_IG47: ; bbWeight=1.49, gcVars=00000000000000100100000000000000 { movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 cmp x0, x3
- bne G_M36935_IG106
+ bne G_M36935_IG108
;; size=24 bbWeight=1.49 PerfScore 8.96 G_M36935_IG48: ; bbWeight=2.99, gcrefRegs=19300004 {x2 x20 x21 x24 x27 x28}, byrefRegs=480000 {x19 x22}, byref ; gcrRegs -[x1] @@ -850,20 +850,20 @@ G_M36935_IG50: ; bbWeight=0.50, gcrefRegs=19300008 {x3 x20 x21 x24 x27 x2 ; gcrRegs +[x4] str x4, [fp, #0x38] // [V20 loc16] ; GC ptr vars +{V20}
- cbnz x4, G_M36935_IG88 - cbz x28, G_M36935_IG90
+ cbnz x4, G_M36935_IG90 + cbz x28, G_M36935_IG92
ldr x1, [x28] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- bne G_M36935_IG91
+ bne G_M36935_IG93
;; size=40 bbWeight=0.50 PerfScore 4.75 G_M36935_IG51: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=11300000 {x20 x21 x24 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz ; gcrRegs -[x3-x4 x27] ; GC ptr vars -{V20 V138} str w26, [fp, #0x80] // [V08 loc4]
- cbz x28, G_M36935_IG92
+ cbz x28, G_M36935_IG94
;; size=8 bbWeight=0.50 PerfScore 1.00 G_M36935_IG52: ; bbWeight=0.25, gcrefRegs=11300000 {x20 x21 x24 x28}, byrefRegs=480000 {x19 x22}, byref mov x26, x28 @@ -874,7 +874,7 @@ G_M36935_IG53: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byre ldr w1, [x26, #0x08] ldr w2, [fp, #0x84] // [V07 loc3] cmp w1, w2
- blt G_M36935_IG93
+ blt G_M36935_IG95
;; size=16 bbWeight=0.50 PerfScore 3.25 G_M36935_IG54: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref, isz ldr w28, [x19, #0x08] @@ -895,7 +895,7 @@ G_M36935_IG56: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byre ; byrRegs +[x0] ldr w1, [x0, #0x08] cmp w28, w1
- bhi G_M36935_IG107
+ bhi G_M36935_IG109
ldr x0, [x0] ubfiz x2, x28, #1, #32 add x27, x0, x2 @@ -921,7 +921,7 @@ G_M36935_IG57: ; bbWeight=2.00, gcrefRegs=5300000 {x20 x21 x24 x26}, byre G_M36935_IG58: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=8480000 {x19 x22 x27}, byref, isz ldr w2, [x26, #0x08] cmp w2, w28
- bhi G_M36935_IG108
+ bhi G_M36935_IG110
;; size=12 bbWeight=0.50 PerfScore 2.25 G_M36935_IG59: ; bbWeight=0.50, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=8480000 {x19 x22 x27}, byref add x1, x26, #12 @@ -980,7 +980,7 @@ G_M36935_IG62: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=10080000 {x1 ldr w1, [x19, #0x08] ldr w2, [x0, #0x08] cmp w1, w2
- bhi G_M36935_IG107
+ bhi G_M36935_IG109
ldr x0, [x0] ubfiz x3, x1, #1, #32 add x21, x0, x3 @@ -1003,7 +1003,7 @@ G_M36935_IG62: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=10080000 {x1 ;; size=76 bbWeight=0.50 PerfScore 10.75 G_M36935_IG63: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=10280000 {x19 x21 x28}, byref, isz cmp w20, w22
- bhi G_M36935_IG108
+ bhi G_M36935_IG110
mov w2, w20 lsl x2, x2, #1 mov x0, x21 @@ -1032,7 +1032,7 @@ G_M36935_IG64: ; bbWeight=0.25, gcVars=00000000000000000100000000000000 { movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x3, x1
- bne G_M36935_IG87
...

+112 (+3.06%) : 574673.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T26] ( 5, 11.50) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T33] ( 4, 9 ) ref -> x26 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T06] ( 63, 70.50) int -> x27 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 63.50) ushort -> [fp+0xBC] -; V07 loc3 [V07,T02] ( 12,160.52) int -> [fp+0xB8]
+; V05 loc1 [V05,T06] ( 68, 72.00) int -> x27 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 63.50) ushort -> [fp+0xBC] +; V07 loc3 [V07,T02] ( 15,160.52) int -> [fp+0xB8]
; V08 loc4 [V08,T13] ( 5, 44.50) ubyte -> [fp+0xB4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T15] ( 7, 33 ) int -> [fp+0xB0] @@ -188,10 +188,10 @@ ; V177 cse8 [V177,T78] ( 3, 0.01) long -> x0 "CSE - conservative" ; V178 cse9 [V178,T79] ( 3, 0.01) long -> x0 "CSE - conservative" ; V179 cse10 [V179,T80] ( 3, 0.01) long -> x0 "CSE - conservative"
-; V180 cse11 [V180,T04] ( 39, 82 ) long -> x25 multi-def "CSE - aggressive"
+; V180 cse11 [V180,T04] ( 40, 82 ) long -> x25 multi-def "CSE - aggressive"
; V181 cse12 [V181,T00] ( 19,227.07) long -> [fp+0x80] multi-def "CSE - aggressive"
-; V182 cse13 [V182,T14] ( 18, 37 ) int -> x28 "CSE - aggressive" -; V183 cse14 [V183,T21] ( 15, 16 ) byref -> [fp+0x18] spill-single-def "CSE - moderate"
+; V182 cse13 [V182,T14] ( 19, 36.51) int -> x28 "CSE - aggressive" +; V183 cse14 [V183,T21] ( 16, 16 ) byref -> [fp+0x18] spill-single-def "CSE - moderate"
; V184 cse15 [V184,T11] ( 17, 46 ) ref -> registers multi-def "CSE - aggressive" ; V185 cse16 [V185,T28] ( 3, 12 ) int -> x0 "CSE - moderate" ; V186 cse17 [V186,T74] ( 6, 0.01) long -> x3 multi-def "CSE - conservative" @@ -218,7 +218,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG105
+ cbz x21, G_M4730_IG111
cbnz x19, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -281,7 +281,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; gcrRegs -[x0] ldr w28, [x21, #0x08] cmp w28, w27
- bls G_M4730_IG100
+ bls G_M4730_IG106
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x2, x21, #12 @@ -339,10 +339,10 @@ G_M4730_IG09: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ; gcr arg pop 0 sxtw w3, w0 str w3, [fp, #0xAC] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG102
+ tbnz w3, #31, G_M4730_IG108
ldr w4, [fp, #0x8C] // [V118 tmp96] cmp w3, w4
- bhi G_M4730_IG115
+ bhi G_M4730_IG121
mov x0, x20 ; gcrRegs +[x0] ldr x1, [fp, #0x30] // [V117 tmp95] @@ -360,13 +360,13 @@ G_M4730_IG09: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ldr w0, [fp, #0xAC] // [V15 loc11] add w27, w27, w0 cmp w27, w28
- bhs G_M4730_IG104
+ bhs G_M4730_IG110
ldr x1, [fp, #0x18] // [V183 cse14] ; byrRegs +[x1] ldrh w2, [x1, w27, UXTW #2] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldrh w3, [x1, w27, UXTW #2] str w3, [fp, #0xBC] // [V06 loc2] cmp w2, w3 @@ -416,14 +416,14 @@ G_M4730_IG13: ; bbWeight=4, gcVars=00000000000000000000000000200000 {V183 ; byrRegs +[x1] ; GC ptr vars +{V183} cmp w2, #123
- bne G_M4730_IG106
+ bne G_M4730_IG112
str xzr, [fp, #0xB4] str xzr, [fp, #0x38] // [V107 tmp85] ; GC ptr vars +{V107} str wzr, [fp, #0x90] // [V108 tmp86] sub w0, w27, #1 cmp w0, w28
- bhs G_M4730_IG104
+ bhs G_M4730_IG110
ldrh w0, [x1, w0, UXTW #2] cmp w0, #123 beq G_M4730_IG15 @@ -471,12 +471,12 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ldr w3, [fp, #0xBC] // [V06 loc2] sub w7, w3, #48 cmp w7, #10
- bhs G_M4730_IG107
+ bhs G_M4730_IG113
;; size=16 bbWeight=4 PerfScore 16.00 G_M4730_IG18: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldr x1, [fp, #0x18] // [V183 cse14] ; byrRegs +[x1] ldrh w3, [x1, w27, UXTW #2] @@ -489,7 +489,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG20: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref str w7, [fp, #0xB0] // [V10 loc6]
- b G_M4730_IG53
+ b G_M4730_IG59
;; size=8 bbWeight=0.25 PerfScore 0.50 G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x0, x25, #0xD1FFAB1E @@ -503,7 +503,7 @@ G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w2, [fp, #0xB0] // [V10 loc6] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldr x3, [fp, #0x18] // [V183 cse14] ; byrRegs +[x3] ldrh w1, [x3, w27, UXTW #2] @@ -543,7 +543,7 @@ G_M4730_IG26: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; gcr arg pop 0 add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
;; size=20 bbWeight=2 PerfScore 7.00 G_M4730_IG27: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr x1, [fp, #0x18] // [V183 cse14] @@ -560,12 +560,12 @@ G_M4730_IG28: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ;; size=4 bbWeight=0.25 PerfScore 0.50 G_M4730_IG29: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz cmp w3, #44
- bne G_M4730_IG44
+ bne G_M4730_IG51
;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG30: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG31: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr x1, [fp, #0x18] // [V183 cse14] @@ -596,7 +596,7 @@ G_M4730_IG34: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w4, [fp, #0xB4] // [V08 loc4] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldr x2, [fp, #0x18] // [V183 cse14] ; byrRegs +[x2] ldrh w3, [x2, w27, UXTW #2] @@ -606,108 +606,58 @@ G_M4730_IG35: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; byrRegs -[x2] sub w2, w3, #48 cmp w2, #10
- bhs G_M4730_IG108
+ bhs G_M4730_IG114
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG36: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M4730_IG37: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - cmp w27, w28 - bhs G_M4730_IG104
+G_M4730_IG37: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz + tbnz w27, #31, G_M4730_IG44 + b G_M4730_IG39 + ;; size=8 bbWeight=2 PerfScore 4.00 +G_M4730_IG38: ; bbWeight=0.49, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz + str w7, [fp, #0xB0] // [V10 loc6] + add x0, x25, #0xD1FFAB1E + bl CORINFO_HELP_COUNTPROFILE32 + ; gcr arg pop 0 + mov w0, #10 + ldp w2, w1, [fp, #0xB8] // [V07 loc3], [V06 loc2] + madd w2, w2, w0, w1 + sub w2, w2, #48 + add w27, w27, #1 + cmp w28, w27 + ldr w7, [fp, #0xB0] // [V10 loc6] + bls G_M4730_IG116 + ;; size=44 bbWeight=0.49 PerfScore 5.69 +G_M4730_IG39: ; bbWeight=0.49, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [fp, #0x18] // [V183 cse14] ; byrRegs +[x1] ldrh w3, [x1, w27, UXTW #2] str w3, [fp, #0xBC] // [V06 loc2] sub w0, w3, #48 cmp w0, #9
- bhi G_M4730_IG48 - ;; size=32 bbWeight=0.50 PerfScore 4.75 -G_M4730_IG38: ; bbWeight=16, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
+ bhi G_M4730_IG42 + ;; size=24 bbWeight=0.49 PerfScore 3.96 +G_M4730_IG40: ; bbWeight=15.84, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
; byrRegs -[x1] movz w0, #0xD1FFAB1E movk w0, #15 LSL #16 str w2, [fp, #0xB8] // [V07 loc3] cmp w2, w0
- blt G_M4730_IG49 - ;; size=20 bbWeight=16 PerfScore 56.00 -G_M4730_IG39: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref
+ blt G_M4730_IG38 + ;; size=20 bbWeight=15.84 PerfScore 55.44 +G_M4730_IG41: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref
str w7, [fp, #0xB0] // [V10 loc6]
- add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ;; size=12 bbWeight=2 PerfScore 5.00 -G_M4730_IG40: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - ldr w1, [fp, #0xBC] // [V06 loc2] - cmp w1, #32 - str w1, [fp, #0xBC] // [V06 loc2] - bne G_M4730_IG43 - ;; size=16 bbWeight=2 PerfScore 9.00 -G_M4730_IG41: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - add w27, w27, #1 - cmp w28, w27 - bls G_M4730_IG110 - ;; size=20 bbWeight=2 PerfScore 7.00 -G_M4730_IG42: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - ldr x1, [fp, #0x18] // [V183 cse14] - ; byrRegs +[x1] - ldrh w0, [x1, w27, UXTW #2] - sxtw w2, w0 - str w2, [fp, #0xBC] // [V06 loc2] - cmp w2, #32 - beq G_M4730_IG41 - ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M4730_IG43: ; bbWeight=1, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref - ; byrRegs -[x1] - add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ldr w3, [fp, #0xBC] // [V06 loc2] - ldr w7, [fp, #0xB0] // [V10 loc6]
...

+112 (+3.13%) : 500579.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T24] ( 5, 11.50) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T30] ( 4, 9 ) ref -> x26 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 63, 69 ) int -> x27 ld-addr-op -; V06 loc2 [V06,T06] ( 31, 63.50) ushort -> [fp+0xAC] -; V07 loc3 [V07,T02] ( 12,160.50) int -> [fp+0xA8]
+; V05 loc1 [V05,T05] ( 68, 70.50) int -> x27 ld-addr-op +; V06 loc2 [V06,T06] ( 34, 63.50) ushort -> [fp+0xAC] +; V07 loc3 [V07,T02] ( 15,160.50) int -> [fp+0xA8]
; V08 loc4 [V08,T12] ( 5, 44.50) ubyte -> [fp+0xA4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 33 ) int -> [fp+0xA0] @@ -189,10 +189,10 @@ ; V178 cse9 [V178,T78] ( 3, 0.01) long -> x0 "CSE - conservative" ; V179 cse10 [V179,T79] ( 3, 0.01) long -> x0 "CSE - conservative" ; V180 cse11 [V180,T80] ( 3, 0.01) long -> x0 "CSE - conservative"
-; V181 cse12 [V181,T00] ( 50,218 ) long -> x25 multi-def "CSE - aggressive" -; V182 cse13 [V182,T13] ( 18, 35.50) int -> x28 "CSE - aggressive"
+; V181 cse12 [V181,T00] ( 51,218 ) long -> x25 multi-def "CSE - aggressive" +; V182 cse13 [V182,T13] ( 19, 35.01) int -> x28 "CSE - aggressive"
; V183 cse14 [V183,T10] ( 17, 46 ) ref -> registers multi-def "CSE - aggressive"
-; V184 cse15 [V184,T23] ( 15, 14.50) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V184 cse15 [V184,T23] ( 16, 14.50) byref -> [fp+0x10] spill-single-def "CSE - moderate"
; V185 cse16 [V185,T25] ( 3, 12 ) int -> x0 "CSE - moderate" ; V186 cse17 [V186,T74] ( 6, 0.01) long -> x3 multi-def "CSE - conservative" ; V187 cse18 [V187,T81] ( 3, 0.01) long -> x2 "CSE - conservative" @@ -218,7 +218,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG106
+ cbz x21, G_M4730_IG112
cbnz x19, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -285,7 +285,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; gcrRegs -[x0] ldr w28, [x21, #0x08] cmp w28, w27
- bls G_M4730_IG101
+ bls G_M4730_IG107
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x2, x21, #12 @@ -343,10 +343,10 @@ G_M4730_IG09: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ; gcr arg pop 0 sxtw w3, w0 str w3, [fp, #0x9C] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG103
+ tbnz w3, #31, G_M4730_IG109
ldr w4, [fp, #0x7C] // [V118 tmp96] cmp w3, w4
- bhi G_M4730_IG116
+ bhi G_M4730_IG122
mov x0, x20 ; gcrRegs +[x0] ldr x1, [fp, #0x28] // [V117 tmp95] @@ -364,13 +364,13 @@ G_M4730_IG09: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ldr w0, [fp, #0x9C] // [V15 loc11] add w27, w27, w0 cmp w27, w28
- bhs G_M4730_IG105
+ bhs G_M4730_IG111
ldr x1, [fp, #0x10] // [V184 cse15] ; byrRegs +[x1] ldrh w2, [x1, w27, UXTW #2] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG111
+ bls G_M4730_IG117
ldrh w3, [x1, w27, UXTW #2] str w3, [fp, #0xAC] // [V06 loc2] cmp w2, w3 @@ -420,14 +420,14 @@ G_M4730_IG13: ; bbWeight=4, gcVars=00000000000000000000000000800000 {V184 ; byrRegs +[x1] ; GC ptr vars +{V23 V184} cmp w2, #123
- bne G_M4730_IG107
+ bne G_M4730_IG113
str xzr, [fp, #0xA4] str xzr, [fp, #0x30] // [V107 tmp85] ; GC ptr vars +{V107} str wzr, [fp, #0x80] // [V108 tmp86] sub w0, w27, #1 cmp w0, w28
- bhs G_M4730_IG105
+ bhs G_M4730_IG111
ldrh w0, [x1, w0, UXTW #2] cmp w0, #123 beq G_M4730_IG15 @@ -476,12 +476,12 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ldr w3, [fp, #0xAC] // [V06 loc2] sub w7, w3, #48 cmp w7, #10
- bhs G_M4730_IG108
+ bhs G_M4730_IG114
;; size=16 bbWeight=4 PerfScore 16.00 G_M4730_IG18: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG111
+ bls G_M4730_IG117
ldr x1, [fp, #0x10] // [V184 cse15] ; byrRegs +[x1] ldrh w3, [x1, w27, UXTW #2] @@ -494,7 +494,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG20: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref str w7, [fp, #0xA0] // [V10 loc6]
- b G_M4730_IG54
+ b G_M4730_IG60
;; size=8 bbWeight=0.25 PerfScore 0.50 G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x0, x25, #0xD1FFAB1E @@ -508,7 +508,7 @@ G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w2, [fp, #0xA0] // [V10 loc6] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG111
+ bls G_M4730_IG117
ldr x3, [fp, #0x10] // [V184 cse15] ; byrRegs +[x3] ldrh w1, [x3, w27, UXTW #2] @@ -548,7 +548,7 @@ G_M4730_IG26: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; gcr arg pop 0 add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG111
+ bls G_M4730_IG117
;; size=20 bbWeight=2 PerfScore 7.00 G_M4730_IG27: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr x1, [fp, #0x10] // [V184 cse15] @@ -565,12 +565,12 @@ G_M4730_IG28: ; bbWeight=0.25, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ;; size=4 bbWeight=0.25 PerfScore 0.50 G_M4730_IG29: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz cmp w3, #44
- bne G_M4730_IG44
+ bne G_M4730_IG51
;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG30: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG111
+ bls G_M4730_IG117
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG31: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr x1, [fp, #0x10] // [V184 cse15] @@ -601,7 +601,7 @@ G_M4730_IG34: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w4, [fp, #0xA4] // [V08 loc4] add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG111
+ bls G_M4730_IG117
ldr x2, [fp, #0x10] // [V184 cse15] ; byrRegs +[x2] ldrh w3, [x2, w27, UXTW #2] @@ -611,108 +611,58 @@ G_M4730_IG35: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byre ; byrRegs -[x2] sub w2, w3, #48 cmp w2, #10
- bhs G_M4730_IG109
+ bhs G_M4730_IG115
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG36: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add w27, w27, #1 cmp w28, w27
- bls G_M4730_IG111
+ bls G_M4730_IG117
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M4730_IG37: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - cmp w27, w28 - bhs G_M4730_IG105
+G_M4730_IG37: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz + tbnz w27, #31, G_M4730_IG44 + b G_M4730_IG39 + ;; size=8 bbWeight=2 PerfScore 4.00 +G_M4730_IG38: ; bbWeight=0.49, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz + str w7, [fp, #0xA0] // [V10 loc6] + add x0, x25, #0xD1FFAB1E + bl CORINFO_HELP_COUNTPROFILE32 + ; gcr arg pop 0 + mov w0, #10 + ldp w2, w1, [fp, #0xA8] // [V07 loc3], [V06 loc2] + madd w2, w2, w0, w1 + sub w2, w2, #48 + add w27, w27, #1 + cmp w28, w27 + ldr w7, [fp, #0xA0] // [V10 loc6] + bls G_M4730_IG117 + ;; size=44 bbWeight=0.49 PerfScore 5.69 +G_M4730_IG39: ; bbWeight=0.49, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [fp, #0x10] // [V184 cse15] ; byrRegs +[x1] ldrh w3, [x1, w27, UXTW #2] str w3, [fp, #0xAC] // [V06 loc2] sub w0, w3, #48 cmp w0, #9
- bhi G_M4730_IG48 - ;; size=32 bbWeight=0.50 PerfScore 4.75 -G_M4730_IG38: ; bbWeight=16, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
+ bhi G_M4730_IG42 + ;; size=24 bbWeight=0.49 PerfScore 3.96 +G_M4730_IG40: ; bbWeight=15.84, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
; byrRegs -[x1] movz w0, #0xD1FFAB1E movk w0, #15 LSL #16 str w2, [fp, #0xA8] // [V07 loc3] cmp w2, w0
- blt G_M4730_IG49 - ;; size=20 bbWeight=16 PerfScore 56.00 -G_M4730_IG39: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref
+ blt G_M4730_IG38 + ;; size=20 bbWeight=15.84 PerfScore 55.44 +G_M4730_IG41: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref
str w7, [fp, #0xA0] // [V10 loc6]
- add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ;; size=12 bbWeight=2 PerfScore 5.00 -G_M4730_IG40: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - ldr w1, [fp, #0xAC] // [V06 loc2] - cmp w1, #32 - str w1, [fp, #0xAC] // [V06 loc2] - bne G_M4730_IG43 - ;; size=16 bbWeight=2 PerfScore 9.00 -G_M4730_IG41: ; bbWeight=2, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - add w27, w27, #1 - cmp w28, w27 - bls G_M4730_IG111 - ;; size=20 bbWeight=2 PerfScore 7.00 -G_M4730_IG42: ; bbWeight=0.50, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz - ldr x1, [fp, #0x10] // [V184 cse15] - ; byrRegs +[x1] - ldrh w0, [x1, w27, UXTW #2] - sxtw w2, w0 - str w2, [fp, #0xAC] // [V06 loc2] - cmp w2, #32 - beq G_M4730_IG41 - ;; size=24 bbWeight=0.50 PerfScore 4.00 -G_M4730_IG43: ; bbWeight=1, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref - ; byrRegs -[x1] - add x0, x25, #0xD1FFAB1E - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ldr w3, [fp, #0xAC] // [V06 loc2] - ldr w7, [fp, #0xA0] // [V10 loc6]
...

+124 (+3.20%) : 581185.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T25] ( 5, 11.50) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T32] ( 4, 9 ) ref -> x25 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 63, 70.50) int -> x26 ld-addr-op -; V06 loc2 [V06,T06] ( 31, 63.50) ushort -> [fp+0x9C] -; V07 loc3 [V07,T02] ( 12,160.50) int -> [fp+0x98]
+; V05 loc1 [V05,T05] ( 68, 72.00) int -> x26 ld-addr-op +; V06 loc2 [V06,T06] ( 34, 63.50) ushort -> [fp+0x9C] +; V07 loc3 [V07,T02] ( 15,160.50) int -> [fp+0x98]
; V08 loc4 [V08,T12] ( 5, 44.50) ubyte -> [fp+0x94] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 33 ) int -> [fp+0x90] @@ -188,9 +188,9 @@ ; V177 cse8 [V177,T77] ( 3, 0.01) long -> x0 "CSE - conservative" ; V178 cse9 [V178,T78] ( 3, 0.01) long -> x0 "CSE - conservative" ; V179 cse10 [V179,T79] ( 3, 0.01) long -> x0 "CSE - conservative"
-; V180 cse11 [V180,T00] ( 74,261.50) long -> [fp+0x60] multi-def "CSE - aggressive" -; V181 cse12 [V181,T13] ( 18, 37 ) int -> x27 "CSE - aggressive" -; V182 cse13 [V182,T20] ( 15, 16 ) byref -> x28 "CSE - moderate"
+; V180 cse11 [V180,T00] ( 76,261.50) long -> [fp+0x60] multi-def "CSE - aggressive" +; V181 cse12 [V181,T13] ( 19, 36.51) int -> x27 "CSE - aggressive" +; V182 cse13 [V182,T20] ( 16, 16 ) byref -> x28 "CSE - moderate"
; V183 cse14 [V183,T10] ( 17, 46 ) ref -> registers multi-def "CSE - aggressive" ; V184 cse15 [V184,T27] ( 3, 12 ) int -> x0 "CSE - moderate" ; V185 cse16 [V185,T73] ( 6, 0.01) long -> x3 multi-def "CSE - conservative" @@ -217,7 +217,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG104
+ cbz x21, G_M4730_IG110
cbnz x19, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -280,7 +280,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byre ; gcrRegs -[x0] ldr w27, [x21, #0x08] cmp w27, w26
- bls G_M4730_IG99
+ bls G_M4730_IG105
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=400000 {x22}, byref, isz add x28, x21, #12 @@ -336,10 +336,10 @@ G_M4730_IG09: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b ; gcr arg pop 0 sxtw w3, w0 str w3, [fp, #0x8C] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG101
+ tbnz w3, #31, G_M4730_IG107
ldr w4, [fp, #0x70] // [V118 tmp96] cmp w3, w4
- bhi G_M4730_IG114
+ bhi G_M4730_IG120
mov x0, x20 ; gcrRegs +[x0] ldr x1, [fp, #0x28] // [V117 tmp95] @@ -357,11 +357,11 @@ G_M4730_IG09: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b ldr w0, [fp, #0x8C] // [V15 loc11] add w26, w26, w0 cmp w26, w27
- bhs G_M4730_IG103
+ bhs G_M4730_IG109
ldrh w1, [x28, w26, UXTW #2] add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG109
+ bls G_M4730_IG115
ldrh w2, [x28, w26, UXTW #2] str w2, [fp, #0x9C] // [V06 loc2] cmp w1, w2 @@ -412,14 +412,14 @@ G_M4730_IG12: ; bbWeight=0.01, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b G_M4730_IG13: ; bbWeight=4, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz ; byrRegs +[x28] cmp w1, #123
- bne G_M4730_IG105
+ bne G_M4730_IG111
str xzr, [fp, #0x94] str xzr, [fp, #0x30] // [V107 tmp85] ; GC ptr vars +{V107} str wzr, [fp, #0x74] // [V108 tmp86] sub w0, w26, #1 cmp w0, w27
- bhs G_M4730_IG103
+ bhs G_M4730_IG109
ldrh w0, [x28, w0, UXTW #2] cmp w0, #123 beq G_M4730_IG15 @@ -466,12 +466,12 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byre ldr w2, [fp, #0x9C] // [V06 loc2] sub w1, w2, #48 cmp w1, #10
- bhs G_M4730_IG106
+ bhs G_M4730_IG112
;; size=16 bbWeight=4 PerfScore 16.00 G_M4730_IG18: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG109
+ bls G_M4730_IG115
ldrh w2, [x28, w26, UXTW #2] cmp w2, #125 beq G_M4730_IG20 @@ -481,7 +481,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byre ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG20: ; bbWeight=0.25, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref str w1, [fp, #0x90] // [V10 loc6]
- b G_M4730_IG53
+ b G_M4730_IG59
;; size=8 bbWeight=0.25 PerfScore 0.50 G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz movz x0, #0xD1FFAB1E @@ -499,7 +499,7 @@ G_M4730_IG21: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b str w2, [fp, #0x90] // [V10 loc6] add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG109
+ bls G_M4730_IG115
ldrh w1, [x28, w26, UXTW #2] str w1, [fp, #0x9C] // [V06 loc2] ldr w1, [fp, #0x90] // [V10 loc6] @@ -542,7 +542,7 @@ G_M4730_IG26: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byre ; gcr arg pop 0 add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG109
+ bls G_M4730_IG115
;; size=32 bbWeight=2 PerfScore 10.00 G_M4730_IG27: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz ldrh w2, [x28, w26, UXTW #2] @@ -556,12 +556,12 @@ G_M4730_IG28: ; bbWeight=0.25, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b ;; size=4 bbWeight=0.25 PerfScore 0.50 G_M4730_IG29: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz cmp w2, #44
- bne G_M4730_IG44
+ bne G_M4730_IG51
;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG30: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG109
+ bls G_M4730_IG115
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG31: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz ldrh w2, [x28, w26, UXTW #2] @@ -596,117 +596,25 @@ G_M4730_IG34: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b str w4, [fp, #0x94] // [V08 loc4] add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG109
+ bls G_M4730_IG115
ldrh w2, [x28, w26, UXTW #2] ldr w1, [fp, #0x90] // [V10 loc6] ;; size=56 bbWeight=0.50 PerfScore 6.50 G_M4730_IG35: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz sub w3, w2, #48 cmp w3, #10
- bhs G_M4730_IG107
+ bhs G_M4730_IG113
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG36: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz add w26, w26, #1 cmp w27, w26
- bls G_M4730_IG109
+ bls G_M4730_IG115
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M4730_IG37: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - cmp w26, w27 - bhs G_M4730_IG103 - ldrh w2, [x28, w26, UXTW #2] - str w2, [fp, #0x9C] // [V06 loc2] - sub w0, w2, #48 - cmp w0, #9 - bhi G_M4730_IG48 - ;; size=28 bbWeight=0.50 PerfScore 3.75 -G_M4730_IG38: ; bbWeight=16, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - movz w0, #0xD1FFAB1E - movk w0, #15 LSL #16 - str w3, [fp, #0x98] // [V07 loc3] - cmp w3, w0 - blt G_M4730_IG49 - ;; size=20 bbWeight=16 PerfScore 56.00 -G_M4730_IG39: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref - str w1, [fp, #0x90] // [V10 loc6] - movz x7, #0xD1FFAB1E - movk x7, #0xD1FFAB1E LSL #16 - movk x7, #1 LSL #32 - add x0, x7, #40 - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ;; size=24 bbWeight=2 PerfScore 8.00 -G_M4730_IG40: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - ldr w1, [fp, #0x9C] // [V06 loc2] - cmp w1, #32 - str w1, [fp, #0x9C] // [V06 loc2] - bne G_M4730_IG43 - ;; size=16 bbWeight=2 PerfScore 9.00 -G_M4730_IG41: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - movz x7, #0xD1FFAB1E - movk x7, #0xD1FFAB1E LSL #16 - movk x7, #1 LSL #32 - mov x2, x7 - add x0, x2, #44 - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - add w26, w26, #1 - cmp w27, w26 - bls G_M4730_IG109 - ;; size=36 bbWeight=2 PerfScore 11.00 -G_M4730_IG42: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - ldrh w1, [x28, w26, UXTW #2] - str w1, [fp, #0x9C] // [V06 loc2] - cmp w1, #32 - beq G_M4730_IG41 - ;; size=16 bbWeight=0.50 PerfScore 2.75 -G_M4730_IG43: ; bbWeight=1, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - add x0, x2, #48 - bl CORINFO_HELP_COUNTPROFILE32 - ; gcr arg pop 0 - ldr w1, [fp, #0x90] // [V10 loc6] - ldr w2, [fp, #0x9C] // [V06 loc2] - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M4730_IG44: ; bbWeight=2, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - cmp w2, #125 - beq G_M4730_IG50 - cmp w2, #58 - bne G_M4730_IG108 - str w26, [fp, #0x88] // [V17 loc13] - ;; size=20 bbWeight=2 PerfScore 8.00 -G_M4730_IG45: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, gcvars, byref, isz - ; GC ptr vars -{V107} - add w26, w26, #1 - cmp w27, w26 - bls G_M4730_IG109 - ldrh w2, [x28, w26, UXTW #2] - cmp w2, #125 - beq G_M4730_IG51 - ;; size=24 bbWeight=0.50 PerfScore 3.25 -G_M4730_IG46: ; bbWeight=16, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref, isz - cmp w2, #123 - beq G_M4730_IG110 - ;; size=8 bbWeight=16 PerfScore 24.00 -G_M4730_IG47: ; bbWeight=8, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=10400000 {x22 x28}, byref - str w1, [fp, #0x90] // [V10 loc6] - movz x2, #0xD1FFAB1E - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32
...

libraries.pmi.osx.arm64.checked.mch

-16 (-12.90%) : 134564.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -8,10 +8,10 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 3, 3 ) ref -> x19 class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> x20 -; V02 loc2 [V02,T01] ( 2, 16 ) int -> x0
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> x20 +; V02 loc2 [V02,T01] ( 2, 15.84) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> x21 hoist "CSE - aggressive"
; ; Lcl frame size = 8 @@ -34,7 +34,7 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x21, x19, #16 ; byrRegs +[x21] ;; size=32 bbWeight=1 PerfScore 4.50
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0] mov w0, w20 movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint @@ -42,13 +42,11 @@ G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- cmp w20, #0xD1FFAB1E - bhs G_M39919_IG06
str w0, [x21, w20, UXTW #2] add w20, w20, #1 cmp w20, #255 bls G_M39919_IG03
- ;; size=48 bbWeight=8 PerfScore 84.00
+ ;; size=40 bbWeight=7.92 PerfScore 71.28
G_M39919_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; byrRegs -[x21] mov x0, x19 @@ -60,13 +58,8 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M39919_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x19] - bl CORINFO_HELP_RNGCHKFAIL - brk_unix #0 - ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 124, prolog size 16, PerfScore 97.50, instruction count 31, allocated bytes for code 124 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 108, prolog size 16, PerfScore 84.78, instruction count 27, allocated bytes for code 108 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.osx.arm64.Release.mch

-8 (-0.24%) : 458233.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,26 +14,26 @@ ; V02 arg2 [V02,T13] ( 5, 7.87) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T50] ( 5, 2.69) ref -> x24 class-hnd single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T00] ( 71, 37.36) int -> x25 ld-addr-op -; V06 loc2 [V06,T10] ( 35, 10.61) ushort -> registers -; V07 loc3 [V07,T33] ( 12, 4.96) int -> [fp+0x7C]
+; V05 loc1 [V05,T00] ( 66, 37.36) int -> x25 ld-addr-op +; V06 loc2 [V06,T10] ( 34, 10.61) ushort -> registers +; V07 loc3 [V07,T33] ( 15, 4.96) int -> [fp+0x7C]
; V08 loc4 [V08,T44] ( 5, 3.37) ubyte -> [fp+0x78] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T24] ( 7, 6.74) int -> x28 ; V11 loc7 [V11,T14] ( 14, 9.85) ref -> registers class-hnd <System.String>
-; V12 loc8 [V12,T57] ( 8, 1.70) ref -> x26 class-hnd <System.String>
+; V12 loc8 [V12,T57] ( 8, 1.70) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T17] ( 12, 9.74) ref -> x28 class-hnd <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T02] ( 10, 16.30) int -> [fp+0x74] spill-single-def ; V16 loc12 [V16,T31] ( 3, 5.10) ushort -> x0
-; V17 loc13 [V17,T65] ( 5, 0.15) int -> x2
+; V17 loc13 [V17,T65] ( 5, 0.15) int -> x3
; V18 loc14 [V18,T43] ( 5, 3.41) ref -> [fp+0x48] class-hnd spill-single-def <System.ISpanFormattable> ; V19 loc15 [V19 ] ( 6, 0.12) int -> [fp+0x68] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T45] ( 5, 3.27) ref -> [fp+0x40] class-hnd spill-single-def <System.IFormattable> ;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V22 tmp1 [V22,T51] ( 4, 2.01) ref -> x1 ;* V23 tmp2 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp3 [V24,T47] ( 3, 3.19) ref -> x26
+; V24 tmp3 [V24,T47] ( 3, 3.19) ref -> x27
;* V25 tmp4 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V26 tmp5 [V26,T52] ( 3, 1.88) ref -> x1 "guarded devirt return temp" ;* V27 tmp6 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp" @@ -44,7 +44,7 @@ ;* V32 tmp11 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Char> ; V33 tmp12 [V33,T81] ( 3, 0.04) ref -> x0 "guarded devirt return temp" ;* V34 tmp13 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Int32>
-; V35 tmp14 [V35,T46] ( 3, 3.19) ref -> x26 "guarded devirt return temp"
+; V35 tmp14 [V35,T46] ( 3, 3.19) ref -> x27 "guarded devirt return temp"
;* V36 tmp15 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String> ;* V37 tmp16 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V38 tmp17 [V38 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -68,8 +68,8 @@ ; V56 tmp35 [V56,T42] ( 4, 3.60) int -> x1 "Inlining Arg" ; V57 tmp36 [V57,T48] ( 3, 2.70) byref -> x0 single-def "Inlining Arg" ;* V58 tmp37 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V59 tmp38 [V59,T49] ( 3, 2.70) int -> x27 "Inlining Arg" -; V60 tmp39 [V60,T53] ( 2, 1.80) byref -> x26 single-def "Inlining Arg"
+; V59 tmp38 [V59,T49] ( 3, 2.70) int -> x26 "Inlining Arg" +; V60 tmp39 [V60,T53] ( 2, 1.80) byref -> x27 single-def "Inlining Arg"
;* V61 tmp40 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V62 tmp41 [V62 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V63 tmp42 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" @@ -164,10 +164,10 @@ ;* V152 tmp131 [V152 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP ; V153 tmp132 [V153,T75] ( 2, 0.06) byref -> x1 "field V82._reference (fldOffset=0x0)" P-INDEP ; V154 tmp133 [V154,T76] ( 2, 0.06) int -> x2 "field V82._length (fldOffset=0x8)" P-INDEP
-; V155 tmp134 [V155,T77] ( 2, 0.06) byref -> x0 "field V83._reference (fldOffset=0x0)" P-INDEP -; V156 tmp135 [V156,T79] ( 2, 0.06) int -> x2 "field V83._length (fldOffset=0x8)" P-INDEP -; V157 tmp136 [V157,T78] ( 2, 0.06) byref -> x0 "field V85._reference (fldOffset=0x0)" P-INDEP -; V158 tmp137 [V158,T80] ( 2, 0.06) int -> x2 "field V85._length (fldOffset=0x8)" P-INDEP
+; V155 tmp134 [V155,T77] ( 2, 0.06) byref -> x3 "field V83._reference (fldOffset=0x0)" P-INDEP +; V156 tmp135 [V156,T79] ( 2, 0.06) int -> x4 "field V83._length (fldOffset=0x8)" P-INDEP +; V157 tmp136 [V157,T78] ( 2, 0.06) byref -> x3 "field V85._reference (fldOffset=0x0)" P-INDEP +; V158 tmp137 [V158,T80] ( 2, 0.06) int -> x4 "field V85._length (fldOffset=0x8)" P-INDEP
;* V159 tmp138 [V159 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP ;* V160 tmp139 [V160 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP ; V161 tmp140 [V161,T72] ( 2, 0.08) byref -> x1 "field V90._reference (fldOffset=0x0)" P-INDEP @@ -186,9 +186,9 @@ ; V174 cse3 [V174,T34] ( 5, 4.90) int -> x28 multi-def "CSE - moderate" ; V175 cse4 [V175,T59] ( 3, 1.35) int -> x2 "CSE - conservative" ; V176 cse5 [V176,T71] ( 3, 0.09) long -> x0 "CSE - conservative"
-; V177 cse6 [V177,T03] ( 20, 16.16) int -> x26 "CSE - aggressive" -; V178 cse7 [V178,T08] ( 17, 12.93) byref -> x27 "CSE - moderate" -; V179 cse8 [V179,T09] ( 12, 11.43) int -> x26 "CSE - moderate"
+; V177 cse6 [V177,T03] ( 19, 16.16) int -> x26 "CSE - aggressive" +; V178 cse7 [V178,T08] ( 16, 12.93) byref -> x27 "CSE - moderate" +; V179 cse8 [V179,T09] ( 12, 11.43) int -> x27 "CSE - moderate"
; V180 cse9 [V180,T32] ( 3, 5.03) int -> x0 "CSE - moderate" ; V181 rat0 [V181,T21] ( 5, 7.05) ref -> x24 class-hnd "replacement local" <System.ICustomFormatter> ; V182 rat1 [V182,T05] ( 6, 13.24) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> @@ -215,7 +215,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG109
+ cbz x20, G_M36935_IG107
cbz x21, G_M36935_IG63 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.94, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz @@ -224,7 +224,7 @@ G_M36935_IG03: ; bbWeight=0.94, gcrefRegs=300000 {x20 x21}, byrefRegs=480 movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x1, x0
- bne G_M36935_IG110
+ bne G_M36935_IG108
mov x1, xzr ; gcrRegs +[x1] ;; size=28 bbWeight=0.94 PerfScore 6.12 @@ -239,7 +239,7 @@ G_M36935_IG05: ; bbWeight=0.50, gcrefRegs=1300002 {x1 x20 x21 x24}, byref movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 cmp x0, x2
- bne G_M36935_IG111
+ bne G_M36935_IG109
;; size=24 bbWeight=0.50 PerfScore 3.02 G_M36935_IG06: ; bbWeight=1.01, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref ; gcrRegs -[x1] @@ -287,7 +287,7 @@ G_M36935_IG08: ; bbWeight=2.16, gcrefRegs=1300000 {x20 x21 x24}, byrefReg G_M36935_IG09: ; bbWeight=1.71, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz ldr w2, [fp, #0x50] // [V124 tmp103] cmp w1, w2
- bhi G_M36935_IG106
+ bhi G_M36935_IG104
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -301,7 +301,7 @@ G_M36935_IG09: ; bbWeight=1.71, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w2, [fp, #0x74] // [V15 loc11] sub w1, w1, w2 cmp w0, w1
- bgt G_M36935_IG82
+ bgt G_M36935_IG80
;; size=64 bbWeight=1.71 PerfScore 34.18 G_M36935_IG10: ; bbWeight=1.71, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz add x0, x19, #16 @@ -309,7 +309,7 @@ G_M36935_IG10: ; bbWeight=1.71, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w1, [x19, #0x08] ldr w3, [x0, #0x08] cmp w1, w3
- bhi G_M36935_IG106
+ bhi G_M36935_IG104
ldr x0, [x0] ubfiz x4, x1, #1, #32 add x4, x0, x4 @@ -331,7 +331,7 @@ G_M36935_IG10: ; bbWeight=1.71, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ldr w3, [fp, #0x74] // [V15 loc11] ldr w2, [fp, #0x60] // [V74 tmp53] cmp w3, w2
- bhi G_M36935_IG107
+ bhi G_M36935_IG105
mov w2, w3 lsl x2, x2, #1 ldr x0, [fp, #0x38] // [V75 tmp54] @@ -352,25 +352,25 @@ G_M36935_IG10: ; bbWeight=1.71, gcrefRegs=1300000 {x20 x21 x24}, byrefReg str w0, [x19, #0x08] add w25, w25, w28 cmp w25, w26
- bhs G_M36935_IG108
+ bhs G_M36935_IG106
ldrh w0, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG102
+ bls G_M36935_IG100
ldrh w28, [x27, w25, UXTW #2] cmp w0, w28 beq G_M36935_IG68 ;; size=180 bbWeight=1.71 PerfScore 93.14 G_M36935_IG11: ; bbWeight=1.68, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w0, #123
- bne G_M36935_IG100
+ bne G_M36935_IG98
str xzr, [fp, #0x78] str xzr, [fp, #0x18] // [V115 tmp94] ; GC ptr vars +{V115} str wzr, [fp, #0x54] // [V116 tmp95] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG108
+ bhs G_M36935_IG106
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -390,18 +390,18 @@ G_M36935_IG11: ; bbWeight=1.68, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ; gcr arg pop 0 sub w28, w28, #48 cmp w28, #10
- bhs G_M36935_IG101
+ bhs G_M36935_IG99
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG102
+ bls G_M36935_IG100
ldrh w0, [x27, w25, UXTW #2] sxtw w1, w0 cmp w1, #125
- bne G_M36935_IG70
+ bne G_M36935_IG71
;; size=132 bbWeight=1.68 PerfScore 52.86 G_M36935_IG12: ; bbWeight=1.68, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w25, w26
- bhs G_M36935_IG108
+ bhs G_M36935_IG106
ldrh w0, [x27, w25, UXTW #2] cmp w0, #125 cset x0, eq @@ -413,78 +413,78 @@ G_M36935_IG12: ; bbWeight=1.68, gcrefRegs=1300000 {x20 x21 x24}, byrefReg ; byrRegs -[x27] ; gcr arg pop 0 add w25, w25, #1
- mov x27, xzr - ; gcrRegs +[x27]
mov x26, xzr ; gcrRegs +[x26]
+ mov x27, xzr + ; gcrRegs +[x27]
cmp w28, w23
- bhs G_M36935_IG105
+ bhs G_M36935_IG103
ldr x28, [x22, w28, UXTW #3] ; gcrRegs +[x28] cbnz x24, G_M36935_IG59 ;; size=68 bbWeight=1.68 PerfScore 30.21 G_M36935_IG13: ; bbWeight=1.68, gcrefRegs=1D300000 {x20 x21 x24 x26 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz x27, G_M36935_IG26
+ cbnz x26, G_M36935_IG26
;; size=4 bbWeight=1.68 PerfScore 1.68
-G_M36935_IG14: ; bbWeight=1.65, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref, isz - ; gcrRegs -[x27] - ldr w27, [fp, #0x78] // [V08 loc4] - cbnz w27, G_M36935_IG16
+G_M36935_IG14: ; bbWeight=1.65, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz + ; gcrRegs -[x26] + ldr w26, [fp, #0x78] // [V08 loc4] + cbnz w26, G_M36935_IG16
;; size=8 bbWeight=1.65 PerfScore 4.96
-G_M36935_IG15: ; bbWeight=1.65, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M36935_IG15: ; bbWeight=1.65, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz
ldr w1, [fp, #0x7C] // [V07 loc3] cbnz w1, G_M36935_IG19 ;; size=8 bbWeight=1.65 PerfScore 4.94
-G_M36935_IG16: ; bbWeight=1.65, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M36935_IG16: ; bbWeight=1.65, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz
mov x2, x28 ; gcrRegs +[x2] cbz x2, G_M36935_IG18 ;; size=8 bbWeight=1.65 PerfScore 2.48
-G_M36935_IG17: ; bbWeight=0.83, gcrefRegs=15300004 {x2 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M36935_IG17: ; bbWeight=0.83, gcrefRegs=19300004 {x2 x20 x21 x24 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x2, [x2] ; gcrRegs -[x2] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 cmp x2, x0
- bne G_M36935_IG115
+ bne G_M36935_IG113
mov x2, xzr ; gcrRegs +[x2] ...

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

+12 (+0.83%) : 130052.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -8,54 +8,54 @@ ; 14 inlinees with PGO data; 44 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T33] ( 3, 5.96) ref -> x19 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T25] ( 4, 10.01) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T32] ( 3, 5.96) ref -> x19 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T14] ( 7, 21.83) ref -> x20 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T09] ( 7, 24.76) int -> x0 ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T39] ( 3, 1 ) ref -> [fp+0x38] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T38] ( 5, 2 ) ref -> [fp+0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.03) int -> x19
+; V04 loc4 [V04,T38] ( 3, 1 ) ref -> [fp+0x38] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T37] ( 5, 2 ) ref -> [fp+0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.75) int -> x19
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T31] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T26] ( 5, 10.01) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T34] ( 2, 4.01) int -> x19 "Inlining Arg" -; V11 tmp4 [V11,T32] ( 3, 6.01) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T28] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T22] ( 5, 10.01) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T33] ( 2, 4.01) int -> x19 "Inlining Arg" +; V11 tmp4 [V11,T31] ( 3, 6.01) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T37] ( 3, 3.00) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T27] ( 4, 8.01) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T28] ( 4, 8.01) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T14] ( 2, 16.02) int -> x26 "Inlining Arg" -; V17 tmp10 [V17,T10] ( 3, 24.04) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T36] ( 3, 3.00) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T26] ( 4, 8.01) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T27] ( 4, 8.01) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T15] ( 2, 15.86) int -> x26 "Inlining Arg" +; V17 tmp10 [V17,T11] ( 3, 23.80) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T17] ( 3, 12.02) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.05) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T18] ( 3, 11.90) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 31.73) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 31.73) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T15] ( 2, 16.02) int -> x26 "Inlining Arg" -; V24 tmp17 [V24,T11] ( 3, 24.04) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T16] ( 2, 15.86) int -> x26 "Inlining Arg" +; V24 tmp17 [V24,T12] ( 3, 23.80) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T18] ( 3, 12.02) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.05) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T19] ( 3, 11.90) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 31.73) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 31.73) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T16] ( 2, 16.02) ushort -> x26 "Inlining Arg" -; V34 tmp27 [V34,T12] ( 3, 24.04) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T17] ( 2, 15.86) ushort -> x26 "Inlining Arg" +; V34 tmp27 [V34,T13] ( 3, 23.80) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T19] ( 3, 12.02) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.05) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T20] ( 3, 11.90) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 31.73) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 31.73) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T35] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T29] ( 3, 8.01) ubyte -> x26 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T34] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T29] ( 3, 7.93) ubyte -> x26 "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T36] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T30] ( 2, 8.01) ubyte -> x0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T35] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T30] ( 3, 7.93) ubyte -> x22 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,15 +64,14 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> x1 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T41] ( 6, 0 ) struct ( 8) [fp+0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T40] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T13] ( 5, 20.03) byref -> x22 "CSE - aggressive" -; V59 cse1 [V59,T20] ( 3, 12.02) long -> x22 "CSE - moderate" -; V60 cse2 [V60,T08] ( 9, 27.04) long -> x25 "CSE - aggressive" -; V61 cse3 [V61,T22] ( 4, 10.02) long -> x21 "CSE - moderate" -; V62 cse4 [V62,T23] ( 4, 10.02) long -> x23 "CSE - moderate" -; V63 cse5 [V63,T24] ( 4, 10.02) long -> x24 "CSE - moderate" -; V64 cse6 [V64,T21] ( 3, 11.88) int -> x2 "CSE - moderate"
+; V56 tmp49 [V56,T40] ( 6, 0 ) struct ( 8) [fp+0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T39] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T10] ( 6, 23.80) long -> x22 "CSE - aggressive" +; V59 cse1 [V59,T08] ( 9, 26.80) long -> x25 "CSE - aggressive" +; V60 cse2 [V60,T23] ( 4, 9.94) long -> x21 "CSE - moderate" +; V61 cse3 [V61,T24] ( 4, 9.94) long -> x23 "CSE - moderate" +; V62 cse4 [V62,T25] ( 4, 9.94) long -> x24 "CSE - moderate" +; V63 cse5 [V63,T21] ( 3, 11.88) int -> x2 "CSE - moderate"
; ; Lcl frame size = 64 @@ -147,7 +146,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { str x21, [fp, #0x38] // [V04 loc4] ; GC ptr vars +{V04} ;; size=48 bbWeight=1 PerfScore 10.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -171,7 +170,7 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000008000000000 {V04}, gcrefRegs=380 str x22, [fp, #0x30] // [V05 loc5] ; GC ptr vars +{V05} ;; size=60 bbWeight=1 PerfScore 11.50
-G_M53770_IG06: ; bbWeight=1.00, gcVars=000000C000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1.00, gcVars=0000006000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
mov x0, x22 ; gcrRegs +[x0] mov x2, x19 @@ -291,7 +290,7 @@ G_M53770_IG06: ; bbWeight=1.00, gcVars=000000C000000000 {V04 V05}, gcrefR ; gcr arg pop 0 mov w19, wzr ;; size=300 bbWeight=1.00 PerfScore 54.58
-G_M53770_IG07: ; bbWeight=4.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG07: ; bbWeight=3.97, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ubfiz x0, x19, #4, #32 add x22, x0, #16 ldr w26, [x20, x22] @@ -374,10 +373,11 @@ G_M53770_IG07: ; bbWeight=4.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x27] ; gcr arg pop 0
- add x22, x20, x22 - ; byrRegs +[x22] - ldr w26, [x22, #0x08]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldr w26, [x0, #0x08]
mov x0, x21
+ ; byrRegs -[x0]
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -456,10 +456,14 @@ G_M53770_IG07: ; bbWeight=4.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x27] ; gcr arg pop 0
- ldrb w26, [x22, #0x04]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldrb w26, [x0, #0x04]
cbnz w26, G_M53770_IG10
- ldrh w26, [x22, #0x0C]
+ add x0, x20, x22 + ldrh w26, [x0, #0x0C]
movz x0, #0xD1FFAB1E
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 bl CORINFO_HELP_NEWSFAST @@ -545,15 +549,17 @@ G_M53770_IG07: ; bbWeight=4.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x27] ; gcr arg pop 0
- ldrb w0, [x22, #0x0E] - cbz w0, G_M53770_IG11 - ;; size=572 bbWeight=4.01 PerfScore 498.77 -G_M53770_IG08: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x22]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldrb w22, [x0, #0x0E] + cbz w22, G_M53770_IG11 + ;; size=584 bbWeight=3.97 PerfScore 499.73 +G_M53770_IG08: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0]
add w19, w19, #1 cmp w19, #12 blt G_M53770_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=12 bbWeight=3.96 PerfScore 7.92
G_M53770_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] b G_M53770_IG12 @@ -578,7 +584,7 @@ G_M53770_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M53770_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w1, #1 strb w1, [fp, #0x40] // [V56 tmp49]
- strb wzr, [fp, #0x41] // [V56 tmp49+0x01]
+ strb w22, [fp, #0x41] // [V56 tmp49+0x01]
ldrh w1, [fp, #0x40] // [V56 tmp49] mov x0, xzr movz x2, #0xD1FFAB1E // code for <unknown method> @@ -622,8 +628,8 @@ G_M53770_IG14: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0xA0 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M53770_IG15: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V05 V38}
+G_M53770_IG15: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V05 V37 V38}
stp fp, lr, [sp, #-0x70]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -633,11 +639,11 @@ G_M53770_IG15: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs add x3, fp, #160 str x3, [sp, #0x18] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M53770_IG16: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG16: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x30] // [V05 loc5] ; gcrRegs +[x0] strb wzr, [x0, #0x24]
- ; GC ptr vars -{V05 V38}
+ ; GC ptr vars -{V05 V37 V38}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 @@ -661,7 +667,7 @@ G_M53770_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x3, fp, #160 str x3, [sp, #0x18] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M53770_IG19: ; bbWeight=0, gcVars=0000008000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG19: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x38] // [V04 loc4] ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> @@ -683,7 +689,7 @@ G_M53770_IG20: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 1448, prolog size 36, PerfScore 657.46, instruction count 362, allocated bytes for code 1448 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
+Total bytes of code 1460, prolog size 36, PerfScore 658.34, instruction count 365, allocated bytes for code 1460 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
; ============================================================ Unwind Info: @@ -694,7 +700,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 323 (0x00143) Actual length = 1292 (0x00050c)
...

realworld.run.osx.arm64.checked.mch

+72 (+2.29%) : 2452.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 25 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> x19 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> x19 this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> x21 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T25] ( 5, 15 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T71] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0xAC] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [fp+0xA8]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0xAC] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [fp+0xA8]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [fp+0xA4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [fp+0xA0] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T09] ( 10, 38 ) int -> [fp+0x9C] spill-single-def ; V16 loc12 [V16,T44] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T36] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T36] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T39] ( 3, 12 ) ref -> [fp+0x60] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T74] ( 3, 6 ) ref -> [fp+0x58] class-hnd spill-single-def <<unknown class>> @@ -203,8 +203,8 @@ ; V192 cse3 [V192,T77] ( 3, 6 ) int -> x1 "CSE - conservative" ; V193 cse4 [V193,T78] ( 3, 6 ) int -> x1 "CSE - conservative" ; V194 cse5 [V194,T90] ( 3, 1.50) int -> x2 "CSE - conservative"
-; V195 cse6 [V195,T02] ( 18,142 ) int -> x26 "CSE - aggressive" -; V196 cse7 [V196,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V195 cse6 [V195,T03] ( 19,126.16) int -> x26 "CSE - aggressive" +; V196 cse7 [V196,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V197 cse8 [V197,T06] ( 21, 58 ) int -> x27 "CSE - aggressive" ; V198 cse9 [V198,T12] ( 11, 29 ) byref -> [fp+0x18] multi-def "CSE - aggressive" ; V199 cse10 [V199,T50] ( 3, 12 ) int -> x0 "CSE - moderate" @@ -230,7 +230,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG62
+ cbz x20, G_M36935_IG66
cbnz x21, G_M36935_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref @@ -270,7 +270,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcrRegs -[x0] ldr w26, [x20, #0x08] cmp w26, w25
- bls G_M36935_IG58
+ bls G_M36935_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz add x27, x20, #12 @@ -304,10 +304,10 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x9C] // [V15 loc11]
- tbnz w1, #31, G_M36935_IG59
+ tbnz w1, #31, G_M36935_IG63
ldr w2, [fp, #0x70] // [V132 tmp111] cmp w1, w2
- bhi G_M36935_IG69
+ bhi G_M36935_IG73
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -346,7 +346,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w3, [x19, #0x08] ldr w4, [x0, #0x08] cmp w3, w4
- bhi G_M36935_IG69
+ bhi G_M36935_IG73
ldr x0, [x0] ubfiz x5, x3, #1, #32 add x5, x0, x5 @@ -368,7 +368,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w3, [fp, #0x9C] // [V15 loc11] ldr w2, [fp, #0x88] // [V63 tmp42] cmp w3, w2
- bhi G_M36935_IG70
+ bhi G_M36935_IG74
mov w2, w3 lsl x2, x2, #1 ldr x0, [fp, #0x50] // [V64 tmp43] @@ -389,11 +389,11 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 str w0, [x19, #0x08] add w25, w25, w28 cmp w25, w26
- bhs G_M36935_IG61
+ bhs G_M36935_IG65
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65
+ bls G_M36935_IG69
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M36935_IG13 @@ -433,7 +433,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 ; byrRegs +[x27] ; GC ptr vars +{V12 V198} cmp w28, #123
- bne G_M36935_IG63
+ bne G_M36935_IG67
str w2, [fp, #0xAC] // [V06 loc2] mov w28, wzr str wzr, [fp, #0xA4] // [V08 loc4] @@ -442,7 +442,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 str wzr, [fp, #0x74] // [V124 tmp103] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG61
+ bhs G_M36935_IG65
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -462,188 +462,212 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0xAC] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M36935_IG64
+ ldr w1, [fp, #0xAC] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M36935_IG68
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M36935_IG15 ;; size=144 bbWeight=4 PerfScore 146.00 G_M36935_IG14: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref b G_M36935_IG17 ;; size=4 bbWeight=2 PerfScore 2.00 G_M36935_IG15: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
- str w1, [fp, #0xA0] // [V10 loc6] - b G_M36935_IG32
+ str w2, [fp, #0xA0] // [V10 loc6] + b G_M36935_IG36
;; size=8 bbWeight=2 PerfScore 4.00 G_M36935_IG16: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0xA0] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0xA0] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0xA0] // [V10 loc6]
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0xA0] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M36935_IG17: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M36935_IG16 ;; size=24 bbWeight=16 PerfScore 56.00 G_M36935_IG18: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M36935_IG20 ;; size=8 bbWeight=2 PerfScore 3.00 G_M36935_IG19: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M36935_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG20: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M36935_IG28
+ cmp w1, #44 + mov w3, w1 + bne G_M36935_IG24
;; size=12 bbWeight=2 PerfScore 4.00 G_M36935_IG21: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M36935_IG21 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M36935_IG23
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0xA4] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M36935_IG64
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M36935_IG68
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - b G_M36935_IG25 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0xA8] // [V07 loc3]
+ bls G_M36935_IG69
...

+72 (+2.68%) : 2215.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T32] ( 5, 15 ) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T61] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 61, 455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [fp+0x6C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [fp+0x68]
+; V05 loc1 [V05,T02] ( 66, 441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [fp+0x6C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [fp+0x68]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [fp+0x64] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [fp+0x60] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def ; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T43] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>> @@ -160,8 +160,8 @@ ; V149 cse3 [V149,T45] ( 3, 12 ) ref -> x4 "CSE - moderate" ; V150 cse4 [V150,T47] ( 3, 12 ) int -> x1 "CSE - moderate" ; V151 cse5 [V151,T03] ( 6, 416 ) int -> [fp+0x3C] spill-single-def "CSE - aggressive"
-; V152 cse6 [V152,T11] ( 18, 142 ) int -> x26 "CSE - aggressive" -; V153 cse7 [V153,T12] ( 15, 120 ) byref -> x27 "CSE - aggressive"
+; V152 cse6 [V152,T11] ( 19, 126.16) int -> x26 "CSE - aggressive" +; V153 cse7 [V153,T12] ( 16, 120 ) byref -> x27 "CSE - aggressive"
; V154 cse8 [V154,T48] ( 3, 12 ) int -> x0 "CSE - moderate" ; ; Lcl frame size = 96 @@ -185,7 +185,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG63
+ cbz x21, G_M4730_IG67
cbnz x20, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -225,7 +225,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcrRegs -[x0] ldr w26, [x21, #0x08] cmp w26, w25
- bls G_M4730_IG58
+ bls G_M4730_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz add x27, x21, #12 @@ -259,10 +259,10 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x5C] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG60
+ tbnz w1, #31, G_M4730_IG64
ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2
- bhi G_M4730_IG74
+ bhi G_M4730_IG78
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -287,11 +287,11 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w28, [fp, #0x5C] // [V15 loc11] add w25, w25, w28 cmp w25, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66
+ bls G_M4730_IG70
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M4730_IG11 @@ -333,7 +333,7 @@ G_M4730_IG10: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz ; byrRegs +[x27] cmp w28, #123
- bne G_M4730_IG64
+ bne G_M4730_IG68
str w2, [fp, #0x6C] // [V06 loc2] mov w28, wzr str wzr, [fp, #0x64] // [V08 loc4] @@ -342,7 +342,7 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg str wzr, [fp, #0x44] // [V90 tmp68] sub w0, w25, #1 cmp w0, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -361,188 +361,212 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0x6C] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M4730_IG65
+ ldr w1, [fp, #0x6C] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M4730_IG13 ;; size=144 bbWeight=4 PerfScore 146.00 G_M4730_IG12: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref b G_M4730_IG15 ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG13: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- str w1, [fp, #0x60] // [V10 loc6] - b G_M4730_IG30
+ str w2, [fp, #0x60] // [V10 loc6] + b G_M4730_IG34
;; size=8 bbWeight=2 PerfScore 4.00 G_M4730_IG14: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0x60] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0x60] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0x60] // [V10 loc6]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0x60] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M4730_IG15: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M4730_IG14 ;; size=24 bbWeight=16 PerfScore 56.00 G_M4730_IG16: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M4730_IG18 ;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG17: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG17 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M4730_IG26
+ cmp w1, #44 + mov w3, w1 + bne G_M4730_IG22
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG19: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M4730_IG21
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0x64] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M4730_IG21: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M4730_IG65
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - b G_M4730_IG23 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M4730_IG22: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0x68] // [V07 loc3]
+ bls G_M4730_IG70 + tbnz w25, #31, G_M4730_IG27 + b G_M4730_IG24 + ;; size=32 bbWeight=2 PerfScore 12.00 +G_M4730_IG22: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref + mov w1, w28 + b G_M4730_IG30 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M4730_IG23: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz + mov w0, #10 + madd w1, w1, w0, w3 + sub w1, w1, #48
add w25, w25, #1 cmp w26, w25
- ldr w2, [fp, #0x68] // [V07 loc3] - bls G_M4730_IG66 - ;; size=32 bbWeight=8 PerfScore 64.00 -G_M4730_IG23: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - cmp w25, w26 - bhs G_M4730_IG62
+ bls G_M4730_IG70 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
ldrh w0, [x27, w25, UXTW #2]
- sub w3, w0, #48
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 2 0 2 0 -0 +136
benchmarks.run_pgo.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.osx.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.osx.arm64.checked.mch 109 0 109 0 -0 +10,140
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 4 1 3 0 -16 +412
libraries_tests.run.osx.arm64.Release.mch 186 1 185 0 -8 +18,164
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 1 0 1 0 -0 +12
realworld.run.osx.arm64.checked.mch 2 0 2 0 -0 +144
304 2 302 0 -24 +29,008

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,859 5 24,854 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.osx.arm64.checked.mch 84,163 48,254 35,909 13 (0.02%) 13 (0.02%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,057 37,339 10,718 0 (0.00%) 0 (0.00%)
coreclr_tests.run.osx.arm64.checked.mch 584,879 356,502 228,377 7 (0.00%) 8 (0.00%)
libraries.crossgen2.osx.arm64.checked.mch 1,881 0 1,881 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 316,289 18 316,271 3 (0.00%) 3 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 634,565 463,650 170,915 83 (0.01%) 83 (0.01%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 303,143 21,597 281,546 2 (0.00%) 2 (0.00%)
realworld.run.osx.arm64.checked.mch 31,542 3 31,539 1 (0.00%) 1 (0.00%)
2,029,378 927,368 1,102,010 109 (0.01%) 110 (0.01%)

jit-analyze output

benchmarks.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: 11184380 (overridden on cmd)
Total bytes of diff: 11184516 (overridden on cmd)
Total bytes of delta: 136 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


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: 483585340 (overridden on cmd)
Total bytes of diff: 483595480 (overridden on cmd)
Total bytes of delta: 10140 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.pmi.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: 80206160 (overridden on cmd)
Total bytes of diff: 80206556 (overridden on cmd)
Total bytes of delta: 396 (0.00 % of base)
    relative diff is a regression.

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 4 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: 313700180 (overridden on cmd)
Total bytes of diff: 313718336 (overridden on cmd)
Total bytes of delta: 18156 (0.01 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.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: 163152648 (overridden on cmd)
Total bytes of diff: 163152660 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


realworld.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: 15075948 (overridden on cmd)
Total bytes of diff: 15076092 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



windows arm64

Diffs are based on 2,070,840 contexts (937,853 MinOpts, 1,132,987 FullOpts).

MISSED contexts: base: 139 (0.01%), diff: 143 (0.01%)

Overall (+36,936 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,965,692 +144
benchmarks.run_tiered.windows.arm64.checked.mch 15,506,140 +64
coreclr_tests.run.windows.arm64.checked.mch 496,297,948 +14,168
libraries.pmi.windows.arm64.checked.mch 79,832,212 +252
libraries_tests.run.windows.arm64.Release.mch 326,696,628 +22,152
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 171,564,392 +12
realworld.run.windows.arm64.checked.mch 15,891,320 +144

FullOpts (+36,936 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,965,156 +144
benchmarks.run_tiered.windows.arm64.checked.mch 4,328,392 +64
coreclr_tests.run.windows.arm64.checked.mch 156,623,544 +14,168
libraries.pmi.windows.arm64.checked.mch 79,712,228 +252
libraries_tests.run.windows.arm64.Release.mch 123,222,780 +22,152
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 158,410,680 +12
realworld.run.windows.arm64.checked.mch 15,327,340 +144

Example diffs

benchmarks.run.windows.arm64.checked.mch

+72 (+2.29%) : 3541.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 25 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> x19 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> x19 this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> x21 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T25] ( 5, 15 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T71] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0xAC] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [fp+0xA8]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0xAC] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [fp+0xA8]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [fp+0xA4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [fp+0xA0] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T09] ( 10, 38 ) int -> [fp+0x9C] spill-single-def ; V16 loc12 [V16,T44] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T36] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T36] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T39] ( 3, 12 ) ref -> [fp+0x60] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T74] ( 3, 6 ) ref -> [fp+0x58] class-hnd spill-single-def <<unknown class>> @@ -203,8 +203,8 @@ ; V192 cse3 [V192,T77] ( 3, 6 ) int -> x1 "CSE - conservative" ; V193 cse4 [V193,T78] ( 3, 6 ) int -> x1 "CSE - conservative" ; V194 cse5 [V194,T90] ( 3, 1.50) int -> x2 "CSE - conservative"
-; V195 cse6 [V195,T02] ( 18,142 ) int -> x26 "CSE - aggressive" -; V196 cse7 [V196,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V195 cse6 [V195,T03] ( 19,126.16) int -> x26 "CSE - aggressive" +; V196 cse7 [V196,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V197 cse8 [V197,T06] ( 21, 58 ) int -> x27 "CSE - aggressive" ; V198 cse9 [V198,T12] ( 11, 29 ) byref -> [fp+0x18] multi-def "CSE - aggressive" ; V199 cse10 [V199,T50] ( 3, 12 ) int -> x0 "CSE - moderate" @@ -230,7 +230,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG62
+ cbz x20, G_M36935_IG66
cbnz x21, G_M36935_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref @@ -270,7 +270,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcrRegs -[x0] ldr w26, [x20, #0x08] cmp w26, w25
- bls G_M36935_IG58
+ bls G_M36935_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz add x27, x20, #12 @@ -304,10 +304,10 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x9C] // [V15 loc11]
- tbnz w1, #31, G_M36935_IG59
+ tbnz w1, #31, G_M36935_IG63
ldr w2, [fp, #0x70] // [V132 tmp111] cmp w1, w2
- bhi G_M36935_IG69
+ bhi G_M36935_IG73
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -346,7 +346,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w3, [x19, #0x08] ldr w4, [x0, #0x08] cmp w3, w4
- bhi G_M36935_IG69
+ bhi G_M36935_IG73
ldr x0, [x0] ubfiz x5, x3, #1, #32 add x5, x0, x5 @@ -368,7 +368,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w3, [fp, #0x9C] // [V15 loc11] ldr w2, [fp, #0x88] // [V63 tmp42] cmp w3, w2
- bhi G_M36935_IG70
+ bhi G_M36935_IG74
mov w2, w3 lsl x2, x2, #1 ldr x0, [fp, #0x50] // [V64 tmp43] @@ -389,11 +389,11 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 str w0, [x19, #0x08] add w25, w25, w28 cmp w25, w26
- bhs G_M36935_IG61
+ bhs G_M36935_IG65
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65
+ bls G_M36935_IG69
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M36935_IG13 @@ -433,7 +433,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 ; byrRegs +[x27] ; GC ptr vars +{V12 V198} cmp w28, #123
- bne G_M36935_IG63
+ bne G_M36935_IG67
str w2, [fp, #0xAC] // [V06 loc2] mov w28, wzr str wzr, [fp, #0xA4] // [V08 loc4] @@ -442,7 +442,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 str wzr, [fp, #0x74] // [V124 tmp103] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG61
+ bhs G_M36935_IG65
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -462,188 +462,212 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0xAC] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M36935_IG64
+ ldr w1, [fp, #0xAC] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M36935_IG68
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M36935_IG15 ;; size=144 bbWeight=4 PerfScore 146.00 G_M36935_IG14: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref b G_M36935_IG17 ;; size=4 bbWeight=2 PerfScore 2.00 G_M36935_IG15: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
- str w1, [fp, #0xA0] // [V10 loc6] - b G_M36935_IG32
+ str w2, [fp, #0xA0] // [V10 loc6] + b G_M36935_IG36
;; size=8 bbWeight=2 PerfScore 4.00 G_M36935_IG16: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0xA0] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0xA0] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0xA0] // [V10 loc6]
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0xA0] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M36935_IG17: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M36935_IG16 ;; size=24 bbWeight=16 PerfScore 56.00 G_M36935_IG18: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M36935_IG20 ;; size=8 bbWeight=2 PerfScore 3.00 G_M36935_IG19: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M36935_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG20: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M36935_IG28
+ cmp w1, #44 + mov w3, w1 + bne G_M36935_IG24
;; size=12 bbWeight=2 PerfScore 4.00 G_M36935_IG21: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M36935_IG21 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M36935_IG23
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0xA4] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M36935_IG64
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M36935_IG68
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - b G_M36935_IG25 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0xA8] // [V07 loc3]
+ bls G_M36935_IG69
...

+72 (+2.66%) : 4831.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T32] ( 5, 15 ) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T61] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 61, 455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [fp+0x6C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [fp+0x68]
+; V05 loc1 [V05,T02] ( 66, 441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [fp+0x6C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [fp+0x68]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [fp+0x64] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [fp+0x60] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def ; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T43] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>> @@ -160,8 +160,8 @@ ; V149 cse3 [V149,T45] ( 3, 12 ) ref -> x4 "CSE - moderate" ; V150 cse4 [V150,T47] ( 3, 12 ) int -> x1 "CSE - moderate" ; V151 cse5 [V151,T03] ( 6, 416 ) int -> [fp+0x3C] spill-single-def "CSE - aggressive"
-; V152 cse6 [V152,T11] ( 18, 142 ) int -> x26 "CSE - aggressive" -; V153 cse7 [V153,T12] ( 15, 120 ) byref -> x27 "CSE - aggressive"
+; V152 cse6 [V152,T11] ( 19, 126.16) int -> x26 "CSE - aggressive" +; V153 cse7 [V153,T12] ( 16, 120 ) byref -> x27 "CSE - aggressive"
; V154 cse8 [V154,T48] ( 3, 12 ) int -> x0 "CSE - moderate" ; ; Lcl frame size = 96 @@ -185,7 +185,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG63
+ cbz x21, G_M4730_IG67
cbnz x20, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -225,7 +225,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcrRegs -[x0] ldr w26, [x21, #0x08] cmp w26, w25
- bls G_M4730_IG58
+ bls G_M4730_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz add x27, x21, #12 @@ -259,10 +259,10 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x5C] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG60
+ tbnz w1, #31, G_M4730_IG64
ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2
- bhi G_M4730_IG74
+ bhi G_M4730_IG78
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -287,11 +287,11 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w28, [fp, #0x5C] // [V15 loc11] add w25, w25, w28 cmp w25, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66
+ bls G_M4730_IG70
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M4730_IG11 @@ -333,7 +333,7 @@ G_M4730_IG10: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz ; byrRegs +[x27] cmp w28, #123
- bne G_M4730_IG64
+ bne G_M4730_IG68
str w2, [fp, #0x6C] // [V06 loc2] mov w28, wzr str wzr, [fp, #0x64] // [V08 loc4] @@ -342,7 +342,7 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg str wzr, [fp, #0x44] // [V90 tmp68] sub w0, w25, #1 cmp w0, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -361,188 +361,212 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0x6C] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M4730_IG65
+ ldr w1, [fp, #0x6C] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M4730_IG13 ;; size=144 bbWeight=4 PerfScore 146.00 G_M4730_IG12: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref b G_M4730_IG15 ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG13: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- str w1, [fp, #0x60] // [V10 loc6] - b G_M4730_IG30
+ str w2, [fp, #0x60] // [V10 loc6] + b G_M4730_IG34
;; size=8 bbWeight=2 PerfScore 4.00 G_M4730_IG14: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0x60] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0x60] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0x60] // [V10 loc6]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0x60] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M4730_IG15: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M4730_IG14 ;; size=24 bbWeight=16 PerfScore 56.00 G_M4730_IG16: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M4730_IG18 ;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG17: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG17 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M4730_IG26
+ cmp w1, #44 + mov w3, w1 + bne G_M4730_IG22
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG19: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M4730_IG21
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0x64] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M4730_IG21: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M4730_IG65
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - b G_M4730_IG23 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M4730_IG22: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0x68] // [V07 loc3]
+ bls G_M4730_IG70 + tbnz w25, #31, G_M4730_IG27 + b G_M4730_IG24 + ;; size=32 bbWeight=2 PerfScore 12.00 +G_M4730_IG22: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref + mov w1, w28 + b G_M4730_IG30 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M4730_IG23: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz + mov w0, #10 + madd w1, w1, w0, w3 + sub w1, w1, #48
add w25, w25, #1 cmp w26, w25
- ldr w2, [fp, #0x68] // [V07 loc3] - bls G_M4730_IG66 - ;; size=32 bbWeight=8 PerfScore 64.00 -G_M4730_IG23: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - cmp w25, w26 - bhs G_M4730_IG62
+ bls G_M4730_IG70 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
ldrh w0, [x27, w25, UXTW #2]
- sub w3, w0, #48
...

benchmarks.run_tiered.windows.arm64.checked.mch

+64 (+1.92%) : 31729.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 37 single block inlinees; 58 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> x19 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> x19 this single-def
; V01 arg1 [V01,T35] ( 7, 11.50) ref -> x21 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T26] ( 5, 15 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T72] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0x9C] -; V07 loc3 [V07,T06] ( 12, 62 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x9C] +; V07 loc3 [V07,T06] ( 15, 62 ) int -> x28
; V08 loc4 [V08,T25] ( 5, 18 ) ubyte -> [fp+0x98] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T08] ( 7, 48 ) int -> [fp+0x94] @@ -225,8 +225,8 @@ ; V214 cse3 [V214,T78] ( 3, 6 ) int -> x1 "CSE - conservative" ; V215 cse4 [V215,T79] ( 3, 6 ) int -> x1 "CSE - conservative" ; V216 cse5 [V216,T91] ( 3, 1.50) int -> x2 "CSE - conservative"
-; V217 cse6 [V217,T02] ( 18,142 ) int -> x26 "CSE - aggressive" -; V218 cse7 [V218,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V217 cse6 [V217,T03] ( 19,126.16) int -> x26 "CSE - aggressive" +; V218 cse7 [V218,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V219 cse8 [V219,T07] ( 21, 58 ) int -> x26 "CSE - aggressive" ; V220 cse9 [V220,T05] ( 35, 65.50) ref -> registers multi-def "CSE - aggressive" ; V221 cse10 [V221,T13] ( 11, 29 ) byref -> [fp+0x18] multi-def "CSE - aggressive" @@ -253,7 +253,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG82
+ cbz x20, G_M36935_IG85
cbnz x21, G_M36935_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref @@ -293,7 +293,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcrRegs -[x0] ldr w26, [x20, #0x08] cmp w26, w25
- bls G_M36935_IG77
+ bls G_M36935_IG80
;; size=12 bbWeight=8 PerfScore 36.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz add x27, x20, #12 @@ -342,10 +342,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ; gcr arg pop 0 sxtw w2, w0 str w2, [fp, #0x90] // [V15 loc11]
- tbnz w2, #31, G_M36935_IG78
+ tbnz w2, #31, G_M36935_IG81
ldr w3, [fp, #0x68] // [V154 tmp133] cmp w2, w3
- bhi G_M36935_IG89
+ bhi G_M36935_IG92
ldr w0, [x19, #0x08] ldr w1, [x19, #0x18] sub w1, w1, w2 @@ -375,7 +375,7 @@ G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w1, [x19, #0x08] ldr w4, [x0, #0x08] cmp w1, w4
- bhi G_M36935_IG89
+ bhi G_M36935_IG92
ldr x0, [x0] ubfiz x5, x1, #1, #32 add x5, x0, x5 @@ -410,7 +410,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=00000000000000000000000020002000 {V70 G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480020 {x5 x19 x22 x27 x28}, byref, isz ldr w4, [fp, #0x80] // [V69 tmp48] cmp w2, w4
- bhi G_M36935_IG90
+ bhi G_M36935_IG93
mov w0, w2 lsl x2, x0, #1 mov x0, x5 @@ -431,11 +431,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 str w0, [x19, #0x08] add w25, w25, w28 cmp w25, w26
- bhs G_M36935_IG81
+ bhs G_M36935_IG84
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M36935_IG18 @@ -483,7 +483,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V22 ; byrRegs +[x27] ; GC ptr vars +{V13 V221} cmp w28, #123
- bne G_M36935_IG83
+ bne G_M36935_IG86
mov w28, wzr str wzr, [fp, #0x98] // [V08 loc4] str xzr, [fp, #0x20] // [V145 tmp124] @@ -491,7 +491,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V22 str wzr, [fp, #0x6C] // [V146 tmp125] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG81
+ bhs G_M36935_IG84
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 beq G_M36935_IG20 @@ -540,10 +540,10 @@ G_M36935_IG22: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 ldr w2, [fp, #0x9C] // [V06 loc2] sub w6, w2, #48 cmp w6, #10
- bhs G_M36935_IG84
+ bhs G_M36935_IG87
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #125 beq G_M36935_IG24 @@ -554,7 +554,7 @@ G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 G_M36935_IG24: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref ldr x4, [fp, #0x20] // [V145 tmp124] ; byrRegs +[x4]
- b G_M36935_IG41
+ b G_M36935_IG44
;; size=8 bbWeight=2 PerfScore 6.00 G_M36935_IG25: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz ; byrRegs -[x4] @@ -564,7 +564,7 @@ G_M36935_IG25: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 str w6, [fp, #0x94] // [V10 loc6] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] ldr w6, [fp, #0x94] // [V10 loc6] ;; size=36 bbWeight=8 PerfScore 88.00 @@ -583,19 +583,19 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 G_M36935_IG28: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32 beq G_M36935_IG28 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG29: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz cmp w2, #44
- bne G_M36935_IG37
+ bne G_M36935_IG40
;; size=8 bbWeight=2 PerfScore 3.00 G_M36935_IG30: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32 beq G_M36935_IG30 @@ -607,29 +607,28 @@ G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8 str w3, [fp, #0x98] // [V08 loc4] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] ;; size=32 bbWeight=2 PerfScore 16.00 G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz sub w28, w2, #48 cmp w28, #10
- bhs G_M36935_IG84
+ bhs G_M36935_IG87
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88 + tbnz w25, #31, G_M36935_IG37
b G_M36935_IG34
- ;; size=28 bbWeight=2 PerfScore 10.00 -G_M36935_IG33: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=32 bbWeight=2 PerfScore 12.00 +G_M36935_IG33: ; bbWeight=7.92, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
mov w0, #10 madd w2, w28, w0, w2 sub w28, w2, #48 add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85 - ;; size=24 bbWeight=8 PerfScore 40.00 -G_M36935_IG34: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - cmp w25, w26 - bhs G_M36935_IG81
+ bls G_M36935_IG88 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M36935_IG34: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
ldrh w2, [x27, w25, UXTW #2] sub w0, w2, #48 movz w1, #0xD1FFAB1E @@ -637,42 +636,64 @@ G_M36935_IG34: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs= cmp w0, #9 ccmp w28, w1, z, ls blt G_M36935_IG33
- ;; size=36 bbWeight=16 PerfScore 128.00 -G_M36935_IG35: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - cmp w2, #32 - bne G_M36935_IG37 - ;; size=8 bbWeight=2 PerfScore 3.00 -G_M36935_IG36: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=28 bbWeight=15.84 PerfScore 102.96 +G_M36935_IG35: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref + b G_M36935_IG38 + ;; size=4 bbWeight=2 PerfScore 2.00 +G_M36935_IG36: ; bbWeight=0.08, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + mov w0, #10 + madd w2, w28, w0, w2 + sub w28, w2, #48
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG85
+ bls G_M36935_IG88 + ;; size=24 bbWeight=0.08 PerfScore 0.40 +G_M36935_IG37: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + cmp w25, w26 + bhs G_M36935_IG84 + ldrh w2, [x27, w25, UXTW #2] + sub w0, w2, #48 + movz w1, #0xD1FFAB1E + movk w1, #15 LSL #16 + cmp w0, #9 + ccmp w28, w1, z, ls + blt G_M36935_IG36 + ;; size=36 bbWeight=0.16 PerfScore 1.28 +G_M36935_IG38: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + cmp w2, #32 + bne G_M36935_IG40 + ;; size=8 bbWeight=2 PerfScore 3.00 +G_M36935_IG39: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz + add w25, w25, #1 + cmp w26, w25 + bls G_M36935_IG88
ldrh w2, [x27, w25, UXTW #2] cmp w2, #32
- beq G_M36935_IG36
+ beq G_M36935_IG39
...

coreclr_tests.run.windows.arm64.checked.mch

+0 (0.00%) : 300422.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)

@@ -107,7 +107,7 @@ G_M12781_IG07: ; bbWeight=120, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs -[x21] ubfiz x0, x20, #4, #32 add x0, x0, #16
- add x0, x19, x0
+ add x0, x0, x19
; byrRegs +[x0] ;; size=12 bbWeight=120 PerfScore 240.00 G_M12781_IG08: ; bbWeight=120, nogc, extend

libraries.pmi.windows.arm64.checked.mch

-16 (-12.90%) : 94695.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -8,10 +8,10 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 3, 3 ) ref -> x19 class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> x20 -; V02 loc2 [V02,T01] ( 2, 16 ) int -> x0
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> x20 +; V02 loc2 [V02,T01] ( 2, 15.84) int -> x0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T02] ( 2, 9 ) byref -> x21 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> x21 hoist "CSE - aggressive"
; ; Lcl frame size = 8 @@ -34,7 +34,7 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add x21, x19, #16 ; byrRegs +[x21] ;; size=32 bbWeight=1 PerfScore 4.50
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0] mov w0, w20 movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint @@ -42,13 +42,11 @@ G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- cmp w20, #0xD1FFAB1E - bhs G_M39919_IG06
str w0, [x21, w20, UXTW #2] add w20, w20, #1 cmp w20, #255 bls G_M39919_IG03
- ;; size=48 bbWeight=8 PerfScore 84.00
+ ;; size=40 bbWeight=7.92 PerfScore 71.28
G_M39919_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; byrRegs -[x21] mov x0, x19 @@ -60,13 +58,8 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x30 ret lr ;; size=16 bbWeight=1 PerfScore 5.00
-G_M39919_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0 x19] - bl CORINFO_HELP_RNGCHKFAIL - brk_windows #0 - ;; size=8 bbWeight=0 PerfScore 0.00
-Total bytes of code 124, prolog size 16, PerfScore 97.50, instruction count 31, allocated bytes for code 124 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 108, prolog size 16, PerfScore 84.78, instruction count 27, allocated bytes for code 108 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================ Unwind Info: @@ -77,7 +70,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries_tests.run.windows.arm64.Release.mch

-32 (-0.82%) : 471648.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -10,19 +10,19 @@ ; Final local variable assignments ; ; V00 this [V00,T10] ( 24, 7.31) ref -> x19 this class-hnd single-def <System.Text.StringBuilder>
-; V01 arg1 [V01,T19] ( 13, 3.58) ref -> x21 class-hnd single-def <System.IFormatProvider>
+; V01 arg1 [V01,T18] ( 13, 3.58) ref -> x21 class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T12] ( 5, 6.40) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T39] ( 5, 2.36) ref -> x24 class-hnd single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T02] ( 71, 38.79) int -> x25 ld-addr-op -; V06 loc2 [V06,T05] ( 34, 18.96) ushort -> [fp+0xDC] -; V07 loc3 [V07,T21] ( 12, 5.00) int -> [fp+0xD8]
+; V05 loc1 [V05,T02] ( 66, 38.78) int -> x25 ld-addr-op +; V06 loc2 [V06,T05] ( 33, 18.96) ushort -> [fp+0xDC] +; V07 loc3 [V07,T21] ( 15, 5.00) int -> [fp+0xD8]
; V08 loc4 [V08,T31] ( 5, 3.00) ubyte -> [fp+0xD4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V10 loc6 [V10,T20] ( 7, 5.45) int -> [fp+0xD0]
+; V10 loc6 [V10,T19] ( 7, 5.45) int -> [fp+0xD0]
; V11 loc7 [V11,T16] ( 16, 7.04) ref -> registers class-hnd <System.String>
-; V12 loc8 [V12,T51] ( 8, 1.67) ref -> x28 class-hnd <System.String> -; V13 loc9 [V13,T18] ( 13, 5.66) ref -> [fp+0x68] class-hnd spill-single-def <System.Object>
+; V12 loc8 [V12,T51] ( 8, 1.67) ref -> x27 class-hnd <System.String> +; V13 loc9 [V13,T20] ( 12, 5.06) ref -> [fp+0x68] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T11] ( 12, 9.07) int -> [fp+0xCC] spill-single-def ; V16 loc12 [V16,T28] ( 3, 3.58) ushort -> x2 @@ -151,9 +151,9 @@ ; V139 tmp117 [V139,T61] ( 2, 1.17) ref -> x1 class-hnd "Inlining Arg" <ushort[]> ; V140 tmp118 [V140,T63] ( 2, 1.17) int -> x4 "Inlining Arg" ; V141 tmp119 [V141,T49] ( 3, 1.75) int -> x0 "Inlining Arg"
-; V142 tmp120 [V142,T23] ( 8, 4.73) int -> x27 "Inlining Arg"
+; V142 tmp120 [V142,T23] ( 8, 4.73) int -> x28 "Inlining Arg"
; V143 tmp121 [V143,T76] ( 3, 0.79) ref -> x2 class-hnd "Inline stloc first use temp" <ushort[]>
-; V144 tmp122 [V144,T66] ( 4, 1.04) int -> x28 "Inline stloc first use temp"
+; V144 tmp122 [V144,T66] ( 4, 1.04) int -> x27 "Inline stloc first use temp"
; V145 tmp123 [V145,T43] ( 5, 1.97) byref -> x1 "Inlining Arg" ; V146 tmp124 [V146,T90] ( 4, 0.53) byref -> x0 "Inline stloc first use temp" ;* V147 tmp125 [V147 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -243,9 +243,9 @@ ; V231 cse4 [V231,T71] ( 3, 0.92) int -> x5 "CSE - conservative" ; V232 cse5 [V232,T72] ( 3, 0.92) long -> x5 "CSE - conservative" ; V233 cse6 [V233,T75] ( 3, 0.87) ref -> x0 "CSE - conservative"
-; V234 cse7 [V234,T07] ( 20, 15.09) int -> x27 "CSE - aggressive" -; V235 cse8 [V235,T08] ( 17, 12.56) byref -> x28 "CSE - aggressive" -; V236 cse9 [V236,T95] ( 2, 0.13) ref -> x28 "CSE - moderate"
+; V234 cse7 [V234,T07] ( 19, 14.52) int -> x27 "CSE - aggressive" +; V235 cse8 [V235,T08] ( 16, 12.56) byref -> x28 "CSE - aggressive" +; V236 cse9 [V236,T95] ( 2, 0.13) ref -> x27 "CSE - moderate"
; V237 cse10 [V237,T29] ( 3, 3.55) int -> x0 "CSE - moderate" ; V238 rat0 [V238,T15] ( 5, 7.19) ref -> x24 class-hnd "replacement local" <System.ICustomFormatter> ; V239 rat1 [V239,T13] ( 6, 7.34) ref -> x0 class-hnd "replacement local" <System.ISpanFormattable> @@ -273,7 +273,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=52 bbWeight=1 PerfScore 10.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x20, G_M4730_IG148
+ cbz x20, G_M4730_IG145
cbnz x21, G_M4730_IG18 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.71, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -305,7 +305,7 @@ G_M4730_IG06: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg G_M4730_IG07: ; bbWeight=2.20, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz ldr w27, [x20, #0x08] cmp w27, w25
- bls G_M4730_IG98
+ bls G_M4730_IG95
;; size=12 bbWeight=2.20 PerfScore 9.89 G_M4730_IG08: ; bbWeight=1.20, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz add x28, x20, #12 @@ -347,12 +347,12 @@ G_M4730_IG08: ; bbWeight=1.20, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0xCC] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG137
+ tbnz w1, #31, G_M4730_IG134
;; size=116 bbWeight=1.20 PerfScore 32.40 G_M4730_IG09: ; bbWeight=1.20, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz ldr w2, [fp, #0x7C] // [V163 tmp141] cmp w1, w2
- bhi G_M4730_IG145
+ bhi G_M4730_IG142
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -416,10 +416,10 @@ G_M4730_IG15: ; bbWeight=0.10, gcrefRegs=380002 {x1 x19 x20 x21}, byrefRe ; gcrRegs +[x24] b G_M4730_IG06 ;; size=24 bbWeight=0.10 PerfScore 0.38
-G_M4730_IG16: ; bbWeight=0.29, gcVars=00000000000000100004000000040000 {V13 V152 V186}, gcrefRegs=15380008 {x3 x19 x20 x21 x24 x26 x28}, byrefRegs=400010 {x4 x22}, gcvars, byref, isz - ; gcrRegs -[x0] +[x3 x26 x28]
+G_M4730_IG16: ; bbWeight=0.29, gcVars=00000000000000100004000000100000 {V13 V152 V186}, gcrefRegs=D380008 {x3 x19 x20 x21 x24 x26 x27}, byrefRegs=400010 {x4 x22}, gcvars, byref, isz + ; gcrRegs -[x0] +[x3 x26-x27]
; byrRegs +[x4]
- ; GC ptr vars +{V13 V18 V68 V152 V186}
+ ; GC ptr vars +{V13 V20 V68 V152 V186}
str w8, [fp, #0x84] // [V153 tmp131] str x4, [fp, #0x10] // [V210 tmp188] ; GC ptr vars +{V210} @@ -430,7 +430,7 @@ G_M4730_IG16: ; bbWeight=0.29, gcVars=00000000000000100004000000040000 {V movk x4, #0xD1FFAB1E LSL #16 movk x4, #0xD1FFAB1E LSL #32 ldr x4, [x4]
- ; GC ptr vars -{V18 V68 V186}
+ ; GC ptr vars -{V20 V68 V186}
blr x4 ; gcrRegs -[x3] ; gcr arg pop 0 @@ -446,13 +446,13 @@ G_M4730_IG16: ; bbWeight=0.29, gcVars=00000000000000100004000000040000 {V asr x9, x5, #32 ldr w5, [fp, #0x74] // [V211 tmp189] cmp w9, w5
- bgt G_M4730_IG112
+ bgt G_M4730_IG109
;; size=88 bbWeight=0.29 PerfScore 6.61
-G_M4730_IG17: ; bbWeight=0.29, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, byref
+G_M4730_IG17: ; bbWeight=0.29, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, byref
b G_M4730_IG21 ;; size=4 bbWeight=0.29 PerfScore 0.29 G_M4730_IG18: ; bbWeight=0.29, gcVars=00000000000000000000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; gcrRegs -[x24 x26 x28]
+ ; gcrRegs -[x24 x26-x27]
; GC ptr vars -{V13 V152 V210} ldr x0, [x21] movz x11, #0xD1FFAB1E @@ -470,34 +470,34 @@ G_M4730_IG20: ; bbWeight=0.29, gcrefRegs=1380000 {x19 x20 x21 x24}, byref ; gcrRegs +[x1] b G_M4730_IG04 ;; size=8 bbWeight=0.29 PerfScore 0.44
-G_M4730_IG21: ; bbWeight=0.29, gcVars=00000000000002000004000000040000 {V13 V152 V210}, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs -[x1] +[x26 x28] - ; GC ptr vars +{V13 V18 V73 V152 V210}
+G_M4730_IG21: ; bbWeight=0.29, gcVars=00000000000002000004000000100000 {V13 V152 V210}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; gcrRegs -[x1] +[x26-x27] + ; GC ptr vars +{V13 V20 V73 V152 V210}
str w9, [fp, #0xC0] // [V19 loc15] ldr x2, [fp, #0x10] // [V210 tmp188] ; byrRegs +[x2] stp x2, x2, [fp, #0x98] // [V106 tmp84], [V105 tmp83] sbfiz x0, x9, #1, #32
- add x4, x2, x0 - str x4, [fp, #0x88] // [V120 tmp98]
+ add x3, x2, x0 + str x3, [fp, #0x88] // [V120 tmp98]
ldr w8, [fp, #0xB0] // [V80 tmp58] str w8, [fp, #0x94] // [V119 tmp97] mov w0, #1
- movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3] - ; GC ptr vars -{V18 V73 V210} - blr x3
+ movz x5, #0xD1FFAB1E // code for <unknown method> + movk x5, #0xD1FFAB1E LSL #16 + movk x5, #0xD1FFAB1E LSL #32 + ldr x5, [x5] + ; GC ptr vars -{V20 V73 V210} + blr x5
; byrRegs -[x2] ; gcr arg pop 0 ldr w1, [fp, #0x94] // [V119 tmp97] cmp w1, #10
- blo G_M4730_IG91
+ blo G_M4730_IG88
b G_M4730_IG23 ;; size=72 bbWeight=0.29 PerfScore 5.86 G_M4730_IG22: ; bbWeight=0.01, gcVars=00000000000000000000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs -[x24 x26 x28]
+ ; gcrRegs -[x24 x26-x27]
; GC ptr vars -{V13 V152} mov x0, x21 ; gcrRegs +[x0] @@ -514,17 +514,17 @@ G_M4730_IG22: ; bbWeight=0.01, gcVars=00000000000000000000000000000000 {} ; gcrRegs +[x24] b G_M4730_IG20 ;; size=44 bbWeight=0.01 PerfScore 0.11
-G_M4730_IG23: ; bbWeight=1.17, gcVars=00000000000000000004000000040000 {V13 V152}, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, gcvars, byref, isz - ; gcrRegs -[x0] +[x26 x28] - ; GC ptr vars +{V13 V18 V152}
+G_M4730_IG23: ; bbWeight=1.17, gcVars=00000000000000000004000000100000 {V13 V152}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz + ; gcrRegs -[x0] +[x26-x27] + ; GC ptr vars +{V13 V20 V152}
cmp w1, #100
- blo G_M4730_IG76
+ blo G_M4730_IG73
b G_M4730_IG32 ;; size=12 bbWeight=1.17 PerfScore 2.93 G_M4730_IG24: ; bbWeight=0.27, gcVars=00000000000000000000000100000000 {V162}, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400001 {x0 x22 x28}, gcvars, byref
- ; gcrRegs -[x28]
+ ; gcrRegs -[x27]
; byrRegs +[x0 x28]
- ; GC ptr vars -{V13 V18 V152} +{V162}
+ ; GC ptr vars -{V13 V20 V152} +{V162}
ldr x5, [fp, #0x28] // [V162 tmp140] ; byrRegs +[x5] sxtw x2, w3 @@ -569,18 +569,18 @@ G_M4730_IG26: ; bbWeight=0.06, gcVars=00000000000000000000000100000000 {V G_M4730_IG27: ; bbWeight=1.20, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz add w25, w25, w3 cmp w25, w27
- bhs G_M4730_IG147
+ bhs G_M4730_IG144
ldrh w2, [x28, w25, UXTW #2] add w25, w25, #1 cmp w27, w25
- bls G_M4730_IG141
+ bls G_M4730_IG138
ldrh w3, [x28, w25, UXTW #2] cmp w2, w3
- beq G_M4730_IG56
+ beq G_M4730_IG53
;; size=40 bbWeight=1.20 PerfScore 13.78 G_M4730_IG28: ; bbWeight=1.18, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz cmp w2, #123
- bne G_M4730_IG139
+ bne G_M4730_IG136
stp wzr, w3, [fp, #0xD8] // [V07 loc3], [V06 loc2] str wzr, [fp, #0xD4] // [V08 loc4] str xzr, [fp, #0x38] // [V152 tmp130] @@ -588,7 +588,7 @@ G_M4730_IG28: ; bbWeight=1.18, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str wzr, [fp, #0x84] // [V153 tmp131] sub w0, w25, #1 cmp w0, w27
- bhs G_M4730_IG147
+ bhs G_M4730_IG144
ldrh w0, [x28, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -610,10 +610,10 @@ G_M4730_IG28: ; bbWeight=1.18, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b ldr w1, [fp, #0xDC] // [V06 loc2] sub w2, w1, #48 cmp w2, #10
- bhs G_M4730_IG140
+ bhs G_M4730_IG137
add w25, w25, #1 cmp w27, w25
- bls G_M4730_IG141
+ bls G_M4730_IG138
ldrh w1, [x28, w25, UXTW #2] cmp w1, #125 beq G_M4730_IG31 @@ -633,19 +633,19 @@ G_M4730_IG30: ; bbWeight=0.01, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b str w2, [fp, #0xD0] // [V10 loc6] add w25, w25, #1 cmp w27, w25
- bls G_M4730_IG141
+ bls G_M4730_IG138
ldrh w1, [x28, w25, UXTW #2] ldr w2, [fp, #0xD0] // [V10 loc6] ...

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

+12 (+0.82%) : 135326.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -8,54 +8,54 @@ ; 16 inlinees with PGO data; 46 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T32] ( 3, 5.98) ref -> x19 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T24] ( 4, 10.14) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T31] ( 3, 5.98) ref -> x19 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T14] ( 7, 22.11) ref -> x20 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T09] ( 7, 24.76) int -> x0 ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T37] ( 7, 3 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T38] ( 5, 2 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.26) int -> x19
+; V04 loc4 [V04,T36] ( 7, 3 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T37] ( 5, 2 ) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.97) int -> x19
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T30] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T25] ( 5, 10.06) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T33] ( 2, 4.06) int -> x19 "Inlining Arg" -; V11 tmp4 [V11,T31] ( 3, 6.09) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T29] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T24] ( 5, 10.06) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T32] ( 2, 4.06) int -> x19 "Inlining Arg" +; V11 tmp4 [V11,T30] ( 3, 6.09) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T36] ( 3, 3.05) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T26] ( 4, 8.12) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T27] ( 4, 8.12) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T15] ( 2, 16.24) int -> x25 "Inlining Arg" -; V17 tmp10 [V17,T10] ( 3, 24.36) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T35] ( 3, 3.05) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T25] ( 4, 8.12) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T26] ( 4, 8.12) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T16] ( 2, 16.08) int -> x25 "Inlining Arg" +; V17 tmp10 [V17,T11] ( 3, 24.12) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T18] ( 3, 12.18) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.48) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.48) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T19] ( 3, 12.06) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 32.16) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 32.16) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T16] ( 2, 16.24) int -> x25 "Inlining Arg" -; V24 tmp17 [V24,T11] ( 3, 24.36) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T17] ( 2, 16.08) int -> x25 "Inlining Arg" +; V24 tmp17 [V24,T12] ( 3, 24.12) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T19] ( 3, 12.18) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.48) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.48) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T20] ( 3, 12.06) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 32.16) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 32.16) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T17] ( 2, 16.24) ushort -> x25 "Inlining Arg" -; V34 tmp27 [V34,T12] ( 3, 24.36) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T18] ( 2, 16.08) ushort -> x25 "Inlining Arg" +; V34 tmp27 [V34,T13] ( 3, 24.12) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T20] ( 3, 12.18) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.48) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.48) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T21] ( 3, 12.06) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 32.16) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 32.16) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T34] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T28] ( 3, 8.12) ubyte -> x25 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T33] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T27] ( 3, 8.04) ubyte -> x25 "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T35] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T29] ( 2, 8.12) ubyte -> x0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T34] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T28] ( 3, 8.04) ubyte -> x22 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,14 +64,13 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> x1 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T40] ( 6, 0 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T39] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T13] ( 5, 20.30) byref -> x22 "CSE - aggressive" -; V59 cse1 [V59,T21] ( 3, 12.18) long -> x22 "CSE - moderate" -; V60 cse2 [V60,T08] ( 9, 27.41) long -> x24 "CSE - aggressive" -; V61 cse3 [V61,T14] ( 7, 19.29) long -> x21 "CSE - aggressive" -; V62 cse4 [V62,T23] ( 4, 10.15) long -> x23 "CSE - moderate" -; V63 cse5 [V63,T22] ( 3, 11.88) int -> x2 "CSE - moderate"
+; V56 tmp49 [V56,T39] ( 6, 0 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T38] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T10] ( 6, 24.12) long -> x22 "CSE - aggressive" +; V59 cse1 [V59,T08] ( 9, 27.16) long -> x24 "CSE - aggressive" +; V60 cse2 [V60,T15] ( 7, 19.12) long -> x21 "CSE - aggressive" +; V61 cse3 [V61,T23] ( 4, 10.07) long -> x23 "CSE - moderate" +; V62 cse4 [V62,T22] ( 3, 11.88) int -> x2 "CSE - moderate"
; ; Lcl frame size = 32 @@ -146,7 +145,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { str x21, [fp, #0x18] // [V04 loc4] ; GC ptr vars +{V04} ;; size=48 bbWeight=1 PerfScore 10.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000002000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000001000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 @@ -170,7 +169,7 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000002000000000 {V04}, gcrefRegs=380 str x22, [fp, #0x10] // [V05 loc5] ; GC ptr vars +{V05} ;; size=60 bbWeight=1 PerfScore 11.50
-G_M53770_IG06: ; bbWeight=1.02, gcVars=0000006000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1.02, gcVars=0000003000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
mov x0, x22 ; gcrRegs +[x0] mov x2, x19 @@ -287,7 +286,7 @@ G_M53770_IG06: ; bbWeight=1.02, gcVars=0000006000000000 {V04 V05}, gcrefR ; gcr arg pop 0 mov w19, wzr ;; size=288 bbWeight=1.02 PerfScore 53.80
-G_M53770_IG07: ; bbWeight=4.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG07: ; bbWeight=4.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ubfiz x0, x19, #4, #32 add x22, x0, #16 ldr w25, [x20, x22] @@ -367,10 +366,11 @@ G_M53770_IG07: ; bbWeight=4.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x26] ; gcr arg pop 0
- add x22, x20, x22 - ; byrRegs +[x22] - ldr w25, [x22, #0x08]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldr w25, [x0, #0x08]
mov x0, x21
+ ; byrRegs -[x0]
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -446,10 +446,14 @@ G_M53770_IG07: ; bbWeight=4.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x26] ; gcr arg pop 0
- ldrb w25, [x22, #0x04]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldrb w25, [x0, #0x04]
cbnz w25, G_M53770_IG10
- ldrh w25, [x22, #0x0C]
+ add x0, x20, x22 + ldrh w25, [x0, #0x0C]
movz x0, #0xD1FFAB1E
+ ; byrRegs -[x0]
movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST @@ -532,15 +536,17 @@ G_M53770_IG07: ; bbWeight=4.06, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x2 x26] ; gcr arg pop 0
- ldrb w0, [x22, #0x0E] - cbz w0, G_M53770_IG11 - ;; size=560 bbWeight=4.06 PerfScore 475.07 -G_M53770_IG08: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x22]
+ add x0, x20, x22 + ; byrRegs +[x0] + ldrb w22, [x0, #0x0E] + cbz w22, G_M53770_IG11 + ;; size=572 bbWeight=4.02 PerfScore 476.35 +G_M53770_IG08: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[x0]
add w19, w19, #1 cmp w19, #12 blt G_M53770_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
+ ;; size=12 bbWeight=3.96 PerfScore 7.92
G_M53770_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20] b G_M53770_IG12 @@ -565,7 +571,7 @@ G_M53770_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M53770_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov w1, #1 strb w1, [fp, #0x20] // [V56 tmp49]
- strb wzr, [fp, #0x21] // [V56 tmp49+0x01]
+ strb w22, [fp, #0x21] // [V56 tmp49+0x01]
ldrh w1, [fp, #0x20] // [V56 tmp49] mov x0, xzr movz x2, #0xD1FFAB1E // code for <unknown method> @@ -620,8 +626,8 @@ G_M53770_IG14: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x80 ret lr ;; size=28 bbWeight=1 PerfScore 7.00
-G_M53770_IG15: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V05 V37 V38}
+G_M53770_IG15: ; bbWeight=0, gcVars=0000003000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V05 V36 V37}
stp fp, lr, [sp, #-0x70]! stp x19, x20, [sp, #0x20] stp x21, x22, [sp, #0x30] @@ -631,11 +637,11 @@ G_M53770_IG15: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs add x3, fp, #128 str x3, [sp, #0x18] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M53770_IG16: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG16: ; bbWeight=0, gcVars=0000003000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x10] // [V05 loc5] ; gcrRegs +[x0] strb wzr, [x0, #0x24]
- ; GC ptr vars -{V05 V37 V38}
+ ; GC ptr vars -{V05 V36 V37}
bl <unknown method> ; gcrRegs -[x0] ; gcr arg pop 0 @@ -659,7 +665,7 @@ G_M53770_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x3, fp, #128 str x3, [sp, #0x18] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M53770_IG19: ; bbWeight=0, gcVars=0000002000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG19: ; bbWeight=0, gcVars=0000001000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V04 loc4] ; gcrRegs +[x0] mov w1, #1 @@ -691,7 +697,7 @@ G_M53770_IG20: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-Total bytes of code 1472, prolog size 36, PerfScore 638.47, instruction count 368, allocated bytes for code 1472 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
+Total bytes of code 1484, prolog size 36, PerfScore 639.67, instruction count 371, allocated bytes for code 1484 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
; ============================================================ Unwind Info: @@ -702,7 +708,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 323 (0x00143) Actual length = 1292 (0x00050c)
+ Function Length : 326 (0x00146) Actual length = 1304 (0x000518)
---- Epilog scopes ---- ...

realworld.run.windows.arm64.checked.mch

+72 (+2.29%) : 2344.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 25 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> x19 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> x19 this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> x21 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T25] ( 5, 15 ) ref -> x20 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T71] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61,455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [fp+0xAC] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [fp+0xA8]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0xAC] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [fp+0xA8]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [fp+0xA4] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [fp+0xA0] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T09] ( 10, 38 ) int -> [fp+0x9C] spill-single-def ; V16 loc12 [V16,T44] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T36] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T36] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T39] ( 3, 12 ) ref -> [fp+0x60] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [fp+0x90] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T74] ( 3, 6 ) ref -> [fp+0x58] class-hnd spill-single-def <<unknown class>> @@ -203,8 +203,8 @@ ; V192 cse3 [V192,T77] ( 3, 6 ) int -> x1 "CSE - conservative" ; V193 cse4 [V193,T78] ( 3, 6 ) int -> x1 "CSE - conservative" ; V194 cse5 [V194,T90] ( 3, 1.50) int -> x2 "CSE - conservative"
-; V195 cse6 [V195,T02] ( 18,142 ) int -> x26 "CSE - aggressive" -; V196 cse7 [V196,T04] ( 15,120 ) byref -> x27 "CSE - aggressive"
+; V195 cse6 [V195,T03] ( 19,126.16) int -> x26 "CSE - aggressive" +; V196 cse7 [V196,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V197 cse8 [V197,T06] ( 21, 58 ) int -> x27 "CSE - aggressive" ; V198 cse9 [V198,T12] ( 11, 29 ) byref -> [fp+0x18] multi-def "CSE - aggressive" ; V199 cse10 [V199,T50] ( 3, 12 ) int -> x0 "CSE - moderate" @@ -230,7 +230,7 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M36935_IG02: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
- cbz x20, G_M36935_IG62
+ cbz x20, G_M36935_IG66
cbnz x21, G_M36935_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M36935_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref @@ -270,7 +270,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcrRegs -[x0] ldr w26, [x20, #0x08] cmp w26, w25
- bls G_M36935_IG58
+ bls G_M36935_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz add x27, x20, #12 @@ -304,10 +304,10 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4 ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x9C] // [V15 loc11]
- tbnz w1, #31, G_M36935_IG59
+ tbnz w1, #31, G_M36935_IG63
ldr w2, [fp, #0x70] // [V132 tmp111] cmp w1, w2
- bhi G_M36935_IG69
+ bhi G_M36935_IG73
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -346,7 +346,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w3, [x19, #0x08] ldr w4, [x0, #0x08] cmp w3, w4
- bhi G_M36935_IG69
+ bhi G_M36935_IG73
ldr x0, [x0] ubfiz x5, x3, #1, #32 add x5, x0, x5 @@ -368,7 +368,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 ldr w3, [fp, #0x9C] // [V15 loc11] ldr w2, [fp, #0x88] // [V63 tmp42] cmp w3, w2
- bhi G_M36935_IG70
+ bhi G_M36935_IG74
mov w2, w3 lsl x2, x2, #1 ldr x0, [fp, #0x50] // [V64 tmp43] @@ -389,11 +389,11 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1 str w0, [x19, #0x08] add w25, w25, w28 cmp w25, w26
- bhs G_M36935_IG61
+ bhs G_M36935_IG65
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65
+ bls G_M36935_IG69
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M36935_IG13 @@ -433,7 +433,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 ; byrRegs +[x27] ; GC ptr vars +{V12 V198} cmp w28, #123
- bne G_M36935_IG63
+ bne G_M36935_IG67
str w2, [fp, #0xAC] // [V06 loc2] mov w28, wzr str wzr, [fp, #0xA4] // [V08 loc4] @@ -442,7 +442,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 str wzr, [fp, #0x74] // [V124 tmp103] sub w0, w25, #1 cmp w0, w26
- bhs G_M36935_IG61
+ bhs G_M36935_IG65
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -462,188 +462,212 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V19 ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0xAC] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M36935_IG64
+ ldr w1, [fp, #0xAC] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M36935_IG68
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M36935_IG15 ;; size=144 bbWeight=4 PerfScore 146.00 G_M36935_IG14: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref b G_M36935_IG17 ;; size=4 bbWeight=2 PerfScore 2.00 G_M36935_IG15: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
- str w1, [fp, #0xA0] // [V10 loc6] - b G_M36935_IG32
+ str w2, [fp, #0xA0] // [V10 loc6] + b G_M36935_IG36
;; size=8 bbWeight=2 PerfScore 4.00 G_M36935_IG16: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0xA0] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0xA0] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0xA0] // [V10 loc6]
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0xA0] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M36935_IG17: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M36935_IG16 ;; size=24 bbWeight=16 PerfScore 56.00 G_M36935_IG18: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M36935_IG20 ;; size=8 bbWeight=2 PerfScore 3.00 G_M36935_IG19: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M36935_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG20: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M36935_IG28
+ cmp w1, #44 + mov w3, w1 + bne G_M36935_IG24
;; size=12 bbWeight=2 PerfScore 4.00 G_M36935_IG21: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M36935_IG21 ;; size=24 bbWeight=16 PerfScore 104.00 G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M36935_IG23
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M36935_IG69 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0xA4] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M36935_IG64
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M36935_IG68
add w25, w25, #1 cmp w26, w25
- bls G_M36935_IG65 - b G_M36935_IG25 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0xA8] // [V07 loc3]
+ bls G_M36935_IG69
...

+72 (+2.66%) : 2117.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T32] ( 5, 15 ) ref -> x21 class-hnd single-def <System.String> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T61] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 61, 455 ) int -> x25 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [fp+0x6C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [fp+0x68]
+; V05 loc1 [V05,T02] ( 66, 441.16) int -> x25 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [fp+0x6C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [fp+0x68]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [fp+0x64] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [fp+0x60] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T20] ( 6, 24 ) int -> [fp+0x5C] spill-single-def ; V16 loc12 [V16,T46] ( 3, 12 ) ushort -> x28
-; V17 loc13 [V17,T43] ( 6, 12 ) int -> x3
+; V17 loc13 [V17,T43] ( 6, 12 ) int -> x4
; V18 loc14 [V18,T44] ( 3, 12 ) ref -> x0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [fp+0x28] class-hnd spill-single-def <<unknown class>> @@ -160,8 +160,8 @@ ; V149 cse3 [V149,T45] ( 3, 12 ) ref -> x4 "CSE - moderate" ; V150 cse4 [V150,T47] ( 3, 12 ) int -> x1 "CSE - moderate" ; V151 cse5 [V151,T03] ( 6, 416 ) int -> [fp+0x3C] spill-single-def "CSE - aggressive"
-; V152 cse6 [V152,T11] ( 18, 142 ) int -> x26 "CSE - aggressive" -; V153 cse7 [V153,T12] ( 15, 120 ) byref -> x27 "CSE - aggressive"
+; V152 cse6 [V152,T11] ( 19, 126.16) int -> x26 "CSE - aggressive" +; V153 cse7 [V153,T12] ( 16, 120 ) byref -> x27 "CSE - aggressive"
; V154 cse8 [V154,T48] ( 3, 12 ) int -> x0 "CSE - moderate" ; ; Lcl frame size = 96 @@ -185,7 +185,7 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov w23, w4 ;; size=48 bbWeight=1 PerfScore 9.00 G_M4730_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
- cbz x21, G_M4730_IG63
+ cbz x21, G_M4730_IG67
cbnz x20, G_M4730_IG04 ;; size=8 bbWeight=1 PerfScore 2.00 G_M4730_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref @@ -225,7 +225,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcrRegs -[x0] ldr w26, [x21, #0x08] cmp w26, w25
- bls G_M4730_IG58
+ bls G_M4730_IG62
;; size=12 bbWeight=8 PerfScore 36.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz add x27, x21, #12 @@ -259,10 +259,10 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ; gcr arg pop 0 sxtw w1, w0 str w1, [fp, #0x5C] // [V15 loc11]
- tbnz w1, #31, G_M4730_IG60
+ tbnz w1, #31, G_M4730_IG64
ldr w2, [fp, #0x40] // [V100 tmp78] cmp w1, w2
- bhi G_M4730_IG74
+ bhi G_M4730_IG78
cmp w1, #0 cset x0, ge movz x2, #0xD1FFAB1E // code for <unknown method> @@ -287,11 +287,11 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr w28, [fp, #0x5C] // [V15 loc11] add w25, w25, w28 cmp w25, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w28, [x27, w25, UXTW #2] add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66
+ bls G_M4730_IG70
ldrh w2, [x27, w25, UXTW #2] cmp w28, w2 bne G_M4730_IG11 @@ -333,7 +333,7 @@ G_M4730_IG10: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz ; byrRegs +[x27] cmp w28, #123
- bne G_M4730_IG64
+ bne G_M4730_IG68
str w2, [fp, #0x6C] // [V06 loc2] mov w28, wzr str wzr, [fp, #0x64] // [V08 loc4] @@ -342,7 +342,7 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg str wzr, [fp, #0x44] // [V90 tmp68] sub w0, w25, #1 cmp w0, w26
- bhs G_M4730_IG62
+ bhs G_M4730_IG66
ldrh w0, [x27, w0, UXTW #2] cmp w0, #123 cset x0, eq @@ -361,188 +361,212 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg ldr x2, [x2] blr x2 ; gcr arg pop 0
- ldr w0, [fp, #0x6C] // [V06 loc2] - sub w1, w0, #48 - cmp w1, #10 - bhs G_M4730_IG65
+ ldr w1, [fp, #0x6C] // [V06 loc2] + sub w2, w1, #48 + cmp w2, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #125
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #125
beq G_M4730_IG13 ;; size=144 bbWeight=4 PerfScore 146.00 G_M4730_IG12: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref b G_M4730_IG15 ;; size=4 bbWeight=2 PerfScore 2.00 G_M4730_IG13: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- str w1, [fp, #0x60] // [V10 loc6] - b G_M4730_IG30
+ str w2, [fp, #0x60] // [V10 loc6] + b G_M4730_IG34
;; size=8 bbWeight=2 PerfScore 4.00 G_M4730_IG14: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- mov w2, #10 - madd w1, w1, w2, w0 - sub w1, w1, #48 - str w1, [fp, #0x60] // [V10 loc6]
+ mov w0, #10 + madd w2, w2, w0, w1 + sub w2, w2, #48 + str w2, [fp, #0x60] // [V10 loc6]
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - ldr w1, [fp, #0x60] // [V10 loc6]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + ldr w2, [fp, #0x60] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00 G_M4730_IG15: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w2, w0, #48
+ sub w0, w1, #48
movz w3, #0xD1FFAB1E movk w3, #15 LSL #16
- cmp w2, #9 - ccmp w1, w3, z, ls
+ cmp w0, #9 + ccmp w2, w3, z, ls
blt G_M4730_IG14 ;; size=24 bbWeight=16 PerfScore 56.00 G_M4730_IG16: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #32
+ cmp w1, #32
bne G_M4730_IG18 ;; size=8 bbWeight=2 PerfScore 3.00 G_M4730_IG17: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG17 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #44 - mov w2, w28 - bne G_M4730_IG26
+ cmp w1, #44 + mov w3, w1 + bne G_M4730_IG22
;; size=12 bbWeight=2 PerfScore 4.00 G_M4730_IG19: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2] - cmp w0, #32
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2] + cmp w1, #32
beq G_M4730_IG19 ;; size=24 bbWeight=16 PerfScore 104.00 G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w0, #45
+ cmp w1, #45
bne G_M4730_IG21
- mov w0, #1 - sxtw w28, w0
+ mov w1, #1 + sxtw w28, w1
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - ldrh w0, [x27, w25, UXTW #2]
+ bls G_M4730_IG70 + ldrh w1, [x27, w25, UXTW #2]
str w28, [fp, #0x64] // [V08 loc4] ;; size=36 bbWeight=2 PerfScore 17.00 G_M4730_IG21: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- sub w0, w0, #48 - sxtw w2, w0 - cmp w2, #10 - bhs G_M4730_IG65
+ sub w1, w1, #48 + cmp w1, #10 + bhs G_M4730_IG69
add w25, w25, #1 cmp w26, w25
- bls G_M4730_IG66 - b G_M4730_IG23 - ;; size=32 bbWeight=2 PerfScore 11.00 -G_M4730_IG22: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - mov w3, #10 - madd w2, w2, w3, w0 - sub w2, w2, #48 - str w2, [fp, #0x68] // [V07 loc3]
+ bls G_M4730_IG70 + tbnz w25, #31, G_M4730_IG27 + b G_M4730_IG24 + ;; size=32 bbWeight=2 PerfScore 12.00 +G_M4730_IG22: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref + mov w1, w28 + b G_M4730_IG30 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M4730_IG23: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz + mov w0, #10 + madd w1, w1, w0, w3 + sub w1, w1, #48
add w25, w25, #1 cmp w26, w25
- ldr w2, [fp, #0x68] // [V07 loc3] - bls G_M4730_IG66 - ;; size=32 bbWeight=8 PerfScore 64.00 -G_M4730_IG23: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz - cmp w25, w26 - bhs G_M4730_IG62
+ bls G_M4730_IG70 + ;; size=24 bbWeight=7.92 PerfScore 39.60 +G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
ldrh w0, [x27, w25, UXTW #2]
- sub w3, w0, #48
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 2 0 2 0 -0 +144
benchmarks.run_pgo.windows.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.windows.arm64.checked.mch 1 0 1 0 -0 +64
coreclr_tests.run.windows.arm64.checked.mch 157 0 156 1 -0 +14,168
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 2 1 1 0 -16 +268
libraries_tests.run.windows.arm64.Release.mch 221 1 220 0 -32 +22,184
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 1 0 1 0 -0 +12
realworld.run.windows.arm64.checked.mch 2 0 2 0 -0 +144
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
386 2 383 1 -48 +36,984

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,453 4 24,449 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch 97,527 48,627 48,900 13 (0.01%) 13 (0.01%)
benchmarks.run_tiered.windows.arm64.checked.mch 49,174 36,718 12,456 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 595,170 362,437 232,733 11 (0.00%) 12 (0.00%)
libraries.crossgen2.windows.arm64.checked.mch 2,130 0 2,130 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 305,514 6 305,508 3 (0.00%) 6 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 646,533 468,460 178,073 107 (0.02%) 107 (0.02%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 317,021 21,598 295,423 4 (0.00%) 4 (0.00%)
realworld.run.windows.arm64.checked.mch 33,241 3 33,238 1 (0.00%) 1 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch 77 0 77 0 (0.00%) 0 (0.00%)
2,070,840 937,853 1,132,987 139 (0.01%) 143 (0.01%)

jit-analyze output

benchmarks.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10965692 (overridden on cmd)
Total bytes of diff: 10965836 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


benchmarks.run_tiered.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15506140 (overridden on cmd)
Total bytes of diff: 15506204 (overridden on cmd)
Total bytes of delta: 64 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


coreclr_tests.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 496297948 (overridden on cmd)
Total bytes of diff: 496312116 (overridden on cmd)
Total bytes of delta: 14168 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.pmi.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79832212 (overridden on cmd)
Total bytes of diff: 79832464 (overridden on cmd)
Total bytes of delta: 252 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


libraries_tests.run.windows.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 326696628 (overridden on cmd)
Total bytes of diff: 326718780 (overridden on cmd)
Total bytes of delta: 22152 (0.01 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.run.windows.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 171564392 (overridden on cmd)
Total bytes of diff: 171564404 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


realworld.run.windows.arm64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15891320 (overridden on cmd)
Total bytes of diff: 15891464 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



windows x64

Diffs are based on 2,098,518 contexts (926,221 MinOpts, 1,172,297 FullOpts).

MISSED contexts: base: 138 (0.01%), diff: 140 (0.01%)

Overall (+33,203 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x64.checked.mch 8,736,891 +119
benchmarks.run_pgo.windows.x64.checked.mch 35,778,033 +710
coreclr_tests.run.windows.x64.checked.mch 392,964,023 +12,721
libraries.pmi.windows.x64.checked.mch 61,645,095 +507
libraries_tests.run.windows.x64.Release.mch 278,843,071 +19,044
librariestestsnotieredcompilation.run.windows.x64.Release.mch 137,560,760 +0
realworld.run.windows.x64.checked.mch 14,184,922 +102

FullOpts (+33,203 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x64.checked.mch 8,736,528 +119
benchmarks.run_pgo.windows.x64.checked.mch 21,745,952 +710
coreclr_tests.run.windows.x64.checked.mch 120,242,045 +12,721
libraries.pmi.windows.x64.checked.mch 61,531,574 +507
libraries_tests.run.windows.x64.Release.mch 106,668,455 +19,044
librariestestsnotieredcompilation.run.windows.x64.Release.mch 126,634,694 +0
realworld.run.windows.x64.checked.mch 13,798,313 +102

Example diffs

benchmarks.run.windows.x64.checked.mch

+51 (+2.05%) : 5833.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 33, 559.50) ref -> rbx this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T31] ( 7, 17.50) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T12] ( 18, 127 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T11] ( 19, 127 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T47] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T62] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r13 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [rsp+0xC4] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [rsp+0xC0]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r13 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [rsp+0xC4] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [rsp+0xBC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [rsp+0xB8] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T45] ( 3, 12 ) ushort -> rax
-; V17 loc13 [V17,T42] ( 6, 12 ) int -> r10
+; V17 loc13 [V17,T42] ( 6, 12 ) int -> rcx
; V18 loc14 [V18,T43] ( 3, 12 ) ref -> rax class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [rsp+0x50] class-hnd spill-single-def <<unknown class>> @@ -170,7 +170,7 @@ ; V159 cse3 [V159,T44] ( 3, 12 ) ref -> rdx "CSE - conservative" ; V160 cse4 [V160,T46] ( 3, 12 ) int -> r8 "CSE - conservative" ; V161 cse5 [V161,T03] ( 6, 416 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
-; V162 cse6 [V162,T11] ( 18, 142 ) int -> r12 "CSE - aggressive"
+; V162 cse6 [V162,T12] ( 19, 126.16) int -> r12 "CSE - aggressive"
; ; Lcl frame size = 200 @@ -202,7 +202,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0200 ; byrRegs +[rbp] mov r14d, dword ptr [r9+0x08] test rsi, rsi
- je G_M4730_IG64
+ je G_M4730_IG69
test rdi, rdi jne SHORT G_M4730_IG04 ;; size=21 bbWeight=1 PerfScore 6.50 @@ -239,7 +239,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ; gcrRegs -[rax] mov r12d, dword ptr [rsi+0x08] cmp r12d, r13d
- jbe G_M4730_IG59
+ jbe G_M4730_IG64
;; size=13 bbWeight=8 PerfScore 26.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref mov ecx, r13d @@ -292,9 +292,9 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ; gcr arg pop 0 mov dword ptr [rsp+0xA8], eax test eax, eax
- jl G_M4730_IG61
+ jl G_M4730_IG66
cmp eax, dword ptr [rsp+0x9C]
- ja G_M4730_IG75
+ ja G_M4730_IG80
mov ecx, eax not ecx shr ecx, 31 @@ -314,12 +314,12 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 cmp r13d, r12d ;; size=233 bbWeight=4 PerfScore 214.00 G_M4730_IG08: ; bbWeight=4, isz, extend
- jae G_M4730_IG63
+ jae G_M4730_IG68
mov ecx, r13d movzx rax, word ptr [rsi+2*rcx+0x0C] inc r13d cmp r12d, r13d
- jbe G_M4730_IG67
+ jbe G_M4730_IG72
mov ecx, r13d movzx r8, word ptr [rsi+2*rcx+0x0C] cmp eax, r8d @@ -351,7 +351,7 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ;; size=8 bbWeight=4 PerfScore 9.00 G_M4730_IG12: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz cmp eax, 123
- jne G_M4730_IG65
+ jne G_M4730_IG70
mov dword ptr [rsp+0xC4], r8d xor eax, eax mov dword ptr [rsp+0xC0], eax @@ -365,7 +365,7 @@ G_M4730_IG12: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 mov dword ptr [rsp+0xA0], r9d lea ecx, [r13-0x01] cmp ecx, r12d
- jae G_M4730_IG63
+ jae G_M4730_IG68
lea ecx, [r13-0x01] cmp word ptr [rsi+2*rcx+0x0C], 123 sete cl @@ -381,162 +381,188 @@ G_M4730_IG12: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 mov eax, dword ptr [rsp+0xC4] lea edx, [rax-0x30] cmp edx, 10
- jae G_M4730_IG66
+ jae G_M4730_IG71
inc r13d cmp r12d, r13d
- jbe G_M4730_IG67
+ jbe G_M4730_IG72
mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 125
+ cmp eax, 125
je SHORT G_M4730_IG14
- ;; size=154 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 123.00
G_M4730_IG13: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz jmp SHORT G_M4730_IG16 ;; size=2 bbWeight=2 PerfScore 4.00 G_M4730_IG14: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref mov dword ptr [rsp+0xB8], edx
- jmp G_M4730_IG31
+ jmp G_M4730_IG36
;; size=12 bbWeight=2 PerfScore 6.00 G_M4730_IG15: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref lea edx, [rdx+4*rdx]
- lea edx, [rcx+2*rdx-0x30]
+ lea edx, [rax+2*rdx-0x30]
mov dword ptr [rsp+0xB8], edx inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ jbe G_M4730_IG72 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C]
mov edx, dword ptr [rsp+0xB8] ;; size=41 bbWeight=8 PerfScore 58.00 G_M4730_IG16: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- lea eax, [rcx-0x30] - cmp eax, 9
+ lea ecx, [rax-0x30] + cmp ecx, 9
ja SHORT G_M4730_IG17 cmp edx, 0xD1FFAB1E jl SHORT G_M4730_IG15 ;; size=16 bbWeight=16 PerfScore 48.00 G_M4730_IG17: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- cmp ecx, 32
+ cmp eax, 32
jne SHORT G_M4730_IG19 ;; size=5 bbWeight=2 PerfScore 2.50 G_M4730_IG18: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - cmp ecx, 32
+ jbe G_M4730_IG72 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C] + cmp eax, 32
je SHORT G_M4730_IG18 ;; size=25 bbWeight=16 PerfScore 80.00
-G_M4730_IG19: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref - cmp ecx, 44 - mov r8d, dword ptr [rsp+0xC0] - jne G_M4730_IG27 - ;; size=17 bbWeight=2 PerfScore 4.50
+G_M4730_IG19: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz + cmp eax, 44 + mov r10d, eax + jne SHORT G_M4730_IG24 + ;; size=8 bbWeight=2 PerfScore 3.00
G_M4730_IG20: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - cmp ecx, 32
+ jbe G_M4730_IG72 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C] + cmp eax, 32
je SHORT G_M4730_IG20 ;; size=25 bbWeight=16 PerfScore 80.00 G_M4730_IG21: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- cmp ecx, 45
+ cmp eax, 45
jne SHORT G_M4730_IG22 mov dword ptr [rsp+0xBC], 1 inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ jbe G_M4730_IG72 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00 G_M4730_IG22: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- add ecx, -48 - mov r8d, ecx - cmp r8d, 10 - jae G_M4730_IG66
+ add eax, -48 + cmp eax, 10 + jae G_M4730_IG71
inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - jmp SHORT G_M4730_IG24 - ;; size=30 bbWeight=2 PerfScore 10.50 -G_M4730_IG23: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref - lea r8d, [r8+4*r8] - lea r8d, [rcx+2*r8-0x30] - mov dword ptr [rsp+0xC0], r8d
+ jbe G_M4730_IG72 + test r13d, r13d + jge SHORT G_M4730_IG26 + ;; size=29 bbWeight=2 PerfScore 8.50 +G_M4730_IG23: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz + jmp SHORT G_M4730_IG29 + ;; size=2 bbWeight=0.02 PerfScore 0.04 +G_M4730_IG24: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref + mov eax, dword ptr [rsp+0xC0] + jmp G_M4730_IG32 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M4730_IG25: ; bbWeight=7.92, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref + lea eax, [rax+4*rax] + lea eax, [r10+2*rax-0x30]
inc r13d cmp r12d, r13d
- mov r8d, dword ptr [rsp+0xC0] - jbe G_M4730_IG67 - ;; size=37 bbWeight=8 PerfScore 40.00 -G_M4730_IG24: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz - cmp r13d, r12d - jae G_M4730_IG63
+ jbe G_M4730_IG72 + ;; size=20 bbWeight=7.92 PerfScore 23.76 +G_M4730_IG26: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov ecx, r13d movzx rcx, word ptr [rsi+2*rcx+0x0C]
- lea r10d, [rcx-0x30] - cmp r10d, 9 - ja SHORT G_M4730_IG25
...

+68 (+2.15%) : 1631.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 51 single block inlinees; 64 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> rbx this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> rbx this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T53] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T73] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r13 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rsp+0x104] -; V07 loc3 [V07,T06] ( 12, 62 ) int -> [rsp+0x100]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r13 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0x104] +; V07 loc3 [V07,T06] ( 15, 62 ) int -> [rsp+0x100]
; V08 loc4 [V08,T25] ( 5, 18 ) ubyte -> [rsp+0xFC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T08] ( 7, 48 ) int -> [rsp+0xF8] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T44] ( 3, 12 ) ushort -> rax
-; V17 loc13 [V17,T36] ( 6, 12 ) int -> r8
+; V17 loc13 [V17,T36] ( 6, 12 ) int -> rcx
; V18 loc14 [V18,T39] ( 3, 12 ) ref -> r12 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [rsp+0xF0] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T74] ( 3, 6 ) ref -> [rsp+0x78] class-hnd spill-single-def <<unknown class>> @@ -235,7 +235,7 @@ ; V224 cse3 [V224,T77] ( 3, 6 ) int -> r9 "CSE - conservative" ; V225 cse4 [V225,T78] ( 3, 6 ) int -> r10 "CSE - conservative" ; V226 cse5 [V226,T92] ( 3, 1.50) int -> rdi "CSE - conservative"
-; V227 cse6 [V227,T02] ( 18,142 ) int -> r12 "CSE - aggressive"
+; V227 cse6 [V227,T04] ( 19,126.16) int -> r12 "CSE - aggressive"
; V228 cse7 [V228,T07] ( 21, 58 ) int -> [rsp+0x94] spill-single-def "CSE - aggressive" ; V229 cse8 [V229,T05] ( 35, 65.50) ref -> registers multi-def "CSE - aggressive" ; V230 cse9 [V230,T13] ( 11, 29 ) byref -> [rsp+0x28] multi-def "CSE - moderate" @@ -270,7 +270,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0208 {rb ; byrRegs +[rbp] mov r14d, dword ptr [r9+0x08] test rsi, rsi
- je G_M36935_IG81
+ je G_M36935_IG85
test rdi, rdi jne SHORT G_M36935_IG04 ;; size=21 bbWeight=1 PerfScore 6.50 @@ -307,7 +307,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ; gcrRegs -[rax] mov r12d, dword ptr [rsi+0x08] cmp r12d, r13d
- jbe G_M36935_IG76
+ jbe G_M36935_IG80
;; size=13 bbWeight=8 PerfScore 26.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz mov ecx, r13d @@ -353,9 +353,9 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ; gcr arg pop 0 mov dword ptr [rsp+0xE8], eax test eax, eax
- jl G_M36935_IG77
+ jl G_M36935_IG81
cmp eax, dword ptr [rsp+0xBC]
- ja G_M36935_IG88
+ ja G_M36935_IG92
mov ecx, dword ptr [rbx+0x08] mov edx, dword ptr [rbx+0x18] sub edx, eax @@ -381,7 +381,7 @@ G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 mov edx, dword ptr [rbx+0x08] mov r10d, dword ptr [rcx+0x08] cmp edx, r10d
- ja G_M36935_IG88
+ ja G_M36935_IG92
mov rcx, bword ptr [rcx] mov r9d, edx lea r9, bword ptr [rcx+2*r9] @@ -411,7 +411,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=00000000000000000000000810002000 {V77 ;; size=37 bbWeight=2 PerfScore 12.00 G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0228 {rbx rbp r9}, byref, isz cmp eax, dword ptr [rsp+0xE4]
- ja G_M36935_IG89
+ ja G_M36935_IG93
mov ecx, eax lea r8, [rcx+rcx] mov rcx, r9 @@ -426,12 +426,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0228 add dword ptr [rbx+0x08], ecx add r13d, ecx cmp r13d, r12d
- jae G_M36935_IG80
+ jae G_M36935_IG84
mov ecx, r13d movzx rax, word ptr [rsi+2*rcx+0x0C] inc r13d cmp r12d, r13d
- jbe G_M36935_IG84
+ jbe G_M36935_IG88
mov ecx, r13d movzx r8, word ptr [rsi+2*rcx+0x0C] cmp eax, r8d @@ -475,7 +475,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 G_M36935_IG18: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V230}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; GC ptr vars +{V13 V230} cmp eax, 123
- jne G_M36935_IG82
+ jne G_M36935_IG86
xor eax, eax mov dword ptr [rsp+0x100], eax xor r10d, r10d @@ -488,7 +488,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=00000000000000000000000000002000 {V23 mov dword ptr [rsp+0xC0], r11d lea ecx, [r13-0x01] cmp ecx, r12d
- jae G_M36935_IG80
+ jae G_M36935_IG84
lea ecx, [r13-0x01] cmp word ptr [rsi+2*rcx+0x0C], 123 je SHORT G_M36935_IG20 @@ -525,160 +525,182 @@ G_M36935_IG22: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 mov r8d, dword ptr [rsp+0x104] lea edx, [r8-0x30] cmp edx, 10
- jae G_M36935_IG83
+ jae G_M36935_IG87
inc r13d cmp r12d, r13d
- jbe G_M36935_IG84
+ jbe G_M36935_IG88
mov r8d, r13d movzx r8, word ptr [rsi+2*r8+0x0C]
- mov ecx, r8d - cmp ecx, 125 - je G_M36935_IG41 - ;; size=54 bbWeight=4 PerfScore 32.00
+ cmp r8d, 125 + je G_M36935_IG45 + ;; size=52 bbWeight=4 PerfScore 31.00
G_M36935_IG23: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz jmp SHORT G_M36935_IG25 ;; size=2 bbWeight=2 PerfScore 4.00 G_M36935_IG24: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea edx, [rdx+4*rdx]
- lea edx, [rcx+2*rdx-0x30]
+ lea edx, [r8+2*rdx-0x30]
mov dword ptr [rsp+0xF8], edx inc r13d cmp r12d, r13d
- jbe G_M36935_IG84 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ jbe G_M36935_IG88 + mov r8d, r13d + movzx r8, word ptr [rsi+2*r8+0x0C]
mov edx, dword ptr [rsp+0xF8]
- ;; size=41 bbWeight=8 PerfScore 58.00
+ ;; size=43 bbWeight=8 PerfScore 58.00
G_M36935_IG25: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- lea r8d, [rcx-0x30] - cmp r8d, 9
+ lea ecx, [r8-0x30] + cmp ecx, 9
ja SHORT G_M36935_IG26 cmp edx, 0xD1FFAB1E jl SHORT G_M36935_IG24
- ;; size=18 bbWeight=16 PerfScore 48.00
+ ;; size=17 bbWeight=16 PerfScore 48.00
G_M36935_IG26: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
+ cmp r8d, 32
jne SHORT G_M36935_IG28
- ;; size=5 bbWeight=2 PerfScore 2.50
+ ;; size=6 bbWeight=2 PerfScore 2.50
G_M36935_IG27: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d cmp r12d, r13d
- jbe G_M36935_IG84 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - cmp ecx, 32
+ jbe G_M36935_IG88 + mov r8d, r13d + movzx r8, word ptr [rsi+2*r8+0x0C] + cmp r8d, 32
je SHORT G_M36935_IG27
- ;; size=25 bbWeight=16 PerfScore 80.00
+ ;; size=27 bbWeight=16 PerfScore 80.00
G_M36935_IG28: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp ecx, 44
+ cmp r8d, 44
mov eax, dword ptr [rsp+0x100]
- jne G_M36935_IG36 - ;; size=16 bbWeight=2 PerfScore 4.50
+ jne G_M36935_IG40 + ;; size=17 bbWeight=2 PerfScore 4.50
G_M36935_IG29: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d cmp r12d, r13d
- jbe G_M36935_IG84 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - cmp ecx, 32
+ jbe G_M36935_IG88 + mov r8d, r13d + movzx r8, word ptr [rsi+2*r8+0x0C] + cmp r8d, 32
je SHORT G_M36935_IG29
- ;; size=25 bbWeight=16 PerfScore 80.00
+ ;; size=27 bbWeight=16 PerfScore 80.00
G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 45
+ cmp r8d, 45
jne SHORT G_M36935_IG31 mov dword ptr [rsp+0xFC], 1 inc r13d cmp r12d, r13d
- jbe G_M36935_IG84 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - ;; size=36 bbWeight=2 PerfScore 12.00
+ jbe G_M36935_IG88 + mov r8d, r13d + movzx r8, word ptr [rsi+2*r8+0x0C] + ;; size=38 bbWeight=2 PerfScore 12.00
G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- lea eax, [rcx-0x30]
+ lea eax, [r8-0x30]
cmp eax, 10
- jae G_M36935_IG83
+ jae G_M36935_IG87
inc r13d cmp r12d, r13d
- jbe G_M36935_IG84 - jmp SHORT G_M36935_IG33 - ;; size=26 bbWeight=2 PerfScore 10.50 -G_M36935_IG32: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jbe G_M36935_IG88 + test r13d, r13d + jge SHORT G_M36935_IG34 + ;; size=30 bbWeight=2 PerfScore 9.00 +G_M36935_IG32: ; bbWeight=0.02, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + jmp SHORT G_M36935_IG37 + ;; size=2 bbWeight=0.02 PerfScore 0.04 +G_M36935_IG33: ; bbWeight=7.92, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
- lea eax, [rcx+2*rax-0x30]
+ lea eax, [r8+2*rax-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG88
...

benchmarks.run_pgo.windows.x64.checked.mch

+355 (+31.84%) : 50597.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)

@@ -9,21 +9,21 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 91.22 ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 17, 7.87) ref -> rcx class-hnd single-def <int[][]> -; V01 arg1 [V01,T08] ( 17,104.27) ref -> rdx class-hnd single-def <int[][]> -; V02 arg2 [V02,T12] ( 12, 4.62) ref -> r8 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 23, 9.97) ref -> rcx class-hnd single-def <int[][]> +; V01 arg1 [V01,T08] ( 24,105.67) ref -> rdx class-hnd single-def <int[][]> +; V02 arg2 [V02,T13] ( 18, 6.03) ref -> r8 class-hnd single-def <int[][]>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T13] ( 49, 4.97) int -> r9 -; V05 loc2 [V05,T06] ( 50,202.65) int -> r10 -; V06 loc3 [V06,T03] ( 52,400.64) int -> rax
+; V04 loc1 [V04,T12] ( 61, 9.18) int -> r9 +; V05 loc2 [V05,T06] ( 59,208.96) int -> r10 +; V06 loc3 [V06,T03] ( 63,406.25) int -> rax
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <int[]> ;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store"
-; V10 tmp3 [V10,T17] ( 3, 0 ) byref -> r11 "dup spill" -; V11 tmp4 [V11,T18] ( 3, 0 ) byref -> r11 "dup spill" -; V12 tmp5 [V12,T19] ( 3, 0 ) byref -> r11 "dup spill" -; V13 tmp6 [V13,T20] ( 3, 0 ) byref -> r11 "dup spill" -; V14 tmp7 [V14,T21] ( 3, 0 ) byref -> r11 "dup spill"
+; V10 tmp3 [V10,T15] ( 6, 4.21) byref -> rbx "dup spill" +; V11 tmp4 [V11,T16] ( 6, 4.21) byref -> rbx "dup spill" +; V12 tmp5 [V12,T25] ( 3, 0 ) byref -> r11 "dup spill" +; V13 tmp6 [V13,T26] ( 3, 0 ) byref -> r11 "dup spill" +; V14 tmp7 [V14,T27] ( 3, 0 ) byref -> r11 "dup spill"
; V15 tmp8 [V15,T00] ( 6,592.11) byref -> r14 "dup spill" ;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr" @@ -32,12 +32,12 @@ ; V20 tmp13 [V20,T01] ( 6,592.11) ref -> registers "arr expr" ; V21 tmp14 [V21,T04] ( 5,396.71) ref -> r15 "arr expr" ; V22 tmp15 [V22,T02] ( 6,592.11) ref -> registers "arr expr"
-; V23 tmp16 [V23,T22] ( 3, 0 ) ref -> r11 "arr expr" -; V24 tmp17 [V24,T23] ( 3, 0 ) ref -> rdi "arr expr" -; V25 tmp18 [V25,T24] ( 3, 0 ) ref -> rbp "arr expr" -; V26 tmp19 [V26,T25] ( 3, 0 ) ref -> r11 "arr expr" -; V27 tmp20 [V27,T26] ( 3, 0 ) ref -> rdi "arr expr" -; V28 tmp21 [V28,T27] ( 3, 0 ) ref -> rbp "arr expr"
+; V23 tmp16 [V23,T22] ( 5, 2.81) ref -> r11 "arr expr" +; V24 tmp17 [V24,T17] ( 6, 4.21) ref -> rdi "arr expr" +; V25 tmp18 [V25,T23] ( 5, 2.81) ref -> rbp "arr expr" +; V26 tmp19 [V26,T18] ( 6, 4.21) ref -> r11 "arr expr" +; V27 tmp20 [V27,T24] ( 5, 2.81) ref -> rdi "arr expr" +; V28 tmp21 [V28,T19] ( 6, 4.21) ref -> rbp "arr expr"
; V29 tmp22 [V29,T28] ( 3, 0 ) ref -> r11 "arr expr" ; V30 tmp23 [V30,T29] ( 3, 0 ) ref -> rdi "arr expr" ; V31 tmp24 [V31,T30] ( 3, 0 ) ref -> rbp "arr expr" @@ -49,11 +49,11 @@ ; V37 tmp30 [V37,T36] ( 3, 0 ) ref -> rbp "arr expr" ; V38 cse0 [V38,T10] ( 4,100.00) ref -> rdi hoist multi-def "CSE - aggressive" ; V39 cse1 [V39,T09] ( 6,103.57) ref -> rbx multi-def "CSE - aggressive"
-; V40 cse2 [V40,T16] ( 10, 2.62) int -> rsi hoist multi-def "CSE - aggressive"
+; V40 cse2 [V40,T20] ( 13, 3.32) int -> rsi hoist multi-def "CSE - aggressive"
; V41 cse3 [V41,T14] ( 6, 4.91) long -> r11 hoist multi-def "CSE - aggressive" ; V42 cse4 [V42,T07] ( 6,198.68) long -> rbp hoist multi-def "CSE - aggressive" ; V43 cse5 [V43,T05] ( 3,293.09) long -> rsi "CSE - aggressive"
-; V44 cse6 [V44,T15] ( 3, 2.96) long -> rbx "CSE - aggressive"
+; V44 cse6 [V44,T21] ( 3, 2.96) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -74,48 +74,126 @@ G_M19657_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r10d, dword ptr [rsp+0xCC] mov eax, dword ptr [rsp+0xC8] ;; size=91 bbWeight=1 PerfScore 17.25
-G_M19657_IG02: ; bbWeight=1, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19657_IG04 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M19657_IG03: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref
+G_M19657_IG02: ; bbWeight=1, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref + jmp G_M19657_IG08 + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M19657_IG03: ; bbWeight=0.02, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref + xor r10d, r10d + jmp G_M19657_IG07 + ;; size=8 bbWeight=0.02 PerfScore 0.05 +G_M19657_IG04: ; bbWeight=0.02, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz + inc r9d + cmp r9d, 75 + jge G_M19657_IG18 + jmp SHORT G_M19657_IG03 + ;; size=15 bbWeight=0.02 PerfScore 0.08 +G_M19657_IG05: ; bbWeight=0.70, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz + mov r11d, r9d + mov r11, gword ptr [r8+8*r11+0x10] + ; gcrRegs +[r11] + mov ebx, r10d + lea rbx, bword ptr [r11+4*rbx+0x10] + ; byrRegs +[rbx] + mov r11d, dword ptr [rbx] + ; gcrRegs -[r11] + cmp r9d, dword ptr [rcx+0x08] + jae G_M19657_IG17 + mov edi, r9d + mov rdi, gword ptr [rcx+8*rdi+0x10] + ; gcrRegs +[rdi] + cmp eax, dword ptr [rdi+0x08] + jae G_M19657_IG17 + mov ebp, eax + mov edi, dword ptr [rdi+4*rbp+0x10] + ; gcrRegs -[rdi] + mov ebp, eax + mov rbp, gword ptr [rdx+8*rbp+0x10] + ; gcrRegs +[rbp] + mov r14d, r10d + imul edi, dword ptr [rbp+4*r14+0x10] + add r11d, edi + mov dword ptr [rbx], r11d + inc r10d + cmp r10d, 75 + jge G_M19657_IG22 + jmp SHORT G_M19657_IG05 + ;; size=89 bbWeight=0.70 PerfScore 21.22 +G_M19657_IG06: ; bbWeight=0.70, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbp] + ; byrRegs -[rbx] + cmp r9d, esi + jae G_M19657_IG17 + mov r11d, r9d + mov r11, gword ptr [r8+8*r11+0x10] + ; gcrRegs +[r11] + cmp r10d, dword ptr [r11+0x08] + jae G_M19657_IG17 + mov ebx, r10d + lea rbx, bword ptr [r11+4*rbx+0x10] + ; byrRegs +[rbx] + mov r11d, dword ptr [rbx] + ; gcrRegs -[r11] + mov edi, r9d + mov rdi, gword ptr [rcx+8*rdi+0x10] + ; gcrRegs +[rdi] + mov ebp, eax + mov edi, dword ptr [rdi+4*rbp+0x10] + ; gcrRegs -[rdi] + mov ebp, eax + mov rbp, gword ptr [rdx+8*rbp+0x10] + ; gcrRegs +[rbp] + cmp r10d, dword ptr [rbp+0x08] + jae G_M19657_IG17 + mov r14d, r10d + imul edi, dword ptr [rbp+4*r14+0x10] + add r11d, edi + mov dword ptr [rbx], r11d + inc eax + cmp eax, 75 + jge G_M19657_IG26 + jmp SHORT G_M19657_IG06 + ;; size=97 bbWeight=0.70 PerfScore 22.10 +G_M19657_IG07: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp] + ; byrRegs -[rbx]
xor eax, eax ;; size=2 bbWeight=1.32 PerfScore 0.33
-G_M19657_IG04: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref
+G_M19657_IG08: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref
cmp eax, 75
- jge G_M19657_IG11
+ jge G_M19657_IG15
;; size=9 bbWeight=1.32 PerfScore 1.64
-G_M19657_IG05: ; bbWeight=1.30, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG09: ; bbWeight=1.30, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
test rcx, rcx
- je G_M19657_IG09
+ je G_M19657_IG13
test rdx, rdx
- je SHORT G_M19657_IG09
+ je SHORT G_M19657_IG13
cmp dword ptr [rcx+0x08], r9d
- jbe SHORT G_M19657_IG09
+ jbe SHORT G_M19657_IG13
mov r11d, r9d mov rbx, gword ptr [rcx+8*r11+0x10] ; gcrRegs +[rbx] test rbx, rbx
- je SHORT G_M19657_IG09
+ je SHORT G_M19657_IG13
test eax, eax
- jl SHORT G_M19657_IG09
+ jl SHORT G_M19657_IG13
cmp dword ptr [rbx+0x08], 75
- jl SHORT G_M19657_IG09
+ jl SHORT G_M19657_IG13
cmp dword ptr [rdx+0x08], 75
- jl SHORT G_M19657_IG09
+ jl SHORT G_M19657_IG13
;; size=49 bbWeight=1.30 PerfScore 24.99
-G_M19657_IG06: ; bbWeight=1.30, gcrefRegs=010E {rcx rdx rbx r8}, byrefRegs=0000 {}, byref
+G_M19657_IG10: ; bbWeight=1.30, gcrefRegs=010E {rcx rdx rbx r8}, byrefRegs=0000 {}, byref
mov esi, dword ptr [r8+0x08] cmp r9d, esi
- jae G_M19657_IG20
+ jae G_M19657_IG17
mov rdi, gword ptr [r8+8*r11+0x10] ; gcrRegs +[rdi] mov ebp, r10d ;; size=21 bbWeight=1.30 PerfScore 7.14
-G_M19657_IG07: ; bbWeight=97.70, gcrefRegs=018E {rcx rdx rbx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG11: ; bbWeight=97.70, gcrefRegs=018E {rcx rdx rbx rdi r8}, byrefRegs=0000 {}, byref, isz
mov r11, rdi ; gcrRegs +[r11] cmp r10d, dword ptr [r11+0x08]
- jae G_M19657_IG20
+ jae G_M19657_IG17
lea r14, bword ptr [r11+4*rbp+0x10] ; byrRegs +[r14] mov r11d, dword ptr [r14] @@ -128,350 +206,391 @@ G_M19657_IG07: ; bbWeight=97.70, gcrefRegs=018E {rcx rdx rbx rdi r8}, byr mov rsi, gword ptr [rdx+8*rsi+0x10] ; gcrRegs +[rsi] cmp r10d, dword ptr [rsi+0x08]
- jae G_M19657_IG20
+ jae G_M19657_IG17
imul r15d, dword ptr [rsi+4*rbp+0x10] add r11d, r15d mov dword ptr [r14], r11d inc eax cmp eax, 75
- jl SHORT G_M19657_IG07
+ jl SHORT G_M19657_IG11
;; size=65 bbWeight=97.70 PerfScore 2295.89
-G_M19657_IG08: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG12: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi rdi] ; byrRegs -[r14]
- jmp SHORT G_M19657_IG11
+ jmp SHORT G_M19657_IG15
;; size=2 bbWeight=1.32 PerfScore 2.63
-G_M19657_IG09: ; bbWeight=0.01, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref
+G_M19657_IG13: ; bbWeight=0.01, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [r8+0x08] mov r11d, r9d cmp r9d, esi
- jae G_M19657_IG20
+ jae SHORT G_M19657_IG17
mov rdi, gword ptr [r8+8*r11+0x10] ; gcrRegs +[rdi] mov ebp, r10d
- ;; size=24 bbWeight=0.01 PerfScore 0.07 -G_M19657_IG10: ; bbWeight=0.99, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.01 PerfScore 0.07 +G_M19657_IG14: ; bbWeight=0.99, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
mov r14, rdi ; gcrRegs +[r14] cmp r10d, dword ptr [r14+0x08]
- jae G_M19657_IG20
...

+355 (+31.84%) : 50609.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)

@@ -9,21 +9,21 @@ ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 180.83 ; Final local variable assignments ;
-; V00 arg0 [V00,T11] ( 17, 7.89) ref -> rcx class-hnd single-def <int[][]> -; V01 arg1 [V01,T08] ( 17,104.27) ref -> rdx class-hnd single-def <int[][]> -; V02 arg2 [V02,T12] ( 12, 4.63) ref -> r8 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 23, 8.95) ref -> rcx class-hnd single-def <int[][]> +; V01 arg1 [V01,T08] ( 24,104.98) ref -> rdx class-hnd single-def <int[][]> +; V02 arg2 [V02,T12] ( 18, 5.34) ref -> r8 class-hnd single-def <int[][]>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T13] ( 49, 4.98) int -> r9 -; V05 loc2 [V05,T06] ( 50,202.66) int -> r10 -; V06 loc3 [V06,T03] ( 52,400.63) int -> rax
+; V04 loc1 [V04,T13] ( 61, 7.10) int -> r9 +; V05 loc2 [V05,T06] ( 59,205.84) int -> r10 +; V06 loc3 [V06,T03] ( 63,403.47) int -> rax
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Strict ordering of exceptions for Array store" <int[]> ;* V09 tmp2 [V09 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store"
-; V10 tmp3 [V10,T17] ( 3, 0 ) byref -> r11 "dup spill" -; V11 tmp4 [V11,T18] ( 3, 0 ) byref -> r11 "dup spill" -; V12 tmp5 [V12,T19] ( 3, 0 ) byref -> r11 "dup spill" -; V13 tmp6 [V13,T20] ( 3, 0 ) byref -> r11 "dup spill" -; V14 tmp7 [V14,T21] ( 3, 0 ) byref -> r11 "dup spill"
+; V10 tmp3 [V10,T17] ( 6, 2.12) byref -> rbx "dup spill" +; V11 tmp4 [V11,T18] ( 6, 2.12) byref -> rbx "dup spill" +; V12 tmp5 [V12,T25] ( 3, 0 ) byref -> r11 "dup spill" +; V13 tmp6 [V13,T26] ( 3, 0 ) byref -> r11 "dup spill" +; V14 tmp7 [V14,T27] ( 3, 0 ) byref -> r11 "dup spill"
; V15 tmp8 [V15,T00] ( 6,592.07) byref -> r14 "dup spill" ;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref "arr expr" ;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref "arr expr" @@ -32,12 +32,12 @@ ; V20 tmp13 [V20,T01] ( 6,592.07) ref -> registers "arr expr" ; V21 tmp14 [V21,T04] ( 5,396.69) ref -> r15 "arr expr" ; V22 tmp15 [V22,T02] ( 6,592.07) ref -> registers "arr expr"
-; V23 tmp16 [V23,T22] ( 3, 0 ) ref -> r11 "arr expr" -; V24 tmp17 [V24,T23] ( 3, 0 ) ref -> rdi "arr expr" -; V25 tmp18 [V25,T24] ( 3, 0 ) ref -> rbp "arr expr" -; V26 tmp19 [V26,T25] ( 3, 0 ) ref -> r11 "arr expr" -; V27 tmp20 [V27,T26] ( 3, 0 ) ref -> rdi "arr expr" -; V28 tmp21 [V28,T27] ( 3, 0 ) ref -> rbp "arr expr"
+; V23 tmp16 [V23,T22] ( 5, 1.42) ref -> r11 "arr expr" +; V24 tmp17 [V24,T19] ( 6, 2.12) ref -> rdi "arr expr" +; V25 tmp18 [V25,T23] ( 5, 1.42) ref -> rbp "arr expr" +; V26 tmp19 [V26,T20] ( 6, 2.12) ref -> r11 "arr expr" +; V27 tmp20 [V27,T24] ( 5, 1.42) ref -> rdi "arr expr" +; V28 tmp21 [V28,T21] ( 6, 2.12) ref -> rbp "arr expr"
; V29 tmp22 [V29,T28] ( 3, 0 ) ref -> r11 "arr expr" ; V30 tmp23 [V30,T29] ( 3, 0 ) ref -> rdi "arr expr" ; V31 tmp24 [V31,T30] ( 3, 0 ) ref -> rbp "arr expr" @@ -49,11 +49,11 @@ ; V37 tmp30 [V37,T36] ( 3, 0 ) ref -> rbp "arr expr" ; V38 cse0 [V38,T10] ( 4,100.00) ref -> rdi hoist multi-def "CSE - aggressive" ; V39 cse1 [V39,T09] ( 6,103.58) ref -> rbx multi-def "CSE - aggressive"
-; V40 cse2 [V40,T16] ( 10, 2.63) int -> rsi hoist multi-def "CSE - aggressive"
+; V40 cse2 [V40,T15] ( 13, 2.99) int -> rsi hoist multi-def "CSE - aggressive"
; V41 cse3 [V41,T14] ( 6, 4.93) long -> r11 hoist multi-def "CSE - aggressive" ; V42 cse4 [V42,T07] ( 6,198.67) long -> rbp hoist multi-def "CSE - aggressive" ; V43 cse5 [V43,T05] ( 3,293.07) long -> rsi "CSE - aggressive"
-; V44 cse6 [V44,T15] ( 3, 2.96) long -> rbx "CSE - aggressive"
+; V44 cse6 [V44,T16] ( 3, 2.96) long -> rbx "CSE - aggressive"
; ; Lcl frame size = 40 @@ -74,46 +74,124 @@ G_M19657_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r10d, dword ptr [rsp+0xCC] mov eax, dword ptr [rsp+0xC8] ;; size=91 bbWeight=1 PerfScore 17.25
-G_M19657_IG02: ; bbWeight=1, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19657_IG04 - ;; size=2 bbWeight=1 PerfScore 2.00 -G_M19657_IG03: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref
+G_M19657_IG02: ; bbWeight=1, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref + jmp G_M19657_IG08 + ;; size=5 bbWeight=1 PerfScore 2.00 +G_M19657_IG03: ; bbWeight=0.02, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref + xor r10d, r10d + jmp G_M19657_IG07 + ;; size=8 bbWeight=0.02 PerfScore 0.04 +G_M19657_IG04: ; bbWeight=0.02, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz + inc r9d + cmp r9d, 75 + jge G_M19657_IG17 + jmp SHORT G_M19657_IG03 + ;; size=15 bbWeight=0.02 PerfScore 0.06 +G_M19657_IG05: ; bbWeight=0.35, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz + mov r11d, r9d + mov r11, gword ptr [r8+8*r11+0x10] + ; gcrRegs +[r11] + mov ebx, r10d + lea rbx, bword ptr [r11+4*rbx+0x10] + ; byrRegs +[rbx] + mov r11d, dword ptr [rbx] + ; gcrRegs -[r11] + cmp r9d, dword ptr [rcx+0x08] + jae G_M19657_IG16 + mov edi, r9d + mov rdi, gword ptr [rcx+8*rdi+0x10] + ; gcrRegs +[rdi] + cmp eax, dword ptr [rdi+0x08] + jae G_M19657_IG16 + mov ebp, eax + mov edi, dword ptr [rdi+4*rbp+0x10] + ; gcrRegs -[rdi] + mov ebp, eax + mov rbp, gword ptr [rdx+8*rbp+0x10] + ; gcrRegs +[rbp] + mov r14d, r10d + imul edi, dword ptr [rbp+4*r14+0x10] + add r11d, edi + mov dword ptr [rbx], r11d + inc r10d + cmp r10d, 75 + jge G_M19657_IG21 + jmp SHORT G_M19657_IG05 + ;; size=89 bbWeight=0.35 PerfScore 10.71 +G_M19657_IG06: ; bbWeight=0.35, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rbp] + ; byrRegs -[rbx] + cmp r9d, esi + jae G_M19657_IG16 + mov r11d, r9d + mov r11, gword ptr [r8+8*r11+0x10] + ; gcrRegs +[r11] + cmp r10d, dword ptr [r11+0x08] + jae G_M19657_IG16 + mov ebx, r10d + lea rbx, bword ptr [r11+4*rbx+0x10] + ; byrRegs +[rbx] + mov r11d, dword ptr [rbx] + ; gcrRegs -[r11] + mov edi, r9d + mov rdi, gword ptr [rcx+8*rdi+0x10] + ; gcrRegs +[rdi] + mov ebp, eax + mov edi, dword ptr [rdi+4*rbp+0x10] + ; gcrRegs -[rdi] + mov ebp, eax + mov rbp, gword ptr [rdx+8*rbp+0x10] + ; gcrRegs +[rbp] + cmp r10d, dword ptr [rbp+0x08] + jae G_M19657_IG16 + mov r14d, r10d + imul edi, dword ptr [rbp+4*r14+0x10] + add r11d, edi + mov dword ptr [rbx], r11d + inc eax + cmp eax, 75 + jge G_M19657_IG25 + jmp SHORT G_M19657_IG06 + ;; size=97 bbWeight=0.35 PerfScore 11.15 +G_M19657_IG07: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp] + ; byrRegs -[rbx]
xor eax, eax ;; size=2 bbWeight=1.32 PerfScore 0.33
-G_M19657_IG04: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref
+G_M19657_IG08: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref
cmp eax, 75
- jge G_M19657_IG10
+ jge G_M19657_IG14
;; size=9 bbWeight=1.32 PerfScore 1.65
-G_M19657_IG05: ; bbWeight=1.30, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG09: ; bbWeight=1.30, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
test rcx, rcx
- je G_M19657_IG08
+ je G_M19657_IG12
test rdx, rdx
- je SHORT G_M19657_IG08
+ je SHORT G_M19657_IG12
cmp dword ptr [rcx+0x08], r9d
- jbe SHORT G_M19657_IG08
+ jbe SHORT G_M19657_IG12
mov r11d, r9d mov rbx, gword ptr [rcx+8*r11+0x10] ; gcrRegs +[rbx] test rbx, rbx
- je SHORT G_M19657_IG08
+ je SHORT G_M19657_IG12
test eax, eax
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
cmp dword ptr [rbx+0x08], 75
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
cmp dword ptr [rdx+0x08], 75
- jl SHORT G_M19657_IG08
+ jl SHORT G_M19657_IG12
mov esi, dword ptr [r8+0x08] cmp r9d, esi
- jae G_M19657_IG19
+ jae G_M19657_IG16
mov rdi, gword ptr [r8+8*r11+0x10] ; gcrRegs +[rdi] mov ebp, r10d ;; size=70 bbWeight=1.30 PerfScore 32.28
-G_M19657_IG06: ; bbWeight=97.69, gcrefRegs=018E {rcx rdx rbx rdi r8}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG10: ; bbWeight=97.69, gcrefRegs=018E {rcx rdx rbx rdi r8}, byrefRegs=0000 {}, byref, isz
mov r11, rdi ; gcrRegs +[r11] cmp r10d, dword ptr [r11+0x08]
- jae G_M19657_IG19
+ jae G_M19657_IG16
lea r14, bword ptr [r11+4*rbp+0x10] ; byrRegs +[r14] mov r11d, dword ptr [r14] @@ -126,350 +204,391 @@ G_M19657_IG06: ; bbWeight=97.69, gcrefRegs=018E {rcx rdx rbx rdi r8}, byr mov rsi, gword ptr [rdx+8*rsi+0x10] ; gcrRegs +[rsi] cmp r10d, dword ptr [rsi+0x08]
- jae G_M19657_IG19
+ jae G_M19657_IG16
imul r15d, dword ptr [rsi+4*rbp+0x10] add r11d, r15d mov dword ptr [r14], r11d inc eax cmp eax, 75
- jl SHORT G_M19657_IG06
+ jl SHORT G_M19657_IG10
;; size=65 bbWeight=97.69 PerfScore 2295.75
-G_M19657_IG07: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG11: ; bbWeight=1.32, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi rdi] ; byrRegs -[r14]
- jmp SHORT G_M19657_IG10
+ jmp SHORT G_M19657_IG14
;; size=2 bbWeight=1.32 PerfScore 2.64
-G_M19657_IG08: ; bbWeight=0.01, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref
+G_M19657_IG12: ; bbWeight=0.01, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
mov esi, dword ptr [r8+0x08] mov r11d, r9d cmp r9d, esi
- jae G_M19657_IG19
+ jae SHORT G_M19657_IG16
mov rdi, gword ptr [r8+8*r11+0x10] ; gcrRegs +[rdi] mov ebp, r10d
- ;; size=24 bbWeight=0.01 PerfScore 0.07 -G_M19657_IG09: ; bbWeight=0.99, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.01 PerfScore 0.07 +G_M19657_IG13: ; bbWeight=0.99, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
mov r14, rdi ; gcrRegs +[r14] cmp r10d, dword ptr [r14+0x08]
- jae G_M19657_IG19
+ jae SHORT G_M19657_IG16
lea r14, bword ptr [r14+4*rbp+0x10] ; gcrRegs -[r14] ...

coreclr_tests.run.windows.x64.checked.mch

+41 (+1.19%) : 484167.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T02] ( 41, 33.03) byref -> rbx this single-def ; V01 arg1 [V01,T33] ( 10, 6.44) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 25.02) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 25.02) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T25] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T63] ( 3, 4.00) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 61, 62.05) int -> r13 ld-addr-op -; V06 loc2 [V06,T08] ( 31, 18.01) ushort -> [rsp+0x104] -; V07 loc3 [V07,T37] ( 13, 7.00) int -> [rsp+0x100]
+; V05 loc1 [V05,T01] ( 66, 62.05) int -> r13 ld-addr-op +; V06 loc2 [V06,T08] ( 34, 18.01) ushort -> [rsp+0x104] +; V07 loc3 [V07,T37] ( 16, 7.00) int -> [rsp+0x100]
; V08 loc4 [V08,T35] ( 5, 8.01) ubyte -> [rsp+0xFC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T19] ( 7, 12.01) int -> [rsp+0xF8] @@ -171,10 +171,10 @@ ;* V159 tmp138 [V159 ] ( 0, 0 ) int -> zero-ref "field V72._length (fldOffset=0x8)" P-INDEP ; V160 tmp139 [V160,T91] ( 2, 0 ) byref -> rdx "field V78._reference (fldOffset=0x0)" P-INDEP ; V161 tmp140 [V161,T94] ( 2, 0 ) int -> rax "field V78._length (fldOffset=0x8)" P-INDEP
-; V162 tmp141 [V162,T92] ( 2, 0 ) byref -> rcx "field V82._reference (fldOffset=0x0)" P-INDEP -; V163 tmp142 [V163,T95] ( 2, 0 ) int -> r10 "field V82._length (fldOffset=0x8)" P-INDEP -; V164 tmp143 [V164,T93] ( 2, 0 ) byref -> rcx "field V84._reference (fldOffset=0x0)" P-INDEP -; V165 tmp144 [V165,T96] ( 2, 0 ) int -> r10 "field V84._length (fldOffset=0x8)" P-INDEP
+; V162 tmp141 [V162,T92] ( 2, 0 ) byref -> r10 "field V82._reference (fldOffset=0x0)" P-INDEP +; V163 tmp142 [V163,T95] ( 2, 0 ) int -> r8 "field V82._length (fldOffset=0x8)" P-INDEP +; V164 tmp143 [V164,T93] ( 2, 0 ) byref -> r10 "field V84._reference (fldOffset=0x0)" P-INDEP +; V165 tmp144 [V165,T96] ( 2, 0 ) int -> r8 "field V84._length (fldOffset=0x8)" P-INDEP
;* V166 tmp145 [V166 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP ;* V167 tmp146 [V167 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP ; V168 tmp147 [V168,T57] ( 3, 4.00) byref -> [rsp+0x28] spill-single-def "field V90._reference (fldOffset=0x0)" P-INDEP @@ -199,7 +199,7 @@ ; V187 cse2 [V187,T72] ( 3, 3.00) int -> r10 "CSE - conservative" ; V188 cse3 [V188,T71] ( 5, 3.00) int -> registers multi-def "CSE - conservative" ; V189 cse4 [V189,T00] ( 23,216.15) ref -> registers multi-def "CSE - aggressive"
-; V190 cse5 [V190,T04] ( 18, 26.02) int -> r12 "CSE - aggressive"
+; V190 cse5 [V190,T04] ( 19, 26.02) int -> r12 "CSE - aggressive"
; V191 cse6 [V191,T32] ( 3, 9.01) int -> rcx "CSE - moderate" ; V192 rat0 [V192,T38] ( 3, 6.24) byref -> rcx "TLS field access" ; V193 rat1 [V193,T26] ( 3, 9.36) long -> rcx "TLS access" @@ -488,7 +488,7 @@ G_M36935_IG20: ; bbWeight=3.00, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov gword ptr [rsp+0x78], r10 ; GC ptr vars +{V13} test r15, r15
- jne G_M36935_IG96
+ jne G_M36935_IG99
;; size=55 bbWeight=3.00 PerfScore 25.52 G_M36935_IG21: ; bbWeight=3.00, gcVars=00000000000000400010000000800000 {V12 V13 V130}, gcrefRegs=94C0 {rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; gcrRegs -[rax] @@ -561,7 +561,7 @@ G_M36935_IG28: ; bbWeight=2.00, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov r9, gword ptr [rsp+0x70] ; gcrRegs +[r9] cmp qword ptr [r9], rcx
- jne G_M36935_IG101
+ jne G_M36935_IG104
add r9, 8 ; gcrRegs -[r9] ; byrRegs +[r9] @@ -581,11 +581,11 @@ G_M36935_IG29: ; bbWeight=1.56, gcVars=00000000000000400210000000800000 { mov rcx, qword ptr GS:[0x0058] mov rcx, qword ptr [rcx] cmp dword ptr [rcx+0xD8], 2
- jl G_M36935_IG100
+ jl G_M36935_IG103
mov rcx, qword ptr [rcx+0xE0] mov rcx, qword ptr [rcx+0x10] test rcx, rcx
- je G_M36935_IG100
+ je G_M36935_IG103
mov rcx, bword ptr [rcx] ; byrRegs +[rcx] add rcx, 16 @@ -627,20 +627,19 @@ G_M36935_IG33: ; bbWeight=2.00, gcrefRegs=88C0 {rsi rdi r11 r15}, byrefRe mov dword ptr [rsp+0x8C], r10d mov r9, qword ptr [rsp+0xB8] mov qword ptr [rsp+0x90], r9
- mov rcx, bword ptr [rsp+0x38] - ; byrRegs +[rcx] - mov bword ptr [rsp+0xA8], rcx - mov r10d, dword ptr [rsp+0xD0] - mov dword ptr [rsp+0xB0], r10d
+ mov r10, bword ptr [rsp+0x38] + ; byrRegs +[r10] + mov bword ptr [rsp+0xA8], r10 + mov r8d, dword ptr [rsp+0xD0] + mov dword ptr [rsp+0xB0], r8d
mov rax, bword ptr [rsp+0x28] ; byrRegs +[rax] mov bword ptr [rsp+0x98], rax mov edx, dword ptr [rsp+0xC8] mov dword ptr [rsp+0xA0], edx
- lea rdx, [rsp+0xF0] - mov qword ptr [rsp+0x20], rdx
+ lea rcx, [rsp+0xF0] + mov qword ptr [rsp+0x20], rcx
lea rcx, [rsp+0x88]
- ; byrRegs -[rcx]
lea rdx, [rsp+0xA8] lea r9, [rsp+0x98] mov r8, r11 @@ -648,7 +647,7 @@ G_M36935_IG33: ; bbWeight=2.00, gcrefRegs=88C0 {rsi rdi r11 r15}, byrefRe ; GC ptr vars -{V168} call [<unknown method>] ; gcrRegs -[r8 r11]
- ; byrRegs -[rax]
+ ; byrRegs -[rax r10]
; gcr arg pop 0 ;; size=150 bbWeight=2.00 PerfScore 40.55 G_M36935_IG34: ; bbWeight=2.00, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref @@ -659,7 +658,7 @@ G_M36935_IG34: ; bbWeight=2.00, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov edx, dword ptr [rsp+0xF0] add dword ptr [rbx+0x08], edx test r12d, r12d
- jne G_M36935_IG99
+ jne G_M36935_IG102
jmp G_M36935_IG04 ;; size=37 bbWeight=2.00 PerfScore 19.02 G_M36935_IG35: ; bbWeight=0.00, gcVars=00000000000000400210000000800000 {V12 V13 V130 V168}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref @@ -772,23 +771,23 @@ G_M36935_IG45: ; bbWeight=1, gcVars=00000000000000400010000000800000 {V12 G_M36935_IG46: ; bbWeight=0.50, gcrefRegs=86C0 {rsi rdi r9 r10 r15}, byrefRegs=0028 {rbx rbp}, byref mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [r9], rdx
- jne G_M36935_IG102
+ jne G_M36935_IG105
xor r9, r9 ;; size=22 bbWeight=0.50 PerfScore 2.25 G_M36935_IG47: ; bbWeight=1, gcrefRegs=86C0 {rsi rdi r9 r10 r15}, byrefRegs=0028 {rbx rbp}, byref mov r11, r9 ; gcrRegs +[r11] test r11, r11
- jne G_M36935_IG103
+ jne G_M36935_IG106
;; size=12 bbWeight=1 PerfScore 1.50 G_M36935_IG48: ; bbWeight=1, gcVars=00000000000000000000000000800000 {V13}, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref ; gcrRegs -[r9 r11] ; GC ptr vars -{V12 V130} test r10, r10
- je G_M36935_IG106
+ je G_M36935_IG109
mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [r10], rdx
- jne G_M36935_IG107
+ jne G_M36935_IG110
;; size=28 bbWeight=1 PerfScore 5.50 G_M36935_IG49: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref ; GC ptr vars -{V13} @@ -799,7 +798,7 @@ G_M36935_IG50: ; bbWeight=1, gcrefRegs=80C2 {rcx rsi rdi r15}, byrefRegs= ; gcrRegs -[r10] test rcx, rcx mov dword ptr [rsp+0xFC], r12d
- je G_M36935_IG108
+ je G_M36935_IG111
;; size=17 bbWeight=1 PerfScore 2.25 G_M36935_IG51: ; bbWeight=0.50, gcrefRegs=80C2 {rcx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref mov r12, rcx @@ -809,7 +808,7 @@ G_M36935_IG52: ; bbWeight=1, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs= ; gcrRegs -[rcx] mov r8d, dword ptr [rsp+0x100] cmp dword ptr [r12+0x08], r8d
- jl G_M36935_IG109
+ jl G_M36935_IG112
;; size=19 bbWeight=1 PerfScore 5.00 G_M36935_IG53: ; bbWeight=1, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=0028 {rbx rbp}, byref mov r10d, dword ptr [rbx+0x08] @@ -1085,9 +1084,7 @@ G_M36935_IG81: ; bbWeight=0, gcVars=00000000000000000010000000000000 {V13 jbe G_M36935_IG66 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=41 bbWeight=0 PerfScore 0.00
+ ;; size=37 bbWeight=0 PerfScore 0.00
G_M36935_IG82: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea ecx, [rax-0x30] cmp ecx, 9 @@ -1104,10 +1101,8 @@ G_M36935_IG83: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG66 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
mov dword ptr [rsp+0xF8], r8d
- mov eax, ecx - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG84: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 32 mov r8d, dword ptr [rsp+0xF8] @@ -1115,7 +1110,7 @@ G_M36935_IG84: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ;; size=13 bbWeight=0 PerfScore 0.00 G_M36935_IG85: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 44
- jne G_M36935_IG92
+ jne G_M36935_IG95
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG86: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d @@ -1123,10 +1118,8 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG66 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG86
- mov eax, ecx
cmp eax, 45 jne SHORT G_M36935_IG87 mov dword ptr [rsp+0xFC], 1 @@ -1135,52 +1128,72 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG66 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz add eax, -48 cmp eax, 10 jae G_M36935_IG65 inc r13d cmp r12d, r13d
- ja SHORT G_M36935_IG89 - jmp G_M36935_IG66 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG66 + test r13d, r13d + jl SHORT G_M36935_IG91 + jmp SHORT G_M36935_IG89 + ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG88: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea eax, [rax+4*rax]
- lea eax, [rcx+2*rax-0x30]
+ lea eax, [r10+2*rax-0x30]
inc r13d cmp r12d, r13d jbe G_M36935_IG66
- ;; size=19 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG89: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp r13d, r12d - jae G_M36935_IG73
mov ecx, r13d movzx rcx, word ptr [rsi+2*rcx+0x0C]
- lea r10d, [rcx-0x30] - cmp r10d, 9 - ja SHORT G_M36935_IG91
+ mov r10d, ecx + lea ecx, [r10-0x30]
...

+45 (+1.22%) : 541846.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T08] ( 42, 23 ) byref -> rbx this single-def ; V01 arg1 [V01,T37] ( 10, 3.00) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T12] ( 19, 12 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T12] ( 20, 12 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T19] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T65] ( 3, 2 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T07] ( 63, 25 ) int -> r13 ld-addr-op -; V06 loc2 [V06,T29] ( 31, 6 ) ushort -> [rsp+0x124] -; V07 loc3 [V07,T62] ( 12, 2 ) int -> [rsp+0x120]
+; V05 loc1 [V05,T07] ( 68, 25 ) int -> r13 ld-addr-op +; V06 loc2 [V06,T29] ( 34, 6 ) ushort -> [rsp+0x124] +; V07 loc3 [V07,T62] ( 15, 2 ) int -> [rsp+0x120]
; V08 loc4 [V08,T53] ( 5, 3 ) ubyte -> [rsp+0x11C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T40] ( 7, 4 ) int -> [rsp+0x118] @@ -290,7 +290,7 @@ ; V278 cse1 [V278,T56] ( 3, 3 ) int -> r11 "CSE - conservative" ; V279 cse2 [V279,T57] ( 3, 3 ) int -> rsi "CSE - conservative" ; V280 cse3 [V280,T02] ( 32,158.85) ref -> registers multi-def "CSE - aggressive"
-; V281 cse4 [V281,T17] ( 20, 11 ) int -> r12 "CSE - moderate"
+; V281 cse4 [V281,T17] ( 21, 11 ) int -> r12 "CSE - moderate"
; V282 rat0 [V282,T27] ( 5, 7 ) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; ; Lcl frame size = 296 @@ -567,7 +567,7 @@ G_M36935_IG20: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 mov gword ptr [rsp+0x90], r10 ; GC ptr vars +{V13} test r15, r15
- jne G_M36935_IG112
+ jne G_M36935_IG115
;; size=58 bbWeight=1 PerfScore 8.50 G_M36935_IG21: ; bbWeight=1, gcVars=00000000000012008000000000000000 {V12 V13 V189}, gcrefRegs=94C0 {rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; gcrRegs -[rax] @@ -966,7 +966,7 @@ G_M36935_IG61: ; bbWeight=0.50, gcVars=00000000000012008000000000000000 { ; GC ptr vars +{V12 V13 V76 V189} mov rcx, 0xD1FFAB1E ; System.Int32 cmp qword ptr [r9], rcx
- jne G_M36935_IG115
+ jne G_M36935_IG118
jmp G_M36935_IG23 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M36935_IG62: ; bbWeight=0.50, gcVars=00000000000000000000004010000000 {V79 V197}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref @@ -1101,23 +1101,23 @@ G_M36935_IG68: ; bbWeight=0, gcVars=00000000000012008000000000000000 {V12 test rax, rax je SHORT G_M36935_IG70 mov rax, gword ptr [rsp+0x80]
- mov ecx, dword ptr [rsp+0xC8] - test ecx, ecx
+ mov edx, dword ptr [rsp+0xC8] + test edx, edx
je SHORT G_M36935_IG69
- mov rdx, gword ptr [rsp+0x98] - ; gcrRegs +[rdx] - test rdx, rdx - mov gword ptr [rsp+0x98], rdx
+ mov r8, gword ptr [rsp+0x98] + ; gcrRegs +[r8] + test r8, r8 + mov gword ptr [rsp+0x98], r8
jne SHORT G_M36935_IG69
- mov rdx, bword ptr [rsp+0x48] - ; gcrRegs -[rdx] - ; byrRegs +[rdx] - mov bword ptr [rsp+0xB0], rdx - mov dword ptr [rsp+0xB8], ecx
+ mov r10, bword ptr [rsp+0x48] + ; byrRegs +[r10] + mov bword ptr [rsp+0xB0], r10 + mov dword ptr [rsp+0xB8], edx
lea rcx, [rsp+0xB0] ; GC ptr vars -{V12 V13 V76 V189} call <unknown method>
- ; byrRegs -[rdx]
+ ; gcrRegs -[r8] + ; byrRegs -[r10]
; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx] @@ -1442,9 +1442,7 @@ G_M36935_IG97: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V18 jbe G_M36935_IG84 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=41 bbWeight=0 PerfScore 0.00
+ ;; size=37 bbWeight=0 PerfScore 0.00
G_M36935_IG98: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea ecx, [rax-0x30] cmp ecx, 9 @@ -1461,10 +1459,8 @@ G_M36935_IG99: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG84 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
mov dword ptr [rsp+0x118], r8d
- mov eax, ecx - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG100: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 32 mov r8d, dword ptr [rsp+0x118] @@ -1472,7 +1468,7 @@ G_M36935_IG100: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002 ;; size=13 bbWeight=0 PerfScore 0.00 G_M36935_IG101: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 44
- jne G_M36935_IG108
+ jne G_M36935_IG111
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG102: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d @@ -1480,10 +1476,8 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002 jbe G_M36935_IG84 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG102
- mov eax, ecx
cmp eax, 45 jne SHORT G_M36935_IG103 mov dword ptr [rsp+0x11C], 1 @@ -1492,54 +1486,74 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002 jbe G_M36935_IG84 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M36935_IG103: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz add eax, -48 cmp eax, 10 jae G_M36935_IG83 inc r13d cmp r12d, r13d
- ja SHORT G_M36935_IG105 - jmp G_M36935_IG84 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG84 + test r13d, r13d + jl SHORT G_M36935_IG107 + jmp SHORT G_M36935_IG105 + ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG104: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea eax, [rax+4*rax]
- lea eax, [rcx+2*rax-0x30]
+ lea eax, [r10+2*rax-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG84 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M36935_IG105: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + mov ecx, r13d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + mov r10d, ecx + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG110 + cmp eax, 0xD1FFAB1E + jl SHORT G_M36935_IG104 + jmp SHORT G_M36935_IG108 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + lea eax, [rax+4*rax] + lea eax, [r10+2*rax-0x30]
mov dword ptr [rsp+0x120], eax inc r13d cmp r12d, r13d mov eax, dword ptr [rsp+0x120] jbe G_M36935_IG84
- ;; size=33 bbWeight=0 PerfScore 0.00 -G_M36935_IG105: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d jae G_M36935_IG89
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - lea r10d, [rcx-0x30] - cmp r10d, 9 - ja SHORT G_M36935_IG107
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG110
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG104 - cmp ecx, 32 - jne SHORT G_M36935_IG110 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG106 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG108: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + jne SHORT G_M36935_IG113 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG109: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d cmp r12d, r13d jbe G_M36935_IG84
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M36935_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz - cmp ecx, 32 - je SHORT G_M36935_IG106
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M36935_IG110: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + je SHORT G_M36935_IG109
mov dword ptr [rsp+0x120], eax
- mov eax, ecx - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M36935_IG108: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ mov eax, r10d + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M36935_IG111: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125 mov dword ptr [rsp+0x118], r8d je G_M36935_IG18 @@ -1547,7 +1561,7 @@ G_M36935_IG108: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002 jne G_M36935_IG85 mov ecx, r13d ;; size=29 bbWeight=0 PerfScore 0.00
-G_M36935_IG109: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG112: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars -{V189} inc r13d cmp r12d, r13d @@ -1555,18 +1569,18 @@ G_M36935_IG109: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C] cmp eax, 125
- je SHORT G_M36935_IG111
+ je SHORT G_M36935_IG114
cmp eax, 123
- jne SHORT G_M36935_IG109
+ jne SHORT G_M36935_IG112
jmp G_M36935_IG85 ;; size=35 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V189}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG113: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V189}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars +{V189} ...

+45 (+1.22%) : 541849.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T08] ( 42, 23 ) byref -> rbx this single-def ; V01 arg1 [V01,T37] ( 10, 3.00) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T12] ( 19, 12 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T12] ( 20, 12 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T19] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T65] ( 3, 2 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T07] ( 63, 25 ) int -> r13 ld-addr-op -; V06 loc2 [V06,T29] ( 31, 6 ) ushort -> [rsp+0x124] -; V07 loc3 [V07,T62] ( 12, 2 ) int -> [rsp+0x120]
+; V05 loc1 [V05,T07] ( 68, 25 ) int -> r13 ld-addr-op +; V06 loc2 [V06,T29] ( 34, 6 ) ushort -> [rsp+0x124] +; V07 loc3 [V07,T62] ( 15, 2 ) int -> [rsp+0x120]
; V08 loc4 [V08,T53] ( 5, 3 ) ubyte -> [rsp+0x11C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T40] ( 7, 4 ) int -> [rsp+0x118] @@ -290,7 +290,7 @@ ; V278 cse1 [V278,T56] ( 3, 3 ) int -> r11 "CSE - conservative" ; V279 cse2 [V279,T57] ( 3, 3 ) int -> rsi "CSE - conservative" ; V280 cse3 [V280,T02] ( 32,158.85) ref -> registers multi-def "CSE - aggressive"
-; V281 cse4 [V281,T17] ( 20, 11 ) int -> r12 "CSE - moderate"
+; V281 cse4 [V281,T17] ( 21, 11 ) int -> r12 "CSE - moderate"
; V282 rat0 [V282,T27] ( 5, 7 ) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; ; Lcl frame size = 296 @@ -567,7 +567,7 @@ G_M36935_IG20: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 mov gword ptr [rsp+0x90], r10 ; GC ptr vars +{V13} test r15, r15
- jne G_M36935_IG112
+ jne G_M36935_IG115
;; size=58 bbWeight=1 PerfScore 8.50 G_M36935_IG21: ; bbWeight=1, gcVars=00000000000012008000000000000000 {V12 V13 V189}, gcrefRegs=94C0 {rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; gcrRegs -[rax] @@ -966,7 +966,7 @@ G_M36935_IG61: ; bbWeight=0.50, gcVars=00000000000012008000000000000000 { ; GC ptr vars +{V12 V13 V76 V189} mov rcx, 0xD1FFAB1E ; System.Int32 cmp qword ptr [r9], rcx
- jne G_M36935_IG115
+ jne G_M36935_IG118
jmp G_M36935_IG23 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M36935_IG62: ; bbWeight=0.50, gcVars=00000000000000000000004010000000 {V79 V197}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref @@ -1101,23 +1101,23 @@ G_M36935_IG68: ; bbWeight=0, gcVars=00000000000012008000000000000000 {V12 test rax, rax je SHORT G_M36935_IG70 mov rax, gword ptr [rsp+0x80]
- mov ecx, dword ptr [rsp+0xC8] - test ecx, ecx
+ mov edx, dword ptr [rsp+0xC8] + test edx, edx
je SHORT G_M36935_IG69
- mov rdx, gword ptr [rsp+0x98] - ; gcrRegs +[rdx] - test rdx, rdx - mov gword ptr [rsp+0x98], rdx
+ mov r8, gword ptr [rsp+0x98] + ; gcrRegs +[r8] + test r8, r8 + mov gword ptr [rsp+0x98], r8
jne SHORT G_M36935_IG69
- mov rdx, bword ptr [rsp+0x48] - ; gcrRegs -[rdx] - ; byrRegs +[rdx] - mov bword ptr [rsp+0xB0], rdx - mov dword ptr [rsp+0xB8], ecx
+ mov r10, bword ptr [rsp+0x48] + ; byrRegs +[r10] + mov bword ptr [rsp+0xB0], r10 + mov dword ptr [rsp+0xB8], edx
lea rcx, [rsp+0xB0] ; GC ptr vars -{V12 V13 V76 V189} call <unknown method>
- ; byrRegs -[rdx]
+ ; gcrRegs -[r8] + ; byrRegs -[r10]
; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx] @@ -1442,9 +1442,7 @@ G_M36935_IG97: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V18 jbe G_M36935_IG84 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=41 bbWeight=0 PerfScore 0.00
+ ;; size=37 bbWeight=0 PerfScore 0.00
G_M36935_IG98: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea ecx, [rax-0x30] cmp ecx, 9 @@ -1461,10 +1459,8 @@ G_M36935_IG99: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG84 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
mov dword ptr [rsp+0x118], r8d
- mov eax, ecx - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG100: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 32 mov r8d, dword ptr [rsp+0x118] @@ -1472,7 +1468,7 @@ G_M36935_IG100: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002 ;; size=13 bbWeight=0 PerfScore 0.00 G_M36935_IG101: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 44
- jne G_M36935_IG108
+ jne G_M36935_IG111
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG102: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d @@ -1480,10 +1476,8 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002 jbe G_M36935_IG84 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG102
- mov eax, ecx
cmp eax, 45 jne SHORT G_M36935_IG103 mov dword ptr [rsp+0x11C], 1 @@ -1492,54 +1486,74 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002 jbe G_M36935_IG84 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M36935_IG103: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz add eax, -48 cmp eax, 10 jae G_M36935_IG83 inc r13d cmp r12d, r13d
- ja SHORT G_M36935_IG105 - jmp G_M36935_IG84 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG84 + test r13d, r13d + jl SHORT G_M36935_IG107 + jmp SHORT G_M36935_IG105 + ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG104: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea eax, [rax+4*rax]
- lea eax, [rcx+2*rax-0x30]
+ lea eax, [r10+2*rax-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG84 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M36935_IG105: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + mov ecx, r13d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + mov r10d, ecx + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG110 + cmp eax, 0xD1FFAB1E + jl SHORT G_M36935_IG104 + jmp SHORT G_M36935_IG108 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + lea eax, [rax+4*rax] + lea eax, [r10+2*rax-0x30]
mov dword ptr [rsp+0x120], eax inc r13d cmp r12d, r13d mov eax, dword ptr [rsp+0x120] jbe G_M36935_IG84
- ;; size=33 bbWeight=0 PerfScore 0.00 -G_M36935_IG105: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d jae G_M36935_IG89
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - lea r10d, [rcx-0x30] - cmp r10d, 9 - ja SHORT G_M36935_IG107
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG110
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG104 - cmp ecx, 32 - jne SHORT G_M36935_IG110 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG106 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG108: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + jne SHORT G_M36935_IG113 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG109: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d cmp r12d, r13d jbe G_M36935_IG84
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M36935_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz - cmp ecx, 32 - je SHORT G_M36935_IG106
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M36935_IG110: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + je SHORT G_M36935_IG109
mov dword ptr [rsp+0x120], eax
- mov eax, ecx - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M36935_IG108: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ mov eax, r10d + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M36935_IG111: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125 mov dword ptr [rsp+0x118], r8d je G_M36935_IG18 @@ -1547,7 +1561,7 @@ G_M36935_IG108: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002 jne G_M36935_IG85 mov ecx, r13d ;; size=29 bbWeight=0 PerfScore 0.00
-G_M36935_IG109: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG112: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars -{V189} inc r13d cmp r12d, r13d @@ -1555,18 +1569,18 @@ G_M36935_IG109: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C] cmp eax, 125
- je SHORT G_M36935_IG111
+ je SHORT G_M36935_IG114
cmp eax, 123
- jne SHORT G_M36935_IG109
+ jne SHORT G_M36935_IG112
jmp G_M36935_IG85 ;; size=35 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V189}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG113: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V189}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars +{V189} ...

+45 (+1.34%) : 480823.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T06] ( 36, 12 ) byref -> rbx this single-def ; V01 arg1 [V01,T08] ( 10, 8.22) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T07] ( 18, 11 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 19, 11 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T10] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T59] ( 3, 2 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T03] ( 62, 23 ) int -> r13 ld-addr-op -; V06 loc2 [V06,T23] ( 31, 6 ) ushort -> [rsp+0xF4] -; V07 loc3 [V07,T55] ( 12, 2 ) int -> [rsp+0xF0]
+; V05 loc1 [V05,T03] ( 67, 23 ) int -> r13 ld-addr-op +; V06 loc2 [V06,T23] ( 34, 6 ) ushort -> [rsp+0xF4] +; V07 loc3 [V07,T55] ( 15, 2 ) int -> [rsp+0xF0]
; V08 loc4 [V08,T47] ( 5, 3 ) ubyte -> [rsp+0xEC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T36] ( 7, 4 ) int -> [rsp+0xE8] @@ -219,7 +219,7 @@ ; V207 cse0 [V207,T51] ( 3, 3 ) int -> r8 "CSE - conservative" ; V208 cse1 [V208,T52] ( 3, 3 ) int -> r11 "CSE - conservative" ; V209 cse2 [V209,T00] ( 23, 84 ) ref -> registers multi-def "CSE - aggressive"
-; V210 cse3 [V210,T09] ( 18, 10 ) int -> r12 "CSE - aggressive"
+; V210 cse3 [V210,T09] ( 19, 10 ) int -> r12 "CSE - aggressive"
; V211 rat0 [V211,T43] ( 3, 3.12) byref -> rcx "TLS field access" ; V212 rat1 [V212,T34] ( 3, 4.67) long -> rcx "TLS access" ; V213 rat2 [V213,T35] ( 3, 4.67) long -> rcx "ThreadStaticBlockBase access" @@ -497,18 +497,18 @@ G_M36935_IG19: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 mov gword ptr [rsp+0x80], r10 ; GC ptr vars +{V13} test r15, r15
- jne G_M36935_IG82
+ jne G_M36935_IG85
;; size=58 bbWeight=1 PerfScore 8.50 G_M36935_IG20: ; bbWeight=1, gcVars=00000000000010000500000000000000 {V12 V13 V142}, gcrefRegs=94C0 {rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; gcrRegs -[rax] test r12, r12
- jne G_M36935_IG93
+ jne G_M36935_IG96
mov r12d, dword ptr [rsp+0xEC] ; gcrRegs -[r12] test r12d, r12d jne SHORT G_M36935_IG21 cmp dword ptr [rsp+0xF0], 0
- jne G_M36935_IG88
+ jne G_M36935_IG91
;; size=36 bbWeight=1 PerfScore 6.50 G_M36935_IG21: ; bbWeight=1, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, byref mov r9, r10 @@ -561,7 +561,7 @@ G_M36935_IG24: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 mov r9, gword ptr [rsp+0x78] ; gcrRegs +[r9] cmp qword ptr [r9], rcx
- jne G_M36935_IG86
+ jne G_M36935_IG89
add r9, 8 ; gcrRegs -[r9] ; byrRegs +[r9] @@ -646,7 +646,7 @@ G_M36935_IG32: ; bbWeight=0.50, gcVars=00000000000010000500000000000000 { ; GC ptr vars -{V148} mov r10, gword ptr [rsp+0x80] ; gcrRegs +[r10]
- jmp G_M36935_IG88
+ jmp G_M36935_IG91
;; size=13 bbWeight=0.50 PerfScore 1.50 G_M36935_IG33: ; bbWeight=0.00, gcVars=00000000000010000500000000000800 {V12 V13 V142 V148}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; gcrRegs -[r10] @@ -674,7 +674,7 @@ G_M36935_IG35: ; bbWeight=0.50, gcVars=00000000000010000500000000000000 { ; GC ptr vars -{V11 V148} mov rcx, 0xD1FFAB1E ; System.Int64 cmp qword ptr [r9], rcx
- jne G_M36935_IG85
+ jne G_M36935_IG88
jmp G_M36935_IG22 ;; size=24 bbWeight=0.50 PerfScore 3.12 G_M36935_IG36: ; bbWeight=0.50, gcVars=00000000000000000000040080000000 {V64 V150}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref @@ -821,11 +821,11 @@ G_M36935_IG46: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 test eax, eax mov r10, gword ptr [rsp+0x80] ; gcrRegs +[r10]
- je G_M36935_IG88
+ je G_M36935_IG91
mov ecx, dword ptr [rsp+0xE0] add dword ptr [rbx+0x08], ecx test r12d, r12d
- jne G_M36935_IG87
+ jne G_M36935_IG90
jmp G_M36935_IG04 ;; size=40 bbWeight=1 PerfScore 9.50 G_M36935_IG47: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc @@ -1025,9 +1025,7 @@ G_M36935_IG67: ; bbWeight=0, gcVars=00000000000000000400000000000000 {V14 jbe G_M36935_IG53 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=41 bbWeight=0 PerfScore 0.00
+ ;; size=37 bbWeight=0 PerfScore 0.00
G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea ecx, [rax-0x30] cmp ecx, 9 @@ -1044,10 +1042,8 @@ G_M36935_IG69: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG53 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
mov dword ptr [rsp+0xE8], r8d
- mov eax, ecx - ;; size=32 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG70: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 32 mov r8d, dword ptr [rsp+0xE8] @@ -1055,7 +1051,7 @@ G_M36935_IG70: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ;; size=13 bbWeight=0 PerfScore 0.00 G_M36935_IG71: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 44
- jne G_M36935_IG78
+ jne G_M36935_IG81
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d @@ -1063,10 +1059,8 @@ G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG53 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG72
- mov eax, ecx
cmp eax, 45 jne SHORT G_M36935_IG73 mov dword ptr [rsp+0xEC], 1 @@ -1075,54 +1069,74 @@ G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG53 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M36935_IG73: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz add eax, -48 cmp eax, 10 jae G_M36935_IG52 inc r13d cmp r12d, r13d
- ja SHORT G_M36935_IG75 - jmp G_M36935_IG53 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG53 + test r13d, r13d + jl SHORT G_M36935_IG77 + jmp SHORT G_M36935_IG75 + ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG74: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea eax, [rax+4*rax]
- lea eax, [rcx+2*rax-0x30]
+ lea eax, [r10+2*rax-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG53 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M36935_IG75: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + mov ecx, r13d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + mov r10d, ecx + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG80 + cmp eax, 0xD1FFAB1E + jl SHORT G_M36935_IG74 + jmp SHORT G_M36935_IG78 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M36935_IG76: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + lea eax, [rax+4*rax] + lea eax, [r10+2*rax-0x30]
mov dword ptr [rsp+0xF0], eax inc r13d cmp r12d, r13d mov eax, dword ptr [rsp+0xF0] jbe G_M36935_IG53
- ;; size=33 bbWeight=0 PerfScore 0.00 -G_M36935_IG75: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG77: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d jae G_M36935_IG59
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - lea r10d, [rcx-0x30] - cmp r10d, 9 - ja SHORT G_M36935_IG77
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG80
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG74 - cmp ecx, 32 - jne SHORT G_M36935_IG80 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M36935_IG76: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG76 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG78: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + jne SHORT G_M36935_IG83 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG79: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d cmp r12d, r13d jbe G_M36935_IG53
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M36935_IG77: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz - cmp ecx, 32 - je SHORT G_M36935_IG76
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M36935_IG80: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + je SHORT G_M36935_IG79
mov dword ptr [rsp+0xF0], eax
- mov eax, ecx - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M36935_IG78: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ mov eax, r10d + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M36935_IG81: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125 mov dword ptr [rsp+0xE8], r8d je G_M36935_IG17 @@ -1130,7 +1144,7 @@ G_M36935_IG78: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jne G_M36935_IG54 mov ecx, r13d ;; size=29 bbWeight=0 PerfScore 0.00
-G_M36935_IG79: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG82: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars -{V142} inc r13d cmp r12d, r13d @@ -1138,18 +1152,18 @@ G_M36935_IG79: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C] cmp eax, 125
- je SHORT G_M36935_IG81
...

+47 (+1.44%) : 451096.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T03] ( 47, 27.42) byref -> rbx this single-def ; V01 arg1 [V01,T25] ( 11, 4.84) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18, 24.49) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 19, 24.49) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T12] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T52] ( 3, 2.89) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 62, 68.91) int -> r13 ld-addr-op -; V06 loc2 [V06,T02] ( 32, 32.82) ushort -> [rsp+0xF4] -; V07 loc3 [V07,T31] ( 12, 5.31) int -> [rsp+0xF0]
+; V05 loc1 [V05,T01] ( 67, 68.85) int -> r13 ld-addr-op +; V06 loc2 [V06,T02] ( 35, 32.82) ushort -> [rsp+0xF4] +; V07 loc3 [V07,T31] ( 15, 5.31) int -> [rsp+0xF0]
; V08 loc4 [V08,T32] ( 5, 4.85) ubyte -> [rsp+0xEC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T19] ( 7, 7.54) int -> [rsp+0xE8] @@ -218,7 +218,7 @@ ; V206 cse3 [V206,T58] ( 5, 2.41) int -> registers multi-def "CSE - conservative" ; V207 cse4 [V207,T74] ( 3, 1.35) int -> r13 "CSE - conservative" ; V208 cse5 [V208,T00] ( 29,147.78) ref -> registers multi-def "CSE - aggressive"
-; V209 cse6 [V209,T05] ( 18, 24.58) int -> r12 "CSE - aggressive"
+; V209 cse6 [V209,T05] ( 19, 24.38) int -> r12 "CSE - aggressive"
; V210 cse7 [V210,T14] ( 12, 9.36) int -> [rsp+0x8C] spill-single-def "CSE - moderate" ; V211 rat0 [V211,T08] ( 6, 14.01) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V212 rat1 [V212,T23] ( 6, 7.49) ref -> registers class-hnd "replacement local" <System.IFormattable> @@ -251,7 +251,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0208 {rb ; byrRegs +[rbp] mov r14d, dword ptr [r9+0x08] test rsi, rsi
- je G_M36935_IG89
+ je G_M36935_IG93
test rdi, rdi je G_M36935_IG14 ;; size=25 bbWeight=1 PerfScore 6.50 @@ -259,7 +259,7 @@ G_M36935_IG03: ; bbWeight=0.81, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0028 ; byrRegs -[r9] mov rdx, 0xD1FFAB1E ; System.Globalization.CultureInfo cmp qword ptr [rdi], rdx
- jne G_M36935_IG90
+ jne G_M36935_IG94
xor rdx, rdx ; gcrRegs +[rdx] ;; size=21 bbWeight=0.81 PerfScore 3.64 @@ -276,7 +276,7 @@ G_M36935_IG05: ; bbWeight=2.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 ; gcrRegs -[rax] mov r12d, dword ptr [rsi+0x08] cmp r12d, r13d
- jbe G_M36935_IG72
+ jbe G_M36935_IG76
;; size=13 bbWeight=2.89 PerfScore 9.38 G_M36935_IG06: ; bbWeight=2.33, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz mov ecx, r13d @@ -321,16 +321,16 @@ G_M36935_IG08: ; bbWeight=2.33, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 ; gcr arg pop 0 mov dword ptr [rsp+0xD8], eax test eax, eax
- jl G_M36935_IG73
+ jl G_M36935_IG77
;; size=64 bbWeight=2.33 PerfScore 23.93 G_M36935_IG09: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, dword ptr [rsp+0xB0]
- ja G_M36935_IG122
+ ja G_M36935_IG126
mov ecx, dword ptr [rbx+0x08] mov edx, dword ptr [rbx+0x18] sub edx, eax cmp ecx, edx
- jg G_M36935_IG91
+ jg G_M36935_IG95
;; size=29 bbWeight=1.89 PerfScore 16.03 G_M36935_IG10: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea rcx, bword ptr [rbx+0x10] @@ -338,7 +338,7 @@ G_M36935_IG10: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov edx, dword ptr [rbx+0x08] mov r8d, dword ptr [rcx+0x08] cmp edx, r8d
- ja G_M36935_IG122
+ ja G_M36935_IG126
mov rcx, bword ptr [rcx] mov r10d, edx lea r10, bword ptr [rcx+2*r10] @@ -366,7 +366,7 @@ G_M36935_IG11: ; bbWeight=7.54, gcVars=00000000000000000000000001100000 { G_M36935_IG12: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz mov eax, dword ptr [rsp+0xD8] cmp eax, dword ptr [rsp+0xD4]
- ja G_M36935_IG123
+ ja G_M36935_IG127
mov r8d, eax add r8, r8 cmp r8, 6 @@ -394,7 +394,7 @@ G_M36935_IG14: ; bbWeight=0.19, gcVars=00000000000000000000000000000000 { G_M36935_IG15: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz ; gcrRegs -[rdx] +[r15] cmp eax, 123
- jne G_M36935_IG116
+ jne G_M36935_IG120
jmp SHORT G_M36935_IG18 ;; size=11 bbWeight=1.89 PerfScore 6.13 G_M36935_IG16: ; bbWeight=0.94, gcVars=00000000000000000000000001100000 {V86 V150}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref @@ -415,17 +415,17 @@ G_M36935_IG17: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 add dword ptr [rbx+0x08], eax add r13d, eax cmp r13d, r12d
- jae G_M36935_IG88
+ jae G_M36935_IG92
mov ecx, r13d movzx rax, word ptr [rsi+2*rcx+0x0C] inc r13d cmp r12d, r13d
- jbe G_M36935_IG118
+ jbe G_M36935_IG122
mov ecx, r13d movzx r8, word ptr [rsi+2*rcx+0x0C] mov dword ptr [rsp+0xF4], r8d cmp eax, r8d
- je G_M36935_IG92
+ je G_M36935_IG96
jmp SHORT G_M36935_IG15 ;; size=70 bbWeight=1.89 PerfScore 29.69 G_M36935_IG18: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz @@ -441,7 +441,7 @@ G_M36935_IG18: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov dword ptr [rsp+0xB4], r11d lea ecx, [r13-0x01] cmp ecx, r12d
- jae G_M36935_IG88
+ jae G_M36935_IG92
lea ecx, [r13-0x01] cmp word ptr [rsi+2*rcx+0x0C], 123 je SHORT G_M36935_IG20 @@ -474,23 +474,23 @@ G_M36935_IG22: ; bbWeight=1.89, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 lea r8d, [rax-0x30] mov dword ptr [rsp+0xE8], r8d cmp r8d, 10
- jae G_M36935_IG117
+ jae G_M36935_IG121
inc r13d cmp r12d, r13d
- jbe G_M36935_IG118
+ jbe G_M36935_IG122
mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C] cmp eax, 125
- je G_M36935_IG38
+ je G_M36935_IG42
;; size=58 bbWeight=1.89 PerfScore 16.50 G_M36935_IG23: ; bbWeight=0.64, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea ecx, [rax-0x30] cmp ecx, 9
- jbe G_M36935_IG96
+ jbe G_M36935_IG100
;; size=12 bbWeight=0.64 PerfScore 1.13 G_M36935_IG24: ; bbWeight=0.64, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 32
- je G_M36935_IG97
+ je G_M36935_IG101
;; size=9 bbWeight=0.64 PerfScore 0.80 G_M36935_IG25: ; bbWeight=0.64, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 44 @@ -498,76 +498,100 @@ G_M36935_IG25: ; bbWeight=0.64, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 ;; size=5 bbWeight=0.64 PerfScore 0.80 G_M36935_IG26: ; bbWeight=0.64, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 125
- je G_M36935_IG38
+ je G_M36935_IG42
;; size=9 bbWeight=0.64 PerfScore 0.80 G_M36935_IG27: ; bbWeight=0.58, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref ; GC ptr vars -{V142} cmp eax, 58
- jne G_M36935_IG119
+ jne G_M36935_IG123
mov ecx, r13d ;; size=12 bbWeight=0.58 PerfScore 0.86 G_M36935_IG28: ; bbWeight=5.93, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref inc r13d cmp r12d, r13d
- jbe G_M36935_IG118
+ jbe G_M36935_IG122
mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C] cmp eax, 125
- je G_M36935_IG35
+ je G_M36935_IG39
;; size=29 bbWeight=5.93 PerfScore 29.67 G_M36935_IG29: ; bbWeight=5.36, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 123
- je G_M36935_IG119
+ je G_M36935_IG123
jmp SHORT G_M36935_IG28 ;; size=11 bbWeight=5.36 PerfScore 17.41 G_M36935_IG30: ; bbWeight=0.13, gcVars=00000000000000000002000000000000 {V142}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; GC ptr vars +{V49 V142} inc r13d cmp r12d, r13d
- jbe G_M36935_IG118
+ jbe G_M36935_IG122
mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C] cmp eax, 32 je SHORT G_M36935_IG30 cmp eax, 45
- je G_M36935_IG98
+ je G_M36935_IG102
;; size=34 bbWeight=0.13 PerfScore 0.84
-G_M36935_IG31: ; bbWeight=0.13, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+G_M36935_IG31: ; bbWeight=0.13, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
add eax, -48 cmp eax, 10
- jae G_M36935_IG117
+ jae G_M36935_IG121
inc r13d cmp r12d, r13d
- jbe G_M36935_IG118 - ;; size=24 bbWeight=0.13 PerfScore 0.40 -G_M36935_IG32: ; bbWeight=0.20, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz - cmp r13d, r12d - jae G_M36935_IG88
+ jbe G_M36935_IG122 + test r13d, r13d + jl SHORT G_M36935_IG37 + jmp SHORT G_M36935_IG33 + ;; size=31 bbWeight=0.13 PerfScore 0.84 +G_M36935_IG32: ; bbWeight=0.07, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + lea eax, [rax+4*rax] + lea eax, [r10+2*rax-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG122 + ;; size=20 bbWeight=0.07 PerfScore 0.20 +G_M36935_IG33: ; bbWeight=0.20, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d movzx rcx, word ptr [rsi+2*rcx+0x0C] mov r10d, ecx lea ecx, [r10-0x30] cmp ecx, 9
- jbe SHORT G_M36935_IG34 - ;; size=29 bbWeight=0.20 PerfScore 1.10 -G_M36935_IG33: ; bbWeight=0.13, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jbe SHORT G_M36935_IG35 + ;; size=20 bbWeight=0.20 PerfScore 0.84 +G_M36935_IG34: ; bbWeight=0.13, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp r10d, 32
- je G_M36935_IG100
+ je G_M36935_IG104
mov dword ptr [rsp+0xF0], eax mov eax, r10d jmp G_M36935_IG26 ;; size=25 bbWeight=0.13 PerfScore 0.60
-G_M36935_IG34: ; bbWeight=0.07, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG35: ; bbWeight=0.07, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
...

+32 (+2.54%) : 470192.dasm - JitTestlcsmixedlcs_cs.LCS:TestEntryPoint():int (Tier1-OSR)

@@ -11,13 +11,13 @@ ; Final local variable assignments ; ;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <<unknown class>>
-; V01 loc1 [V01,T19] ( 25, 307.22) ref -> rsi class-hnd exact <int[]> -; V02 loc2 [V02,T65] ( 3, 0 ) ref -> [rsp+0x260] class-hnd exact tier0-frame <ushort[][]>
+; V01 loc1 [V01,T19] ( 26, 307.23) ref -> rsi class-hnd exact <int[]> +; V02 loc2 [V02,T66] ( 3, 0 ) ref -> [rsp+0x260] class-hnd exact tier0-frame <ushort[][]>
; V03 loc3 [V03,T51] ( 2, 2.38) ref -> rbp class-hnd <int[,,,][,,,]> ; V04 loc4 [V04,T20] ( 17, 293.98) ref -> rdi class-hnd <int[,][,][,][,]> ; V05 loc5 [V05,T02] ( 30, 670.98) ref -> rbx class-hnd exact <int[]> ;* V06 loc6 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc7 [V07,T64] ( 6, 0 ) int -> rdx
+; V07 loc7 [V07,T65] ( 10, 0.04) int -> rdx
; V08 OutArgs [V08 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <<unknown class>> ;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "Strict ordering of exceptions for Array store" @@ -50,7 +50,7 @@ ; V37 tmp29 [V37,T50] ( 3, 3.35) byref -> r8 "dup spill" ; V38 tmp30 [V38,T54] ( 3, 0.59) byref -> r8 "dup spill" ; V39 tmp31 [V39,T62] ( 3, 0.13) byref -> rcx "dup spill"
-; V40 tmp32 [V40,T66] ( 3, 0 ) byref -> rcx "dup spill"
+; V40 tmp32 [V40,T63] ( 6, 0.07) byref -> rcx "dup spill"
; V41 tmp33 [V41,T00] ( 6,1028.48) ref -> r8 class-hnd "impImportNewObjArray" <int[,][,]> ; V42 tmp34 [V42,T14] ( 2, 342.83) int -> rcx "impImportNewObjArray" ; V43 tmp35 [V43,T15] ( 2, 342.83) int -> rdx "impImportNewObjArray" @@ -83,13 +83,13 @@ ; V70 cse1 [V70,T53] ( 3, 1.04) byref -> [rsp+0x30] spill-single-def hoist "CSE - conservative" ; V71 cse2 [V71,T61] ( 3, 0.22) byref -> r10 "CSE - conservative" ; V72 cse3 [V72,T60] ( 3, 0.30) int -> rcx "CSE - conservative"
-; V73 cse4 [V73,T63] ( 3, 0.07) int -> rdx "CSE - conservative"
+; V73 cse4 [V73,T64] ( 3, 0.07) int -> rdx "CSE - conservative"
; V74 cse5 [V74,T22] ( 3, 257.12) int -> rcx "CSE - moderate" ; V75 cse6 [V75,T29] ( 3, 42.88) int -> rcx "CSE - moderate" ; V76 cse7 [V76,T48] ( 3, 7.15) int -> rcx "CSE - conservative" ; V77 cse8 [V77,T52] ( 3, 1.67) int -> rcx "CSE - conservative" ; V78 cse9 [V78,T31] ( 2, 15.29) int -> r15 hoist "CSE - aggressive"
-; V79 cse10 [V79,T25] ( 7, 191.47) int -> r13 hoist "CSE - moderate"
+; V79 cse10 [V79,T25] ( 8, 191.47) int -> r13 hoist "CSE - moderate"
; V80 cse11 [V80,T21] ( 9, 264.53) int -> registers multi-def "CSE - moderate" ; V81 cse12 [V81,T26] ( 6, 102.90) int -> registers hoist multi-def "CSE - moderate" ; V82 cse13 [V82,T27] ( 6, 102.90) int -> [rsp+0x3C] hoist multi-def "CSE - moderate" @@ -121,26 +121,26 @@ G_M23463_IG01: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, mov rbx, gword ptr [rsp+0x248] ; gcrRegs +[rbx] ;; size=112 bbWeight=1 PerfScore 18.83
-G_M23463_IG02: ; bbWeight=1, gcVars=00000000000000020000000000000000 {V02}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars +{V02 V65}
+G_M23463_IG02: ; bbWeight=1, gcVars=00000000000000040000000000000000 {V02}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars +{V02 V66}
mov r15d, dword ptr [rbx+0x08] mov r13d, dword ptr [rsi+0x08] mov r14, gword ptr [rsp+0x260] ; gcrRegs +[r14]
- jmp G_M23463_IG20
+ jmp G_M23463_IG21
;; size=21 bbWeight=1 PerfScore 7.00 G_M23463_IG03: ; bbWeight=2.04, gcVars=00000000000000000000000000000000 {}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V02 V65}
+ ; GC ptr vars -{V02 V66}
lea r12, bword ptr [rbx+0x1C] ; byrRegs +[r12]
- jmp G_M23463_IG16
+ jmp G_M23463_IG17
;; size=9 bbWeight=2.04 PerfScore 5.09 G_M23463_IG04: ; bbWeight=0.39, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, byref lea rax, bword ptr [rbx+0x18] ; byrRegs +[rax] mov bword ptr [rsp+0x30], rax ; GC ptr vars +{V70}
- jmp G_M23463_IG11
+ jmp G_M23463_IG12
;; size=14 bbWeight=0.39 PerfScore 1.37 G_M23463_IG05: ; bbWeight=0.02, gcVars=00000000000000000020000000000000 {V70}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1400 {r10 r12}, gcvars, byref, isz ; byrRegs -[rax] +[r10] @@ -148,7 +148,7 @@ G_M23463_IG05: ; bbWeight=0.02, gcVars=00000000000000000020000000000000 { mov dword ptr [r10], ecx mov ecx, dword ptr [rbx+0x14] cmp ecx, dword ptr [rsi+0x14]
- jl SHORT G_M23463_IG07
+ jl SHORT G_M23463_IG08
;; size=13 bbWeight=0.02 PerfScore 0.16 G_M23463_IG06: ; bbWeight=0.02, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1400 {r10 r12}, byref, isz lea rcx, bword ptr [rbx+0x10] @@ -157,11 +157,26 @@ G_M23463_IG06: ; bbWeight=0.02, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byr inc edx mov dword ptr [rcx], edx cmp edx, dword ptr [rsi+0x10]
- jge G_M23463_IG27
+ jge G_M23463_IG28
jmp SHORT G_M23463_IG05 ;; size=21 bbWeight=0.02 PerfScore 0.21
-G_M23463_IG07: ; bbWeight=0.09, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, byref, isz - ; byrRegs -[rcx r10]
+G_M23463_IG07: ; bbWeight=0.01, gcVars=00000000000000000000000000000000 {}, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rbx rbp] + ; byrRegs -[rcx r10 r12] + ; GC ptr vars -{V70} + mov ecx, edx + lea rcx, bword ptr [rsi+4*rcx+0x10] + ; byrRegs +[rcx] + dec dword ptr [rcx] + inc edx + cmp edx, 8 + jge G_M23463_IG30 + jmp SHORT G_M23463_IG07 + ;; size=22 bbWeight=0.01 PerfScore 0.08 +G_M23463_IG08: ; bbWeight=0.09, gcVars=00000000000000000020000000000000 {V70}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, gcvars, byref, isz + ; gcrRegs +[rbx rbp] + ; byrRegs -[rcx] +[r12] + ; GC ptr vars +{V53 V70}
mov r8d, dword ptr [rbx+0x10] mov ecx, dword ptr [rbx+0x14] mov edx, dword ptr [rsi+0x18] @@ -170,12 +185,12 @@ G_M23463_IG07: ; bbWeight=0.09, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byr sub r8d, r9d mov r9d, dword ptr [rdi+0x10] cmp r8d, r9d
- jae G_M23463_IG26
+ jae G_M23463_IG27
mov r9d, dword ptr [rdi+0x14] imul r8d, r9d sub ecx, dword ptr [rdi+0x1C] cmp ecx, r9d
- jae G_M23463_IG26
+ jae G_M23463_IG27
add r8d, ecx lea rcx, bword ptr [rdi+8*r8+0x20] ; byrRegs +[rcx] @@ -202,9 +217,9 @@ G_M23463_IG07: ; bbWeight=0.09, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byr mov dword ptr [rdx], ecx mov ecx, dword ptr [rbx+0x18] cmp ecx, dword ptr [rsi+0x18]
- jl SHORT G_M23463_IG10
+ jl SHORT G_M23463_IG11
;; size=131 bbWeight=0.09 PerfScore 3.37
-G_M23463_IG08: ; bbWeight=0.10, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, byref
+G_M23463_IG09: ; bbWeight=0.10, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, byref
; byrRegs -[rdx] lea r10, bword ptr [rbx+0x14] ; byrRegs +[r10] @@ -214,13 +229,13 @@ G_M23463_IG08: ; bbWeight=0.10, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byr inc ecx mov dword ptr [r8], ecx cmp ecx, dword ptr [rsi+0x14]
- jl G_M23463_IG07
+ jl G_M23463_IG08
;; size=24 bbWeight=0.10 PerfScore 0.79
-G_M23463_IG09: ; bbWeight=0.02, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1400 {r10 r12}, byref
+G_M23463_IG10: ; bbWeight=0.02, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1400 {r10 r12}, byref
; byrRegs -[r8] jmp G_M23463_IG06 ;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M23463_IG10: ; bbWeight=0.48, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, byref, isz
+G_M23463_IG11: ; bbWeight=0.48, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, byref, isz
; byrRegs -[r10] xor r8d, r8d mov dword ptr [r12], r8d @@ -228,27 +243,27 @@ G_M23463_IG10: ; bbWeight=0.48, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byr cmp r8d, dword ptr [rsi+0x1C] mov rax, bword ptr [rsp+0x30] ; byrRegs +[rax]
- jl SHORT G_M23463_IG13
+ jl SHORT G_M23463_IG14
;; size=22 bbWeight=0.48 PerfScore 3.97
-G_M23463_IG11: ; bbWeight=0.56, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1001 {rax r12}, byref, isz
+G_M23463_IG12: ; bbWeight=0.56, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1001 {rax r12}, byref, isz
mov r8, rax ; byrRegs +[r8] mov ecx, dword ptr [r8] inc ecx mov dword ptr [r8], ecx cmp ecx, dword ptr [rsi+0x18]
- jl SHORT G_M23463_IG10
+ jl SHORT G_M23463_IG11
;; size=16 bbWeight=0.56 PerfScore 4.18
-G_M23463_IG12: ; bbWeight=0.10, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, byref, isz
+G_M23463_IG13: ; bbWeight=0.10, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, byref, isz
; byrRegs -[rax r8]
- jmp SHORT G_M23463_IG08
+ jmp SHORT G_M23463_IG09
;; size=2 bbWeight=0.10 PerfScore 0.20
-G_M23463_IG13: ; bbWeight=0.24, gcVars=00000000000000000000000000000000 {}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, gcvars, byref - ; GC ptr vars -{V70}
+G_M23463_IG14: ; bbWeight=0.24, gcVars=00000000000000000000000000000000 {}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, gcvars, byref + ; GC ptr vars -{V53 V70}
mov gword ptr [rsp+0x260], r14 ; GC ptr vars +{V02} ;; size=8 bbWeight=0.24 PerfScore 0.24
-G_M23463_IG14: ; bbWeight=2.38, gcVars=00000000000000020000000000000000 {V02}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=1000 {r12}, gcvars, byref
+G_M23463_IG15: ; bbWeight=2.38, gcVars=00000000000000040000000000000000 {V02}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=1000 {r12}, gcvars, byref
; gcrRegs -[r14] mov r8d, dword ptr [rbx+0x10] mov ecx, dword ptr [rbx+0x14] @@ -257,12 +272,12 @@ G_M23463_IG14: ; bbWeight=2.38, gcVars=00000000000000020000000000000000 { sub r8d, eax mov eax, dword ptr [rdi+0x10] cmp r8d, eax
- jae G_M23463_IG26
+ jae G_M23463_IG27
mov r10d, dword ptr [rdi+0x14] imul r8d, r10d sub ecx, dword ptr [rdi+0x1C] cmp ecx, r10d
- jae G_M23463_IG26
+ jae G_M23463_IG27
add r8d, ecx mov r8, gword ptr [rdi+8*r8+0x20] ; gcrRegs +[r8] @@ -272,11 +287,11 @@ G_M23463_IG14: ; bbWeight=2.38, gcVars=00000000000000020000000000000000 { mov r10d, dword ptr [rsi+0x24] sub ecx, dword ptr [r8+0x18] cmp ecx, dword ptr [r8+0x10]
- jae G_M23463_IG26
+ jae G_M23463_IG27
imul ecx, dword ptr [r8+0x14] sub edx, dword ptr [r8+0x1C] cmp edx, dword ptr [r8+0x14]
- jae G_M23463_IG26
+ jae G_M23463_IG27
add ecx, edx lea rcx, bword ptr [r8+8*rcx+0x20] ; byrRegs +[rcx] @@ -309,12 +324,12 @@ G_M23463_IG14: ; bbWeight=2.38, gcVars=00000000000000020000000000000000 { mov r8d, dword ptr [rsi+0x20] mov ecx, dword ptr [rsi+0x24] cmp r13d, 6
- jbe G_M23463_IG26
+ jbe G_M23463_IG27
mov edx, dword ptr [rsi+0x28] cmp r13d, 7 ;; size=218 bbWeight=2.38 PerfScore 179.40
-G_M23463_IG15: ; bbWeight=2.38, isz, extend - jbe G_M23463_IG26
+G_M23463_IG16: ; bbWeight=2.38, isz, extend + jbe G_M23463_IG27
mov r14d, dword ptr [rsi+0x2C] mov dword ptr [rsp+0x50], r8d mov dword ptr [rsp+0x54], ecx @@ -344,9 +359,9 @@ G_M23463_IG15: ; bbWeight=2.38, isz, extend cmp r8d, dword ptr [rsi+0x20] mov r14, gword ptr [rsp+0x260] ; gcrRegs +[r14]
- jl SHORT G_M23463_IG19
+ jl SHORT G_M23463_IG20
;; size=115 bbWeight=2.38 PerfScore 58.41
-G_M23463_IG16: ; bbWeight=2.38, gcVars=00000000000000000000000000000000 {}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M23463_IG17: ; bbWeight=2.38, gcVars=00000000000000000000000000000000 {}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=1000 {r12}, gcvars, byref, isz
; GC ptr vars -{V02} mov r8, r12 ...

libraries.pmi.windows.x64.checked.mch

-14 (-17.72%) : 100147.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T02] ( 3, 10 ) ref -> rbx class-hnd exact single-def <uint[]> -; V01 loc1 [V01,T00] ( 7, 49 ) int -> rsi -; V02 loc2 [V02,T01] ( 2, 16 ) int -> rax
+; V00 loc0 [V00,T02] ( 3, 9.92) ref -> rbx class-hnd exact single-def <uint[]> +; V01 loc1 [V01,T00] ( 6, 40.60) int -> rsi +; V02 loc2 [V02,T01] ( 2, 15.84) int -> rax
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 40 @@ -29,19 +29,17 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs +[rbx] xor esi, esi ;; size=25 bbWeight=1 PerfScore 2.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov ecx, esi call [Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint] ; gcr arg pop 0
- cmp esi, 256 - jae SHORT G_M39919_IG06
mov ecx, esi mov dword ptr [rbx+4*rcx+0x10], eax inc esi cmp esi, 255 jbe SHORT G_M39919_IG03
- ;; size=32 bbWeight=8 PerfScore 58.00
+ ;; size=24 bbWeight=7.92 PerfScore 47.52
G_M39919_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov rax, rbx ; gcrRegs +[rax] @@ -52,14 +50,8 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop rsi ret ;; size=7 bbWeight=1 PerfScore 2.25
-G_M39919_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax rbx] - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - int3 - ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 79, prolog size 6, PerfScore 64.75, instruction count 24, allocated bytes for code 79 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 65, prolog size 6, PerfScore 54.27, instruction count 20, allocated bytes for code 65 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================ Unwind Info:

libraries_tests.run.windows.x64.Release.mch

-34 (-0.82%) : 494165.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T04] ( 24, 10.48) ref -> rsi this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T14] ( 16, 3.42) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T02] ( 20, 15.42) ref -> rbx class-hnd single-def <System.String>
+; V02 arg2 [V02,T02] ( 19, 15.42) ref -> rbx class-hnd single-def <System.String>
; V03 arg3 [V03,T05] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T43] ( 5, 2.11) ref -> r15 class-hnd single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T00] ( 72, 35.60) int -> r13 ld-addr-op -; V06 loc2 [V06,T01] ( 34, 18.77) ushort -> [rsp+0x134] -; V07 loc3 [V07,T16] ( 12, 4.93) int -> [rsp+0x130]
+; V05 loc1 [V05,T00] ( 67, 35.61) int -> r13 ld-addr-op +; V06 loc2 [V06,T01] ( 33, 18.78) ushort -> [rsp+0x134] +; V07 loc3 [V07,T16] ( 15, 4.93) int -> [rsp+0x130]
; V08 loc4 [V08,T30] ( 5, 2.37) ubyte -> [rsp+0x12C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T18] ( 7, 4.27) int -> [rsp+0x128] @@ -263,7 +263,7 @@ ; V251 cse3 [V251,T64] ( 3, 1.19) int -> r11 "CSE - conservative" ; V252 cse4 [V252,T67] ( 3, 1.11) ref -> rcx "CSE - conservative" ; V253 cse5 [V253,T90] ( 3, 0.26) long -> rcx "CSE - conservative"
-; V254 cse6 [V254,T03] ( 20, 13.60) int -> r12 "CSE - aggressive"
+; V254 cse6 [V254,T03] ( 19, 12.73) int -> r12 "CSE - aggressive"
; V255 cse7 [V255,T105] ( 2, 0.03) ref -> rdx "CSE - moderate" ; V256 rat0 [V256,T09] ( 5, 7.05) ref -> r15 class-hnd "replacement local" <System.ICustomFormatter> ; V257 rat1 [V257,T44] ( 6, 2.10) ref -> rcx class-hnd "replacement local" <System.ISpanFormattable> @@ -330,7 +330,7 @@ G_M4730_IG06: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 G_M4730_IG07: ; bbWeight=2.07, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref mov r12d, dword ptr [rbx+0x08] cmp r12d, r13d
- jbe G_M4730_IG102
+ jbe G_M4730_IG99
;; size=13 bbWeight=2.07 PerfScore 6.73 G_M4730_IG08: ; bbWeight=1.07, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref mov ecx, r13d @@ -383,11 +383,11 @@ G_M4730_IG08: ; bbWeight=1.07, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg ; gcr arg pop 0 mov dword ptr [rsp+0x118], eax test eax, eax
- jl G_M4730_IG161
+ jl G_M4730_IG158
;; size=174 bbWeight=1.07 PerfScore 41.79 G_M4730_IG09: ; bbWeight=1.07, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref cmp eax, dword ptr [rsp+0xCC]
- ja G_M4730_IG169
+ ja G_M4730_IG166
mov ecx, eax not ecx shr ecx, 31 @@ -459,12 +459,12 @@ G_M4730_IG15: ; bbWeight=0.60, gcVars=00000000000000000000000000800000 {V G_M4730_IG16: ; bbWeight=1.07, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz add r13d, eax cmp r13d, r12d
- jae G_M4730_IG171
+ jae G_M4730_IG168
mov ecx, r13d movzx rcx, word ptr [rbx+2*rcx+0x0C] inc r13d cmp r12d, r13d
- jbe G_M4730_IG165
+ jbe G_M4730_IG162
mov eax, r13d movzx rax, word ptr [rbx+2*rax+0x0C] mov dword ptr [rsp+0x134], eax @@ -499,7 +499,7 @@ G_M4730_IG20: ; bbWeight=0.09, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefReg G_M4730_IG21: ; bbWeight=1.06, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref ; gcrRegs -[rdx] +[r15] cmp ecx, 123
- jne G_M4730_IG163
+ jne G_M4730_IG160
xor edx, edx mov dword ptr [rsp+0x130], edx ;; size=18 bbWeight=1.06 PerfScore 2.66 @@ -513,7 +513,7 @@ G_M4730_IG22: ; bbWeight=1.06, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg mov dword ptr [rsp+0xD4], r9d lea ecx, [r13-0x01] cmp ecx, r12d
- jae G_M4730_IG171
+ jae G_M4730_IG168
lea ecx, [r13-0x01] cmp word ptr [rbx+2*rcx+0x0C], 123 sete cl @@ -530,10 +530,10 @@ G_M4730_IG22: ; bbWeight=1.06, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg lea edx, [rax-0x30] mov dword ptr [rsp+0x128], edx cmp edx, 10
- jae G_M4730_IG164
+ jae G_M4730_IG161
inc r13d cmp r12d, r13d
- jbe G_M4730_IG165
+ jbe G_M4730_IG162
mov eax, r13d movzx rax, word ptr [rbx+2*rax+0x0C] cmp eax, 125 @@ -567,7 +567,7 @@ G_M4730_IG25: ; bbWeight=0.09, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg add rax, rcx mov r9d, r12d cmp rax, r9
- ja G_M4730_IG167
+ ja G_M4730_IG164
jmp SHORT G_M4730_IG28 ;; size=36 bbWeight=0.09 PerfScore 0.50 G_M4730_IG26: ; bbWeight=0.21, gcVars=00000000000000000000000000800000 {V179}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0022 {rcx rbp}, gcvars, byref @@ -612,7 +612,7 @@ G_M4730_IG29: ; bbWeight=1.06, gcVars=00000000000000002000000000000000 {V ; byrRegs -[rax] ; GC ptr vars -{V79} cmp r13d, r12d
- jae G_M4730_IG171
+ jae G_M4730_IG168
mov ecx, r13d cmp word ptr [rbx+2*rcx+0x0C], 125 sete cl @@ -628,7 +628,7 @@ G_M4730_IG29: ; bbWeight=1.06, gcVars=00000000000000002000000000000000 {V ; GC ptr vars +{V12} mov r8d, dword ptr [rsp+0x128] cmp r8d, r14d
- jae G_M4730_IG168
+ jae G_M4730_IG165
mov rax, gword ptr [rsp+0x98] mov edx, r8d mov r10, gword ptr [rbp+8*rdx] @@ -636,7 +636,7 @@ G_M4730_IG29: ; bbWeight=1.06, gcVars=00000000000000002000000000000000 {V mov gword ptr [rsp+0x90], r10 ; GC ptr vars +{V13} test r15, r15
- je G_M4730_IG73
+ je G_M4730_IG70
;; size=96 bbWeight=1.06 PerfScore 19.43 G_M4730_IG30: ; bbWeight=0.02, gcVars=00000000000000002000000001000000 {V13 V169}, gcrefRegs=84C9 {rax rbx rsi rdi r10 r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz ; gcrRegs -[r12] @@ -682,7 +682,7 @@ G_M4730_IG34: ; bbWeight=0.00, gcVars=00000000000000002000000001000000 {V call [r11]<unknown method> ; gcrRegs -[rcx rdx r8-r10] ; gcr arg pop 0
- jmp G_M4730_IG72
+ jmp G_M4730_IG69
;; size=38 bbWeight=0.00 PerfScore 0.01 G_M4730_IG35: ; bbWeight=0.01, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref ; gcrRegs -[rax] @@ -701,7 +701,7 @@ G_M4730_IG36: ; bbWeight=0.02, gcVars=00000000000000002000000001000000 {V ; GC ptr vars +{V13 V169} mov r12d, dword ptr [rsp+0xD4] test r12d, r12d
- je G_M4730_IG61
+ je G_M4730_IG62
;; size=17 bbWeight=0.02 PerfScore 0.05 G_M4730_IG37: ; bbWeight=0.01, gcrefRegs=84C8 {rbx rsi rdi r10 r15}, byrefRegs=0020 {rbp}, byref, isz ; gcrRegs -[rax] @@ -725,7 +725,7 @@ G_M4730_IG40: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg mov dword ptr [rsp+0x128], edx inc r13d cmp r12d, r13d
- jbe G_M4730_IG165
+ jbe G_M4730_IG162
mov eax, r13d movzx rax, word ptr [rbx+2*rax+0x0C] jmp SHORT G_M4730_IG38 @@ -748,184 +748,166 @@ G_M4730_IG42: ; bbWeight=0.01, gcVars=00000000000000002000000001000000 {V ; gcr arg pop 0 mov r10, gword ptr [rsp+0x90] ; gcrRegs +[r10]
- jmp G_M4730_IG61
+ jmp G_M4730_IG62
;; size=47 bbWeight=0.01 PerfScore 0.08
-G_M4730_IG43: ; bbWeight=0.00, gcVars=00000000000000002000000000000000 {V169}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M4730_IG43: ; bbWeight=0.00, gcVars=00000000000000002000000000000000 {V169}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[rax r10] ; GC ptr vars -{V13} cmp eax, 32
- je G_M4730_IG63 - ;; size=9 bbWeight=0.00 PerfScore 0.00 -G_M4730_IG44: ; bbWeight=0.90, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref - cmp eax, 44 - jne G_M4730_IG53 - ;; size=9 bbWeight=0.90 PerfScore 1.12 -G_M4730_IG45: ; bbWeight=0.89, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jne SHORT G_M4730_IG46 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M4730_IG44: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
inc r13d cmp r12d, r13d
- jbe G_M4730_IG165
+ jbe G_M4730_IG162 + ;; size=12 bbWeight=0.01 PerfScore 0.02 +G_M4730_IG45: ; bbWeight=0.91, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov eax, r13d movzx rax, word ptr [rbx+2*rax+0x0C] cmp eax, 32
- je SHORT G_M4730_IG45 - ;; size=25 bbWeight=0.89 PerfScore 4.44 -G_M4730_IG46: ; bbWeight=0.87, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref - cmp eax, 45 - je G_M4730_IG60 - ;; size=9 bbWeight=0.87 PerfScore 1.09 -G_M4730_IG47: ; bbWeight=0.87, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref - add eax, -48 - cmp eax, 10 - jae G_M4730_IG164
+ je SHORT G_M4730_IG44 + ;; size=13 bbWeight=0.91 PerfScore 3.19 +G_M4730_IG46: ; bbWeight=0.90, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref + cmp eax, 44 + jne G_M4730_IG56 + ;; size=9 bbWeight=0.90 PerfScore 1.12 +G_M4730_IG47: ; bbWeight=0.89, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d cmp r12d, r13d
- jbe G_M4730_IG165 - ;; size=24 bbWeight=0.87 PerfScore 2.61 -G_M4730_IG48: ; bbWeight=0.87, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz - cmp r13d, r12d - jae G_M4730_IG171
+ jbe G_M4730_IG162 + mov eax, r13d + movzx rax, word ptr [rbx+2*rax+0x0C] + cmp eax, 32 + je SHORT G_M4730_IG47 + ;; size=25 bbWeight=0.89 PerfScore 4.44 +G_M4730_IG48: ; bbWeight=0.87, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref + cmp eax, 45 + je G_M4730_IG61 + ;; size=9 bbWeight=0.87 PerfScore 1.09 +G_M4730_IG49: ; bbWeight=0.87, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref + add eax, -48 + cmp eax, 10 + jae G_M4730_IG161 + inc r13d + cmp r12d, r13d + jbe G_M4730_IG162 + test r13d, r13d + jl G_M4730_IG66 + ;; size=33 bbWeight=0.87 PerfScore 3.69 +G_M4730_IG50: ; bbWeight=0.87, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov ecx, r13d movzx rcx, word ptr [rbx+2*rcx+0x0C] mov r10d, ecx lea ecx, [r10-0x30] cmp ecx, 9
- ja SHORT G_M4730_IG51 - ;; size=29 bbWeight=0.87 PerfScore 4.80 -G_M4730_IG49: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ ja SHORT G_M4730_IG52 + ;; size=20 bbWeight=0.87 PerfScore 3.69 +G_M4730_IG51: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
cmp eax, 0xD1FFAB1E
- jge SHORT G_M4730_IG51 - ;; size=7 bbWeight=0.00 PerfScore 0.01 -G_M4730_IG50: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz - lea eax, [rax+4*rax]
...

+32 (+0.78%) : 351944.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T01] ( 47, 32.66) byref -> rbx this single-def ; V01 arg1 [V01,T32] ( 11, 3.92) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 17.16) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 17.16) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T20] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T55] ( 3, 2.81) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 40.96) int -> r13 ld-addr-op -; V06 loc2 [V06,T12] ( 31, 10.83) ushort -> [rsp+0x154] -; V07 loc3 [V07,T37] ( 13, 5.36) int -> [rsp+0x150]
+; V05 loc1 [V05,T00] ( 67, 40.96) int -> r13 ld-addr-op +; V06 loc2 [V06,T12] ( 34, 10.83) ushort -> [rsp+0x154] +; V07 loc3 [V07,T37] ( 16, 5.36) int -> [rsp+0x150]
; V08 loc4 [V08,T49] ( 5, 3.67) ubyte -> [rsp+0x14C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T27] ( 7, 7.22) int -> [rsp+0x148] @@ -286,7 +286,7 @@ ; V274 cse3 [V274,T39] ( 3, 5.23) int -> r8 "CSE - moderate" ; V275 cse4 [V275,T38] ( 5, 5.23) int -> registers multi-def "CSE - moderate" ; V276 cse5 [V276,T68] ( 3, 1.55) int -> rsi "CSE - conservative"
-; V277 cse6 [V277,T05] ( 18, 16.96) int -> r12 "CSE - aggressive"
+; V277 cse6 [V277,T05] ( 19, 16.96) int -> r12 "CSE - aggressive"
; V278 cse7 [V278,T11] ( 14, 12.20) int -> [rsp+0xB8] "CSE - moderate" ; V279 rat0 [V279,T07] ( 6, 14.45) ref -> rdx class-hnd "replacement local" <System.ISpanFormattable> ; V280 rat1 [V280,T09] ( 6, 13.95) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -501,7 +501,7 @@ G_M36935_IG14: ; bbWeight=0.06, gcVars=00000000000000060000000000010000 { add r10, qword ptr [r8+8*rcx] sar r10, 32 cmp r10d, dword ptr [rsp+0xE8]
- jg G_M36935_IG101
+ jg G_M36935_IG104
jmp G_M36935_IG45 ;; size=82 bbWeight=0.06 PerfScore 1.11 G_M36935_IG15: ; bbWeight=0.90, gcVars=00000000000000000000000050000000 {V78 V185}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref @@ -601,7 +601,7 @@ G_M36935_IG19: ; bbWeight=1.81, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov gword ptr [rsp+0xA8], r8 ; GC ptr vars +{V13} test r15, r15
- jne G_M36935_IG97
+ jne G_M36935_IG100
;; size=86 bbWeight=1.81 PerfScore 31.15 G_M36935_IG20: ; bbWeight=1.81, gcVars=00000000000000060000000000010000 {V12 V13 V177}, gcrefRegs=91C0 {rsi rdi r8 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; gcrRegs -[rax] @@ -624,7 +624,7 @@ G_M36935_IG22: ; bbWeight=0.90, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRe ; gcrRegs -[r8] mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rdx], rcx
- jne G_M36935_IG100
+ jne G_M36935_IG103
xor rdx, rdx ;; size=21 bbWeight=0.90 PerfScore 4.06 G_M36935_IG23: ; bbWeight=1.81, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref @@ -648,7 +648,7 @@ G_M36935_IG25: ; bbWeight=1.74, gcrefRegs=81C0 {rsi rdi r8 r15}, byrefReg G_M36935_IG26: ; bbWeight=0.87, gcrefRegs=81C4 {rdx rsi rdi r8 r15}, byrefRegs=0028 {rbx rbp}, byref mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rdx], rcx
- jne G_M36935_IG105
+ jne G_M36935_IG108
xor rdx, rdx ;; size=21 bbWeight=0.87 PerfScore 3.92 G_M36935_IG27: ; bbWeight=1.74, gcrefRegs=81C4 {rdx rsi rdi r8 r15}, byrefRegs=0028 {rbx rbp}, byref @@ -657,12 +657,12 @@ G_M36935_IG27: ; bbWeight=1.74, gcrefRegs=81C4 {rdx rsi rdi r8 r15}, byre mov gword ptr [rsp+0x98], r9 ; GC ptr vars +{V20} test r9, r9
- jne G_M36935_IG106
+ jne G_M36935_IG109
test r8, r8
- je G_M36935_IG109
+ je G_M36935_IG112
mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [r8], rcx
- jne G_M36935_IG110
+ jne G_M36935_IG113
;; size=48 bbWeight=1.74 PerfScore 13.95 G_M36935_IG28: ; bbWeight=1.74, gcVars=00000000000000000000000000000000 {}, gcrefRegs=81C0 {rsi rdi r8 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref ; gcrRegs -[rdx r9] @@ -674,7 +674,7 @@ G_M36935_IG29: ; bbWeight=1.74, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRe ; gcrRegs -[r8] test rdx, rdx mov dword ptr [rsp+0x14C], r12d
- je G_M36935_IG111
+ je G_M36935_IG114
;; size=17 bbWeight=1.74 PerfScore 3.92 G_M36935_IG30: ; bbWeight=0.87, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref mov r12, rdx @@ -685,7 +685,7 @@ G_M36935_IG31: ; bbWeight=1.74, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRe mov edx, dword ptr [r12+0x08] mov r10d, dword ptr [rsp+0x150] cmp edx, r10d
- jl G_M36935_IG112
+ jl G_M36935_IG115
;; size=22 bbWeight=1.74 PerfScore 7.41 G_M36935_IG32: ; bbWeight=1.74, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=0028 {rbx rbp}, byref, isz mov r8d, dword ptr [rbx+0x08] @@ -761,7 +761,7 @@ G_M36935_IG36: ; bbWeight=0.06, gcVars=00000000000000060001000000010000 { mov r9, gword ptr [rsp+0xA0] ; gcrRegs +[r9] cmp qword ptr [r9], rcx
- jne G_M36935_IG104
+ jne G_M36935_IG107
add r9, 8 ; gcrRegs -[r9] ; byrRegs +[r9] @@ -1013,7 +1013,7 @@ G_M36935_IG55: ; bbWeight=0.06, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov ecx, dword ptr [rsp+0x140] add dword ptr [rbx+0x08], ecx test r12d, r12d
- jne G_M36935_IG103
+ jne G_M36935_IG106
jmp G_M36935_IG05 ;; size=40 bbWeight=0.06 PerfScore 0.59 G_M36935_IG56: ; bbWeight=0.00, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0029 {rax rbx rbp}, byref @@ -1317,9 +1317,7 @@ G_M36935_IG82: ; bbWeight=0, gcVars=00000000000000020000000000000000 {V17 jbe G_M36935_IG70 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=34 bbWeight=0 PerfScore 0.00
G_M36935_IG83: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea ecx, [rax-0x30] cmp ecx, 9 @@ -1336,10 +1334,8 @@ G_M36935_IG84: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG70 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
mov dword ptr [rsp+0x148], edx
- mov eax, ecx - ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M36935_IG85: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 32 mov edx, dword ptr [rsp+0x148] @@ -1347,7 +1343,7 @@ G_M36935_IG85: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ;; size=12 bbWeight=0 PerfScore 0.00 G_M36935_IG86: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 44
- jne G_M36935_IG93
+ jne G_M36935_IG96
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG87: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d @@ -1355,10 +1351,8 @@ G_M36935_IG87: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG70 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG87
- mov eax, ecx
cmp eax, 45 jne SHORT G_M36935_IG88 mov dword ptr [rsp+0x14C], 1 @@ -1367,56 +1361,72 @@ G_M36935_IG87: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG70 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M36935_IG88: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea r10d, [rax-0x30] cmp r10d, 10 jae G_M36935_IG69 inc r13d cmp r12d, r13d
- ja SHORT G_M36935_IG90 - jmp G_M36935_IG70 - ;; size=27 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG70 + test r13d, r13d + jl SHORT G_M36935_IG92 + jmp SHORT G_M36935_IG90 + ;; size=33 bbWeight=0 PerfScore 0.00
G_M36935_IG89: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea r10d, [r10+4*r10]
- lea r10d, [rcx+2*r10-0x30]
+ lea r10d, [rax+2*r10-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG70 + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M36935_IG90: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C] + lea ecx, [rax-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG95 + cmp r10d, 0xD1FFAB1E + jl SHORT G_M36935_IG89 + jmp SHORT G_M36935_IG93 + ;; size=27 bbWeight=0 PerfScore 0.00 +G_M36935_IG91: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + lea r10d, [r10+4*r10] + lea r10d, [rax+2*r10-0x30]
mov dword ptr [rsp+0x150], r10d inc r13d cmp r12d, r13d mov r10d, dword ptr [rsp+0x150] jbe G_M36935_IG70 ;; size=37 bbWeight=0 PerfScore 0.00
-G_M36935_IG90: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG92: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d jae G_M36935_IG76 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - lea eax, [rcx-0x30] - cmp eax, 9 - ja SHORT G_M36935_IG92
+ lea ecx, [rax-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG95
cmp r10d, 0xD1FFAB1E
- jl SHORT G_M36935_IG89 - cmp ecx, 32 - mov eax, ecx - jne SHORT G_M36935_IG95 - ;; size=43 bbWeight=0 PerfScore 0.00 -G_M36935_IG91: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG91 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG93: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp eax, 32 + jne SHORT G_M36935_IG98 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M36935_IG94: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d cmp r12d, r13d jbe G_M36935_IG70
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M36935_IG92: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz - cmp ecx, 32 - mov eax, ecx - je SHORT G_M36935_IG91
+G_M36935_IG95: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp eax, 32 + je SHORT G_M36935_IG94
mov dword ptr [rsp+0x150], r10d ...

+35 (+0.83%) : 651081.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T02] ( 42, 63.19) byref -> rbx this single-def ; V01 arg1 [V01,T37] ( 11, 3.77) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T10] ( 18, 17.43) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T10] ( 19, 17.43) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T25] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T52] ( 3, 2.88) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T06] ( 62, 42.03) int -> r13 ld-addr-op -; V06 loc2 [V06,T18] ( 31, 11.29) ushort -> [rsp+0x16C] -; V07 loc3 [V07,T39] ( 13, 5.49) int -> [rsp+0x168]
+; V05 loc1 [V05,T06] ( 67, 42.03) int -> r13 ld-addr-op +; V06 loc2 [V06,T18] ( 34, 11.29) ushort -> [rsp+0x16C] +; V07 loc3 [V07,T39] ( 16, 5.49) int -> [rsp+0x168]
; V08 loc4 [V08,T48] ( 5, 3.92) ubyte -> [rsp+0x164] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T30] ( 7, 7.53) int -> [rsp+0x160] @@ -285,7 +285,7 @@ ; V273 cse2 [V273,T35] ( 4, 6.89) ref -> [rsp+0x38] hoist multi-def "CSE - moderate" ; V274 cse3 [V274,T40] ( 5, 5.17) int -> registers multi-def "CSE - conservative" ; V275 cse4 [V275,T11] ( 14, 18.96) int -> [rsp+0xC8] "CSE - moderate"
-; V276 cse5 [V276,T12] ( 18, 17.31) int -> r12 "CSE - moderate"
+; V276 cse5 [V276,T12] ( 19, 17.31) int -> r12 "CSE - moderate"
; V277 cse6 [V277,T05] ( 9, 44.56) byref -> [rsp+0x30] multi-def "CSE - aggressive" ; V278 rat0 [V278,T13] ( 6, 15.06) ref -> rdx class-hnd "replacement local" <System.ISpanFormattable> ; V279 rat1 [V279,T16] ( 6, 13.80) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -622,7 +622,7 @@ G_M36935_IG22: ; bbWeight=1.88, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov gword ptr [rsp+0xB8], r8 ; GC ptr vars +{V13} test r15, r15
- jne G_M36935_IG99
+ jne G_M36935_IG102
;; size=86 bbWeight=1.88 PerfScore 32.47 G_M36935_IG23: ; bbWeight=1.88, gcVars=00000000000000001800000000200020 {V12 V13 V177 V277}, gcrefRegs=91C0 {rsi rdi r8 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; gcrRegs -[rax] @@ -645,7 +645,7 @@ G_M36935_IG25: ; bbWeight=0.94, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRe ; gcrRegs -[r8] mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rdx], rcx
- jne G_M36935_IG102
+ jne G_M36935_IG105
xor rdx, rdx ;; size=21 bbWeight=0.94 PerfScore 4.24 G_M36935_IG26: ; bbWeight=1.88, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref @@ -669,7 +669,7 @@ G_M36935_IG28: ; bbWeight=1.73, gcrefRegs=81C0 {rsi rdi r8 r15}, byrefReg G_M36935_IG29: ; bbWeight=0.86, gcrefRegs=83C0 {rsi rdi r8 r9 r15}, byrefRegs=0028 {rbx rbp}, byref mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [r9], rdx
- jne G_M36935_IG107
+ jne G_M36935_IG110
xor r9, r9 ;; size=22 bbWeight=0.86 PerfScore 3.88 G_M36935_IG30: ; bbWeight=1.73, gcrefRegs=83C0 {rsi rdi r8 r9 r15}, byrefRegs=0028 {rbx rbp}, byref @@ -678,12 +678,12 @@ G_M36935_IG30: ; bbWeight=1.73, gcrefRegs=83C0 {rsi rdi r8 r9 r15}, byref mov gword ptr [rsp+0xA8], r11 ; GC ptr vars +{V20} test r11, r11
- jne G_M36935_IG108
+ jne G_M36935_IG111
test r8, r8
- je G_M36935_IG111
+ je G_M36935_IG114
mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [r8], rdx
- jne G_M36935_IG112
+ jne G_M36935_IG115
;; size=48 bbWeight=1.73 PerfScore 13.80 G_M36935_IG31: ; bbWeight=1.73, gcVars=00000000000000000000000000000020 {V277}, gcrefRegs=81C0 {rsi rdi r8 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref ; gcrRegs -[r9 r11] @@ -695,7 +695,7 @@ G_M36935_IG32: ; bbWeight=1.73, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRe ; gcrRegs -[r8] test rdx, rdx mov dword ptr [rsp+0x164], r12d
- je G_M36935_IG113
+ je G_M36935_IG116
;; size=17 bbWeight=1.73 PerfScore 3.88 G_M36935_IG33: ; bbWeight=0.86, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref mov r12, rdx @@ -706,7 +706,7 @@ G_M36935_IG34: ; bbWeight=1.73, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRe mov ecx, dword ptr [r12+0x08] mov r10d, dword ptr [rsp+0x168] cmp ecx, r10d
- jl G_M36935_IG114
+ jl G_M36935_IG117
;; size=22 bbWeight=1.73 PerfScore 7.33 G_M36935_IG35: ; bbWeight=1.73, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=0028 {rbx rbp}, byref mov eax, dword ptr [rbx+0x08] @@ -778,7 +778,7 @@ G_M36935_IG37: ; bbWeight=0.16, gcVars=00000000000000001800800000200020 { mov r9, gword ptr [rsp+0xB0] ; gcrRegs +[r9] cmp qword ptr [r9], rcx
- jne G_M36935_IG106
+ jne G_M36935_IG109
add r9, 8 ; gcrRegs -[r9] ; byrRegs +[r9] @@ -812,7 +812,7 @@ G_M36935_IG39: ; bbWeight=0.16, gcVars=00000000000000001800000000200020 { add r8, qword ptr [rcx+8*rdx] sar r8, 32 cmp r8d, dword ptr [rsp+0xF8]
- jg G_M36935_IG103
+ jg G_M36935_IG106
mov dword ptr [rsp+0x158], r8d mov rdx, bword ptr [rsp+0x40] ; byrRegs +[rdx] @@ -960,7 +960,7 @@ G_M36935_IG50: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov edx, dword ptr [rsp+0x158] add dword ptr [rbx+0x08], edx test r12d, r12d
- jne G_M36935_IG105
+ jne G_M36935_IG108
jmp G_M36935_IG05 ;; size=40 bbWeight=0.16 PerfScore 1.49 G_M36935_IG51: ; bbWeight=0.00, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0029 {rax rbx rbp}, byref @@ -1351,9 +1351,7 @@ G_M36935_IG84: ; bbWeight=0, gcVars=00000000000000000800000000000020 {V17 jbe G_M36935_IG72 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=34 bbWeight=0 PerfScore 0.00
G_M36935_IG85: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea ecx, [rax-0x30] cmp ecx, 9 @@ -1370,10 +1368,8 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG72 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
mov dword ptr [rsp+0x160], edx
- mov eax, ecx - ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 32 mov edx, dword ptr [rsp+0x160] @@ -1381,7 +1377,7 @@ G_M36935_IG87: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ;; size=12 bbWeight=0 PerfScore 0.00 G_M36935_IG88: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 44
- jne G_M36935_IG95
+ jne G_M36935_IG98
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG89: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d @@ -1389,10 +1385,8 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG72 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG89
- mov eax, ecx
cmp eax, 45 jne SHORT G_M36935_IG90 mov dword ptr [rsp+0x164], 1 @@ -1401,56 +1395,72 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG72 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea r10d, [rax-0x30] cmp r10d, 10 jae G_M36935_IG71 inc r13d cmp r12d, r13d
- ja SHORT G_M36935_IG92 - jmp G_M36935_IG72 - ;; size=27 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG72 + test r13d, r13d + jl SHORT G_M36935_IG94 + jmp SHORT G_M36935_IG92 + ;; size=33 bbWeight=0 PerfScore 0.00
G_M36935_IG91: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea r10d, [r10+4*r10]
- lea r10d, [rcx+2*r10-0x30]
+ lea r10d, [rax+2*r10-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG72 + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M36935_IG92: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C] + lea ecx, [rax-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG97 + cmp r10d, 0xD1FFAB1E + jl SHORT G_M36935_IG91 + jmp SHORT G_M36935_IG95 + ;; size=27 bbWeight=0 PerfScore 0.00 +G_M36935_IG93: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + lea r10d, [r10+4*r10] + lea r10d, [rax+2*r10-0x30]
mov dword ptr [rsp+0x168], r10d inc r13d cmp r12d, r13d mov r10d, dword ptr [rsp+0x168] jbe G_M36935_IG72 ;; size=37 bbWeight=0 PerfScore 0.00
-G_M36935_IG92: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG94: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d jae G_M36935_IG78 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - lea eax, [rcx-0x30] - cmp eax, 9 - ja SHORT G_M36935_IG94
+ lea ecx, [rax-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG97
cmp r10d, 0xD1FFAB1E
- jl SHORT G_M36935_IG91 - cmp ecx, 32 - mov eax, ecx - jne SHORT G_M36935_IG97 - ;; size=43 bbWeight=0 PerfScore 0.00 -G_M36935_IG93: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG93 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG95: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp eax, 32 + jne SHORT G_M36935_IG100 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d cmp r12d, r13d jbe G_M36935_IG72
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M36935_IG94: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz - cmp ecx, 32 - mov eax, ecx - je SHORT G_M36935_IG93
+G_M36935_IG97: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp eax, 32 + je SHORT G_M36935_IG96
mov dword ptr [rsp+0x168], r10d ...

+48 (+1.58%) : 117941.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T01] ( 47, 26.54) byref -> rbx this single-def ; V01 arg1 [V01,T31] ( 8, 3.95) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T02] ( 18, 17.90) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T02] ( 19, 17.90) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T19] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T48] ( 3, 2.79) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 43.59) int -> r13 ld-addr-op -; V06 loc2 [V06,T13] ( 31, 11.49) ushort -> [rsp+0xE4] -; V07 loc3 [V07,T33] ( 13, 5.37) int -> [rsp+0xE0]
+; V05 loc1 [V05,T00] ( 67, 43.59) int -> r13 ld-addr-op +; V06 loc2 [V06,T13] ( 34, 11.49) ushort -> [rsp+0xE4] +; V07 loc3 [V07,T33] ( 16, 5.37) int -> [rsp+0xE0]
; V08 loc4 [V08,T42] ( 5, 3.58) ubyte -> [rsp+0xDC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T28] ( 7, 7.16) int -> [rsp+0xD8] @@ -183,7 +183,7 @@ ; V171 cse1 [V171,T35] ( 3, 5.37) int -> rdx "CSE - moderate" ; V172 cse2 [V172,T34] ( 5, 5.37) int -> registers multi-def "CSE - moderate" ; V173 cse3 [V173,T62] ( 3, 1.13) int -> rdi "CSE - conservative"
-; V174 cse4 [V174,T04] ( 18, 17.94) int -> r12 "CSE - aggressive"
+; V174 cse4 [V174,T04] ( 19, 17.94) int -> r12 "CSE - aggressive"
; V175 cse5 [V175,T09] ( 14, 12.63) int -> [rsp+0x84] "CSE - moderate" ; V176 rat0 [V176,T07] ( 6, 14.33) ref -> registers class-hnd "replacement local" <<unknown class>> ; V177 rat1 [V177,T08] ( 6, 14.33) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -464,7 +464,7 @@ G_M36935_IG17: ; bbWeight=1.79, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov gword ptr [rsp+0x70], r10 ; GC ptr vars +{V13} test r15, r15
- jne G_M36935_IG82
+ jne G_M36935_IG85
;; size=82 bbWeight=1.79 PerfScore 30.89 G_M36935_IG18: ; bbWeight=1.79, gcVars=00000000000000000C00000000001000 {V12 V13 V113}, gcrefRegs=94C0 {rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; gcrRegs -[rax] @@ -533,7 +533,7 @@ G_M36935_IG26: ; bbWeight=1.79, gcrefRegs=8CC0 {rsi rdi r10 r11 r15}, byr test rdx, rdx jne G_M36935_IG62 test r10, r10
- je G_M36935_IG85
+ je G_M36935_IG88
mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [r10], rcx jne G_M36935_IG39 @@ -548,7 +548,7 @@ G_M36935_IG28: ; bbWeight=1.79, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRe ; gcrRegs -[r10] test rdx, rdx mov dword ptr [rsp+0xDC], r12d
- je G_M36935_IG86
+ je G_M36935_IG89
;; size=17 bbWeight=1.79 PerfScore 4.03 G_M36935_IG29: ; bbWeight=0.90, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref mov r12, rdx @@ -559,7 +559,7 @@ G_M36935_IG30: ; bbWeight=1.79, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRe mov eax, dword ptr [r12+0x08] mov r8d, dword ptr [rsp+0xE0] cmp eax, r8d
- jl G_M36935_IG87
+ jl G_M36935_IG90
;; size=22 bbWeight=1.79 PerfScore 7.61 G_M36935_IG31: ; bbWeight=1.79, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=0028 {rbx rbp}, byref mov r8d, dword ptr [rbx+0x08] @@ -690,7 +690,7 @@ G_M36935_IG40: ; bbWeight=0.38, gcVars=00000000000000000000000008000000 { mov ebp, dword ptr [rsp+0xA8] sub eax, ebp cmp ecx, eax
- jg G_M36935_IG94
+ jg G_M36935_IG97
;; size=23 bbWeight=0.38 PerfScore 2.44 G_M36935_IG41: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref lea rcx, bword ptr [rbx+0x10] @@ -912,29 +912,28 @@ G_M36935_IG62: ; bbWeight=0, gcVars=00000000000000000C00100000000000 {V12 ; GC ptr vars -{V121} +{V12 V20 V44 V58 V113} mov rdx, gword ptr [rsp+0x60] ; gcrRegs +[rdx]
- mov ecx, dword ptr [rsp+0xAC] - test ecx, ecx
+ mov r10d, dword ptr [rsp+0xAC] + test r10d, r10d
je SHORT G_M36935_IG64 mov rax, gword ptr [rsp+0x78] ; gcrRegs +[rax] test rax, rax jne SHORT G_M36935_IG63
- mov rax, bword ptr [rsp+0x30] - ; gcrRegs -[rax] - ; byrRegs +[rax] - mov bword ptr [rsp+0x98], rax - mov dword ptr [rsp+0xA0], ecx
+ mov r9, bword ptr [rsp+0x30] + ; byrRegs +[r9] + mov bword ptr [rsp+0x98], r9 + mov dword ptr [rsp+0xA0], r10d
lea rcx, [rsp+0x98] ; GC ptr vars -{V12 V44 V58 V113} call <unknown method>
- ; gcrRegs -[rdx] +[rax] - ; byrRegs -[rax]
+ ; gcrRegs -[rdx] + ; byrRegs -[r9]
; gcr arg pop 0 mov rdx, rax ; gcrRegs +[rdx] mov rax, rdx mov rdx, gword ptr [rsp+0x60]
- ;; size=70 bbWeight=0 PerfScore 0.00
+ ;; size=73 bbWeight=0 PerfScore 0.00
G_M36935_IG63: ; bbWeight=0, gcrefRegs=80C5 {rax rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref mov rcx, rdx ; gcrRegs +[rcx] @@ -1050,9 +1049,7 @@ G_M36935_IG67: ; bbWeight=0, gcVars=00000000000000000800000000000000 {V11 jbe G_M36935_IG52 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=34 bbWeight=0 PerfScore 0.00
G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea ecx, [rax-0x30] cmp ecx, 9 @@ -1069,10 +1066,8 @@ G_M36935_IG69: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG52 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
mov dword ptr [rsp+0xD8], edx
- mov eax, ecx - ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M36935_IG70: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 32 mov edx, dword ptr [rsp+0xD8] @@ -1080,7 +1075,7 @@ G_M36935_IG70: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ;; size=12 bbWeight=0 PerfScore 0.00 G_M36935_IG71: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 44
- jne G_M36935_IG78
+ jne G_M36935_IG81
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d @@ -1088,10 +1083,8 @@ G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG52 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG72
- mov eax, ecx
cmp eax, 45 jne SHORT G_M36935_IG73 mov dword ptr [rsp+0xDC], 1 @@ -1100,54 +1093,74 @@ G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG52 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M36935_IG73: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz add eax, -48 cmp eax, 10 jae G_M36935_IG51 inc r13d cmp r12d, r13d
- ja SHORT G_M36935_IG75 - jmp G_M36935_IG52 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG52 + test r13d, r13d + jl SHORT G_M36935_IG77 + jmp SHORT G_M36935_IG75 + ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG74: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea eax, [rax+4*rax]
- lea eax, [rcx+2*rax-0x30]
+ lea eax, [r10+2*rax-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG52 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M36935_IG75: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + mov ecx, r13d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + mov r10d, ecx + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG80 + cmp eax, 0xD1FFAB1E + jl SHORT G_M36935_IG74 + jmp SHORT G_M36935_IG78 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M36935_IG76: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + lea eax, [rax+4*rax] + lea eax, [r10+2*rax-0x30]
mov dword ptr [rsp+0xE0], eax inc r13d cmp r12d, r13d mov eax, dword ptr [rsp+0xE0] jbe G_M36935_IG52
- ;; size=33 bbWeight=0 PerfScore 0.00 -G_M36935_IG75: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG77: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d jae G_M36935_IG58
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - lea r10d, [rcx-0x30] - cmp r10d, 9 - ja SHORT G_M36935_IG77
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG80
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG74 - cmp ecx, 32 - jne SHORT G_M36935_IG80 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M36935_IG76: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG76 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG78: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + jne SHORT G_M36935_IG83 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG79: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d cmp r12d, r13d jbe G_M36935_IG52
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M36935_IG77: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz - cmp ecx, 32 - je SHORT G_M36935_IG76
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M36935_IG80: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + je SHORT G_M36935_IG79
mov dword ptr [rsp+0xE0], eax
- mov eax, ecx - ;; size=14 bbWeight=0 PerfScore 0.00
...

+48 (+1.60%) : 666236.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T00] ( 47, 42.94) byref -> rbx this single-def ; V01 arg1 [V01,T34] ( 8, 4 ) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18, 18.85) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 19, 18.85) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T18] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T46] ( 3, 3.10) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 61, 44.30) int -> r13 ld-addr-op -; V06 loc2 [V06,T11] ( 31, 12.60) ushort -> [rsp+0xE4] -; V07 loc3 [V07,T28] ( 12, 6.30) int -> [rsp+0xE0]
+; V05 loc1 [V05,T01] ( 66, 44.30) int -> r13 ld-addr-op +; V06 loc2 [V06,T11] ( 34, 12.60) ushort -> [rsp+0xE4] +; V07 loc3 [V07,T28] ( 15, 6.30) int -> [rsp+0xE0]
; V08 loc4 [V08,T43] ( 5, 4.20) ubyte -> [rsp+0xDC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T20] ( 7, 8.40) int -> [rsp+0xD8] @@ -181,7 +181,7 @@ ; V169 cse2 [V169,T33] ( 3, 6.29) int -> rax "CSE - moderate" ; V170 cse3 [V170,T32] ( 5, 6.30) int -> registers multi-def "CSE - moderate" ; V171 cse4 [V171,T03] ( 12, 23.08) int -> [rsp+0x84] spill-single-def "CSE - aggressive"
-; V172 cse5 [V172,T05] ( 18, 18.95) int -> r12 "CSE - aggressive"
+; V172 cse5 [V172,T05] ( 19, 18.95) int -> r12 "CSE - aggressive"
; V173 cse6 [V173,T31] ( 3, 6.30) int -> rcx "CSE - moderate" ; V174 rat0 [V174,T06] ( 7, 16.80) ref -> registers class-hnd "replacement local" <<unknown class>> ; V175 rat1 [V175,T07] ( 7, 16.80) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -431,7 +431,7 @@ G_M36935_IG10: ; bbWeight=2.10, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0 mov gword ptr [rsp+0x70], r10 ; GC ptr vars +{V13} test r15, r15
- jne G_M36935_IG72
+ jne G_M36935_IG75
;; size=77 bbWeight=2.10 PerfScore 34.12 G_M36935_IG11: ; bbWeight=2.10, gcVars=00000000000000000010000000001000 {V13 V110}, gcrefRegs=94C1 {rax rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz test r12, r12 @@ -456,14 +456,14 @@ G_M36935_IG13: ; bbWeight=2.10, gcrefRegs=84C1 {rax rsi rdi r10 r15}, byr G_M36935_IG14: ; bbWeight=1.05, gcrefRegs=86C1 {rax rsi rdi r9 r10 r15}, byrefRegs=0028 {rbx rbp}, byref mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [r9], rdx
- jne G_M36935_IG75
+ jne G_M36935_IG78
xor r9, r9 ;; size=22 bbWeight=1.05 PerfScore 4.73 G_M36935_IG15: ; bbWeight=2.10, gcrefRegs=86C1 {rax rsi rdi r9 r10 r15}, byrefRegs=0028 {rbx rbp}, byref mov r11, r9 ; gcrRegs +[r11] test r11, r11
- jne G_M36935_IG76
+ jne G_M36935_IG79
;; size=12 bbWeight=2.10 PerfScore 3.15 G_M36935_IG16: ; bbWeight=1.05, gcrefRegs=84C1 {rax rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, byref ; gcrRegs -[r9 r11] @@ -478,23 +478,23 @@ G_M36935_IG17: ; bbWeight=2.10, gcrefRegs=84C1 {rax rsi rdi r10 r15}, byr G_M36935_IG18: ; bbWeight=1.05, gcrefRegs=84C3 {rax rcx rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, byref mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [rcx], rdx
- jne G_M36935_IG78
+ jne G_M36935_IG81
xor rcx, rcx ;; size=21 bbWeight=1.05 PerfScore 4.73 G_M36935_IG19: ; bbWeight=2.10, gcrefRegs=84C3 {rax rcx rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, byref mov rdx, rcx ; gcrRegs +[rdx] test rdx, rdx
- jne G_M36935_IG79
+ jne G_M36935_IG82
;; size=12 bbWeight=2.10 PerfScore 3.15 G_M36935_IG20: ; bbWeight=2.10, gcVars=00000000000000000000000000001000 {V13}, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref ; gcrRegs -[rax rcx rdx] ; GC ptr vars -{V110} test r10, r10
- je G_M36935_IG82
+ je G_M36935_IG85
mov rdx, 0xD1FFAB1E ; System.String cmp qword ptr [r10], rdx
- jne G_M36935_IG83
+ jne G_M36935_IG86
;; size=28 bbWeight=2.10 PerfScore 11.55 G_M36935_IG21: ; bbWeight=2.10, gcVars=00000000000000000000000000000000 {}, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref ; GC ptr vars -{V13} @@ -506,7 +506,7 @@ G_M36935_IG22: ; bbWeight=2.10, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRe test rdx, rdx mov dword ptr [rsp+0xE0], r8d mov dword ptr [rsp+0xDC], r12d
- je G_M36935_IG84
+ je G_M36935_IG87
;; size=25 bbWeight=2.10 PerfScore 6.82 G_M36935_IG23: ; bbWeight=1.05, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref mov r12, rdx @@ -890,9 +890,7 @@ G_M36935_IG57: ; bbWeight=0, gcVars=00000000000000000010000000000000 {V11 jbe G_M36935_IG44 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=38 bbWeight=0 PerfScore 0.00
+ ;; size=34 bbWeight=0 PerfScore 0.00
G_M36935_IG58: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz lea ecx, [rax-0x30] cmp ecx, 9 @@ -909,10 +907,8 @@ G_M36935_IG59: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG44 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
mov dword ptr [rsp+0xD8], edx
- mov eax, ecx - ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M36935_IG60: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz cmp eax, 32 mov edx, dword ptr [rsp+0xD8] @@ -920,7 +916,7 @@ G_M36935_IG60: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ;; size=12 bbWeight=0 PerfScore 0.00 G_M36935_IG61: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref cmp eax, 44
- jne G_M36935_IG68
+ jne G_M36935_IG71
;; size=9 bbWeight=0 PerfScore 0.00 G_M36935_IG62: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d @@ -928,10 +924,8 @@ G_M36935_IG62: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG44 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG62
- mov eax, ecx
cmp eax, 45 jne SHORT G_M36935_IG63 mov dword ptr [rsp+0xDC], 1 @@ -940,54 +934,74 @@ G_M36935_IG62: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jbe G_M36935_IG44 mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - mov eax, ecx - ;; size=69 bbWeight=0 PerfScore 0.00
+ ;; size=61 bbWeight=0 PerfScore 0.00
G_M36935_IG63: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz add eax, -48 cmp eax, 10 jae G_M36935_IG43 inc r13d cmp r12d, r13d
- ja SHORT G_M36935_IG65 - jmp G_M36935_IG44 - ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG44 + test r13d, r13d + jl SHORT G_M36935_IG67 + jmp SHORT G_M36935_IG65 + ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG64: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea eax, [rax+4*rax]
- lea eax, [rcx+2*rax-0x30]
+ lea eax, [r10+2*rax-0x30] + inc r13d + cmp r12d, r13d + jbe G_M36935_IG44 + ;; size=20 bbWeight=0 PerfScore 0.00 +G_M36935_IG65: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + mov ecx, r13d + movzx rcx, word ptr [rsi+2*rcx+0x0C] + mov r10d, ecx + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG70 + cmp eax, 0xD1FFAB1E + jl SHORT G_M36935_IG64 + jmp SHORT G_M36935_IG68 + ;; size=29 bbWeight=0 PerfScore 0.00 +G_M36935_IG66: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + lea eax, [rax+4*rax] + lea eax, [r10+2*rax-0x30]
mov dword ptr [rsp+0xE0], eax inc r13d cmp r12d, r13d mov eax, dword ptr [rsp+0xE0] jbe G_M36935_IG44
- ;; size=33 bbWeight=0 PerfScore 0.00 -G_M36935_IG65: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG67: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d jae G_M36935_IG50
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - lea r10d, [rcx-0x30] - cmp r10d, 9 - ja SHORT G_M36935_IG67
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + lea ecx, [r10-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG70
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG64 - cmp ecx, 32 - jne SHORT G_M36935_IG70 - ;; size=39 bbWeight=0 PerfScore 0.00 -G_M36935_IG66: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG66 + ;; size=34 bbWeight=0 PerfScore 0.00 +G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + jne SHORT G_M36935_IG73 + ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG69: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d cmp r12d, r13d jbe G_M36935_IG44
- mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - ;; size=20 bbWeight=0 PerfScore 0.00 -G_M36935_IG67: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz - cmp ecx, 32 - je SHORT G_M36935_IG66
+ mov r10d, r13d + movzx r10, word ptr [rsi+2*r10+0x0C] + ;; size=21 bbWeight=0 PerfScore 0.00 +G_M36935_IG70: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp r10d, 32 + je SHORT G_M36935_IG69
mov dword ptr [rsp+0xE0], eax
- mov eax, ecx - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ mov eax, r10d + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M36935_IG71: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125 mov dword ptr [rsp+0xD8], edx je G_M36935_IG10 @@ -995,7 +1009,7 @@ G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 jne G_M36935_IG45 mov ecx, r13d ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG69: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG72: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars -{V110} inc r13d cmp r12d, r13d @@ -1003,18 +1017,18 @@ G_M36935_IG69: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C] cmp eax, 125
- je SHORT G_M36935_IG71
...

+49 (+1.77%) : 287241.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -5,22 +5,22 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 12
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 12
; 24 inlinees with PGO data; 32 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 29, 9.00) ref -> rsi this class-hnd single-def <System.Text.StringBuilder>
+; V00 this [V00,T03] ( 29, 9 ) ref -> rsi this class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T12] ( 8, 4 ) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T01] ( 18, 11 ) ref -> rbx class-hnd single-def <System.String>
+; V02 arg2 [V02,T01] ( 19, 11 ) ref -> rbx class-hnd single-def <System.String>
; V03 arg3 [V03,T05] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T29] ( 3, 2 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61, 22 ) int -> r13 ld-addr-op -; V06 loc2 [V06,T10] ( 30, 6 ) ushort -> [rsp+0xB4] -; V07 loc3 [V07,T20] ( 12, 3 ) int -> [rsp+0xB0]
+; V05 loc1 [V05,T00] ( 66, 22 ) int -> r13 ld-addr-op +; V06 loc2 [V06,T10] ( 33, 6 ) ushort -> [rsp+0xB4] +; V07 loc3 [V07,T20] ( 16, 3 ) int -> [rsp+0xB0]
; V08 loc4 [V08,T28] ( 5, 2 ) ubyte -> [rsp+0xAC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T15] ( 7, 4 ) int -> [rsp+0xA8]
-; V11 loc7 [V11,T09] ( 14, 7 ) ref -> registers class-hnd <System.String>
+; V11 loc7 [V11,T09] ( 15, 7 ) ref -> registers class-hnd <System.String>
; V12 loc8 [V12,T45] ( 6, 1 ) ref -> [rsp+0x58] class-hnd <System.String> ; V13 loc9 [V13,T11] ( 11, 6 ) ref -> [rsp+0x50] class-hnd spill-single-def <System.Object> ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> @@ -143,7 +143,7 @@ ;* V131 tmp109 [V131 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[System.Object]> ; V132 tmp110 [V132 ] ( 12, 0 ) struct (16) [rsp+0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> ; V133 tmp111 [V133 ] ( 3, 0 ) struct (16) [rsp+0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ushort]>
-; V134 cse0 [V134,T04] ( 18, 10 ) int -> r12 "CSE - aggressive"
+; V134 cse0 [V134,T04] ( 19, 10 ) int -> r12 "CSE - aggressive"
; V135 cse1 [V135,T23] ( 3, 3 ) int -> rcx "CSE - moderate" ; V136 rat0 [V136,T07] ( 6, 8 ) ref -> rcx class-hnd "replacement local" <<unknown class>> ; V137 rat1 [V137,T08] ( 6, 8 ) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -175,12 +175,12 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0200 ; byrRegs +[rbp] mov r14d, dword ptr [r9+0x08] test rbx, rbx
- je G_M4730_IG58
+ je G_M4730_IG89
test rdi, rdi
- je G_M4730_IG59
+ je G_M4730_IG90
mov rdx, 0xD1FFAB1E ; System.Globalization.CultureInfo cmp qword ptr [rdi], rdx
- jne G_M4730_IG60
+ jne G_M4730_IG91
xor rdx, rdx ; gcrRegs +[rdx] ;; size=46 bbWeight=1 PerfScore 11.00 @@ -198,7 +198,7 @@ G_M4730_IG04: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ; gcrRegs -[rax] mov r12d, dword ptr [rbx+0x08] cmp r12d, r13d
- jbe G_M4730_IG36
+ jbe G_M4730_IG31
;; size=13 bbWeight=2 PerfScore 6.50 G_M4730_IG05: ; bbWeight=1.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref mov ecx, r13d @@ -251,11 +251,11 @@ G_M4730_IG05: ; bbWeight=1.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg ; gcr arg pop 0 mov dword ptr [rsp+0x98], eax test eax, eax
- jl G_M4730_IG47
+ jl G_M4730_IG78
;; size=174 bbWeight=1.00 PerfScore 39.00 G_M4730_IG06: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz cmp eax, dword ptr [rsp+0x80]
- ja G_M4730_IG55
+ ja G_M4730_IG86
mov ecx, eax not ecx shr ecx, 31 @@ -263,58 +263,81 @@ G_M4730_IG06: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ; gcr arg pop 0 mov eax, dword ptr [rsp+0x98] test eax, eax
- je SHORT G_M4730_IG10
+ je SHORT G_M4730_IG12
mov rcx, gword ptr [rsi+0x08] ; gcrRegs +[rcx] mov r10d, dword ptr [rsi+0x18] mov dword ptr [rsp+0x94], r10d lea edx, [r10+rax] cmp edx, dword ptr [rcx+0x08]
- ja G_M4730_IG39 - ;; size=66 bbWeight=1 PerfScore 18.75
+ ja SHORT G_M4730_IG11 + ;; size=62 bbWeight=1 PerfScore 18.75
G_M4730_IG07: ; bbWeight=0.99, gcrefRegs=80CA {rcx rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref movsxd rdx, r10d lea rcx, bword ptr [rcx+2*rdx+0x10] ; gcrRegs -[rcx] ; byrRegs +[rcx] cmp eax, 2
- jg G_M4730_IG25
+ jg G_M4730_IG34
;; size=17 bbWeight=0.99 PerfScore 2.47
-G_M4730_IG08: ; bbWeight=0.99, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0022 {rcx rbp}, byref
+G_M4730_IG08: ; bbWeight=0.99, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0022 {rcx rbp}, byref, isz
mov r9, bword ptr [rsp+0x28] ; byrRegs +[r9] movzx rdx, word ptr [r9] mov word ptr [rcx], dx cmp eax, 2
- je G_M4730_IG19 - ;; size=21 bbWeight=0.99 PerfScore 5.18 -G_M4730_IG09: ; bbWeight=0.99, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
+ je SHORT G_M4730_IG10 + ;; size=17 bbWeight=0.99 PerfScore 5.18 +G_M4730_IG09: ; bbWeight=0.99, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; byrRegs -[rcx r9] ; GC ptr vars -{V103} mov r10d, eax add r10d, dword ptr [rsp+0x94] mov dword ptr [rsi+0x18], r10d
- ;; size=15 bbWeight=0.99 PerfScore 3.21 -G_M4730_IG10: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ jmp SHORT G_M4730_IG12 + ;; size=17 bbWeight=0.99 PerfScore 5.19 +G_M4730_IG10: ; bbWeight=0.07, gcVars=00000000000000000000000000080000 {V103}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0222 {rcx rbp r9}, gcvars, byref, isz + ; byrRegs +[rcx r9] + ; GC ptr vars +{V103} + movzx r9, word ptr [r9+0x02] + ; byrRegs -[r9] + mov word ptr [rcx+0x02], r9w + jmp SHORT G_M4730_IG09 + ;; size=12 bbWeight=0.07 PerfScore 0.33 +G_M4730_IG11: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref + ; byrRegs -[rcx] + mov rcx, rsi + ; gcrRegs +[rcx] + mov rdx, bword ptr [rsp+0x28] + ; byrRegs +[rdx] + mov r8d, eax + ; GC ptr vars -{V103} + call [<unknown method>] + ; gcrRegs -[rcx] + ; byrRegs -[rdx] + ; gcr arg pop 0 + mov eax, dword ptr [rsp+0x98] + ;; size=24 bbWeight=0.01 PerfScore 0.06 +G_M4730_IG12: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
add r13d, eax cmp r13d, r12d
- jae G_M4730_IG57
+ jae G_M4730_IG88
mov ecx, r13d movzx rcx, word ptr [rbx+2*rcx+0x0C] inc r13d cmp r12d, r13d
- jbe G_M4730_IG51
+ jbe G_M4730_IG82
mov eax, r13d movzx rax, word ptr [rbx+2*rax+0x0C] mov dword ptr [rsp+0xB4], eax cmp ecx, eax
- je G_M4730_IG18
+ je G_M4730_IG41
cmp ecx, 123
- jne G_M4730_IG49
+ jne G_M4730_IG80
xor edx, edx mov dword ptr [rsp+0xB0], edx ;; size=73 bbWeight=1 PerfScore 12.25
-G_M4730_IG11: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+G_M4730_IG13: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
mov dword ptr [rsp+0xAC], edx xor r10, r10 ; byrRegs +[r10] @@ -324,7 +347,7 @@ G_M4730_IG11: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 mov dword ptr [rsp+0x84], r9d lea ecx, [r13-0x01] cmp ecx, r12d
- jae G_M4730_IG57
+ jae G_M4730_IG88
cmp word ptr [rbx+2*rcx+0x0C], 123 sete cl movzx rcx, cl @@ -340,18 +363,18 @@ G_M4730_IG11: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 lea edx, [rax-0x30] mov dword ptr [rsp+0xA8], edx cmp edx, 10
- jae G_M4730_IG50
+ jae G_M4730_IG81
inc r13d cmp r12d, r13d
- jbe G_M4730_IG51
+ jbe G_M4730_IG82
mov eax, r13d movzx rax, word ptr [rbx+2*rax+0x0C] cmp eax, 125
- jne G_M4730_IG62
+ jne G_M4730_IG43
;; size=131 bbWeight=1 PerfScore 27.50
-G_M4730_IG12: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+G_M4730_IG14: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
cmp r13d, r12d
- jae G_M4730_IG57
+ jae G_M4730_IG88
mov ecx, r13d cmp word ptr [rbx+2*rcx+0x0C], 125 sete cl @@ -365,155 +388,96 @@ G_M4730_IG12: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ; gcrRegs +[rax] mov r10d, dword ptr [rsp+0xA8] cmp r10d, r14d
- jae G_M4730_IG54
+ jae G_M4730_IG85
mov ecx, r10d mov r9, gword ptr [rbp+8*rcx] ; gcrRegs +[r9] mov gword ptr [rsp+0x50], r9 ; GC ptr vars +{V13} test r15, r15
- jne G_M4730_IG76
+ jne G_M4730_IG60
;; size=77 bbWeight=1 PerfScore 16.25
-G_M4730_IG13: ; bbWeight=1, gcVars=00000000000000000000400000000800 {V13 V93}, gcrefRegs=92C9 {rax rbx rsi rdi r9 r12 r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG15: ; bbWeight=1, gcVars=00000000000000000000400000000800 {V13 V93}, gcrefRegs=92C9 {rax rbx rsi rdi r9 r12 r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
test r12, r12
- jne G_M4730_IG32
+ jne G_M4730_IG26
mov r12d, dword ptr [rsp+0xAC] ; gcrRegs -[r12] test r12d, r12d
- jne SHORT G_M4730_IG15
+ jne SHORT G_M4730_IG17
mov r8d, dword ptr [rsp+0xB0] test r8d, r8d
- jne SHORT G_M4730_IG22
+ jne SHORT G_M4730_IG20
;; size=35 bbWeight=1 PerfScore 5.75
-G_M4730_IG14: ; bbWeight=0.50, gcrefRegs=82C9 {rax rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref
+G_M4730_IG16: ; bbWeight=0.50, gcrefRegs=82C9 {rax rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref
mov dword ptr [rsp+0xB0], r8d ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M4730_IG15: ; bbWeight=1, gcrefRegs=82C9 {rax rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG17: ; bbWeight=1, gcrefRegs=82C9 {rax rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref, isz
mov rcx, r9 ; gcrRegs +[rcx] test rcx, rcx
- je SHORT G_M4730_IG21
+ je SHORT G_M4730_IG19
;; size=8 bbWeight=1 PerfScore 1.50 ...

librariestestsnotieredcompilation.run.windows.x64.Release.mch

+0 (0.00%) : 138545.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -8,54 +8,54 @@ ; 16 inlinees with PGO data; 46 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T33] ( 3, 5.98) ref -> rbx class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T25] ( 4, 10.14) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T32] ( 3, 5.98) ref -> rbx class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T13] ( 7, 22.12) ref -> rsi class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T08] ( 7, 24.76) int -> rcx ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T38] ( 7, 3 ) ref -> [rbp-0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T39] ( 5, 2 ) ref -> [rbp-0x58] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.26) int -> rbx
+; V04 loc4 [V04,T37] ( 7, 3 ) ref -> [rbp-0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T38] ( 5, 2 ) ref -> [rbp-0x58] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.98) int -> rbx
; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T31] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T26] ( 5, 10.06) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T34] ( 2, 4.06) int -> rbx "Inlining Arg" -; V11 tmp4 [V11,T32] ( 3, 6.09) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T30] ( 4, 8 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T25] ( 5, 10.06) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T33] ( 2, 4.06) int -> rbx "Inlining Arg" +; V11 tmp4 [V11,T31] ( 3, 6.09) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T37] ( 3, 3.05) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T27] ( 4, 8.12) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T28] ( 4, 8.12) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T13] ( 2, 16.25) int -> r13 "Inlining Arg" -; V17 tmp10 [V17,T09] ( 3, 24.37) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T36] ( 3, 3.05) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T26] ( 4, 8.12) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T27] ( 4, 8.12) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T14] ( 2, 16.09) int -> r13 "Inlining Arg" +; V17 tmp10 [V17,T10] ( 3, 24.13) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T18] ( 3, 12.19) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.50) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.50) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T19] ( 3, 12.06) ref -> [rbp-0x78] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 32.17) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 32.17) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T14] ( 2, 16.25) int -> r13 "Inlining Arg" -; V24 tmp17 [V24,T10] ( 3, 24.37) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T15] ( 2, 16.09) int -> r13 "Inlining Arg" +; V24 tmp17 [V24,T11] ( 3, 24.13) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T19] ( 3, 12.19) ref -> [rbp-0x98] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.50) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.50) ref -> [rbp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T20] ( 3, 12.06) ref -> [rbp-0x98] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 32.17) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 32.17) ref -> [rbp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T15] ( 2, 16.25) ushort -> r13 "Inlining Arg" -; V34 tmp27 [V34,T11] ( 3, 24.37) ref -> [rbp-0xB0] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T16] ( 2, 16.09) ushort -> r13 "Inlining Arg" +; V34 tmp27 [V34,T12] ( 3, 24.13) ref -> [rbp-0xB0] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T20] ( 3, 12.19) ref -> [rbp-0xB8] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.50) ref -> [rbp-0xC0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.50) ref -> [rbp-0xC8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T21] ( 3, 12.06) ref -> [rbp-0xB8] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 32.17) ref -> [rbp-0xC0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 32.17) ref -> [rbp-0xC8] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T35] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T29] ( 3, 8.12) ubyte -> r13 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T34] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T28] ( 3, 8.04) ubyte -> r13 "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T36] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T30] ( 2, 8.12) ubyte -> rcx "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T35] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T29] ( 3, 8.04) ubyte -> r14 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,15 +64,14 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> rax "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T41] ( 6, 0 ) struct ( 8) [rbp-0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T40] ( 1, 1 ) long -> [rbp-0xD8] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T12] ( 5, 20.31) byref -> r14 "CSE - moderate" -; V59 cse1 [V59,T21] ( 3, 12.19) long -> r14 "CSE - moderate" -; V60 cse2 [V60,T16] ( 5, 14.22) long -> r12 "CSE - moderate" -; V61 cse3 [V61,T17] ( 5, 14.22) long -> [rbp-0x48] spill-single-def "CSE - moderate" -; V62 cse4 [V62,T23] ( 4, 10.16) long -> rdi "CSE - moderate" -; V63 cse5 [V63,T24] ( 4, 10.16) long -> r15 "CSE - moderate" -; V64 cse6 [V64,T22] ( 3, 11.88) int -> rdx "CSE - moderate"
+; V56 tmp49 [V56,T40] ( 6, 0 ) struct ( 8) [rbp-0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T39] ( 1, 1 ) long -> [rbp-0xD8] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T09] ( 6, 24.13) long -> r14 "CSE - moderate" +; V59 cse1 [V59,T17] ( 5, 14.10) long -> r12 "CSE - moderate" +; V60 cse2 [V60,T18] ( 5, 14.10) long -> [rbp-0x48] spill-single-def "CSE - moderate" +; V61 cse3 [V61,T23] ( 4, 10.07) long -> rdi "CSE - moderate" +; V62 cse4 [V62,T24] ( 4, 10.07) long -> r15 "CSE - moderate" +; V63 cse5 [V63,T22] ( 3, 11.88) int -> rdx "CSE - moderate"
; ; Lcl frame size = 200 @@ -138,7 +137,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, mov gword ptr [rbp-0x50], rdi ; GC ptr vars +{V04} ;; size=36 bbWeight=1 PerfScore 6.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000002000000000 {V04}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
mov rcx, 0xD1FFAB1E ; System.IO.UnmanagedMemoryAccessor call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -158,7 +157,7 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000004000000000 {V04}, gcrefRegs=00C mov gword ptr [rbp-0x58], r14 ; GC ptr vars +{V05} ;; size=51 bbWeight=1 PerfScore 7.50
-G_M53770_IG06: ; bbWeight=1.02, gcVars=000000C000000000 {V04 V05}, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1.02, gcVars=0000006000000000 {V04 V05}, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, gcvars, byref
mov dword ptr [rsp+0x20], 12 mov rcx, r14 ; gcrRegs +[rcx] @@ -263,7 +262,7 @@ G_M53770_IG07: ; bbWeight=1.02, extend ; gcr arg pop 0 xor ebx, ebx ;; size=35 bbWeight=1.02 PerfScore 6.85
-G_M53770_IG08: ; bbWeight=4.06, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M53770_IG08: ; bbWeight=4.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov r14d, ebx shl r14, 4 mov r13d, dword ptr [rsi+r14+0x10] @@ -344,15 +343,13 @@ G_M53770_IG08: ; bbWeight=4.06, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, call [<unknown method>] ; gcrRegs -[r8] ; gcr arg pop 0
- lea r14, bword ptr [rsi+r14+0x10] - ; byrRegs +[r14] - mov r13d, dword ptr [r14+0x08]
+ mov r13d, dword ptr [rsi+r14+0x18]
mov rcx, rdi
- ;; size=193 bbWeight=4.06 PerfScore 156.39 -G_M53770_IG09: ; bbWeight=4.06, extend
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
+ ;; size=194 bbWeight=4.02 PerfScore 154.83 +G_M53770_IG09: ; bbWeight=4.02, extend
mov gword ptr [rbp-0x90], rax ; GC ptr vars +{V24} mov rcx, r15 @@ -426,18 +423,18 @@ G_M53770_IG09: ; bbWeight=4.06, extend call [<unknown method>] ; gcrRegs -[r8] ; gcr arg pop 0
- movzx r13, byte ptr [r14+0x04]
+ movzx r13, byte ptr [rsi+r14+0x14]
test r13d, r13d jne G_M53770_IG13
- movzx r13, word ptr [r14+0x0C]
+ movzx r13, word ptr [rsi+r14+0x1C]
mov rcx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[ushort]
- ;; size=220 bbWeight=4.06 PerfScore 154.36 -G_M53770_IG10: ; bbWeight=4.06, isz, extend
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0 mov gword ptr [rbp-0xB0], rax ; GC ptr vars +{V34}
+ ;; size=229 bbWeight=4.02 PerfScore 156.84 +G_M53770_IG10: ; bbWeight=4.02, isz, extend
mov rcx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort] call CORINFO_HELP_NEWSFAST ; gcr arg pop 0 @@ -509,16 +506,15 @@ G_M53770_IG10: ; bbWeight=4.06, isz, extend call [<unknown method>] ; gcrRegs -[r8] ; gcr arg pop 0
- movzx rcx, byte ptr [r14+0x0E] - test ecx, ecx
+ movzx r14, byte ptr [rsi+r14+0x1E] + test r14d, r14d
je SHORT G_M53770_IG14
- ;; size=207 bbWeight=4.06 PerfScore 144.21 -G_M53770_IG11: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - ; byrRegs -[r14]
+ ;; size=197 bbWeight=4.02 PerfScore 134.72 +G_M53770_IG11: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
inc ebx cmp ebx, 12 jl G_M53770_IG08
- ;; size=11 bbWeight=4 PerfScore 6.00
+ ;; size=11 bbWeight=3.96 PerfScore 5.94
G_M53770_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rsi] jmp SHORT G_M53770_IG15 @@ -540,7 +536,7 @@ G_M53770_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ;; size=28 bbWeight=0 PerfScore 0.00 G_M53770_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov byte ptr [rbp-0x40], 1
- mov byte ptr [rbp-0x3F], 0
+ mov byte ptr [rbp-0x3F], r14b
movzx rdx, word ptr [rbp-0x40] xor rcx, rcx ; gcrRegs +[rcx] @@ -592,8 +588,8 @@ G_M53770_IG17: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=20 bbWeight=1 PerfScore 5.25
-G_M53770_IG18: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V05 V38}
+G_M53770_IG18: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V05 V37 V38}
push rbp push r15 push r14 @@ -607,11 +603,11 @@ G_M53770_IG18: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs mov qword ptr [rsp+0x28], rbp lea rbp, [rbp+0x100] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M53770_IG19: ; bbWeight=0, gcVars=000000C000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG19: ; bbWeight=0, gcVars=0000006000000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp-0x58] ; gcrRegs +[rcx] mov byte ptr [rcx+0x24], 0
- ; GC ptr vars -{V05 V38}
+ ; GC ptr vars -{V05 V37 V38}
call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -643,7 +639,7 @@ G_M53770_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rsp+0x28], rbp lea rbp, [rbp+0x100] ;; size=32 bbWeight=0 PerfScore 0.00
-G_M53770_IG22: ; bbWeight=0, gcVars=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG22: ; bbWeight=0, gcVars=0000002000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rcx, gword ptr [rbp-0x50] ; gcrRegs +[rcx] mov edx, 1 @@ -672,7 +668,7 @@ G_M53770_IG23: ; bbWeight=0, funclet epilog, nogc, extend ret ;; size=17 bbWeight=0 PerfScore 0.00
-Total bytes of code 1350, prolog size 34, PerfScore 579.96, instruction count 326, allocated bytes for code 1350 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
+Total bytes of code 1350, prolog size 34, PerfScore 571.33, instruction count 325, allocated bytes for code 1350 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
...

realworld.run.windows.x64.checked.mch

+51 (+1.68%) : 2366.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 33 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> rbx this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> rbx this single-def
; V01 arg1 [V01,T33] ( 7, 11.50) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18,127 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T52] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T72] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r13 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [rsp+0x114] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [rsp+0x110]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r13 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0x114] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [rsp+0x110]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [rsp+0x10C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [rsp+0x108] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T43] ( 3, 12 ) ushort -> rax
-; V17 loc13 [V17,T35] ( 6, 12 ) int -> r10
+; V17 loc13 [V17,T35] ( 6, 12 ) int -> rcx
; V18 loc14 [V18,T38] ( 3, 12 ) ref -> [rsp+0x88] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [rsp+0x100] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T73] ( 3, 6 ) ref -> [rsp+0x80] class-hnd spill-single-def <<unknown class>> @@ -213,7 +213,7 @@ ; V202 cse3 [V202,T76] ( 3, 6 ) int -> rdx "CSE - conservative" ; V203 cse4 [V203,T77] ( 3, 6 ) int -> rdx "CSE - conservative" ; V204 cse5 [V204,T91] ( 3, 1.50) int -> rdi "CSE - conservative"
-; V205 cse6 [V205,T02] ( 18,142 ) int -> r12 "CSE - aggressive"
+; V205 cse6 [V205,T04] ( 19,126.16) int -> r12 "CSE - aggressive"
; V206 cse7 [V206,T06] ( 21, 58 ) int -> [rsp+0xA4] spill-single-def "CSE - aggressive" ; V207 cse8 [V207,T12] ( 11, 29 ) byref -> [rsp+0x30] multi-def "CSE - moderate" ; @@ -247,7 +247,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0208 {rb ; byrRegs +[rbp] mov r14d, dword ptr [r9+0x08] test rsi, rsi
- je G_M36935_IG62
+ je G_M36935_IG67
test rdi, rdi jne SHORT G_M36935_IG04 ;; size=21 bbWeight=1 PerfScore 6.50 @@ -284,7 +284,7 @@ G_M36935_IG06: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ; gcrRegs -[rax] mov r12d, dword ptr [rsi+0x08] cmp r12d, r13d
- jbe G_M36935_IG58
+ jbe G_M36935_IG63
;; size=13 bbWeight=8 PerfScore 26.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz mov ecx, r13d @@ -337,9 +337,9 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ; gcr arg pop 0 mov dword ptr [rsp+0xF8], eax test eax, eax
- jl G_M36935_IG59
+ jl G_M36935_IG64
cmp eax, dword ptr [rsp+0xCC]
- ja G_M36935_IG69
+ ja G_M36935_IG74
mov ecx, eax not ecx shr ecx, 31 @@ -371,7 +371,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 mov r8d, dword ptr [rbx+0x08] mov r10d, dword ptr [rcx+0x08] cmp r8d, r10d
- ja G_M36935_IG69
+ ja G_M36935_IG74
mov rcx, bword ptr [rcx] mov r9d, r8d lea r9, bword ptr [rcx+2*r9] @@ -390,7 +390,7 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 ; gcr arg pop 0 mov eax, dword ptr [rsp+0xF8] cmp eax, dword ptr [rsp+0xF4]
- ja G_M36935_IG70
+ ja G_M36935_IG75
mov r8d, eax add r8, r8 mov rcx, bword ptr [rsp+0x70] @@ -405,12 +405,12 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 add dword ptr [rbx+0x08], ecx add r13d, ecx cmp r13d, r12d
- jae G_M36935_IG61
+ jae G_M36935_IG66
mov ecx, r13d movzx rax, word ptr [rsi+2*rcx+0x0C] inc r13d cmp r12d, r13d
- jbe G_M36935_IG65
+ jbe G_M36935_IG70
mov ecx, r13d movzx r8, word ptr [rsi+2*rcx+0x0C] cmp eax, r8d @@ -446,7 +446,7 @@ G_M36935_IG12: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V207}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz ; GC ptr vars +{V12 V207} cmp eax, 123
- jne G_M36935_IG63
+ jne G_M36935_IG68
mov dword ptr [rsp+0x114], r8d xor eax, eax mov dword ptr [rsp+0x110], eax @@ -460,7 +460,7 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V20 mov dword ptr [rsp+0xD0], r9d lea ecx, [r13-0x01] cmp ecx, r12d
- jae G_M36935_IG61
+ jae G_M36935_IG66
lea ecx, [r13-0x01] cmp word ptr [rsi+2*rcx+0x0C], 123 sete cl @@ -477,162 +477,188 @@ G_M36935_IG13: ; bbWeight=4, gcVars=00000000000000000000000000001000 {V20 mov eax, dword ptr [rsp+0x114] lea edx, [rax-0x30] cmp edx, 10
- jae G_M36935_IG64
+ jae G_M36935_IG69
inc r13d cmp r12d, r13d
- jbe G_M36935_IG65
+ jbe G_M36935_IG70
mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 125
+ cmp eax, 125
je SHORT G_M36935_IG15
- ;; size=154 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 123.00
G_M36935_IG14: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz jmp SHORT G_M36935_IG17 ;; size=2 bbWeight=2 PerfScore 4.00 G_M36935_IG15: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref mov dword ptr [rsp+0x108], edx
- jmp G_M36935_IG32
+ jmp G_M36935_IG37
;; size=12 bbWeight=2 PerfScore 6.00 G_M36935_IG16: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref lea edx, [rdx+4*rdx]
- lea edx, [rcx+2*rdx-0x30]
+ lea edx, [rax+2*rdx-0x30]
mov dword ptr [rsp+0x108], edx inc r13d cmp r12d, r13d
- jbe G_M36935_IG65 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ jbe G_M36935_IG70 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C]
mov edx, dword ptr [rsp+0x108] ;; size=41 bbWeight=8 PerfScore 58.00 G_M36935_IG17: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- lea eax, [rcx-0x30] - cmp eax, 9
+ lea ecx, [rax-0x30] + cmp ecx, 9
ja SHORT G_M36935_IG18 cmp edx, 0xD1FFAB1E jl SHORT G_M36935_IG16 ;; size=16 bbWeight=16 PerfScore 48.00 G_M36935_IG18: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
+ cmp eax, 32
jne SHORT G_M36935_IG20 ;; size=5 bbWeight=2 PerfScore 2.50 G_M36935_IG19: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d cmp r12d, r13d
- jbe G_M36935_IG65 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - cmp ecx, 32
+ jbe G_M36935_IG70 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C] + cmp eax, 32
je SHORT G_M36935_IG19 ;; size=25 bbWeight=16 PerfScore 80.00
-G_M36935_IG20: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref - cmp ecx, 44 - mov r8d, dword ptr [rsp+0x110] - jne G_M36935_IG28 - ;; size=17 bbWeight=2 PerfScore 4.50
+G_M36935_IG20: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + cmp eax, 44 + mov r10d, eax + jne SHORT G_M36935_IG25 + ;; size=8 bbWeight=2 PerfScore 3.00
G_M36935_IG21: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz inc r13d cmp r12d, r13d
- jbe G_M36935_IG65 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - cmp ecx, 32
+ jbe G_M36935_IG70 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C] + cmp eax, 32
je SHORT G_M36935_IG21 ;; size=25 bbWeight=16 PerfScore 80.00 G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 45
+ cmp eax, 45
jne SHORT G_M36935_IG23 mov dword ptr [rsp+0x10C], 1 inc r13d cmp r12d, r13d
- jbe G_M36935_IG65 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ jbe G_M36935_IG70 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00 G_M36935_IG23: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- add ecx, -48 - mov r8d, ecx - cmp r8d, 10 - jae G_M36935_IG64
+ add eax, -48 + cmp eax, 10 + jae G_M36935_IG69
inc r13d cmp r12d, r13d
- jbe G_M36935_IG65 - jmp SHORT G_M36935_IG25 - ;; size=30 bbWeight=2 PerfScore 10.50 -G_M36935_IG24: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref - lea r8d, [r8+4*r8] - lea r8d, [rcx+2*r8-0x30] - mov dword ptr [rsp+0x110], r8d
+ jbe G_M36935_IG70 + test r13d, r13d + jge SHORT G_M36935_IG27 + ;; size=29 bbWeight=2 PerfScore 8.50 +G_M36935_IG24: ; bbWeight=0.02, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz + jmp SHORT G_M36935_IG30 + ;; size=2 bbWeight=0.02 PerfScore 0.04 +G_M36935_IG25: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref + mov eax, dword ptr [rsp+0x110]
...

+51 (+2.05%) : 2140.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 33, 559.50) ref -> rbx this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T31] ( 7, 17.50) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T12] ( 18, 127 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T11] ( 19, 127 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T47] ( 4, 8 ) byref -> r9 ld-addr-op single-def ; V04 loc0 [V04,T62] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r13 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [rsp+0xC4] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [rsp+0xC0]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r13 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [rsp+0xC4] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [rsp+0xBC] ;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 48 ) int -> [rsp+0xB8] @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T45] ( 3, 12 ) ushort -> rax
-; V17 loc13 [V17,T42] ( 6, 12 ) int -> r10
+; V17 loc13 [V17,T42] ( 6, 12 ) int -> rcx
; V18 loc14 [V18,T43] ( 3, 12 ) ref -> rax class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [rsp+0xB0] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T21] ( 3, 24 ) ref -> [rsp+0x50] class-hnd spill-single-def <<unknown class>> @@ -170,7 +170,7 @@ ; V159 cse3 [V159,T44] ( 3, 12 ) ref -> rdx "CSE - conservative" ; V160 cse4 [V160,T46] ( 3, 12 ) int -> r8 "CSE - conservative" ; V161 cse5 [V161,T03] ( 6, 416 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
-; V162 cse6 [V162,T11] ( 18, 142 ) int -> r12 "CSE - aggressive"
+; V162 cse6 [V162,T12] ( 19, 126.16) int -> r12 "CSE - aggressive"
; ; Lcl frame size = 200 @@ -202,7 +202,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0200 ; byrRegs +[rbp] mov r14d, dword ptr [r9+0x08] test rsi, rsi
- je G_M4730_IG64
+ je G_M4730_IG69
test rdi, rdi jne SHORT G_M4730_IG04 ;; size=21 bbWeight=1 PerfScore 6.50 @@ -239,7 +239,7 @@ G_M4730_IG06: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ; gcrRegs -[rax] mov r12d, dword ptr [rsi+0x08] cmp r12d, r13d
- jbe G_M4730_IG59
+ jbe G_M4730_IG64
;; size=13 bbWeight=8 PerfScore 26.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref mov ecx, r13d @@ -292,9 +292,9 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ; gcr arg pop 0 mov dword ptr [rsp+0xA8], eax test eax, eax
- jl G_M4730_IG61
+ jl G_M4730_IG66
cmp eax, dword ptr [rsp+0x9C]
- ja G_M4730_IG75
+ ja G_M4730_IG80
mov ecx, eax not ecx shr ecx, 31 @@ -314,12 +314,12 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 cmp r13d, r12d ;; size=233 bbWeight=4 PerfScore 214.00 G_M4730_IG08: ; bbWeight=4, isz, extend
- jae G_M4730_IG63
+ jae G_M4730_IG68
mov ecx, r13d movzx rax, word ptr [rsi+2*rcx+0x0C] inc r13d cmp r12d, r13d
- jbe G_M4730_IG67
+ jbe G_M4730_IG72
mov ecx, r13d movzx r8, word ptr [rsi+2*rcx+0x0C] cmp eax, r8d @@ -351,7 +351,7 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 ;; size=8 bbWeight=4 PerfScore 9.00 G_M4730_IG12: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz cmp eax, 123
- jne G_M4730_IG65
+ jne G_M4730_IG70
mov dword ptr [rsp+0xC4], r8d xor eax, eax mov dword ptr [rsp+0xC0], eax @@ -365,7 +365,7 @@ G_M4730_IG12: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 mov dword ptr [rsp+0xA0], r9d lea ecx, [r13-0x01] cmp ecx, r12d
- jae G_M4730_IG63
+ jae G_M4730_IG68
lea ecx, [r13-0x01] cmp word ptr [rsi+2*rcx+0x0C], 123 sete cl @@ -381,162 +381,188 @@ G_M4730_IG12: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0 mov eax, dword ptr [rsp+0xC4] lea edx, [rax-0x30] cmp edx, 10
- jae G_M4730_IG66
+ jae G_M4730_IG71
inc r13d cmp r12d, r13d
- jbe G_M4730_IG67
+ jbe G_M4730_IG72
mov eax, r13d movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax - cmp ecx, 125
+ cmp eax, 125
je SHORT G_M4730_IG14
- ;; size=154 bbWeight=4 PerfScore 124.00
+ ;; size=152 bbWeight=4 PerfScore 123.00
G_M4730_IG13: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz jmp SHORT G_M4730_IG16 ;; size=2 bbWeight=2 PerfScore 4.00 G_M4730_IG14: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref mov dword ptr [rsp+0xB8], edx
- jmp G_M4730_IG31
+ jmp G_M4730_IG36
;; size=12 bbWeight=2 PerfScore 6.00 G_M4730_IG15: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref lea edx, [rdx+4*rdx]
- lea edx, [rcx+2*rdx-0x30]
+ lea edx, [rax+2*rdx-0x30]
mov dword ptr [rsp+0xB8], edx inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ jbe G_M4730_IG72 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C]
mov edx, dword ptr [rsp+0xB8] ;; size=41 bbWeight=8 PerfScore 58.00 G_M4730_IG16: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- lea eax, [rcx-0x30] - cmp eax, 9
+ lea ecx, [rax-0x30] + cmp ecx, 9
ja SHORT G_M4730_IG17 cmp edx, 0xD1FFAB1E jl SHORT G_M4730_IG15 ;; size=16 bbWeight=16 PerfScore 48.00 G_M4730_IG17: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- cmp ecx, 32
+ cmp eax, 32
jne SHORT G_M4730_IG19 ;; size=5 bbWeight=2 PerfScore 2.50 G_M4730_IG18: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - cmp ecx, 32
+ jbe G_M4730_IG72 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C] + cmp eax, 32
je SHORT G_M4730_IG18 ;; size=25 bbWeight=16 PerfScore 80.00
-G_M4730_IG19: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref - cmp ecx, 44 - mov r8d, dword ptr [rsp+0xC0] - jne G_M4730_IG27 - ;; size=17 bbWeight=2 PerfScore 4.50
+G_M4730_IG19: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz + cmp eax, 44 + mov r10d, eax + jne SHORT G_M4730_IG24 + ;; size=8 bbWeight=2 PerfScore 3.00
G_M4730_IG20: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C] - cmp ecx, 32
+ jbe G_M4730_IG72 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C] + cmp eax, 32
je SHORT G_M4730_IG20 ;; size=25 bbWeight=16 PerfScore 80.00 G_M4730_IG21: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- cmp ecx, 45
+ cmp eax, 45
jne SHORT G_M4730_IG22 mov dword ptr [rsp+0xBC], 1 inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - mov ecx, r13d - movzx rcx, word ptr [rsi+2*rcx+0x0C]
+ jbe G_M4730_IG72 + mov eax, r13d + movzx rax, word ptr [rsi+2*rax+0x0C]
;; size=36 bbWeight=2 PerfScore 12.00 G_M4730_IG22: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- add ecx, -48 - mov r8d, ecx - cmp r8d, 10 - jae G_M4730_IG66
+ add eax, -48 + cmp eax, 10 + jae G_M4730_IG71
inc r13d cmp r12d, r13d
- jbe G_M4730_IG67 - jmp SHORT G_M4730_IG24 - ;; size=30 bbWeight=2 PerfScore 10.50 -G_M4730_IG23: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref - lea r8d, [r8+4*r8] - lea r8d, [rcx+2*r8-0x30] - mov dword ptr [rsp+0xC0], r8d
+ jbe G_M4730_IG72 + test r13d, r13d + jge SHORT G_M4730_IG26 + ;; size=29 bbWeight=2 PerfScore 8.50 +G_M4730_IG23: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz + jmp SHORT G_M4730_IG29 + ;; size=2 bbWeight=0.02 PerfScore 0.04 +G_M4730_IG24: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref + mov eax, dword ptr [rsp+0xC0] + jmp G_M4730_IG32 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M4730_IG25: ; bbWeight=7.92, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref + lea eax, [rax+4*rax] + lea eax, [r10+2*rax-0x30]
inc r13d cmp r12d, r13d
- mov r8d, dword ptr [rsp+0xC0] - jbe G_M4730_IG67 - ;; size=37 bbWeight=8 PerfScore 40.00 -G_M4730_IG24: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz - cmp r13d, r12d - jae G_M4730_IG63
+ jbe G_M4730_IG72 + ;; size=20 bbWeight=7.92 PerfScore 23.76 +G_M4730_IG26: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov ecx, r13d movzx rcx, word ptr [rsi+2*rcx+0x0C]
- lea r10d, [rcx-0x30] - cmp r10d, 9 - ja SHORT G_M4730_IG25
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x64.checked.mch 2 0 2 0 -0 +119
benchmarks.run_pgo.windows.x64.checked.mch 2 0 2 0 -0 +710
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x64.checked.mch 151 0 151 0 -0 +12,721
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 4 1 3 0 -14 +521
libraries_tests.run.windows.x64.Release.mch 214 1 213 0 -34 +19,078
librariestestsnotieredcompilation.run.windows.x64.Release.mch 1 0 0 1 -0 +0
realworld.run.windows.x64.checked.mch 2 0 2 0 -0 +102
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
376 2 373 1 -48 +33,251

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x64.checked.mch 27,915 4 27,911 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 102,635 50,161 52,474 19 (0.02%) 19 (0.02%)
benchmarks.run_tiered.windows.x64.checked.mch 54,333 36,871 17,462 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 573,720 341,128 232,592 8 (0.00%) 9 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 2,104 0 2,104 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 309,145 6 309,139 0 (0.00%) 1 (0.00%)
libraries_tests.run.windows.x64.Release.mch 671,224 476,124 195,100 111 (0.02%) 111 (0.02%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 320,488 21,924 298,564 0 (0.00%) 0 (0.00%)
realworld.run.windows.x64.checked.mch 36,887 3 36,884 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 67 0 67 0 (0.00%) 0 (0.00%)
2,098,518 926,221 1,172,297 138 (0.01%) 140 (0.01%)

jit-analyze output

benchmarks.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 8736891 (overridden on cmd)
Total bytes of diff: 8737010 (overridden on cmd)
Total bytes of delta: 119 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


benchmarks.run_pgo.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 35778033 (overridden on cmd)
Total bytes of diff: 35778743 (overridden on cmd)
Total bytes of delta: 710 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


coreclr_tests.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 392964023 (overridden on cmd)
Total bytes of diff: 392976744 (overridden on cmd)
Total bytes of delta: 12721 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.pmi.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 61645095 (overridden on cmd)
Total bytes of diff: 61645602 (overridden on cmd)
Total bytes of delta: 507 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


libraries_tests.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 278843071 (overridden on cmd)
Total bytes of diff: 278862115 (overridden on cmd)
Total bytes of delta: 19044 (0.01 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 137560760 (overridden on cmd)
Total bytes of diff: 137560760 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


realworld.run.windows.x64.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14184922 (overridden on cmd)
Total bytes of diff: 14185024 (overridden on cmd)
Total bytes of delta: 102 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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