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).