Assembly Diffs
linux arm64
Diffs are based on 2,507,309 contexts (1,007,092 MinOpts, 1,500,217 FullOpts).
MISSED contexts: base: 8 (0.00%), diff: 1 (0.00%)
Overall (+40,840 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
15,557,684 |
+144 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
80,094,232 |
-60 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
24,601,160 |
-208 |
| coreclr_tests.run.linux.arm64.checked.mch |
508,772,900 |
+14,648 |
| libraries.crossgen2.linux.arm64.checked.mch |
55,844,108 |
+248 |
| libraries.pmi.linux.arm64.checked.mch |
76,294,184 |
+252 |
| libraries_tests.run.linux.arm64.Release.mch |
395,688,828 |
+25,700 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
165,003,208 |
+12 |
| realworld.run.linux.arm64.checked.mch |
15,903,660 |
+144 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
2,946,792 |
-40 |
FullOpts (+40,840 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm64.checked.mch |
15,252,756 |
+144 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
54,159,076 |
-60 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
4,862,504 |
-208 |
| coreclr_tests.run.linux.arm64.checked.mch |
160,583,988 |
+14,648 |
| libraries.crossgen2.linux.arm64.checked.mch |
55,842,472 |
+248 |
| libraries.pmi.linux.arm64.checked.mch |
76,174,200 |
+252 |
| libraries_tests.run.linux.arm64.Release.mch |
180,556,876 |
+25,700 |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
151,505,744 |
+12 |
| realworld.run.linux.arm64.checked.mch |
15,322,736 |
+144 |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
2,945,804 |
-40 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
+72 (+2.29%) : 1482.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%) : 9088.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_pgo.linux.arm64.checked.mch
-60 (-7.08%) : 102735.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -10,16 +10,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 15, 104.11) ref -> x0 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T13] ( 12, 103.91) ref -> x0 class-hnd single-def <float[][]>
; V01 arg1 [V01,T20] ( 7, 4.63) ref -> x1 class-hnd single-def <int[][]>
; V02 arg2 [V02,T21] ( 3, 3 ) ref -> x2 class-hnd single-def <double[]>
; V03 arg3 [V03,T23] ( 4, 2.21) ref -> x3 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T22] ( 5, 2.62) int -> x4 single-def
+; V04 arg4 [V04,T22] ( 4, 2.62) int -> x4 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T05] ( 25,1698.38) int -> x5
-; V08 loc3 [V08,T28] ( 6, 0.63) ref -> x8 class-hnd <float[]>
-; V09 loc4 [V09,T12] ( 13, 108.61) int -> x7
+; V07 loc2 [V07,T05] ( 20,1698.38) int -> x5
+; V08 loc3 [V08,T28] ( 5, 0.63) ref -> x8 class-hnd <float[]>
+; V09 loc4 [V09,T12] ( 12, 108.61) int -> x7
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 18,1200.10) int -> x6
; V12 loc7 [V12,T31] ( 4, 199.58) float -> d16
@@ -45,7 +45,7 @@
; V32 cse2 [V32,T11] ( 5, 296.93) long -> xip0 "CSE - aggressive"
; V33 cse3 [V33,T25] ( 5, 3.00) long -> x15 "CSE - moderate"
; V34 cse4 [V34,T10] ( 16, 300.70) int -> x12 hoist multi-def "CSE - aggressive"
-; V35 cse5 [V35,T14] ( 9, 101.84) int -> x2 hoist "CSE - aggressive"
+; V35 cse5 [V35,T14] ( 7, 101.63) int -> x2 hoist "CSE - aggressive"
; V36 cse6 [V36,T15] ( 6, 101.28) byref -> x9 hoist "CSE - aggressive"
; V37 cse7 [V37,T18] ( 4, 100.00) int -> x10 hoist multi-def "CSE - aggressive"
; V38 cse8 [V38,T16] ( 4, 100.00) byref -> x11 hoist multi-def "CSE - aggressive"
@@ -75,18 +75,18 @@ G_M56974_IG02: ; bbWeight=1, gcrefRegs=010F {x0 x1 x2 x3 x8}, byrefRegs=0
;; size=8 bbWeight=1 PerfScore 3.50
G_M56974_IG03: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
cmp w2, w6
- ble G_M56974_IG17
+ ble G_M56974_IG12
;; size=8 bbWeight=0.21 PerfScore 0.32
G_M56974_IG04: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- cbz x1, G_M56974_IG26
- cbz x0, G_M56974_IG26
- tbnz w6, #31, G_M56974_IG26
+ cbz x1, G_M56974_IG22
+ cbz x0, G_M56974_IG22
+ tbnz w6, #31, G_M56974_IG22
ldr w10, [x1, #0x08]
cmp w10, w2
- blt G_M56974_IG26
+ blt G_M56974_IG22
ldr w10, [x0, #0x08]
cmp w10, w2
- blt G_M56974_IG26
+ blt G_M56974_IG22
ldr w10, [x8, #0x08]
add x11, x8, #16
; byrRegs +[x11]
@@ -97,7 +97,7 @@ G_M56974_IG04: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0
;; size=56 bbWeight=0.21 PerfScore 4.20
G_M56974_IG05: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w7, w10
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
ldr s16, [x11, x13]
ldr w15, [x14, #0x08]
cmp w15, w5
@@ -105,45 +105,18 @@ G_M56974_IG05: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
;; size=24 bbWeight=98.79 PerfScore 889.12
G_M56974_IG06: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w5, w6
- bne G_M56974_IG19
+ bne G_M56974_IG15
;; size=8 bbWeight=395.17 PerfScore 592.75
G_M56974_IG07: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref
movi v17.16b, #0
- b G_M56974_IG20
+ b G_M56974_IG16
;; size=8 bbWeight=395.17 PerfScore 592.75
G_M56974_IG08: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs -[x8 x14]
; byrRegs -[x11]
- cbz x0, G_M56974_IG16
- tbnz w5, #31, G_M56974_IG16
- ldr w7, [x0, #0x08]
- cmp w7, w2
- blt G_M56974_IG16
- ;; size=20 bbWeight=0.21 PerfScore 1.34
-G_M56974_IG09: ; bbWeight=0.64, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
- b G_M56974_IG11
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
- add x8, x0, #16
- ; byrRegs +[x8]
- ldr x8, [x8, w5, UXTW #3]
- ; gcrRegs +[x8]
- ; byrRegs -[x8]
- mov w7, wzr
- cmp w4, #0
- bgt G_M56974_IG13
- ;; size=20 bbWeight=0.21 PerfScore 1.15
-G_M56974_IG11: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
- ; gcrRegs -[x8]
- add w5, w5, #1
- cmp w2, w5
- ble G_M56974_IG38
- b G_M56974_IG10
- ;; size=16 bbWeight=0.21 PerfScore 0.63
-G_M56974_IG12: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
ldr w8, [x0, #0x08]
cmp w5, w8
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
add x7, x0, #16
; byrRegs +[x7]
ldr x8, [x7, w5, UXTW #3]
@@ -151,51 +124,52 @@ G_M56974_IG12: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200
mov w7, wzr
; byrRegs -[x7]
cmp w4, #0
- ble G_M56974_IG16
- ;; size=32 bbWeight=0.00 PerfScore 0.02
-G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- ldr w6, [x1, #0x08]
- cmp w5, w6
- bhs G_M56974_IG37
- ldr x6, [x9, w5, UXTW #3]
- ; gcrRegs +[x6]
- tbnz w7, #31, G_M56974_IG17
- ;; size=20 bbWeight=0.21 PerfScore 1.79
-G_M56974_IG14: ; bbWeight=6.74, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
- ldr w6, [x6, #0x08]
- ; gcrRegs -[x6]
- cmp w6, w7
- ble G_M56974_IG17
- ;; size=12 bbWeight=6.74 PerfScore 30.33
-G_M56974_IG15: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
- add w6, w5, #1
- b G_M56974_IG03
- ;; size=8 bbWeight=0.21 PerfScore 0.32
-G_M56974_IG16: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
+ bgt G_M56974_IG10
+ ;; size=32 bbWeight=0.21 PerfScore 2.11
+G_M56974_IG09: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs -[x8]
add w5, w5, #1
cmp w2, w5
- ble G_M56974_IG38
- b G_M56974_IG12
- ;; size=16 bbWeight=0.00 PerfScore 0.01
-G_M56974_IG17: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
+ ble G_M56974_IG34
+ b G_M56974_IG08
+ ;; size=16 bbWeight=0.21 PerfScore 0.63
+G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs +[x8]
+ ldr w6, [x1, #0x08]
+ cmp w5, w6
+ bhs G_M56974_IG33
+ ldr x6, [x9, w5, UXTW #3]
+ ; gcrRegs +[x6]
+ tbnz w7, #31, G_M56974_IG12
+ ;; size=20 bbWeight=0.21 PerfScore 1.79
+G_M56974_IG11: ; bbWeight=6.74, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
+ ldr w6, [x6, #0x08]
+ ; gcrRegs -[x6]
+ cmp w6, w7
+ bgt G_M56974_IG14
+ ;; size=12 bbWeight=6.74 PerfScore 30.33
+G_M56974_IG12: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
add w7, w7, #1
cmp w7, w4
- blt G_M56974_IG13
+ blt G_M56974_IG10
;; size=12 bbWeight=0.41 PerfScore 0.82
-G_M56974_IG18: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
+G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
; gcrRegs -[x8]
- b G_M56974_IG08
+ b G_M56974_IG09
;; size=4 bbWeight=0.21 PerfScore 0.21
-G_M56974_IG19: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
- ; gcrRegs +[x8 x14]
+G_M56974_IG14: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
+ ; gcrRegs +[x8]
+ add w6, w5, #1
+ b G_M56974_IG03
+ ;; size=8 bbWeight=0.21 PerfScore 0.32
+G_M56974_IG15: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+ ; gcrRegs +[x14]
; byrRegs +[x11]
mov x15, x14
; gcrRegs +[x15]
ldr wip0, [x15, #0x08]
cmp w5, wip0
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
@@ -206,14 +180,14 @@ G_M56974_IG19: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byref
sub wip0, wip0, #1
ldr w19, [x15, #0x08]
cmp wip0, w19
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, wip0, UXTW #2]
fcvt d17, s17
;; size=56 bbWeight=395.17 PerfScore 8100.90
-G_M56974_IG20: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG16: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
; byrRegs -[x15]
fcvt d16, s16
fadd d16, d16, d17
@@ -221,15 +195,15 @@ G_M56974_IG20: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
ldr x15, [x9, xip0]
; gcrRegs +[x15]
sxtw w19, w12
- tbnz w19, #31, G_M56974_IG25
+ tbnz w19, #31, G_M56974_IG21
;; size=24 bbWeight=98.79 PerfScore 1136.10
-G_M56974_IG21: ; bbWeight=3161.33, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG17: ; bbWeight=3161.33, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
ldr w15, [x15, #0x08]
; gcrRegs -[x15]
cmp w15, w19
- ble G_M56974_IG25
+ ble G_M56974_IG21
;; size=12 bbWeight=3161.33 PerfScore 14225.97
-G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG18: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
add x15, x0, #16
; byrRegs +[x15]
ldr x15, [x15, xip0]
@@ -237,27 +211,27 @@ G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
; byrRegs -[x15]
ldr w19, [x15, #0x08]
cmp w12, w19
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, w12, UXTW #2]
fcvt d17, s17
fcmp d17, d16
- bgt G_M56974_IG25
+ bgt G_M56974_IG21
;; size=40 bbWeight=98.79 PerfScore 1630.06
...
benchmarks.run_tiered.linux.arm64.checked.mch
-148 (-13.81%) : 35206.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
@@ -10,47 +10,44 @@
; Final local variable assignments
;
; V00 arg0 [V00,T16] ( 7, 10.09) ref -> x0 class-hnd single-def <double[][]>
-; V01 arg1 [V01,T13] ( 9, 14.33) ref -> x1 class-hnd single-def <double[]>
-; V02 arg2 [V02,T18] ( 12, 9.10) ref -> x20 class-hnd single-def <double[][][]>
-; V03 arg3 [V03,T19] ( 12, 9.10) ref -> x21 class-hnd single-def <double[][]>
-; V04 arg4 [V04,T08] ( 12, 20 ) int -> x19 single-def
-; V05 loc0 [V05,T10] ( 12, 20.08) ref -> x24 class-hnd <double[][]>
-; V06 loc1 [V06,T09] ( 13, 20.32) ref -> x23 class-hnd <double[]>
-; V07 loc2 [V07,T28] ( 2, 2 ) long -> x25
+; V01 arg1 [V01,T13] ( 7, 14.21) ref -> x1 class-hnd single-def <double[]>
+; V02 arg2 [V02,T18] ( 9, 9.08) ref -> x20 class-hnd single-def <double[][][]>
+; V03 arg3 [V03,T19] ( 9, 9.08) ref -> x21 class-hnd single-def <double[][]>
+; V04 arg4 [V04,T12] ( 8, 17 ) int -> x19 single-def
+; V05 loc0 [V05,T09] ( 11, 20.08) ref -> x24 class-hnd <double[][]>
+; V06 loc1 [V06,T08] ( 10, 20.20) ref -> x23 class-hnd <double[]>
+; V07 loc2 [V07,T28] ( 2, 2 ) long -> x27
; V08 loc3 [V08,T02] ( 14, 94.16) int -> x2
-; V09 loc4 [V09,T07] ( 11, 27.04) int -> x3
-; V10 loc5 [V10,T00] ( 40,127.84) int -> x22
+; V09 loc4 [V09,T06] ( 6, 30 ) int -> x3
+; V10 loc5 [V10,T00] ( 32,127.52) int -> x22
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T36] ( 6, 64.00) double -> d16 "Strict ordering of exceptions for Array store"
-; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> x9 class-hnd "Strict ordering of exceptions for Array store" <double[]>
-; V14 tmp3 [V14,T37] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
+; V12 tmp1 [V12,T33] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
+; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V14 tmp3 [V14,T34] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V16 tmp5 [V16,T20] ( 6, 10 ) ref -> registers class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V17 tmp6 [V17 ] ( 4, 8 ) int -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V18 tmp7 [V18 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V19 tmp8 [V19,T03] ( 5, 64.32) ref -> x10 "arr expr"
-; V20 cse0 [V20,T11] ( 4, 20.04) ref -> x8 hoist multi-def "CSE - aggressive"
-; V21 cse1 [V21,T33] ( 2, 0.20) ref -> x5 hoist "CSE - conservative"
-; V22 cse2 [V22,T06] ( 6, 27.92) ref -> x5 multi-def "CSE - aggressive"
-; V23 cse3 [V23,T15] ( 6, 12.12) long -> x4 hoist multi-def "CSE - aggressive"
-; V24 cse4 [V24,T04] ( 3, 47.52) long -> x7 "CSE - aggressive"
-; V25 cse5 [V25,T05] ( 3, 47.04) long -> x4 "CSE - aggressive"
+; V19 tmp8 [V19,T03] ( 5, 64.32) ref -> x13 "arr expr"
+; V20 cse0 [V20,T10] ( 4, 20.04) ref -> x10 hoist multi-def "CSE - aggressive"
+; V21 cse1 [V21,T31] ( 2, 0.20) ref -> x7 hoist "CSE - conservative"
+; V22 cse2 [V22,T07] ( 6, 27.92) ref -> x7 multi-def "CSE - aggressive"
+; V23 cse3 [V23,T15] ( 6, 12.12) long -> x6 hoist multi-def "CSE - aggressive"
+; V24 cse4 [V24,T04] ( 3, 47.52) long -> x6 "CSE - aggressive"
+; V25 cse5 [V25,T05] ( 3, 47.52) long -> x9 "CSE - aggressive"
; V26 cse6 [V26,T17] ( 3, 11.88) long -> x0 "CSE - aggressive"
-; V27 cse7 [V27,T25] ( 3, 5.94) long -> x2 "CSE - aggressive"
-; V28 cse8 [V28,T29] ( 3, 0.48) long -> x4 "CSE - conservative"
-; V29 cse9 [V29,T30] ( 3, 0.48) long -> x6 "CSE - conservative"
-; V30 cse10 [V30,T31] ( 3, 0.48) long -> x4 "CSE - conservative"
-; V31 cse11 [V31,T34] ( 3, 0.12) long -> x0 "CSE - conservative"
-; V32 cse12 [V32,T35] ( 3, 0.06) long -> x2 "CSE - conservative"
-; V33 cse13 [V33,T27] ( 3, 4.05) byref -> x26 hoist "CSE - aggressive"
-; V34 cse14 [V34,T14] ( 4, 16.01) byref -> x25 hoist "CSE - aggressive"
-; V35 cse15 [V35,T24] ( 4, 8.08) int -> x6 hoist multi-def "CSE - aggressive"
-; V36 cse16 [V36,T23] ( 4, 8.08) byref -> x7 hoist multi-def "CSE - aggressive"
-; V37 cse17 [V37,T12] ( 4, 19.84) byref -> x2 hoist multi-def "CSE - aggressive"
-; V38 cse18 [V38,T26] ( 4, 5.04) long -> x26 hoist multi-def "CSE - aggressive"
-; V39 cse19 [V39,T21] ( 8, 9.04) byref -> x27 hoist multi-def "CSE - aggressive"
-; V40 cse20 [V40,T22] ( 8, 9.04) byref -> x28 hoist multi-def "CSE - aggressive"
-; V41 cse21 [V41,T32] ( 2, 0.24) byref -> x2 hoist "CSE - conservative"
+; V27 cse7 [V27,T25] ( 3, 6 ) long -> x2 "CSE - aggressive"
+; V28 cse8 [V28,T29] ( 3, 0.48) long -> x6 "CSE - conservative"
+; V29 cse9 [V29,T30] ( 3, 0.48) long -> x8 "CSE - conservative"
+; V30 cse10 [V30,T32] ( 3, 0.12) long -> x0 "CSE - conservative"
+; V31 cse11 [V31,T27] ( 3, 4.05) byref -> x5 hoist "CSE - aggressive"
+; V32 cse12 [V32,T14] ( 3, 16.01) byref -> x4 hoist "CSE - aggressive"
+; V33 cse13 [V33,T24] ( 4, 8.08) int -> x8 hoist multi-def "CSE - aggressive"
+; V34 cse14 [V34,T23] ( 4, 8.08) byref -> x9 hoist multi-def "CSE - aggressive"
+; V35 cse15 [V35,T11] ( 4, 20.04) byref -> x2 hoist multi-def "CSE - aggressive"
+; V36 cse16 [V36,T26] ( 4, 5.04) long -> x28 hoist multi-def "CSE - aggressive"
+; V37 cse17 [V37,T21] ( 6, 9.04) byref -> x25 hoist multi-def "CSE - aggressive"
+; V38 cse18 [V38,T22] ( 6, 9.04) byref -> x26 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -74,186 +71,123 @@ G_M9806_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
ldr w22, [fp, #0xA4]
;; size=56 bbWeight=0.01 PerfScore 0.22
G_M9806_IG02: ; bbWeight=0.01, gcrefRegs=1B00003 {x0 x1 x20 x21 x23 x24}, byrefRegs=0000 {}, byref
- add x25, x1, #16
- ; byrRegs +[x25]
- add x26, x0, #16
- ; byrRegs +[x26]
- b G_M9806_IG28
+ add x4, x1, #16
+ ; byrRegs +[x4]
+ add x5, x0, #16
+ ; byrRegs +[x5]
+ b G_M9806_IG22
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M9806_IG03: ; bbWeight=1, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs -[x24]
- cbz x20, G_M9806_IG14
- cbz x21, G_M9806_IG14
- orr w2, w3, w19
- tbnz w2, #31, G_M9806_IG14
+G_M9806_IG03: ; bbWeight=2, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref, isz
+ ; gcrRegs -[x23-x24]
ldr w2, [x20, #0x08]
- cmp w2, w19
- blt G_M9806_IG14
- ldr w2, [x21, #0x08]
- cmp w2, w19
- blt G_M9806_IG14
- b G_M9806_IG05
- ;; size=44 bbWeight=1 PerfScore 13.50
-G_M9806_IG04: ; bbWeight=1.98, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
- ; gcrRegs -[x23]
- add x27, x20, #16
- ; byrRegs +[x27]
+ cmp w3, w2
+ bhs G_M9806_IG30
+ add x25, x20, #16
+ ; byrRegs +[x25]
ubfiz x2, x3, #3, #32
- ldr x24, [x27, x2]
+ ldr x24, [x25, x2]
; gcrRegs +[x24]
- add x28, x21, #16
- ; byrRegs +[x28]
- ldr x23, [x28, x2]
+ ldr w6, [x21, #0x08]
+ cmp w3, w6
+ bhs G_M9806_IG30
+ add x26, x21, #16
+ ; byrRegs +[x26]
+ ldr x23, [x26, x2]
; gcrRegs +[x23]
mov w22, wzr
- b G_M9806_IG27
- ;; size=28 bbWeight=1.98 PerfScore 18.81
-G_M9806_IG05: ; bbWeight=7.92, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
+ b G_M9806_IG21
+ ;; size=52 bbWeight=2 PerfScore 37.00
+G_M9806_IG04: ; bbWeight=8, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref, isz
; gcrRegs -[x24]
- ; byrRegs -[x27-x28]
+ ; byrRegs -[x25-x26]
mov w22, wzr
- cbz x1, G_M9806_IG09
- ;; size=8 bbWeight=7.92 PerfScore 11.88
-G_M9806_IG06: ; bbWeight=3.96, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
- cbz x23, G_M9806_IG09
+ cbz x1, G_M9806_IG08
+ ;; size=8 bbWeight=8 PerfScore 12.00
+G_M9806_IG05: ; bbWeight=4, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref, isz
+ cbz x23, G_M9806_IG08
ldr w2, [x1, #0x08]
cmp w2, #101
- blt G_M9806_IG09
+ blt G_M9806_IG08
ldr w2, [x23, #0x08]
cmp w2, #101
- blt G_M9806_IG09
+ blt G_M9806_IG08
add x2, x23, #16
; byrRegs +[x2]
- ;; size=32 bbWeight=3.96 PerfScore 41.58
-G_M9806_IG07: ; bbWeight=15.68, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
+ ;; size=32 bbWeight=4 PerfScore 42.00
+G_M9806_IG06: ; bbWeight=15.84, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0034 {x2 x4 x5}, byref, isz
; gcrRegs -[x23]
- ubfiz x4, x22, #3, #32
- ldr d16, [x25, x4]
- str d16, [x2, x4]
+ ubfiz x6, x22, #3, #32
+ ldr d16, [x4, x6]
+ str d16, [x2, x6]
add w22, w22, #1
cmp w22, #101
- blt G_M9806_IG07
- ;; size=24 bbWeight=15.68 PerfScore 109.77
-G_M9806_IG08: ; bbWeight=7.92, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
+ blt G_M9806_IG06
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
+G_M9806_IG07: ; bbWeight=8, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref
; byrRegs -[x2]
- b G_M9806_IG11
- ;; size=4 bbWeight=7.92 PerfScore 7.92
-G_M9806_IG09: ; bbWeight=0.04, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref
+ b G_M9806_IG10
+ ;; size=4 bbWeight=8 PerfScore 8.00
+G_M9806_IG08: ; bbWeight=0.04, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref
; gcrRegs +[x23]
ldr wzr, [x1, #0x08]
add x2, x23, #16
; byrRegs +[x2]
;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M9806_IG10: ; bbWeight=0.16, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
- ldr w4, [x1, #0x08]
- cmp w22, w4
- bhs G_M9806_IG36
- ubfiz x4, x22, #3, #32
- ldr d16, [x25, x4]
- ldr w5, [x23, #0x08]
- cmp w22, w5
- bhs G_M9806_IG36
- str d16, [x2, x4]
+G_M9806_IG09: ; bbWeight=0.16, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0034 {x2 x4 x5}, byref, isz
+ ldr w6, [x1, #0x08]
+ cmp w22, w6
+ bhs G_M9806_IG30
+ ubfiz x6, x22, #3, #32
+ ldr d16, [x4, x6]
+ ldr w7, [x23, #0x08]
+ cmp w22, w7
+ bhs G_M9806_IG30
+ str d16, [x2, x6]
add w22, w22, #1
cmp w22, #101
- blt G_M9806_IG10
- ;; size=48 bbWeight=0.16 PerfScore 2.53
-G_M9806_IG11: ; bbWeight=7.92, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs -[x23]
- ; byrRegs -[x2]
- add w3, w3, #1
- cmp w3, w19
- blt G_M9806_IG04
- ;; size=12 bbWeight=7.92 PerfScore 15.84
-G_M9806_IG12: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x1]
- ; byrRegs -[x25-x26]
- b G_M9806_IG17
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M9806_IG13: ; bbWeight=0.02, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs +[x0-x1]
- ; byrRegs +[x25-x26]
- ldr w2, [x20, #0x08]
- cmp w3, w2
- bhs G_M9806_IG36
- add x27, x20, #16
- ; byrRegs +[x27]
- ubfiz x2, x3, #3, #32
- ldr x24, [x27, x2]
- ; gcrRegs +[x24]
- ldr w4, [x21, #0x08]
- cmp w3, w4
- bhs G_M9806_IG36
- add x28, x21, #16
- ; byrRegs +[x28]
- ldr x23, [x28, x2]
- ; gcrRegs +[x23]
- mov w22, wzr
- b G_M9806_IG27
- ;; size=52 bbWeight=0.02 PerfScore 0.37
-G_M9806_IG14: ; bbWeight=0.08, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref
...
-60 (-7.43%) : 50853.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -9,16 +9,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 15, 12.06) ref -> x19 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T08] ( 12, 12.04) ref -> x19 class-hnd single-def <float[][]>
; V01 arg1 [V01,T09] ( 9, 12.04) ref -> x20 class-hnd single-def <int[][]>
; V02 arg2 [V02,T21] ( 3, 3 ) ref -> x23 class-hnd single-def <double[]>
; V03 arg3 [V03,T20] ( 4, 6 ) ref -> x22 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T10] ( 5, 12 ) int -> x21 single-def
+; V04 arg4 [V04,T10] ( 4, 12 ) int -> x21 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T03] ( 17, 37.52) int -> x25
-; V08 loc3 [V08,T16] ( 6, 10 ) ref -> x27 class-hnd <float[]>
-; V09 loc4 [V09,T00] ( 13, 56 ) int -> x24
+; V07 loc2 [V07,T03] ( 12, 38.50) int -> x25
+; V08 loc3 [V08,T16] ( 5, 10 ) ref -> x27 class-hnd <float[]>
+; V09 loc4 [V09,T00] ( 12, 56 ) int -> x24
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T05] ( 16, 22.58) int -> x26
;* V12 loc7 [V12 ] ( 0, 0 ) float -> zero-ref
@@ -40,7 +40,7 @@
; V28 cse2 [V28,T15] ( 10, 10 ) long -> x8 multi-def "CSE - moderate"
; V29 cse3 [V29,T14] ( 4, 11.88) long -> x1 "CSE - aggressive"
; V30 cse4 [V30,T22] ( 4, 0.12) long -> x1 "CSE - conservative"
-; V31 cse5 [V31,T07] ( 9, 17 ) int -> x28 "CSE - aggressive"
+; V31 cse5 [V31,T07] ( 7, 16 ) int -> x28 "CSE - aggressive"
; V32 cse6 [V32,T06] ( 14, 18 ) int -> x5 multi-def "CSE - aggressive"
; TEMP_01 double -> [fp+0x10]
;
@@ -67,58 +67,29 @@ G_M56974_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w26, [fp, #0x9C]
;; size=60 bbWeight=0.01 PerfScore 0.23
G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
- b G_M56974_IG15
+ b G_M56974_IG11
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M56974_IG03: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG03: ; bbWeight=2, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
- cbz x19, G_M56974_IG08
- tbnz w25, #31, G_M56974_IG08
- ldr w0, [x19, #0x08]
- cmp w0, w28
- blt G_M56974_IG08
- b G_M56974_IG05
- ;; size=24 bbWeight=1 PerfScore 7.50
-G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- add x0, x19, #16
- ; byrRegs +[x0]
- ldr x27, [x0, w25, UXTW #3]
- ; gcrRegs +[x27]
- mov w24, wzr
- cmp w21, #0
- bgt G_M56974_IG10
- ;; size=20 bbWeight=1.98 PerfScore 10.89
-G_M56974_IG05: ; bbWeight=7.92, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x27]
- ; byrRegs -[x0]
- add w25, w25, #1
- cmp w28, w25
- bgt G_M56974_IG04
- ;; size=12 bbWeight=7.92 PerfScore 15.84
-G_M56974_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20 x22-x23]
- b G_M56974_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19-x20 x22-x23]
ldr w0, [x19, #0x08]
cmp w25, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x19, #16
; byrRegs +[x0]
ldr x27, [x0, w25, UXTW #3]
; gcrRegs +[x27]
mov w24, wzr
cmp w21, #0
- bgt G_M56974_IG10
- ;; size=32 bbWeight=0.02 PerfScore 0.20
-G_M56974_IG08: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+ bgt G_M56974_IG06
+ ;; size=32 bbWeight=2 PerfScore 20.00
+G_M56974_IG04: ; bbWeight=8, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
; byrRegs -[x0]
add w25, w25, #1
cmp w28, w25
- bgt G_M56974_IG07
- ;; size=12 bbWeight=0.08 PerfScore 0.16
-G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ bgt G_M56974_IG03
+ ;; size=12 bbWeight=8 PerfScore 16.00
+G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20 x22-x23]
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
@@ -130,55 +101,55 @@ G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, sp, #112
ret lr
;; size=36 bbWeight=1 PerfScore 9.50
-G_M56974_IG10: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20 x22-x23 x27]
ldr w0, [x20, #0x08]
cmp w25, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x20, #16
; byrRegs +[x0]
ldr x0, [x0, w25, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- tbnz w24, #31, G_M56974_IG12
+ tbnz w24, #31, G_M56974_IG08
;; size=24 bbWeight=2 PerfScore 18.00
-G_M56974_IG11: ; bbWeight=16, gcrefRegs=8D80001 {x0 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG07: ; bbWeight=16, gcrefRegs=8D80001 {x0 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w24
- bgt G_M56974_IG14
+ bgt G_M56974_IG10
;; size=12 bbWeight=16 PerfScore 72.00
-G_M56974_IG12: ; bbWeight=8, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG08: ; bbWeight=8, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w21
- blt G_M56974_IG10
+ blt G_M56974_IG06
;; size=12 bbWeight=8 PerfScore 16.00
-G_M56974_IG13: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
+G_M56974_IG09: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x27]
- b G_M56974_IG03
+ b G_M56974_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M56974_IG14: ; bbWeight=0.50, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
+G_M56974_IG10: ; bbWeight=0.50, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
; gcrRegs +[x27]
add w26, w25, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M56974_IG15: ; bbWeight=1, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=1, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w28, [x23, #0x08]
cmp w28, w26
- ble G_M56974_IG12
- cbz x20, G_M56974_IG21
- cbz x19, G_M56974_IG21
- tbnz w26, #31, G_M56974_IG21
+ ble G_M56974_IG08
+ cbz x20, G_M56974_IG17
+ cbz x19, G_M56974_IG17
+ tbnz w26, #31, G_M56974_IG17
ldr w0, [x20, #0x08]
cmp w0, w28
- blt G_M56974_IG21
+ blt G_M56974_IG17
ldr w0, [x19, #0x08]
cmp w0, w28
- blt G_M56974_IG21
+ blt G_M56974_IG17
;; size=48 bbWeight=1 PerfScore 16.50
-G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x27, #0x08]
cmp w24, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x27, #16
; byrRegs +[x0]
ldr s16, [x0, w24, UXTW #2]
@@ -208,15 +179,15 @@ G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27},
; gcrRegs +[x4]
add w5, w24, #1
sxtw w6, w5
- tbnz w6, #31, G_M56974_IG19
+ tbnz w6, #31, G_M56974_IG15
;; size=100 bbWeight=3.96 PerfScore 134.64
-G_M56974_IG17: ; bbWeight=15.84, gcrefRegs=8D80018 {x3 x4 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=15.84, gcrefRegs=8D80018 {x3 x4 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr w0, [x4, #0x08]
cmp w0, w6
- ble G_M56974_IG19
+ ble G_M56974_IG15
;; size=12 bbWeight=15.84 PerfScore 71.28
-G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG14: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x4]
add x0, x19, #16
; byrRegs +[x0]
@@ -225,16 +196,16 @@ G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
ldr w0, [x7, #0x08]
; byrRegs -[x0]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x7, #16
; byrRegs +[x0]
ubfiz x8, x5, #2, #32
ldr s16, [x0, x8]
fcvt d16, s16
fcmp d16, d8
- ble G_M56974_IG20
+ ble G_M56974_IG16
;; size=44 bbWeight=1.98 PerfScore 34.65
-G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x7]
; byrRegs -[x0]
add x8, x19, #16
@@ -244,7 +215,7 @@ G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
; byrRegs -[x8]
ldr w0, [x8, #0x08]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x8, #16
; byrRegs +[x0]
ubfiz x8, x5, #2, #32
@@ -254,23 +225,23 @@ G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
ldr w0, [x3, #0x08]
; byrRegs -[x0]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x3, #16
; byrRegs +[x0]
str w25, [x0, x8]
;; size=56 bbWeight=1.98 PerfScore 38.61
-G_M56974_IG20: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
; byrRegs -[x0]
add w26, w26, #1
cmp w28, w26
- bgt G_M56974_IG16
- b G_M56974_IG12
+ bgt G_M56974_IG12
+ b G_M56974_IG08
;; size=16 bbWeight=3.96 PerfScore 11.88
-G_M56974_IG21: ; bbWeight=0.04, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG17: ; bbWeight=0.04, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x27, #0x08]
cmp w24, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
...
coreclr_tests.run.linux.arm64.checked.mch
-172 (-32.33%) : 519607.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
@@ -10,180 +10,114 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 9, 4.04) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
-; V01 loc0 [V01,T07] ( 10, 2.59) int -> x23
-; V02 loc1 [V02,T02] ( 14,123.59) ref -> x22 class-hnd <System.Collections.Generic.List`1[NamedSet]>
-; V03 loc2 [V03,T08] ( 4, 1.57) ubyte -> x20
-; V04 loc3 [V04,T03] ( 18, 75.20) int -> x24
-; V05 loc4 [V05,T01] ( 10,130.32) int -> x21
+; V00 arg0 [V00,T06] ( 5, 3.54) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
+; V01 loc0 [V01,T07] ( 5, 2.61) int -> x23
+; V02 loc1 [V02,T02] ( 8,123.59) ref -> x22 class-hnd <System.Collections.Generic.List`1[NamedSet]>
+; V03 loc2 [V03,T09] ( 2, 1.57) ubyte -> x21
+; V04 loc3 [V04,T03] ( 9, 75.20) int -> x20
+; V05 loc4 [V05,T01] ( 8,130.32) int -> x21
; V06 loc5 [V06,T00] ( 6,380.48) int -> x20
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 6, 63.57) ref -> x26 class-hnd "Inlining Arg" <<unknown class>>
-; V09 tmp2 [V09,T05] ( 6, 63.57) ref -> x25 "arr expr"
+; V08 tmp1 [V08,T04] ( 3, 63.57) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
+; V09 tmp2 [V09,T05] ( 3, 63.57) ref -> x0 "arr expr"
+; V10 cse0 [V10,T08] ( 3, 1.57) int -> x0 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
- stp x25, x26, [sp, #0x40]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- ldr x19, [fp, #0x88]
+ ldr x19, [fp, #0x78]
; gcrRegs +[x19]
- ldr w23, [fp, #0x84]
- ldr x22, [fp, #0x78]
+ ldr w23, [fp, #0x74]
+ ldr x22, [fp, #0x68]
; gcrRegs +[x22]
- ldp w20, w21, [fp, #0x68]
- ;; size=40 bbWeight=1 PerfScore 13.50
+ ldp w20, w21, [fp, #0x58]
+ ;; size=36 bbWeight=1 PerfScore 12.50
G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG17
+ b G_M3612_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
+ cmp w23, w0
+ bhs G_M3612_IG15
add x0, x19, #16
; byrRegs +[x0]
ldr x22, [x0, w23, UXTW #3]
; gcrRegs +[x22]
- ;; size=8 bbWeight=0.52 PerfScore 1.81
+ ;; size=16 bbWeight=0.52 PerfScore 2.61
G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov w20, wzr
+ mov w21, wzr
ldr w0, [x22, #0x10]
- sub w24, w0, #2
- tbnz w24, #31, G_M3612_IG06
- ;; size=16 bbWeight=0.52 PerfScore 2.58
-G_M3612_IG05: ; bbWeight=10.49, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ sub w20, w0, #2
+ tbnz w20, #31, G_M3612_IG06
+ ;; size=16 bbWeight=0.52 PerfScore 2.61
+G_M3612_IG05: ; bbWeight=10.59, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
- cmp w24, w0
- bhs G_M3612_IG24
- ldr x25, [x22, #0x08]
- ; gcrRegs +[x25]
- ldr w0, [x25, #0x08]
- cmp w24, w0
- bhs G_M3612_IG21
- add x0, x25, #16
+ cmp w20, w0
+ bhs G_M3612_IG18
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
+ ldr w1, [x0, #0x08]
+ cmp w20, w1
+ bhs G_M3612_IG15
+ add x0, x0, #16
+ ; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x0, [x0, w24, UXTW #3]
+ ldr x0, [x0, w20, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ldr x26, [x0, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x28]
+ ldr x0, [x0, #0x08]
+ ldr w1, [x0, #0x28]
+ ldr w0, [x0, #0x30]
; gcrRegs -[x0]
- ldr w1, [x26, #0x30]
- sub w0, w0, w1
+ sub w0, w1, w0
cbz w0, G_M3612_IG04
mov x0, x22
; gcrRegs +[x0]
- mov w1, w24
+ mov w1, w20
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0 x25-x26]
+ ; gcrRegs -[x0]
; gcr arg pop 0
- sub w24, w24, #1
- tbz w24, #31, G_M3612_IG05
- ;; size=92 bbWeight=10.49 PerfScore 356.60
-G_M3612_IG06: ; bbWeight=1.03, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbnz w20, G_M3612_IG04
- ;; size=4 bbWeight=1.03 PerfScore 1.03
+ sub w20, w20, #1
+ tbz w20, #31, G_M3612_IG05
+ ;; size=92 bbWeight=10.59 PerfScore 360.21
+G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w21, G_M3612_IG04
+ ;; size=4 bbWeight=1.04 PerfScore 1.04
G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
sub w21, w0, #2
- tbz w21, #31, G_M3612_IG16
- ;; size=12 bbWeight=0.52 PerfScore 2.33
+ tbz w21, #31, G_M3612_IG10
+ ;; size=12 bbWeight=0.52 PerfScore 2.35
G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
add w23, w23, #1
ldr w0, [x19, #0x08]
cmp w0, w23
- ble G_M3612_IG22
+ ble G_M3612_IG16
b G_M3612_IG03
- ;; size=20 bbWeight=0.52 PerfScore 3.10
-G_M3612_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M3612_IG15
- tbnz w23, #31, G_M3612_IG15
+ ;; size=20 bbWeight=0.52 PerfScore 3.13
+G_M3612_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr wzr, [x19, #0x08]
b G_M3612_IG08
- ;; size=16 bbWeight=0.50 PerfScore 2.97
-G_M3612_IG10: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x19, #0x08]
- cmp w23, w0
- bhs G_M3612_IG21
- add x0, x19, #16
- ; byrRegs +[x0]
- ldr x22, [x0, w23, UXTW #3]
- ; gcrRegs +[x22]
- ;; size=20 bbWeight=0.01 PerfScore 0.04
-G_M3612_IG11: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x0]
- mov w20, wzr
- ldr w0, [x22, #0x10]
- sub w24, w0, #2
- tbnz w24, #31, G_M3612_IG13
- ;; size=16 bbWeight=0.01 PerfScore 0.03
-G_M3612_IG12: ; bbWeight=0.11, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x22, #0x10]
- cmp w24, w0
- bhs G_M3612_IG24
- ldr x25, [x22, #0x08]
- ; gcrRegs +[x25]
- ldr w0, [x25, #0x08]
- cmp w24, w0
- bhs G_M3612_IG21
- add x0, x25, #16
- ; byrRegs +[x0]
- ldr x0, [x0, w24, UXTW #3]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x26, [x0, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x28]
- ; gcrRegs -[x0]
- ldr w1, [x26, #0x30]
- sub w0, w0, w1
- cbz w0, G_M3612_IG11
- mov x0, x22
- ; gcrRegs +[x0]
- mov w1, w24
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #0xD1FFAB1E LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x25-x26]
- ; gcr arg pop 0
- sub w24, w24, #1
- tbz w24, #31, G_M3612_IG12
- ;; size=92 bbWeight=0.11 PerfScore 3.60
-G_M3612_IG13: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbnz w20, G_M3612_IG11
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M3612_IG14: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x22, #0x10]
- sub w21, w0, #2
- tbz w21, #31, G_M3612_IG16
- ;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M3612_IG15: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22]
- add w23, w23, #1
- ldr w0, [x19, #0x08]
- cmp w0, w23
- ble G_M3612_IG22
- b G_M3612_IG10
- ;; size=20 bbWeight=0.01 PerfScore 0.03
-G_M3612_IG16: ; bbWeight=9.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.50 PerfScore 1.98
+G_M3612_IG10: ; bbWeight=9.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x22]
sub w20, w21, #1
;; size=4 bbWeight=9.76 PerfScore 4.88
-G_M3612_IG17: ; bbWeight=9.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M3612_IG19
+G_M3612_IG11: ; bbWeight=9.76, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w20, #31, G_M3612_IG13
;; size=4 bbWeight=9.76 PerfScore 9.76
-G_M3612_IG18: ; bbWeight=90.24, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG12: ; bbWeight=90.24, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
mov w1, w20
@@ -195,33 +129,32 @@ G_M3612_IG18: ; bbWeight=90.24, gcrefRegs=480000 {x19 x22}, byrefRegs=000
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M3612_IG23
+ cbnz w0, G_M3612_IG17
sub w20, w20, #1
- tbz w20, #31, G_M3612_IG18
...
+64 (+1.69%) : 512064.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -14,9 +14,9 @@
; V02 arg2 [V02,T33] ( 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,T03] ( 62, 98 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T09] ( 31, 37 ) ushort -> [fp+0xEC]
-; V07 loc3 [V07,T51] ( 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,T51] ( 15, 8 ) int -> [fp+0xE8]
; V08 loc4 [V08,T34] ( 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,T29] ( 7, 16 ) int -> [fp+0xE0]
@@ -283,8 +283,8 @@
; V271 cse2 [V271,T37] ( 3, 12 ) int -> x5 "CSE - moderate"
; V272 cse3 [V272,T78] ( 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,T38] ( 3, 12 ) int -> x0 "CSE - moderate"
; V277 rat0 [V277,T17] ( 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_IG109
+ bls G_M36935_IG111
;; 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_IG94
+ cbnz x24, G_M36935_IG96
;; size=36 bbWeight=4 PerfScore 40.00
G_M36935_IG22: ; bbWeight=4, gcVars=00000000000000000802000000000000 {V13 V184}, gcrefRegs=1D900008 {x3 x20 x23 x24 x26 x27 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
- cbnz x27, G_M36935_IG102
+ cbnz x27, G_M36935_IG104
ldr w27, [fp, #0xE4] // [V08 loc4]
; gcrRegs -[x27]
cbnz w27, G_M36935_IG23
ldr w4, [fp, #0xE8] // [V07 loc3]
- cbnz w4, G_M36935_IG97
+ cbnz w4, G_M36935_IG99
;; 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_IG97
+ cbz x2, G_M36935_IG99
add x0, x19, #16
; byrRegs +[x0]
ldr w1, [x19, #0x08]
@@ -1006,12 +1006,12 @@ G_M36935_IG59: ; 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_IG97
+ cbz w0, G_M36935_IG99
ldr w0, [x19, #0x08]
ldr w1, [fp, #0xD0] // [V19 loc15]
add w0, w0, w1
str w0, [x19, #0x08]
- cbnz w27, G_M36935_IG96
+ cbnz w27, G_M36935_IG98
b G_M36935_IG04
;; size=36 bbWeight=4 PerfScore 50.00
G_M36935_IG60: ; bbWeight=0.00, gcVars=00000000000001000802000000000000 {V13 V184 V190}, gcrefRegs=15900001 {x0 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref
@@ -1108,7 +1108,7 @@ G_M36935_IG63: ; bbWeight=1, gcVars=00000000000000000000000010000000 {V19
ldr w28, [fp, #0x80] // [V193 tmp172]
sub w1, w1, w28
cmp w0, w1
- bgt G_M36935_IG110
+ bgt G_M36935_IG112
;; size=24 bbWeight=1 PerfScore 10.00
G_M36935_IG64: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
add x0, x19, #16
@@ -1159,7 +1159,7 @@ G_M36935_IG67: ; bbWeight=1, gcVars=00000000000000000000000000000000 {},
ldr w0, [x19, #0x08]
add w0, w0, w28
str w0, [x19, #0x08]
- b G_M36935_IG109
+ b G_M36935_IG111
;; size=16 bbWeight=1 PerfScore 5.50
G_M36935_IG68: ; bbWeight=0.01, gcVars=00000000000000000802000000000000 {V13 V184}, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280002 {x1 x19 x21}, gcvars, byref
; gcrRegs +[x20 x23-x24 x26 x28]
@@ -1435,10 +1435,30 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRe
bhs G_M36935_IG72
add w25, w25, #1
cmp w27, w25
- bhi G_M36935_IG91
- b G_M36935_IG73
- ;; size=28 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG73
+ tbnz w25, #31, G_M36935_IG93
+ b G_M36935_IG91
+ ;; size=32 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
+ add w25, w25, #1
+ cmp w27, w25
+ bls G_M36935_IG73
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG91: ; 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_IG95
+ movz w0, #0xD1FFAB1E
+ movk w0, #15 LSL #16
+ cmp w4, w0
+ blt G_M36935_IG90
+ b G_M36935_IG95
+ ;; size=36 bbWeight=0 PerfScore 0.00
+G_M36935_IG92: ; 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
@@ -1448,37 +1468,37 @@ G_M36935_IG90: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRe
ldr w4, [fp, #0xE8] // [V07 loc3]
bls G_M36935_IG73
;; size=32 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 w25, w27
bhs G_M36935_IG78
ldrh w2, [x28, w25, UXTW #2]
sub w0, w2, #48
cmp w0, #9
- bhi G_M36935_IG93
+ bhi G_M36935_IG95
movz w0, #0xD1FFAB1E
movk w0, #15 LSL #16
cmp w4, w0
- blt G_M36935_IG90
- b G_M36935_IG93
+ blt G_M36935_IG92
+ b G_M36935_IG95
;; size=44 bbWeight=0 PerfScore 0.00
-G_M36935_IG92: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+G_M36935_IG94: ; 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_IG73
ldrh w2, [x28, w25, UXTW #2]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG93: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
+G_M36935_IG95: ; bbWeight=0, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
cmp w2, #32
- beq G_M36935_IG92
+ beq G_M36935_IG94
str w4, [fp, #0xE8] // [V07 loc3]
b G_M36935_IG51
;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG94: ; bbWeight=0, gcVars=00000000000000000802000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG96: ; bbWeight=0, gcVars=00000000000000000802000000000000 {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 -{V59} +{V13 V49}
ldr w27, [fp, #0x88] // [V185 tmp164]
- cbz w27, G_M36935_IG95
+ cbz w27, G_M36935_IG97
ldr x0, [fp, #0x30] // [V184 tmp163]
; byrRegs +[x0]
mov w1, w27
@@ -1489,7 +1509,7 @@ G_M36935_IG94: ; bbWeight=0, gcVars=00000000000000000802000000000000 {V13
mov x28, x0
; gcrRegs +[x28]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
+G_M36935_IG97: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
; gcrRegs -[x0]
mov x0, x24
; gcrRegs +[x0]
@@ -1514,7 +1534,7 @@ G_M36935_IG95: ; 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_IG96: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG98: ; 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 V49 V184}
ldr w2, [fp, #0xD0] // [V19 loc15]
@@ -1535,7 +1555,7 @@ G_M36935_IG96: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; gcr arg pop 0
b G_M36935_IG04
;; size=56 bbWeight=0 PerfScore 0.00
-G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000000802000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG99: ; bbWeight=0, gcVars=00000000000000000802000000000000 {V13 V184}, gcrefRegs=15900008 {x3 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
; gcrRegs +[x3 x28]
; GC ptr vars +{V13 V49 V59 V184}
mov x1, x3
@@ -1550,11 +1570,11 @@ G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000000802000000000000 {V13
; gcrRegs +[x2]
str x2, [fp, #0x68] // [V20 loc16]
; GC ptr vars +{V20}
- cbz x2, G_M36935_IG99
+ cbz x2, G_M36935_IG101
ldr x2, [fp, #0x68] // [V20 loc16]
ldr w3, [fp, #0x88] // [V185 tmp164]
- cbz w3, G_M36935_IG98
- cbnz x28, G_M36935_IG98
+ cbz w3, G_M36935_IG100
+ cbnz x28, G_M36935_IG100
ldr x0, [fp, #0x30] // [V184 tmp163]
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -1569,7 +1589,7 @@ G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000000802000000000000 {V13
ldr x2, [fp, #0x68] // [V20 loc16]
; gcrRegs +[x2]
;; size=68 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcrefRegs=15900004 {x2 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
+G_M36935_IG100: ; bbWeight=0, gcrefRegs=15900004 {x2 x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
; gcrRegs -[x0]
mov x0, x2
; gcrRegs +[x0]
@@ -1586,18 +1606,18 @@ G_M36935_IG98: ; bbWeight=0, gcrefRegs=15900004 {x2 x20 x23 x24 x26 x28},
; gcr arg pop 0
mov x28, x0
; gcrRegs +[x28]
- b G_M36935_IG101
+ b G_M36935_IG103
;; size=40 bbWeight=0 PerfScore 0.00
-G_M36935_IG99: ; bbWeight=0, gcVars=00000000000000000002000000000000 {V13}, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
+G_M36935_IG101: ; bbWeight=0, gcVars=00000000000000000002000000000000 {V13}, gcrefRegs=5900000 {x20 x23 x24 x26}, byrefRegs=280000 {x19 x21}, gcvars, byref, isz
; gcrRegs -[x0 x28]
; GC ptr vars +{V13 V49}
ldr x28, [fp, #0x78] // [V13 loc9]
; gcrRegs +[x28]
- cbnz x28, G_M36935_IG100
+ cbnz x28, G_M36935_IG102
mov x28, xzr
- b G_M36935_IG101
+ b G_M36935_IG103
;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
+G_M36935_IG102: ; bbWeight=0, gcrefRegs=15900000 {x20 x23 x24 x26 x28}, byrefRegs=280000 {x19 x21}, byref
mov x0, x28
; gcrRegs +[x0]
ldr x1, [x28]
...
+64 (+1.71%) : 478016.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.85) 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.68) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T03] ( 61, 62.58) int -> x25 ld-addr-op
-; V06 loc2 [V06,T06] ( 32, 31.65) ushort -> registers
-; V07 loc3 [V07,T31] ( 12, 5.61) int -> [fp+0x8C]
+; V05 loc1 [V05,T03] ( 66, 62.45) int -> x25 ld-addr-op
+; V06 loc2 [V06,T06] ( 35, 31.65) ushort -> registers
+; V07 loc3 [V07,T31] ( 15, 5.61) int -> [fp+0x8C]
; V08 loc4 [V08,T37] ( 5, 4.36) 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.74) int -> x28
; V11 loc7 [V11,T21] ( 14, 7.26) ref -> registers class-hnd <System.String>
-; V12 loc8 [V12,T62] ( 7, 2.11) ref -> x27 class-hnd <System.String>
+; V12 loc8 [V12,T62] ( 7, 2.11) ref -> x26 class-hnd <System.String>
; V13 loc9 [V13,T26] ( 10, 6.59) 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, 26.22) 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,T64] ( 3, 2.00) 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,T73] ( 3, 1.44) 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,T52] ( 3, 2.86) 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,T53] ( 3, 2.86) int -> x26 "Inlining Arg"
-; V60 tmp39 [V60,T65] ( 3, 1.91) byref -> x27 single-def "Inlining Arg"
+; V60 tmp39 [V60,T65] ( 3, 1.91) 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.85) long -> x3 "CSE - conservative"
; V231 cse6 [V231,T90] ( 3, 0.85) int -> x28 "CSE - conservative"
; V232 cse7 [V232,T02] ( 35,149.43) ref -> registers multi-def "CSE - aggressive"
-; V233 cse8 [V233,T08] ( 18, 23.07) int -> x26 "CSE - aggressive"
-; V234 cse9 [V234,T09] ( 15, 21.31) byref -> x27 "CSE - aggressive"
-; V235 cse10 [V235,T12] ( 16, 10.69) int -> x27 "CSE - moderate"
+; V233 cse8 [V233,T08] ( 19, 22.65) int -> x26 "CSE - aggressive"
+; V234 cse9 [V234,T09] ( 16, 21.31) byref -> x27 "CSE - aggressive"
+; V235 cse10 [V235,T12] ( 16, 10.69) int -> x26 "CSE - moderate"
; V236 cse11 [V236,T34] ( 3, 5.05) int -> x0 "CSE - moderate"
; V237 rat0 [V237,T20] ( 6, 7.79) 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_IG109
+ cbz x20, G_M36935_IG113
cbz x21, G_M36935_IG16
;; size=8 bbWeight=1 PerfScore 2.00
G_M36935_IG03: ; bbWeight=0.72, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
@@ -278,7 +278,7 @@ G_M36935_IG03: ; bbWeight=0.72, gcrefRegs=300000 {x20 x21}, byrefRegs=480
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M36935_IG110
+ bne G_M36935_IG114
mov x1, xzr
; gcrRegs +[x1]
;; size=28 bbWeight=0.72 PerfScore 4.67
@@ -301,7 +301,7 @@ G_M36935_IG05: ; bbWeight=2.68, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M36935_IG91
+ bls G_M36935_IG95
;; size=12 bbWeight=2.68 PerfScore 12.08
G_M36935_IG06: ; bbWeight=2.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz
add x27, x20, #12
@@ -349,19 +349,19 @@ G_M36935_IG08: ; bbWeight=2.16, 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.16 PerfScore 28.09
G_M36935_IG09: ; bbWeight=1.68, 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_IG106
+ bhi G_M36935_IG110
;; size=12 bbWeight=1.68 PerfScore 5.90
G_M36935_IG10: ; bbWeight=13.48, 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_IG111
+ bgt G_M36935_IG115
;; size=20 bbWeight=13.48 PerfScore 107.81
G_M36935_IG11: ; bbWeight=1.68, 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.68, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
ldr w1, [x19, #0x08]
ldr w3, [x0, #0x08]
cmp w1, w3
- bhi G_M36935_IG106
+ bhi G_M36935_IG110
ldr x0, [x0]
ubfiz x4, x1, #1, #32
add x4, x0, x4
@@ -402,7 +402,7 @@ G_M36935_IG13: ; bbWeight=1.68, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
ldr w3, [fp, #0x84] // [V15 loc11]
ldr w0, [fp, #0x70] // [V78 tmp57]
cmp w3, w0
- bhi G_M36935_IG107
+ bhi G_M36935_IG111
;; size=16 bbWeight=1.68 PerfScore 9.27
G_M36935_IG14: ; bbWeight=1.68, 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.28, gcVars=00000000000000000000000000000000 {
; gcrRegs +[x1]
b G_M36935_IG04
;; size=8 bbWeight=0.28 PerfScore 0.42
-G_M36935_IG17: ; bbWeight=0.28, 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.28, 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_IG74
- b G_M36935_IG68
+ ble G_M36935_IG78
+ b G_M36935_IG72
;; size=28 bbWeight=0.28 PerfScore 2.68
G_M36935_IG18: ; bbWeight=0.84, 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,23 +461,23 @@ G_M36935_IG19: ; bbWeight=1.68, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
str w0, [x19, #0x08]
add w25, w25, w3
cmp w25, w26
- bhs G_M36935_IG108
+ bhs G_M36935_IG112
ldrh w0, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG102
+ bls G_M36935_IG106
ldrh w28, [x27, w25, UXTW #2]
cmp w0, w28
- beq G_M36935_IG112
+ beq G_M36935_IG116
cmp w0, #123
- bne G_M36935_IG100
+ bne G_M36935_IG104
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_IG108
+ bhs G_M36935_IG112
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M36935_IG21
@@ -524,23 +524,23 @@ G_M36935_IG22: ; bbWeight=6.74, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
G_M36935_IG23: ; bbWeight=1.68, 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_IG105
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG102
+ bls G_M36935_IG106
ldrh w0, [x27, w25, UXTW #2]
sxtw w2, w0
cmp w2, #125
- beq G_M36935_IG39
+ beq G_M36935_IG43
;; size=40 bbWeight=1.68 PerfScore 15.16
G_M36935_IG24: ; bbWeight=0.77, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
sub w0, w2, #48
cmp w0, #9
- bls G_M36935_IG116
+ bls G_M36935_IG120
;; size=12 bbWeight=0.77 PerfScore 1.53
G_M36935_IG25: ; bbWeight=0.77, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- beq G_M36935_IG117
+ beq G_M36935_IG121
;; size=8 bbWeight=0.77 PerfScore 1.15
G_M36935_IG26: ; bbWeight=0.77, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #44
@@ -548,76 +548,101 @@ G_M36935_IG26: ; bbWeight=0.77, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
;; size=8 bbWeight=0.77 PerfScore 1.15
G_M36935_IG27: ; bbWeight=0.77, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #125
- beq G_M36935_IG39
+ beq G_M36935_IG43
;; size=8 bbWeight=0.77 PerfScore 1.15
G_M36935_IG28: ; bbWeight=0.62, 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_IG103
+ bne G_M36935_IG107
sxtw w3, w25
;; size=12 bbWeight=0.62 PerfScore 1.25
G_M36935_IG29: ; bbWeight=5.36, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG102
+ bls G_M36935_IG106
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
- beq G_M36935_IG36
+ beq G_M36935_IG40
;; size=24 bbWeight=5.36 PerfScore 34.86
G_M36935_IG30: ; bbWeight=4.74, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #123
- beq G_M36935_IG103
+ beq G_M36935_IG107
b G_M36935_IG29
;; size=12 bbWeight=4.74 PerfScore 11.85
G_M36935_IG31: ; bbWeight=0.28, gcVars=00000000000000000008000000000000 {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_IG102
+ bls G_M36935_IG106
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG31
cmp w2, #45
- beq G_M36935_IG118
+ beq G_M36935_IG122
;; size=32 bbWeight=0.28 PerfScore 2.26
G_M36935_IG32: ; bbWeight=0.28, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
sub w2, w2, #48
cmp w2, #10
- bhs G_M36935_IG101
+ bhs G_M36935_IG105
add w25, w25, #1
...
+112 (+2.96%) : 515114.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,T31] ( 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+0xBC]
-; V07 loc3 [V07,T02] ( 12,160.50) int -> [fp+0xB8]
+; V05 loc1 [V05,T05] ( 68, 70.50) int -> x27 ld-addr-op
+; V06 loc2 [V06,T06] ( 34, 63.50) ushort -> [fp+0xBC]
+; V07 loc3 [V07,T02] ( 15,160.50) 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]
@@ -193,10 +193,10 @@
; V182 cse10 [V182,T80] ( 3, 0.01) long -> x0 "CSE - conservative"
; V183 cse11 [V183,T81] ( 3, 0.01) long -> x0 "CSE - conservative"
; V184 cse12 [V184,T00] ( 28,204 ) long -> [fp+0x80] multi-def "CSE - aggressive"
-; V185 cse13 [V185,T09] ( 32, 48 ) long -> x25 multi-def "CSE - aggressive"
-; V186 cse14 [V186,T14] ( 18, 35.50) int -> x28 "CSE - aggressive"
+; V185 cse13 [V185,T09] ( 33, 48 ) long -> x25 multi-def "CSE - aggressive"
+; V186 cse14 [V186,T14] ( 19, 35.01) int -> x28 "CSE - aggressive"
; V187 cse15 [V187,T11] ( 17, 46 ) ref -> registers multi-def "CSE - aggressive"
-; V188 cse16 [V188,T24] ( 15, 14.50) byref -> [fp+0x18] spill-single-def "CSE - moderate"
+; V188 cse16 [V188,T24] ( 16, 14.50) byref -> [fp+0x18] spill-single-def "CSE - moderate"
; V189 cse17 [V189,T26] ( 3, 12 ) int -> x0 "CSE - moderate"
; V190 cse18 [V190,T75] ( 6, 0.01) long -> x3 multi-def "CSE - conservative"
; V191 cse19 [V191,T82] ( 3, 0.01) long -> x2 "CSE - conservative"
@@ -222,7 +222,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, #0xAC] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG103
+ tbnz w3, #31, G_M4730_IG109
ldr w4, [fp, #0x8C] // [V118 tmp96]
cmp w3, w4
- bhi G_M4730_IG119
+ bhi G_M4730_IG125
mov x0, x20
; gcrRegs +[x0]
ldr x1, [fp, #0x30] // [V117 tmp95]
@@ -364,13 +364,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_IG105
+ bhs G_M4730_IG111
ldr x1, [fp, #0x18] // [V188 cse16]
; 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, #0xBC] // [V06 loc2]
cmp w2, w3
@@ -420,14 +420,14 @@ G_M4730_IG13: ; bbWeight=4, gcVars=00000000000000000000000001000000 {V188
; byrRegs +[x1]
; GC ptr vars +{V188}
cmp w2, #123
- bne G_M4730_IG107
+ bne G_M4730_IG113
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_IG105
+ bhs G_M4730_IG111
ldrh w0, [x1, w0, UXTW #2]
cmp w0, #123
beq G_M4730_IG15
@@ -475,12 +475,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_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, #0x18] // [V188 cse16]
; byrRegs +[x1]
ldrh w3, [x1, w27, UXTW #2]
@@ -493,7 +493,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_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
@@ -507,7 +507,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_IG111
+ bls G_M4730_IG117
ldr x3, [fp, #0x18] // [V188 cse16]
; byrRegs +[x3]
ldrh w1, [x3, w27, UXTW #2]
@@ -547,7 +547,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, #0x18] // [V188 cse16]
@@ -564,12 +564,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, #0x18] // [V188 cse16]
@@ -600,7 +600,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_IG111
+ bls G_M4730_IG117
ldr x2, [fp, #0x18] // [V188 cse16]
; byrRegs +[x2]
ldrh w3, [x2, w27, UXTW #2]
@@ -610,108 +610,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, #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_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, #0x18] // [V188 cse16]
; 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_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, #0x18] // [V188 cse16]
- ; 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.10%) : 617814.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.51) 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.51) 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]
@@ -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] ( 50,218.01) long -> x25 multi-def "CSE - aggressive"
-; V185 cse13 [V185,T13] ( 18, 35.50) int -> x28 "CSE - aggressive"
+; V184 cse12 [V184,T00] ( 51,218.01) long -> x25 multi-def "CSE - aggressive"
+; V185 cse13 [V185,T13] ( 19, 35.01) int -> x28 "CSE - aggressive"
; V186 cse14 [V186,T10] ( 17, 46 ) ref -> registers multi-def "CSE - aggressive"
-; V187 cse15 [V187,T23] ( 15, 14.50) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V187 cse15 [V187,T23] ( 16, 14.50) byref -> [fp+0x10] spill-single-def "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_IG107
+ cbz x21, G_M4730_IG113
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=5380000 {x19 x20 x21 x24 x26}, byre
; gcrRegs -[x0]
ldr w28, [x21, #0x08]
cmp w28, w27
- bls G_M4730_IG102
+ bls G_M4730_IG108
;; 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
@@ -342,10 +342,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_IG104
+ tbnz w3, #31, G_M4730_IG110
ldr w4, [fp, #0x7C] // [V118 tmp96]
cmp w3, w4
- bhi G_M4730_IG120
+ bhi G_M4730_IG126
mov x0, x20
; gcrRegs +[x0]
ldr x1, [fp, #0x28] // [V117 tmp95]
@@ -363,13 +363,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_IG106
+ bhs G_M4730_IG112
ldr x1, [fp, #0x10] // [V187 cse15]
; byrRegs +[x1]
ldrh w2, [x1, w27, UXTW #2]
add w27, w27, #1
cmp w28, w27
- bls G_M4730_IG112
+ bls G_M4730_IG118
ldrh w3, [x1, w27, UXTW #2]
str w3, [fp, #0xAC] // [V06 loc2]
cmp w2, w3
@@ -419,14 +419,14 @@ G_M4730_IG13: ; bbWeight=4, gcVars=00000000000000000000000000800000 {V187
; byrRegs +[x1]
; GC ptr vars +{V23 V187}
cmp w2, #123
- bne G_M4730_IG108
+ bne G_M4730_IG114
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_IG106
+ bhs G_M4730_IG112
ldrh w0, [x1, w0, UXTW #2]
cmp w0, #123
beq G_M4730_IG15
@@ -475,12 +475,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_IG109
+ bhs G_M4730_IG115
;; 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_IG112
+ bls G_M4730_IG118
ldr x1, [fp, #0x10] // [V187 cse15]
; byrRegs +[x1]
ldrh w3, [x1, w27, UXTW #2]
@@ -493,7 +493,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
@@ -507,7 +507,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_IG112
+ bls G_M4730_IG118
ldr x3, [fp, #0x10] // [V187 cse15]
; byrRegs +[x3]
ldrh w1, [x3, w27, UXTW #2]
@@ -547,7 +547,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_IG112
+ bls G_M4730_IG118
;; 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] // [V187 cse15]
@@ -564,12 +564,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_IG112
+ bls G_M4730_IG118
;; 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] // [V187 cse15]
@@ -600,7 +600,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_IG112
+ bls G_M4730_IG118
ldr x2, [fp, #0x10] // [V187 cse15]
; byrRegs +[x2]
ldrh w3, [x2, w27, UXTW #2]
@@ -610,108 +610,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_IG110
+ bhs G_M4730_IG116
;; 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_IG112
+ bls G_M4730_IG118
;; 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_IG106
+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_IG118
+ ;; 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] // [V187 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_IG112
- ;; 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] // [V187 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]
...
+116 (+3.27%) : 613661.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
...
libraries.crossgen2.linux.arm64.checked.mch
-28 (-20.59%) : 83559.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint
@@ -9,11 +9,11 @@
; Final local variable assignments
;
; V00 loc0 [V00,T04] ( 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 -> x22 hoist "CSE - aggressive"
-; V05 cse1 [V05,T03] ( 2, 9 ) long -> x21 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> x22 hoist "CSE - aggressive"
+; V05 cse1 [V05,T03] ( 2, 8.92) long -> x21 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,19 +38,17 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
mov w0, w20
mov x11, x21
ldr x1, [x11]
blr x1
- cmp w20, #0xD1FFAB1E
- bhs G_M39919_IG06
str w0, [x22, w20, UXTW #2]
add w20, w20, #1
cmp w20, #255
bls G_M39919_IG03
- ;; size=40 bbWeight=8 PerfScore 76.00
+ ;; size=32 bbWeight=7.92 PerfScore 63.36
G_M39919_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
mov x0, x19
@@ -62,16 +60,8 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M39919_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x19]
- adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
- add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x0, [x0]
- blr x0
- brk_unix #0
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 16, PerfScore 92.00, instruction count 34, allocated bytes for code 136 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 108, prolog size 16, PerfScore 79.36, instruction count 27, allocated bytes for code 108 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ 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.pmi.linux.arm64.checked.mch
-16 (-12.90%) : 113342.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
-16 (-0.38%) : 531771.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,T09] ( 5, 6.80) 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,T43] ( 4, 2.32) ref -> x24 class-hnd single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T00] ( 72, 39.68) int -> x25 ld-addr-op
-; V06 loc2 [V06,T03] ( 34, 15.78) ushort -> [fp+0xDC]
-; V07 loc3 [V07,T20] ( 12, 4.59) int -> [fp+0xD8]
+; V05 loc1 [V05,T00] ( 67, 39.61) int -> x25 ld-addr-op
+; V06 loc2 [V06,T03] ( 33, 15.78) ushort -> [fp+0xDC]
+; V07 loc3 [V07,T20] ( 15, 4.59) int -> [fp+0xD8]
; V08 loc4 [V08,T31] ( 5, 3.28) ubyte -> [fp+0xD4]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T17] ( 7, 5.82) int -> [fp+0xD0]
; V11 loc7 [V11,T14] ( 14, 6.96) ref -> registers class-hnd <System.String>
-; V12 loc8 [V12,T50] ( 9, 1.89) ref -> x28 class-hnd <System.String>
+; V12 loc8 [V12,T50] ( 9, 1.89) ref -> x27 class-hnd <System.String>
; V13 loc9 [V13,T16] ( 12, 6.31) ref -> [fp+0x60] 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,T06] ( 12, 12.44) int -> [fp+0xCC] spill-single-def
@@ -154,10 +154,10 @@
; V142 tmp120 [V142,T86] ( 5, 0.64) int -> [fp+0x84] spill-single-def "Inlining Arg"
;* V143 tmp121 [V143,T94] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V144 tmp122 [V144,T96] ( 3, 0.01) ref -> x0 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V145 tmp123 [V145,T12] ( 8, 7.03) int -> x27 "Inlining Arg"
+; V145 tmp123 [V145,T12] ( 8, 7.03) int -> x28 "Inlining Arg"
; V146 tmp124 [V146,T54] ( 3, 1.77) ref -> x0 class-hnd "Inline stloc first use temp" <ushort[]>
; V147 tmp125 [V147,T45] ( 4, 2.08) int -> [fp+0x80] spill-single-def "Inline stloc first use temp"
-; V148 tmp126 [V148,T36] ( 6, 2.89) byref -> x28 "Inlining Arg"
+; V148 tmp126 [V148,T36] ( 6, 2.89) byref -> x27 "Inlining Arg"
; V149 tmp127 [V149,T82] ( 5, 0.63) byref -> x0 "Inline stloc first use temp"
; V150 tmp128 [V150,T71] ( 2, 1.26) long -> x1 "Inlining Arg"
; V151 tmp129 [V151,T63] ( 3, 1.57) long -> x2 "spilling arg"
@@ -245,8 +245,8 @@
; V233 cse4 [V233,T61] ( 3, 1.59) int -> x5 "CSE - conservative"
; V234 cse5 [V234,T70] ( 3, 1.27) ref -> x1 "CSE - conservative"
; V235 cse6 [V235,T85] ( 3, 0.53) long -> x0 "CSE - conservative"
-; V236 cse7 [V236,T04] ( 20, 15.34) int -> x27 "CSE - aggressive"
-; V237 cse8 [V237,T07] ( 17, 12.32) byref -> x28 "CSE - aggressive"
+; V236 cse7 [V236,T04] ( 19, 14.97) int -> x27 "CSE - aggressive"
+; V237 cse8 [V237,T07] ( 16, 12.32) byref -> x28 "CSE - aggressive"
; V238 rat0 [V238,T13] ( 5, 7 ) ref -> x24 class-hnd "replacement local" <System.ICustomFormatter>
; V239 rat1 [V239,T08] ( 6, 9.13) ref -> x0 class-hnd "replacement local" <System.ISpanFormattable>
; V240 rat2 [V240,T15] ( 6, 6.78) ref -> registers class-hnd "replacement local" <System.IFormattable>
@@ -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_IG141
+ cbz x20, G_M4730_IG138
cbnz x21, G_M4730_IG14
;; size=8 bbWeight=1 PerfScore 2.00
G_M4730_IG03: ; bbWeight=0.61, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, byref
@@ -291,7 +291,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_IG142
+ bne G_M4730_IG139
;; 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]
@@ -305,7 +305,7 @@ G_M4730_IG06: ; bbWeight=1, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
G_M4730_IG07: ; bbWeight=2.39, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=400000 {x22}, byref, isz
ldr w27, [x20, #0x08]
cmp w27, w25
- bls G_M4730_IG92
+ bls G_M4730_IG89
;; size=12 bbWeight=2.39 PerfScore 10.77
G_M4730_IG08: ; bbWeight=1.41, 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.41, 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_IG133
+ tbnz w1, #31, G_M4730_IG130
;; size=116 bbWeight=1.41 PerfScore 37.96
G_M4730_IG09: ; bbWeight=1.39, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz
ldr w2, [fp, #0x74] // [V165 tmp143]
cmp w1, w2
- bhi G_M4730_IG155
+ bhi G_M4730_IG152
cmp w1, #0
cset x2, ge
str w2, [fp, #0x68] // [V230 cse1]
@@ -430,8 +430,8 @@ G_M4730_IG16: ; bbWeight=0.39, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
; gcrRegs +[x1]
b G_M4730_IG04
;; size=8 bbWeight=0.39 PerfScore 0.59
-G_M4730_IG17: ; bbWeight=0.45, gcVars=00000000000000000800400000010000 {V13 V154 V188}, 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.45, gcVars=00000000000000000800400000010000 {V13 V154 V188}, 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 V16 V154 V188}
str w8, [fp, #0x7C] // [V155 tmp133]
@@ -467,11 +467,11 @@ G_M4730_IG17: ; bbWeight=0.45, gcVars=00000000000000000800400000010000 {V
asr x9, x5, #32
ldr w10, [fp, #0x70] // [V189 tmp167]
cmp w9, w10
- bgt G_M4730_IG145
+ bgt G_M4730_IG142
b G_M4730_IG19
;; size=124 bbWeight=0.45 PerfScore 13.47
G_M4730_IG18: ; bbWeight=0.04, gcVars=00000000000000000000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs -[x24 x26 x28]
+ ; gcrRegs -[x24 x26-x27]
; GC ptr vars -{V13 V16 V154 V188}
mov x0, x21
; gcrRegs +[x0]
@@ -488,16 +488,16 @@ G_M4730_IG18: ; bbWeight=0.04, gcVars=00000000000000000000000000000000 {}
; gcrRegs +[x24]
b G_M4730_IG16
;; size=44 bbWeight=0.04 PerfScore 0.35
-G_M4730_IG19: ; bbWeight=0.45, gcVars=00000000000000000800400000010000 {V13 V154 V188}, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x26 x28]
+G_M4730_IG19: ; bbWeight=0.45, gcVars=00000000000000000800400000010000 {V13 V154 V188}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ ; gcrRegs -[x0] +[x26-x27]
; GC ptr vars +{V13 V16 V154 V188}
str w9, [fp, #0xC0] // [V19 loc15]
ldr x2, [fp, #0x18] // [V188 tmp166]
; byrRegs +[x2]
stp x2, x2, [fp, #0x98] // [V105 tmp83], [V104 tmp82]
sbfiz x0, x9, #1, #32
- add x4, x2, x0
- str x4, [fp, #0x88] // [V118 tmp96]
+ add x3, x2, x0
+ str x3, [fp, #0x88] // [V118 tmp96]
ldr w8, [fp, #0xB0] // [V79 tmp57]
str w8, [fp, #0x94] // [V117 tmp95]
mov w0, #1
@@ -511,15 +511,15 @@ G_M4730_IG19: ; bbWeight=0.45, gcVars=00000000000000000800400000010000 {V
; gcr arg pop 0
ldr w1, [fp, #0x94] // [V117 tmp95]
cmp w1, #10
- blo G_M4730_IG56
+ blo G_M4730_IG54
;; size=68 bbWeight=0.45 PerfScore 8.53
-G_M4730_IG20: ; bbWeight=1.80, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, byref, isz
+G_M4730_IG20: ; bbWeight=1.80, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, byref, isz
cmp w1, #100
blo G_M4730_IG31
b G_M4730_IG30
;; size=12 bbWeight=1.80 PerfScore 4.49
G_M4730_IG21: ; bbWeight=0.31, gcVars=00000000000000000000000001000000 {V164}, 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 V154} +{V164}
ldr x5, [fp, #0x20] // [V164 tmp142]
@@ -551,7 +551,7 @@ G_M4730_IG23: ; bbWeight=0.00, gcVars=00000000000000000000000001000000 {V
ldrh w1, [x5]
strh w1, [x0]
cmp w3, #2
- beq G_M4730_IG143
+ beq G_M4730_IG140
b G_M4730_IG22
;; size=24 bbWeight=0.00 PerfScore 0.01
G_M4730_IG24: ; bbWeight=0.80, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref
@@ -575,18 +575,18 @@ G_M4730_IG24: ; bbWeight=0.80, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b
G_M4730_IG25: ; bbWeight=1.39, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz
add w25, w25, w3
cmp w25, w27
- bhs G_M4730_IG140
+ bhs G_M4730_IG137
ldrh w2, [x28, w25, UXTW #2]
add w25, w25, #1
cmp w27, w25
- bls G_M4730_IG151
+ bls G_M4730_IG148
ldrh w4, [x28, w25, UXTW #2]
cmp w2, w4
- beq G_M4730_IG55
+ beq G_M4730_IG53
;; size=40 bbWeight=1.39 PerfScore 16.03
G_M4730_IG26: ; bbWeight=1.29, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref, isz
cmp w2, #123
- bne G_M4730_IG149
+ bne G_M4730_IG146
stp wzr, w4, [fp, #0xD8] // [V07 loc3], [V06 loc2]
str wzr, [fp, #0xD4] // [V08 loc4]
str xzr, [fp, #0x30] // [V154 tmp132]
@@ -594,7 +594,7 @@ G_M4730_IG26: ; bbWeight=1.29, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b
str wzr, [fp, #0x7C] // [V155 tmp133]
sub w0, w25, #1
cmp w0, w27
- bhs G_M4730_IG140
+ bhs G_M4730_IG137
sub w0, w25, #1
ldrh w0, [x28, w0, UXTW #2]
cmp w0, #123
@@ -617,10 +617,10 @@ G_M4730_IG26: ; bbWeight=1.29, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b
ldr w1, [fp, #0xDC] // [V06 loc2]
sub w2, w1, #48
cmp w2, #10
- bhs G_M4730_IG150
+ bhs G_M4730_IG147
add w25, w25, #1
cmp w27, w25
- bls G_M4730_IG151
+ bls G_M4730_IG148
ldrh w1, [x28, w25, UXTW #2]
cmp w1, #125
beq G_M4730_IG29
@@ -640,17 +640,17 @@ G_M4730_IG28: ; bbWeight=0.07, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, b
str w2, [fp, #0xD0] // [V10 loc6]
add w25, w25, #1
cmp w27, w25
- bls G_M4730_IG151
+ bls G_M4730_IG148
ldrh w1, [x28, w25, UXTW #2]
ldr w2, [fp, #0xD0] // [V10 loc6]
b G_M4730_IG27
;; size=40 bbWeight=0.07 PerfScore 0.85
G_M4730_IG29: ; bbWeight=0.65, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, byref
str w2, [fp, #0xD0] // [V10 loc6]
- b G_M4730_IG62
+ b G_M4730_IG59
;; size=8 bbWeight=0.65 PerfScore 1.29
-G_M4730_IG30: ; bbWeight=0.45, gcVars=00000000000000000800000000010000 {V13 V154}, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, gcvars, byref, isz
- ; gcrRegs +[x28]
+G_M4730_IG30: ; bbWeight=0.45, gcVars=00000000000000000800000000010000 {V13 V154}, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ ; gcrRegs +[x27]
; byrRegs -[x28]
; GC ptr vars +{V13 V16}
ldr x2, [fp, #0x88] // [V118 tmp96]
@@ -700,28 +700,28 @@ G_M4730_IG30: ; bbWeight=0.45, gcVars=00000000000000000800000000010000 {V
; byrRegs -[x1]
bhs G_M4730_IG30
;; size=152 bbWeight=0.45 PerfScore 18.86
-G_M4730_IG31: ; bbWeight=1.80, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, byref, isz
+G_M4730_IG31: ; bbWeight=1.80, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, byref, isz
cmp w1, #10
- blo G_M4730_IG56
+ blo G_M4730_IG54
;; size=8 bbWeight=1.80 PerfScore 2.69
-G_M4730_IG32: ; bbWeight=0.45, gcrefRegs=15380000 {x19 x20 x21 x24 x26 x28}, byrefRegs=400000 {x22}, byref
- b G_M4730_IG86
+G_M4730_IG32: ; bbWeight=0.45, gcrefRegs=D380000 {x19 x20 x21 x24 x26 x27}, byrefRegs=400000 {x22}, byref
+ b G_M4730_IG83
;; size=4 bbWeight=0.45 PerfScore 0.45
G_M4730_IG33: ; bbWeight=0.01, gcVars=00000000000000000800000000000000 {V154}, gcrefRegs=5380000 {x19 x20 x21 x24 x26}, byrefRegs=10400000 {x22 x28}, gcvars, byref, isz
- ; gcrRegs -[x28]
+ ; gcrRegs -[x27]
; byrRegs +[x28]
; GC ptr vars -{V13 V16}
cmp w1, #32
- beq G_M4730_IG51
+ beq G_M4730_IG50
;; size=8 bbWeight=0.01 PerfScore 0.01
...
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
+12 (+0.84%) : 130200.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,T32] ( 3, 5.97) ref -> x19 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T24] ( 4, 10.07) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T31] ( 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,T38] ( 3, 1 ) 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, 29.13) int -> x19
+; V04 loc4 [V04,T37] ( 3, 1 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
+; V05 loc5 [V05,T36] ( 5, 2 ) ref -> [fp+0x10] 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,T30] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V09 tmp2 [V09,T25] ( 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]>
+; V08 tmp1 [V08,T27] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
+; V09 tmp2 [V09,T23] ( 5, 10.03) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V10 tmp3 [V10,T32] ( 2, 4.03) int -> x19 "Inlining Arg"
+; V11 tmp4 [V11,T30] ( 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,T36] ( 3, 3.02) 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.06) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp8 [V15,T27] ( 4, 8.06) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V16 tmp9 [V16,T15] ( 2, 16.12) int -> x25 "Inlining Arg"
-; V17 tmp10 [V17,T10] ( 3, 24.18) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T35] ( 3, 3.02) 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.06) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp8 [V15,T26] ( 4, 8.06) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp9 [V16,T16] ( 2, 15.96) int -> x25 "Inlining Arg"
+; V17 tmp10 [V17,T11] ( 3, 23.94) 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.09) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V20 tmp13 [V20,T01] ( 4, 32.24) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V21 tmp14 [V21,T02] ( 4, 32.24) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T19] ( 3, 11.97) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V20 tmp13 [V20,T01] ( 4, 31.91) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V21 tmp14 [V21,T02] ( 4, 31.91) 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.12) int -> x25 "Inlining Arg"
-; V24 tmp17 [V24,T11] ( 3, 24.18) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T17] ( 2, 15.96) int -> x25 "Inlining Arg"
+; V24 tmp17 [V24,T12] ( 3, 23.94) 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.09) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V27 tmp20 [V27,T03] ( 4, 32.24) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T04] ( 4, 32.24) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T20] ( 3, 11.97) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V27 tmp20 [V27,T03] ( 4, 31.91) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T04] ( 4, 31.91) 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.12) ushort -> x25 "Inlining Arg"
-; V34 tmp27 [V34,T12] ( 3, 24.18) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T18] ( 2, 15.96) ushort -> x25 "Inlining Arg"
+; V34 tmp27 [V34,T13] ( 3, 23.94) 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.09) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V37 tmp30 [V37,T05] ( 4, 32.24) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V38 tmp31 [V38,T06] ( 4, 32.24) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T21] ( 3, 11.97) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
+; V37 tmp30 [V37,T05] ( 4, 31.91) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V38 tmp31 [V38,T06] ( 4, 31.91) 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.06) 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,T28] ( 3, 7.98) 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.06) 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,T29] ( 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,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.15) byref -> x22 "CSE - aggressive"
-; V59 cse1 [V59,T21] ( 3, 12.09) long -> x22 "CSE - moderate"
-; V60 cse2 [V60,T08] ( 9, 27.20) long -> x24 "CSE - aggressive"
-; V61 cse3 [V61,T14] ( 7, 19.14) long -> x21 "CSE - aggressive"
-; V62 cse4 [V62,T23] ( 4, 10.07) 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, 23.94) long -> x22 "CSE - aggressive"
+; V59 cse1 [V59,T08] ( 9, 26.96) long -> x24 "CSE - aggressive"
+; V60 cse2 [V60,T15] ( 7, 18.98) long -> x21 "CSE - aggressive"
+; V61 cse3 [V61,T24] ( 4, 9.99) 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=0000004000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000002000000000 {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=0000004000000000 {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.01, gcVars=0000006000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1.01, 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.01, gcVars=0000006000000000 {V04 V05}, gcrefR
; gcr arg pop 0
mov w19, wzr
;; size=288 bbWeight=1.01 PerfScore 53.39
-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 w25, [x20, x22]
@@ -367,10 +366,11 @@ G_M53770_IG07: ; bbWeight=4.03, 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.03, 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.03, 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.03 PerfScore 471.45
-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=3.99 PerfScore 472.72
+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>
@@ -610,8 +616,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]
@@ -621,11 +627,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
@@ -649,7 +655,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=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG19: ; bbWeight=0, gcVars=0000002000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V04 loc4]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -671,7 +677,7 @@ G_M53770_IG20: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1424, prolog size 36, PerfScore 628.94, instruction count 356, allocated bytes for code 1424 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
+; Total bytes of code 1436, prolog size 36, PerfScore 630.13, instruction count 359, allocated bytes for code 1436 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
; ============================================================
Unwind Info:
@@ -682,7 +688,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 317 (0x0013d) Actual length = 1268 (0x0004f4)
+ Function Length : 320 (0x00140) Actual length = 1280 (0x000500)
---- Epilog scopes ----
...
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
...
smoke_tests.nativeaot.linux.arm64.checked.mch
-20 (-1.02%) : 3163.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -12,9 +12,9 @@
; V02 arg2 [V02,T19] ( 5, 15 ) ref -> x20 class-hnd exact 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] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x5C]
-; V07 loc3 [V07,T05] ( 12, 74 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 33,260 ) ushort -> [fp+0x5C]
+; V07 loc3 [V07,T05] ( 15, 74 ) int -> x28
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [fp+0x58]
;* 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+0x54]
@@ -134,8 +134,8 @@
; V124 cse1 [V124,T33] ( 3, 12 ) ref -> x4 "CSE - moderate"
; V125 cse2 [V125,T36] ( 3, 12 ) int -> x1 "CSE - moderate"
; V126 cse3 [V126,T34] ( 3, 12 ) ref -> x0 "CSE - moderate"
-; V127 cse4 [V127,T02] ( 20,142 ) int -> x26 "CSE - aggressive"
-; V128 cse5 [V128,T03] ( 17,120 ) byref -> x27 "CSE - aggressive"
+; V127 cse4 [V127,T02] ( 19,126.16) int -> x26 "CSE - aggressive"
+; V128 cse5 [V128,T03] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V129 cse6 [V129,T06] ( 6, 60 ) int -> x26 "CSE - aggressive"
; V130 cse7 [V130,T37] ( 3, 12 ) int -> x0 "CSE - moderate"
; V131 cse8 [V131,T10] ( 17, 34 ) ref -> registers multi-def "CSE - aggressive"
@@ -161,7 +161,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 x20, G_M4730_IG69
+ cbz x20, G_M4730_IG68
cbnz x21, 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
@@ -233,7 +233,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M4730_IG64
+ bls G_M4730_IG63
;; size=12 bbWeight=8 PerfScore 36.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz
add x27, x20, #12
@@ -272,10 +272,10 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x50] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG66
+ tbnz w3, #31, G_M4730_IG65
ldr w4, [fp, #0x38] // [V96 tmp74]
cmp w3, w4
- bhi G_M4730_IG76
+ bhi G_M4730_IG75
mov x0, x19
; gcrRegs +[x0]
mov x1, x28
@@ -288,11 +288,11 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w28, [fp, #0x50] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M4730_IG68
+ bhs G_M4730_IG67
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M4730_IG14
@@ -309,7 +309,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
; byrRegs +[x27]
cmp w28, #123
- bne G_M4730_IG70
+ bne G_M4730_IG69
mov w28, wzr
str wzr, [fp, #0x58] // [V08 loc4]
str xzr, [fp, #0x18] // [V85 tmp63]
@@ -317,7 +317,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str wzr, [fp, #0x3C] // [V86 tmp64]
sub w0, w25, #1
cmp w0, w26
- bhs G_M4730_IG68
+ bhs G_M4730_IG67
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M4730_IG16
@@ -357,10 +357,10 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x5C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M4730_IG71
+ bhs G_M4730_IG70
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M4730_IG20
@@ -371,7 +371,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
ldr x4, [fp, #0x18] // [V85 tmp63]
; byrRegs +[x4]
- b G_M4730_IG41
+ b G_M4730_IG40
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
; byrRegs -[x4]
@@ -381,7 +381,7 @@ G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str w6, [fp, #0x54] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x54] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -395,129 +395,122 @@ G_M4730_IG22: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
;; size=24 bbWeight=16 PerfScore 56.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG27
- tbnz w25, #31, G_M4730_IG26
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG25
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG24: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG24
- ;; size=24 bbWeight=15.84 PerfScore 102.96
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- mov w0, w2
- mov w2, w0
- b G_M4730_IG27
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M4730_IG26: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M4730_IG36
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG26: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG26
- ;; size=24 bbWeight=0.16 PerfScore 1.04
-G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #44
- bne G_M4730_IG37
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG28: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- add w25, w25, #1
- cmp w26, w25
- bls G_M4730_IG72
- ldrh w2, [x27, w25, UXTW #2]
- cmp w2, #32
- beq G_M4730_IG28
;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG29: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #45
- bne G_M4730_IG30
+ bne G_M4730_IG28
mov w3, #1
str w3, [fp, #0x58] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M4730_IG30: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG28: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M4730_IG71
+ bhs G_M4730_IG70
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
- b G_M4730_IG32
- ;; size=28 bbWeight=2 PerfScore 10.00
-G_M4730_IG31: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bls G_M4730_IG71
+ tbnz w25, #31, G_M4730_IG33
+ b G_M4730_IG30
+ ;; size=32 bbWeight=2 PerfScore 12.00
+G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {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_M4730_IG72
- ;; size=24 bbWeight=8 PerfScore 40.00
-G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w25, w26
- bhs G_M4730_IG68
+ bls G_M4730_IG71
+ ;; size=24 bbWeight=7.92 PerfScore 39.60
+G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
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_M4730_IG31
- ;; size=36 bbWeight=16 PerfScore 128.00
-G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #32
- bne G_M4730_IG37
- tbnz w25, #31, G_M4730_IG36
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M4730_IG34: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ blt G_M4730_IG29
+ ;; size=28 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG31: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG34
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG32: ; bbWeight=0.08, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {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_M4730_IG72
+ bls G_M4730_IG71
+ ;; size=24 bbWeight=0.08 PerfScore 0.40
+G_M4730_IG33: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w25, w26
+ bhs G_M4730_IG67
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_M4730_IG32
...
-20 (-0.93%) : 1141.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -12,9 +12,9 @@
; V02 arg2 [V02,T24] ( 5, 15 ) ref -> x20 class-hnd exact 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, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [fp+0x6C]
-; V07 loc3 [V07,T06] ( 12,102 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x6C]
+; V07 loc3 [V07,T06] ( 15,102 ) int -> x28
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [fp+0x68]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [fp+0x64]
@@ -128,9 +128,9 @@
; V118 tmp97 [V118,T42] ( 2, 8 ) byref -> x1 "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T45] ( 2, 8 ) int -> x2 "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T37] ( 3, 12 ) int -> x2 "CSE - moderate"
-; V121 cse1 [V121,T03] ( 20,142 ) int -> x26 "CSE - aggressive"
+; V121 cse1 [V121,T03] ( 19,126.16) int -> x26 "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> x26 "CSE - aggressive"
-; V123 cse3 [V123,T04] ( 17,120 ) byref -> x27 "CSE - aggressive"
+; V123 cse3 [V123,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V124 cse4 [V124,T38] ( 3, 12 ) int -> x0 "CSE - moderate"
; V125 cse5 [V125,T14] ( 20, 40 ) ref -> registers multi-def "CSE - aggressive"
;
@@ -155,7 +155,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_IG77
+ cbz x20, G_M36935_IG76
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
@@ -227,7 +227,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M36935_IG73
+ bls G_M36935_IG72
;; size=12 bbWeight=8 PerfScore 36.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz
add x27, x20, #12
@@ -266,10 +266,10 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x60] // [V15 loc11]
- tbnz w3, #31, G_M36935_IG74
+ tbnz w3, #31, G_M36935_IG73
ldr w4, [fp, #0x44] // [V97 tmp76]
cmp w3, w4
- bhi G_M36935_IG84
+ bhi G_M36935_IG83
mov x1, x28
; byrRegs +[x1]
mov w2, w3
@@ -281,11 +281,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
ldr w28, [fp, #0x60] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M36935_IG76
+ bhs G_M36935_IG75
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M36935_IG17
@@ -319,7 +319,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs +[x27]
cmp w28, #123
- bne G_M36935_IG78
+ bne G_M36935_IG77
mov w28, wzr
str wzr, [fp, #0x68] // [V08 loc4]
str xzr, [fp, #0x18] // [V88 tmp67]
@@ -327,7 +327,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str wzr, [fp, #0x48] // [V89 tmp68]
sub w0, w25, #1
cmp w0, w26
- bhs G_M36935_IG76
+ bhs G_M36935_IG75
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M36935_IG19
@@ -367,10 +367,10 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr w2, [fp, #0x6C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M36935_IG79
+ bhs G_M36935_IG78
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M36935_IG23
@@ -381,7 +381,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
ldr x4, [fp, #0x18] // [V88 tmp67]
; byrRegs +[x4]
- b G_M36935_IG44
+ b G_M36935_IG43
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs -[x4]
@@ -391,7 +391,7 @@ G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str w6, [fp, #0x64] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x64] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -405,129 +405,122 @@ G_M36935_IG25: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=
;; size=24 bbWeight=16 PerfScore 56.00
G_M36935_IG26: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG30
- tbnz w25, #31, G_M36935_IG29
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M36935_IG27: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG28
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG27: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG27
- ;; size=24 bbWeight=15.84 PerfScore 102.96
-G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
- mov w0, w2
- mov w2, w0
- b G_M36935_IG30
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M36935_IG29: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M36935_IG39
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG29: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG29
- ;; size=24 bbWeight=0.16 PerfScore 1.04
-G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #44
- bne G_M36935_IG40
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG31: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- add w25, w25, #1
- cmp w26, w25
- bls G_M36935_IG80
- ldrh w2, [x27, w25, UXTW #2]
- cmp w2, #32
- beq G_M36935_IG31
;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #45
- bne G_M36935_IG33
+ bne G_M36935_IG31
mov w3, #1
str w3, [fp, #0x68] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M36935_IG33: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M36935_IG79
+ bhs G_M36935_IG78
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
- b G_M36935_IG35
- ;; size=28 bbWeight=2 PerfScore 10.00
-G_M36935_IG34: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bls G_M36935_IG79
+ tbnz w25, #31, G_M36935_IG36
+ b G_M36935_IG33
+ ;; size=32 bbWeight=2 PerfScore 12.00
+G_M36935_IG32: ; 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_IG80
- ;; size=24 bbWeight=8 PerfScore 40.00
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w25, w26
- bhs G_M36935_IG76
+ bls G_M36935_IG79
+ ;; size=24 bbWeight=7.92 PerfScore 39.60
+G_M36935_IG33: ; 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
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M36935_IG34
- ;; size=36 bbWeight=16 PerfScore 128.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #32
- bne G_M36935_IG40
- tbnz w25, #31, G_M36935_IG39
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ blt G_M36935_IG32
+ ;; size=28 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG37
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG35: ; 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_IG80
+ bls G_M36935_IG79
+ ;; size=24 bbWeight=0.08 PerfScore 0.40
+G_M36935_IG36: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w25, w26
+ bhs G_M36935_IG75
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
...
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 |
+144 |
| benchmarks.run_pgo.linux.arm64.checked.mch |
1 |
1 |
0 |
0 |
-60 |
+0 |
| benchmarks.run_tiered.linux.arm64.checked.mch |
2 |
2 |
0 |
0 |
-208 |
+0 |
| coreclr_tests.run.linux.arm64.checked.mch |
162 |
1 |
161 |
0 |
-172 |
+14,820 |
| libraries.crossgen2.linux.arm64.checked.mch |
4 |
1 |
3 |
0 |
-28 |
+276 |
| libraries.pmi.linux.arm64.checked.mch |
2 |
1 |
1 |
0 |
-16 |
+268 |
| libraries_tests.run.linux.arm64.Release.mch |
266 |
2 |
264 |
0 |
-76 |
+25,776 |
| 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 |
2 |
2 |
0 |
0 |
-40 |
+0 |
|
444 |
10 |
434 |
0 |
-600 |
+41,440 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm64.checked.mch |
33,710 |
2,779 |
30,931 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.arm64.checked.mch |
152,900 |
61,290 |
91,610 |
4 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.linux.arm64.checked.mch |
63,813 |
48,019 |
15,794 |
1 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.linux.arm64.checked.mch |
625,272 |
382,318 |
242,954 |
3 (0.00%) |
1 (0.00%) |
| libraries.crossgen2.linux.arm64.checked.mch |
234,496 |
15 |
234,481 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm64.checked.mch |
295,745 |
6 |
295,739 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.arm64.Release.mch |
744,166 |
490,908 |
253,258 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
304,865 |
21,599 |
283,266 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.arm64.checked.mch |
33,309 |
151 |
33,158 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.arm64.checked.mch |
19,033 |
7 |
19,026 |
0 (0.00%) |
0 (0.00%) |
|
2,507,309 |
1,007,092 |
1,500,217 |
8 (0.00%) |
1 (0.00%) |
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: 15557684 (overridden on cmd)
Total bytes of diff: 15557828 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
72 : 1482.dasm (2.29 % of base)
72 : 9088.dasm (2.66 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
72 (2.66 % of base) : 9088.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 1482.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
72 (2.66 % of base) : 9088.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 1482.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
benchmarks.run_pgo.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 80094232 (overridden on cmd)
Total bytes of diff: 80094172 (overridden on cmd)
Total bytes of delta: -60 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-60 : 102735.dasm (-7.08 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-60 (-7.08 % of base) : 102735.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method improvements (percentages):
-60 (-7.08 % of base) : 102735.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
1 total methods with Code Size differences (1 improved, 0 regressed).
benchmarks.run_tiered.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: 24601160 (overridden on cmd)
Total bytes of diff: 24600952 (overridden on cmd)
Total bytes of delta: -208 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-148 : 35206.dasm (-13.81 % of base)
-60 : 50853.dasm (-7.43 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-148 (-13.81 % of base) : 35206.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-60 (-7.43 % of base) : 50853.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method improvements (percentages):
-148 (-13.81 % of base) : 35206.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-60 (-7.43 % of base) : 50853.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
2 total methods with Code Size differences (2 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: 508772900 (overridden on cmd)
Total bytes of diff: 508787548 (overridden on cmd)
Total bytes of delta: 14648 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
128 : 488980.dasm (2.72 % of base)
124 : 333799.dasm (2.63 % of base)
124 : 446127.dasm (2.63 % of base)
124 : 502108.dasm (2.63 % of base)
124 : 512611.dasm (2.64 % of base)
124 : 556091.dasm (2.63 % of base)
124 : 513154.dasm (2.63 % of base)
124 : 599918.dasm (2.63 % of base)
116 : 489252.dasm (2.57 % of base)
116 : 562255.dasm (2.57 % of base)
116 : 563840.dasm (2.55 % of base)
116 : 605031.dasm (2.57 % of base)
116 : 449041.dasm (2.57 % of base)
116 : 516723.dasm (2.56 % of base)
116 : 566059.dasm (2.56 % of base)
116 : 613661.dasm (3.27 % of base)
116 : 451329.dasm (2.57 % of base)
116 : 490163.dasm (2.56 % of base)
116 : 490234.dasm (2.57 % of base)
116 : 506182.dasm (2.57 % of base)
Top file improvements (bytes):
-172 : 519607.dasm (-32.33 % of base)
77 total files with Code Size differences (1 improved, 76 regressed), 0 unchanged.
Top method regressions (bytes):
128 (2.72 % of base) : 488980.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 333799.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 446127.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 502108.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.64 % of base) : 512611.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 556091.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 513154.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 599918.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (3.27 % of base) : 613661.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (2.57 % of base) : 489252.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 562255.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.55 % of base) : 563840.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 605031.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 449041.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.56 % of base) : 516723.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.56 % of base) : 566059.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 451329.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.56 % of base) : 490163.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 490234.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 506182.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (bytes):
-172 (-32.33 % of base) : 519607.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
116 (3.27 % of base) : 613661.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (3.10 % of base) : 617814.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (2.96 % of base) : 515114.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
92 (2.90 % of base) : 523341.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
128 (2.72 % of base) : 488980.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.64 % of base) : 512611.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 333799.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 446127.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 502108.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 556091.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 513154.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.63 % of base) : 599918.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.59 % of base) : 513925.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.58 % of base) : 517510.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.58 % of base) : 623853.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 605031.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 506182.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 490234.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 489252.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.57 % of base) : 562255.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (percentages):
-172 (-32.33 % of base) : 519607.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
libraries.crossgen2.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: 55844108 (overridden on cmd)
Total bytes of diff: 55844356 (overridden on cmd)
Total bytes of delta: 248 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
148 : 86705.dasm (28.46 % of base)
64 : 35574.dasm (2.64 % of base)
64 : 31616.dasm (2.86 % of base)
Top file improvements (bytes):
-28 : 83559.dasm (-20.59 % of base)
4 total files with Code Size differences (1 improved, 3 regressed), 0 unchanged.
Top method regressions (bytes):
148 (28.46 % of base) : 86705.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
64 (2.86 % of base) : 31616.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (2.64 % of base) : 35574.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (bytes):
-28 (-20.59 % of base) : 83559.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
148 (28.46 % of base) : 86705.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
64 (2.86 % of base) : 31616.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (2.64 % of base) : 35574.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-28 (-20.59 % of base) : 83559.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
4 total methods with Code Size differences (1 improved, 3 regressed).
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: 76294184 (overridden on cmd)
Total bytes of diff: 76294436 (overridden on cmd)
Total bytes of delta: 252 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
268 : 116738.dasm (36.41 % of base)
Top file improvements (bytes):
-16 : 113342.dasm (-12.90 % of base)
2 total files with Code Size differences (1 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
268 (36.41 % of base) : 116738.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
Top method improvements (bytes):
-16 (-12.90 % of base) : 113342.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
268 (36.41 % of base) : 116738.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
Top method improvements (percentages):
-16 (-12.90 % of base) : 113342.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
2 total methods with Code Size differences (1 improved, 1 regressed).
libraries_tests.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 395688828 (overridden on cmd)
Total bytes of diff: 395714528 (overridden on cmd)
Total bytes of delta: 25700 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
128 : 553687.dasm (3.29 % of base)
128 : 374129.dasm (2.73 % of base)
128 : 407431.dasm (2.72 % of base)
128 : 213971.dasm (3.28 % of base)
128 : 304789.dasm (3.28 % of base)
128 : 308638.dasm (3.28 % of base)
124 : 325685.dasm (2.65 % of base)
124 : 379171.dasm (2.65 % of base)
124 : 555393.dasm (2.65 % of base)
124 : 183005.dasm (2.64 % of base)
124 : 561096.dasm (2.65 % of base)
124 : 590658.dasm (2.65 % of base)
124 : 385569.dasm (2.65 % of base)
124 : 167743.dasm (2.64 % of base)
124 : 94465.dasm (2.65 % of base)
116 : 316555.dasm (3.12 % of base)
116 : 394328.dasm (3.27 % of base)
116 : 404473.dasm (3.27 % of base)
116 : 497593.dasm (3.26 % of base)
116 : 501174.dasm (3.27 % of base)
Top file improvements (bytes):
-60 : 303165.dasm (-2.11 % of base)
-16 : 531771.dasm (-0.38 % of base)
78 total files with Code Size differences (2 improved, 76 regressed), 0 unchanged.
Top method regressions (bytes):
128 (3.29 % of base) : 553687.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.28 % of base) : 213971.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.28 % of base) : 304789.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.28 % of base) : 308638.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (2.73 % of base) : 374129.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
128 (2.72 % of base) : 407431.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.65 % of base) : 325685.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.65 % of base) : 379171.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.65 % of base) : 555393.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.64 % of base) : 183005.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.65 % of base) : 561096.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.65 % of base) : 590658.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.65 % of base) : 385569.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.64 % of base) : 167743.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.65 % of base) : 94465.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (3.12 % of base) : 316555.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 394328.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 404473.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.26 % of base) : 497593.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 501174.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
Top method improvements (bytes):
-60 (-2.11 % of base) : 303165.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-16 (-0.38 % of base) : 531771.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
Top method regressions (percentages):
128 (3.29 % of base) : 553687.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.28 % of base) : 213971.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.28 % of base) : 304789.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.28 % of base) : 308638.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 571918.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 394328.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 404473.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 501174.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 313499.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 443082.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 190254.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 251100.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 637490.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 668727.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.26 % of base) : 497593.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.26 % of base) : 329099.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.26 % of base) : 387100.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.25 % of base) : 728866.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.25 % of base) : 587284.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.20 % of base) : 181738.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
Top method improvements (percentages):
-60 (-2.11 % of base) : 303165.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-16 (-0.38 % of base) : 531771.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
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: 165003208 (overridden on cmd)
Total bytes of diff: 165003220 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
12 : 130200.dasm (0.84 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
12 (0.84 % of base) : 130200.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
Top method regressions (percentages):
12 (0.84 % of base) : 130200.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
1 total methods with Code Size differences (0 improved, 1 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: 15903660 (overridden on cmd)
Total bytes of diff: 15903804 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
72 : 2729.dasm (2.66 % of base)
72 : 2966.dasm (2.29 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
72 (2.66 % of base) : 2729.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 2966.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
72 (2.66 % of base) : 2729.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 2966.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
smoke_tests.nativeaot.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: 2946792 (overridden on cmd)
Total bytes of diff: 2946752 (overridden on cmd)
Total bytes of delta: -40 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-20 : 3163.dasm (-1.02 % of base)
-20 : 1141.dasm (-0.93 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-20 (-1.02 % of base) : 3163.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-20 (-0.93 % of base) : 1141.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-20 (-1.02 % of base) : 3163.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-20 (-0.93 % of base) : 1141.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
linux x64
Diffs are based on 2,517,900 contexts (991,070 MinOpts, 1,526,830 FullOpts).
MISSED contexts: base: 8 (0.00%), diff: 1 (0.00%)
Overall (+36,557 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.x64.checked.mch |
14,336,796 |
+99 |
| benchmarks.run_pgo.linux.x64.checked.mch |
71,590,604 |
+663 |
| benchmarks.run_tiered.linux.x64.checked.mch |
21,435,743 |
-218 |
| coreclr_tests.run.linux.x64.checked.mch |
403,710,882 |
+12,598 |
| libraries.crossgen2.linux.x64.checked.mch |
38,727,192 |
+237 |
| libraries.pmi.linux.x64.checked.mch |
60,419,372 |
+291 |
| libraries_tests.run.linux.x64.Release.mch |
337,107,943 |
+22,926 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
132,558,366 |
+0 |
| realworld.run.linux.x64.checked.mch |
13,175,050 |
+71 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
4,234,485 |
-110 |
FullOpts (+36,557 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.x64.checked.mch |
14,037,493 |
+99 |
| benchmarks.run_pgo.linux.x64.checked.mch |
47,790,615 |
+663 |
| benchmarks.run_tiered.linux.x64.checked.mch |
3,694,963 |
-218 |
| coreclr_tests.run.linux.x64.checked.mch |
123,956,180 |
+12,598 |
| libraries.crossgen2.linux.x64.checked.mch |
38,725,994 |
+237 |
| libraries.pmi.linux.x64.checked.mch |
60,306,515 |
+291 |
| libraries_tests.run.linux.x64.Release.mch |
153,348,250 |
+22,926 |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
121,940,598 |
+0 |
| realworld.run.linux.x64.checked.mch |
12,789,166 |
+71 |
| smoke_tests.nativeaot.linux.x64.checked.mch |
4,233,536 |
-110 |
Example diffs
benchmarks.run.linux.x64.checked.mch
+37 (+1.56%) : 6164.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
-51 (-6.42%) : 112826.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -10,16 +10,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T12] ( 15, 103.93) ref -> rdi class-hnd single-def <float[][]>
+; V00 arg0 [V00,T12] ( 12, 103.73) ref -> rdi class-hnd single-def <float[][]>
; V01 arg1 [V01,T13] ( 11, 103.73) ref -> rsi class-hnd single-def <int[][]>
; V02 arg2 [V02,T21] ( 3, 2.21) ref -> [rbp+0x60] class-hnd single-def tier0-frame <double[]>
; V03 arg3 [V03,T14] ( 4, 101.79) ref -> rcx class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T20] ( 5, 2.62) int -> r8 single-def
+; V04 arg4 [V04,T20] ( 4, 2.62) int -> r8 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T05] ( 25,1698.20) int -> rax
-; V08 loc3 [V08,T16] ( 6, 100.21) ref -> r11 class-hnd <float[]>
-; V09 loc4 [V09,T11] ( 13, 208.20) int -> r10
+; V07 loc2 [V07,T05] ( 20,1698.20) int -> rax
+; V08 loc3 [V08,T16] ( 5, 100.21) ref -> r11 class-hnd <float[]>
+; V09 loc4 [V09,T11] ( 12, 208.20) int -> r10
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 24,1300.09) int -> r9
; V12 loc7 [V12,T27] ( 4, 199.58) float -> mm0
@@ -42,7 +42,7 @@
; V29 tmp14 [V29,T24] ( 6, 0.60) ref -> rdx "arr expr"
; V30 cse0 [V30,T09] ( 6, 598.73) ref -> r13 multi-def "CSE - moderate"
; V31 cse1 [V31,T10] ( 16, 399.56) int -> r12 multi-def "CSE - moderate"
-; V32 cse2 [V32,T15] ( 9, 101.05) int -> rbx "CSE - moderate"
+; V32 cse2 [V32,T15] ( 7, 100.84) int -> rbx "CSE - moderate"
; V33 cse3 [V33,T17] ( 4, 100.00) int -> r15 hoist multi-def "CSE - moderate"
; V34 cse4 [V34,T18] ( 4, 100.00) long -> r14 hoist multi-def "CSE - moderate"
;
@@ -79,119 +79,94 @@ G_M56974_IG02: ; bbWeight=0.21, gcrefRegs=08C6 {rcx rdx rsi rdi r11}, byr
; GC ptr vars +{V02}
mov ebx, dword ptr [rdx+0x08]
cmp ebx, r9d
- jle G_M56974_IG16
+ jle G_M56974_IG11
;; size=16 bbWeight=0.21 PerfScore 0.90
G_M56974_IG03: ; bbWeight=0.21, gcVars=0000000000200000 {V02}, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdx]
test rsi, rsi
- je G_M56974_IG25
+ je G_M56974_IG21
test rdi, rdi
- je G_M56974_IG25
+ je G_M56974_IG21
test r9d, r9d
- jl G_M56974_IG25
+ jl G_M56974_IG21
cmp dword ptr [rsi+0x08], ebx
- jl G_M56974_IG25
+ jl G_M56974_IG21
cmp dword ptr [rdi+0x08], ebx
- jl G_M56974_IG25
+ jl G_M56974_IG21
mov r15d, dword ptr [r11+0x08]
mov r14d, r10d
;; size=52 bbWeight=0.21 PerfScore 2.94
G_M56974_IG04: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
cmp r10d, r15d
- jae G_M56974_IG36
+ jae G_M56974_IG32
vmovss xmm0, dword ptr [r11+4*r14+0x10]
mov r13, gword ptr [rcx+0x08]
; gcrRegs +[r13]
cmp dword ptr [r13+0x08], eax
jle SHORT G_M56974_IG06
;; size=26 bbWeight=98.79 PerfScore 1111.40
-G_M56974_IG05: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref
+G_M56974_IG05: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref, isz
cmp eax, r9d
- jne G_M56974_IG18
- ;; size=9 bbWeight=395.16 PerfScore 493.96
+ jne SHORT G_M56974_IG14
+ ;; size=5 bbWeight=395.16 PerfScore 493.96
G_M56974_IG06: ; bbWeight=395.16, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
vxorps xmm1, xmm1, xmm1
- jmp G_M56974_IG19
+ jmp G_M56974_IG15
;; size=9 bbWeight=395.16 PerfScore 922.05
G_M56974_IG07: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r11]
- test rdi, rdi
- je SHORT G_M56974_IG15
- test eax, eax
- jl SHORT G_M56974_IG15
- cmp dword ptr [rdi+0x08], ebx
- jl SHORT G_M56974_IG15
- ;; size=14 bbWeight=0.21 PerfScore 1.34
-G_M56974_IG08: ; bbWeight=0.64, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M56974_IG10
- ;; size=2 bbWeight=0.64 PerfScore 1.29
-G_M56974_IG09: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ cmp eax, dword ptr [rdi+0x08]
+ jae G_M56974_IG32
mov r11d, eax
mov r11, gword ptr [rdi+8*r11+0x10]
; gcrRegs +[r11]
xor r10d, r10d
test r8d, r8d
- jg SHORT G_M56974_IG12
- ;; size=16 bbWeight=0.21 PerfScore 0.78
-G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jg SHORT G_M56974_IG09
+ ;; size=25 bbWeight=0.21 PerfScore 1.64
+G_M56974_IG08: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r11]
inc eax
cmp ebx, eax
- jle G_M56974_IG37
- jmp SHORT G_M56974_IG09
- ;; size=12 bbWeight=0.21 PerfScore 0.73
-G_M56974_IG11: ; bbWeight=0.00, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
- cmp eax, dword ptr [rdi+0x08]
- jae G_M56974_IG36
- mov r11d, eax
- mov r11, gword ptr [rdi+8*r11+0x10]
+ jle G_M56974_IG33
+ jmp SHORT G_M56974_IG07
+ ;; size=12 bbWeight=0.21 PerfScore 0.74
+G_M56974_IG09: ; bbWeight=0.21, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r11]
- xor r10d, r10d
- test r8d, r8d
- jle SHORT G_M56974_IG15
- ;; size=25 bbWeight=0.00 PerfScore 0.02
-G_M56974_IG12: ; bbWeight=0.21, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
cmp eax, dword ptr [rsi+0x08]
- jae G_M56974_IG36
+ jae G_M56974_IG32
mov r9d, eax
mov r9, gword ptr [rsi+8*r9+0x10]
; gcrRegs +[r9]
test r10d, r10d
- jl SHORT G_M56974_IG16
+ jl SHORT G_M56974_IG11
;; size=22 bbWeight=0.21 PerfScore 1.58
-G_M56974_IG13: ; bbWeight=6.75, gcrefRegs=0AC2 {rcx rsi rdi r9 r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG10: ; bbWeight=6.75, gcrefRegs=0AC2 {rcx rsi rdi r9 r11}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r9+0x08], r10d
- jle SHORT G_M56974_IG16
+ jg SHORT G_M56974_IG13
;; size=6 bbWeight=6.75 PerfScore 27.01
-G_M56974_IG14: ; bbWeight=0.21, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
+G_M56974_IG11: ; bbWeight=0.41, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
+ inc r10d
+ cmp r10d, r8d
+ jl SHORT G_M56974_IG09
+ ;; size=8 bbWeight=0.41 PerfScore 0.62
+G_M56974_IG12: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r11]
+ jmp SHORT G_M56974_IG08
+ ;; size=2 bbWeight=0.21 PerfScore 0.41
+G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r11]
lea r9d, [rax+0x01]
mov rdx, gword ptr [rbp+0x60]
; gcrRegs +[rdx]
jmp G_M56974_IG02
;; size=13 bbWeight=0.21 PerfScore 0.74
-G_M56974_IG15: ; bbWeight=0.00, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx r11]
- inc eax
- cmp ebx, eax
- jle G_M56974_IG37
- jmp SHORT G_M56974_IG11
- ;; size=12 bbWeight=0.00 PerfScore 0.01
-G_M56974_IG16: ; bbWeight=0.41, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r11]
- inc r10d
- cmp r10d, r8d
- jl SHORT G_M56974_IG12
- ;; size=8 bbWeight=0.41 PerfScore 0.62
-G_M56974_IG17: ; bbWeight=0.21, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r11]
- jmp G_M56974_IG07
- ;; size=5 bbWeight=0.21 PerfScore 0.41
-G_M56974_IG18: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r11 r13]
+G_M56974_IG14: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdx] +[r13]
cmp eax, dword ptr [r13+0x08]
- jae G_M56974_IG36
+ jae G_M56974_IG32
mov r12d, eax
mov r12, gword ptr [r13+8*r12+0x10]
; gcrRegs +[r12]
@@ -200,10 +175,10 @@ G_M56974_IG18: ; bbWeight=395.16, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, b
sub r13d, eax
dec r13d
cmp r13d, dword ptr [r12+0x08]
- jae G_M56974_IG36
+ jae G_M56974_IG32
vcvtss2sd xmm1, xmm1, dword ptr [r12+4*r13+0x10]
;; size=45 bbWeight=395.16 PerfScore 7112.96
-G_M56974_IG19: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG15: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r12]
vcvtss2sd xmm0, xmm0, xmm0
vaddsd xmm0, xmm0, xmm1
@@ -213,39 +188,39 @@ G_M56974_IG19: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefR
lea r12d, [r10+0x01]
mov edx, r12d
test edx, edx
- jl SHORT G_M56974_IG24
+ jl SHORT G_M56974_IG20
;; size=27 bbWeight=98.79 PerfScore 1111.40
-G_M56974_IG20: ; bbWeight=3161.31, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=3161.31, gcrefRegs=28C2 {rcx rsi rdi r11 r13}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r13+0x08], edx
- jle SHORT G_M56974_IG24
+ jle SHORT G_M56974_IG20
;; size=6 bbWeight=3161.31 PerfScore 12645.26
-G_M56974_IG21: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG17: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
mov edx, r9d
mov rdx, gword ptr [rdi+8*rdx+0x10]
; gcrRegs +[rdx]
cmp r12d, dword ptr [rdx+0x08]
- jae G_M56974_IG36
+ jae G_M56974_IG32
mov r13d, r12d
vcvtss2sd xmm1, xmm1, dword ptr [rdx+4*r13+0x10]
vucomisd xmm1, xmm0
- ja SHORT G_M56974_IG24
+ ja SHORT G_M56974_IG20
;; size=34 bbWeight=98.79 PerfScore 1630.05
-G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
+G_M56974_IG18: ; bbWeight=98.79, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
inc r9d
cmp ebx, r9d
jg G_M56974_IG04
;; size=12 bbWeight=98.79 PerfScore 148.19
-G_M56974_IG23: ; bbWeight=0.41, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
- jmp G_M56974_IG16
+G_M56974_IG19: ; bbWeight=0.41, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref
+ jmp G_M56974_IG11
;; size=5 bbWeight=0.41 PerfScore 0.82
-G_M56974_IG24: ; bbWeight=0.10, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG20: ; bbWeight=0.10, gcrefRegs=08C2 {rcx rsi rdi r11}, byrefRegs=0000 {}, byref, isz
mov edx, r9d
mov rdx, gword ptr [rdi+8*rdx+0x10]
; gcrRegs +[rdx]
cmp r12d, dword ptr [rdx+0x08]
- jae G_M56974_IG36
+ jae G_M56974_IG32
...
+357 (+32.34%) : 70823.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
@@ -9,21 +9,21 @@
; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 179.83
; Final local variable assignments
;
-; V00 arg0 [V00,T11] ( 17, 7.91) 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.65) ref -> rdx class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 23, 8.98) 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.36) ref -> rdx class-hnd single-def <int[][]>
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T13] ( 49, 5.00) int -> r8
-; V05 loc2 [V05,T06] ( 50,202.67) int -> rcx
-; V06 loc3 [V06,T03] ( 53,401.61) int -> rax
+; V04 loc1 [V04,T13] ( 61, 7.13) int -> r8
+; V05 loc2 [V05,T06] ( 59,205.87) 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.14) byref -> r10 "dup spill"
+; V11 tmp4 [V11,T17] ( 6, 2.14) 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.03) 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.03) ref -> registers "arr expr"
; V21 tmp14 [V21,T04] ( 5,396.66) ref -> registers "arr expr"
; V22 tmp15 [V22,T02] ( 6,592.03) 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.14) ref -> rbx "arr expr"
+; V25 tmp18 [V25,T22] ( 5, 1.42) ref -> r15 "arr expr"
+; V26 tmp19 [V26,T19] ( 6, 2.14) ref -> r9 "arr expr"
+; V27 tmp20 [V27,T23] ( 5, 1.42) ref -> rbx "arr expr"
+; V28 tmp21 [V28,T20] ( 6, 2.14) 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.59) ref -> r10 multi-def "CSE - moderate"
-; V40 cse2 [V40,T15] ( 10, 2.65) int -> r11 hoist multi-def "CSE - moderate"
+; V40 cse2 [V40,T15] ( 13, 3.00) int -> r11 hoist multi-def "CSE - moderate"
; V41 cse3 [V41,T14] ( 6, 4.95) 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.05) 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.33, 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.36, 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.36 PerfScore 10.77
+G_M19657_IG06: ; bbWeight=0.36, 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.36 PerfScore 11.21
+G_M19657_IG07: ; bbWeight=1.33, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ ; byrRegs -[r10]
xor eax, eax
;; size=2 bbWeight=1.33 PerfScore 0.33
-G_M19657_IG04: ; bbWeight=1.33, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
+G_M19657_IG08: ; bbWeight=1.33, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref
cmp eax, 75
- jge G_M19657_IG10
+ jge G_M19657_IG14
;; size=9 bbWeight=1.33 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.46
-G_M19657_IG06: ; bbWeight=97.68, gcrefRegs=04CC {rdx rbx rsi rdi r10}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG10: ; bbWeight=97.68, 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.68, 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.68 PerfScore 2295.58
-G_M19657_IG07: ; bbWeight=1.33, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG11: ; bbWeight=1.33, 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.33 PerfScore 2.66
-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]
...
+357 (+32.34%) : 70812.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]
...
benchmarks.run_tiered.linux.x64.checked.mch
-44 (-6.06%) : 54552.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -9,16 +9,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 15, 12.06) ref -> rbx class-hnd single-def <float[][]>
+; V00 arg0 [V00,T08] ( 12, 12.04) ref -> rbx class-hnd single-def <float[][]>
; V01 arg1 [V01,T09] ( 9, 12.04) ref -> r15 class-hnd single-def <int[][]>
; V02 arg2 [V02,T19] ( 3, 3 ) ref -> r12 class-hnd single-def <double[]>
; V03 arg3 [V03,T18] ( 4, 6 ) ref -> r13 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T10] ( 5, 12 ) int -> r14 single-def
+; V04 arg4 [V04,T10] ( 4, 12 ) int -> r14 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T03] ( 17, 37.52) int -> [rbp+0x48] tier0-frame
-; V08 loc3 [V08,T14] ( 6, 10 ) ref -> [rbp+0x40] class-hnd tier0-frame <float[]>
-; V09 loc4 [V09,T00] ( 13, 56 ) int -> [rbp+0x3C] tier0-frame
+; V07 loc2 [V07,T03] ( 12, 38.50) int -> [rbp+0x48] tier0-frame
+; V08 loc3 [V08,T14] ( 5, 10 ) ref -> [rbp+0x40] class-hnd tier0-frame <float[]>
+; V09 loc4 [V09,T00] ( 12, 56 ) int -> [rbp+0x3C] tier0-frame
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T05] ( 20, 26.58) int -> [rbp+0x34] tier0-frame
;* V12 loc7 [V12 ] ( 0, 0 ) float -> zero-ref
@@ -37,7 +37,7 @@
; V25 tmp10 [V25,T13] ( 6, 12 ) ref -> rax "arr expr"
; V26 cse0 [V26,T20] ( 3, 0.10) ref -> rax "CSE - conservative"
; V27 cse1 [V27,T17] ( 3, 9.90) ref -> rax "CSE - moderate"
-; V28 cse2 [V28,T07] ( 9, 17 ) int -> [rbp-0x2C] spill-single-def "CSE - moderate"
+; V28 cse2 [V28,T07] ( 7, 16 ) int -> [rbp-0x2C] spill-single-def "CSE - moderate"
; V29 cse3 [V29,T06] ( 16, 20 ) int -> r9 multi-def "CSE - moderate"
; TEMP_01 double -> [rbp-0x34]
;
@@ -69,55 +69,27 @@ G_M56974_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov edi, dword ptr [rbp+0x3C]
mov ecx, dword ptr [rbp+0x34]
;; size=90 bbWeight=0.01 PerfScore 0.28
-G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref
- jmp G_M56974_IG15
- ;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M56974_IG03: ; bbWeight=1, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M56974_IG11
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M56974_IG03: ; bbWeight=2, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
- test rbx, rbx
- je SHORT G_M56974_IG08
- test eax, eax
- jl SHORT G_M56974_IG08
- cmp dword ptr [rbx+0x08], r9d
- jl SHORT G_M56974_IG08
- jmp SHORT G_M56974_IG05
- ;; size=17 bbWeight=1 PerfScore 8.50
-G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ cmp eax, dword ptr [rbx+0x08]
+ jae G_M56974_IG28
mov edi, eax
mov r8, gword ptr [rbx+8*rdi+0x10]
; gcrRegs +[r8]
xor edi, edi
test r14d, r14d
- jg SHORT G_M56974_IG10
- ;; size=14 bbWeight=1.98 PerfScore 7.43
-G_M56974_IG05: ; bbWeight=7.92, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ jg SHORT G_M56974_IG06
+ ;; size=23 bbWeight=2 PerfScore 15.50
+G_M56974_IG04: ; bbWeight=8, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
inc eax
cmp r9d, eax
- jg SHORT G_M56974_IG04
- ;; size=7 bbWeight=7.92 PerfScore 11.88
-G_M56974_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx r12-r13 r15]
- jmp SHORT G_M56974_IG09
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx r12-r13 r15]
- cmp eax, dword ptr [rbx+0x08]
- jae G_M56974_IG32
- mov r8d, eax
- mov r8, gword ptr [rbx+8*r8+0x10]
- ; gcrRegs +[r8]
- xor edi, edi
- test r14d, r14d
- jg SHORT G_M56974_IG10
- ;; size=24 bbWeight=0.02 PerfScore 0.16
-G_M56974_IG08: ; bbWeight=0.08, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r8]
- inc eax
- cmp r9d, eax
- jg SHORT G_M56974_IG07
- ;; size=7 bbWeight=0.08 PerfScore 0.12
-G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jg SHORT G_M56974_IG03
+ ;; size=7 bbWeight=8 PerfScore 12.00
+G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx r12-r13 r15]
add rsp, 184
pop rbx
@@ -128,53 +100,53 @@ G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
-G_M56974_IG10: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx r8 r12-r13 r15]
cmp eax, dword ptr [r15+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG28
mov ecx, eax
mov rsi, gword ptr [r15+8*rcx+0x10]
; gcrRegs +[rsi]
test edi, edi
- jl SHORT G_M56974_IG12
+ jl SHORT G_M56974_IG08
;; size=21 bbWeight=2 PerfScore 15.00
-G_M56974_IG11: ; bbWeight=16, gcrefRegs=B148 {rbx rsi r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG07: ; bbWeight=16, gcrefRegs=B148 {rbx rsi r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rsi+0x08], edi
- jg SHORT G_M56974_IG14
+ jg SHORT G_M56974_IG10
;; size=5 bbWeight=16 PerfScore 64.00
-G_M56974_IG12: ; bbWeight=8, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG08: ; bbWeight=8, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
inc edi
cmp edi, r14d
- jl SHORT G_M56974_IG10
+ jl SHORT G_M56974_IG06
;; size=7 bbWeight=8 PerfScore 12.00
-G_M56974_IG13: ; bbWeight=1, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG09: ; bbWeight=1, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
- jmp SHORT G_M56974_IG03
+ jmp SHORT G_M56974_IG04
;; size=2 bbWeight=1 PerfScore 2.00
-G_M56974_IG14: ; bbWeight=0.50, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref
+G_M56974_IG10: ; bbWeight=0.50, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
lea ecx, [rax+0x01]
;; size=3 bbWeight=0.50 PerfScore 0.25
-G_M56974_IG15: ; bbWeight=1, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=1, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
mov r9d, dword ptr [r12+0x08]
mov dword ptr [rbp-0x2C], r9d
cmp r9d, ecx
- jle SHORT G_M56974_IG12
+ jle SHORT G_M56974_IG08
test r15, r15
- je G_M56974_IG26
+ je G_M56974_IG22
test rbx, rbx
- je G_M56974_IG25
+ je G_M56974_IG21
test ecx, ecx
- jl G_M56974_IG24
+ jl G_M56974_IG20
cmp dword ptr [r15+0x08], r9d
- jl G_M56974_IG23
+ jl G_M56974_IG19
cmp dword ptr [rbx+0x08], r9d
- jl G_M56974_IG26
+ jl G_M56974_IG22
;; size=60 bbWeight=1 PerfScore 16.00
-G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byrefRegs=0000 {}, byref, isz
cmp edi, dword ptr [r8+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG28
mov dword ptr [rbp+0x3C], edi
mov esi, edi
mov gword ptr [rbp+0x40], r8
@@ -202,79 +174,79 @@ G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=B108 {rbx r8 r12 r13 r15}, byre
lea r9d, [r8+0x01]
mov r10d, r9d
test r10d, r10d
- jl SHORT G_M56974_IG19
+ jl SHORT G_M56974_IG15
;; size=86 bbWeight=3.96 PerfScore 136.62
-G_M56974_IG17: ; bbWeight=15.84, gcrefRegs=B00B {rax rcx rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=15.84, gcrefRegs=B00B {rax rcx rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rcx+0x08], r10d
- jle SHORT G_M56974_IG19
+ jle SHORT G_M56974_IG15
;; size=6 bbWeight=15.84 PerfScore 63.36
-G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG14: ; bbWeight=1.98, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
mov esi, edi
mov r11, gword ptr [rbx+8*rsi+0x10]
; gcrRegs +[r11]
cmp r9d, dword ptr [r11+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG28
mov esi, r9d
vcvtss2sd xmm1, xmm1, dword ptr [r11+4*rsi+0x10]
vucomisd xmm1, xmm0
- jbe SHORT G_M56974_IG22
+ jbe SHORT G_M56974_IG18
;; size=33 bbWeight=1.98 PerfScore 32.67
-G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref
+G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r11]
mov esi, edi
mov rdx, gword ptr [rbx+8*rsi+0x10]
; gcrRegs +[rdx]
cmp r9d, dword ptr [rdx+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG28
mov esi, r9d
vcvtsd2ss xmm0, xmm0, xmm0
vmovss dword ptr [rdx+4*rsi+0x10], xmm0
cmp r9d, dword ptr [rax+0x08]
- jae G_M56974_IG32
+ jae G_M56974_IG28
mov esi, r9d
mov ecx, dword ptr [rbp+0x48]
mov dword ptr [rax+4*rsi+0x10], ecx
;; size=50 bbWeight=1.98 PerfScore 37.12
-G_M56974_IG20: ; bbWeight=3.96, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rdx]
inc edi
cmp dword ptr [rbp-0x2C], edi
- jg SHORT G_M56974_IG21
+ jg SHORT G_M56974_IG17
mov eax, ecx
mov edi, r8d
mov r8, gword ptr [rbp+0x40]
; gcrRegs +[r8]
mov r9d, dword ptr [rbp-0x2C]
- jmp G_M56974_IG12
+ jmp G_M56974_IG08
;; size=25 bbWeight=3.96 PerfScore 30.69
-G_M56974_IG21: ; bbWeight=1.98, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
+G_M56974_IG17: ; bbWeight=1.98, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
mov eax, ecx
mov ecx, edi
mov edi, r8d
mov r8, gword ptr [rbp+0x40]
; gcrRegs +[r8]
- jmp G_M56974_IG16
+ jmp G_M56974_IG12
;; size=16 bbWeight=1.98 PerfScore 7.42
-G_M56974_IG22: ; bbWeight=0.99, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG18: ; bbWeight=0.99, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r8]
mov ecx, dword ptr [rbp+0x48]
- jmp SHORT G_M56974_IG20
...
coreclr_tests.run.linux.x64.checked.mch
+30 (+0.89%) : 392286.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,T08] ( 24, 17.03) 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,T57] ( 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,T19] ( 7, 8 ) int -> [rbp-0x3C]
@@ -246,7 +246,7 @@
; V234 cse2 [V234,T58] ( 3, 3 ) ref -> rsi "CSE - conservative"
; V235 cse3 [V235,T60] ( 3, 3 ) int -> rdx "CSE - conservative"
; V236 cse4 [V236,T59] ( 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,T20] ( 6, 8 ) ref -> registers class-hnd "replacement local" <<unknown class>>
;
@@ -453,7 +453,7 @@ G_M4730_IG15: ; bbWeight=1.00, gcVars=00000000000000300200000000040000 {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
jmp G_M4730_IG35
;; size=78 bbWeight=1.00 PerfScore 17.96
G_M4730_IG16: ; bbWeight=0.58, gcVars=00000000000000000200000002000000 {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_IG109
+ jne G_M4730_IG114
;; size=101 bbWeight=2 PerfScore 46.00
G_M4730_IG19: ; bbWeight=2, gcVars=00000000000000300200000000040000 {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=00000000000000300200000008040000 {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]
@@ -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_IG114
+ jne G_M4730_IG119
mov ecx, dword ptr [rbp-0x2C]
mov r12d, dword ptr [rbp-0x8C]
jmp G_M4730_IG04
@@ -1039,12 +1039,12 @@ G_M4730_IG60: ; bbWeight=1, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefReg
mov gword ptr [rbp-0xD8], r8
; GC ptr vars +{V20}
test r8, r8
- jne G_M4730_IG118
+ jne G_M4730_IG123
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=47 bbWeight=1 PerfScore 8.00
G_M4730_IG61: ; bbWeight=1, gcVars=00000000000000000200000000000000 {V04}, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
; gcrRegs -[rcx r8]
@@ -1060,7 +1060,7 @@ G_M4730_IG62: ; bbWeight=1, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=2
G_M4730_IG63: ; bbWeight=1, gcrefRegs=C048 {rbx rsi r14 r15}, byrefRegs=2000 {r13}, byref
; gcrRegs -[rcx]
test rsi, rsi
- je G_M4730_IG122
+ je G_M4730_IG127
mov rcx, rsi
; gcrRegs +[rcx]
jmp G_M4730_IG47
@@ -1070,7 +1070,7 @@ G_M4730_IG64: ; bbWeight=0.50, gcVars=00000000000000300200000000040000 {V
; GC ptr vars +{V12 V13 V18 V69 V157}
mov rsi, 0xD1FFAB1E ; System.String
cmp qword ptr [rcx], rsi
- jne G_M4730_IG117
+ jne G_M4730_IG122
jmp SHORT G_M4730_IG59
;; size=21 bbWeight=0.50 PerfScore 3.12
G_M4730_IG65: ; bbWeight=0.33, gcVars=00000000000000000200000000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=20C0 {rsi rdi r13}, gcvars, byref
@@ -1309,12 +1309,10 @@ G_M4730_IG86: ; bbWeight=0, gcVars=00000000000000100200000000000000 {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
@@ -1325,16 +1323,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]
@@ -1342,51 +1338,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
@@ -1399,47 +1392,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=00000000000000100200000000000000 {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=00000000000000100200000000000000 {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=00000000000000100200000000000000 {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
;; size=27 bbWeight=0 PerfScore 0.00
-G_M4730_IG99: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
+G_M4730_IG103: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
...
+30 (+0.89%) : 399269.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_IG111
+ jg G_M4730_IG116
jmp G_M4730_IG35
;; size=78 bbWeight=1.00 PerfScore 17.96
G_M4730_IG16: ; bbWeight=0.41, gcVars=00000000000000000800000004000000 {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=00000000000000300800000000040000 {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=00000000000000300800000010040000 {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=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_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=00000000000000000800000000000000 {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=00000000000000100800000000000000 {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=00000000000000100800000000000000 {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=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_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=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_IG106
+ jbe G_M4730_IG111
...
+34 (+1.07%) : 23782.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%) : 397847.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%) : 269895.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.crossgen2.linux.x64.checked.mch
-16 (-20.51%) : 98365.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint
@@ -8,9 +8,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=17 bbWeight=1 PerfScore 3.75
-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=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 78, prolog size 9, PerfScore 68.00, instruction count 24, allocated bytes for code 78 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 62, prolog size 9, PerfScore 57.52, instruction count 20, allocated bytes for code 62 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.linux.x64.checked.mch
-15 (-17.44%) : 104355.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
+30 (+0.79%) : 745583.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, 36.56) byref -> rbx this single-def
; V01 arg1 [V01,T38] ( 11, 3.73) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T08] ( 18, 19.33) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T08] ( 19, 19.33) 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,T57] ( 3, 3.09) ref -> [rbp-0xB8] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 47.72) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T18] ( 31, 12.80) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T37] ( 13, 5.79) int -> [rbp-0x34]
+; V05 loc1 [V05,T02] ( 67, 47.72) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T18] ( 34, 12.80) ushort -> [rbp-0x30]
+; V07 loc3 [V07,T37] ( 16, 5.79) int -> [rbp-0x34]
; V08 loc4 [V08,T51] ( 5, 4.65) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T28] ( 7, 8.36) int -> [rbp-0x3C]
@@ -283,7 +283,7 @@
; V271 cse3 [V271,T49] ( 3, 4.84) int -> rsi "CSE - conservative"
; V272 cse4 [V272,T48] ( 5, 4.85) int -> registers multi-def "CSE - conservative"
; V273 cse5 [V273,T74] ( 3, 1.42) int -> [rbp-0xA8] spill-single-def "CSE - conservative"
-; V274 cse6 [V274,T10] ( 18, 19.51) int -> [rbp-0xAC] spill-single-def "CSE - moderate"
+; V274 cse6 [V274,T10] ( 19, 19.51) int -> [rbp-0xAC] spill-single-def "CSE - moderate"
; V275 rat0 [V275,T13] ( 6, 16.71) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V276 rat1 [V276,T17] ( 6, 12.93) ref -> registers class-hnd "replacement local" <<unknown class>>
;
@@ -492,7 +492,7 @@ G_M36935_IG14: ; bbWeight=0.47, gcVars=00000000000000030200000000100000 {
add r10, qword ptr [rdx+8*rcx]
sar r10, 32
cmp r10d, dword ptr [rbp-0xA0]
- jg G_M36935_IG112
+ jg G_M36935_IG117
jmp G_M36935_IG36
;; size=85 bbWeight=0.47 PerfScore 8.95
G_M36935_IG15: ; bbWeight=1.09, gcVars=00000000000000000200000104000000 {V04 V78 V185}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
@@ -602,7 +602,7 @@ G_M36935_IG19: ; bbWeight=2.09, 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_IG109
+ jne G_M36935_IG114
;; size=95 bbWeight=2.09 PerfScore 45.96
G_M36935_IG20: ; bbWeight=2.09, gcVars=00000000000000030200000000100000 {V04 V12 V13 V177}, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs -[rdx]
@@ -699,7 +699,7 @@ G_M36935_IG29: ; bbWeight=0.47, gcVars=00000000000000030200008000100000 {
mov r8, gword ptr [rbp-0xD8]
; gcrRegs +[r8]
cmp qword ptr [r8], rdi
- jne G_M36935_IG115
+ jne G_M36935_IG120
add r8, 8
; gcrRegs -[r8]
; byrRegs +[r8]
@@ -920,7 +920,7 @@ G_M36935_IG45: ; bbWeight=0.47, 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_IG116
+ jne G_M36935_IG121
mov ecx, dword ptr [rbp-0x2C]
jmp G_M36935_IG05
;; size=39 bbWeight=0.47 PerfScore 5.78
@@ -1026,13 +1026,13 @@ G_M36935_IG54: ; bbWeight=1.62, gcrefRegs=C202 {rcx r9 r14 r15}, byrefReg
mov gword ptr [rbp-0xE0], rsi
; GC ptr vars +{V20}
test rsi, rsi
- jne G_M36935_IG118
+ jne G_M36935_IG123
test r9, r9
- je G_M36935_IG121
+ je G_M36935_IG126
mov rcx, 0xD1FFAB1E ; System.String
; gcrRegs -[rcx]
cmp qword ptr [r9], rcx
- jne G_M36935_IG122
+ jne G_M36935_IG127
;; size=47 bbWeight=1.62 PerfScore 12.93
G_M36935_IG55: ; bbWeight=1.62, gcVars=00000000000000000200000000000000 {V04}, gcrefRegs=C200 {r9 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs -[rsi]
@@ -1050,7 +1050,7 @@ G_M36935_IG57: ; bbWeight=1.62, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=20
test r8, r8
mov rcx, r8
; gcrRegs +[rcx]
- je G_M36935_IG123
+ je G_M36935_IG128
;; size=12 bbWeight=1.62 PerfScore 2.42
G_M36935_IG58: ; bbWeight=1.62, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2008 {rbx r13}, byref
; gcrRegs -[r8]
@@ -1072,7 +1072,7 @@ G_M36935_IG60: ; bbWeight=1.61, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2
; GC ptr vars +{V11}
sub edi, dword ptr [rcx+0x08]
cmp edx, edi
- jg G_M36935_IG114
+ jg G_M36935_IG119
;; size=30 bbWeight=1.61 PerfScore 13.72
G_M36935_IG61: ; bbWeight=1.61, gcVars=00000000000000000200000000000800 {V04 V11}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs -[rcx]
@@ -1123,7 +1123,7 @@ G_M36935_IG63: ; bbWeight=0.81, gcVars=00000000000000000200000000000000 {
; byrRegs -[rdx rsi]
; GC ptr vars -{V11 V165}
mov eax, dword ptr [rbp-0x2C]
- jmp G_M36935_IG124
+ jmp G_M36935_IG129
;; size=8 bbWeight=0.81 PerfScore 2.42
G_M36935_IG64: ; bbWeight=0.00, gcrefRegs=C002 {rcx r14 r15}, byrefRegs=2008 {rbx r13}, byref
cmp edi, dword ptr [rbx+0x18]
@@ -1360,12 +1360,10 @@ G_M36935_IG86: ; bbWeight=0, gcVars=00000000000000010200000000000000 {V04
mov dword ptr [rbp-0x3C], ecx
inc edx
cmp esi, edx
- jbe G_M36935_IG97
+ jbe G_M36935_IG98
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_IG87: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
lea edi, [rax-0x30]
cmp edi, 9
@@ -1379,13 +1377,11 @@ G_M36935_IG87: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
G_M36935_IG88: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
inc edx
cmp esi, edx
- jbe G_M36935_IG96
+ jbe G_M36935_IG97
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_IG89: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp eax, 32
mov ecx, dword ptr [rbp-0x3C]
@@ -1393,51 +1389,48 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
cmp eax, 44
- jne G_M36935_IG102
+ jne G_M36935_IG107
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG91: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx
cmp esi, edx
- jbe SHORT G_M36935_IG95
+ jbe SHORT G_M36935_IG96
mov eax, edx
movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
- cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG91
- mov eax, edi
cmp eax, 45
jne SHORT G_M36935_IG92
mov dword ptr [rbp-0x38], 1
inc edx
cmp esi, edx
- jbe SHORT G_M36935_IG94
+ jbe SHORT G_M36935_IG95
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_IG92: ; 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_IG93
+ jae SHORT G_M36935_IG94
inc edx
cmp esi, edx
- ja SHORT G_M36935_IG99
- mov ecx, edx
- jmp G_M36935_IG76
- ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG93
+ test edx, edx
+ jl SHORT G_M36935_IG103
+ jmp SHORT G_M36935_IG100
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG93: ; 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_IG75
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG94: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG76
;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG94: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp-0x2C], edx
+ jmp G_M36935_IG75
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG95: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG76
@@ -1450,47 +1443,77 @@ G_M36935_IG97: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG76
;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcVars=00000000000000010200000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, edx
+ jmp G_M36935_IG76
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG99: ; bbWeight=0, gcVars=00000000000000010200000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15]
; byrRegs +[rbx r13]
; GC ptr vars +{V04 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_IG101
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M36935_IG100: ; 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_IG106
+ cmp r9d, 0xD1FFAB1E
+ jl SHORT G_M36935_IG99
+ jmp SHORT G_M36935_IG104
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M36935_IG101: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r14-r15]
+ ; byrRegs -[rbx r13]
+ ; GC ptr vars -{V04 V177}
+ mov ecx, edx
+ jmp G_M36935_IG76
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG102: ; bbWeight=0, gcVars=00000000000000010200000000000000 {V04 V177}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+ ; gcrRegs +[r14-r15]
+ ; byrRegs +[rbx r13]
+ ; GC ptr vars +{V04 V177}
+ lea r9d, [r9+4*r9]
+ lea r9d, [rax+2*r9-0x30]
mov dword ptr [rbp-0x34], r9d
inc edx
cmp esi, edx
...
+30 (+0.79%) : 398881.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.22) byref -> rbx this single-def
; V01 arg1 [V01,T34] ( 11, 3.70) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T12] ( 18, 15.51) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T12] ( 19, 15.51) 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.55) ref -> [rbp-0xB8] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T07] ( 62, 35.89) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T20] ( 31, 9.32) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T40] ( 12, 4.41) int -> [rbp-0x34]
+; V05 loc1 [V05,T07] ( 67, 35.89) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T20] ( 34, 9.32) ushort -> [rbp-0x30]
+; V07 loc3 [V07,T40] ( 15, 4.41) int -> [rbp-0x34]
; V08 loc4 [V08,T53] ( 5, 3.36) 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.22) int -> [rbp-0x3C]
@@ -283,7 +283,7 @@
; V271 cse3 [V271,T49] ( 3, 3.90) int -> rsi "CSE - conservative"
; V272 cse4 [V272,T48] ( 5, 3.90) int -> registers multi-def "CSE - conservative"
; V273 cse5 [V273,T65] ( 3, 1.89) int -> r14 "CSE - conservative"
-; V274 cse6 [V274,T14] ( 18, 15.06) int -> [rbp-0xAC] spill-single-def "CSE - moderate"
+; V274 cse6 [V274,T14] ( 19, 15.06) int -> [rbp-0xAC] spill-single-def "CSE - moderate"
; V275 rat0 [V275,T17] ( 6, 12.43) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V276 rat1 [V276,T19] ( 6, 10.41) ref -> registers class-hnd "replacement local" <<unknown class>>
;
@@ -493,7 +493,7 @@ G_M36935_IG14: ; bbWeight=0.25, 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_IG45
;; size=85 bbWeight=0.25 PerfScore 4.80
G_M36935_IG15: ; bbWeight=0.78, gcVars=00000000000000000400000010000200 {V04 V78 V185}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
@@ -601,7 +601,7 @@ G_M36935_IG18: ; bbWeight=1.55, 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.55 PerfScore 34.19
G_M36935_IG19: ; bbWeight=1.55, 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.30, gcrefRegs=C200 {r9 r14 r15}, byrefRegs=20
G_M36935_IG25: ; bbWeight=0.65, 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.65 PerfScore 2.93
G_M36935_IG26: ; bbWeight=1.30, gcrefRegs=C202 {rcx r9 r14 r15}, byrefRegs=2008 {rbx r13}, byref
@@ -655,13 +655,13 @@ G_M36935_IG26: ; bbWeight=1.30, 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.30 PerfScore 10.41
G_M36935_IG27: ; bbWeight=1.30, 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.30, 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.30 PerfScore 1.95
G_M36935_IG30: ; bbWeight=1.30, 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.30, 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.30 PerfScore 11.04
G_M36935_IG32: ; bbWeight=1.30, gcVars=00000000000000000400000000008000 {V04 V11}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs -[rcx]
@@ -823,7 +823,7 @@ G_M36935_IG38: ; bbWeight=0.25, 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.25, 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.25 PerfScore 3.10
@@ -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]
...
+28 (+0.81%) : 636461.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,T08] ( 24, 12.19) ref -> r15 this class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T19] ( 12, 4.01) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T07] ( 18, 13.78) ref -> rbx class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 19, 13.78) 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,T48] ( 3, 2.40) ref -> [rbp-0xC8] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T04] ( 62, 31.35) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T13] ( 30, 8.38) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T34] ( 12, 3.80) int -> [rbp-0x34]
+; V05 loc1 [V05,T04] ( 67, 31.35) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T13] ( 33, 8.38) ushort -> [rbp-0x30]
+; V07 loc3 [V07,T34] ( 15, 3.80) int -> [rbp-0x34]
; V08 loc4 [V08,T37] ( 5, 3.19) 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, 5.59) int -> [rbp-0x3C]
@@ -250,7 +250,7 @@
; V238 cse3 [V238,T72] ( 3, 1.19) int -> [rbp-0xAC] spill-single-def "CSE - conservative"
; V239 cse4 [V239,T73] ( 3, 1.19) long -> [rbp-0xB8] spill-single-def "CSE - conservative"
; V240 cse5 [V240,T76] ( 3, 1.17) ref -> rcx "CSE - conservative"
-; V241 cse6 [V241,T10] ( 18, 13.18) int -> [rbp-0xBC] spill-single-def "CSE - moderate"
+; V241 cse6 [V241,T10] ( 19, 13.18) int -> [rbp-0xBC] spill-single-def "CSE - moderate"
; V242 rat0 [V242,T12] ( 5, 10.40) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V243 rat1 [V243,T15] ( 6, 8.05) ref -> rcx class-hnd "replacement local" <System.IFormattable>
;
@@ -569,7 +569,7 @@ G_M4730_IG20: ; bbWeight=1.40, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=20
mov gword ptr [rbp-0xE0], r9
; GC ptr vars +{V13}
cmp gword ptr [rbp-0xC8], 0
- jne G_M4730_IG114
+ jne G_M4730_IG119
;; size=94 bbWeight=1.40 PerfScore 30.74
G_M4730_IG21: ; bbWeight=1.40, gcVars=00000000000000180001000000020000 {V04 V12 V13 V160}, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
; gcrRegs -[rdx]
@@ -627,7 +627,7 @@ G_M4730_IG26: ; bbWeight=1.01, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs
G_M4730_IG27: ; 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_IG120
+ jne G_M4730_IG125
xor rcx, rcx
;; size=21 bbWeight=0.50 PerfScore 2.27
G_M4730_IG28: ; bbWeight=1.01, gcrefRegs=C20A {rcx rbx r9 r14 r15}, byrefRegs=2000 {r13}, byref
@@ -640,10 +640,10 @@ G_M4730_IG29: ; bbWeight=1, gcVars=00000000000000000001000000020000 {V04
; gcrRegs -[rcx]
; GC ptr vars -{V12 V20 V160}
test r9, r9
- je G_M4730_IG123
+ je G_M4730_IG128
mov rsi, 0xD1FFAB1E ; System.String
cmp qword ptr [r9], rsi
- jne G_M4730_IG124
+ jne G_M4730_IG129
;; size=28 bbWeight=1 PerfScore 5.50
G_M4730_IG30: ; bbWeight=1, gcVars=00000000000000000001000000000000 {V04}, gcrefRegs=C208 {rbx r9 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
; GC ptr vars -{V13}
@@ -655,7 +655,7 @@ G_M4730_IG31: ; bbWeight=1.01, gcrefRegs=C108 {rbx r8 r14 r15}, byrefRegs
test r8, r8
mov rcx, r8
; gcrRegs +[rcx]
- je G_M4730_IG125
+ je G_M4730_IG130
;; size=12 bbWeight=1.01 PerfScore 1.51
G_M4730_IG32: ; bbWeight=1.01, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=2000 {r13}, byref
; gcrRegs -[r8]
@@ -741,7 +741,7 @@ G_M4730_IG39: ; bbWeight=0.40, gcVars=00000000000000180001000800020000 {V
mov r8, 0xD1FFAB1E ; System.Int32
; gcrRegs -[r8]
cmp qword ptr [rcx], r8
- jne G_M4730_IG119
+ jne G_M4730_IG124
add rcx, 8
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -1015,7 +1015,7 @@ G_M4730_IG59: ; bbWeight=0.39, gcVars=00000000000000000001000000000000 {V
add esi, dword ptr [rbp-0x48]
mov dword ptr [r15+0x18], esi
cmp dword ptr [rbp-0x38], 0
- jne G_M4730_IG117
+ jne G_M4730_IG122
mov ecx, dword ptr [rbp-0x2C]
jmp G_M4730_IG04
;; size=72 bbWeight=0.39 PerfScore 8.50
@@ -1109,13 +1109,13 @@ G_M4730_IG70: ; bbWeight=0.01, gcVars=00000000000000180021000000000000 {V
; GC ptr vars +{V12 V20 V68 V160}
mov r8d, dword ptr [rbp-0x94]
test r8d, r8d
- jne G_M4730_IG121
+ jne G_M4730_IG126
;; size=16 bbWeight=0.01 PerfScore 0.02
G_M4730_IG71: ; bbWeight=0.01, gcVars=00000000000000080021000000000000 {V04 V12 V20}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
; GC ptr vars -{V68 V160}
mov rsi, 0xD1FFAB1E ; System.Int32
cmp qword ptr [rcx], rsi
- jne G_M4730_IG122
+ jne G_M4730_IG127
add rcx, 8
; gcrRegs -[rcx]
; byrRegs +[rcx]
@@ -1346,12 +1346,10 @@ G_M4730_IG91: ; bbWeight=0, gcVars=00000000000000100001000000000000 {V04
mov dword ptr [rbp-0x3C], ecx
inc edx
cmp esi, edx
- jbe G_M4730_IG102
+ jbe G_M4730_IG103
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_IG92: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
lea edi, [rax-0x30]
cmp edi, 9
@@ -1362,16 +1360,14 @@ G_M4730_IG92: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
cmp eax, 32
jne SHORT G_M4730_IG95
;; size=24 bbWeight=0 PerfScore 0.00
-G_M4730_IG93: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+G_M4730_IG93: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc edx
cmp esi, edx
- jbe G_M4730_IG101
+ jbe SHORT G_M4730_IG102
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_IG94: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp eax, 32
mov ecx, dword ptr [rbp-0x3C]
@@ -1379,51 +1375,48 @@ G_M4730_IG94: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
;; size=8 bbWeight=0 PerfScore 0.00
G_M4730_IG95: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
cmp eax, 44
- jne G_M4730_IG107
+ jne G_M4730_IG112
;; size=9 bbWeight=0 PerfScore 0.00
G_M4730_IG96: ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc edx
cmp esi, edx
- jbe SHORT G_M4730_IG100
+ jbe SHORT G_M4730_IG101
mov eax, edx
movzx rax, word ptr [rbx+2*rax+0x0C]
- mov edi, eax
- cmp edi, 32
+ cmp eax, 32
je SHORT G_M4730_IG96
- mov eax, edi
cmp eax, 45
jne SHORT G_M4730_IG97
mov dword ptr [rbp-0x38], 1
inc edx
cmp esi, edx
- jbe SHORT G_M4730_IG99
+ jbe SHORT G_M4730_IG100
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_IG97: ; 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_IG98
+ jae SHORT G_M4730_IG99
inc edx
cmp esi, edx
- ja SHORT G_M4730_IG104
- mov ecx, edx
- jmp G_M4730_IG80
- ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M4730_IG98
+ test edx, edx
+ jl SHORT G_M4730_IG108
+ jmp SHORT G_M4730_IG105
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M4730_IG98: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx r14-r15]
; byrRegs -[r13]
; GC ptr vars -{V04 V68 V160}
- mov dword ptr [rbp-0x2C], edx
- jmp G_M4730_IG79
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M4730_IG99: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M4730_IG80
;; size=7 bbWeight=0 PerfScore 0.00
+G_M4730_IG99: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp-0x2C], edx
+ jmp G_M4730_IG79
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M4730_IG100: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M4730_IG80
@@ -1436,47 +1429,77 @@ G_M4730_IG102: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M4730_IG80
;; size=7 bbWeight=0 PerfScore 0.00
-G_M4730_IG103: ; bbWeight=0, gcVars=00000000000000100001000000000000 {V04 V160}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+G_M4730_IG103: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, edx
+ jmp G_M4730_IG80
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M4730_IG104: ; bbWeight=0, gcVars=00000000000000100001000000000000 {V04 V160}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
; gcrRegs +[rbx r14-r15]
; byrRegs +[r13]
; GC ptr vars +{V04 V68 V160}
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_IG106
+ ;; size=15 bbWeight=0 PerfScore 0.00
+G_M4730_IG105: ; 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_IG111
+ cmp r9d, 0xD1FFAB1E
+ jl SHORT G_M4730_IG104
+ jmp SHORT G_M4730_IG109
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M4730_IG106: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx r14-r15]
+ ; byrRegs -[r13]
+ ; GC ptr vars -{V04 V68 V160}
+ mov ecx, edx
+ jmp G_M4730_IG80
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M4730_IG107: ; bbWeight=0, gcVars=00000000000000100001000000000000 {V04 V160}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+ ; gcrRegs +[rbx r14-r15]
+ ; byrRegs +[r13]
+ ; GC ptr vars +{V04 V68 V160}
+ 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_IG112
...
+49 (+1.65%) : 685943.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,T29] ( 8, 3.77) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 17.30) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 17.30) 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.83) ref -> [rbp-0x88] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61, 39.60) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T10] ( 31, 11.00) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T33] ( 13, 5.40) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 66, 39.60) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T10] ( 34, 11.00) ushort -> [rbp-0x30]
+; V07 loc3 [V07,T33] ( 16, 5.40) int -> [rbp-0x34]
; V08 loc4 [V08,T45] ( 5, 3.76) 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.33) int -> [rbp-0x3C]
@@ -184,7 +184,7 @@
; V172 cse2 [V172,T35] ( 3, 5.20) int -> r8 "CSE - moderate"
; V173 cse3 [V173,T34] ( 5, 5.21) int -> rcx multi-def "CSE - moderate"
; V174 cse4 [V174,T62] ( 3, 1.39) int -> r14 "CSE - conservative"
-; V175 cse5 [V175,T04] ( 18, 17.13) int -> [rbp-0x78] spill-single-def "CSE - aggressive"
+; V175 cse5 [V175,T04] ( 19, 17.13) int -> [rbp-0x78] spill-single-def "CSE - aggressive"
; V176 cse6 [V176,T09] ( 14, 12.16) int -> [rbp-0x7C] "CSE - moderate"
; V177 cse7 [V177,T32] ( 3, 5.50) int -> rdi "CSE - moderate"
; V178 rat0 [V178,T05] ( 6, 14.67) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
@@ -479,7 +479,7 @@ G_M36935_IG17: ; bbWeight=1.83, 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_IG105
+ jne G_M36935_IG110
;; size=47 bbWeight=1.83 PerfScore 17.42
G_M36935_IG18: ; bbWeight=1.83, gcVars=00000000000000000904000000002000 {V04 V12 V13 V116}, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
test rsi, rsi
@@ -530,7 +530,7 @@ G_M36935_IG23: ; bbWeight=1.74, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=20
G_M36935_IG24: ; bbWeight=0.87, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, byref
mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [rsi], rdi
- jne G_M36935_IG109
+ jne G_M36935_IG114
xor rsi, rsi
;; size=21 bbWeight=0.87 PerfScore 3.91
G_M36935_IG25: ; bbWeight=1.74, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, byref
@@ -575,7 +575,7 @@ G_M36935_IG30: ; bbWeight=1.73, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2
mov dword ptr [rbp-0x7C], edi
sub edx, edi
cmp edx, ecx
- jl G_M36935_IG108
+ jl G_M36935_IG113
;; size=19 bbWeight=1.73 PerfScore 9.54
G_M36935_IG31: ; bbWeight=1.73, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea rdx, bword ptr [rbx+0x10]
@@ -734,7 +734,7 @@ G_M36935_IG41: ; bbWeight=0.10, 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_IG110
+ jne G_M36935_IG115
mov ecx, dword ptr [rbp-0x2C]
jmp G_M36935_IG05
;; size=39 bbWeight=0.10 PerfScore 1.17
@@ -889,8 +889,8 @@ G_M36935_IG54: ; bbWeight=0, gcVars=00000000000000000904800000000000 {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_IG56
mov rcx, gword ptr [rbp-0x98]
; gcrRegs +[rcx]
@@ -899,6 +899,7 @@ G_M36935_IG54: ; bbWeight=0, gcVars=00000000000000000904800000000000 {V04
jne SHORT G_M36935_IG55
mov rdi, bword ptr [rbp-0xE8]
; byrRegs +[rdi]
+ mov esi, r8d
; GC ptr vars -{V12 V116}
call <unknown method>
; gcrRegs -[rcx r11] +[rax]
@@ -910,7 +911,7 @@ G_M36935_IG54: ; bbWeight=0, gcVars=00000000000000000904800000000000 {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_IG55: ; bbWeight=0, gcrefRegs=C802 {rcx r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref
; gcrRegs -[rax rsi]
mov rdi, r11
@@ -1214,12 +1215,10 @@ G_M36935_IG82: ; bbWeight=0, gcVars=00000000000000000104000000000000 {V04
mov dword ptr [rbp-0x3C], ecx
inc edx
cmp esi, edx
- jbe G_M36935_IG93
+ jbe G_M36935_IG94
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_IG83: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
lea edi, [rax-0x30]
cmp edi, 9
@@ -1230,16 +1229,14 @@ G_M36935_IG83: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
cmp eax, 32
jne SHORT G_M36935_IG86
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG84: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG84: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx
cmp esi, edx
- jbe G_M36935_IG92
+ jbe SHORT G_M36935_IG93
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_IG85: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp eax, 32
mov ecx, dword ptr [rbp-0x3C]
@@ -1247,50 +1244,47 @@ G_M36935_IG85: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG86: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
cmp eax, 44
- jne G_M36935_IG98
+ jne G_M36935_IG103
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx
cmp esi, edx
- jbe SHORT G_M36935_IG91
+ jbe SHORT G_M36935_IG92
mov eax, edx
movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
- cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG87
- mov eax, edi
cmp eax, 45
jne SHORT G_M36935_IG88
mov dword ptr [rbp-0x38], 1
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
- mov eax, edi
- ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG88: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
add eax, -48
cmp eax, 10
- jae SHORT G_M36935_IG89
+ jae SHORT G_M36935_IG90
inc edx
cmp esi, edx
- ja SHORT G_M36935_IG95
- mov ecx, edx
- jmp G_M36935_IG70
- ;; size=21 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG89
+ test edx, edx
+ jl SHORT G_M36935_IG99
+ jmp SHORT G_M36935_IG96
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG89: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r13]
; GC ptr vars -{V04 V116}
- mov dword ptr [rbp-0x2C], edx
- jmp G_M36935_IG69
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG90: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG70
;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG90: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp-0x2C], edx
+ jmp G_M36935_IG69
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG91: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG70
@@ -1303,43 +1297,77 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG70
;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG94: ; bbWeight=0, gcVars=00000000000000000104000000000000 {V04 V116}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG94: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, edx
+ jmp G_M36935_IG70
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000000104000000000000 {V04 V116}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15]
; byrRegs +[rbx r13]
; GC ptr vars +{V04 V116}
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_IG103
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jbe SHORT G_M36935_IG97
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M36935_IG96: ; 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_IG102
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG95
+ jmp SHORT G_M36935_IG100
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r14-r15]
+ ; byrRegs -[rbx r13]
+ ; GC ptr vars -{V04 V116}
+ mov ecx, edx
+ jmp G_M36935_IG70
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG98: ; bbWeight=0, gcVars=00000000000000000104000000000000 {V04 V116}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+ ; gcrRegs +[r14-r15]
+ ; byrRegs +[rbx r13]
+ ; GC ptr vars +{V04 V116}
+ lea eax, [rax+4*rax]
+ lea eax, [r9+2*rax-0x30]
+ inc edx
+ cmp esi, edx
+ jbe G_M36935_IG108
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M36935_IG99: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, esi
jae G_M36935_IG76
- mov edi, edx
- movzx rdi, word ptr [r15+2*rdi+0x0C]
- lea r9d, [rdi-0x30]
- cmp r9d, 9
- ja SHORT G_M36935_IG97
...
+49 (+1.65%) : 111825.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, 31.02) byref -> rbx this single-def
; V01 arg1 [V01,T29] ( 8, 3.77) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 16.36) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 16.36) 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,T53] ( 3, 2.69) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61, 36.85) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T10] ( 31, 10.13) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T33] ( 13, 4.97) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 66, 36.85) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T10] ( 34, 10.13) ushort -> [rbp-0x30]
+; V07 loc3 [V07,T33] ( 16, 4.97) int -> [rbp-0x34]
; V08 loc4 [V08,T46] ( 5, 3.48) 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, 6.75) int -> [rbp-0x3C]
@@ -184,7 +184,7 @@
; V172 cse2 [V172,T35] ( 3, 4.76) int -> r8 "CSE - moderate"
; V173 cse3 [V173,T34] ( 5, 4.77) int -> registers multi-def "CSE - moderate"
; V174 cse4 [V174,T60] ( 3, 1.62) int -> r14 "CSE - conservative"
-; V175 cse5 [V175,T04] ( 18, 16.05) int -> [rbp-0x74] spill-single-def "CSE - aggressive"
+; V175 cse5 [V175,T04] ( 19, 16.05) int -> [rbp-0x74] spill-single-def "CSE - aggressive"
; V176 cse6 [V176,T09] ( 14, 11.12) int -> [rbp-0x78] "CSE - moderate"
; V177 cse7 [V177,T32] ( 3, 5.07) int -> rdi "CSE - moderate"
; V178 rat0 [V178,T05] ( 6, 13.51) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
@@ -479,7 +479,7 @@ G_M36935_IG17: ; bbWeight=1.69, 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_IG100
+ jne G_M36935_IG105
;; size=44 bbWeight=1.69 PerfScore 16.04
G_M36935_IG18: ; bbWeight=1.69, gcVars=00000000000000000C20000000002000 {V04 V12 V13 V116}, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
test rsi, rsi
@@ -530,7 +530,7 @@ G_M36935_IG23: ; bbWeight=1.59, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=20
G_M36935_IG24: ; bbWeight=0.80, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, byref
mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [rsi], rdi
- jne G_M36935_IG104
+ jne G_M36935_IG109
xor rsi, rsi
;; size=21 bbWeight=0.80 PerfScore 3.58
G_M36935_IG25: ; bbWeight=1.59, gcrefRegs=C140 {rsi r8 r14 r15}, byrefRegs=2008 {rbx r13}, byref
@@ -539,9 +539,9 @@ G_M36935_IG25: ; bbWeight=1.59, gcrefRegs=C140 {rsi r8 r14 r15}, byrefReg
mov gword ptr [rbp-0xA8], r11
; GC ptr vars +{V20}
test r11, r11
- jne G_M36935_IG108
+ jne G_M36935_IG113
test r8, r8
- je G_M36935_IG111
+ je G_M36935_IG116
mov rdi, 0xD1FFAB1E ; System.String
cmp qword ptr [r8], rdi
jne G_M36935_IG53
@@ -576,7 +576,7 @@ G_M36935_IG30: ; bbWeight=1.59, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2
mov dword ptr [rbp-0x78], ecx
sub edi, ecx
cmp edi, edx
- jl G_M36935_IG103
+ jl G_M36935_IG108
;; size=22 bbWeight=1.59 PerfScore 9.13
G_M36935_IG31: ; bbWeight=1.59, gcrefRegs=C040 {rsi r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea rdi, bword ptr [rbx+0x10]
@@ -706,7 +706,7 @@ G_M36935_IG36: ; bbWeight=0.10, gcVars=00000000000000000C20200000002000 {
mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
cmp qword ptr [rax], r8
- jne G_M36935_IG107
+ jne G_M36935_IG112
cmp dword ptr [rax+0x10], -1
je G_M36935_IG50
;; size=141 bbWeight=0.10 PerfScore 3.17
@@ -736,7 +736,7 @@ G_M36935_IG40: ; bbWeight=0.10, 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_IG105
+ jne G_M36935_IG110
mov ecx, dword ptr [rbp-0x2C]
jmp G_M36935_IG05
;; size=39 bbWeight=0.10 PerfScore 1.20
@@ -1138,12 +1138,10 @@ G_M36935_IG77: ; bbWeight=0, gcVars=00000000000000000820000000000000 {V04
mov dword ptr [rbp-0x3C], ecx
inc edx
cmp esi, edx
- jbe G_M36935_IG88
+ jbe G_M36935_IG89
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_IG78: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
lea edi, [rax-0x30]
cmp edi, 9
@@ -1154,16 +1152,14 @@ G_M36935_IG78: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
cmp eax, 32
jne SHORT G_M36935_IG81
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG79: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG79: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx
cmp esi, edx
- jbe G_M36935_IG87
+ jbe SHORT G_M36935_IG88
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_IG80: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp eax, 32
mov ecx, dword ptr [rbp-0x3C]
@@ -1171,50 +1167,47 @@ G_M36935_IG80: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG81: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
cmp eax, 44
- jne G_M36935_IG93
+ jne G_M36935_IG98
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG82: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx
cmp esi, edx
- jbe SHORT G_M36935_IG86
+ jbe SHORT G_M36935_IG87
mov eax, edx
movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
- cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG82
- mov eax, edi
cmp eax, 45
jne SHORT G_M36935_IG83
mov dword ptr [rbp-0x38], 1
inc edx
cmp esi, edx
- jbe SHORT G_M36935_IG85
+ jbe SHORT G_M36935_IG86
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_IG83: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
add eax, -48
cmp eax, 10
- jae SHORT G_M36935_IG84
+ jae SHORT G_M36935_IG85
inc edx
cmp esi, edx
- ja SHORT G_M36935_IG90
- mov ecx, edx
- jmp G_M36935_IG65
- ;; size=21 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG84
+ test edx, edx
+ jl SHORT G_M36935_IG94
+ jmp SHORT G_M36935_IG91
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG84: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r13]
; GC ptr vars -{V04 V59 V116}
- mov dword ptr [rbp-0x2C], edx
- jmp G_M36935_IG64
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG85: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG65
;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG85: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp-0x2C], edx
+ jmp G_M36935_IG64
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG86: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG65
@@ -1227,43 +1220,77 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG65
;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG89: ; bbWeight=0, gcVars=00000000000000000820000000000000 {V04 V116}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG89: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, edx
+ jmp G_M36935_IG65
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG90: ; bbWeight=0, gcVars=00000000000000000820000000000000 {V04 V116}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
; gcrRegs +[r14-r15]
; byrRegs +[rbx r13]
; GC ptr vars +{V04 V59 V116}
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_IG98
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M36935_IG90: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jbe SHORT G_M36935_IG92
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M36935_IG91: ; 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_IG97
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG90
+ jmp SHORT G_M36935_IG95
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M36935_IG92: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[r14-r15]
+ ; byrRegs -[rbx r13]
+ ; GC ptr vars -{V04 V59 V116}
+ mov ecx, edx
+ jmp G_M36935_IG65
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG93: ; bbWeight=0, gcVars=00000000000000000820000000000000 {V04 V116}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+ ; gcrRegs +[r14-r15]
+ ; byrRegs +[rbx r13]
+ ; GC ptr vars +{V04 V59 V116}
+ lea eax, [rax+4*rax]
+ lea eax, [r9+2*rax-0x30]
+ inc edx
+ cmp esi, edx
+ jbe G_M36935_IG103
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M36935_IG94: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, esi
jae G_M36935_IG71
- mov edi, edx
- movzx rdi, word ptr [r15+2*rdi+0x0C]
- lea r9d, [rdi-0x30]
- cmp r9d, 9
- ja SHORT G_M36935_IG92
+ mov r9d, edx
+ movzx r9, word ptr [r15+2*r9+0x0C]
+ lea edi, [r9-0x30]
+ cmp edi, 9
+ ja SHORT G_M36935_IG97
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG89
...
+49 (+1.72%) : 73630.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.69) byref -> rbx this single-def
; V01 arg1 [V01,T28] ( 8, 3.12) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 13.58) ref -> r15 class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 13.58) 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.24) ref -> [rbp-0x80] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 29.85) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T12] ( 31, 7.45) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T44] ( 13, 3.61) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 67, 29.85) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T12] ( 34, 7.45) ushort -> [rbp-0x30]
+; V07 loc3 [V07,T44] ( 16, 3.61) int -> [rbp-0x34]
; V08 loc4 [V08,T51] ( 5, 2.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,T29] ( 7, 4.97) int -> [rbp-0x3C]
@@ -180,7 +180,7 @@
; V168 cse2 [V168,T48] ( 3, 3.36) int -> r8 "CSE - conservative"
; V169 cse3 [V169,T47] ( 5, 3.36) int -> registers multi-def "CSE - conservative"
; V170 cse4 [V170,T50] ( 3, 2.64) int -> r14 "CSE - conservative"
-; V171 cse5 [V171,T04] ( 18, 12.82) int -> [rbp-0x74] spill-single-def "CSE - moderate"
+; V171 cse5 [V171,T04] ( 19, 12.82) int -> [rbp-0x74] spill-single-def "CSE - moderate"
; V172 cse6 [V172,T11] ( 14, 7.87) int -> [rbp-0x78] "CSE - moderate"
; V173 rat0 [V173,T06] ( 6, 9.94) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V174 rat1 [V174,T09] ( 6, 8.97) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -460,7 +460,7 @@ G_M36935_IG15: ; bbWeight=1.24, 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_IG86
+ jne G_M36935_IG91
;; size=44 bbWeight=1.24 PerfScore 11.80
G_M36935_IG16: ; bbWeight=1.24, gcVars=00000000000000000C10000000010000 {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.12, gcrefRegs=C100 {r8 r14 r15}, byrefRegs=20
G_M36935_IG22: ; bbWeight=0.56, gcrefRegs=C900 {r8 r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref
mov rsi, 0xD1FFAB1E ; System.String
cmp qword ptr [r11], rsi
- jne G_M36935_IG89
+ jne G_M36935_IG94
xor r11, r11
;; size=22 bbWeight=0.56 PerfScore 2.52
G_M36935_IG23: ; bbWeight=1.12, gcrefRegs=C900 {r8 r11 r14 r15}, byrefRegs=2008 {rbx r13}, byref
@@ -520,12 +520,12 @@ G_M36935_IG23: ; bbWeight=1.12, gcrefRegs=C900 {r8 r11 r14 r15}, byrefReg
mov gword ptr [rbp-0xA8], rdi
; GC ptr vars +{V20}
test rdi, rdi
- jne G_M36935_IG93
+ jne G_M36935_IG98
test r8, r8
- je G_M36935_IG96
+ je G_M36935_IG101
mov rsi, 0xD1FFAB1E ; System.String
cmp qword ptr [r8], rsi
- jne G_M36935_IG97
+ jne G_M36935_IG102
;; size=47 bbWeight=1.12 PerfScore 8.97
G_M36935_IG24: ; bbWeight=1.12, 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.12, gcVars=00000000000000000010000000000000 {
G_M36935_IG25: ; bbWeight=1.12, 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.12 PerfScore 1.40
G_M36935_IG26: ; bbWeight=1.12, 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.56, gcVars=00000000000000000010000000000000 {
; byrRegs -[rdx rsi]
; GC ptr vars -{V100}
mov eax, dword ptr [rbp-0x2C]
- jmp G_M36935_IG99
+ jmp G_M36935_IG104
;; size=8 bbWeight=0.56 PerfScore 1.68
G_M36935_IG32: ; bbWeight=0.62, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi r14-r15]
@@ -764,7 +764,7 @@ G_M36935_IG42: ; bbWeight=0.12, gcVars=00000000000000000C12000000010000 {
mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
cmp qword ptr [rax], r8
- jne G_M36935_IG92
+ jne G_M36935_IG97
mov gword ptr [rsp], r14
; gcr arg write
mov r8, bword ptr [rbp-0xD8]
@@ -787,7 +787,7 @@ G_M36935_IG43: ; bbWeight=0.12, 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_IG90
+ jne G_M36935_IG95
mov ecx, dword ptr [rbp-0x2C]
jmp G_M36935_IG04
;; size=39 bbWeight=0.12 PerfScore 1.48
@@ -962,12 +962,10 @@ G_M36935_IG63: ; bbWeight=0, gcVars=00000000000000000410000000000000 {V04
mov dword ptr [rbp-0x3C], ecx
inc edx
cmp esi, edx
- jbe G_M36935_IG74
+ jbe G_M36935_IG75
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_IG64: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
lea edi, [rax-0x30]
cmp edi, 9
@@ -978,16 +976,14 @@ G_M36935_IG64: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
cmp eax, 32
jne SHORT G_M36935_IG67
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG65: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG65: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx
cmp esi, edx
- jbe G_M36935_IG73
+ jbe SHORT G_M36935_IG74
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_IG66: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp eax, 32
mov ecx, dword ptr [rbp-0x3C]
@@ -995,50 +991,47 @@ G_M36935_IG66: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG67: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
cmp eax, 44
- jne G_M36935_IG79
+ jne G_M36935_IG84
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG68: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc edx
cmp esi, edx
- jbe SHORT G_M36935_IG72
+ jbe SHORT G_M36935_IG73
mov eax, edx
movzx rax, word ptr [r15+2*rax+0x0C]
- mov edi, eax
- cmp edi, 32
+ cmp eax, 32
je SHORT G_M36935_IG68
- mov eax, edi
cmp eax, 45
jne SHORT G_M36935_IG69
mov dword ptr [rbp-0x38], 1
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
- mov eax, edi
- ;; size=53 bbWeight=0 PerfScore 0.00
+ ;; size=45 bbWeight=0 PerfScore 0.00
G_M36935_IG69: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
add eax, -48
cmp eax, 10
- jae SHORT G_M36935_IG70
+ jae SHORT G_M36935_IG71
inc edx
cmp esi, edx
- ja SHORT G_M36935_IG76
- mov ecx, edx
- jmp G_M36935_IG51
- ;; size=21 bbWeight=0 PerfScore 0.00
+ jbe SHORT G_M36935_IG70
+ test edx, edx
+ jl SHORT G_M36935_IG80
+ jmp SHORT G_M36935_IG77
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG70: ; 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_IG50
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG71: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG51
;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG71: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov dword ptr [rbp-0x2C], edx
+ jmp G_M36935_IG50
+ ;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG72: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG51
@@ -1051,43 +1044,77 @@ G_M36935_IG74: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov ecx, edx
jmp G_M36935_IG51
;; size=7 bbWeight=0 PerfScore 0.00
-G_M36935_IG75: ; bbWeight=0, gcVars=00000000000000000410000000000000 {V04 V112}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
+G_M36935_IG75: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, edx
+ jmp G_M36935_IG51
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG76: ; 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_IG84
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M36935_IG76: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
+ jbe SHORT G_M36935_IG78
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M36935_IG77: ; 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_IG83
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG76
+ jmp SHORT G_M36935_IG81
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M36935_IG78: ; 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_IG51
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M36935_IG79: ; 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_IG89
+ ;; size=18 bbWeight=0 PerfScore 0.00
+G_M36935_IG80: ; bbWeight=0, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, esi
...
librariestestsnotieredcompilation.run.linux.x64.Release.mch
+0 (0.00%) : 131412.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%) : 2459.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%) : 2222.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
...
smoke_tests.nativeaot.linux.x64.checked.mch
-22 (-1.10%) : 4300.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T04] ( 17, 87.50) ref -> r15 this class-hnd exact single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T24] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 20,127 ) ref -> rbx class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T02] ( 19,127 ) ref -> rbx class-hnd exact 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,T46] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T05] ( 12, 74 ) int -> [rbp-0x34]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [rbp-0x2C] ld-addr-op
+; V06 loc2 [V06,T01] ( 33,260 ) ushort -> [rbp-0x30]
+; V07 loc3 [V07,T05] ( 15, 74 ) int -> [rbp-0x34]
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [rbp-0x38]
;* 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 -> [rbp-0x3C]
@@ -134,7 +134,7 @@
; V124 cse1 [V124,T31] ( 3, 12 ) ref -> r8 "CSE - conservative"
; V125 cse2 [V125,T34] ( 3, 12 ) int -> rsi "CSE - conservative"
; V126 cse3 [V126,T32] ( 3, 12 ) ref -> rdi "CSE - conservative"
-; V127 cse4 [V127,T02] ( 20,142 ) int -> [rbp-0x60] spill-single-def "CSE - aggressive"
+; V127 cse4 [V127,T03] ( 19,126.16) int -> [rbp-0x60] spill-single-def "CSE - aggressive"
; V128 cse5 [V128,T06] ( 6, 60 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 152
@@ -160,7 +160,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 rbx, rbx
- je G_M4730_IG67
+ je G_M4730_IG68
test r14, r14
jne SHORT G_M4730_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -228,7 +228,7 @@ G_M4730_IG10: ; bbWeight=8, gcVars=0000400000000000 {V04}, gcrefRegs=C008
mov edx, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x60], edx
cmp edx, ecx
- jbe G_M4730_IG62
+ jbe G_M4730_IG63
;; size=14 bbWeight=8 PerfScore 34.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov edi, ecx
@@ -271,9 +271,9 @@ G_M4730_IG13: ; 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_IG64
+ jl G_M4730_IG65
cmp eax, dword ptr [rbp-0x5C]
- ja G_M4730_IG74
+ ja G_M4730_IG75
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, bword ptr [rbp-0xB0]
@@ -288,12 +288,12 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x60]
cmp ecx, eax
- jae G_M4730_IG66
+ jae G_M4730_IG67
mov edi, ecx
movzx rdx, word ptr [rbx+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M4730_IG70
+ jbe G_M4730_IG71
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [rbx+2*rdi+0x0C]
@@ -311,9 +311,9 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
mov ecx, eax
jmp G_M4730_IG10
;; size=153 bbWeight=4 PerfScore 129.00
-G_M4730_IG14: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+G_M4730_IG14: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp edx, 123
- jne G_M4730_IG68
+ jne G_M4730_IG69
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -327,12 +327,12 @@ G_M4730_IG14: ; 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_IG66
+ jae G_M4730_IG67
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [rbx+2*rdi+0x0C], 123
- je G_M4730_IG21
- ;; size=70 bbWeight=4 PerfScore 58.00
+ je SHORT G_M4730_IG16
+ ;; size=66 bbWeight=4 PerfScore 58.00
G_M4730_IG15: ; bbWeight=2, gcVars=0000400004000000 {V04 V85}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
; byrRegs -[r10]
mov dword ptr [rbp-0x30], r8d
@@ -344,212 +344,201 @@ G_M4730_IG15: ; bbWeight=2, gcVars=0000400004000000 {V04 V85}, gcrefRegs=
; gcrRegs -[rsi rdi]
; gcr arg pop 0
mov r8d, dword ptr [rbp-0x30]
- mov r10, bword ptr [rbp-0xA8]
- ; byrRegs +[r10]
- ;; size=34 bbWeight=2 PerfScore 10.00
-G_M4730_IG16: ; bbWeight=4, gcVars=0000400000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V85}
+ ;; size=27 bbWeight=2 PerfScore 8.00
+G_M4730_IG16: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov dword ptr [rbp-0x30], r8d
cmp r8d, 123
jne SHORT G_M4730_IG18
;; size=10 bbWeight=4 PerfScore 9.00
-G_M4730_IG17: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref
- mov bword ptr [rbp-0xA8], r10
- ; GC ptr vars +{V85}
+G_M4730_IG17: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rsi rdi]
- ; byrRegs -[r10]
; gcr arg pop 0
- mov r10, bword ptr [rbp-0xA8]
- ; byrRegs +[r10]
- ;; size=33 bbWeight=2 PerfScore 8.00
-G_M4730_IG18: ; bbWeight=4, gcVars=0000400000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V85}
+ ;; size=19 bbWeight=2 PerfScore 4.00
+G_M4730_IG18: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov r8d, dword ptr [rbp-0x30]
lea esi, [r8-0x30]
cmp esi, 10
- jae SHORT G_M4730_IG20
+ jae SHORT G_M4730_IG21
mov ecx, dword ptr [rbp-0x2C]
inc ecx
mov eax, dword ptr [rbp-0x60]
cmp eax, ecx
- jbe G_M4730_IG70
+ jbe G_M4730_IG71
mov r8d, ecx
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 125
- je G_M4730_IG41
- ;; size=48 bbWeight=4 PerfScore 39.00
-G_M4730_IG19: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref, isz
+ je SHORT G_M4730_IG20
+ ;; size=44 bbWeight=4 PerfScore 39.00
+G_M4730_IG19: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
jmp SHORT G_M4730_IG23
;; size=2 bbWeight=2 PerfScore 4.00
-G_M4730_IG20: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M4730_IG20: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+ mov r10, bword ptr [rbp-0xA8]
+ ; byrRegs +[r10]
+ jmp G_M4730_IG42
+ ;; size=12 bbWeight=2 PerfScore 6.00
+G_M4730_IG21: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx r14-r15]
; byrRegs -[r10 r13]
- ; GC ptr vars -{V04}
+ ; GC ptr vars -{V04 V85}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M4730_IG69
+ jmp G_M4730_IG70
;; size=8 bbWeight=2 PerfScore 6.00
-G_M4730_IG21: ; bbWeight=2, gcVars=0000400004000000 {V04 V85}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
+G_M4730_IG22: ; bbWeight=8, gcVars=0000400004000000 {V04 V85}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
; gcrRegs +[rbx r14-r15]
; byrRegs +[r13]
; GC ptr vars +{V04 V85}
- mov r10, bword ptr [rbp-0xA8]
- ; byrRegs +[r10]
- jmp SHORT G_M4730_IG16
- ;; size=9 bbWeight=2 PerfScore 6.00
-G_M4730_IG22: ; bbWeight=8, gcVars=0000400000000000 {V04}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, gcvars, byref
- ; GC ptr vars -{V85}
lea esi, [rsi+4*rsi]
lea esi, [r8+2*rsi-0x30]
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M4730_IG70
+ jbe G_M4730_IG71
mov r8d, ecx
movzx r8, word ptr [rbx+2*r8+0x0C]
mov esi, dword ptr [rbp-0x3C]
;; size=33 bbWeight=8 PerfScore 58.00
-G_M4730_IG23: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref, isz
+G_M4730_IG23: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
lea edi, [r8-0x30]
cmp edi, 9
ja SHORT G_M4730_IG24
cmp esi, 0xD1FFAB1E
jl SHORT G_M4730_IG22
;; size=17 bbWeight=16 PerfScore 48.00
-G_M4730_IG24: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref, isz
+G_M4730_IG24: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
cmp r8d, 32
- jne SHORT G_M4730_IG28
- test ecx, ecx
- jl SHORT G_M4730_IG27
- ;; size=10 bbWeight=2 PerfScore 5.00
-G_M4730_IG25: ; bbWeight=15.84, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref, isz
+ jne SHORT G_M4730_IG26
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M4730_IG25: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG70
+ jbe G_M4730_IG71
mov r8d, ecx
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M4730_IG25
- ;; size=25 bbWeight=15.84 PerfScore 79.20
-G_M4730_IG26: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref, isz
- jmp SHORT G_M4730_IG28
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M4730_IG27: ; bbWeight=0.16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref, isz
+ ;; size=25 bbWeight=16 PerfScore 80.00
+G_M4730_IG26: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+ cmp r8d, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M4730_IG37
+ ;; size=13 bbWeight=2 PerfScore 4.50
+G_M4730_IG27: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG70
+ jbe G_M4730_IG71
mov r8d, ecx
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M4730_IG27
- ;; size=25 bbWeight=0.16 PerfScore 0.80
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref
- cmp r8d, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M4730_IG35
- ;; size=13 bbWeight=2 PerfScore 4.50
-G_M4730_IG29: ; bbWeight=16, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2400 {r10 r13}, byref, isz
- inc ecx
- cmp eax, ecx
- jbe G_M4730_IG70
- mov r8d, ecx
...
-22 (-1.02%) : 23529.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 20,127 ) ref -> r15 class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> r15 class-hnd exact 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,T48] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T06] ( 12,102 ) 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,T06] ( 15,102 ) int -> [rbp-0x34]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [rbp-0x3C]
@@ -128,7 +128,7 @@
; V118 tmp97 [V118,T39] ( 2, 8 ) byref -> rsi "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T43] ( 2, 8 ) int -> rdx "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T35] ( 3, 12 ) int -> rcx "CSE - conservative"
-; V121 cse1 [V121,T03] ( 20,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
+; V121 cse1 [V121,T04] ( 19,126.16) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> [rbp-0x68] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 168
@@ -154,7 +154,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_IG74
+ je G_M36935_IG75
test r14, r14
jne SHORT G_M36935_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -222,7 +222,7 @@ G_M36935_IG10: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C00
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x64], edx
cmp edx, ecx
- jbe G_M36935_IG70
+ jbe G_M36935_IG71
;; size=15 bbWeight=8 PerfScore 34.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov edi, ecx
@@ -267,9 +267,9 @@ G_M36935_IG13: ; 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_IG71
+ jl G_M36935_IG72
cmp eax, dword ptr [rbp-0x60]
- ja G_M36935_IG81
+ ja G_M36935_IG82
mov rsi, bword ptr [rbp-0xC0]
; byrRegs +[rsi]
mov edx, eax
@@ -283,12 +283,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x64]
cmp ecx, eax
- jae G_M36935_IG73
+ jae G_M36935_IG74
mov edi, ecx
movzx rdx, word ptr [r15+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [r15+2*rdi+0x0C]
@@ -322,9 +322,9 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
inc ecx
jmp G_M36935_IG10
;; size=10 bbWeight=4 PerfScore 13.00
-G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, 123
- jne G_M36935_IG75
+ jne G_M36935_IG76
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -338,12 +338,12 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M36935_IG73
+ jae G_M36935_IG74
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [r15+2*rdi+0x0C], 123
- je G_M36935_IG24
- ;; size=71 bbWeight=4 PerfScore 58.00
+ je SHORT G_M36935_IG19
+ ;; size=67 bbWeight=4 PerfScore 58.00
G_M36935_IG18: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; byrRegs -[r10]
mov dword ptr [rbp-0x30], r8d
@@ -355,212 +355,201 @@ G_M36935_IG18: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs
; gcrRegs -[rsi rdi]
; gcr arg pop 0
mov r8d, dword ptr [rbp-0x30]
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- ;; size=34 bbWeight=2 PerfScore 10.00
-G_M36935_IG19: ; bbWeight=4, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V88}
+ ;; size=27 bbWeight=2 PerfScore 8.00
+G_M36935_IG19: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov dword ptr [rbp-0x30], r8d
cmp r8d, 123
jne SHORT G_M36935_IG21
;; size=10 bbWeight=4 PerfScore 9.00
-G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref
- mov bword ptr [rbp-0xB8], r10
- ; GC ptr vars +{V88}
+G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rsi rdi]
- ; byrRegs -[r10]
; gcr arg pop 0
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- ;; size=33 bbWeight=2 PerfScore 8.00
-G_M36935_IG21: ; bbWeight=4, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V88}
+ ;; size=19 bbWeight=2 PerfScore 4.00
+G_M36935_IG21: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov r8d, dword ptr [rbp-0x30]
lea esi, [r8-0x30]
cmp esi, 10
- jae SHORT G_M36935_IG23
+ jae SHORT G_M36935_IG24
mov ecx, dword ptr [rbp-0x2C]
inc ecx
mov eax, dword ptr [rbp-0x64]
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 125
- je G_M36935_IG44
- ;; size=48 bbWeight=4 PerfScore 39.00
-G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ je SHORT G_M36935_IG23
+ ;; size=44 bbWeight=4 PerfScore 39.00
+G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
jmp SHORT G_M36935_IG26
;; size=2 bbWeight=2 PerfScore 4.00
-G_M36935_IG23: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M36935_IG23: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ mov r10, bword ptr [rbp-0xB8]
+ ; byrRegs +[r10]
+ jmp G_M36935_IG45
+ ;; size=12 bbWeight=2 PerfScore 6.00
+G_M36935_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r10 r13]
- ; GC ptr vars -{V04}
+ ; GC ptr vars -{V04 V88}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M36935_IG76
+ jmp G_M36935_IG77
;; size=8 bbWeight=2 PerfScore 6.00
-G_M36935_IG24: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
+G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs +[r14-r15]
; byrRegs +[rbx r13]
; GC ptr vars +{V04 V48 V88}
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- jmp SHORT G_M36935_IG19
- ;; size=9 bbWeight=2 PerfScore 6.00
-G_M36935_IG25: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref
- ; GC ptr vars -{V48 V88}
lea esi, [rsi+4*rsi]
lea esi, [r8+2*rsi-0x30]
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
mov esi, dword ptr [rbp-0x3C]
;; size=33 bbWeight=8 PerfScore 58.00
-G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
lea edi, [r8-0x30]
cmp edi, 9
ja SHORT G_M36935_IG27
cmp esi, 0xD1FFAB1E
jl SHORT G_M36935_IG25
;; size=17 bbWeight=16 PerfScore 48.00
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp r8d, 32
- jne SHORT G_M36935_IG31
- test ecx, ecx
- jl SHORT G_M36935_IG30
- ;; size=10 bbWeight=2 PerfScore 5.00
-G_M36935_IG28: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ jne SHORT G_M36935_IG29
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M36935_IG28: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG28
- ;; size=25 bbWeight=15.84 PerfScore 79.20
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
- jmp SHORT G_M36935_IG31
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M36935_IG30: ; bbWeight=0.16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ ;; size=25 bbWeight=16 PerfScore 80.00
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ cmp r8d, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M36935_IG40
+ ;; size=13 bbWeight=2 PerfScore 4.50
+G_M36935_IG30: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG30
- ;; size=25 bbWeight=0.16 PerfScore 0.80
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref
- cmp r8d, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M36935_IG38
- ;; size=13 bbWeight=2 PerfScore 4.50
-G_M36935_IG32: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
- inc ecx
- cmp eax, ecx
- jbe G_M36935_IG77
- mov r8d, ecx
...
-22 (-1.02%) : 10734.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 20,127 ) ref -> r15 class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> r15 class-hnd exact 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,T48] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T06] ( 12,102 ) 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,T06] ( 15,102 ) int -> [rbp-0x34]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [rbp-0x3C]
@@ -128,7 +128,7 @@
; V118 tmp97 [V118,T39] ( 2, 8 ) byref -> rsi "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T43] ( 2, 8 ) int -> rdx "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T35] ( 3, 12 ) int -> rcx "CSE - conservative"
-; V121 cse1 [V121,T03] ( 20,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
+; V121 cse1 [V121,T04] ( 19,126.16) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> [rbp-0x68] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 168
@@ -154,7 +154,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_IG74
+ je G_M36935_IG75
test r14, r14
jne SHORT G_M36935_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -222,7 +222,7 @@ G_M36935_IG10: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C00
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x64], edx
cmp edx, ecx
- jbe G_M36935_IG70
+ jbe G_M36935_IG71
;; size=15 bbWeight=8 PerfScore 34.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov edi, ecx
@@ -267,9 +267,9 @@ G_M36935_IG13: ; 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_IG71
+ jl G_M36935_IG72
cmp eax, dword ptr [rbp-0x60]
- ja G_M36935_IG81
+ ja G_M36935_IG82
mov rsi, bword ptr [rbp-0xC0]
; byrRegs +[rsi]
mov edx, eax
@@ -283,12 +283,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x64]
cmp ecx, eax
- jae G_M36935_IG73
+ jae G_M36935_IG74
mov edi, ecx
movzx rdx, word ptr [r15+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [r15+2*rdi+0x0C]
@@ -322,9 +322,9 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
inc ecx
jmp G_M36935_IG10
;; size=10 bbWeight=4 PerfScore 13.00
-G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, 123
- jne G_M36935_IG75
+ jne G_M36935_IG76
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -338,12 +338,12 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M36935_IG73
+ jae G_M36935_IG74
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [r15+2*rdi+0x0C], 123
- je G_M36935_IG24
- ;; size=71 bbWeight=4 PerfScore 58.00
+ je SHORT G_M36935_IG19
+ ;; size=67 bbWeight=4 PerfScore 58.00
G_M36935_IG18: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; byrRegs -[r10]
mov dword ptr [rbp-0x30], r8d
@@ -355,212 +355,201 @@ G_M36935_IG18: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs
; gcrRegs -[rsi rdi]
; gcr arg pop 0
mov r8d, dword ptr [rbp-0x30]
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- ;; size=34 bbWeight=2 PerfScore 10.00
-G_M36935_IG19: ; bbWeight=4, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V88}
+ ;; size=27 bbWeight=2 PerfScore 8.00
+G_M36935_IG19: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov dword ptr [rbp-0x30], r8d
cmp r8d, 123
jne SHORT G_M36935_IG21
;; size=10 bbWeight=4 PerfScore 9.00
-G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref
- mov bword ptr [rbp-0xB8], r10
- ; GC ptr vars +{V88}
+G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rsi rdi]
- ; byrRegs -[r10]
; gcr arg pop 0
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- ;; size=33 bbWeight=2 PerfScore 8.00
-G_M36935_IG21: ; bbWeight=4, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V88}
+ ;; size=19 bbWeight=2 PerfScore 4.00
+G_M36935_IG21: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov r8d, dword ptr [rbp-0x30]
lea esi, [r8-0x30]
cmp esi, 10
- jae SHORT G_M36935_IG23
+ jae SHORT G_M36935_IG24
mov ecx, dword ptr [rbp-0x2C]
inc ecx
mov eax, dword ptr [rbp-0x64]
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 125
- je G_M36935_IG44
- ;; size=48 bbWeight=4 PerfScore 39.00
-G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ je SHORT G_M36935_IG23
+ ;; size=44 bbWeight=4 PerfScore 39.00
+G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
jmp SHORT G_M36935_IG26
;; size=2 bbWeight=2 PerfScore 4.00
-G_M36935_IG23: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M36935_IG23: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ mov r10, bword ptr [rbp-0xB8]
+ ; byrRegs +[r10]
+ jmp G_M36935_IG45
+ ;; size=12 bbWeight=2 PerfScore 6.00
+G_M36935_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r10 r13]
- ; GC ptr vars -{V04}
+ ; GC ptr vars -{V04 V88}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M36935_IG76
+ jmp G_M36935_IG77
;; size=8 bbWeight=2 PerfScore 6.00
-G_M36935_IG24: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
+G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs +[r14-r15]
; byrRegs +[rbx r13]
; GC ptr vars +{V04 V48 V88}
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- jmp SHORT G_M36935_IG19
- ;; size=9 bbWeight=2 PerfScore 6.00
-G_M36935_IG25: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref
- ; GC ptr vars -{V48 V88}
lea esi, [rsi+4*rsi]
lea esi, [r8+2*rsi-0x30]
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
mov esi, dword ptr [rbp-0x3C]
;; size=33 bbWeight=8 PerfScore 58.00
-G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
lea edi, [r8-0x30]
cmp edi, 9
ja SHORT G_M36935_IG27
cmp esi, 0xD1FFAB1E
jl SHORT G_M36935_IG25
;; size=17 bbWeight=16 PerfScore 48.00
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp r8d, 32
- jne SHORT G_M36935_IG31
- test ecx, ecx
- jl SHORT G_M36935_IG30
- ;; size=10 bbWeight=2 PerfScore 5.00
-G_M36935_IG28: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ jne SHORT G_M36935_IG29
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M36935_IG28: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG28
- ;; size=25 bbWeight=15.84 PerfScore 79.20
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
- jmp SHORT G_M36935_IG31
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M36935_IG30: ; bbWeight=0.16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ ;; size=25 bbWeight=16 PerfScore 80.00
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ cmp r8d, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M36935_IG40
+ ;; size=13 bbWeight=2 PerfScore 4.50
+G_M36935_IG30: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG30
- ;; size=25 bbWeight=0.16 PerfScore 0.80
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref
- cmp r8d, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M36935_IG38
- ;; size=13 bbWeight=2 PerfScore 4.50
-G_M36935_IG32: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
- inc ecx
- cmp eax, ecx
- jbe G_M36935_IG77
- mov r8d, ecx
...
-22 (-1.02%) : 26222.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 20,127 ) ref -> r15 class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> r15 class-hnd exact 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,T48] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T06] ( 12,102 ) 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,T06] ( 15,102 ) int -> [rbp-0x34]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [rbp-0x3C]
@@ -128,7 +128,7 @@
; V118 tmp97 [V118,T39] ( 2, 8 ) byref -> rsi "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T43] ( 2, 8 ) int -> rdx "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T35] ( 3, 12 ) int -> rcx "CSE - conservative"
-; V121 cse1 [V121,T03] ( 20,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
+; V121 cse1 [V121,T04] ( 19,126.16) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> [rbp-0x68] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 168
@@ -154,7 +154,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_IG74
+ je G_M36935_IG75
test r14, r14
jne SHORT G_M36935_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -222,7 +222,7 @@ G_M36935_IG10: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C00
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x64], edx
cmp edx, ecx
- jbe G_M36935_IG70
+ jbe G_M36935_IG71
;; size=15 bbWeight=8 PerfScore 34.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov edi, ecx
@@ -267,9 +267,9 @@ G_M36935_IG13: ; 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_IG71
+ jl G_M36935_IG72
cmp eax, dword ptr [rbp-0x60]
- ja G_M36935_IG81
+ ja G_M36935_IG82
mov rsi, bword ptr [rbp-0xC0]
; byrRegs +[rsi]
mov edx, eax
@@ -283,12 +283,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x64]
cmp ecx, eax
- jae G_M36935_IG73
+ jae G_M36935_IG74
mov edi, ecx
movzx rdx, word ptr [r15+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [r15+2*rdi+0x0C]
@@ -322,9 +322,9 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
inc ecx
jmp G_M36935_IG10
;; size=10 bbWeight=4 PerfScore 13.00
-G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, 123
- jne G_M36935_IG75
+ jne G_M36935_IG76
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -338,12 +338,12 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M36935_IG73
+ jae G_M36935_IG74
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [r15+2*rdi+0x0C], 123
- je G_M36935_IG24
- ;; size=71 bbWeight=4 PerfScore 58.00
+ je SHORT G_M36935_IG19
+ ;; size=67 bbWeight=4 PerfScore 58.00
G_M36935_IG18: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; byrRegs -[r10]
mov dword ptr [rbp-0x30], r8d
@@ -355,212 +355,201 @@ G_M36935_IG18: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs
; gcrRegs -[rsi rdi]
; gcr arg pop 0
mov r8d, dword ptr [rbp-0x30]
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- ;; size=34 bbWeight=2 PerfScore 10.00
-G_M36935_IG19: ; bbWeight=4, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V88}
+ ;; size=27 bbWeight=2 PerfScore 8.00
+G_M36935_IG19: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov dword ptr [rbp-0x30], r8d
cmp r8d, 123
jne SHORT G_M36935_IG21
;; size=10 bbWeight=4 PerfScore 9.00
-G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref
- mov bword ptr [rbp-0xB8], r10
- ; GC ptr vars +{V88}
+G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rsi rdi]
- ; byrRegs -[r10]
; gcr arg pop 0
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- ;; size=33 bbWeight=2 PerfScore 8.00
-G_M36935_IG21: ; bbWeight=4, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V88}
+ ;; size=19 bbWeight=2 PerfScore 4.00
+G_M36935_IG21: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov r8d, dword ptr [rbp-0x30]
lea esi, [r8-0x30]
cmp esi, 10
- jae SHORT G_M36935_IG23
+ jae SHORT G_M36935_IG24
mov ecx, dword ptr [rbp-0x2C]
inc ecx
mov eax, dword ptr [rbp-0x64]
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 125
- je G_M36935_IG44
- ;; size=48 bbWeight=4 PerfScore 39.00
-G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ je SHORT G_M36935_IG23
+ ;; size=44 bbWeight=4 PerfScore 39.00
+G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
jmp SHORT G_M36935_IG26
;; size=2 bbWeight=2 PerfScore 4.00
-G_M36935_IG23: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M36935_IG23: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ mov r10, bword ptr [rbp-0xB8]
+ ; byrRegs +[r10]
+ jmp G_M36935_IG45
+ ;; size=12 bbWeight=2 PerfScore 6.00
+G_M36935_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r10 r13]
- ; GC ptr vars -{V04}
+ ; GC ptr vars -{V04 V88}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M36935_IG76
+ jmp G_M36935_IG77
;; size=8 bbWeight=2 PerfScore 6.00
-G_M36935_IG24: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
+G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs +[r14-r15]
; byrRegs +[rbx r13]
; GC ptr vars +{V04 V48 V88}
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- jmp SHORT G_M36935_IG19
- ;; size=9 bbWeight=2 PerfScore 6.00
-G_M36935_IG25: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref
- ; GC ptr vars -{V48 V88}
lea esi, [rsi+4*rsi]
lea esi, [r8+2*rsi-0x30]
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
mov esi, dword ptr [rbp-0x3C]
;; size=33 bbWeight=8 PerfScore 58.00
-G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
lea edi, [r8-0x30]
cmp edi, 9
ja SHORT G_M36935_IG27
cmp esi, 0xD1FFAB1E
jl SHORT G_M36935_IG25
;; size=17 bbWeight=16 PerfScore 48.00
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp r8d, 32
- jne SHORT G_M36935_IG31
- test ecx, ecx
- jl SHORT G_M36935_IG30
- ;; size=10 bbWeight=2 PerfScore 5.00
-G_M36935_IG28: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ jne SHORT G_M36935_IG29
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M36935_IG28: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG28
- ;; size=25 bbWeight=15.84 PerfScore 79.20
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
- jmp SHORT G_M36935_IG31
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M36935_IG30: ; bbWeight=0.16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ ;; size=25 bbWeight=16 PerfScore 80.00
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ cmp r8d, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M36935_IG40
+ ;; size=13 bbWeight=2 PerfScore 4.50
+G_M36935_IG30: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG30
- ;; size=25 bbWeight=0.16 PerfScore 0.80
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref
- cmp r8d, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M36935_IG38
- ;; size=13 bbWeight=2 PerfScore 4.50
-G_M36935_IG32: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
- inc ecx
- cmp eax, ecx
- jbe G_M36935_IG77
- mov r8d, ecx
...
-22 (-1.02%) : 18815.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> r14 class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 20,127 ) ref -> r15 class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> r15 class-hnd exact 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,T48] ( 3, 7 ) ref -> [rbp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 72,463 ) int -> [rbp-0x2C] ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rbp-0x30]
-; V07 loc3 [V07,T06] ( 12,102 ) 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,T06] ( 15,102 ) int -> [rbp-0x34]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rbp-0x38]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [rbp-0x3C]
@@ -128,7 +128,7 @@
; V118 tmp97 [V118,T39] ( 2, 8 ) byref -> rsi "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T43] ( 2, 8 ) int -> rdx "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T35] ( 3, 12 ) int -> rcx "CSE - conservative"
-; V121 cse1 [V121,T03] ( 20,142 ) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
+; V121 cse1 [V121,T04] ( 19,126.16) int -> [rbp-0x64] spill-single-def "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> [rbp-0x68] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 168
@@ -154,7 +154,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_IG74
+ je G_M36935_IG75
test r14, r14
jne SHORT G_M36935_IG04
;; size=14 bbWeight=1 PerfScore 2.50
@@ -222,7 +222,7 @@ G_M36935_IG10: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C00
mov edx, dword ptr [r15+0x08]
mov dword ptr [rbp-0x64], edx
cmp edx, ecx
- jbe G_M36935_IG70
+ jbe G_M36935_IG71
;; size=15 bbWeight=8 PerfScore 34.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov edi, ecx
@@ -267,9 +267,9 @@ G_M36935_IG13: ; 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_IG71
+ jl G_M36935_IG72
cmp eax, dword ptr [rbp-0x60]
- ja G_M36935_IG81
+ ja G_M36935_IG82
mov rsi, bword ptr [rbp-0xC0]
; byrRegs +[rsi]
mov edx, eax
@@ -283,12 +283,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
add ecx, dword ptr [rbp-0x50]
mov eax, dword ptr [rbp-0x64]
cmp ecx, eax
- jae G_M36935_IG73
+ jae G_M36935_IG74
mov edi, ecx
movzx rdx, word ptr [r15+2*rdi+0x0C]
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov dword ptr [rbp-0x2C], ecx
mov edi, ecx
movzx r8, word ptr [r15+2*rdi+0x0C]
@@ -322,9 +322,9 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
inc ecx
jmp G_M36935_IG10
;; size=10 bbWeight=4 PerfScore 13.00
-G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp edx, 123
- jne G_M36935_IG75
+ jne G_M36935_IG76
xor edx, edx
mov dword ptr [rbp-0x34], edx
xor r9d, r9d
@@ -338,12 +338,12 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rb
mov ecx, dword ptr [rbp-0x2C]
lea edi, [rcx-0x01]
cmp edi, eax
- jae G_M36935_IG73
+ jae G_M36935_IG74
mov dword ptr [rbp-0x2C], ecx
lea edi, [rcx-0x01]
cmp word ptr [r15+2*rdi+0x0C], 123
- je G_M36935_IG24
- ;; size=71 bbWeight=4 PerfScore 58.00
+ je SHORT G_M36935_IG19
+ ;; size=67 bbWeight=4 PerfScore 58.00
G_M36935_IG18: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; byrRegs -[r10]
mov dword ptr [rbp-0x30], r8d
@@ -355,212 +355,201 @@ G_M36935_IG18: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs
; gcrRegs -[rsi rdi]
; gcr arg pop 0
mov r8d, dword ptr [rbp-0x30]
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- ;; size=34 bbWeight=2 PerfScore 10.00
-G_M36935_IG19: ; bbWeight=4, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V88}
+ ;; size=27 bbWeight=2 PerfScore 8.00
+G_M36935_IG19: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov dword ptr [rbp-0x30], r8d
cmp r8d, 123
jne SHORT G_M36935_IG21
;; size=10 bbWeight=4 PerfScore 9.00
-G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref
- mov bword ptr [rbp-0xB8], r10
- ; GC ptr vars +{V88}
+G_M36935_IG20: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rsi rdi]
- ; byrRegs -[r10]
; gcr arg pop 0
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- ;; size=33 bbWeight=2 PerfScore 8.00
-G_M36935_IG21: ; bbWeight=4, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref, isz
- ; GC ptr vars -{V88}
+ ;; size=19 bbWeight=2 PerfScore 4.00
+G_M36935_IG21: ; bbWeight=4, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
mov r8d, dword ptr [rbp-0x30]
lea esi, [r8-0x30]
cmp esi, 10
- jae SHORT G_M36935_IG23
+ jae SHORT G_M36935_IG24
mov ecx, dword ptr [rbp-0x2C]
inc ecx
mov eax, dword ptr [rbp-0x64]
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 125
- je G_M36935_IG44
- ;; size=48 bbWeight=4 PerfScore 39.00
-G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ je SHORT G_M36935_IG23
+ ;; size=44 bbWeight=4 PerfScore 39.00
+G_M36935_IG22: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
jmp SHORT G_M36935_IG26
;; size=2 bbWeight=2 PerfScore 4.00
-G_M36935_IG23: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M36935_IG23: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ mov r10, bword ptr [rbp-0xB8]
+ ; byrRegs +[r10]
+ jmp G_M36935_IG45
+ ;; size=12 bbWeight=2 PerfScore 6.00
+G_M36935_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r14-r15]
; byrRegs -[rbx r10 r13]
- ; GC ptr vars -{V04}
+ ; GC ptr vars -{V04 V88}
mov ecx, dword ptr [rbp-0x2C]
- jmp G_M36935_IG76
+ jmp G_M36935_IG77
;; size=8 bbWeight=2 PerfScore 6.00
-G_M36935_IG24: ; bbWeight=2, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref, isz
+G_M36935_IG25: ; bbWeight=8, gcVars=0001000010000000 {V04 V88}, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, gcvars, byref
; gcrRegs +[r14-r15]
; byrRegs +[rbx r13]
; GC ptr vars +{V04 V48 V88}
- mov r10, bword ptr [rbp-0xB8]
- ; byrRegs +[r10]
- jmp SHORT G_M36935_IG19
- ;; size=9 bbWeight=2 PerfScore 6.00
-G_M36935_IG25: ; bbWeight=8, gcVars=0001000000000000 {V04}, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, gcvars, byref
- ; GC ptr vars -{V48 V88}
lea esi, [rsi+4*rsi]
lea esi, [r8+2*rsi-0x30]
mov dword ptr [rbp-0x3C], esi
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
mov esi, dword ptr [rbp-0x3C]
;; size=33 bbWeight=8 PerfScore 58.00
-G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+G_M36935_IG26: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
lea edi, [r8-0x30]
cmp edi, 9
ja SHORT G_M36935_IG27
cmp esi, 0xD1FFAB1E
jl SHORT G_M36935_IG25
;; size=17 bbWeight=16 PerfScore 48.00
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
cmp r8d, 32
- jne SHORT G_M36935_IG31
- test ecx, ecx
- jl SHORT G_M36935_IG30
- ;; size=10 bbWeight=2 PerfScore 5.00
-G_M36935_IG28: ; bbWeight=15.84, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ jne SHORT G_M36935_IG29
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M36935_IG28: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG28
- ;; size=25 bbWeight=15.84 PerfScore 79.20
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
- jmp SHORT G_M36935_IG31
- ;; size=2 bbWeight=2 PerfScore 4.00
-G_M36935_IG30: ; bbWeight=0.16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
+ ;; size=25 bbWeight=16 PerfScore 80.00
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref
+ cmp r8d, 44
+ mov edx, dword ptr [rbp-0x34]
+ jne G_M36935_IG40
+ ;; size=13 bbWeight=2 PerfScore 4.50
+G_M36935_IG30: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2008 {rbx r13}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M36935_IG77
+ jbe G_M36935_IG78
mov r8d, ecx
movzx r8, word ptr [r15+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG30
- ;; size=25 bbWeight=0.16 PerfScore 0.80
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref
- cmp r8d, 44
- mov edx, dword ptr [rbp-0x34]
- jne G_M36935_IG38
- ;; size=13 bbWeight=2 PerfScore 4.50
-G_M36935_IG32: ; bbWeight=16, gcrefRegs=C000 {r14 r15}, byrefRegs=2408 {rbx r10 r13}, byref, isz
- inc ecx
- cmp eax, ecx
- jbe G_M36935_IG77
- mov r8d, ecx
...
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 |
+99 |
| benchmarks.run_pgo.linux.x64.checked.mch |
3 |
1 |
2 |
0 |
-51 |
+714 |
| benchmarks.run_tiered.linux.x64.checked.mch |
2 |
2 |
0 |
0 |
-218 |
+0 |
| coreclr_tests.run.linux.x64.checked.mch |
169 |
1 |
168 |
0 |
-133 |
+12,731 |
| libraries.crossgen2.linux.x64.checked.mch |
4 |
1 |
3 |
0 |
-16 |
+253 |
| libraries.pmi.linux.x64.checked.mch |
2 |
1 |
1 |
0 |
-15 |
+306 |
| libraries_tests.run.linux.x64.Release.mch |
307 |
1 |
306 |
0 |
-126 |
+23,052 |
| 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 |
5 |
5 |
0 |
0 |
-110 |
+0 |
|
497 |
12 |
484 |
1 |
-669 |
+37,226 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.x64.checked.mch |
36,217 |
3,549 |
32,668 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.linux.x64.checked.mch |
160,323 |
63,207 |
97,116 |
4 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.linux.x64.checked.mch |
65,385 |
50,236 |
15,149 |
1 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.linux.x64.checked.mch |
599,009 |
355,942 |
243,067 |
3 (0.00%) |
1 (0.00%) |
| libraries.crossgen2.linux.x64.checked.mch |
234,329 |
15 |
234,314 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.x64.checked.mch |
296,931 |
6 |
296,925 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.linux.x64.Release.mch |
759,766 |
496,184 |
263,582 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,443 |
21,912 |
283,531 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.linux.x64.checked.mch |
33,083 |
9 |
33,074 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.linux.x64.checked.mch |
27,414 |
10 |
27,404 |
0 (0.00%) |
0 (0.00%) |
|
2,517,900 |
991,070 |
1,526,830 |
8 (0.00%) |
1 (0.00%) |
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: 14336796 (overridden on cmd)
Total bytes of diff: 14336895 (overridden on cmd)
Total bytes of delta: 99 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
62 : 3723.dasm (2.04 % of base)
37 : 6164.dasm (1.56 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
62 (2.04 % of base) : 3723.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
37 (1.56 % of base) : 6164.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
Top method regressions (percentages):
62 (2.04 % of base) : 3723.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
37 (1.56 % of base) : 6164.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 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: 71590604 (overridden on cmd)
Total bytes of diff: 71591267 (overridden on cmd)
Total bytes of delta: 663 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
357 : 70812.dasm (32.34 % of base)
357 : 70823.dasm (32.34 % of base)
Top file improvements (bytes):
-51 : 112826.dasm (-6.42 % of base)
3 total files with Code Size differences (1 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
357 (32.34 % of base) : 70812.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
357 (32.34 % of base) : 70823.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
Top method improvements (bytes):
-51 (-6.42 % of base) : 112826.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
357 (32.34 % of base) : 70812.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
357 (32.34 % of base) : 70823.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
Top method improvements (percentages):
-51 (-6.42 % of base) : 112826.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
3 total methods with Code Size differences (1 improved, 2 regressed).
benchmarks.run_tiered.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: 21435743 (overridden on cmd)
Total bytes of diff: 21435525 (overridden on cmd)
Total bytes of delta: -218 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-174 : 38622.dasm (-17.08 % of base)
-44 : 54552.dasm (-6.06 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-174 (-17.08 % of base) : 38622.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-44 (-6.06 % of base) : 54552.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method improvements (percentages):
-174 (-17.08 % of base) : 38622.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-44 (-6.06 % of base) : 54552.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
2 total methods with Code Size differences (2 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: 403710882 (overridden on cmd)
Total bytes of diff: 403723480 (overridden on cmd)
Total bytes of delta: 12598 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
357 : 234772.dasm (32.34 % of base)
94 : 285535.dasm (2.68 % of base)
93 : 186241.dasm (2.38 % of base)
93 : 206377.dasm (2.38 % of base)
93 : 254967.dasm (2.38 % of base)
93 : 327624.dasm (2.38 % of base)
93 : 337740.dasm (2.38 % of base)
93 : 379895.dasm (2.38 % of base)
93 : 400159.dasm (2.38 % of base)
93 : 76772.dasm (2.38 % of base)
93 : 204093.dasm (2.38 % of base)
93 : 1747.dasm (2.38 % of base)
93 : 211153.dasm (2.38 % of base)
93 : 231976.dasm (2.38 % of base)
93 : 239616.dasm (2.38 % of base)
93 : 246206.dasm (2.38 % of base)
93 : 258301.dasm (2.38 % of base)
93 : 274986.dasm (2.38 % of base)
93 : 282520.dasm (2.38 % of base)
93 : 311684.dasm (2.38 % of base)
Top file improvements (bytes):
-133 : 290999.dasm (-32.84 % of base)
56 total files with Code Size differences (1 improved, 55 regressed), 0 unchanged.
Top method regressions (bytes):
357 (32.34 % of base) : 234772.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
94 (2.68 % of base) : 285535.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
93 (2.38 % of base) : 186241.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 206377.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 254967.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 327624.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 337740.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 379895.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 400159.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 76772.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 204093.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 1747.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 211153.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 231976.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 239616.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 246206.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 258301.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 274986.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 282520.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 311684.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (bytes):
-133 (-32.84 % of base) : 290999.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
357 (32.34 % of base) : 234772.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
31 (2.71 % of base) : 269895.dasm - JitTest_lcsmixed_lcs_cs.LCS:TestEntryPoint():int (Tier1-OSR)
94 (2.68 % of base) : 285535.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 391206.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 398745.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
93 (2.38 % of base) : 246206.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 362264.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 269049.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 186241.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 206377.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 254967.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 327624.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 337740.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 379895.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 400159.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 76772.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 204093.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 1747.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 211153.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
93 (2.38 % of base) : 231976.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (percentages):
-133 (-32.84 % of base) : 290999.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
libraries.crossgen2.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: 38727192 (overridden on cmd)
Total bytes of diff: 38727429 (overridden on cmd)
Total bytes of delta: 237 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
122 : 101488.dasm (34.27 % of base)
69 : 21602.dasm (3.56 % of base)
62 : 25551.dasm (2.95 % of base)
Top file improvements (bytes):
-16 : 98365.dasm (-20.51 % of base)
4 total files with Code Size differences (1 improved, 3 regressed), 0 unchanged.
Top method regressions (bytes):
122 (34.27 % of base) : 101488.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
69 (3.56 % of base) : 21602.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
62 (2.95 % of base) : 25551.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (bytes):
-16 (-20.51 % of base) : 98365.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
122 (34.27 % of base) : 101488.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
69 (3.56 % of base) : 21602.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
62 (2.95 % of base) : 25551.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-16 (-20.51 % of base) : 98365.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
4 total methods with Code Size differences (1 improved, 3 regressed).
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: 60419372 (overridden on cmd)
Total bytes of diff: 60419663 (overridden on cmd)
Total bytes of delta: 291 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
306 : 107755.dasm (53.40 % of base)
Top file improvements (bytes):
-15 : 104355.dasm (-17.44 % of base)
2 total files with Code Size differences (1 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
306 (53.40 % of base) : 107755.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
Top method improvements (bytes):
-15 (-17.44 % of base) : 104355.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
306 (53.40 % of base) : 107755.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
Top method improvements (percentages):
-15 (-17.44 % of base) : 104355.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
2 total methods with Code Size differences (1 improved, 1 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: 337107943 (overridden on cmd)
Total bytes of diff: 337130869 (overridden on cmd)
Total bytes of delta: 22926 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
94 : 255304.dasm (2.68 % of base)
93 : 271969.dasm (2.38 % of base)
92 : 608268.dasm (2.36 % of base)
92 : 758468.dasm (2.35 % of base)
92 : 433040.dasm (2.36 % of base)
92 : 433908.dasm (2.35 % of base)
92 : 565576.dasm (2.35 % of base)
92 : 604048.dasm (2.36 % of base)
92 : 732476.dasm (2.36 % of base)
92 : 755928.dasm (2.36 % of base)
92 : 407052.dasm (2.36 % of base)
92 : 451628.dasm (2.36 % of base)
92 : 454784.dasm (2.35 % of base)
92 : 580192.dasm (2.35 % of base)
92 : 737644.dasm (2.35 % of base)
92 : 404872.dasm (2.36 % of base)
92 : 431616.dasm (2.35 % of base)
92 : 459572.dasm (2.36 % of base)
92 : 603508.dasm (2.36 % of base)
92 : 748124.dasm (2.36 % of base)
Top file improvements (bytes):
-126 : 326348.dasm (-6.47 % of base)
78 total files with Code Size differences (1 improved, 77 regressed), 0 unchanged.
Top method regressions (bytes):
94 (2.68 % of base) : 255304.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
93 (2.38 % of base) : 271969.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 608268.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.35 % of base) : 758468.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 433040.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.35 % of base) : 433908.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.35 % of base) : 565576.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 604048.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 732476.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 755928.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 407052.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 451628.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.35 % of base) : 454784.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.35 % of base) : 580192.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.35 % of base) : 737644.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 404872.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.35 % of base) : 431616.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 459572.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 603508.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
92 (2.36 % of base) : 748124.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (bytes):
-126 (-6.47 % of base) : 326348.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method regressions (percentages):
83 (3.23 % of base) : 229536.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
81 (3.00 % of base) : 388683.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
94 (2.68 % of base) : 255304.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
77 (2.57 % of base) : 545454.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
89 (2.56 % of base) : 326534.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.56 % of base) : 473275.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.56 % of base) : 585996.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 621757.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 688517.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 604810.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 744166.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 201015.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 655515.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 114631.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 224209.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 270735.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 418666.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 568773.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 192687.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
89 (2.55 % of base) : 337763.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
Top method improvements (percentages):
-126 (-6.47 % of base) : 326348.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
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: 132558366 (overridden on cmd)
Total bytes of diff: 132558366 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 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: 13175050 (overridden on cmd)
Total bytes of diff: 13175121 (overridden on cmd)
Total bytes of delta: 71 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
37 : 2222.dasm (1.56 % of base)
34 : 2459.dasm (1.20 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
37 (1.56 % of base) : 2222.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
34 (1.20 % of base) : 2459.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
37 (1.56 % of base) : 2222.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
34 (1.20 % of base) : 2459.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
smoke_tests.nativeaot.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: 4234485 (overridden on cmd)
Total bytes of diff: 4234375 (overridden on cmd)
Total bytes of delta: -110 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-22 : 18815.dasm (-1.02 % of base)
-22 : 23529.dasm (-1.02 % of base)
-22 : 4300.dasm (-1.10 % of base)
-22 : 26222.dasm (-1.02 % of base)
-22 : 10734.dasm (-1.02 % of base)
5 total files with Code Size differences (5 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-22 (-1.10 % of base) : 4300.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-22 (-1.02 % of base) : 18815.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-22 (-1.02 % of base) : 23529.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-22 (-1.02 % of base) : 26222.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-22 (-1.02 % of base) : 10734.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-22 (-1.10 % of base) : 4300.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-22 (-1.02 % of base) : 18815.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-22 (-1.02 % of base) : 23529.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-22 (-1.02 % of base) : 26222.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-22 (-1.02 % of base) : 10734.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
5 total methods with Code Size differences (5 improved, 0 regressed).
osx arm64
Diffs are based on 2,270,860 contexts (932,669 MinOpts, 1,338,191 FullOpts).
MISSED contexts: base: 9 (0.00%), diff: 2 (0.00%)
Overall (+28,752 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
11,186,448 |
+136 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
34,437,920 |
-60 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
15,516,336 |
-208 |
| coreclr_tests.run.osx.arm64.checked.mch |
486,460,744 |
+10,180 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,725,580 |
+248 |
| libraries.pmi.osx.arm64.checked.mch |
80,219,132 |
+396 |
| libraries_tests.run.osx.arm64.Release.mch |
324,580,644 |
+17,904 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
162,573,872 |
+12 |
| realworld.run.osx.arm64.checked.mch |
15,061,040 |
+144 |
FullOpts (+28,752 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.osx.arm64.checked.mch |
11,185,912 |
+136 |
| benchmarks.run_pgo.osx.arm64.checked.mch |
18,136,248 |
-60 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
4,011,632 |
-208 |
| coreclr_tests.run.osx.arm64.checked.mch |
153,807,060 |
+10,180 |
| libraries.crossgen2.osx.arm64.checked.mch |
55,723,952 |
+248 |
| libraries.pmi.osx.arm64.checked.mch |
80,098,004 |
+396 |
| libraries_tests.run.osx.arm64.Release.mch |
120,864,796 |
+17,904 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
149,420,144 |
+12 |
| realworld.run.osx.arm64.checked.mch |
14,497,084 |
+144 |
Example diffs
benchmarks.run.osx.arm64.checked.mch
+64 (+1.92%) : 2138.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%) : 9211.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_pgo.osx.arm64.checked.mch
-60 (-7.08%) : 66989.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -10,16 +10,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 15, 105.07) ref -> x0 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T13] ( 12, 104.87) ref -> x0 class-hnd single-def <float[][]>
; V01 arg1 [V01,T22] ( 7, 4.62) ref -> x1 class-hnd single-def <int[][]>
; V02 arg2 [V02,T23] ( 3, 3 ) ref -> x2 class-hnd single-def <double[]>
; V03 arg3 [V03,T25] ( 4, 2.21) ref -> x3 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T24] ( 5, 2.62) int -> x4 single-def
+; V04 arg4 [V04,T24] ( 4, 2.62) int -> x4 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T05] ( 25,1699.35) int -> x5
-; V08 loc3 [V08,T28] ( 6, 0.63) ref -> x8 class-hnd <float[]>
-; V09 loc4 [V09,T12] ( 13, 108.54) int -> x7
+; V07 loc2 [V07,T05] ( 20,1699.35) int -> x5
+; V08 loc3 [V08,T28] ( 5, 0.63) ref -> x8 class-hnd <float[]>
+; V09 loc4 [V09,T12] ( 12, 108.54) int -> x7
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 18,1200.13) int -> x6
; V12 loc7 [V12,T31] ( 4, 199.58) float -> d16
@@ -45,8 +45,8 @@
; V32 cse2 [V32,T17] ( 4, 100.00) long -> x13 hoist multi-def "CSE - aggressive"
; V33 cse3 [V33,T27] ( 5, 3.02) long -> x15 "CSE - moderate"
; V34 cse4 [V34,T10] ( 16, 304.52) int -> x12 hoist multi-def "CSE - aggressive"
-; V35 cse5 [V35,T15] ( 9, 101.83) int -> x2 hoist "CSE - aggressive"
-; V36 cse6 [V36,T14] ( 6, 102.23) byref -> x9 hoist "CSE - aggressive"
+; V35 cse5 [V35,T14] ( 6, 102.23) byref -> x9 hoist "CSE - aggressive"
+; V36 cse6 [V36,T15] ( 7, 101.63) int -> x2 hoist "CSE - aggressive"
; V37 cse7 [V37,T18] ( 4, 100.00) int -> x10 hoist multi-def "CSE - aggressive"
; V38 cse8 [V38,T16] ( 4, 100.00) byref -> x11 hoist multi-def "CSE - aggressive"
;
@@ -75,20 +75,20 @@ G_M56974_IG02: ; bbWeight=1, gcrefRegs=010F {x0 x1 x2 x3 x8}, byrefRegs=0
;; size=8 bbWeight=1 PerfScore 3.50
G_M56974_IG03: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
cmp w2, w6
- ble G_M56974_IG19
+ ble G_M56974_IG14
;; size=8 bbWeight=0.21 PerfScore 0.31
G_M56974_IG04: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- cbz x1, G_M56974_IG28
+ cbz x1, G_M56974_IG24
;; size=4 bbWeight=0.21 PerfScore 0.21
G_M56974_IG05: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- cbz x0, G_M56974_IG28
- tbnz w6, #31, G_M56974_IG28
+ cbz x0, G_M56974_IG24
+ tbnz w6, #31, G_M56974_IG24
ldr w10, [x1, #0x08]
cmp w10, w2
- blt G_M56974_IG28
+ blt G_M56974_IG24
ldr w10, [x0, #0x08]
cmp w10, w2
- blt G_M56974_IG28
+ blt G_M56974_IG24
;; size=32 bbWeight=0.21 PerfScore 2.29
G_M56974_IG06: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
ldr w10, [x8, #0x08]
@@ -101,7 +101,7 @@ G_M56974_IG06: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0
;; size=20 bbWeight=0.21 PerfScore 1.67
G_M56974_IG07: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w7, w10
- bhs G_M56974_IG39
+ bhs G_M56974_IG35
ldr s16, [x11, x13]
ldr w15, [x14, #0x08]
cmp w15, w5
@@ -109,45 +109,18 @@ G_M56974_IG07: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
;; size=24 bbWeight=98.79 PerfScore 889.14
G_M56974_IG08: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w5, w6
- bne G_M56974_IG21
+ bne G_M56974_IG17
;; size=8 bbWeight=395.17 PerfScore 592.76
G_M56974_IG09: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref
movi v17.16b, #0
- b G_M56974_IG22
+ b G_M56974_IG18
;; size=8 bbWeight=395.17 PerfScore 592.76
-G_M56974_IG10: ; bbWeight=0.20, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
+G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs -[x8 x14]
; byrRegs -[x11]
- cbz x0, G_M56974_IG18
- tbnz w5, #31, G_M56974_IG18
- ldr w7, [x0, #0x08]
- cmp w7, w2
- blt G_M56974_IG18
- ;; size=20 bbWeight=0.20 PerfScore 1.33
-G_M56974_IG11: ; bbWeight=0.64, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
- b G_M56974_IG13
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M56974_IG12: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
- add x8, x0, #16
- ; byrRegs +[x8]
- ldr x8, [x8, w5, UXTW #3]
- ; gcrRegs +[x8]
- ; byrRegs -[x8]
- mov w7, wzr
- cmp w4, #0
- bgt G_M56974_IG15
- ;; size=20 bbWeight=0.21 PerfScore 1.14
-G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
- ; gcrRegs -[x8]
- add w5, w5, #1
- cmp w2, w5
- ble G_M56974_IG40
- b G_M56974_IG12
- ;; size=16 bbWeight=0.21 PerfScore 0.62
-G_M56974_IG14: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
ldr w8, [x0, #0x08]
cmp w5, w8
- bhs G_M56974_IG39
+ bhs G_M56974_IG35
add x7, x0, #16
; byrRegs +[x7]
ldr x8, [x7, w5, UXTW #3]
@@ -155,51 +128,52 @@ G_M56974_IG14: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200
mov w7, wzr
; byrRegs -[x7]
cmp w4, #0
- ble G_M56974_IG18
- ;; size=32 bbWeight=0.00 PerfScore 0.02
-G_M56974_IG15: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- ldr w6, [x1, #0x08]
- cmp w5, w6
- bhs G_M56974_IG39
- ldr x6, [x9, w5, UXTW #3]
- ; gcrRegs +[x6]
- tbnz w7, #31, G_M56974_IG19
- ;; size=20 bbWeight=0.21 PerfScore 1.78
-G_M56974_IG16: ; bbWeight=6.69, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
- ldr w6, [x6, #0x08]
- ; gcrRegs -[x6]
- cmp w6, w7
- ble G_M56974_IG19
- ;; size=12 bbWeight=6.69 PerfScore 30.10
-G_M56974_IG17: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
- add w6, w5, #1
- b G_M56974_IG03
- ;; size=8 bbWeight=0.21 PerfScore 0.31
-G_M56974_IG18: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
+ bgt G_M56974_IG12
+ ;; size=32 bbWeight=0.21 PerfScore 2.09
+G_M56974_IG11: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs -[x8]
add w5, w5, #1
cmp w2, w5
- ble G_M56974_IG40
- b G_M56974_IG14
- ;; size=16 bbWeight=0.00 PerfScore 0.01
-G_M56974_IG19: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
+ ble G_M56974_IG36
+ b G_M56974_IG10
+ ;; size=16 bbWeight=0.21 PerfScore 0.63
+G_M56974_IG12: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs +[x8]
+ ldr w6, [x1, #0x08]
+ cmp w5, w6
+ bhs G_M56974_IG35
+ ldr x6, [x9, w5, UXTW #3]
+ ; gcrRegs +[x6]
+ tbnz w7, #31, G_M56974_IG14
+ ;; size=20 bbWeight=0.21 PerfScore 1.78
+G_M56974_IG13: ; bbWeight=6.69, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
+ ldr w6, [x6, #0x08]
+ ; gcrRegs -[x6]
+ cmp w6, w7
+ bgt G_M56974_IG16
+ ;; size=12 bbWeight=6.69 PerfScore 30.10
+G_M56974_IG14: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
add w7, w7, #1
cmp w7, w4
- blt G_M56974_IG15
+ blt G_M56974_IG12
;; size=12 bbWeight=0.41 PerfScore 0.82
-G_M56974_IG20: ; bbWeight=0.20, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
+G_M56974_IG15: ; bbWeight=0.20, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
; gcrRegs -[x8]
- b G_M56974_IG10
+ b G_M56974_IG11
;; size=4 bbWeight=0.20 PerfScore 0.20
-G_M56974_IG21: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
- ; gcrRegs +[x8 x14]
+G_M56974_IG16: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
+ ; gcrRegs +[x8]
+ add w6, w5, #1
+ b G_M56974_IG03
+ ;; size=8 bbWeight=0.21 PerfScore 0.31
+G_M56974_IG17: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+ ; gcrRegs +[x14]
; byrRegs +[x11]
mov x15, x14
; gcrRegs +[x15]
ldr wip0, [x15, #0x08]
cmp w5, wip0
- bhs G_M56974_IG39
+ bhs G_M56974_IG35
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
@@ -210,14 +184,14 @@ G_M56974_IG21: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byref
sub wip0, wip0, #1
ldr w19, [x15, #0x08]
cmp wip0, w19
- bhs G_M56974_IG39
+ bhs G_M56974_IG35
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, wip0, UXTW #2]
fcvt d17, s17
;; size=56 bbWeight=395.17 PerfScore 8101.03
-G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG18: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
; byrRegs -[x15]
fcvt d16, s16
fadd d16, d16, d17
@@ -225,15 +199,15 @@ G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
ldr x15, [x9, xip0]
; gcrRegs +[x15]
sxtw w19, w12
- tbnz w19, #31, G_M56974_IG27
+ tbnz w19, #31, G_M56974_IG23
;; size=24 bbWeight=98.79 PerfScore 1136.12
-G_M56974_IG23: ; bbWeight=3161.38, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG19: ; bbWeight=3161.38, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
ldr w15, [x15, #0x08]
; gcrRegs -[x15]
cmp w15, w19
- ble G_M56974_IG27
+ ble G_M56974_IG23
;; size=12 bbWeight=3161.38 PerfScore 14226.20
-G_M56974_IG24: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG20: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
add x15, x0, #16
; byrRegs +[x15]
ldr x15, [x15, xip0]
@@ -241,27 +215,27 @@ G_M56974_IG24: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
; byrRegs -[x15]
ldr w19, [x15, #0x08]
cmp w12, w19
- bhs G_M56974_IG39
+ bhs G_M56974_IG35
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, w12, UXTW #2]
...
benchmarks.run_tiered.osx.arm64.checked.mch
-148 (-13.81%) : 32752.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
@@ -10,47 +10,44 @@
; Final local variable assignments
;
; V00 arg0 [V00,T16] ( 7, 10.09) ref -> x0 class-hnd single-def <double[][]>
-; V01 arg1 [V01,T13] ( 9, 14.33) ref -> x1 class-hnd single-def <double[]>
-; V02 arg2 [V02,T18] ( 12, 9.10) ref -> x20 class-hnd single-def <double[][][]>
-; V03 arg3 [V03,T19] ( 12, 9.10) ref -> x21 class-hnd single-def <double[][]>
-; V04 arg4 [V04,T08] ( 12, 20 ) int -> x19 single-def
-; V05 loc0 [V05,T10] ( 12, 20.08) ref -> x24 class-hnd <double[][]>
-; V06 loc1 [V06,T09] ( 13, 20.32) ref -> x23 class-hnd <double[]>
-; V07 loc2 [V07,T28] ( 2, 2 ) long -> x25
+; V01 arg1 [V01,T13] ( 7, 14.21) ref -> x1 class-hnd single-def <double[]>
+; V02 arg2 [V02,T18] ( 9, 9.08) ref -> x20 class-hnd single-def <double[][][]>
+; V03 arg3 [V03,T19] ( 9, 9.08) ref -> x21 class-hnd single-def <double[][]>
+; V04 arg4 [V04,T12] ( 8, 17 ) int -> x19 single-def
+; V05 loc0 [V05,T09] ( 11, 20.08) ref -> x24 class-hnd <double[][]>
+; V06 loc1 [V06,T08] ( 10, 20.20) ref -> x23 class-hnd <double[]>
+; V07 loc2 [V07,T28] ( 2, 2 ) long -> x27
; V08 loc3 [V08,T02] ( 14, 94.16) int -> x2
-; V09 loc4 [V09,T07] ( 11, 27.04) int -> x3
-; V10 loc5 [V10,T00] ( 40,127.84) int -> x22
+; V09 loc4 [V09,T06] ( 6, 30 ) int -> x3
+; V10 loc5 [V10,T00] ( 32,127.52) int -> x22
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T36] ( 6, 64.00) double -> d16 "Strict ordering of exceptions for Array store"
-; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> x9 class-hnd "Strict ordering of exceptions for Array store" <double[]>
-; V14 tmp3 [V14,T37] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
+; V12 tmp1 [V12,T33] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
+; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V14 tmp3 [V14,T34] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V16 tmp5 [V16,T20] ( 6, 10 ) ref -> registers class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V17 tmp6 [V17 ] ( 4, 8 ) int -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V18 tmp7 [V18 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V19 tmp8 [V19,T03] ( 5, 64.32) ref -> x10 "arr expr"
-; V20 cse0 [V20,T11] ( 4, 20.04) ref -> x8 hoist multi-def "CSE - aggressive"
-; V21 cse1 [V21,T33] ( 2, 0.20) ref -> x5 hoist "CSE - conservative"
-; V22 cse2 [V22,T06] ( 6, 27.92) ref -> x5 multi-def "CSE - aggressive"
-; V23 cse3 [V23,T15] ( 6, 12.12) long -> x4 hoist multi-def "CSE - aggressive"
-; V24 cse4 [V24,T04] ( 3, 47.52) long -> x7 "CSE - aggressive"
-; V25 cse5 [V25,T05] ( 3, 47.04) long -> x4 "CSE - aggressive"
+; V19 tmp8 [V19,T03] ( 5, 64.32) ref -> x13 "arr expr"
+; V20 cse0 [V20,T10] ( 4, 20.04) ref -> x10 hoist multi-def "CSE - aggressive"
+; V21 cse1 [V21,T31] ( 2, 0.20) ref -> x7 hoist "CSE - conservative"
+; V22 cse2 [V22,T07] ( 6, 27.92) ref -> x7 multi-def "CSE - aggressive"
+; V23 cse3 [V23,T15] ( 6, 12.12) long -> x6 hoist multi-def "CSE - aggressive"
+; V24 cse4 [V24,T04] ( 3, 47.52) long -> x6 "CSE - aggressive"
+; V25 cse5 [V25,T05] ( 3, 47.52) long -> x9 "CSE - aggressive"
; V26 cse6 [V26,T17] ( 3, 11.88) long -> x0 "CSE - aggressive"
-; V27 cse7 [V27,T25] ( 3, 5.94) long -> x2 "CSE - aggressive"
-; V28 cse8 [V28,T29] ( 3, 0.48) long -> x4 "CSE - conservative"
-; V29 cse9 [V29,T30] ( 3, 0.48) long -> x6 "CSE - conservative"
-; V30 cse10 [V30,T31] ( 3, 0.48) long -> x4 "CSE - conservative"
-; V31 cse11 [V31,T34] ( 3, 0.12) long -> x0 "CSE - conservative"
-; V32 cse12 [V32,T35] ( 3, 0.06) long -> x2 "CSE - conservative"
-; V33 cse13 [V33,T27] ( 3, 4.05) byref -> x26 hoist "CSE - aggressive"
-; V34 cse14 [V34,T14] ( 4, 16.01) byref -> x25 hoist "CSE - aggressive"
-; V35 cse15 [V35,T24] ( 4, 8.08) int -> x6 hoist multi-def "CSE - aggressive"
-; V36 cse16 [V36,T23] ( 4, 8.08) byref -> x7 hoist multi-def "CSE - aggressive"
-; V37 cse17 [V37,T12] ( 4, 19.84) byref -> x2 hoist multi-def "CSE - aggressive"
-; V38 cse18 [V38,T26] ( 4, 5.04) long -> x26 hoist multi-def "CSE - aggressive"
-; V39 cse19 [V39,T21] ( 8, 9.04) byref -> x27 hoist multi-def "CSE - aggressive"
-; V40 cse20 [V40,T22] ( 8, 9.04) byref -> x28 hoist multi-def "CSE - aggressive"
-; V41 cse21 [V41,T32] ( 2, 0.24) byref -> x2 hoist "CSE - conservative"
+; V27 cse7 [V27,T25] ( 3, 6 ) long -> x2 "CSE - aggressive"
+; V28 cse8 [V28,T29] ( 3, 0.48) long -> x6 "CSE - conservative"
+; V29 cse9 [V29,T30] ( 3, 0.48) long -> x8 "CSE - conservative"
+; V30 cse10 [V30,T32] ( 3, 0.12) long -> x0 "CSE - conservative"
+; V31 cse11 [V31,T27] ( 3, 4.05) byref -> x5 hoist "CSE - aggressive"
+; V32 cse12 [V32,T14] ( 3, 16.01) byref -> x4 hoist "CSE - aggressive"
+; V33 cse13 [V33,T24] ( 4, 8.08) int -> x8 hoist multi-def "CSE - aggressive"
+; V34 cse14 [V34,T23] ( 4, 8.08) byref -> x9 hoist multi-def "CSE - aggressive"
+; V35 cse15 [V35,T11] ( 4, 20.04) byref -> x2 hoist multi-def "CSE - aggressive"
+; V36 cse16 [V36,T26] ( 4, 5.04) long -> x28 hoist multi-def "CSE - aggressive"
+; V37 cse17 [V37,T21] ( 6, 9.04) byref -> x25 hoist multi-def "CSE - aggressive"
+; V38 cse18 [V38,T22] ( 6, 9.04) byref -> x26 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -74,186 +71,123 @@ G_M9806_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
ldr w22, [fp, #0xA4]
;; size=56 bbWeight=0.01 PerfScore 0.22
G_M9806_IG02: ; bbWeight=0.01, gcrefRegs=1B00003 {x0 x1 x20 x21 x23 x24}, byrefRegs=0000 {}, byref
- add x25, x1, #16
- ; byrRegs +[x25]
- add x26, x0, #16
- ; byrRegs +[x26]
- b G_M9806_IG28
+ add x4, x1, #16
+ ; byrRegs +[x4]
+ add x5, x0, #16
+ ; byrRegs +[x5]
+ b G_M9806_IG22
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M9806_IG03: ; bbWeight=1, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs -[x24]
- cbz x20, G_M9806_IG14
- cbz x21, G_M9806_IG14
- orr w2, w3, w19
- tbnz w2, #31, G_M9806_IG14
+G_M9806_IG03: ; bbWeight=2, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref, isz
+ ; gcrRegs -[x23-x24]
ldr w2, [x20, #0x08]
- cmp w2, w19
- blt G_M9806_IG14
- ldr w2, [x21, #0x08]
- cmp w2, w19
- blt G_M9806_IG14
- b G_M9806_IG05
- ;; size=44 bbWeight=1 PerfScore 13.50
-G_M9806_IG04: ; bbWeight=1.98, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
- ; gcrRegs -[x23]
- add x27, x20, #16
- ; byrRegs +[x27]
+ cmp w3, w2
+ bhs G_M9806_IG30
+ add x25, x20, #16
+ ; byrRegs +[x25]
ubfiz x2, x3, #3, #32
- ldr x24, [x27, x2]
+ ldr x24, [x25, x2]
; gcrRegs +[x24]
- add x28, x21, #16
- ; byrRegs +[x28]
- ldr x23, [x28, x2]
+ ldr w6, [x21, #0x08]
+ cmp w3, w6
+ bhs G_M9806_IG30
+ add x26, x21, #16
+ ; byrRegs +[x26]
+ ldr x23, [x26, x2]
; gcrRegs +[x23]
mov w22, wzr
- b G_M9806_IG27
- ;; size=28 bbWeight=1.98 PerfScore 18.81
-G_M9806_IG05: ; bbWeight=7.92, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
+ b G_M9806_IG21
+ ;; size=52 bbWeight=2 PerfScore 37.00
+G_M9806_IG04: ; bbWeight=8, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref, isz
; gcrRegs -[x24]
- ; byrRegs -[x27-x28]
+ ; byrRegs -[x25-x26]
mov w22, wzr
- cbz x1, G_M9806_IG09
- ;; size=8 bbWeight=7.92 PerfScore 11.88
-G_M9806_IG06: ; bbWeight=3.96, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
- cbz x23, G_M9806_IG09
+ cbz x1, G_M9806_IG08
+ ;; size=8 bbWeight=8 PerfScore 12.00
+G_M9806_IG05: ; bbWeight=4, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref, isz
+ cbz x23, G_M9806_IG08
ldr w2, [x1, #0x08]
cmp w2, #101
- blt G_M9806_IG09
+ blt G_M9806_IG08
ldr w2, [x23, #0x08]
cmp w2, #101
- blt G_M9806_IG09
+ blt G_M9806_IG08
add x2, x23, #16
; byrRegs +[x2]
- ;; size=32 bbWeight=3.96 PerfScore 41.58
-G_M9806_IG07: ; bbWeight=15.68, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
+ ;; size=32 bbWeight=4 PerfScore 42.00
+G_M9806_IG06: ; bbWeight=15.84, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0034 {x2 x4 x5}, byref, isz
; gcrRegs -[x23]
- ubfiz x4, x22, #3, #32
- ldr d16, [x25, x4]
- str d16, [x2, x4]
+ ubfiz x6, x22, #3, #32
+ ldr d16, [x4, x6]
+ str d16, [x2, x6]
add w22, w22, #1
cmp w22, #101
- blt G_M9806_IG07
- ;; size=24 bbWeight=15.68 PerfScore 109.77
-G_M9806_IG08: ; bbWeight=7.92, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
+ blt G_M9806_IG06
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
+G_M9806_IG07: ; bbWeight=8, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref
; byrRegs -[x2]
- b G_M9806_IG11
- ;; size=4 bbWeight=7.92 PerfScore 7.92
-G_M9806_IG09: ; bbWeight=0.04, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref
+ b G_M9806_IG10
+ ;; size=4 bbWeight=8 PerfScore 8.00
+G_M9806_IG08: ; bbWeight=0.04, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref
; gcrRegs +[x23]
ldr wzr, [x1, #0x08]
add x2, x23, #16
; byrRegs +[x2]
;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M9806_IG10: ; bbWeight=0.16, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
- ldr w4, [x1, #0x08]
- cmp w22, w4
- bhs G_M9806_IG36
- ubfiz x4, x22, #3, #32
- ldr d16, [x25, x4]
- ldr w5, [x23, #0x08]
- cmp w22, w5
- bhs G_M9806_IG36
- str d16, [x2, x4]
+G_M9806_IG09: ; bbWeight=0.16, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0034 {x2 x4 x5}, byref, isz
+ ldr w6, [x1, #0x08]
+ cmp w22, w6
+ bhs G_M9806_IG30
+ ubfiz x6, x22, #3, #32
+ ldr d16, [x4, x6]
+ ldr w7, [x23, #0x08]
+ cmp w22, w7
+ bhs G_M9806_IG30
+ str d16, [x2, x6]
add w22, w22, #1
cmp w22, #101
- blt G_M9806_IG10
- ;; size=48 bbWeight=0.16 PerfScore 2.53
-G_M9806_IG11: ; bbWeight=7.92, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs -[x23]
- ; byrRegs -[x2]
- add w3, w3, #1
- cmp w3, w19
- blt G_M9806_IG04
- ;; size=12 bbWeight=7.92 PerfScore 15.84
-G_M9806_IG12: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x1]
- ; byrRegs -[x25-x26]
- b G_M9806_IG17
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M9806_IG13: ; bbWeight=0.02, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs +[x0-x1]
- ; byrRegs +[x25-x26]
- ldr w2, [x20, #0x08]
- cmp w3, w2
- bhs G_M9806_IG36
- add x27, x20, #16
- ; byrRegs +[x27]
- ubfiz x2, x3, #3, #32
- ldr x24, [x27, x2]
- ; gcrRegs +[x24]
- ldr w4, [x21, #0x08]
- cmp w3, w4
- bhs G_M9806_IG36
- add x28, x21, #16
- ; byrRegs +[x28]
- ldr x23, [x28, x2]
- ; gcrRegs +[x23]
- mov w22, wzr
- b G_M9806_IG27
- ;; size=52 bbWeight=0.02 PerfScore 0.37
-G_M9806_IG14: ; bbWeight=0.08, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref
...
-60 (-7.43%) : 43605.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -9,16 +9,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 15, 12.06) ref -> x19 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T08] ( 12, 12.04) ref -> x19 class-hnd single-def <float[][]>
; V01 arg1 [V01,T09] ( 9, 12.04) ref -> x20 class-hnd single-def <int[][]>
; V02 arg2 [V02,T21] ( 3, 3 ) ref -> x23 class-hnd single-def <double[]>
; V03 arg3 [V03,T20] ( 4, 6 ) ref -> x22 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T10] ( 5, 12 ) int -> x21 single-def
+; V04 arg4 [V04,T10] ( 4, 12 ) int -> x21 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T03] ( 17, 37.52) int -> x25
-; V08 loc3 [V08,T16] ( 6, 10 ) ref -> x27 class-hnd <float[]>
-; V09 loc4 [V09,T00] ( 13, 56 ) int -> x24
+; V07 loc2 [V07,T03] ( 12, 38.50) int -> x25
+; V08 loc3 [V08,T16] ( 5, 10 ) ref -> x27 class-hnd <float[]>
+; V09 loc4 [V09,T00] ( 12, 56 ) int -> x24
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T05] ( 16, 22.58) int -> x26
;* V12 loc7 [V12 ] ( 0, 0 ) float -> zero-ref
@@ -40,7 +40,7 @@
; V28 cse2 [V28,T15] ( 10, 10 ) long -> x8 multi-def "CSE - moderate"
; V29 cse3 [V29,T14] ( 4, 11.88) long -> x1 "CSE - aggressive"
; V30 cse4 [V30,T22] ( 4, 0.12) long -> x1 "CSE - conservative"
-; V31 cse5 [V31,T07] ( 9, 17 ) int -> x28 "CSE - aggressive"
+; V31 cse5 [V31,T07] ( 7, 16 ) int -> x28 "CSE - aggressive"
; V32 cse6 [V32,T06] ( 14, 18 ) int -> x5 multi-def "CSE - aggressive"
; TEMP_01 double -> [fp+0x10]
;
@@ -67,58 +67,29 @@ G_M56974_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w26, [fp, #0x9C]
;; size=60 bbWeight=0.01 PerfScore 0.23
G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
- b G_M56974_IG15
+ b G_M56974_IG11
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M56974_IG03: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG03: ; bbWeight=2, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
- cbz x19, G_M56974_IG08
- tbnz w25, #31, G_M56974_IG08
- ldr w0, [x19, #0x08]
- cmp w0, w28
- blt G_M56974_IG08
- b G_M56974_IG05
- ;; size=24 bbWeight=1 PerfScore 7.50
-G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- add x0, x19, #16
- ; byrRegs +[x0]
- ldr x27, [x0, w25, UXTW #3]
- ; gcrRegs +[x27]
- mov w24, wzr
- cmp w21, #0
- bgt G_M56974_IG10
- ;; size=20 bbWeight=1.98 PerfScore 10.89
-G_M56974_IG05: ; bbWeight=7.92, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x27]
- ; byrRegs -[x0]
- add w25, w25, #1
- cmp w28, w25
- bgt G_M56974_IG04
- ;; size=12 bbWeight=7.92 PerfScore 15.84
-G_M56974_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20 x22-x23]
- b G_M56974_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19-x20 x22-x23]
ldr w0, [x19, #0x08]
cmp w25, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x19, #16
; byrRegs +[x0]
ldr x27, [x0, w25, UXTW #3]
; gcrRegs +[x27]
mov w24, wzr
cmp w21, #0
- bgt G_M56974_IG10
- ;; size=32 bbWeight=0.02 PerfScore 0.20
-G_M56974_IG08: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+ bgt G_M56974_IG06
+ ;; size=32 bbWeight=2 PerfScore 20.00
+G_M56974_IG04: ; bbWeight=8, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
; byrRegs -[x0]
add w25, w25, #1
cmp w28, w25
- bgt G_M56974_IG07
- ;; size=12 bbWeight=0.08 PerfScore 0.16
-G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ bgt G_M56974_IG03
+ ;; size=12 bbWeight=8 PerfScore 16.00
+G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20 x22-x23]
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
@@ -130,55 +101,55 @@ G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, sp, #112
ret lr
;; size=36 bbWeight=1 PerfScore 9.50
-G_M56974_IG10: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20 x22-x23 x27]
ldr w0, [x20, #0x08]
cmp w25, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x20, #16
; byrRegs +[x0]
ldr x0, [x0, w25, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- tbnz w24, #31, G_M56974_IG12
+ tbnz w24, #31, G_M56974_IG08
;; size=24 bbWeight=2 PerfScore 18.00
-G_M56974_IG11: ; bbWeight=16, gcrefRegs=8D80001 {x0 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG07: ; bbWeight=16, gcrefRegs=8D80001 {x0 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w24
- bgt G_M56974_IG14
+ bgt G_M56974_IG10
;; size=12 bbWeight=16 PerfScore 72.00
-G_M56974_IG12: ; bbWeight=8, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG08: ; bbWeight=8, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w21
- blt G_M56974_IG10
+ blt G_M56974_IG06
;; size=12 bbWeight=8 PerfScore 16.00
-G_M56974_IG13: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
+G_M56974_IG09: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x27]
- b G_M56974_IG03
+ b G_M56974_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M56974_IG14: ; bbWeight=0.50, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
+G_M56974_IG10: ; bbWeight=0.50, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
; gcrRegs +[x27]
add w26, w25, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M56974_IG15: ; bbWeight=1, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=1, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w28, [x23, #0x08]
cmp w28, w26
- ble G_M56974_IG12
- cbz x20, G_M56974_IG21
- cbz x19, G_M56974_IG21
- tbnz w26, #31, G_M56974_IG21
+ ble G_M56974_IG08
+ cbz x20, G_M56974_IG17
+ cbz x19, G_M56974_IG17
+ tbnz w26, #31, G_M56974_IG17
ldr w0, [x20, #0x08]
cmp w0, w28
- blt G_M56974_IG21
+ blt G_M56974_IG17
ldr w0, [x19, #0x08]
cmp w0, w28
- blt G_M56974_IG21
+ blt G_M56974_IG17
;; size=48 bbWeight=1 PerfScore 16.50
-G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x27, #0x08]
cmp w24, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x27, #16
; byrRegs +[x0]
ldr s16, [x0, w24, UXTW #2]
@@ -208,15 +179,15 @@ G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27},
; gcrRegs +[x4]
add w5, w24, #1
sxtw w6, w5
- tbnz w6, #31, G_M56974_IG19
+ tbnz w6, #31, G_M56974_IG15
;; size=100 bbWeight=3.96 PerfScore 134.64
-G_M56974_IG17: ; bbWeight=15.84, gcrefRegs=8D80018 {x3 x4 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=15.84, gcrefRegs=8D80018 {x3 x4 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr w0, [x4, #0x08]
cmp w0, w6
- ble G_M56974_IG19
+ ble G_M56974_IG15
;; size=12 bbWeight=15.84 PerfScore 71.28
-G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG14: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x4]
add x0, x19, #16
; byrRegs +[x0]
@@ -225,16 +196,16 @@ G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
ldr w0, [x7, #0x08]
; byrRegs -[x0]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x7, #16
; byrRegs +[x0]
ubfiz x8, x5, #2, #32
ldr s16, [x0, x8]
fcvt d16, s16
fcmp d16, d8
- ble G_M56974_IG20
+ ble G_M56974_IG16
;; size=44 bbWeight=1.98 PerfScore 34.65
-G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x7]
; byrRegs -[x0]
add x8, x19, #16
@@ -244,7 +215,7 @@ G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
; byrRegs -[x8]
ldr w0, [x8, #0x08]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x8, #16
; byrRegs +[x0]
ubfiz x8, x5, #2, #32
@@ -254,23 +225,23 @@ G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
ldr w0, [x3, #0x08]
; byrRegs -[x0]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x3, #16
; byrRegs +[x0]
str w25, [x0, x8]
;; size=56 bbWeight=1.98 PerfScore 38.61
-G_M56974_IG20: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
; byrRegs -[x0]
add w26, w26, #1
cmp w28, w26
- bgt G_M56974_IG16
- b G_M56974_IG12
+ bgt G_M56974_IG12
+ b G_M56974_IG08
;; size=16 bbWeight=3.96 PerfScore 11.88
-G_M56974_IG21: ; bbWeight=0.04, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG17: ; bbWeight=0.04, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x27, #0x08]
cmp w24, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
...
coreclr_tests.run.osx.arm64.checked.mch
-172 (-32.33%) : 299093.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
@@ -10,180 +10,114 @@
; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 9, 4.03) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
-; V01 loc0 [V01,T07] ( 10, 2.57) int -> x23
-; V02 loc1 [V02,T02] ( 14,123.41) ref -> x22 class-hnd <System.Collections.Generic.List`1[NamedSet]>
-; V03 loc2 [V03,T08] ( 4, 1.55) ubyte -> x20
-; V04 loc3 [V04,T03] ( 18, 74.64) int -> x24
-; V05 loc4 [V05,T01] ( 10,130.09) int -> x21
+; V00 arg0 [V00,T06] ( 5, 3.53) ref -> x19 class-hnd single-def <System.Collections.Generic.List`1[NamedSet][]>
+; V01 loc0 [V01,T07] ( 5, 2.59) int -> x23
+; V02 loc1 [V02,T02] ( 8,123.41) ref -> x22 class-hnd <System.Collections.Generic.List`1[NamedSet]>
+; V03 loc2 [V03,T09] ( 2, 1.55) ubyte -> x21
+; V04 loc3 [V04,T03] ( 9, 74.64) int -> x20
+; V05 loc4 [V05,T01] ( 8,130.09) int -> x21
; V06 loc5 [V06,T00] ( 6,380.63) int -> x20
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T04] ( 6, 63.09) ref -> x26 class-hnd "Inlining Arg" <<unknown class>>
-; V09 tmp2 [V09,T05] ( 6, 63.09) ref -> x25 "arr expr"
+; V08 tmp1 [V08,T04] ( 3, 63.09) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
+; V09 tmp2 [V09,T05] ( 3, 63.09) ref -> x0 "arr expr"
+; V10 cse0 [V10,T08] ( 3, 1.55) int -> x0 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M3612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
- stp x25, x26, [sp, #0x40]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- ldr x19, [fp, #0x88]
+ ldr x19, [fp, #0x78]
; gcrRegs +[x19]
- ldr w23, [fp, #0x84]
- ldr x22, [fp, #0x78]
+ ldr w23, [fp, #0x74]
+ ldr x22, [fp, #0x68]
; gcrRegs +[x22]
- ldp w20, w21, [fp, #0x68]
- ;; size=40 bbWeight=1 PerfScore 13.50
+ ldp w20, w21, [fp, #0x58]
+ ;; size=36 bbWeight=1 PerfScore 12.50
G_M3612_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
- b G_M3612_IG17
+ b G_M3612_IG11
;; size=4 bbWeight=1 PerfScore 1.00
-G_M3612_IG03: ; bbWeight=0.51, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M3612_IG03: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
+ cmp w23, w0
+ bhs G_M3612_IG15
add x0, x19, #16
; byrRegs +[x0]
ldr x22, [x0, w23, UXTW #3]
; gcrRegs +[x22]
- ;; size=8 bbWeight=0.51 PerfScore 1.80
-G_M3612_IG04: ; bbWeight=0.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=0.52 PerfScore 2.59
+G_M3612_IG04: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- mov w20, wzr
+ mov w21, wzr
ldr w0, [x22, #0x10]
- sub w24, w0, #2
- tbnz w24, #31, G_M3612_IG06
- ;; size=16 bbWeight=0.51 PerfScore 2.57
-G_M3612_IG05: ; bbWeight=10.41, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ sub w20, w0, #2
+ tbnz w20, #31, G_M3612_IG06
+ ;; size=16 bbWeight=0.52 PerfScore 2.59
+G_M3612_IG05: ; bbWeight=10.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
- cmp w24, w0
- bhs G_M3612_IG24
- ldr x25, [x22, #0x08]
- ; gcrRegs +[x25]
- ldr w0, [x25, #0x08]
- cmp w24, w0
- bhs G_M3612_IG21
- add x0, x25, #16
+ cmp w20, w0
+ bhs G_M3612_IG18
+ ldr x0, [x22, #0x08]
+ ; gcrRegs +[x0]
+ ldr w1, [x0, #0x08]
+ cmp w20, w1
+ bhs G_M3612_IG15
+ add x0, x0, #16
+ ; gcrRegs -[x0]
; byrRegs +[x0]
- ldr x0, [x0, w24, UXTW #3]
+ ldr x0, [x0, w20, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ldr x26, [x0, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x28]
+ ldr x0, [x0, #0x08]
+ ldr w1, [x0, #0x28]
+ ldr w0, [x0, #0x30]
; gcrRegs -[x0]
- ldr w1, [x26, #0x30]
- sub w0, w0, w1
+ sub w0, w1, w0
cbz w0, G_M3612_IG04
mov x0, x22
; gcrRegs +[x0]
- mov w1, w24
+ mov w1, w20
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0 x25-x26]
+ ; gcrRegs -[x0]
; gcr arg pop 0
- sub w24, w24, #1
- tbz w24, #31, G_M3612_IG05
- ;; size=92 bbWeight=10.41 PerfScore 353.92
-G_M3612_IG06: ; bbWeight=1.03, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbnz w20, G_M3612_IG04
- ;; size=4 bbWeight=1.03 PerfScore 1.03
-G_M3612_IG07: ; bbWeight=0.51, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ sub w20, w20, #1
+ tbz w20, #31, G_M3612_IG05
+ ;; size=92 bbWeight=10.51 PerfScore 357.49
+G_M3612_IG06: ; bbWeight=1.04, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ cbnz w21, G_M3612_IG04
+ ;; size=4 bbWeight=1.04 PerfScore 1.04
+G_M3612_IG07: ; bbWeight=0.52, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w0, [x22, #0x10]
sub w21, w0, #2
- tbz w21, #31, G_M3612_IG16
- ;; size=12 bbWeight=0.51 PerfScore 2.31
-G_M3612_IG08: ; bbWeight=0.51, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ tbz w21, #31, G_M3612_IG10
+ ;; size=12 bbWeight=0.52 PerfScore 2.33
+G_M3612_IG08: ; bbWeight=0.52, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
add w23, w23, #1
ldr w0, [x19, #0x08]
cmp w0, w23
- ble G_M3612_IG22
+ ble G_M3612_IG16
b G_M3612_IG03
- ;; size=20 bbWeight=0.51 PerfScore 3.08
-G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M3612_IG15
- tbnz w23, #31, G_M3612_IG15
+ ;; size=20 bbWeight=0.52 PerfScore 3.11
+G_M3612_IG09: ; bbWeight=0.49, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr wzr, [x19, #0x08]
b G_M3612_IG08
- ;; size=16 bbWeight=0.49 PerfScore 2.95
-G_M3612_IG10: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x19, #0x08]
- cmp w23, w0
- bhs G_M3612_IG21
- add x0, x19, #16
- ; byrRegs +[x0]
- ldr x22, [x0, w23, UXTW #3]
- ; gcrRegs +[x22]
- ;; size=20 bbWeight=0.01 PerfScore 0.04
-G_M3612_IG11: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x0]
- mov w20, wzr
- ldr w0, [x22, #0x10]
- sub w24, w0, #2
- tbnz w24, #31, G_M3612_IG13
- ;; size=16 bbWeight=0.01 PerfScore 0.03
-G_M3612_IG12: ; bbWeight=0.11, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x22, #0x10]
- cmp w24, w0
- bhs G_M3612_IG24
- ldr x25, [x22, #0x08]
- ; gcrRegs +[x25]
- ldr w0, [x25, #0x08]
- cmp w24, w0
- bhs G_M3612_IG21
- add x0, x25, #16
- ; byrRegs +[x0]
- ldr x0, [x0, w24, UXTW #3]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x26, [x0, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x28]
- ; gcrRegs -[x0]
- ldr w1, [x26, #0x30]
- sub w0, w0, w1
- cbz w0, G_M3612_IG11
- mov x0, x22
- ; gcrRegs +[x0]
- mov w1, w24
- movz x2, #0xD1FFAB1E // code for <unknown method>
- movk x2, #0xD1FFAB1E LSL #16
- movk x2, #1 LSL #32
- ldr x2, [x2]
- blr x2
- ; gcrRegs -[x0 x25-x26]
- ; gcr arg pop 0
- sub w24, w24, #1
- tbz w24, #31, G_M3612_IG12
- ;; size=92 bbWeight=0.11 PerfScore 3.57
-G_M3612_IG13: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- cbnz w20, G_M3612_IG11
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M3612_IG14: ; bbWeight=0.01, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x22, #0x10]
- sub w21, w0, #2
- tbz w21, #31, G_M3612_IG16
- ;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M3612_IG15: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x22]
- add w23, w23, #1
- ldr w0, [x19, #0x08]
- cmp w0, w23
- ble G_M3612_IG22
- b G_M3612_IG10
- ;; size=20 bbWeight=0.01 PerfScore 0.03
-G_M3612_IG16: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.49 PerfScore 1.97
+G_M3612_IG10: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x22]
sub w20, w21, #1
;; size=4 bbWeight=9.69 PerfScore 4.84
-G_M3612_IG17: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M3612_IG19
+G_M3612_IG11: ; bbWeight=9.69, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w20, #31, G_M3612_IG13
;; size=4 bbWeight=9.69 PerfScore 9.69
-G_M3612_IG18: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M3612_IG12: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
mov x0, x22
; gcrRegs +[x0]
mov w1, w20
@@ -195,33 +129,32 @@ G_M3612_IG18: ; bbWeight=90.31, gcrefRegs=480000 {x19 x22}, byrefRegs=000
blr x3
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M3612_IG23
...
+64 (+1.62%) : 240156.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -14,9 +14,9 @@
; V02 arg2 [V02,T13] ( 5, 8.49) 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.96) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 61, 60.81) int -> x25 ld-addr-op
-; V06 loc2 [V06,T03] ( 30, 26.56) ushort -> [fp+0xFC]
-; V07 loc3 [V07,T42] ( 13, 4.81) int -> [fp+0xF8]
+; V05 loc1 [V05,T01] ( 66, 60.81) int -> x25 ld-addr-op
+; V06 loc2 [V06,T03] ( 33, 26.56) ushort -> [fp+0xFC]
+; V07 loc3 [V07,T42] ( 16, 4.81) int -> [fp+0xF8]
; V08 loc4 [V08,T39] ( 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,T18] ( 7, 7.82) int -> [fp+0xF0]
@@ -310,8 +310,8 @@
; V298 cse5 [V298,T74] ( 3, 1.75) int -> x2 "CSE - conservative"
; V299 cse6 [V299,T81] ( 3, 1.12) long -> x0 "CSE - conservative"
; V300 cse7 [V300,T00] ( 38,185.88) ref -> registers multi-def "CSE - aggressive"
-; V301 cse8 [V301,T05] ( 18, 23.04) int -> x27 "CSE - aggressive"
-; V302 cse9 [V302,T06] ( 15, 19.67) byref -> x28 "CSE - aggressive"
+; V301 cse8 [V301,T05] ( 19, 23.04) int -> x27 "CSE - aggressive"
+; V302 cse9 [V302,T06] ( 16, 19.67) byref -> x28 "CSE - aggressive"
; V303 cse10 [V303,T16] ( 14, 9.86) int -> registers "CSE - moderate"
; V304 cse11 [V304,T32] ( 3, 5.87) int -> x0 "CSE - moderate"
; V305 rat0 [V305,T24] ( 6, 7.18) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -623,7 +623,7 @@ G_M36935_IG20: ; bbWeight=1.96, gcrefRegs=5300000 {x20 x21 x24 x26}, byre
; gcrRegs +[x3]
str x3, [fp, #0x80] // [V13 loc9]
; GC ptr vars +{V13}
- cbnz x24, G_M36935_IG107
+ cbnz x24, G_M36935_IG109
;; size=36 bbWeight=1.96 PerfScore 19.55
G_M36935_IG21: ; bbWeight=1.96, gcVars=00000000000000000400000000800000 {V13 V202}, gcrefRegs=1D300008 {x3 x20 x21 x24 x26 x27 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
cbnz x27, G_M36935_IG76
@@ -726,7 +726,7 @@ G_M36935_IG28: ; bbWeight=0.44, gcVars=00000000000000000400000000800000 {
add x0, x0, w5, UXTW
asr x0, x0, #32
cmp w0, w2
- bgt G_M36935_IG109
+ bgt G_M36935_IG111
str w0, [fp, #0xE0] // [V19 loc15]
str x1, [fp, #0xB8] // [V134 tmp113]
mov x2, x1
@@ -1081,7 +1081,7 @@ G_M36935_IG62: ; 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_IG110
+ cbnz w27, G_M36935_IG112
b G_M36935_IG05
;; size=32 bbWeight=1.06 PerfScore 12.16
G_M36935_IG63: ; bbWeight=0.00, gcVars=00000000000400000400000000800000 {V13 V202 V208}, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
@@ -1208,7 +1208,7 @@ G_M36935_IG71: ; 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_IG111
+ bne G_M36935_IG113
mov x2, xzr
; gcrRegs +[x2]
;; size=28 bbWeight=0.45 PerfScore 2.92
@@ -1217,14 +1217,14 @@ G_M36935_IG72: ; 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_IG112
- cbz x3, G_M36935_IG114
+ cbnz x5, G_M36935_IG114
+ cbz x3, G_M36935_IG116
ldr x1, [x3]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
cmp x1, x0
- bne G_M36935_IG115
+ bne G_M36935_IG117
;; size=40 bbWeight=0.90 PerfScore 8.53
G_M36935_IG73: ; bbWeight=0.90, gcVars=00000000000000000000000000000000 {}, gcrefRegs=5300008 {x3 x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, gcvars, byref
; gcrRegs -[x2 x5 x28]
@@ -1235,7 +1235,7 @@ G_M36935_IG73: ; bbWeight=0.90, gcVars=00000000000000000000000000000000 {
G_M36935_IG74: ; 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_IG116
+ cbz x28, G_M36935_IG118
;; size=8 bbWeight=0.90 PerfScore 1.79
G_M36935_IG75: ; bbWeight=0.45, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
mov x27, x28
@@ -1246,7 +1246,7 @@ G_M36935_IG76: ; 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_IG117
+ blt G_M36935_IG119
;; size=16 bbWeight=0.90 PerfScore 5.83
G_M36935_IG77: ; bbWeight=0.90, gcrefRegs=D300000 {x20 x21 x24 x26 x27}, byrefRegs=480000 {x19 x22}, byref, isz
ldr w2, [x19, #0x08]
@@ -1584,9 +1584,10 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefR
bhs G_M36935_IG85
add w25, w25, #1
cmp w27, w25
- bhi G_M36935_IG104
- b G_M36935_IG86
- ;; size=32 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG86
+ tbnz w25, #31, G_M36935_IG106
+ b G_M36935_IG104
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M36935_IG103: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
mov w2, #10
madd w5, w5, w2, w6
@@ -1596,38 +1597,57 @@ G_M36935_IG103: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefR
bls G_M36935_IG86
;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG104: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
- cmp w25, w27
- bhs G_M36935_IG92
ldrh w2, [x28, w25, UXTW #2]
sxtw w6, w2
sub w2, w6, #48
cmp w2, #9
- bhi G_M36935_IG106
+ bhi G_M36935_IG108
movz w2, #0xD1FFAB1E
movk w2, #15 LSL #16
cmp w5, w2
blt G_M36935_IG103
- b G_M36935_IG106
- ;; size=48 bbWeight=0 PerfScore 0.00
+ b G_M36935_IG108
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG105: ; 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_IG86
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG106: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
+ cmp w25, w27
+ bhs G_M36935_IG92
+ ldrh w6, [x28, w25, UXTW #2]
+ sub w2, w6, #48
+ cmp w2, #9
+ bhi G_M36935_IG108
+ movz w2, #0xD1FFAB1E
+ movk w2, #15 LSL #16
+ cmp w5, w2
+ blt G_M36935_IG105
+ b G_M36935_IG108
+ ;; size=44 bbWeight=0 PerfScore 0.00
+G_M36935_IG107: ; 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_IG86
ldrh w6, [x28, w25, UXTW #2]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M36935_IG106: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
+G_M36935_IG108: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=10480000 {x19 x22 x28}, byref, isz
cmp w6, #32
- beq G_M36935_IG105
+ beq G_M36935_IG107
str w5, [fp, #0xF8] // [V07 loc3]
mov w2, w6
b G_M36935_IG42
;; size=20 bbWeight=0 PerfScore 0.00
-G_M36935_IG107: ; bbWeight=0, gcVars=00000000000000000400000000800000 {V13 V202}, gcrefRegs=15300008 {x3 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+G_M36935_IG109: ; bbWeight=0, gcVars=00000000000000000400000000800000 {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_IG108
+ cbz w27, G_M36935_IG110
ldr x0, [fp, #0x30] // [V202 tmp181]
; byrRegs +[x0]
mov w1, w27
@@ -1638,7 +1658,7 @@ G_M36935_IG107: ; bbWeight=0, gcVars=00000000000000000400000000800000 {V1
mov x28, x0
; gcrRegs +[x28]
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG108: ; bbWeight=0, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
+G_M36935_IG110: ; bbWeight=0, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x0]
mov x0, x24
; gcrRegs +[x0]
@@ -1662,13 +1682,13 @@ G_M36935_IG108: ; 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_IG109: ; bbWeight=0, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
+G_M36935_IG111: ; 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_IG56
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+G_M36935_IG112: ; 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]
@@ -1689,7 +1709,7 @@ G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; gcr arg pop 0
b G_M36935_IG05
;; size=56 bbWeight=0 PerfScore 0.00
-G_M36935_IG111: ; bbWeight=0, gcVars=00000000000000000400000000800000 {V13 V202}, gcrefRegs=15300008 {x3 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref
+G_M36935_IG113: ; bbWeight=0, gcVars=00000000000000000400000000800000 {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
@@ -1706,14 +1726,14 @@ G_M36935_IG111: ; bbWeight=0, gcVars=00000000000000000400000000800000 {V1
; gcrRegs +[x3]
b G_M36935_IG72
;; size=32 bbWeight=0 PerfScore 0.00
-G_M36935_IG112: ; bbWeight=0, gcVars=00000000000000100400000000000000 {V20 V202}, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, gcvars, byref, isz
+G_M36935_IG114: ; bbWeight=0, gcVars=00000000000000100400000000000000 {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_IG113
- cbnz x28, G_M36935_IG113
+ cbz w2, G_M36935_IG115
+ cbnz x28, G_M36935_IG115
ldr x0, [fp, #0x30] // [V202 tmp181]
; byrRegs +[x0]
mov w1, w2
@@ -1727,7 +1747,7 @@ G_M36935_IG112: ; bbWeight=0, gcVars=00000000000000100400000000000000 {V2
ldr x5, [fp, #0x70] // [V20 loc16]
; gcrRegs +[x5]
;; size=36 bbWeight=0 PerfScore 0.00
-G_M36935_IG113: ; bbWeight=0, gcrefRegs=15300020 {x5 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
+G_M36935_IG115: ; bbWeight=0, gcrefRegs=15300020 {x5 x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x0]
mov x0, x5
; gcrRegs +[x0]
@@ -1747,13 +1767,13 @@ G_M36935_IG113: ; bbWeight=0, gcrefRegs=15300020 {x5 x20 x21 x24 x26 x28}
; gcrRegs +[x28]
b G_M36935_IG74
;; size=40 bbWeight=0 PerfScore 0.00
-G_M36935_IG114: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref
+G_M36935_IG116: ; bbWeight=0, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x0 x28]
mov x3, xzr
; gcrRegs +[x3]
b G_M36935_IG73
;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG115: ; bbWeight=0, gcVars=00000000000000000000000000800000 {V13}, gcrefRegs=5300008 {x3 x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, gcvars, byref
...
+64 (+1.72%) : 292763.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)
+112 (+3.02%) : 294422.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,T31] ( 4, 9 ) ref -> x26 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T06] ( 63, 69 ) int -> x27 ld-addr-op
-; V06 loc2 [V06,T07] ( 31, 63.50) ushort -> [fp+0xBC]
-; V07 loc3 [V07,T02] ( 12,160.50) int -> [fp+0xB8]
+; V05 loc1 [V05,T06] ( 68, 70.50) int -> x27 ld-addr-op
+; V06 loc2 [V06,T07] ( 34, 63.50) ushort -> [fp+0xBC]
+; V07 loc3 [V07,T02] ( 15,160.50) 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]
@@ -189,11 +189,11 @@
; 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,T81] ( 3, 0.01) long -> x0 "CSE - conservative"
-; V181 cse12 [V181,T04] ( 39, 80.50) long -> x25 multi-def "CSE - aggressive"
+; V181 cse12 [V181,T04] ( 40, 80.50) long -> x25 multi-def "CSE - aggressive"
; V182 cse13 [V182,T00] ( 19,227 ) long -> [fp+0x80] multi-def "CSE - aggressive"
-; V183 cse14 [V183,T14] ( 18, 35.50) int -> x28 "CSE - aggressive"
+; V183 cse14 [V183,T14] ( 19, 35.01) int -> x28 "CSE - aggressive"
; V184 cse15 [V184,T11] ( 17, 46 ) ref -> registers multi-def "CSE - aggressive"
-; V185 cse16 [V185,T24] ( 15, 14.50) byref -> [fp+0x18] spill-single-def "CSE - moderate"
+; V185 cse16 [V185,T24] ( 16, 14.50) byref -> [fp+0x18] spill-single-def "CSE - moderate"
; V186 cse17 [V186,T26] ( 3, 12 ) int -> x0 "CSE - moderate"
; V187 cse18 [V187,T75] ( 6, 0.01) long -> x3 multi-def "CSE - conservative"
; V188 cse19 [V188,T82] ( 3, 0.01) long -> x2 "CSE - conservative"
@@ -219,7 +219,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
@@ -286,7 +286,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
@@ -344,10 +344,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_IG103
+ tbnz w3, #31, G_M4730_IG109
ldr w4, [fp, #0x8C] // [V118 tmp96]
cmp w3, w4
- bhi G_M4730_IG116
+ bhi G_M4730_IG122
mov x0, x20
; gcrRegs +[x0]
ldr x1, [fp, #0x30] // [V117 tmp95]
@@ -365,13 +365,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_IG105
+ bhs G_M4730_IG111
ldr x1, [fp, #0x18] // [V185 cse16]
; 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, #0xBC] // [V06 loc2]
cmp w2, w3
@@ -421,14 +421,14 @@ G_M4730_IG13: ; bbWeight=4, gcVars=00000000000000000000000001000000 {V185
; byrRegs +[x1]
; GC ptr vars +{V185}
cmp w2, #123
- bne G_M4730_IG107
+ bne G_M4730_IG113
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_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, #0xBC] // [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, #0x18] // [V185 cse16]
; 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, #0xB0] // [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, #0xB0] // [V10 loc6]
add w27, w27, #1
cmp w28, w27
- bls G_M4730_IG111
+ bls G_M4730_IG117
ldr x3, [fp, #0x18] // [V185 cse16]
; 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, #0x18] // [V185 cse16]
@@ -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, #0x18] // [V185 cse16]
@@ -601,7 +601,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_IG111
+ bls G_M4730_IG117
ldr x2, [fp, #0x18] // [V185 cse16]
; 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, #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_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, #0x18] // [V185 cse16]
; 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_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, #0x18] // [V185 cse16]
- ; 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]
...
+112 (+3.11%) : 380872.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 -> x26 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 63, 70.50) int -> x27 ld-addr-op
-; V06 loc2 [V06,T06] ( 31, 63.50) ushort -> [fp+0xAC]
-; V07 loc3 [V07,T01] ( 12,160.50) int -> [fp+0xA8]
+; V05 loc1 [V05,T05] ( 68, 72.00) int -> x27 ld-addr-op
+; V06 loc2 [V06,T06] ( 34, 63.50) ushort -> [fp+0xAC]
+; V07 loc3 [V07,T01] ( 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]
@@ -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,T03] ( 41,122 ) long -> x25 multi-def "CSE - aggressive"
-; V181 cse12 [V181,T13] ( 18, 37 ) int -> x28 "CSE - aggressive"
-; V182 cse13 [V182,T20] ( 15, 16 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V180 cse11 [V180,T03] ( 42,122 ) long -> x25 multi-def "CSE - aggressive"
+; V181 cse12 [V181,T13] ( 19, 36.51) int -> x28 "CSE - aggressive"
+; V182 cse13 [V182,T20] ( 16, 16 ) byref -> [fp+0x10] spill-single-def "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_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
@@ -280,7 +280,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
@@ -338,10 +338,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_IG102
+ tbnz w3, #31, G_M4730_IG108
ldr w4, [fp, #0x7C] // [V118 tmp96]
cmp w3, w4
- bhi G_M4730_IG115
+ bhi G_M4730_IG121
mov x0, x20
; gcrRegs +[x0]
ldr x1, [fp, #0x28] // [V117 tmp95]
@@ -359,13 +359,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_IG104
+ bhs G_M4730_IG110
ldr x1, [fp, #0x10] // [V182 cse13]
; 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, #0xAC] // [V06 loc2]
cmp w2, w3
@@ -415,14 +415,14 @@ G_M4730_IG13: ; bbWeight=4, gcVars=00000000000000000000000000100000 {V182
; byrRegs +[x1]
; GC ptr vars +{V20 V182}
cmp w2, #123
- bne G_M4730_IG106
+ bne G_M4730_IG112
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_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, #0xAC] // [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, #0x10] // [V182 cse13]
; 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, #0xA0] // [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, #0xA0] // [V10 loc6]
add w27, w27, #1
cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldr x3, [fp, #0x10] // [V182 cse13]
; 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, #0x10] // [V182 cse13]
@@ -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, #0x10] // [V182 cse13]
@@ -596,7 +596,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_IG110
+ bls G_M4730_IG116
ldr x2, [fp, #0x10] // [V182 cse13]
; 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, #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_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, #0x10] // [V182 cse13]
; 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_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, #0x10] // [V182 cse13]
- ; 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]
- ;; size=16 bbWeight=1 PerfScore 5.50
...
+112 (+3.17%) : 376703.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 -> x26 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T05] ( 63, 70.50) int -> x27 ld-addr-op
-; V06 loc2 [V06,T06] ( 31, 63.50) ushort -> [fp+0xAC]
-; V07 loc3 [V07,T02] ( 12,160.52) int -> [fp+0xA8]
+; V05 loc1 [V05,T05] ( 68, 72.00) int -> x27 ld-addr-op
+; V06 loc2 [V06,T06] ( 34, 63.50) ushort -> [fp+0xAC]
+; V07 loc3 [V07,T02] ( 15,160.52) 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]
@@ -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] ( 50,219.53) long -> x25 multi-def "CSE - aggressive"
-; V181 cse12 [V181,T13] ( 18, 37 ) int -> x28 "CSE - aggressive"
-; V182 cse13 [V182,T20] ( 15, 16 ) byref -> [fp+0x10] spill-single-def "CSE - moderate"
+; V180 cse11 [V180,T00] ( 51,219.53) long -> x25 multi-def "CSE - aggressive"
+; V181 cse12 [V181,T13] ( 19, 36.51) int -> x28 "CSE - aggressive"
+; V182 cse13 [V182,T20] ( 16, 16 ) byref -> [fp+0x10] spill-single-def "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_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
@@ -280,7 +280,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
@@ -338,10 +338,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_IG102
+ tbnz w3, #31, G_M4730_IG108
ldr w4, [fp, #0x7C] // [V118 tmp96]
cmp w3, w4
- bhi G_M4730_IG115
+ bhi G_M4730_IG121
mov x0, x20
; gcrRegs +[x0]
ldr x1, [fp, #0x28] // [V117 tmp95]
@@ -359,13 +359,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_IG104
+ bhs G_M4730_IG110
ldr x1, [fp, #0x10] // [V182 cse13]
; 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, #0xAC] // [V06 loc2]
cmp w2, w3
@@ -415,14 +415,14 @@ G_M4730_IG13: ; bbWeight=4, gcVars=00000000000000000000000000100000 {V182
; byrRegs +[x1]
; GC ptr vars +{V20 V182}
cmp w2, #123
- bne G_M4730_IG106
+ bne G_M4730_IG112
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_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, #0xAC] // [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, #0x10] // [V182 cse13]
; 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, #0xA0] // [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, #0xA0] // [V10 loc6]
add w27, w27, #1
cmp w28, w27
- bls G_M4730_IG110
+ bls G_M4730_IG116
ldr x3, [fp, #0x10] // [V182 cse13]
; 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, #0x10] // [V182 cse13]
@@ -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, #0x10] // [V182 cse13]
@@ -596,7 +596,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_IG110
+ bls G_M4730_IG116
ldr x2, [fp, #0x10] // [V182 cse13]
; 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, #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_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, #0x10] // [V182 cse13]
; 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_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, #0x10] // [V182 cse13]
- ; 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]
- ;; size=16 bbWeight=1 PerfScore 5.50
...
libraries.crossgen2.osx.arm64.checked.mch
-28 (-20.59%) : 84568.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint
@@ -9,11 +9,11 @@
; Final local variable assignments
;
; V00 loc0 [V00,T04] ( 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 -> x22 hoist "CSE - aggressive"
-; V05 cse1 [V05,T03] ( 2, 9 ) long -> x21 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> x22 hoist "CSE - aggressive"
+; V05 cse1 [V05,T03] ( 2, 8.92) long -> x21 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,19 +38,17 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
mov w0, w20
mov x11, x21
ldr x1, [x11]
blr x1
- cmp w20, #0xD1FFAB1E
- bhs G_M39919_IG06
str w0, [x22, w20, UXTW #2]
add w20, w20, #1
cmp w20, #255
bls G_M39919_IG03
- ;; size=40 bbWeight=8 PerfScore 76.00
+ ;; size=32 bbWeight=7.92 PerfScore 63.36
G_M39919_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
mov x0, x19
@@ -62,16 +60,8 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M39919_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x19]
- adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
- add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x0, [x0]
- blr x0
- brk_unix #0
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 16, PerfScore 92.00, instruction count 34, allocated bytes for code 136 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 108, prolog size 16, PerfScore 79.36, instruction count 27, allocated bytes for code 108 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ 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.pmi.osx.arm64.checked.mch
-16 (-12.90%) : 112824.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
-12 (-0.36%) : 462557.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.91) 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,T48] ( 5, 2.73) ref -> x24 class-hnd single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T00] ( 71, 37.81) int -> x25 ld-addr-op
-; V06 loc2 [V06,T10] ( 35, 10.73) ushort -> registers
-; V07 loc3 [V07,T33] ( 12, 4.98) int -> [fp+0x7C]
+; V05 loc1 [V05,T00] ( 66, 37.81) int -> x25 ld-addr-op
+; V06 loc2 [V06,T10] ( 34, 10.73) ushort -> registers
+; V07 loc3 [V07,T33] ( 15, 4.98) int -> [fp+0x7C]
; V08 loc4 [V08,T43] ( 5, 3.39) 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.83) int -> x28
; V11 loc7 [V11,T14] ( 14, 9.84) 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,T15] ( 12, 9.79) 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.49) int -> [fp+0x74] spill-single-def
; V16 loc12 [V16,T31] ( 3, 5.16) ushort -> x0
-; V17 loc13 [V17,T65] ( 5, 0.14) int -> x2
+; V17 loc13 [V17,T65] ( 5, 0.14) int -> x3
; V18 loc14 [V18,T44] ( 5, 3.34) ref -> [fp+0x48] class-hnd spill-single-def <System.ISpanFormattable>
; V19 loc15 [V19 ] ( 5, 0.08) int -> [fp+0x68] do-not-enreg[X] addr-exposed ld-addr-op
; V20 loc16 [V20,T45] ( 5, 3.19) 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.03) ref -> x1
;* V23 tmp2 [V23 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp3 [V24,T46] ( 3, 3.18) ref -> x26
+; V24 tmp3 [V24,T46] ( 3, 3.18) 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.DateTime>
; V33 tmp12 [V33,T84] ( 3, 0.00) 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,T47] ( 3, 3.17) ref -> x26 "guarded devirt return temp"
+; V35 tmp14 [V35,T47] ( 3, 3.17) 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.59) int -> x1 "Inlining Arg"
; V57 tmp36 [V57,T49] ( 3, 2.69) 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,T50] ( 3, 2.69) int -> x27 "Inlining Arg"
-; V60 tmp39 [V60,T53] ( 2, 1.80) byref -> x26 single-def "Inlining Arg"
+; V59 tmp38 [V59,T50] ( 3, 2.69) 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"
@@ -120,10 +120,10 @@
; V108 tmp87 [V108,T26] ( 2, 6.52) byref -> x1 "Inlining Arg"
; V109 tmp88 [V109,T27] ( 2, 6.52) long -> x2 "Inlining Arg"
;* V110 tmp89 [V110 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V111 tmp90 [V111,T85] ( 5, 0.00) int -> x28 "Inline stloc first use temp"
-; V112 tmp91 [V112,T88] ( 3, 0.00) byref -> x0 "Span.get_Item ptrToSpan"
-; V113 tmp92 [V113,T86] ( 5, 0.00) int -> x0 "Inline stloc first use temp"
-; V114 tmp93 [V114,T89] ( 3, 0.00) byref -> x1 "Span.get_Item ptrToSpan"
+; V111 tmp90 [V111,T85] ( 5, 0.00) int -> x0 "Inline stloc first use temp"
+; V112 tmp91 [V112,T88] ( 3, 0.00) byref -> x1 "Span.get_Item ptrToSpan"
+; V113 tmp92 [V113,T86] ( 5, 0.00) int -> x2 "Inline stloc first use temp"
+; V114 tmp93 [V114,T89] ( 3, 0.00) byref -> x0 "Span.get_Item ptrToSpan"
; V115 tmp94 [V115,T36] ( 2, 2.70) byref -> x22 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
; V116 tmp95 [V116,T37] ( 2, 2.70) int -> x23 single-def "field V03._length (fldOffset=0x8)" P-INDEP
; V117 tmp96 [V117,T56] ( 6, 1.77) byref -> [fp+0x18] "field V09._reference (fldOffset=0x0)" P-INDEP
@@ -166,10 +166,10 @@
;* V154 tmp133 [V154 ] ( 0, 0 ) int -> zero-ref "field V76._length (fldOffset=0x8)" P-INDEP
; V155 tmp134 [V155,T74] ( 2, 0.06) byref -> x1 "field V82._reference (fldOffset=0x0)" P-INDEP
; V156 tmp135 [V156,T75] ( 2, 0.06) int -> x2 "field V82._length (fldOffset=0x8)" P-INDEP
-; V157 tmp136 [V157,T76] ( 2, 0.06) byref -> x0 "field V83._reference (fldOffset=0x0)" P-INDEP
-; V158 tmp137 [V158,T78] ( 2, 0.06) int -> x2 "field V83._length (fldOffset=0x8)" P-INDEP
-; V159 tmp138 [V159,T77] ( 2, 0.06) byref -> x0 "field V85._reference (fldOffset=0x0)" P-INDEP
-; V160 tmp139 [V160,T79] ( 2, 0.06) int -> x2 "field V85._length (fldOffset=0x8)" P-INDEP
+; V157 tmp136 [V157,T76] ( 2, 0.06) byref -> x3 "field V83._reference (fldOffset=0x0)" P-INDEP
+; V158 tmp137 [V158,T78] ( 2, 0.06) int -> x4 "field V83._length (fldOffset=0x8)" P-INDEP
+; V159 tmp138 [V159,T77] ( 2, 0.06) byref -> x3 "field V85._reference (fldOffset=0x0)" P-INDEP
+; V160 tmp139 [V160,T79] ( 2, 0.06) int -> x4 "field V85._length (fldOffset=0x8)" P-INDEP
;* V161 tmp140 [V161 ] ( 0, 0 ) byref -> zero-ref "field V86._reference (fldOffset=0x0)" P-INDEP
;* V162 tmp141 [V162 ] ( 0, 0 ) int -> zero-ref "field V86._length (fldOffset=0x8)" P-INDEP
; V163 tmp142 [V163,T71] ( 3, 0.08) byref -> x1 "field V90._reference (fldOffset=0x0)" P-INDEP
@@ -190,9 +190,9 @@
; V178 cse3 [V178,T34] ( 5, 4.89) int -> x28 multi-def "CSE - moderate"
; V179 cse4 [V179,T59] ( 3, 1.35) int -> x2 "CSE - conservative"
; V180 cse5 [V180,T70] ( 3, 0.09) long -> x0 "CSE - conservative"
-; V181 cse6 [V181,T03] ( 20, 16.33) int -> x26 "CSE - aggressive"
-; V182 cse7 [V182,T05] ( 17, 13.08) byref -> x27 "CSE - moderate"
-; V183 cse8 [V183,T09] ( 12, 11.41) int -> x26 "CSE - moderate"
+; V181 cse6 [V181,T03] ( 19, 16.33) int -> x26 "CSE - aggressive"
+; V182 cse7 [V182,T05] ( 16, 13.08) byref -> x27 "CSE - moderate"
+; V183 cse8 [V183,T09] ( 12, 11.41) int -> x27 "CSE - moderate"
; V184 cse9 [V184,T32] ( 3, 5.10) int -> x0 "CSE - moderate"
; V185 rat0 [V185,T21] ( 5, 7.22) ref -> x24 class-hnd "replacement local" <System.ICustomFormatter>
; V186 rat1 [V186,T07] ( 6, 13.05) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
@@ -219,7 +219,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_IG112
+ cbz x20, G_M36935_IG110
cbz x21, G_M36935_IG69
;; size=8 bbWeight=1 PerfScore 2.00
G_M36935_IG03: ; bbWeight=0.94, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
@@ -228,7 +228,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_IG113
+ bne G_M36935_IG111
mov x1, xzr
; gcrRegs +[x1]
;; size=28 bbWeight=0.94 PerfScore 6.11
@@ -243,7 +243,7 @@ G_M36935_IG05: ; bbWeight=0.52, gcrefRegs=1300002 {x1 x20 x21 x24}, byref
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
cmp x0, x2
- bne G_M36935_IG114
+ bne G_M36935_IG112
;; size=24 bbWeight=0.52 PerfScore 3.10
G_M36935_IG06: ; bbWeight=1.03, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x1]
@@ -291,7 +291,7 @@ G_M36935_IG08: ; bbWeight=2.18, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
G_M36935_IG09: ; bbWeight=1.73, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz
ldr w2, [fp, #0x50] // [V126 tmp105]
cmp w1, w2
- bhi G_M36935_IG109
+ bhi G_M36935_IG107
cmp w1, #0
cset x0, ge
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -305,7 +305,7 @@ G_M36935_IG09: ; bbWeight=1.73, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
ldr w2, [fp, #0x74] // [V15 loc11]
sub w1, w1, w2
cmp w0, w1
- bgt G_M36935_IG85
+ bgt G_M36935_IG84
;; size=64 bbWeight=1.73 PerfScore 34.61
G_M36935_IG10: ; bbWeight=1.73, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz
add x0, x19, #16
@@ -313,7 +313,7 @@ G_M36935_IG10: ; bbWeight=1.73, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
ldr w1, [x19, #0x08]
ldr w3, [x0, #0x08]
cmp w1, w3
- bhi G_M36935_IG109
+ bhi G_M36935_IG107
ldr x0, [x0]
ubfiz x4, x1, #1, #32
add x4, x0, x4
@@ -335,7 +335,7 @@ G_M36935_IG10: ; bbWeight=1.73, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
ldr w3, [fp, #0x74] // [V15 loc11]
ldr w2, [fp, #0x60] // [V74 tmp53]
cmp w3, w2
- bhi G_M36935_IG110
+ bhi G_M36935_IG108
;; size=88 bbWeight=1.73 PerfScore 46.72
G_M36935_IG11: ; bbWeight=1.73, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz
mov w2, w3
@@ -358,25 +358,25 @@ G_M36935_IG11: ; bbWeight=1.73, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
str w0, [x19, #0x08]
add w25, w25, w28
cmp w25, w26
- bhs G_M36935_IG111
+ bhs G_M36935_IG109
ldrh w0, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG105
+ bls G_M36935_IG103
ldrh w28, [x27, w25, UXTW #2]
cmp w0, w28
beq G_M36935_IG70
;; size=92 bbWeight=1.73 PerfScore 47.58
G_M36935_IG12: ; bbWeight=1.70, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w0, #123
- bne G_M36935_IG103
+ bne G_M36935_IG101
str xzr, [fp, #0x78]
str xzr, [fp, #0x18] // [V117 tmp96]
; GC ptr vars +{V117}
str wzr, [fp, #0x54] // [V118 tmp97]
sub w0, w25, #1
cmp w0, w26
- bhs G_M36935_IG111
+ bhs G_M36935_IG109
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
cset x0, eq
@@ -396,18 +396,18 @@ G_M36935_IG12: ; bbWeight=1.70, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
; gcr arg pop 0
sub w28, w28, #48
cmp w28, #10
- bhs G_M36935_IG104
+ bhs G_M36935_IG102
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG105
+ bls G_M36935_IG103
ldrh w0, [x27, w25, UXTW #2]
sxtw w1, w0
cmp w1, #125
- bne G_M36935_IG72
+ bne G_M36935_IG75
;; size=132 bbWeight=1.70 PerfScore 53.54
G_M36935_IG13: ; bbWeight=1.70, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w25, w26
- bhs G_M36935_IG111
+ bhs G_M36935_IG109
ldrh w0, [x27, w25, UXTW #2]
cmp w0, #125
cset x0, eq
@@ -419,34 +419,34 @@ G_M36935_IG13: ; bbWeight=1.70, 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_IG108
+ bhs G_M36935_IG106
ldr x28, [x22, w28, UXTW #3]
; gcrRegs +[x28]
cbnz x24, G_M36935_IG65
;; size=68 bbWeight=1.70 PerfScore 30.60
G_M36935_IG14: ; bbWeight=1.70, gcrefRegs=1D300000 {x20 x21 x24 x26 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz
- cbnz x27, G_M36935_IG28
+ cbnz x26, G_M36935_IG28
;; size=4 bbWeight=1.70 PerfScore 1.70
-G_M36935_IG15: ; 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_IG17
+G_M36935_IG15: ; 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_IG17
;; 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
ldr w2, [fp, #0x7C] // [V07 loc3]
cbnz w2, G_M36935_IG21
;; size=8 bbWeight=1.65 PerfScore 4.94
-G_M36935_IG17: ; bbWeight=1.63, gcrefRegs=15300000 {x20 x21 x24 x26 x28}, byrefRegs=480000 {x19 x22}, byref, isz
+G_M36935_IG17: ; bbWeight=1.63, gcrefRegs=19300000 {x20 x21 x24 x27 x28}, byrefRegs=480000 {x19 x22}, byref, isz
mov x3, x28
...
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
+12 (+0.84%) : 129082.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,T32] ( 3, 5.96) ref -> x19 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T24] ( 4, 10.01) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T31] ( 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,T38] ( 3, 1 ) 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, 29.03) int -> x19
+; V04 loc4 [V04,T37] ( 3, 1 ) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
+; V05 loc5 [V05,T36] ( 5, 2 ) ref -> [fp+0x10] 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,T30] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V09 tmp2 [V09,T25] ( 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]>
+; V08 tmp1 [V08,T27] ( 4, 8 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
+; V09 tmp2 [V09,T23] ( 5, 10.01) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V10 tmp3 [V10,T32] ( 2, 4.01) int -> x19 "Inlining Arg"
+; V11 tmp4 [V11,T30] ( 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,T36] ( 3, 3.00) 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.01) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp8 [V15,T27] ( 4, 8.01) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V16 tmp9 [V16,T15] ( 2, 16.02) int -> x25 "Inlining Arg"
-; V17 tmp10 [V17,T10] ( 3, 24.04) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T35] ( 3, 3.00) 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.01) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp8 [V15,T26] ( 4, 8.01) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp9 [V16,T16] ( 2, 15.86) int -> x25 "Inlining Arg"
+; V17 tmp10 [V17,T11] ( 3, 23.80) 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.02) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V20 tmp13 [V20,T01] ( 4, 32.05) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T19] ( 3, 11.90) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V20 tmp13 [V20,T01] ( 4, 31.73) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V21 tmp14 [V21,T02] ( 4, 31.73) 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.02) int -> x25 "Inlining Arg"
-; V24 tmp17 [V24,T11] ( 3, 24.04) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T17] ( 2, 15.86) int -> x25 "Inlining Arg"
+; V24 tmp17 [V24,T12] ( 3, 23.80) 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.02) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V27 tmp20 [V27,T03] ( 4, 32.05) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T20] ( 3, 11.90) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V27 tmp20 [V27,T03] ( 4, 31.73) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T04] ( 4, 31.73) 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.02) ushort -> x25 "Inlining Arg"
-; V34 tmp27 [V34,T12] ( 3, 24.04) ref -> x26 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T18] ( 2, 15.86) ushort -> x25 "Inlining Arg"
+; V34 tmp27 [V34,T13] ( 3, 23.80) 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.02) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V37 tmp30 [V37,T05] ( 4, 32.05) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> x27 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T21] ( 3, 11.90) ref -> x27 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
+; V37 tmp30 [V37,T05] ( 4, 31.73) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V38 tmp31 [V38,T06] ( 4, 31.73) 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.01) 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,T28] ( 3, 7.93) 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.01) 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,T29] ( 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,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.03) byref -> x22 "CSE - aggressive"
-; V59 cse1 [V59,T21] ( 3, 12.02) long -> x22 "CSE - moderate"
-; V60 cse2 [V60,T08] ( 9, 27.04) long -> x24 "CSE - aggressive"
-; V61 cse3 [V61,T14] ( 7, 19.03) long -> x21 "CSE - aggressive"
-; V62 cse4 [V62,T23] ( 4, 10.02) 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, 23.80) long -> x22 "CSE - aggressive"
+; V59 cse1 [V59,T08] ( 9, 26.80) long -> x24 "CSE - aggressive"
+; V60 cse2 [V60,T15] ( 7, 18.87) long -> x21 "CSE - aggressive"
+; V61 cse3 [V61,T24] ( 4, 9.94) 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=0000004000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000002000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -170,7 +169,7 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000004000000000 {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.00, gcVars=0000006000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1.00, 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.00, gcVars=0000006000000000 {V04 V05}, gcrefR
; gcr arg pop 0
mov w19, wzr
;; size=288 bbWeight=1.00 PerfScore 53.08
-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 w25, [x20, x22]
@@ -367,10 +366,11 @@ G_M53770_IG07: ; bbWeight=4.01, 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.01, 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, #1 LSL #32
bl CORINFO_HELP_NEWSFAST
@@ -532,15 +536,17 @@ G_M53770_IG07: ; bbWeight=4.01, 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.01 PerfScore 468.73
-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=3.97 PerfScore 469.99
+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>
@@ -610,8 +616,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]
@@ -621,11 +627,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
@@ -649,7 +655,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=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG19: ; bbWeight=0, gcVars=0000002000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x18] // [V04 loc4]
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -671,7 +677,7 @@ G_M53770_IG20: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1424, prolog size 36, PerfScore 625.91, instruction count 356, allocated bytes for code 1424 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
+; Total bytes of code 1436, prolog size 36, PerfScore 627.09, instruction count 359, allocated bytes for code 1436 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
; ============================================================
Unwind Info:
@@ -682,7 +688,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 317 (0x0013d) Actual length = 1268 (0x0004f4)
+ Function Length : 320 (0x00140) Actual length = 1280 (0x000500)
---- Epilog scopes ----
...
realworld.run.osx.arm64.checked.mch
+72 (+2.29%) : 2457.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%) : 2220.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 |
1 |
1 |
0 |
0 |
-60 |
+0 |
| benchmarks.run_tiered.osx.arm64.checked.mch |
2 |
2 |
0 |
0 |
-208 |
+0 |
| coreclr_tests.run.osx.arm64.checked.mch |
112 |
1 |
111 |
0 |
-172 |
+10,352 |
| libraries.crossgen2.osx.arm64.checked.mch |
4 |
1 |
3 |
0 |
-28 |
+276 |
| libraries.pmi.osx.arm64.checked.mch |
4 |
1 |
3 |
0 |
-16 |
+412 |
| libraries_tests.run.osx.arm64.Release.mch |
188 |
2 |
186 |
0 |
-100 |
+18,004 |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
1 |
0 |
1 |
0 |
-0 |
+12 |
| realworld.run.osx.arm64.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+144 |
|
316 |
8 |
308 |
0 |
-584 |
+29,336 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.osx.arm64.checked.mch |
24,860 |
4 |
24,856 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.osx.arm64.checked.mch |
83,813 |
48,088 |
35,725 |
4 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.osx.arm64.checked.mch |
48,123 |
37,350 |
10,773 |
1 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.osx.arm64.checked.mch |
585,883 |
356,765 |
229,118 |
4 (0.00%) |
2 (0.00%) |
| libraries.crossgen2.osx.arm64.checked.mch |
234,105 |
15 |
234,090 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.osx.arm64.checked.mch |
316,348 |
18 |
316,330 |
0 (0.00%) |
0 (0.00%) |
| libraries_tests.run.osx.arm64.Release.mch |
643,885 |
468,829 |
175,056 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
302,301 |
21,597 |
280,704 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.osx.arm64.checked.mch |
31,542 |
3 |
31,539 |
0 (0.00%) |
0 (0.00%) |
|
2,270,860 |
932,669 |
1,338,191 |
9 (0.00%) |
2 (0.00%) |
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: 11186448 (overridden on cmd)
Total bytes of diff: 11186584 (overridden on cmd)
Total bytes of delta: 136 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
72 : 9211.dasm (2.68 % of base)
64 : 2138.dasm (1.92 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
72 (2.68 % of base) : 9211.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (1.92 % of base) : 2138.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
72 (2.68 % of base) : 9211.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (1.92 % of base) : 2138.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
benchmarks.run_pgo.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34437920 (overridden on cmd)
Total bytes of diff: 34437860 (overridden on cmd)
Total bytes of delta: -60 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-60 : 66989.dasm (-7.08 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-60 (-7.08 % of base) : 66989.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method improvements (percentages):
-60 (-7.08 % of base) : 66989.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
1 total methods with Code Size differences (1 improved, 0 regressed).
benchmarks.run_tiered.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: 15516336 (overridden on cmd)
Total bytes of diff: 15516128 (overridden on cmd)
Total bytes of delta: -208 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-148 : 32752.dasm (-13.81 % of base)
-60 : 43605.dasm (-7.43 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-148 (-13.81 % of base) : 32752.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-60 (-7.43 % of base) : 43605.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method improvements (percentages):
-148 (-13.81 % of base) : 32752.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-60 (-7.43 % of base) : 43605.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
2 total methods with Code Size differences (2 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: 486460744 (overridden on cmd)
Total bytes of diff: 486470924 (overridden on cmd)
Total bytes of delta: 10180 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
124 : 291749.dasm (2.74 % of base)
124 : 304657.dasm (2.75 % of base)
124 : 238670.dasm (2.75 % of base)
124 : 264248.dasm (2.75 % of base)
124 : 291468.dasm (2.74 % of base)
124 : 292465.dasm (2.74 % of base)
124 : 293894.dasm (2.75 % of base)
120 : 266371.dasm (2.76 % of base)
120 : 278699.dasm (2.76 % of base)
120 : 291648.dasm (2.75 % of base)
120 : 29270.dasm (2.75 % of base)
120 : 301755.dasm (2.76 % of base)
120 : 351955.dasm (2.77 % of base)
120 : 28478.dasm (2.76 % of base)
120 : 306798.dasm (2.75 % of base)
116 : 220195.dasm (2.74 % of base)
116 : 251316.dasm (2.77 % of base)
116 : 285890.dasm (2.77 % of base)
116 : 296175.dasm (2.77 % of base)
116 : 364147.dasm (2.77 % of base)
Top file improvements (bytes):
-172 : 299093.dasm (-32.33 % of base)
74 total files with Code Size differences (1 improved, 73 regressed), 0 unchanged.
Top method regressions (bytes):
124 (2.74 % of base) : 291749.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.75 % of base) : 304657.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.75 % of base) : 238670.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.75 % of base) : 264248.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.74 % of base) : 291468.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.74 % of base) : 292465.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.75 % of base) : 293894.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 266371.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 278699.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.75 % of base) : 291648.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.75 % of base) : 29270.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 301755.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.77 % of base) : 351955.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 28478.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.75 % of base) : 306798.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.74 % of base) : 220195.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 251316.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 285890.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 296175.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 364147.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (bytes):
-172 (-32.33 % of base) : 299093.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
112 (3.17 % of base) : 376703.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (3.11 % of base) : 380872.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (3.02 % of base) : 294422.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (2.78 % of base) : 384116.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.77 % of base) : 351955.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 251316.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 285890.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 296175.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 364147.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 385555.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 275162.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 284133.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 291537.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 292747.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 369003.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.77 % of base) : 5813.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 266371.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 28478.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 278699.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 301755.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (percentages):
-172 (-32.33 % of base) : 299093.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
libraries.crossgen2.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: 55725580 (overridden on cmd)
Total bytes of diff: 55725828 (overridden on cmd)
Total bytes of delta: 248 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
148 : 87716.dasm (28.46 % of base)
64 : 20574.dasm (2.64 % of base)
64 : 16709.dasm (2.86 % of base)
Top file improvements (bytes):
-28 : 84568.dasm (-20.59 % of base)
4 total files with Code Size differences (1 improved, 3 regressed), 0 unchanged.
Top method regressions (bytes):
148 (28.46 % of base) : 87716.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
64 (2.86 % of base) : 16709.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (2.64 % of base) : 20574.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (bytes):
-28 (-20.59 % of base) : 84568.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
148 (28.46 % of base) : 87716.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
64 (2.86 % of base) : 16709.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (2.64 % of base) : 20574.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-28 (-20.59 % of base) : 84568.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
4 total methods with Code Size differences (1 improved, 3 regressed).
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: 80219132 (overridden on cmd)
Total bytes of diff: 80219528 (overridden on cmd)
Total bytes of delta: 396 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
268 : 116247.dasm (36.41 % of base)
72 : 1940.dasm (2.28 % of base)
72 : 17690.dasm (2.74 % of base)
Top file improvements (bytes):
-16 : 112824.dasm (-12.90 % of base)
4 total files with Code Size differences (1 improved, 3 regressed), 0 unchanged.
Top method regressions (bytes):
268 (36.41 % of base) : 116247.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
72 (2.74 % of base) : 17690.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.28 % of base) : 1940.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (bytes):
-16 (-12.90 % of base) : 112824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
268 (36.41 % of base) : 116247.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
72 (2.74 % of base) : 17690.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.28 % of base) : 1940.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-16 (-12.90 % of base) : 112824.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
4 total methods with Code Size differences (1 improved, 3 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: 324580644 (overridden on cmd)
Total bytes of diff: 324598548 (overridden on cmd)
Total bytes of delta: 17904 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
128 : 395319.dasm (3.35 % of base)
128 : 273394.dasm (3.30 % of base)
124 : 305484.dasm (2.84 % of base)
124 : 420882.dasm (2.84 % of base)
124 : 128596.dasm (2.76 % of base)
124 : 244749.dasm (2.84 % of base)
124 : 379614.dasm (2.85 % of base)
120 : 292384.dasm (2.87 % of base)
120 : 433326.dasm (2.85 % of base)
120 : 109816.dasm (2.86 % of base)
120 : 171446.dasm (2.90 % of base)
120 : 332066.dasm (2.84 % of base)
120 : 502546.dasm (2.76 % of base)
120 : 95481.dasm (2.83 % of base)
120 : 445722.dasm (2.87 % of base)
120 : 71119.dasm (2.86 % of base)
120 : 175861.dasm (2.86 % of base)
120 : 230240.dasm (2.78 % of base)
120 : 272310.dasm (2.86 % of base)
120 : 313867.dasm (2.85 % of base)
Top file improvements (bytes):
-88 : 269088.dasm (-1.87 % of base)
-12 : 462557.dasm (-0.36 % of base)
72 total files with Code Size differences (2 improved, 70 regressed), 0 unchanged.
Top method regressions (bytes):
128 (3.35 % of base) : 395319.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.30 % of base) : 273394.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
124 (2.84 % of base) : 305484.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.84 % of base) : 420882.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 128596.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.84 % of base) : 244749.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.85 % of base) : 379614.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.87 % of base) : 292384.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.85 % of base) : 433326.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.86 % of base) : 109816.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.90 % of base) : 171446.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.84 % of base) : 332066.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 502546.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.83 % of base) : 95481.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.87 % of base) : 445722.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.86 % of base) : 71119.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.86 % of base) : 175861.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.78 % of base) : 230240.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.86 % of base) : 272310.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.85 % of base) : 313867.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (bytes):
-88 (-1.87 % of base) : 269088.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-12 (-0.36 % of base) : 462557.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
Top method regressions (percentages):
128 (3.35 % of base) : 395319.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.34 % of base) : 531097.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.34 % of base) : 348004.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.33 % of base) : 559537.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.32 % of base) : 285361.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.32 % of base) : 69615.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.32 % of base) : 269958.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.30 % of base) : 273394.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.29 % of base) : 463734.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 188470.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 170573.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 377246.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.26 % of base) : 469948.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.23 % of base) : 580212.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.23 % of base) : 499492.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.17 % of base) : 474706.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.17 % of base) : 630921.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.17 % of base) : 287084.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.15 % of base) : 483149.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.12 % of base) : 316688.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
Top method improvements (percentages):
-88 (-1.87 % of base) : 269088.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-12 (-0.36 % of base) : 462557.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
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: 162573872 (overridden on cmd)
Total bytes of diff: 162573884 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
12 : 129082.dasm (0.84 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
12 (0.84 % of base) : 129082.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
Top method regressions (percentages):
12 (0.84 % of base) : 129082.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
1 total methods with Code Size differences (0 improved, 1 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: 15061040 (overridden on cmd)
Total bytes of diff: 15061184 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
72 : 2457.dasm (2.29 % of base)
72 : 2220.dasm (2.68 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
72 (2.68 % of base) : 2220.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 2457.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
72 (2.68 % of base) : 2220.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 2457.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
windows arm64
Diffs are based on 2,341,100 contexts (938,449 MinOpts, 1,402,651 FullOpts).
MISSED contexts: base: 8 (0.00%), diff: 9 (0.00%)
Overall (+36,536 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
10,965,984 |
+144 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
45,573,984 |
-60 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
15,587,216 |
-144 |
| coreclr_tests.run.windows.arm64.checked.mch |
495,312,096 |
+12,992 |
| libraries.crossgen2.windows.arm64.checked.mch |
59,069,324 |
+248 |
| libraries.pmi.windows.arm64.checked.mch |
79,845,240 |
+252 |
| libraries_tests.run.windows.arm64.Release.mch |
330,792,848 |
+23,028 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
171,580,828 |
+12 |
| realworld.run.windows.arm64.checked.mch |
15,904,740 |
+144 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
3,970,172 |
-80 |
FullOpts (+36,536 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.arm64.checked.mch |
10,965,448 |
+144 |
| benchmarks.run_pgo.windows.arm64.checked.mch |
29,562,216 |
-60 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
4,409,808 |
-144 |
| coreclr_tests.run.windows.arm64.checked.mch |
156,582,232 |
+12,992 |
| libraries.crossgen2.windows.arm64.checked.mch |
59,067,688 |
+248 |
| libraries.pmi.windows.arm64.checked.mch |
79,725,256 |
+252 |
| libraries_tests.run.windows.arm64.Release.mch |
127,359,252 |
+23,028 |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
158,427,080 |
+12 |
| realworld.run.windows.arm64.checked.mch |
15,340,760 |
+144 |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
3,969,160 |
-80 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
+72 (+2.29%) : 2643.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%) : 2634.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_pgo.windows.arm64.checked.mch
-60 (-7.08%) : 72896.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -10,16 +10,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 15, 104.74) ref -> x0 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T13] ( 12, 104.54) ref -> x0 class-hnd single-def <float[][]>
; V01 arg1 [V01,T20] ( 7, 4.63) ref -> x1 class-hnd single-def <int[][]>
; V02 arg2 [V02,T23] ( 3, 3 ) ref -> x2 class-hnd single-def <double[]>
; V03 arg3 [V03,T25] ( 4, 2.21) ref -> x3 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T24] ( 5, 2.62) int -> x4 single-def
+; V04 arg4 [V04,T24] ( 4, 2.62) int -> x4 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T05] ( 25,1699.01) int -> x5
-; V08 loc3 [V08,T28] ( 6, 0.63) ref -> x8 class-hnd <float[]>
-; V09 loc4 [V09,T12] ( 13, 108.60) int -> x7
+; V07 loc2 [V07,T05] ( 20,1699.01) int -> x5
+; V08 loc3 [V08,T28] ( 5, 0.63) ref -> x8 class-hnd <float[]>
+; V09 loc4 [V09,T12] ( 12, 108.60) int -> x7
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 18,1200.11) int -> x6
; V12 loc7 [V12,T31] ( 4, 199.58) float -> d16
@@ -45,8 +45,8 @@
; V32 cse2 [V32,T11] ( 5, 298.16) long -> xip0 "CSE - aggressive"
; V33 cse3 [V33,T27] ( 5, 3.01) long -> x15 "CSE - moderate"
; V34 cse4 [V34,T10] ( 16, 303.19) int -> x12 hoist multi-def "CSE - aggressive"
-; V35 cse5 [V35,T15] ( 9, 101.83) int -> x2 hoist "CSE - aggressive"
-; V36 cse6 [V36,T14] ( 6, 101.90) byref -> x9 hoist "CSE - aggressive"
+; V35 cse5 [V35,T14] ( 6, 101.90) byref -> x9 hoist "CSE - aggressive"
+; V36 cse6 [V36,T15] ( 7, 101.63) int -> x2 hoist "CSE - aggressive"
; V37 cse7 [V37,T18] ( 4, 100.00) int -> x10 hoist multi-def "CSE - aggressive"
; V38 cse8 [V38,T16] ( 4, 100.00) byref -> x11 hoist multi-def "CSE - aggressive"
;
@@ -75,18 +75,18 @@ G_M56974_IG02: ; bbWeight=1, gcrefRegs=010F {x0 x1 x2 x3 x8}, byrefRegs=0
;; size=8 bbWeight=1 PerfScore 3.50
G_M56974_IG03: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
cmp w2, w6
- ble G_M56974_IG17
+ ble G_M56974_IG12
;; size=8 bbWeight=0.21 PerfScore 0.32
G_M56974_IG04: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- cbz x1, G_M56974_IG26
- cbz x0, G_M56974_IG26
- tbnz w6, #31, G_M56974_IG26
+ cbz x1, G_M56974_IG22
+ cbz x0, G_M56974_IG22
+ tbnz w6, #31, G_M56974_IG22
ldr w10, [x1, #0x08]
cmp w10, w2
- blt G_M56974_IG26
+ blt G_M56974_IG22
ldr w10, [x0, #0x08]
cmp w10, w2
- blt G_M56974_IG26
+ blt G_M56974_IG22
ldr w10, [x8, #0x08]
add x11, x8, #16
; byrRegs +[x11]
@@ -97,7 +97,7 @@ G_M56974_IG04: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0
;; size=56 bbWeight=0.21 PerfScore 4.19
G_M56974_IG05: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w7, w10
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
ldr s16, [x11, x13]
ldr w15, [x14, #0x08]
cmp w15, w5
@@ -105,45 +105,18 @@ G_M56974_IG05: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
;; size=24 bbWeight=98.79 PerfScore 889.13
G_M56974_IG06: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
cmp w5, w6
- bne G_M56974_IG19
+ bne G_M56974_IG15
;; size=8 bbWeight=395.17 PerfScore 592.75
G_M56974_IG07: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref
movi v17.16b, #0
- b G_M56974_IG20
+ b G_M56974_IG16
;; size=8 bbWeight=395.17 PerfScore 592.75
G_M56974_IG08: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs -[x8 x14]
; byrRegs -[x11]
- cbz x0, G_M56974_IG16
- tbnz w5, #31, G_M56974_IG16
- ldr w7, [x0, #0x08]
- cmp w7, w2
- blt G_M56974_IG16
- ;; size=20 bbWeight=0.21 PerfScore 1.34
-G_M56974_IG09: ; bbWeight=0.64, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
- b G_M56974_IG11
- ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
- add x8, x0, #16
- ; byrRegs +[x8]
- ldr x8, [x8, w5, UXTW #3]
- ; gcrRegs +[x8]
- ; byrRegs -[x8]
- mov w7, wzr
- cmp w4, #0
- bgt G_M56974_IG13
- ;; size=20 bbWeight=0.21 PerfScore 1.15
-G_M56974_IG11: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
- ; gcrRegs -[x8]
- add w5, w5, #1
- cmp w2, w5
- ble G_M56974_IG38
- b G_M56974_IG10
- ;; size=16 bbWeight=0.21 PerfScore 0.62
-G_M56974_IG12: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
ldr w8, [x0, #0x08]
cmp w5, w8
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
add x7, x0, #16
; byrRegs +[x7]
ldr x8, [x7, w5, UXTW #3]
@@ -151,51 +124,52 @@ G_M56974_IG12: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200
mov w7, wzr
; byrRegs -[x7]
cmp w4, #0
- ble G_M56974_IG16
- ;; size=32 bbWeight=0.00 PerfScore 0.02
-G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
- ldr w6, [x1, #0x08]
- cmp w5, w6
- bhs G_M56974_IG37
- ldr x6, [x9, w5, UXTW #3]
- ; gcrRegs +[x6]
- tbnz w7, #31, G_M56974_IG17
- ;; size=20 bbWeight=0.21 PerfScore 1.79
-G_M56974_IG14: ; bbWeight=6.73, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
- ldr w6, [x6, #0x08]
- ; gcrRegs -[x6]
- cmp w6, w7
- ble G_M56974_IG17
- ;; size=12 bbWeight=6.73 PerfScore 30.30
-G_M56974_IG15: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
- add w6, w5, #1
- b G_M56974_IG03
- ;; size=8 bbWeight=0.21 PerfScore 0.32
-G_M56974_IG16: ; bbWeight=0.00, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
+ bgt G_M56974_IG10
+ ;; size=32 bbWeight=0.21 PerfScore 2.10
+G_M56974_IG09: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs -[x8]
add w5, w5, #1
cmp w2, w5
- ble G_M56974_IG38
- b G_M56974_IG12
- ;; size=16 bbWeight=0.00 PerfScore 0.01
-G_M56974_IG17: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
+ ble G_M56974_IG34
+ b G_M56974_IG08
+ ;; size=16 bbWeight=0.21 PerfScore 0.63
+G_M56974_IG10: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
; gcrRegs +[x8]
+ ldr w6, [x1, #0x08]
+ cmp w5, w6
+ bhs G_M56974_IG33
+ ldr x6, [x9, w5, UXTW #3]
+ ; gcrRegs +[x6]
+ tbnz w7, #31, G_M56974_IG12
+ ;; size=20 bbWeight=0.21 PerfScore 1.79
+G_M56974_IG11: ; bbWeight=6.73, gcrefRegs=014B {x0 x1 x3 x6 x8}, byrefRegs=0200 {x9}, byref, isz
+ ldr w6, [x6, #0x08]
+ ; gcrRegs -[x6]
+ cmp w6, w7
+ bgt G_M56974_IG14
+ ;; size=12 bbWeight=6.73 PerfScore 30.30
+G_M56974_IG12: ; bbWeight=0.41, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref, isz
add w7, w7, #1
cmp w7, w4
- blt G_M56974_IG13
+ blt G_M56974_IG10
;; size=12 bbWeight=0.41 PerfScore 0.82
-G_M56974_IG18: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
+G_M56974_IG13: ; bbWeight=0.21, gcrefRegs=000B {x0 x1 x3}, byrefRegs=0200 {x9}, byref
; gcrRegs -[x8]
- b G_M56974_IG08
+ b G_M56974_IG09
;; size=4 bbWeight=0.21 PerfScore 0.21
-G_M56974_IG19: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
- ; gcrRegs +[x8 x14]
+G_M56974_IG14: ; bbWeight=0.21, gcrefRegs=010B {x0 x1 x3 x8}, byrefRegs=0200 {x9}, byref
+ ; gcrRegs +[x8]
+ add w6, w5, #1
+ b G_M56974_IG03
+ ;; size=8 bbWeight=0.21 PerfScore 0.32
+G_M56974_IG15: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+ ; gcrRegs +[x14]
; byrRegs +[x11]
mov x15, x14
; gcrRegs +[x15]
ldr wip0, [x15, #0x08]
cmp w5, wip0
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
@@ -206,14 +180,14 @@ G_M56974_IG19: ; bbWeight=395.17, gcrefRegs=410B {x0 x1 x3 x8 x14}, byref
sub wip0, wip0, #1
ldr w19, [x15, #0x08]
cmp wip0, w19
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, wip0, UXTW #2]
fcvt d17, s17
;; size=56 bbWeight=395.17 PerfScore 8100.92
-G_M56974_IG20: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG16: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
; byrRegs -[x15]
fcvt d16, s16
fadd d16, d16, d17
@@ -221,15 +195,15 @@ G_M56974_IG20: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
ldr x15, [x9, xip0]
; gcrRegs +[x15]
sxtw w19, w12
- tbnz w19, #31, G_M56974_IG25
+ tbnz w19, #31, G_M56974_IG21
;; size=24 bbWeight=98.79 PerfScore 1136.10
-G_M56974_IG21: ; bbWeight=3161.33, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG17: ; bbWeight=3161.33, gcrefRegs=C10B {x0 x1 x3 x8 x14 x15}, byrefRegs=0A00 {x9 x11}, byref, isz
ldr w15, [x15, #0x08]
; gcrRegs -[x15]
cmp w15, w19
- ble G_M56974_IG25
+ ble G_M56974_IG21
;; size=12 bbWeight=3161.33 PerfScore 14226.01
-G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
+G_M56974_IG18: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefRegs=0A00 {x9 x11}, byref, isz
add x15, x0, #16
; byrRegs +[x15]
ldr x15, [x15, xip0]
@@ -237,27 +211,27 @@ G_M56974_IG22: ; bbWeight=98.79, gcrefRegs=410B {x0 x1 x3 x8 x14}, byrefR
; byrRegs -[x15]
ldr w19, [x15, #0x08]
cmp w12, w19
- bhs G_M56974_IG37
+ bhs G_M56974_IG33
add x15, x15, #16
; gcrRegs -[x15]
; byrRegs +[x15]
ldr s17, [x15, w12, UXTW #2]
fcvt d17, s17
fcmp d17, d16
- bgt G_M56974_IG25
...
benchmarks.run_tiered.windows.arm64.checked.mch
-148 (-13.81%) : 31904.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
@@ -10,47 +10,44 @@
; Final local variable assignments
;
; V00 arg0 [V00,T16] ( 7, 10.09) ref -> x0 class-hnd single-def <double[][]>
-; V01 arg1 [V01,T13] ( 9, 14.33) ref -> x1 class-hnd single-def <double[]>
-; V02 arg2 [V02,T18] ( 12, 9.10) ref -> x20 class-hnd single-def <double[][][]>
-; V03 arg3 [V03,T19] ( 12, 9.10) ref -> x21 class-hnd single-def <double[][]>
-; V04 arg4 [V04,T08] ( 12, 20 ) int -> x19 single-def
-; V05 loc0 [V05,T10] ( 12, 20.08) ref -> x24 class-hnd <double[][]>
-; V06 loc1 [V06,T09] ( 13, 20.32) ref -> x23 class-hnd <double[]>
-; V07 loc2 [V07,T28] ( 2, 2 ) long -> x25
+; V01 arg1 [V01,T13] ( 7, 14.21) ref -> x1 class-hnd single-def <double[]>
+; V02 arg2 [V02,T18] ( 9, 9.08) ref -> x20 class-hnd single-def <double[][][]>
+; V03 arg3 [V03,T19] ( 9, 9.08) ref -> x21 class-hnd single-def <double[][]>
+; V04 arg4 [V04,T12] ( 8, 17 ) int -> x19 single-def
+; V05 loc0 [V05,T09] ( 11, 20.08) ref -> x24 class-hnd <double[][]>
+; V06 loc1 [V06,T08] ( 10, 20.20) ref -> x23 class-hnd <double[]>
+; V07 loc2 [V07,T28] ( 2, 2 ) long -> x27
; V08 loc3 [V08,T02] ( 14, 94.16) int -> x2
-; V09 loc4 [V09,T07] ( 11, 27.04) int -> x3
-; V10 loc5 [V10,T00] ( 40,127.84) int -> x22
+; V09 loc4 [V09,T06] ( 6, 30 ) int -> x3
+; V10 loc5 [V10,T00] ( 32,127.52) int -> x22
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T36] ( 6, 64.00) double -> d16 "Strict ordering of exceptions for Array store"
-; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> x9 class-hnd "Strict ordering of exceptions for Array store" <double[]>
-; V14 tmp3 [V14,T37] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
+; V12 tmp1 [V12,T33] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
+; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> x11 class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V14 tmp3 [V14,T34] ( 4, 64 ) double -> d16 "Strict ordering of exceptions for Array store"
;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V16 tmp5 [V16,T20] ( 6, 10 ) ref -> registers class-hnd exact "Inline stloc first use temp" <<unknown class>>
; V17 tmp6 [V17 ] ( 4, 8 ) int -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V18 tmp7 [V18 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V19 tmp8 [V19,T03] ( 5, 64.32) ref -> x10 "arr expr"
-; V20 cse0 [V20,T11] ( 4, 20.04) ref -> x8 hoist multi-def "CSE - aggressive"
-; V21 cse1 [V21,T33] ( 2, 0.20) ref -> x5 hoist "CSE - conservative"
-; V22 cse2 [V22,T06] ( 6, 27.92) ref -> x5 multi-def "CSE - aggressive"
-; V23 cse3 [V23,T15] ( 6, 12.12) long -> x4 hoist multi-def "CSE - aggressive"
-; V24 cse4 [V24,T04] ( 3, 47.52) long -> x7 "CSE - aggressive"
-; V25 cse5 [V25,T05] ( 3, 47.04) long -> x4 "CSE - aggressive"
+; V19 tmp8 [V19,T03] ( 5, 64.32) ref -> x13 "arr expr"
+; V20 cse0 [V20,T10] ( 4, 20.04) ref -> x10 hoist multi-def "CSE - aggressive"
+; V21 cse1 [V21,T31] ( 2, 0.20) ref -> x7 hoist "CSE - conservative"
+; V22 cse2 [V22,T07] ( 6, 27.92) ref -> x7 multi-def "CSE - aggressive"
+; V23 cse3 [V23,T15] ( 6, 12.12) long -> x6 hoist multi-def "CSE - aggressive"
+; V24 cse4 [V24,T04] ( 3, 47.52) long -> x6 "CSE - aggressive"
+; V25 cse5 [V25,T05] ( 3, 47.52) long -> x9 "CSE - aggressive"
; V26 cse6 [V26,T17] ( 3, 11.88) long -> x0 "CSE - aggressive"
-; V27 cse7 [V27,T25] ( 3, 5.94) long -> x2 "CSE - aggressive"
-; V28 cse8 [V28,T29] ( 3, 0.48) long -> x4 "CSE - conservative"
-; V29 cse9 [V29,T30] ( 3, 0.48) long -> x6 "CSE - conservative"
-; V30 cse10 [V30,T31] ( 3, 0.48) long -> x4 "CSE - conservative"
-; V31 cse11 [V31,T34] ( 3, 0.12) long -> x0 "CSE - conservative"
-; V32 cse12 [V32,T35] ( 3, 0.06) long -> x2 "CSE - conservative"
-; V33 cse13 [V33,T27] ( 3, 4.05) byref -> x26 hoist "CSE - aggressive"
-; V34 cse14 [V34,T14] ( 4, 16.01) byref -> x25 hoist "CSE - aggressive"
-; V35 cse15 [V35,T24] ( 4, 8.08) int -> x6 hoist multi-def "CSE - aggressive"
-; V36 cse16 [V36,T23] ( 4, 8.08) byref -> x7 hoist multi-def "CSE - aggressive"
-; V37 cse17 [V37,T12] ( 4, 19.84) byref -> x2 hoist multi-def "CSE - aggressive"
-; V38 cse18 [V38,T26] ( 4, 5.04) long -> x26 hoist multi-def "CSE - aggressive"
-; V39 cse19 [V39,T21] ( 8, 9.04) byref -> x27 hoist multi-def "CSE - aggressive"
-; V40 cse20 [V40,T22] ( 8, 9.04) byref -> x28 hoist multi-def "CSE - aggressive"
-; V41 cse21 [V41,T32] ( 2, 0.24) byref -> x2 hoist "CSE - conservative"
+; V27 cse7 [V27,T25] ( 3, 6 ) long -> x2 "CSE - aggressive"
+; V28 cse8 [V28,T29] ( 3, 0.48) long -> x6 "CSE - conservative"
+; V29 cse9 [V29,T30] ( 3, 0.48) long -> x8 "CSE - conservative"
+; V30 cse10 [V30,T32] ( 3, 0.12) long -> x0 "CSE - conservative"
+; V31 cse11 [V31,T27] ( 3, 4.05) byref -> x5 hoist "CSE - aggressive"
+; V32 cse12 [V32,T14] ( 3, 16.01) byref -> x4 hoist "CSE - aggressive"
+; V33 cse13 [V33,T24] ( 4, 8.08) int -> x8 hoist multi-def "CSE - aggressive"
+; V34 cse14 [V34,T23] ( 4, 8.08) byref -> x9 hoist multi-def "CSE - aggressive"
+; V35 cse15 [V35,T11] ( 4, 20.04) byref -> x2 hoist multi-def "CSE - aggressive"
+; V36 cse16 [V36,T26] ( 4, 5.04) long -> x28 hoist multi-def "CSE - aggressive"
+; V37 cse17 [V37,T21] ( 6, 9.04) byref -> x25 hoist multi-def "CSE - aggressive"
+; V38 cse18 [V38,T22] ( 6, 9.04) byref -> x26 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 16
@@ -74,186 +71,123 @@ G_M9806_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
ldr w22, [fp, #0xA4]
;; size=56 bbWeight=0.01 PerfScore 0.22
G_M9806_IG02: ; bbWeight=0.01, gcrefRegs=1B00003 {x0 x1 x20 x21 x23 x24}, byrefRegs=0000 {}, byref
- add x25, x1, #16
- ; byrRegs +[x25]
- add x26, x0, #16
- ; byrRegs +[x26]
- b G_M9806_IG28
+ add x4, x1, #16
+ ; byrRegs +[x4]
+ add x5, x0, #16
+ ; byrRegs +[x5]
+ b G_M9806_IG22
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M9806_IG03: ; bbWeight=1, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs -[x24]
- cbz x20, G_M9806_IG14
- cbz x21, G_M9806_IG14
- orr w2, w3, w19
- tbnz w2, #31, G_M9806_IG14
+G_M9806_IG03: ; bbWeight=2, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref, isz
+ ; gcrRegs -[x23-x24]
ldr w2, [x20, #0x08]
- cmp w2, w19
- blt G_M9806_IG14
- ldr w2, [x21, #0x08]
- cmp w2, w19
- blt G_M9806_IG14
- b G_M9806_IG05
- ;; size=44 bbWeight=1 PerfScore 13.50
-G_M9806_IG04: ; bbWeight=1.98, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
- ; gcrRegs -[x23]
- add x27, x20, #16
- ; byrRegs +[x27]
+ cmp w3, w2
+ bhs G_M9806_IG30
+ add x25, x20, #16
+ ; byrRegs +[x25]
ubfiz x2, x3, #3, #32
- ldr x24, [x27, x2]
+ ldr x24, [x25, x2]
; gcrRegs +[x24]
- add x28, x21, #16
- ; byrRegs +[x28]
- ldr x23, [x28, x2]
+ ldr w6, [x21, #0x08]
+ cmp w3, w6
+ bhs G_M9806_IG30
+ add x26, x21, #16
+ ; byrRegs +[x26]
+ ldr x23, [x26, x2]
; gcrRegs +[x23]
mov w22, wzr
- b G_M9806_IG27
- ;; size=28 bbWeight=1.98 PerfScore 18.81
-G_M9806_IG05: ; bbWeight=7.92, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
+ b G_M9806_IG21
+ ;; size=52 bbWeight=2 PerfScore 37.00
+G_M9806_IG04: ; bbWeight=8, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref, isz
; gcrRegs -[x24]
- ; byrRegs -[x27-x28]
+ ; byrRegs -[x25-x26]
mov w22, wzr
- cbz x1, G_M9806_IG09
- ;; size=8 bbWeight=7.92 PerfScore 11.88
-G_M9806_IG06: ; bbWeight=3.96, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref, isz
- cbz x23, G_M9806_IG09
+ cbz x1, G_M9806_IG08
+ ;; size=8 bbWeight=8 PerfScore 12.00
+G_M9806_IG05: ; bbWeight=4, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref, isz
+ cbz x23, G_M9806_IG08
ldr w2, [x1, #0x08]
cmp w2, #101
- blt G_M9806_IG09
+ blt G_M9806_IG08
ldr w2, [x23, #0x08]
cmp w2, #101
- blt G_M9806_IG09
+ blt G_M9806_IG08
add x2, x23, #16
; byrRegs +[x2]
- ;; size=32 bbWeight=3.96 PerfScore 41.58
-G_M9806_IG07: ; bbWeight=15.68, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
+ ;; size=32 bbWeight=4 PerfScore 42.00
+G_M9806_IG06: ; bbWeight=15.84, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0034 {x2 x4 x5}, byref, isz
; gcrRegs -[x23]
- ubfiz x4, x22, #3, #32
- ldr d16, [x25, x4]
- str d16, [x2, x4]
+ ubfiz x6, x22, #3, #32
+ ldr d16, [x4, x6]
+ str d16, [x2, x6]
add w22, w22, #1
cmp w22, #101
- blt G_M9806_IG07
- ;; size=24 bbWeight=15.68 PerfScore 109.77
-G_M9806_IG08: ; bbWeight=7.92, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref
+ blt G_M9806_IG06
+ ;; size=24 bbWeight=15.84 PerfScore 110.88
+G_M9806_IG07: ; bbWeight=8, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=0030 {x4 x5}, byref
; byrRegs -[x2]
- b G_M9806_IG11
- ;; size=4 bbWeight=7.92 PerfScore 7.92
-G_M9806_IG09: ; bbWeight=0.04, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref
+ b G_M9806_IG10
+ ;; size=4 bbWeight=8 PerfScore 8.00
+G_M9806_IG08: ; bbWeight=0.04, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0030 {x4 x5}, byref
; gcrRegs +[x23]
ldr wzr, [x1, #0x08]
add x2, x23, #16
; byrRegs +[x2]
;; size=8 bbWeight=0.04 PerfScore 0.14
-G_M9806_IG10: ; bbWeight=0.16, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000004 {x2 x25 x26}, byref, isz
- ldr w4, [x1, #0x08]
- cmp w22, w4
- bhs G_M9806_IG36
- ubfiz x4, x22, #3, #32
- ldr d16, [x25, x4]
- ldr w5, [x23, #0x08]
- cmp w22, w5
- bhs G_M9806_IG36
- str d16, [x2, x4]
+G_M9806_IG09: ; bbWeight=0.16, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=0034 {x2 x4 x5}, byref, isz
+ ldr w6, [x1, #0x08]
+ cmp w22, w6
+ bhs G_M9806_IG30
+ ubfiz x6, x22, #3, #32
+ ldr d16, [x4, x6]
+ ldr w7, [x23, #0x08]
+ cmp w22, w7
+ bhs G_M9806_IG30
+ str d16, [x2, x6]
add w22, w22, #1
cmp w22, #101
- blt G_M9806_IG10
- ;; size=48 bbWeight=0.16 PerfScore 2.53
-G_M9806_IG11: ; bbWeight=7.92, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs -[x23]
- ; byrRegs -[x2]
- add w3, w3, #1
- cmp w3, w19
- blt G_M9806_IG04
- ;; size=12 bbWeight=7.92 PerfScore 15.84
-G_M9806_IG12: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x1]
- ; byrRegs -[x25-x26]
- b G_M9806_IG17
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M9806_IG13: ; bbWeight=0.02, gcrefRegs=300003 {x0 x1 x20 x21}, byrefRegs=6000000 {x25 x26}, byref, isz
- ; gcrRegs +[x0-x1]
- ; byrRegs +[x25-x26]
- ldr w2, [x20, #0x08]
- cmp w3, w2
- bhs G_M9806_IG36
- add x27, x20, #16
- ; byrRegs +[x27]
- ubfiz x2, x3, #3, #32
- ldr x24, [x27, x2]
- ; gcrRegs +[x24]
- ldr w4, [x21, #0x08]
- cmp w3, w4
- bhs G_M9806_IG36
- add x28, x21, #16
- ; byrRegs +[x28]
- ldr x23, [x28, x2]
- ; gcrRegs +[x23]
- mov w22, wzr
- b G_M9806_IG27
- ;; size=52 bbWeight=0.02 PerfScore 0.37
-G_M9806_IG14: ; bbWeight=0.08, gcrefRegs=B00003 {x0 x1 x20 x21 x23}, byrefRegs=6000000 {x25 x26}, byref
...
-60 (-7.43%) : 43870.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -9,16 +9,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 15, 12.06) ref -> x19 class-hnd single-def <float[][]>
+; V00 arg0 [V00,T08] ( 12, 12.04) ref -> x19 class-hnd single-def <float[][]>
; V01 arg1 [V01,T09] ( 9, 12.04) ref -> x20 class-hnd single-def <int[][]>
; V02 arg2 [V02,T21] ( 3, 3 ) ref -> x23 class-hnd single-def <double[]>
; V03 arg3 [V03,T20] ( 4, 6 ) ref -> x22 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T10] ( 5, 12 ) int -> x21 single-def
+; V04 arg4 [V04,T10] ( 4, 12 ) int -> x21 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T03] ( 17, 37.52) int -> x25
-; V08 loc3 [V08,T16] ( 6, 10 ) ref -> x27 class-hnd <float[]>
-; V09 loc4 [V09,T00] ( 13, 56 ) int -> x24
+; V07 loc2 [V07,T03] ( 12, 38.50) int -> x25
+; V08 loc3 [V08,T16] ( 5, 10 ) ref -> x27 class-hnd <float[]>
+; V09 loc4 [V09,T00] ( 12, 56 ) int -> x24
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T05] ( 16, 22.58) int -> x26
;* V12 loc7 [V12 ] ( 0, 0 ) float -> zero-ref
@@ -40,7 +40,7 @@
; V28 cse2 [V28,T15] ( 10, 10 ) long -> x8 multi-def "CSE - moderate"
; V29 cse3 [V29,T14] ( 4, 11.88) long -> x1 "CSE - aggressive"
; V30 cse4 [V30,T22] ( 4, 0.12) long -> x1 "CSE - conservative"
-; V31 cse5 [V31,T07] ( 9, 17 ) int -> x28 "CSE - aggressive"
+; V31 cse5 [V31,T07] ( 7, 16 ) int -> x28 "CSE - aggressive"
; V32 cse6 [V32,T06] ( 14, 18 ) int -> x5 multi-def "CSE - aggressive"
; TEMP_01 double -> [fp+0x10]
;
@@ -67,58 +67,29 @@ G_M56974_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w26, [fp, #0x9C]
;; size=60 bbWeight=0.01 PerfScore 0.23
G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
- b G_M56974_IG15
+ b G_M56974_IG11
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M56974_IG03: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG03: ; bbWeight=2, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
- cbz x19, G_M56974_IG08
- tbnz w25, #31, G_M56974_IG08
- ldr w0, [x19, #0x08]
- cmp w0, w28
- blt G_M56974_IG08
- b G_M56974_IG05
- ;; size=24 bbWeight=1 PerfScore 7.50
-G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- add x0, x19, #16
- ; byrRegs +[x0]
- ldr x27, [x0, w25, UXTW #3]
- ; gcrRegs +[x27]
- mov w24, wzr
- cmp w21, #0
- bgt G_M56974_IG10
- ;; size=20 bbWeight=1.98 PerfScore 10.89
-G_M56974_IG05: ; bbWeight=7.92, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x27]
- ; byrRegs -[x0]
- add w25, w25, #1
- cmp w28, w25
- bgt G_M56974_IG04
- ;; size=12 bbWeight=7.92 PerfScore 15.84
-G_M56974_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20 x22-x23]
- b G_M56974_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19-x20 x22-x23]
ldr w0, [x19, #0x08]
cmp w25, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x19, #16
; byrRegs +[x0]
ldr x27, [x0, w25, UXTW #3]
; gcrRegs +[x27]
mov w24, wzr
cmp w21, #0
- bgt G_M56974_IG10
- ;; size=32 bbWeight=0.02 PerfScore 0.20
-G_M56974_IG08: ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
+ bgt G_M56974_IG06
+ ;; size=32 bbWeight=2 PerfScore 20.00
+G_M56974_IG04: ; bbWeight=8, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
; byrRegs -[x0]
add w25, w25, #1
cmp w28, w25
- bgt G_M56974_IG07
- ;; size=12 bbWeight=0.08 PerfScore 0.16
-G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ bgt G_M56974_IG03
+ ;; size=12 bbWeight=8 PerfScore 16.00
+G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[x19-x20 x22-x23]
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
@@ -130,55 +101,55 @@ G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
add sp, sp, #112
ret lr
;; size=36 bbWeight=1 PerfScore 9.50
-G_M56974_IG10: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20 x22-x23 x27]
ldr w0, [x20, #0x08]
cmp w25, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x20, #16
; byrRegs +[x0]
ldr x0, [x0, w25, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- tbnz w24, #31, G_M56974_IG12
+ tbnz w24, #31, G_M56974_IG08
;; size=24 bbWeight=2 PerfScore 18.00
-G_M56974_IG11: ; bbWeight=16, gcrefRegs=8D80001 {x0 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG07: ; bbWeight=16, gcrefRegs=8D80001 {x0 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w24
- bgt G_M56974_IG14
+ bgt G_M56974_IG10
;; size=12 bbWeight=16 PerfScore 72.00
-G_M56974_IG12: ; bbWeight=8, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG08: ; bbWeight=8, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
add w24, w24, #1
cmp w24, w21
- blt G_M56974_IG10
+ blt G_M56974_IG06
;; size=12 bbWeight=8 PerfScore 16.00
-G_M56974_IG13: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
+G_M56974_IG09: ; bbWeight=1, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x27]
- b G_M56974_IG03
+ b G_M56974_IG04
;; size=4 bbWeight=1 PerfScore 1.00
-G_M56974_IG14: ; bbWeight=0.50, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
+G_M56974_IG10: ; bbWeight=0.50, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref
; gcrRegs +[x27]
add w26, w25, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M56974_IG15: ; bbWeight=1, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=1, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w28, [x23, #0x08]
cmp w28, w26
- ble G_M56974_IG12
- cbz x20, G_M56974_IG21
- cbz x19, G_M56974_IG21
- tbnz w26, #31, G_M56974_IG21
+ ble G_M56974_IG08
+ cbz x20, G_M56974_IG17
+ cbz x19, G_M56974_IG17
+ tbnz w26, #31, G_M56974_IG17
ldr w0, [x20, #0x08]
cmp w0, w28
- blt G_M56974_IG21
+ blt G_M56974_IG17
ldr w0, [x19, #0x08]
cmp w0, w28
- blt G_M56974_IG21
+ blt G_M56974_IG17
;; size=48 bbWeight=1 PerfScore 16.50
-G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x27, #0x08]
cmp w24, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x27, #16
; byrRegs +[x0]
ldr s16, [x0, w24, UXTW #2]
@@ -208,15 +179,15 @@ G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27},
; gcrRegs +[x4]
add w5, w24, #1
sxtw w6, w5
- tbnz w6, #31, G_M56974_IG19
+ tbnz w6, #31, G_M56974_IG15
;; size=100 bbWeight=3.96 PerfScore 134.64
-G_M56974_IG17: ; bbWeight=15.84, gcrefRegs=8D80018 {x3 x4 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=15.84, gcrefRegs=8D80018 {x3 x4 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr w0, [x4, #0x08]
cmp w0, w6
- ble G_M56974_IG19
+ ble G_M56974_IG15
;; size=12 bbWeight=15.84 PerfScore 71.28
-G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG14: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x4]
add x0, x19, #16
; byrRegs +[x0]
@@ -225,16 +196,16 @@ G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
ldr w0, [x7, #0x08]
; byrRegs -[x0]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x7, #16
; byrRegs +[x0]
ubfiz x8, x5, #2, #32
ldr s16, [x0, x8]
fcvt d16, s16
fcmp d16, d8
- ble G_M56974_IG20
+ ble G_M56974_IG16
;; size=44 bbWeight=1.98 PerfScore 34.65
-G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x7]
; byrRegs -[x0]
add x8, x19, #16
@@ -244,7 +215,7 @@ G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
; byrRegs -[x8]
ldr w0, [x8, #0x08]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x8, #16
; byrRegs +[x0]
ubfiz x8, x5, #2, #32
@@ -254,23 +225,23 @@ G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=8D80008 {x3 x19 x20 x22 x23 x27
ldr w0, [x3, #0x08]
; byrRegs -[x0]
cmp w5, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
add x0, x3, #16
; byrRegs +[x0]
str w25, [x0, x8]
;; size=56 bbWeight=1.98 PerfScore 38.61
-G_M56974_IG20: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x3]
; byrRegs -[x0]
add w26, w26, #1
cmp w28, w26
- bgt G_M56974_IG16
- b G_M56974_IG12
+ bgt G_M56974_IG12
+ b G_M56974_IG08
;; size=16 bbWeight=3.96 PerfScore 11.88
-G_M56974_IG21: ; bbWeight=0.04, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG17: ; bbWeight=0.04, gcrefRegs=8D80000 {x19 x20 x22 x23 x27}, byrefRegs=0000 {}, byref, isz
ldr w0, [x27, #0x08]
cmp w24, w0
- bhs G_M56974_IG26
+ bhs G_M56974_IG22
...
+64 (+1.92%) : 20612.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%) : 250305.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.crossgen2.windows.arm64.checked.mch
-28 (-20.59%) : 94712.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint
@@ -9,11 +9,11 @@
; Final local variable assignments
;
; V00 loc0 [V00,T04] ( 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 -> x22 hoist "CSE - aggressive"
-; V05 cse1 [V05,T03] ( 2, 9 ) long -> x21 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> x22 hoist "CSE - aggressive"
+; V05 cse1 [V05,T03] ( 2, 8.92) long -> x21 hoist "CSE - aggressive"
;
; Lcl frame size = 0
@@ -38,19 +38,17 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x22, x19, #16
; byrRegs +[x22]
;; size=40 bbWeight=1 PerfScore 8.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
mov w0, w20
mov x11, x21
ldr x1, [x11]
blr x1
- cmp w20, #0xD1FFAB1E
- bhs G_M39919_IG06
str w0, [x22, w20, UXTW #2]
add w20, w20, #1
cmp w20, #255
bls G_M39919_IG03
- ;; size=40 bbWeight=8 PerfScore 76.00
+ ;; size=32 bbWeight=7.92 PerfScore 63.36
G_M39919_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x22]
mov x0, x19
@@ -62,16 +60,8 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
-G_M39919_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x19]
- adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
- add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x0, [x0]
- blr x0
- brk_windows #0
- ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 16, PerfScore 92.00, instruction count 34, allocated bytes for code 136 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 108, prolog size 16, PerfScore 79.36, instruction count 27, allocated bytes for code 108 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +72,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ 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.pmi.windows.arm64.checked.mch
-16 (-12.90%) : 94373.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
+28 (+0.85%) : 455745.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, 8.18) 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,T47] ( 5, 2.83) ref -> x24 class-hnd single-def <System.ICustomFormatter>
-; V05 loc1 [V05,T00] ( 66, 41.90) int -> x25 ld-addr-op
-; V06 loc2 [V06,T09] ( 33, 12.45) ushort -> registers
-; V07 loc3 [V07,T33] ( 12, 5.27) int -> [fp+0x8C]
+; V05 loc1 [V05,T00] ( 66, 41.89) int -> x25 ld-addr-op
+; V06 loc2 [V06,T09] ( 34, 12.45) ushort -> registers
+; V07 loc3 [V07,T33] ( 15, 5.27) int -> [fp+0x8C]
; V08 loc4 [V08,T43] ( 5, 3.68) ubyte -> [fp+0x88]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T23] ( 7, 7.32) int -> x28
@@ -211,7 +211,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_IG95
+ cbz x20, G_M36935_IG96
cbz x21, G_M36935_IG52
;; size=8 bbWeight=1 PerfScore 2.00
G_M36935_IG03: ; bbWeight=0.99, gcrefRegs=300000 {x20 x21}, byrefRegs=480000 {x19 x22}, byref, isz
@@ -220,7 +220,7 @@ G_M36935_IG03: ; bbWeight=0.99, gcrefRegs=300000 {x20 x21}, byrefRegs=480
movk x0, #255 LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x1, x0
- bne G_M36935_IG96
+ bne G_M36935_IG97
mov x1, xzr
; gcrRegs +[x1]
;; size=28 bbWeight=0.99 PerfScore 6.45
@@ -235,7 +235,7 @@ G_M36935_IG05: ; bbWeight=0.51, gcrefRegs=1300002 {x1 x20 x21 x24}, byref
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M36935_IG97
+ bne G_M36935_IG98
;; size=24 bbWeight=0.51 PerfScore 3.06
G_M36935_IG06: ; bbWeight=1.02, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref
; gcrRegs -[x1]
@@ -283,7 +283,7 @@ G_M36935_IG08: ; bbWeight=2.23, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
G_M36935_IG09: ; bbWeight=1.95, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz
ldr w2, [fp, #0x58] // [V120 tmp99]
cmp w1, w2
- bhi G_M36935_IG92
+ bhi G_M36935_IG93
cmp w1, #0
cset x0, ge
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -297,7 +297,7 @@ G_M36935_IG09: ; bbWeight=1.95, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
ldr w2, [fp, #0x84] // [V15 loc11]
sub w1, w1, w2
cmp w0, w1
- bgt G_M36935_IG98
+ bgt G_M36935_IG99
;; size=64 bbWeight=1.95 PerfScore 38.97
G_M36935_IG10: ; bbWeight=1.95, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=18480000 {x19 x22 x27 x28}, byref, isz
add x0, x19, #16
@@ -305,7 +305,7 @@ G_M36935_IG10: ; bbWeight=1.95, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
ldr w1, [x19, #0x08]
ldr w3, [x0, #0x08]
cmp w1, w3
- bhi G_M36935_IG92
+ bhi G_M36935_IG93
ldr x0, [x0]
ubfiz x4, x1, #1, #32
add x4, x0, x4
@@ -327,7 +327,7 @@ G_M36935_IG10: ; bbWeight=1.95, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
ldr w3, [fp, #0x84] // [V15 loc11]
ldr w2, [fp, #0x70] // [V71 tmp50]
cmp w3, w2
- bhi G_M36935_IG93
+ bhi G_M36935_IG94
mov w2, w3
lsl x2, x2, #1
ldr x0, [fp, #0x38] // [V72 tmp51]
@@ -348,25 +348,25 @@ G_M36935_IG10: ; bbWeight=1.95, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
str w0, [x19, #0x08]
add w25, w25, w28
cmp w25, w26
- bhs G_M36935_IG94
+ bhs G_M36935_IG95
ldrh w0, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG88
+ bls G_M36935_IG71
ldrh w28, [x27, w25, UXTW #2]
cmp w0, w28
beq G_M36935_IG49
;; size=180 bbWeight=1.95 PerfScore 106.20
G_M36935_IG11: ; bbWeight=1.81, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w0, #123
- bne G_M36935_IG86
+ bne G_M36935_IG88
str xzr, [fp, #0x88]
str xzr, [fp, #0x18] // [V111 tmp90]
; GC ptr vars +{V111}
str wzr, [fp, #0x5C] // [V112 tmp91]
sub w0, w25, #1
cmp w0, w26
- bhs G_M36935_IG94
+ bhs G_M36935_IG95
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
cset x0, eq
@@ -386,10 +386,10 @@ G_M36935_IG11: ; bbWeight=1.81, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
; gcr arg pop 0
sub w28, w28, #48
cmp w28, #10
- bhs G_M36935_IG87
+ bhs G_M36935_IG89
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG88
+ bls G_M36935_IG71
ldrh w0, [x27, w25, UXTW #2]
sxtw w1, w0
cmp w1, #125
@@ -397,7 +397,7 @@ G_M36935_IG11: ; bbWeight=1.81, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
;; size=132 bbWeight=1.81 PerfScore 57.07
G_M36935_IG12: ; bbWeight=1.81, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w25, w26
- bhs G_M36935_IG94
+ bhs G_M36935_IG95
ldrh w0, [x27, w25, UXTW #2]
cmp w0, #125
cset x0, eq
@@ -414,7 +414,7 @@ G_M36935_IG12: ; bbWeight=1.81, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
mov x26, xzr
; gcrRegs +[x26]
cmp w28, w23
- bhs G_M36935_IG91
+ bhs G_M36935_IG92
ldr x28, [x22, w28, UXTW #3]
; gcrRegs +[x28]
cbnz x24, G_M36935_IG47
@@ -443,7 +443,7 @@ G_M36935_IG17: ; bbWeight=0.90, gcrefRegs=15300004 {x2 x20 x21 x24 x26 x2
movk x0, #252 LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x2, x0
- bne G_M36935_IG103
+ bne G_M36935_IG104
mov x2, xzr
; gcrRegs +[x2]
;; size=28 bbWeight=0.90 PerfScore 5.82
@@ -466,7 +466,7 @@ G_M36935_IG20: ; bbWeight=0.86, gcrefRegs=15300008 {x3 x20 x21 x24 x26 x2
movk x0, #252 LSL #16
movk x0, #0xD1FFAB1E LSL #32
cmp x3, x0
- bne G_M36935_IG102
+ bne G_M36935_IG103
mov x3, xzr
; gcrRegs +[x3]
;; size=28 bbWeight=0.86 PerfScore 5.57
@@ -488,14 +488,14 @@ G_M36935_IG23: ; bbWeight=1.71, gcrefRegs=11300000 {x20 x21 x24 x28}, byr
movk x2, #252 LSL #16
movk x2, #0xD1FFAB1E LSL #32
cmp x0, x2
- bne G_M36935_IG99
+ bne G_M36935_IG100
mov x26, x28
; gcrRegs +[x26]
;; size=28 bbWeight=1.71 PerfScore 11.11
G_M36935_IG24: ; bbWeight=1.69, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref, isz
; gcrRegs -[x28]
str w27, [fp, #0x88] // [V08 loc4]
- cbz x26, G_M36935_IG100
+ cbz x26, G_M36935_IG101
;; size=8 bbWeight=1.69 PerfScore 3.39
G_M36935_IG25: ; bbWeight=0.85, gcrefRegs=5300000 {x20 x21 x24 x26}, byrefRegs=480000 {x19 x22}, byref
mov x27, x26
@@ -506,7 +506,7 @@ G_M36935_IG26: ; bbWeight=1.71, gcrefRegs=9300000 {x20 x21 x24 x27}, byre
ldr w26, [x27, #0x08]
ldr w1, [fp, #0x8C] // [V07 loc3]
cmp w26, w1
- blt G_M36935_IG79
+ blt G_M36935_IG81
ldr w28, [x19, #0x08]
sxtw w1, w28
cmp w26, #1
@@ -523,7 +523,7 @@ G_M36935_IG28: ; bbWeight=1.71, gcrefRegs=9300000 {x20 x21 x24 x27}, byre
; byrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w28, w1
- bhi G_M36935_IG92
+ bhi G_M36935_IG93
ldr x0, [x0]
ubfiz x2, x28, #1, #32
add x2, x0, x2
@@ -542,7 +542,7 @@ G_M36935_IG28: ; bbWeight=1.71, gcrefRegs=9300000 {x20 x21 x24 x27}, byre
; byrRegs -[x2]
; gcr arg pop 0
cmp w26, w28
- bhi G_M36935_IG93
+ bhi G_M36935_IG94
;; size=72 bbWeight=1.71 PerfScore 32.49
G_M36935_IG29: ; bbWeight=1.71, gcrefRegs=9300000 {x20 x21 x24 x27}, byrefRegs=480000 {x19 x22}, byref
add x1, x27, #12
@@ -583,7 +583,7 @@ G_M36935_IG31: ; bbWeight=0.28, gcVars=00000000000000000000000000000000 {
ldr w26, [fp, #0x58] // [V120 tmp99]
sub w1, w1, w26
cmp w0, w1
- bgt G_M36935_IG101
+ bgt G_M36935_IG102
;; size=24 bbWeight=0.28 PerfScore 2.80
G_M36935_IG32: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=10080000 {x19 x28}, byref, isz
add x0, x19, #16
@@ -591,7 +591,7 @@ G_M36935_IG32: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=10080000 {x1
ldr w1, [x19, #0x08]
ldr w2, [x0, #0x08]
cmp w1, w2
- bhi G_M36935_IG92
+ bhi G_M36935_IG93
ldr x0, [x0]
ubfiz x3, x1, #1, #32
add x25, x0, x3
@@ -607,7 +607,7 @@ G_M36935_IG32: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=10080000 {x1
blr x1
; gcr arg pop 0
cmp w26, w20
- bhi G_M36935_IG93
+ bhi G_M36935_IG94
mov w2, w26
lsl x2, x2, #1
mov x0, x25
@@ -631,7 +631,7 @@ G_M36935_IG33: ; bbWeight=0.00, gcVars=00000000000000000010000000000000 {
; byrRegs +[x22 x27]
; GC ptr vars +{V111}
cmp w3, #32
- beq G_M36935_IG106
+ beq G_M36935_IG107
str w1, [fp, #0x8C] // [V07 loc3]
mov w1, w3
b G_M36935_IG35
@@ -671,7 +671,7 @@ G_M36935_IG36: ; bbWeight=0.00, gcVars=00000000000000000000000000000000 {
; byrRegs +[x0]
ldr w2, [x0, #0x08]
cmp w1, w2
- bhs G_M36935_IG94
+ bhs G_M36935_IG95
ldr x0, [x0]
ubfiz x2, x1, #1, #32
add x0, x0, x2
@@ -685,7 +685,7 @@ G_M36935_IG37: ; bbWeight=0.07, gcrefRegs=1300000 {x20 x21 x24}, byrefReg
; gcrRegs -[x27]
; byrRegs -[x0] +[x27]
cmp w1, #58
- bne G_M36935_IG89
+ bne G_M36935_IG90
...
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
+12 (+0.80%) : 135267.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 -> x19 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T25] ( 4, 10.14) ref -> x20 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T32] ( 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,T38] ( 7, 3 ) ref -> [fp+0x38] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
-; V05 loc5 [V05,T39] ( 5, 2 ) ref -> [fp+0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor>
-; V06 loc6 [V06,T07] ( 8, 29.26) int -> x19
+; V04 loc4 [V04,T37] ( 7, 3 ) 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, 28.97) 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.06) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
-; V10 tmp3 [V10,T34] ( 2, 4.06) int -> x19 "Inlining Arg"
-; V11 tmp4 [V11,T32] ( 3, 6.09) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; 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]>
;* 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 -> 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.12) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp8 [V15,T28] ( 4, 8.12) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V16 tmp9 [V16,T14] ( 2, 16.24) int -> x26 "Inlining Arg"
-; V17 tmp10 [V17,T10] ( 3, 24.36) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T36] ( 3, 3.05) 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.12) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp8 [V15,T27] ( 4, 8.12) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp9 [V16,T15] ( 2, 16.08) int -> x26 "Inlining Arg"
+; V17 tmp10 [V17,T11] ( 3, 24.12) 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.18) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V20 tmp13 [V20,T01] ( 4, 32.48) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V21 tmp14 [V21,T02] ( 4, 32.48) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T18] ( 3, 12.06) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V20 tmp13 [V20,T01] ( 4, 32.16) ref -> [fp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V21 tmp14 [V21,T02] ( 4, 32.16) 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.24) int -> x26 "Inlining Arg"
-; V24 tmp17 [V24,T11] ( 3, 24.36) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T16] ( 2, 16.08) int -> x26 "Inlining Arg"
+; V24 tmp17 [V24,T12] ( 3, 24.12) 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.18) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V27 tmp20 [V27,T03] ( 4, 32.48) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T04] ( 4, 32.48) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T19] ( 3, 12.06) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V27 tmp20 [V27,T03] ( 4, 32.16) ref -> [fp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T04] ( 4, 32.16) 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.24) ushort -> x26 "Inlining Arg"
-; V34 tmp27 [V34,T12] ( 3, 24.36) ref -> x27 class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T17] ( 2, 16.08) ushort -> x26 "Inlining Arg"
+; V34 tmp27 [V34,T13] ( 3, 24.12) 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.18) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V37 tmp30 [V37,T05] ( 4, 32.48) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V38 tmp31 [V38,T06] ( 4, 32.48) ref -> x28 class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T20] ( 3, 12.06) ref -> x28 class-hnd exact "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
+; V37 tmp30 [V37,T05] ( 4, 32.16) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V38 tmp31 [V38,T06] ( 4, 32.16) 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.12) 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,T28] ( 3, 8.04) 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.12) 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,T29] ( 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,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.30) byref -> x22 "CSE - aggressive"
-; V59 cse1 [V59,T20] ( 3, 12.18) long -> x22 "CSE - moderate"
-; V60 cse2 [V60,T08] ( 9, 27.41) long -> x25 "CSE - aggressive"
-; V61 cse3 [V61,T22] ( 4, 10.15) long -> x21 "CSE - moderate"
-; V62 cse4 [V62,T23] ( 4, 10.15) long -> x23 "CSE - moderate"
-; V63 cse5 [V63,T24] ( 4, 10.15) 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, 24.12) long -> x22 "CSE - aggressive"
+; V59 cse1 [V59,T08] ( 9, 27.16) long -> x25 "CSE - aggressive"
+; V60 cse2 [V60,T22] ( 4, 10.07) long -> x21 "CSE - moderate"
+; V61 cse3 [V61,T23] ( 4, 10.07) long -> x23 "CSE - moderate"
+; V62 cse4 [V62,T24] ( 4, 10.07) 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=0000004000000000 {V04}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000002000000000 {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=0000004000000000 {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.02, gcVars=000000C000000000 {V04 V05}, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1.02, 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.02, gcVars=000000C000000000 {V04 V05}, gcrefR
; gcr arg pop 0
mov w19, wzr
;; size=300 bbWeight=1.02 PerfScore 55.32
-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 w26, [x20, x22]
@@ -374,10 +373,11 @@ G_M53770_IG07: ; bbWeight=4.06, 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.06, 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.06, 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.06 PerfScore 505.52
-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=4.02 PerfScore 506.50
+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>
@@ -632,8 +638,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]
@@ -643,11 +649,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
@@ -671,7 +677,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=0000004000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG19: ; bbWeight=0, gcVars=0000002000000000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x38] // [V04 loc4]
; gcrRegs +[x0]
mov w1, #1
@@ -703,7 +709,7 @@ G_M53770_IG20: ; bbWeight=0, funclet epilog, nogc, extend
ret lr
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1496, prolog size 36, PerfScore 670.44, instruction count 374, allocated bytes for code 1496 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
+; Total bytes of code 1508, prolog size 36, PerfScore 671.34, instruction count 377, allocated bytes for code 1508 (MethodHash=942a2df5) for method System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
; ============================================================
Unwind Info:
@@ -714,7 +720,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 329 (0x00149) Actual length = 1316 (0x000524)
...
realworld.run.windows.arm64.checked.mch
+72 (+2.29%) : 2349.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%) : 2122.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
...
smoke_tests.nativeaot.windows.arm64.checked.mch
-20 (-1.02%) : 11777.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -12,9 +12,9 @@
; V02 arg2 [V02,T19] ( 5, 15 ) ref -> x20 class-hnd exact 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] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x5C]
-; V07 loc3 [V07,T05] ( 12, 74 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 33,260 ) ushort -> [fp+0x5C]
+; V07 loc3 [V07,T05] ( 15, 74 ) int -> x28
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [fp+0x58]
;* 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+0x54]
@@ -134,8 +134,8 @@
; V124 cse1 [V124,T33] ( 3, 12 ) ref -> x4 "CSE - moderate"
; V125 cse2 [V125,T36] ( 3, 12 ) int -> x1 "CSE - moderate"
; V126 cse3 [V126,T34] ( 3, 12 ) ref -> x0 "CSE - moderate"
-; V127 cse4 [V127,T02] ( 20,142 ) int -> x26 "CSE - aggressive"
-; V128 cse5 [V128,T03] ( 17,120 ) byref -> x27 "CSE - aggressive"
+; V127 cse4 [V127,T02] ( 19,126.16) int -> x26 "CSE - aggressive"
+; V128 cse5 [V128,T03] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V129 cse6 [V129,T06] ( 6, 60 ) int -> x26 "CSE - aggressive"
; V130 cse7 [V130,T37] ( 3, 12 ) int -> x0 "CSE - moderate"
; V131 cse8 [V131,T10] ( 17, 34 ) ref -> registers multi-def "CSE - aggressive"
@@ -161,7 +161,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 x20, G_M4730_IG69
+ cbz x20, G_M4730_IG68
cbnz x21, 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
@@ -233,7 +233,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M4730_IG64
+ bls G_M4730_IG63
;; size=12 bbWeight=8 PerfScore 36.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz
add x27, x20, #12
@@ -272,10 +272,10 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x50] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG66
+ tbnz w3, #31, G_M4730_IG65
ldr w4, [fp, #0x38] // [V96 tmp74]
cmp w3, w4
- bhi G_M4730_IG76
+ bhi G_M4730_IG75
mov x0, x19
; gcrRegs +[x0]
mov x1, x28
@@ -288,11 +288,11 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w28, [fp, #0x50] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M4730_IG68
+ bhs G_M4730_IG67
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M4730_IG14
@@ -309,7 +309,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
; byrRegs +[x27]
cmp w28, #123
- bne G_M4730_IG70
+ bne G_M4730_IG69
mov w28, wzr
str wzr, [fp, #0x58] // [V08 loc4]
str xzr, [fp, #0x18] // [V85 tmp63]
@@ -317,7 +317,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str wzr, [fp, #0x3C] // [V86 tmp64]
sub w0, w25, #1
cmp w0, w26
- bhs G_M4730_IG68
+ bhs G_M4730_IG67
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M4730_IG16
@@ -357,10 +357,10 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x5C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M4730_IG71
+ bhs G_M4730_IG70
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M4730_IG20
@@ -371,7 +371,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
ldr x4, [fp, #0x18] // [V85 tmp63]
; byrRegs +[x4]
- b G_M4730_IG41
+ b G_M4730_IG40
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
; byrRegs -[x4]
@@ -381,7 +381,7 @@ G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str w6, [fp, #0x54] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x54] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -395,129 +395,122 @@ G_M4730_IG22: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
;; size=24 bbWeight=16 PerfScore 56.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG27
- tbnz w25, #31, G_M4730_IG26
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG25
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG24: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG24
- ;; size=24 bbWeight=15.84 PerfScore 102.96
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- mov w0, w2
- mov w2, w0
- b G_M4730_IG27
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M4730_IG26: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M4730_IG36
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG26: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG26
- ;; size=24 bbWeight=0.16 PerfScore 1.04
-G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #44
- bne G_M4730_IG37
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG28: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- add w25, w25, #1
- cmp w26, w25
- bls G_M4730_IG72
- ldrh w2, [x27, w25, UXTW #2]
- cmp w2, #32
- beq G_M4730_IG28
;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG29: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #45
- bne G_M4730_IG30
+ bne G_M4730_IG28
mov w3, #1
str w3, [fp, #0x58] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M4730_IG30: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG28: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M4730_IG71
+ bhs G_M4730_IG70
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
- b G_M4730_IG32
- ;; size=28 bbWeight=2 PerfScore 10.00
-G_M4730_IG31: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bls G_M4730_IG71
+ tbnz w25, #31, G_M4730_IG33
+ b G_M4730_IG30
+ ;; size=32 bbWeight=2 PerfScore 12.00
+G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {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_M4730_IG72
- ;; size=24 bbWeight=8 PerfScore 40.00
-G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w25, w26
- bhs G_M4730_IG68
+ bls G_M4730_IG71
+ ;; size=24 bbWeight=7.92 PerfScore 39.60
+G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
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_M4730_IG31
- ;; size=36 bbWeight=16 PerfScore 128.00
-G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #32
- bne G_M4730_IG37
- tbnz w25, #31, G_M4730_IG36
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M4730_IG34: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ blt G_M4730_IG29
+ ;; size=28 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG31: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG34
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG32: ; bbWeight=0.08, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {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_M4730_IG72
+ bls G_M4730_IG71
+ ;; size=24 bbWeight=0.08 PerfScore 0.40
+G_M4730_IG33: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w25, w26
+ bhs G_M4730_IG67
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_M4730_IG32
...
-20 (-0.98%) : 6454.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,T19] ( 5, 15 ) ref -> x20 class-hnd exact 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,T53] ( 3, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x5C]
-; V07 loc3 [V07,T05] ( 12, 74 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 33,260 ) ushort -> [fp+0x5C]
+; V07 loc3 [V07,T05] ( 15, 74 ) int -> x28
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [fp+0x58]
;* 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+0x54]
@@ -136,8 +136,8 @@
; V125 cse1 [V125,T35] ( 3, 12 ) ref -> x15 "CSE - moderate"
; V126 cse2 [V126,T38] ( 3, 12 ) int -> x10 "CSE - moderate"
; V127 cse3 [V127,T36] ( 3, 12 ) ref -> x0 "CSE - moderate"
-; V128 cse4 [V128,T02] ( 20,142 ) int -> x26 "CSE - aggressive"
-; V129 cse5 [V129,T03] ( 17,120 ) byref -> x27 "CSE - aggressive"
+; V128 cse4 [V128,T02] ( 19,126.16) int -> x26 "CSE - aggressive"
+; V129 cse5 [V129,T03] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V130 cse6 [V130,T06] ( 6, 60 ) int -> x26 "CSE - aggressive"
; V131 cse7 [V131,T39] ( 3, 12 ) int -> x0 "CSE - moderate"
; V132 cse8 [V132,T10] ( 17, 34 ) ref -> registers multi-def "CSE - aggressive"
@@ -166,7 +166,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 x20, G_M4730_IG69
+ cbz x20, G_M4730_IG68
cbnz x21, 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
@@ -238,7 +238,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M4730_IG64
+ bls G_M4730_IG63
;; size=12 bbWeight=8 PerfScore 36.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=400000 {x22}, byref, isz
add x27, x20, #12
@@ -277,10 +277,10 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x50] // [V15 loc11]
- tbnz w3, #31, G_M4730_IG66
+ tbnz w3, #31, G_M4730_IG65
ldr w4, [fp, #0x38] // [V96 tmp74]
cmp w3, w4
- bhi G_M4730_IG76
+ bhi G_M4730_IG75
mov x0, x19
; gcrRegs +[x0]
mov x1, x28
@@ -293,11 +293,11 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w28, [fp, #0x50] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M4730_IG68
+ bhs G_M4730_IG67
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M4730_IG14
@@ -314,7 +314,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
; gcrRegs -[x0]
; byrRegs +[x27]
cmp w28, #123
- bne G_M4730_IG70
+ bne G_M4730_IG69
mov w28, wzr
str wzr, [fp, #0x58] // [V08 loc4]
str xzr, [fp, #0x18] // [V85 tmp63]
@@ -322,7 +322,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str wzr, [fp, #0x3C] // [V86 tmp64]
sub w0, w25, #1
cmp w0, w26
- bhs G_M4730_IG68
+ bhs G_M4730_IG67
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M4730_IG16
@@ -362,10 +362,10 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
ldr w2, [fp, #0x5C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M4730_IG71
+ bhs G_M4730_IG70
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M4730_IG20
@@ -376,7 +376,7 @@ G_M4730_IG19: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
G_M4730_IG20: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
ldr x4, [fp, #0x18] // [V85 tmp63]
; byrRegs +[x4]
- b G_M4730_IG41
+ b G_M4730_IG40
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
; byrRegs -[x4]
@@ -386,7 +386,7 @@ G_M4730_IG21: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefReg
str w6, [fp, #0x54] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x54] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -400,129 +400,122 @@ G_M4730_IG22: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe
;; size=24 bbWeight=16 PerfScore 56.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #32
- bne G_M4730_IG27
- tbnz w25, #31, G_M4730_IG26
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M4730_IG24: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bne G_M4730_IG25
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG24: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG24
- ;; size=24 bbWeight=15.84 PerfScore 102.96
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
- mov w0, w2
- mov w2, w0
- b G_M4730_IG27
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M4730_IG26: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M4730_IG36
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M4730_IG26: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M4730_IG26
- ;; size=24 bbWeight=0.16 PerfScore 1.04
-G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #44
- bne G_M4730_IG37
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M4730_IG28: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- add w25, w25, #1
- cmp w26, w25
- bls G_M4730_IG72
- ldrh w2, [x27, w25, UXTW #2]
- cmp w2, #32
- beq G_M4730_IG28
;; size=24 bbWeight=16 PerfScore 104.00
-G_M4730_IG29: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG27: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w2, #45
- bne G_M4730_IG30
+ bne G_M4730_IG28
mov w3, #1
str w3, [fp, #0x58] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
+ bls G_M4730_IG71
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M4730_IG30: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M4730_IG28: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M4730_IG71
+ bhs G_M4730_IG70
add w25, w25, #1
cmp w26, w25
- bls G_M4730_IG72
- b G_M4730_IG32
- ;; size=28 bbWeight=2 PerfScore 10.00
-G_M4730_IG31: ; bbWeight=8, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ bls G_M4730_IG71
+ tbnz w25, #31, G_M4730_IG33
+ b G_M4730_IG30
+ ;; size=32 bbWeight=2 PerfScore 12.00
+G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {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_M4730_IG72
- ;; size=24 bbWeight=8 PerfScore 40.00
-G_M4730_IG32: ; bbWeight=16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w25, w26
- bhs G_M4730_IG68
+ bls G_M4730_IG71
+ ;; size=24 bbWeight=7.92 PerfScore 39.60
+G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
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_M4730_IG31
- ;; size=36 bbWeight=16 PerfScore 128.00
-G_M4730_IG33: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
- cmp w2, #32
- bne G_M4730_IG37
- tbnz w25, #31, G_M4730_IG36
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M4730_IG34: ; bbWeight=15.84, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ blt G_M4730_IG29
+ ;; size=28 bbWeight=15.84 PerfScore 102.96
+G_M4730_IG31: ; bbWeight=2, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref
+ b G_M4730_IG34
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M4730_IG32: ; bbWeight=0.08, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {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_M4730_IG72
+ bls G_M4730_IG71
+ ;; size=24 bbWeight=0.08 PerfScore 0.40
+G_M4730_IG33: ; bbWeight=0.16, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8400000 {x22 x27}, byref, isz
+ cmp w25, w26
+ bhs G_M4730_IG67
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_M4730_IG32
...
-20 (-0.93%) : 1499.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -12,9 +12,9 @@
; V02 arg2 [V02,T24] ( 5, 15 ) ref -> x20 class-hnd exact 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, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [fp+0x6C]
-; V07 loc3 [V07,T06] ( 12,102 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x6C]
+; V07 loc3 [V07,T06] ( 15,102 ) int -> x28
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [fp+0x68]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [fp+0x64]
@@ -128,9 +128,9 @@
; V118 tmp97 [V118,T42] ( 2, 8 ) byref -> x1 "field V75._reference (fldOffset=0x0)" P-INDEP
; V119 tmp98 [V119,T45] ( 2, 8 ) int -> x2 "field V75._length (fldOffset=0x8)" P-INDEP
; V120 cse0 [V120,T37] ( 3, 12 ) int -> x2 "CSE - moderate"
-; V121 cse1 [V121,T03] ( 20,142 ) int -> x26 "CSE - aggressive"
+; V121 cse1 [V121,T03] ( 19,126.16) int -> x26 "CSE - aggressive"
; V122 cse2 [V122,T05] ( 7,108 ) int -> x26 "CSE - aggressive"
-; V123 cse3 [V123,T04] ( 17,120 ) byref -> x27 "CSE - aggressive"
+; V123 cse3 [V123,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V124 cse4 [V124,T38] ( 3, 12 ) int -> x0 "CSE - moderate"
; V125 cse5 [V125,T14] ( 20, 40 ) ref -> registers multi-def "CSE - aggressive"
;
@@ -155,7 +155,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_IG77
+ cbz x20, G_M36935_IG76
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
@@ -227,7 +227,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M36935_IG73
+ bls G_M36935_IG72
;; size=12 bbWeight=8 PerfScore 36.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz
add x27, x20, #12
@@ -266,10 +266,10 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x60] // [V15 loc11]
- tbnz w3, #31, G_M36935_IG74
+ tbnz w3, #31, G_M36935_IG73
ldr w4, [fp, #0x44] // [V97 tmp76]
cmp w3, w4
- bhi G_M36935_IG84
+ bhi G_M36935_IG83
mov x1, x28
; byrRegs +[x1]
mov w2, w3
@@ -281,11 +281,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
ldr w28, [fp, #0x60] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M36935_IG76
+ bhs G_M36935_IG75
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M36935_IG17
@@ -319,7 +319,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs +[x27]
cmp w28, #123
- bne G_M36935_IG78
+ bne G_M36935_IG77
mov w28, wzr
str wzr, [fp, #0x68] // [V08 loc4]
str xzr, [fp, #0x18] // [V88 tmp67]
@@ -327,7 +327,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str wzr, [fp, #0x48] // [V89 tmp68]
sub w0, w25, #1
cmp w0, w26
- bhs G_M36935_IG76
+ bhs G_M36935_IG75
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M36935_IG19
@@ -367,10 +367,10 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr w2, [fp, #0x6C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M36935_IG79
+ bhs G_M36935_IG78
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M36935_IG23
@@ -381,7 +381,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
ldr x4, [fp, #0x18] // [V88 tmp67]
; byrRegs +[x4]
- b G_M36935_IG44
+ b G_M36935_IG43
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs -[x4]
@@ -391,7 +391,7 @@ G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str w6, [fp, #0x64] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x64] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -405,129 +405,122 @@ G_M36935_IG25: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=
;; size=24 bbWeight=16 PerfScore 56.00
G_M36935_IG26: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG30
- tbnz w25, #31, G_M36935_IG29
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M36935_IG27: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG28
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG27: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG27
- ;; size=24 bbWeight=15.84 PerfScore 102.96
-G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
- mov w0, w2
- mov w2, w0
- b G_M36935_IG30
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M36935_IG29: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M36935_IG39
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG29: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG29
- ;; size=24 bbWeight=0.16 PerfScore 1.04
-G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #44
- bne G_M36935_IG40
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG31: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- add w25, w25, #1
- cmp w26, w25
- bls G_M36935_IG80
- ldrh w2, [x27, w25, UXTW #2]
- cmp w2, #32
- beq G_M36935_IG31
;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #45
- bne G_M36935_IG33
+ bne G_M36935_IG31
mov w3, #1
str w3, [fp, #0x68] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M36935_IG33: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M36935_IG79
+ bhs G_M36935_IG78
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
- b G_M36935_IG35
- ;; size=28 bbWeight=2 PerfScore 10.00
-G_M36935_IG34: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bls G_M36935_IG79
+ tbnz w25, #31, G_M36935_IG36
+ b G_M36935_IG33
+ ;; size=32 bbWeight=2 PerfScore 12.00
+G_M36935_IG32: ; 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_IG80
- ;; size=24 bbWeight=8 PerfScore 40.00
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w25, w26
- bhs G_M36935_IG76
+ bls G_M36935_IG79
+ ;; size=24 bbWeight=7.92 PerfScore 39.60
+G_M36935_IG33: ; 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
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M36935_IG34
- ;; size=36 bbWeight=16 PerfScore 128.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #32
- bne G_M36935_IG40
- tbnz w25, #31, G_M36935_IG39
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ blt G_M36935_IG32
+ ;; size=28 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG37
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG35: ; 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_IG80
+ bls G_M36935_IG79
+ ;; size=24 bbWeight=0.08 PerfScore 0.40
+G_M36935_IG36: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w25, w26
+ bhs G_M36935_IG75
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
...
-20 (-0.89%) : 5215.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -13,9 +13,9 @@
; V02 arg2 [V02,T24] ( 5, 15 ) ref -> x20 class-hnd exact 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, 7 ) ref -> x24 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> x25 ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [fp+0x6C]
-; V07 loc3 [V07,T06] ( 12,102 ) int -> x28
+; V05 loc1 [V05,T00] ( 66,441.16) int -> x25 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [fp+0x6C]
+; V07 loc3 [V07,T06] ( 15,102 ) int -> x28
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [fp+0x68]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [fp+0x64]
@@ -130,9 +130,9 @@
; V119 tmp98 [V119,T49] ( 2, 8 ) int -> x2 "field V75._length (fldOffset=0x8)" P-INDEP
; V120 tmp99 [V120,T37] ( 3, 12 ) ref -> x0 "argument with side effect"
; V121 cse0 [V121,T39] ( 3, 12 ) int -> x2 "CSE - moderate"
-; V122 cse1 [V122,T03] ( 20,142 ) int -> x26 "CSE - aggressive"
+; V122 cse1 [V122,T03] ( 19,126.16) int -> x26 "CSE - aggressive"
; V123 cse2 [V123,T05] ( 7,108 ) int -> x26 "CSE - aggressive"
-; V124 cse3 [V124,T04] ( 17,120 ) byref -> x27 "CSE - aggressive"
+; V124 cse3 [V124,T04] ( 16,120 ) byref -> x27 "CSE - aggressive"
; V125 cse4 [V125,T40] ( 3, 12 ) int -> x0 "CSE - moderate"
; V126 cse5 [V126,T14] ( 20, 40 ) ref -> registers multi-def "CSE - aggressive"
; V127 rat0 [V127,T41] ( 3, 12 ) long -> x6 "ReplaceWithLclVar is creating a new local variable"
@@ -160,7 +160,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_IG77
+ cbz x20, G_M36935_IG76
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
@@ -232,7 +232,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
; gcrRegs -[x0]
ldr w26, [x20, #0x08]
cmp w26, w25
- bls G_M36935_IG73
+ bls G_M36935_IG72
;; size=12 bbWeight=8 PerfScore 36.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=480000 {x19 x22}, byref, isz
add x27, x20, #12
@@ -271,10 +271,10 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
; gcr arg pop 0
sxtw w3, w0
str w3, [fp, #0x60] // [V15 loc11]
- tbnz w3, #31, G_M36935_IG74
+ tbnz w3, #31, G_M36935_IG73
ldr w4, [fp, #0x44] // [V97 tmp76]
cmp w3, w4
- bhi G_M36935_IG84
+ bhi G_M36935_IG83
mov x1, x28
; byrRegs +[x1]
mov w2, w3
@@ -286,11 +286,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=1
ldr w28, [fp, #0x60] // [V15 loc11]
add w25, w25, w28
cmp w25, w26
- bhs G_M36935_IG76
+ bhs G_M36935_IG75
ldrh w28, [x27, w25, UXTW #2]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w28, w2
bne G_M36935_IG17
@@ -324,7 +324,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=4
G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs +[x27]
cmp w28, #123
- bne G_M36935_IG78
+ bne G_M36935_IG77
mov w28, wzr
str wzr, [fp, #0x68] // [V08 loc4]
str xzr, [fp, #0x18] // [V88 tmp67]
@@ -332,7 +332,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str wzr, [fp, #0x48] // [V89 tmp68]
sub w0, w25, #1
cmp w0, w26
- bhs G_M36935_IG76
+ bhs G_M36935_IG75
ldrh w0, [x27, w0, UXTW #2]
cmp w0, #123
beq G_M36935_IG19
@@ -372,10 +372,10 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
ldr w2, [fp, #0x6C] // [V06 loc2]
sub w6, w2, #48
cmp w6, #10
- bhs G_M36935_IG79
+ bhs G_M36935_IG78
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #125
beq G_M36935_IG23
@@ -386,7 +386,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
G_M36935_IG23: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
ldr x4, [fp, #0x18] // [V88 tmp67]
; byrRegs +[x4]
- b G_M36935_IG44
+ b G_M36935_IG43
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
; byrRegs -[x4]
@@ -396,7 +396,7 @@ G_M36935_IG24: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8
str w6, [fp, #0x64] // [V10 loc6]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
ldr w6, [fp, #0x64] // [V10 loc6]
;; size=36 bbWeight=8 PerfScore 88.00
@@ -410,129 +410,122 @@ G_M36935_IG25: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=
;; size=24 bbWeight=16 PerfScore 56.00
G_M36935_IG26: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #32
- bne G_M36935_IG30
- tbnz w25, #31, G_M36935_IG29
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M36935_IG27: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bne G_M36935_IG28
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG27: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG27
- ;; size=24 bbWeight=15.84 PerfScore 102.96
-G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
- mov w0, w2
- mov w2, w0
- b G_M36935_IG30
- ;; size=12 bbWeight=2 PerfScore 4.00
-G_M36935_IG29: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ ;; size=24 bbWeight=16 PerfScore 104.00
+G_M36935_IG28: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w2, #44
+ bne G_M36935_IG39
+ ;; size=8 bbWeight=2 PerfScore 3.00
+G_M36935_IG29: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
cmp w2, #32
beq G_M36935_IG29
- ;; size=24 bbWeight=0.16 PerfScore 1.04
-G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #44
- bne G_M36935_IG40
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M36935_IG31: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- add w25, w25, #1
- cmp w26, w25
- bls G_M36935_IG80
- ldrh w2, [x27, w25, UXTW #2]
- cmp w2, #32
- beq G_M36935_IG31
;; size=24 bbWeight=16 PerfScore 104.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG30: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
cmp w2, #45
- bne G_M36935_IG33
+ bne G_M36935_IG31
mov w3, #1
str w3, [fp, #0x68] // [V08 loc4]
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
+ bls G_M36935_IG79
ldrh w2, [x27, w25, UXTW #2]
;; size=32 bbWeight=2 PerfScore 16.00
-G_M36935_IG33: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+G_M36935_IG31: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
sub w28, w2, #48
cmp w28, #10
- bhs G_M36935_IG79
+ bhs G_M36935_IG78
add w25, w25, #1
cmp w26, w25
- bls G_M36935_IG80
- b G_M36935_IG35
- ;; size=28 bbWeight=2 PerfScore 10.00
-G_M36935_IG34: ; bbWeight=8, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ bls G_M36935_IG79
+ tbnz w25, #31, G_M36935_IG36
+ b G_M36935_IG33
+ ;; size=32 bbWeight=2 PerfScore 12.00
+G_M36935_IG32: ; 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_IG80
- ;; size=24 bbWeight=8 PerfScore 40.00
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w25, w26
- bhs G_M36935_IG76
+ bls G_M36935_IG79
+ ;; size=24 bbWeight=7.92 PerfScore 39.60
+G_M36935_IG33: ; 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
movk w1, #15 LSL #16
cmp w0, #9
ccmp w28, w1, z, ls
- blt G_M36935_IG34
- ;; size=36 bbWeight=16 PerfScore 128.00
-G_M36935_IG36: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
- cmp w2, #32
- bne G_M36935_IG40
- tbnz w25, #31, G_M36935_IG39
- ;; size=12 bbWeight=2 PerfScore 5.00
-G_M36935_IG37: ; bbWeight=15.84, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ blt G_M36935_IG32
+ ;; size=28 bbWeight=15.84 PerfScore 102.96
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref
+ b G_M36935_IG37
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M36935_IG35: ; 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_IG80
+ bls G_M36935_IG79
+ ;; size=24 bbWeight=0.08 PerfScore 0.40
+G_M36935_IG36: ; bbWeight=0.16, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=8480000 {x19 x22 x27}, byref, isz
+ cmp w25, w26
+ bhs G_M36935_IG75
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
...
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 |
1 |
1 |
0 |
0 |
-60 |
+0 |
| benchmarks.run_tiered.windows.arm64.checked.mch |
3 |
2 |
1 |
0 |
-208 |
+64 |
| coreclr_tests.run.windows.arm64.checked.mch |
148 |
1 |
146 |
1 |
-172 |
+13,164 |
| libraries.crossgen2.windows.arm64.checked.mch |
4 |
1 |
3 |
0 |
-28 |
+276 |
| libraries.pmi.windows.arm64.checked.mch |
2 |
1 |
1 |
0 |
-16 |
+268 |
| libraries_tests.run.windows.arm64.Release.mch |
235 |
2 |
233 |
0 |
-144 |
+23,172 |
| 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 |
4 |
4 |
0 |
0 |
-80 |
+0 |
|
402 |
12 |
389 |
1 |
-708 |
+37,244 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.arm64.checked.mch |
24,446 |
4 |
24,442 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.arm64.checked.mch |
96,117 |
48,079 |
48,038 |
4 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.windows.arm64.checked.mch |
49,359 |
36,713 |
12,646 |
1 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.arm64.checked.mch |
595,400 |
362,592 |
232,808 |
3 (0.00%) |
1 (0.00%) |
| libraries.crossgen2.windows.arm64.checked.mch |
244,149 |
15 |
244,134 |
0 (0.00%) |
3 (0.00%) |
| libraries.pmi.windows.arm64.checked.mch |
305,575 |
6 |
305,569 |
0 (0.00%) |
3 (0.00%) |
| libraries_tests.run.windows.arm64.Release.mch |
651,606 |
469,431 |
182,175 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
317,077 |
21,598 |
295,479 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.arm64.checked.mch |
33,211 |
3 |
33,208 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.windows.arm64.checked.mch |
24,160 |
8 |
24,152 |
0 (0.00%) |
2 (0.01%) |
|
2,341,100 |
938,449 |
1,402,651 |
8 (0.00%) |
9 (0.00%) |
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: 10965984 (overridden on cmd)
Total bytes of diff: 10966128 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
72 : 2643.dasm (2.29 % of base)
72 : 2634.dasm (2.66 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
72 (2.66 % of base) : 2634.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 2643.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
72 (2.66 % of base) : 2634.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 2643.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
benchmarks.run_pgo.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 45573984 (overridden on cmd)
Total bytes of diff: 45573924 (overridden on cmd)
Total bytes of delta: -60 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-60 : 72896.dasm (-7.08 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-60 (-7.08 % of base) : 72896.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method improvements (percentages):
-60 (-7.08 % of base) : 72896.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
1 total methods with Code Size differences (1 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: 15587216 (overridden on cmd)
Total bytes of diff: 15587072 (overridden on cmd)
Total bytes of delta: -144 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
64 : 20612.dasm (1.92 % of base)
Top file improvements (bytes):
-148 : 31904.dasm (-13.81 % of base)
-60 : 43870.dasm (-7.43 % of base)
3 total files with Code Size differences (2 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
64 (1.92 % of base) : 20612.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
Top method improvements (bytes):
-148 (-13.81 % of base) : 31904.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-60 (-7.43 % of base) : 43870.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
64 (1.92 % of base) : 20612.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
Top method improvements (percentages):
-148 (-13.81 % of base) : 31904.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-60 (-7.43 % of base) : 43870.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
3 total methods with Code Size differences (2 improved, 1 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: 495312096 (overridden on cmd)
Total bytes of diff: 495325088 (overridden on cmd)
Total bytes of delta: 12992 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
124 : 552693.dasm (2.76 % of base)
124 : 593498.dasm (2.76 % of base)
124 : 513790.dasm (2.76 % of base)
124 : 545815.dasm (2.76 % of base)
120 : 324379.dasm (2.80 % of base)
120 : 447552.dasm (2.76 % of base)
120 : 337200.dasm (2.76 % of base)
120 : 499863.dasm (2.76 % of base)
120 : 535111.dasm (2.79 % of base)
120 : 456436.dasm (2.75 % of base)
120 : 496578.dasm (2.78 % of base)
120 : 503666.dasm (2.76 % of base)
120 : 503727.dasm (2.75 % of base)
120 : 582507.dasm (2.77 % of base)
120 : 342845.dasm (2.76 % of base)
120 : 495745.dasm (2.78 % of base)
120 : 515545.dasm (2.75 % of base)
120 : 546781.dasm (2.77 % of base)
120 : 574637.dasm (2.77 % of base)
116 : 320364.dasm (2.79 % of base)
Top file improvements (bytes):
-172 : 511543.dasm (-32.33 % of base)
77 total files with Code Size differences (1 improved, 76 regressed), 1 unchanged.
Top method regressions (bytes):
124 (2.76 % of base) : 552693.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 593498.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 513790.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 545815.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.80 % of base) : 324379.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 447552.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 337200.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 499863.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.79 % of base) : 535111.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.75 % of base) : 456436.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.78 % of base) : 496578.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 503666.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.75 % of base) : 503727.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.77 % of base) : 582507.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.76 % of base) : 342845.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.78 % of base) : 495745.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.75 % of base) : 515545.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.77 % of base) : 546781.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.77 % of base) : 574637.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 320364.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (bytes):
-172 (-32.33 % of base) : 511543.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
112 (3.18 % of base) : 591350.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (3.12 % of base) : 586482.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (2.99 % of base) : 506060.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
120 (2.80 % of base) : 324379.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.79 % of base) : 535111.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 320364.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 508836.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 543214.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 567244.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 594523.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 321724.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 544676.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 593788.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 477302.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 517072.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 593235.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 477017.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 484398.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 493577.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
116 (2.79 % of base) : 580238.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (percentages):
-172 (-32.33 % of base) : 511543.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
libraries.crossgen2.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: 59069324 (overridden on cmd)
Total bytes of diff: 59069572 (overridden on cmd)
Total bytes of delta: 248 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
148 : 97828.dasm (28.46 % of base)
64 : 23178.dasm (2.64 % of base)
64 : 19165.dasm (2.86 % of base)
Top file improvements (bytes):
-28 : 94712.dasm (-20.59 % of base)
4 total files with Code Size differences (1 improved, 3 regressed), 0 unchanged.
Top method regressions (bytes):
148 (28.46 % of base) : 97828.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
64 (2.86 % of base) : 19165.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (2.64 % of base) : 23178.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (bytes):
-28 (-20.59 % of base) : 94712.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
148 (28.46 % of base) : 97828.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
64 (2.86 % of base) : 19165.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
64 (2.64 % of base) : 23178.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-28 (-20.59 % of base) : 94712.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
4 total methods with Code Size differences (1 improved, 3 regressed).
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: 79845240 (overridden on cmd)
Total bytes of diff: 79845492 (overridden on cmd)
Total bytes of delta: 252 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
268 : 97778.dasm (36.41 % of base)
Top file improvements (bytes):
-16 : 94373.dasm (-12.90 % of base)
2 total files with Code Size differences (1 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
268 (36.41 % of base) : 97778.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
Top method improvements (bytes):
-16 (-12.90 % of base) : 94373.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
268 (36.41 % of base) : 97778.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
Top method improvements (percentages):
-16 (-12.90 % of base) : 94373.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
2 total methods with Code Size differences (1 improved, 1 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: 330792848 (overridden on cmd)
Total bytes of diff: 330815876 (overridden on cmd)
Total bytes of delta: 23028 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
132 : 350853.dasm (3.36 % of base)
128 : 493743.dasm (3.34 % of base)
128 : 295598.dasm (3.28 % of base)
124 : 194007.dasm (2.76 % of base)
124 : 371905.dasm (2.76 % of base)
124 : 529387.dasm (2.76 % of base)
124 : 208765.dasm (2.76 % of base)
124 : 447662.dasm (2.76 % of base)
124 : 396408.dasm (2.76 % of base)
120 : 630736.dasm (2.79 % of base)
120 : 642215.dasm (2.78 % of base)
120 : 643944.dasm (2.79 % of base)
120 : 105500.dasm (2.77 % of base)
120 : 299364.dasm (2.78 % of base)
120 : 353632.dasm (2.79 % of base)
120 : 634156.dasm (2.79 % of base)
120 : 71032.dasm (2.78 % of base)
120 : 204332.dasm (2.78 % of base)
120 : 292060.dasm (2.78 % of base)
120 : 312424.dasm (2.79 % of base)
Top file improvements (bytes):
-84 : 276066.dasm (-3.83 % of base)
-60 : 271752.dasm (-2.17 % of base)
74 total files with Code Size differences (2 improved, 72 regressed), 0 unchanged.
Top method regressions (bytes):
132 (3.36 % of base) : 350853.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.34 % of base) : 493743.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.28 % of base) : 295598.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
124 (2.76 % of base) : 194007.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 371905.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 529387.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 208765.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 447662.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
124 (2.76 % of base) : 396408.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.79 % of base) : 630736.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.78 % of base) : 642215.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.79 % of base) : 643944.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.77 % of base) : 105500.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.78 % of base) : 299364.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.79 % of base) : 353632.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.79 % of base) : 634156.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.78 % of base) : 71032.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.78 % of base) : 204332.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.78 % of base) : 292060.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
120 (2.79 % of base) : 312424.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (bytes):
-84 (-3.83 % of base) : 276066.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-60 (-2.17 % of base) : 271752.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method regressions (percentages):
132 (3.36 % of base) : 350853.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.35 % of base) : 415033.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.34 % of base) : 278197.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.34 % of base) : 327493.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.34 % of base) : 361255.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.34 % of base) : 475720.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.34 % of base) : 493743.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.34 % of base) : 170747.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.34 % of base) : 445852.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.30 % of base) : 354876.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
128 (3.28 % of base) : 295598.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 340055.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 222505.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 275117.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 569082.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 554851.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 636431.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.28 % of base) : 368714.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.27 % of base) : 583337.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
116 (3.26 % of base) : 522143.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
Top method improvements (percentages):
-84 (-3.83 % of base) : 276066.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-60 (-2.17 % of base) : 271752.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
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: 171580828 (overridden on cmd)
Total bytes of diff: 171580840 (overridden on cmd)
Total bytes of delta: 12 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
12 : 135267.dasm (0.80 % of base)
1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
12 (0.80 % of base) : 135267.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
Top method regressions (percentages):
12 (0.80 % of base) : 135267.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)
1 total methods with Code Size differences (0 improved, 1 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: 15904740 (overridden on cmd)
Total bytes of diff: 15904884 (overridden on cmd)
Total bytes of delta: 144 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
72 : 2122.dasm (2.66 % of base)
72 : 2349.dasm (2.29 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
72 (2.66 % of base) : 2122.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 2349.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
72 (2.66 % of base) : 2122.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
72 (2.29 % of base) : 2349.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
smoke_tests.nativeaot.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: 3970172 (overridden on cmd)
Total bytes of diff: 3970092 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-20 : 11777.dasm (-1.02 % of base)
-20 : 5215.dasm (-0.89 % of base)
-20 : 6454.dasm (-0.98 % of base)
-20 : 1499.dasm (-0.93 % of base)
4 total files with Code Size differences (4 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-20 (-1.02 % of base) : 11777.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-20 (-0.98 % of base) : 6454.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-20 (-0.89 % of base) : 5215.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-20 (-0.93 % of base) : 1499.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-20 (-1.02 % of base) : 11777.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-20 (-0.98 % of base) : 6454.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-20 (-0.93 % of base) : 1499.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-20 (-0.89 % of base) : 5215.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
4 total methods with Code Size differences (4 improved, 0 regressed).
windows x64
Diffs are based on 2,512,201 contexts (997,391 MinOpts, 1,514,810 FullOpts).
MISSED contexts: base: 8 (0.00%), diff: 3 (0.00%)
Overall (+34,541 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| aspnet.run.windows.x64.checked.mch |
47,041,738 |
+622 |
| benchmarks.run.windows.x64.checked.mch |
8,742,508 |
+102 |
| benchmarks.run_pgo.windows.x64.checked.mch |
36,236,407 |
+642 |
| benchmarks.run_tiered.windows.x64.checked.mch |
12,416,111 |
-110 |
| coreclr_tests.run.windows.x64.checked.mch |
393,193,248 |
+12,446 |
| libraries.crossgen2.windows.x64.checked.mch |
39,485,973 |
+438 |
| libraries.pmi.windows.x64.checked.mch |
61,661,946 |
+507 |
| libraries_tests.run.windows.x64.Release.mch |
282,113,061 |
+19,689 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
137,067,068 |
+0 |
| realworld.run.windows.x64.checked.mch |
14,130,922 |
+102 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
5,083,011 |
+103 |
FullOpts (+34,541 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| aspnet.run.windows.x64.checked.mch |
28,550,689 |
+622 |
| benchmarks.run.windows.x64.checked.mch |
8,742,145 |
+102 |
| benchmarks.run_pgo.windows.x64.checked.mch |
22,065,751 |
+642 |
| benchmarks.run_tiered.windows.x64.checked.mch |
3,316,872 |
-110 |
| coreclr_tests.run.windows.x64.checked.mch |
120,404,394 |
+12,446 |
| libraries.crossgen2.windows.x64.checked.mch |
39,484,786 |
+438 |
| libraries.pmi.windows.x64.checked.mch |
61,548,425 |
+507 |
| libraries_tests.run.windows.x64.Release.mch |
106,254,743 |
+19,689 |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
126,447,962 |
+0 |
| realworld.run.windows.x64.checked.mch |
13,744,313 |
+102 |
| smoke_tests.nativeaot.windows.x64.checked.mch |
5,082,064 |
+103 |
Example diffs
aspnet.run.windows.x64.checked.mch
+37 (+1.30%) : 85154.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
@@ -5,31 +5,31 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 769
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 769
; 29 inlinees with PGO data; 42 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T01] ( 24, 16.99) ref -> rbx this class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T20] ( 11, 4 ) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 16, 14 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 17, 14 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T10] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T51] ( 3, 3 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 58, 36 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T08] ( 29, 10 ) ushort -> registers
-; V07 loc3 [V07,T30] ( 12, 5 ) int -> [rsp+0xB4]
+; V05 loc1 [V05,T00] ( 63, 36 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T08] ( 32, 10 ) ushort -> registers
+; V07 loc3 [V07,T30] ( 15, 5 ) int -> [rsp+0xB4]
; V08 loc4 [V08,T31] ( 5, 5 ) ubyte -> [rsp+0xB0]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V10 loc6 [V10,T13] ( 7, 8 ) int -> rax
+; V10 loc6 [V10,T14] ( 7, 8 ) int -> rax
; V11 loc7 [V11,T11] ( 14, 9 ) ref -> r12 class-hnd <System.String>
-; V12 loc8 [V12,T60] ( 6, 2 ) ref -> [rsp+0x50] class-hnd <System.String>
-; V13 loc9 [V13,T12] ( 11, 8.32) ref -> [rsp+0x48] class-hnd spill-single-def <System.Object>
+; V12 loc8 [V12,T60] ( 6, 2 ) ref -> [rsp+0x58] class-hnd <System.String>
+; V13 loc9 [V13,T12] ( 11, 8.32) 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]>
;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref
; V16 loc12 [V16,T24] ( 3, 6 ) ushort -> rdx
; V17 loc13 [V17,T79] ( 6, 0 ) int -> r9
; V18 loc14 [V18,T21] ( 5, 6 ) ref -> rax class-hnd <System.ISpanFormattable>
; V19 loc15 [V19 ] ( 9, 3 ) int -> [rsp+0xA8] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T63] ( 3, 2 ) ref -> r12 class-hnd <<unknown class>>
+; V20 loc16 [V20,T62] ( 5, 2 ) ref -> r12 class-hnd <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ushort]>
; V22 OutArgs [V22 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T64] ( 3, 2 ) ref -> rdx
@@ -40,7 +40,7 @@
; V28 tmp6 [V28,T66] ( 3, 2 ) ref -> rdx "guarded devirt return temp"
;* V29 tmp7 [V29 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V30 tmp8 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Globalization.CultureInfo>
-; V31 tmp9 [V31,T68] ( 3, 2 ) int -> rbp "guarded devirt return temp"
+; V31 tmp9 [V31,T68] ( 3, 2 ) int -> registers "guarded devirt return temp"
;* V32 tmp10 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Int32>
; V33 tmp11 [V33,T67] ( 3, 2 ) ref -> rdx "guarded devirt return temp"
;* V34 tmp12 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.String>
@@ -83,12 +83,12 @@
;* V71 tmp49 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
;* V72 tmp50 [V72 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V73 tmp51 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V74 tmp52 [V74,T23] ( 3, 6 ) ref -> rbp class-hnd "Inlining Arg" <ushort[]>
-; V75 tmp53 [V75,T25] ( 3, 6 ) int -> rcx "Inlining Arg"
+; V74 tmp52 [V74,T23] ( 3, 6 ) ref -> r9 class-hnd "Inlining Arg" <ushort[]>
+; V75 tmp53 [V75,T25] ( 3, 6 ) int -> r11 "Inlining Arg"
; V76 tmp54 [V76,T26] ( 3, 6 ) int -> r12 "Inlining Arg"
; V77 tmp55 [V77,T37] ( 2, 4 ) byref -> rax "Inlining Arg"
;* V78 tmp56 [V78 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V79 tmp57 [V79,T62] ( 4, 2 ) ubyte -> registers "Inline return value spill temp"
+; V79 tmp57 [V79,T63] ( 4, 2 ) ubyte -> registers "Inline return value spill temp"
;* V80 tmp58 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V81 tmp59 [V81,T09] ( 7, 10 ) int -> [rsp+0x9C] spill-single-def "Inlining Arg"
;* V82 tmp60 [V82 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -111,7 +111,7 @@
;* V99 tmp77 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V100 tmp78 [V100 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V101 tmp79 [V101,T69] ( 3, 2 ) ubyte -> registers "Inline return value spill temp"
-; V102 tmp80 [V102,T35] ( 4, 4 ) int -> rax "Inline stloc first use temp"
+; V102 tmp80 [V102,T35] ( 4, 4 ) int -> r9 "Inline stloc first use temp"
;* V103 tmp81 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V104 tmp82 [V104 ] ( 3, 3 ) byref -> [rsp+0x90] must-init pinned "Inline stloc first use temp"
;* V105 tmp83 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
@@ -130,12 +130,12 @@
;* V118 tmp96 [V118 ] ( 0, 0 ) long -> zero-ref "dup spill"
;* V119 tmp97 [V119 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]>
;* V120 tmp98 [V120 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V121 tmp99 [V121,T72] ( 3, 1.66) int -> rbp "Inline stloc first use temp"
+; V121 tmp99 [V121,T72] ( 3, 1.66) int -> r11 "Inline stloc first use temp"
;* V122 tmp100 [V122 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]>
;* V123 tmp101 [V123 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V124 tmp102 [V124 ] ( 0, 0 ) long -> zero-ref
;* V125 tmp103 [V125 ] ( 0, 0 ) long -> zero-ref
-; V126 tmp104 [V126,T73] ( 2, 1.11) ref -> r14
+; V126 tmp104 [V126,T73] ( 2, 1.11) ref -> rbp
;* V127 tmp105 [V127 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V128 tmp106 [V128 ] ( 0, 0 ) long -> zero-ref
; V129 tmp107 [V129,T78] ( 2, 0.92) long -> rax
@@ -143,29 +143,29 @@
;* V131 tmp109 [V131 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V132 tmp110 [V132 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V133 tmp111 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V134 tmp112 [V134,T38] ( 2, 4 ) ref -> rcx class-hnd "Inlining Arg" <ushort[]>
-; V135 tmp113 [V135,T41] ( 2, 4 ) int -> r9 "Inlining Arg"
-; V136 tmp114 [V136,T27] ( 3, 6 ) int -> r11 "Inlining Arg"
+; V134 tmp112 [V134,T38] ( 2, 4 ) ref -> rax class-hnd "Inlining Arg" <ushort[]>
+; V135 tmp113 [V135,T41] ( 2, 4 ) int -> r11 "Inlining Arg"
+; V136 tmp114 [V136,T27] ( 3, 6 ) int -> rcx "Inlining Arg"
; V137 tmp115 [V137,T07] ( 8, 11.74) int -> r12 "Inlining Arg"
; V138 tmp116 [V138,T57] ( 3, 2.93) ref -> r8 class-hnd "Inline stloc first use temp" <ushort[]>
; V139 tmp117 [V139,T48] ( 4, 3.87) int -> [rsp+0x8C] spill-single-def "Inline stloc first use temp"
; V140 tmp118 [V140,T32] ( 5, 4.53) byref -> rdx "Inlining Arg"
; V141 tmp119 [V141,T59] ( 4, 2.18) byref -> rcx "Inline stloc first use temp"
; V142 tmp120 [V142,T58] ( 2, 2.71) long -> r8 "Inlining Arg"
-; V143 tmp121 [V143,T55] ( 2, 3 ) byref -> [rsp+0x40] spill-single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp122 [V144,T56] ( 2, 3 ) int -> [rsp+0x88] spill-single-def "field V03._length (fldOffset=0x8)" P-INDEP
-; V145 tmp123 [V145,T61] ( 6, 2 ) byref -> [rsp+0x38] "field V09._reference (fldOffset=0x0)" P-INDEP
-; V146 tmp124 [V146,T49] ( 9, 3 ) int -> [rsp+0x84] "field V09._length (fldOffset=0x8)" P-INDEP
+; V143 tmp121 [V143,T55] ( 2, 3 ) byref -> [rsp+0x48] spill-single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp122 [V144,T56] ( 2, 3 ) int -> r14 "field V03._length (fldOffset=0x8)" P-INDEP
+; V145 tmp123 [V145,T61] ( 6, 2 ) byref -> [rsp+0x40] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V146 tmp124 [V146,T49] ( 9, 3 ) int -> [rsp+0x88] "field V09._length (fldOffset=0x8)" P-INDEP
;* V147 tmp125 [V147 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp126 [V148 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V149 tmp127 [V149 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp128 [V150 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V151 tmp129 [V151 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V152 tmp130 [V152 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V153 tmp131 [V153,T75] ( 2, 1 ) byref -> r14 "field V26._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp132 [V154,T76] ( 2, 1 ) int -> [rsp+0x80] spill-single-def "field V26._length (fldOffset=0x8)" P-INDEP
+; V153 tmp131 [V153,T75] ( 2, 1 ) byref -> [rsp+0x38] spill-single-def "field V26._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp132 [V154,T76] ( 2, 1 ) int -> [rsp+0x84] spill-single-def "field V26._length (fldOffset=0x8)" P-INDEP
; V155 tmp133 [V155,T19] ( 7, 6.58) byref -> [rsp+0x30] spill-single-def "field V35._reference (fldOffset=0x0)" P-INDEP
-; V156 tmp134 [V156,T22] ( 4, 6 ) int -> [rsp+0x7C] spill-single-def "field V35._length (fldOffset=0x8)" P-INDEP
+; V156 tmp134 [V156,T22] ( 4, 6 ) int -> [rsp+0x80] spill-single-def "field V35._length (fldOffset=0x8)" P-INDEP
; V157 tmp135 [V157,T39] ( 2, 4 ) byref -> rax "field V37._reference (fldOffset=0x0)" P-INDEP
; V158 tmp136 [V158,T42] ( 2, 4 ) int -> r10 "field V37._length (fldOffset=0x8)" P-INDEP
;* V159 tmp137 [V159 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
@@ -227,19 +227,19 @@
;* V215 tmp193 [V215 ] ( 0, 0 ) int -> zero-ref "field V122.Item1 (fldOffset=0x0)" P-INDEP
; V216 tmp194 [V216,T74] ( 2, 1.11) int -> rcx "field V122.Item2 (fldOffset=0x4)" P-INDEP
;* V217 tmp195 [V217 ] ( 0, 0 ) byref -> zero-ref "field V133._reference (fldOffset=0x0)" P-INDEP
-; V218 tmp196 [V218,T70] ( 2, 2 ) int -> r11 "field V133._length (fldOffset=0x8)" P-INDEP
+; V218 tmp196 [V218,T70] ( 2, 2 ) int -> rcx "field V133._length (fldOffset=0x8)" P-INDEP
;* V219 tmp197 [V219 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[System.Object]>
-; V220 tmp198 [V220 ] ( 18, 0 ) struct (16) [rsp+0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V221 tmp199 [V221 ] ( 9, 0 ) struct (16) [rsp+0x58] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ushort]>
+; V220 tmp198 [V220 ] ( 18, 0 ) struct (16) [rsp+0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V221 tmp199 [V221 ] ( 9, 0 ) struct (16) [rsp+0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ushort]>
; V222 tmp200 [V222,T43] ( 2, 4 ) long -> rbp "Cast away GC"
; V223 cse0 [V223,T71] ( 4, 1.83) ref -> r9 hoist multi-def "CSE - conservative"
-; V224 cse1 [V224,T36] ( 4, 4 ) int -> rax "CSE - conservative"
+; V224 cse1 [V224,T36] ( 4, 4 ) int -> r9 "CSE - conservative"
; V225 cse2 [V225,T52] ( 3, 3 ) ref -> r12 "CSE - conservative"
-; V226 cse3 [V226,T54] ( 3, 3 ) int -> r14 "CSE - conservative"
-; V227 cse4 [V227,T53] ( 3, 3 ) ref -> r11 "CSE - conservative"
-; V228 cse5 [V228,T06] ( 16, 14 ) int -> r12 "CSE - aggressive"
+; V226 cse3 [V226,T54] ( 3, 3 ) int -> rcx "CSE - conservative"
+; V227 cse4 [V227,T53] ( 3, 3 ) ref -> rcx "CSE - conservative"
+; V228 cse5 [V228,T06] ( 17, 14 ) int -> r12 "CSE - aggressive"
; V229 rat0 [V229,T04] ( 6, 16 ) ref -> rax class-hnd "replacement local" <System.ISpanFormattable>
-; V230 rat1 [V230,T14] ( 6, 8 ) ref -> r12 class-hnd "replacement local" <<unknown class>>
+; V230 rat1 [V230,T13] ( 7, 8 ) ref -> r12 class-hnd "replacement local" <<unknown class>>
;
; Lcl frame size = 184
@@ -253,11 +253,10 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push rbx
sub rsp, 184
- xor eax, eax
- mov qword ptr [rsp+0x58], rax
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x60], ymm4
vmovdqa xmmword ptr [rsp+0x80], xmm4
+ xor eax, eax
mov qword ptr [rsp+0x90], rax
mov rbx, rcx
; gcrRegs +[rbx]
@@ -265,25 +264,24 @@ G_M4730_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rdi]
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=62 bbWeight=1 PerfScore 15.58
+ ;; size=57 bbWeight=1 PerfScore 14.58
G_M4730_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0200 {r9}, byref
; byrRegs +[r9]
mov rbp, bword ptr [r9]
; byrRegs +[rbp]
- mov bword ptr [rsp+0x40], rbp
+ mov bword ptr [rsp+0x48], rbp
; GC ptr vars +{V143}
mov r14d, dword ptr [r9+0x08]
- mov dword ptr [rsp+0x88], r14d
test rsi, rsi
- je G_M4730_IG66
+ je G_M4730_IG64
test rdi, rdi
- je G_M4730_IG67
+ je G_M4730_IG65
mov rdx, 0xD1FFAB1E ; System.Globalization.CultureInfo
cmp qword ptr [rdi], rdx
- jne G_M4730_IG68
+ jne G_M4730_IG66
xor rdx, rdx
; gcrRegs +[rdx]
- ;; size=59 bbWeight=1 PerfScore 13.00
+ ;; size=51 bbWeight=1 PerfScore 12.00
G_M4730_IG03: ; bbWeight=1, gcVars=00000000000000000080000000000000 {V143}, gcrefRegs=00CC {rdx rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref
; byrRegs -[r9]
mov rcx, 0xD1FFAB1E ; <unknown class>
@@ -298,9 +296,9 @@ G_M4730_IG04: ; bbWeight=3, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M4730_IG41
+ jbe G_M4730_IG46
;; size=13 bbWeight=3 PerfScore 9.75
-G_M4730_IG05: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG05: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
mov r8d, r13d
lea rax, bword ptr [rsi+2*r8+0x0C]
; byrRegs +[rax]
@@ -308,7 +306,7 @@ G_M4730_IG05: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
sub r10d, r13d
mov bword ptr [rsp+0x30], rax
; GC ptr vars +{V155}
- mov dword ptr [rsp+0x7C], r10d
+ mov dword ptr [rsp+0x80], r10d
mov r8d, 125
mov edx, 123
mov rcx, rax
@@ -319,28 +317,28 @@ G_M4730_IG05: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
mov dword ptr [rsp+0xA4], eax
test eax, eax
- jl G_M4730_IG55
- cmp eax, dword ptr [rsp+0x7C]
- ja G_M4730_IG63
+ jl G_M4730_IG53
+ cmp eax, dword ptr [rsp+0x80]
+ ja G_M4730_IG61
test eax, eax
- je SHORT G_M4730_IG10
- ;; size=76 bbWeight=2 PerfScore 28.50
-G_M4730_IG06: ; bbWeight=2.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ je G_M4730_IG14
+ ;; size=86 bbWeight=2 PerfScore 28.50
+G_M4730_IG06: ; bbWeight=2.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
mov r10d, dword ptr [rbx+0x18]
mov dword ptr [rsp+0xA0], r10d
lea ecx, [r10+rax]
cmp ecx, dword ptr [r8+0x08]
- ja G_M4730_IG49
- ;; size=30 bbWeight=2.02 PerfScore 19.20
-G_M4730_IG07: ; bbWeight=1.95, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byrefRegs=0020 {rbp}, byref
...
benchmarks.run.windows.x64.checked.mch
+51 (+1.68%) : 5014.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%) : 4482.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
...
benchmarks.run_pgo.windows.x64.checked.mch
-68 (-7.75%) : 80126.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -10,16 +10,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 15, 109.08) ref -> rcx class-hnd single-def <float[][]>
+; V00 arg0 [V00,T13] ( 12, 108.86) ref -> rcx class-hnd single-def <float[][]>
; V01 arg1 [V01,T14] ( 11, 108.86) ref -> rdx class-hnd single-def <int[][]>
; V02 arg2 [V02,T22] ( 3, 3 ) ref -> r8 class-hnd single-def <double[]>
; V03 arg3 [V03,T21] ( 4, 3.50) ref -> r9 class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T23] ( 3, 3.21) int -> [rsp+0x140] single-def tier0-frame
+; V04 arg4 [V04,T23] ( 2, 3.21) int -> [rsp+0x140] single-def tier0-frame
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T05] ( 25,1707.95) int -> r10
-; V08 loc3 [V08,T16] ( 6, 102.79) ref -> rsi class-hnd <float[]>
-; V09 loc4 [V09,T12] ( 13, 257.40) int -> rbx
+; V07 loc2 [V07,T05] ( 20,1708.59) int -> r10
+; V08 loc3 [V08,T16] ( 5, 102.79) ref -> rsi class-hnd <float[]>
+; V09 loc4 [V09,T12] ( 12, 257.40) int -> rbx
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T07] ( 21,1205.60) int -> r11
; V12 loc7 [V12,T28] ( 4, 199.58) float -> mm0
@@ -31,21 +31,21 @@
; V18 tmp3 [V18,T26] ( 6, 898.12) double -> mm1 "Inline return value spill temp"
;* V19 tmp4 [V19,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V20 tmp5 [V20,T00] ( 6,6785.76) int -> registers "Inlining Arg"
-; V21 tmp6 [V21,T01] ( 4,6586.18) ref -> r15 class-hnd "Inlining Arg" <int[]>
+; V21 tmp6 [V21,T01] ( 4,6586.18) ref -> r12 class-hnd "Inlining Arg" <int[]>
;* V22 tmp7 [V22 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V23 tmp8 [V23 ] ( 0, 0 ) ref -> zero-ref "arr expr"
; V24 tmp9 [V24,T02] ( 6,2394.97) ref -> r13 "arr expr"
; V25 tmp10 [V25,T04] ( 6,2394.97) int -> r12 "index expr"
; V26 tmp11 [V26,T03] ( 6,2394.97) ref -> r15 "arr expr"
; V27 tmp12 [V27,T08] ( 6, 598.74) ref -> registers "arr expr"
-; V28 tmp13 [V28,T24] ( 6, 0.59) ref -> r15 "arr expr"
-; V29 tmp14 [V29,T25] ( 6, 0.59) ref -> registers "arr expr"
+; V28 tmp13 [V28,T24] ( 6, 0.59) ref -> registers "arr expr"
+; V29 tmp14 [V29,T25] ( 6, 0.59) ref -> r15 "arr expr"
; V30 cse0 [V30,T09] ( 6, 500.45) ref -> r14 hoist multi-def "CSE - aggressive"
-; V31 cse1 [V31,T10] ( 16, 399.56) int -> r12 multi-def "CSE - aggressive"
-; V32 cse2 [V32,T15] ( 9, 107.83) int -> r8 hoist "CSE - moderate"
+; V31 cse1 [V31,T10] ( 16, 399.56) int -> r13 multi-def "CSE - aggressive"
+; V32 cse2 [V32,T15] ( 7, 106.97) int -> r8 hoist "CSE - moderate"
; V33 cse3 [V33,T17] ( 4, 101.29) int -> rdi hoist multi-def "CSE - moderate"
; V34 cse4 [V34,T18] ( 4, 101.29) long -> rbp hoist multi-def "CSE - moderate"
-; V35 cse5 [V35,T11] ( 5, 296.57) long -> r13 "CSE - aggressive"
+; V35 cse5 [V35,T11] ( 5, 296.57) long -> r15 "CSE - aggressive"
;
; Lcl frame size = 40
@@ -74,128 +74,100 @@ G_M56974_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov ebx, dword ptr [rsp+0xBC]
mov r11d, dword ptr [rsp+0xB4]
;; size=133 bbWeight=1 PerfScore 26.25
-G_M56974_IG02: ; bbWeight=1, gcrefRegs=0346 {rcx rdx rsi r8 r9}, byrefRegs=0000 {}, byref
+G_M56974_IG02: ; bbWeight=1, gcrefRegs=0346 {rcx rdx rsi r8 r9}, byrefRegs=0000 {}, byref, isz
mov r8d, dword ptr [r8+0x08]
; gcrRegs -[r8]
- jmp G_M56974_IG13
- ;; size=9 bbWeight=1 PerfScore 4.00
-G_M56974_IG03: ; bbWeight=1.49, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M56974_IG10
+ ;; size=6 bbWeight=1 PerfScore 4.00
+G_M56974_IG03: ; bbWeight=1.51, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- mov r11d, r10d
- mov rsi, gword ptr [rcx+8*r11+0x10]
- ; gcrRegs +[rsi]
- xor ebx, ebx
- mov eax, dword ptr [rsp+0x140]
- test eax, eax
- mov dword ptr [rsp+0x140], eax
- jg SHORT G_M56974_IG08
- ;; size=28 bbWeight=1.49 PerfScore 8.57
-G_M56974_IG04: ; bbWeight=1.49, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rsi]
- inc r10d
- cmp r8d, r10d
- jle G_M56974_IG36
- jmp SHORT G_M56974_IG03
- ;; size=14 bbWeight=1.49 PerfScore 5.22
-G_M56974_IG05: ; bbWeight=0.85, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
- test rcx, rcx
- je SHORT G_M56974_IG07
- test r10d, r10d
- jl SHORT G_M56974_IG07
- cmp dword ptr [rcx+0x08], r8d
- jl SHORT G_M56974_IG07
- jmp SHORT G_M56974_IG04
- ;; size=18 bbWeight=0.85 PerfScore 7.25
-G_M56974_IG06: ; bbWeight=0.02, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
cmp r10d, dword ptr [rcx+0x08]
- jae G_M56974_IG35
+ jae G_M56974_IG32
mov r11d, r10d
mov rsi, gword ptr [rcx+8*r11+0x10]
; gcrRegs +[rsi]
xor ebx, ebx
- mov eax, dword ptr [rsp+0x140]
- test eax, eax
- mov dword ptr [rsp+0x140], eax
- jg SHORT G_M56974_IG08
- ;; size=38 bbWeight=0.02 PerfScore 0.15
-G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rsp+0x140], 0
+ jg SHORT G_M56974_IG05
+ ;; size=30 bbWeight=1.51 PerfScore 14.31
+G_M56974_IG04: ; bbWeight=1.51, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
inc r10d
cmp r8d, r10d
- jle G_M56974_IG36
- jmp SHORT G_M56974_IG06
- ;; size=14 bbWeight=0.02 PerfScore 0.05
-G_M56974_IG08: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
+ jle G_M56974_IG33
+ jmp SHORT G_M56974_IG03
+ ;; size=14 bbWeight=1.51 PerfScore 5.27
+G_M56974_IG05: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
cmp r10d, dword ptr [rdx+0x08]
- jae G_M56974_IG35
+ jae G_M56974_IG32
mov r11d, r10d
mov r11, gword ptr [rdx+8*r11+0x10]
; gcrRegs +[r11]
test ebx, ebx
mov eax, dword ptr [rsp+0x140]
- jl SHORT G_M56974_IG10
+ jl SHORT G_M56974_IG07
;; size=29 bbWeight=1.51 PerfScore 12.80
-G_M56974_IG09: ; bbWeight=48.19, gcrefRegs=0A46 {rcx rdx rsi r9 r11}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG06: ; bbWeight=48.19, gcrefRegs=0A46 {rcx rdx rsi r9 r11}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r11+0x08], ebx
- jg SHORT G_M56974_IG12
+ jg SHORT G_M56974_IG09
;; size=6 bbWeight=48.19 PerfScore 192.77
-G_M56974_IG10: ; bbWeight=1.71, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG07: ; bbWeight=1.71, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r11]
inc ebx
mov dword ptr [rsp+0x140], eax
cmp ebx, eax
- jl SHORT G_M56974_IG08
+ jl SHORT G_M56974_IG05
;; size=13 bbWeight=1.71 PerfScore 4.26
-G_M56974_IG11: ; bbWeight=0.85, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG08: ; bbWeight=0.85, gcrefRegs=0206 {rcx rdx r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- jmp SHORT G_M56974_IG05
+ jmp SHORT G_M56974_IG04
;; size=2 bbWeight=0.85 PerfScore 1.71
-G_M56974_IG12: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref
+G_M56974_IG09: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref
; gcrRegs +[rsi]
lea r11d, [r10+0x01]
;; size=4 bbWeight=1.51 PerfScore 0.75
-G_M56974_IG13: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG10: ; bbWeight=1.51, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref, isz
cmp r8d, r11d
- jle SHORT G_M56974_IG10
+ jle SHORT G_M56974_IG07
;; size=5 bbWeight=1.51 PerfScore 1.88
-G_M56974_IG14: ; bbWeight=1.48, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref
+G_M56974_IG11: ; bbWeight=1.48, gcrefRegs=0246 {rcx rdx rsi r9}, byrefRegs=0000 {}, byref
test rdx, rdx
- je G_M56974_IG25
+ je G_M56974_IG22
test rcx, rcx
- je G_M56974_IG25
+ je G_M56974_IG22
test r11d, r11d
- jl G_M56974_IG25
+ jl G_M56974_IG22
cmp dword ptr [rdx+0x08], r8d
- jl G_M56974_IG25
+ jl G_M56974_IG22
cmp dword ptr [rcx+0x08], r8d
- jl G_M56974_IG25
+ jl G_M56974_IG22
mov edi, dword ptr [rsi+0x08]
mov ebp, ebx
mov r14, gword ptr [r9+0x08]
; gcrRegs +[r14]
;; size=56 bbWeight=1.48 PerfScore 23.69
-G_M56974_IG15: ; bbWeight=98.79, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=98.79, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
cmp ebx, edi
- jae G_M56974_IG35
+ jae G_M56974_IG32
vmovss xmm0, dword ptr [rsi+4*rbp+0x10]
cmp dword ptr [r14+0x08], r10d
- jle SHORT G_M56974_IG17
+ jle SHORT G_M56974_IG14
;; size=20 bbWeight=98.79 PerfScore 913.83
-G_M56974_IG16: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
cmp r10d, r11d
- jne SHORT G_M56974_IG18
+ jne SHORT G_M56974_IG15
;; size=5 bbWeight=395.17 PerfScore 493.96
-G_M56974_IG17: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG14: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
vxorps xmm1, xmm1, xmm1
mov dword ptr [rsp+0x140], eax
- jmp SHORT G_M56974_IG19
+ jmp SHORT G_M56974_IG16
;; size=13 bbWeight=395.17 PerfScore 1317.24
-G_M56974_IG18: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref
+G_M56974_IG15: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref
mov r15, r14
; gcrRegs +[r15]
cmp r10d, dword ptr [r15+0x08]
- jae G_M56974_IG35
+ jae G_M56974_IG32
mov r13d, r10d
mov r13, gword ptr [r15+8*r13+0x10]
; gcrRegs +[r13]
@@ -203,94 +175,95 @@ G_M56974_IG18: ; bbWeight=395.17, gcrefRegs=4246 {rcx rdx rsi r9 r14}, by
sub r12d, r10d
dec r12d
cmp r12d, dword ptr [r13+0x08]
- jae G_M56974_IG35
+ jae G_M56974_IG32
mov r15d, r12d
; gcrRegs -[r15]
vcvtss2sd xmm1, xmm1, dword ptr [r13+4*r15+0x10]
mov dword ptr [rsp+0x140], eax
;; size=57 bbWeight=395.17 PerfScore 7705.83
-G_M56974_IG19: ; bbWeight=98.79, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG16: ; bbWeight=98.79, gcrefRegs=4246 {rcx rdx rsi r9 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
vcvtss2sd xmm0, xmm0, xmm0
vaddsd xmm0, xmm0, xmm1
- mov r13d, r11d
- mov r15, gword ptr [rdx+8*r13+0x10]
- ; gcrRegs +[r15]
- lea r12d, [rbx+0x01]
- mov eax, r12d
+ mov r15d, r11d
+ mov r12, gword ptr [rdx+8*r15+0x10]
+ ; gcrRegs +[r12]
+ lea r13d, [rbx+0x01]
+ mov eax, r13d
test eax, eax
- jl SHORT G_M56974_IG24
+ jl SHORT G_M56974_IG21
;; size=27 bbWeight=98.79 PerfScore 1111.42
-G_M56974_IG20: ; bbWeight=3161.37, gcrefRegs=C246 {rcx rdx rsi r9 r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [r15+0x08], eax
...
+355 (+31.84%) : 50666.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.39
; Final local variable assignments
;
-; V00 arg0 [V00,T11] ( 17, 7.90) ref -> rcx class-hnd single-def <int[][]>
-; V01 arg1 [V01,T08] ( 17,104.28) ref -> rdx class-hnd single-def <int[][]>
-; V02 arg2 [V02,T12] ( 12, 4.64) ref -> r8 class-hnd single-def <int[][]>
+; V00 arg0 [V00,T11] ( 23, 8.96) ref -> rcx class-hnd single-def <int[][]>
+; V01 arg1 [V01,T08] ( 24,104.99) ref -> rdx class-hnd single-def <int[][]>
+; V02 arg2 [V02,T12] ( 18, 5.35) 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.11) int -> r9
+; V05 loc2 [V05,T06] ( 59,205.86) 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.13) byref -> rbx "dup spill"
+; V11 tmp4 [V11,T18] ( 6, 2.13) 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.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.67) ref -> r15 "arr expr"
; V22 tmp15 [V22,T02] ( 6,592.05) 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.13) ref -> rdi "arr expr"
+; V25 tmp18 [V25,T23] ( 5, 1.42) ref -> rbp "arr expr"
+; V26 tmp19 [V26,T20] ( 6, 2.13) ref -> r11 "arr expr"
+; V27 tmp20 [V27,T24] ( 5, 1.42) ref -> rdi "arr expr"
+; V28 tmp21 [V28,T21] ( 6, 2.13) 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.64) int -> rsi hoist multi-def "CSE - aggressive"
+; V40 cse2 [V40,T15] ( 13, 3.00) 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.73
+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.18
+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.66
-G_M19657_IG05: ; bbWeight=1.31, gcrefRegs=0106 {rcx rdx r8}, byrefRegs=0000 {}, byref, isz
+G_M19657_IG09: ; bbWeight=1.31, 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.31 PerfScore 32.36
-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.68
-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.65
-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.08
-G_M19657_IG09: ; bbWeight=0.99, gcrefRegs=0186 {rcx rdx rdi r8}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=0.01 PerfScore 0.08
+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]
...
+355 (+31.84%) : 50660.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
...
benchmarks.run_tiered.windows.x64.checked.mch
-126 (-13.95%) : 33472.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
@@ -9,19 +9,19 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 8, 14.12) ref -> rcx class-hnd single-def <double[][]>
-; V01 arg1 [V01,T06] ( 11, 30.32) ref -> rdx class-hnd single-def <double[]>
-; V02 arg2 [V02,T14] ( 12, 12.06) ref -> rsi class-hnd single-def <double[][][]>
-; V03 arg3 [V03,T15] ( 12, 12.06) ref -> rdi class-hnd single-def <double[][]>
-; V04 arg4 [V04,T12] ( 10, 18 ) int -> rbx single-def
-; V05 loc0 [V05,T10] ( 12, 20.08) ref -> r15 class-hnd <double[][]>
-; V06 loc1 [V06,T07] ( 13, 32.24) ref -> r14 class-hnd <double[]>
+; V00 arg0 [V00,T12] ( 8, 14.12) ref -> rcx class-hnd single-def <double[][]>
+; V01 arg1 [V01,T06] ( 8, 30.20) ref -> rdx class-hnd single-def <double[]>
+; V02 arg2 [V02,T14] ( 9, 12.04) ref -> rsi class-hnd single-def <double[][][]>
+; V03 arg3 [V03,T15] ( 9, 12.04) ref -> rdi class-hnd single-def <double[][]>
+; V04 arg4 [V04,T13] ( 6, 15 ) int -> rbx single-def
+; V05 loc0 [V05,T10] ( 11, 20.08) ref -> r15 class-hnd <double[][]>
+; V06 loc1 [V06,T07] ( 10, 32.16) ref -> r14 class-hnd <double[]>
; V07 loc2 [V07,T20] ( 2, 2 ) long -> r13
; V08 loc3 [V08,T02] ( 15, 94.32) int -> rax
-; V09 loc4 [V09,T08] ( 13, 29.04) int -> r8
-; V10 loc5 [V10,T00] ( 43,128.20) int -> rbp
+; V09 loc4 [V09,T08] ( 7, 32 ) int -> r8
+; V10 loc5 [V10,T00] ( 34,127.72) int -> rbp
; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T22] ( 6, 64.00) double -> mm0 "Strict ordering of exceptions for Array store"
+; V12 tmp1 [V12,T22] ( 4, 64 ) double -> mm0 "Strict ordering of exceptions for Array store"
; V13 tmp2 [V13,T01] ( 6, 96 ) ref -> r10 class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V14 tmp3 [V14,T23] ( 4, 64 ) double -> mm0 "Strict ordering of exceptions for Array store"
;* V15 tmp4 [V15 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -34,8 +34,8 @@
; V22 cse2 [V22,T09] ( 6, 27.92) ref -> r9 multi-def "CSE - aggressive"
; V23 cse3 [V23,T19] ( 4, 8.08) int -> r11 hoist multi-def "CSE - aggressive"
; V24 cse4 [V24,T16] ( 6, 12.12) long -> r10 hoist multi-def "CSE - aggressive"
-; V25 cse5 [V25,T04] ( 3, 47.52) long -> r12 "CSE - aggressive"
-; V26 cse6 [V26,T05] ( 3, 47.04) long -> rax "CSE - aggressive"
+; V25 cse5 [V25,T04] ( 3, 47.52) long -> rax "CSE - aggressive"
+; V26 cse6 [V26,T05] ( 3, 47.52) long -> r12 "CSE - aggressive"
; V27 cse7 [V27,T17] ( 3, 11.88) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 40
@@ -70,144 +70,90 @@ G_M9806_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
mov ebp, dword ptr [rsp+0xB4]
;; size=147 bbWeight=0.01 PerfScore 0.29
G_M9806_IG02: ; bbWeight=0.01, gcrefRegs=C0C6 {rcx rdx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
- jmp G_M9806_IG28
+ jmp G_M9806_IG22
;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M9806_IG03: ; bbWeight=1, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- test rsi, rsi
- je G_M9806_IG14
- test rdi, rdi
- je G_M9806_IG14
- mov eax, r8d
- or eax, ebx
- jl G_M9806_IG14
- cmp dword ptr [rsi+0x08], ebx
- jl G_M9806_IG14
- cmp dword ptr [rdi+0x08], ebx
- jl G_M9806_IG14
- jmp SHORT G_M9806_IG05
- ;; size=49 bbWeight=1 PerfScore 14.00
-G_M9806_IG04: ; bbWeight=1.98, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- mov eax, r8d
- mov r15, gword ptr [rsi+8*rax+0x10]
- ; gcrRegs +[r15]
- mov eax, r8d
- mov r14, gword ptr [rdi+8*rax+0x10]
- ; gcrRegs +[r14]
- xor ebp, ebp
- jmp G_M9806_IG27
- ;; size=23 bbWeight=1.98 PerfScore 13.36
-G_M9806_IG05: ; bbWeight=7.92, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r15]
- xor ebp, ebp
- test rdx, rdx
- je SHORT G_M9806_IG09
- ;; size=7 bbWeight=7.92 PerfScore 11.88
-G_M9806_IG06: ; bbWeight=3.96, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- test r14, r14
- je SHORT G_M9806_IG09
- cmp dword ptr [rdx+0x08], 101
- jl SHORT G_M9806_IG09
- cmp dword ptr [r14+0x08], 101
- jl SHORT G_M9806_IG09
- ;; size=18 bbWeight=3.96 PerfScore 36.63
-G_M9806_IG07: ; bbWeight=15.68, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov eax, ebp
- vmovsd xmm0, qword ptr [rdx+8*rax+0x10]
- vmovsd qword ptr [r14+8*rax+0x10], xmm0
- inc ebp
- cmp ebp, 101
- jl SHORT G_M9806_IG07
- ;; size=22 bbWeight=15.68 PerfScore 121.53
-G_M9806_IG08: ; bbWeight=7.92, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
- jmp SHORT G_M9806_IG11
- ;; size=2 bbWeight=7.92 PerfScore 15.84
-G_M9806_IG09: ; bbWeight=0.04, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref
- ; gcrRegs +[r14]
- mov eax, dword ptr [rdx+0x08]
- ;; size=3 bbWeight=0.04 PerfScore 0.08
-G_M9806_IG10: ; bbWeight=0.16, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- cmp ebp, dword ptr [rdx+0x08]
- jae G_M9806_IG36
- mov eax, ebp
- vmovsd xmm0, qword ptr [rdx+8*rax+0x10]
- cmp ebp, dword ptr [r14+0x08]
- jae G_M9806_IG36
- mov eax, ebp
- vmovsd qword ptr [r14+8*rax+0x10], xmm0
- inc ebp
- cmp ebp, 101
- jl SHORT G_M9806_IG10
- ;; size=43 bbWeight=0.16 PerfScore 2.53
-G_M9806_IG11: ; bbWeight=7.92, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14]
- inc r8d
- cmp r8d, ebx
- jl SHORT G_M9806_IG04
- ;; size=8 bbWeight=7.92 PerfScore 11.88
-G_M9806_IG12: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx rdx]
- jmp SHORT G_M9806_IG17
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M9806_IG13: ; bbWeight=0.02, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rcx rdx]
+G_M9806_IG03: ; bbWeight=2, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14-r15]
cmp r8d, dword ptr [rsi+0x08]
- jae G_M9806_IG36
+ jae G_M9806_IG29
mov eax, r8d
mov r15, gword ptr [rsi+8*rax+0x10]
; gcrRegs +[r15]
cmp r8d, dword ptr [rdi+0x08]
- jae G_M9806_IG36
+ jae G_M9806_IG29
mov eax, r8d
mov r14, gword ptr [rdi+8*rax+0x10]
; gcrRegs +[r14]
xor ebp, ebp
- jmp G_M9806_IG27
- ;; size=43 bbWeight=0.02 PerfScore 0.30
-G_M9806_IG14: ; bbWeight=0.08, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref
+ jmp G_M9806_IG21
+ ;; size=43 bbWeight=2 PerfScore 29.50
+G_M9806_IG04: ; bbWeight=8, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
xor ebp, ebp
+ test rdx, rdx
+ je SHORT G_M9806_IG08
+ ;; size=7 bbWeight=8 PerfScore 12.00
+G_M9806_IG05: ; bbWeight=4, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ test r14, r14
+ je SHORT G_M9806_IG08
+ cmp dword ptr [rdx+0x08], 101
+ jl SHORT G_M9806_IG08
+ cmp dword ptr [r14+0x08], 101
+ jl SHORT G_M9806_IG08
+ ;; size=18 bbWeight=4 PerfScore 37.00
+G_M9806_IG06: ; bbWeight=15.84, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ mov eax, ebp
+ vmovsd xmm0, qword ptr [rdx+8*rax+0x10]
+ vmovsd qword ptr [r14+8*rax+0x10], xmm0
+ inc ebp
+ cmp ebp, 101
+ jl SHORT G_M9806_IG06
+ ;; size=22 bbWeight=15.84 PerfScore 122.76
+G_M9806_IG07: ; bbWeight=8, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r14]
+ jmp SHORT G_M9806_IG10
+ ;; size=2 bbWeight=8 PerfScore 16.00
+G_M9806_IG08: ; bbWeight=0.04, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r14]
mov eax, dword ptr [rdx+0x08]
- ;; size=5 bbWeight=0.08 PerfScore 0.18
-G_M9806_IG15: ; bbWeight=0.16, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=3 bbWeight=0.04 PerfScore 0.08
+G_M9806_IG09: ; bbWeight=0.16, gcrefRegs=40C6 {rcx rdx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
cmp ebp, dword ptr [rdx+0x08]
- jae G_M9806_IG36
+ jae G_M9806_IG29
mov eax, ebp
vmovsd xmm0, qword ptr [rdx+8*rax+0x10]
cmp ebp, dword ptr [r14+0x08]
- jae G_M9806_IG36
+ jae G_M9806_IG29
mov eax, ebp
vmovsd qword ptr [r14+8*rax+0x10], xmm0
inc ebp
cmp ebp, 101
- jl SHORT G_M9806_IG15
+ jl SHORT G_M9806_IG09
;; size=43 bbWeight=0.16 PerfScore 2.56
-G_M9806_IG16: ; bbWeight=0.08, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M9806_IG10: ; bbWeight=8, gcrefRegs=00C6 {rcx rdx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
inc r8d
cmp r8d, ebx
- jl SHORT G_M9806_IG13
- ;; size=8 bbWeight=0.08 PerfScore 0.12
-G_M9806_IG17: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+ jl G_M9806_IG03
+ ;; size=12 bbWeight=8 PerfScore 12.00
+G_M9806_IG11: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx]
call <unknown method>
; gcr arg pop 0
movsxd r13, eax
xor ebp, ebp
test ebx, ebx
- jle G_M9806_IG25
+ jle G_M9806_IG19
test rsi, rsi
- je SHORT G_M9806_IG22
+ je SHORT G_M9806_IG16
test rdi, rdi
- je SHORT G_M9806_IG22
+ je SHORT G_M9806_IG16
cmp dword ptr [rsi+0x08], ebx
- jl SHORT G_M9806_IG22
+ jl SHORT G_M9806_IG16
cmp dword ptr [rdi+0x08], ebx
- jl SHORT G_M9806_IG22
+ jl SHORT G_M9806_IG16
;; size=38 bbWeight=1 PerfScore 13.25
-G_M9806_IG18: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M9806_IG12: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, ebp
mov r15, gword ptr [rsi+8*rcx+0x10]
; gcrRegs +[r15]
@@ -232,9 +178,9 @@ G_M9806_IG18: ; bbWeight=3.96, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {
; gcrRegs -[rax rcx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M9806_IG20
+ je SHORT G_M9806_IG14
;; size=67 bbWeight=3.96 PerfScore 50.49
-G_M9806_IG19: ; bbWeight=1.98, gcrefRegs=D0C0 {rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M9806_IG13: ; bbWeight=1.98, gcrefRegs=D0C0 {rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, r15
; gcrRegs +[rcx]
mov r9, r14
@@ -246,24 +192,24 @@ G_M9806_IG19: ; bbWeight=1.98, gcrefRegs=D0C0 {rsi rdi r12 r14 r15}, byre
; gcrRegs -[rcx r8-r9 r12 r14-r15]
; gcr arg pop 0
;; size=20 bbWeight=1.98 PerfScore 7.92
...
-52 (-6.62%) : 46672.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
@@ -9,16 +9,16 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 15, 12.06) ref -> rbx class-hnd single-def <float[][]>
+; V00 arg0 [V00,T08] ( 12, 12.04) ref -> rbx class-hnd single-def <float[][]>
; V01 arg1 [V01,T09] ( 9, 12.04) ref -> rsi class-hnd single-def <int[][]>
; V02 arg2 [V02,T19] ( 3, 3 ) ref -> r14 class-hnd single-def <double[]>
; V03 arg3 [V03,T18] ( 4, 6 ) ref -> rbp class-hnd single-def <JetStream.SampleVarianceUpperTriangularMatrix>
-; V04 arg4 [V04,T15] ( 3, 10 ) int -> rdi single-def
+; V04 arg4 [V04,T15] ( 2, 10 ) int -> rdi single-def
;* V05 loc0 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc1 [V06 ] ( 0, 0 ) int -> zero-ref
-; V07 loc2 [V07,T03] ( 17, 37.52) int -> r13
-; V08 loc3 [V08,T13] ( 6, 10 ) ref -> [rsp+0xE0] class-hnd tier0-frame <float[]>
-; V09 loc4 [V09,T00] ( 13, 56 ) int -> r15
+; V07 loc2 [V07,T03] ( 12, 38.50) int -> r13
+; V08 loc3 [V08,T13] ( 5, 10 ) ref -> [rsp+0xE0] class-hnd tier0-frame <float[]>
+; V09 loc4 [V09,T00] ( 12, 56 ) int -> r15
;* V10 loc5 [V10 ] ( 0, 0 ) ubyte -> zero-ref
; V11 loc6 [V11,T05] ( 20, 26.58) int -> r12
;* V12 loc7 [V12 ] ( 0, 0 ) float -> zero-ref
@@ -37,7 +37,7 @@
; V25 tmp10 [V25,T12] ( 6, 12 ) ref -> rax "arr expr"
; V26 cse0 [V26,T20] ( 3, 0.10) ref -> rax "CSE - conservative"
; V27 cse1 [V27,T17] ( 3, 9.90) ref -> rax "CSE - moderate"
-; V28 cse2 [V28,T07] ( 9, 17 ) int -> [rsp+0x24] spill-single-def "CSE - aggressive"
+; V28 cse2 [V28,T07] ( 7, 16 ) int -> [rsp+0x24] spill-single-def "CSE - aggressive"
; V29 cse3 [V29,T06] ( 16, 20 ) int -> r9 multi-def "CSE - aggressive"
; TEMP_01 double -> [rsp+0x28]
;
@@ -69,20 +69,13 @@ G_M56974_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov r15d, dword ptr [rsp+0xDC]
mov r12d, dword ptr [rsp+0xD4]
;; size=143 bbWeight=0.01 PerfScore 0.28
-G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
- jmp G_M56974_IG15
- ;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M56974_IG03: ; bbWeight=1, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG02: ; bbWeight=0.01, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M56974_IG11
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M56974_IG03: ; bbWeight=2, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- test rbx, rbx
- je SHORT G_M56974_IG08
- test r13d, r13d
- jl SHORT G_M56974_IG08
- cmp dword ptr [rbx+0x08], r10d
- jl SHORT G_M56974_IG08
- jmp SHORT G_M56974_IG05
- ;; size=18 bbWeight=1 PerfScore 8.50
-G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ cmp r13d, dword ptr [rbx+0x08]
+ jae G_M56974_IG26
mov eax, r13d
mov rax, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[rax]
@@ -91,38 +84,15 @@ G_M56974_IG04: ; bbWeight=1.98, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRe
xor r15d, r15d
test edi, edi
mov rax, r12
- jg SHORT G_M56974_IG10
- ;; size=21 bbWeight=1.98 PerfScore 8.42
-G_M56974_IG05: ; bbWeight=7.92, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ jg SHORT G_M56974_IG06
+ ;; size=31 bbWeight=2 PerfScore 16.50
+G_M56974_IG04: ; bbWeight=8, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax r12]
inc r13d
cmp r10d, r13d
- jg SHORT G_M56974_IG04
- ;; size=8 bbWeight=7.92 PerfScore 11.88
-G_M56974_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx rbp rsi r14]
- jmp SHORT G_M56974_IG09
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M56974_IG07: ; bbWeight=0.02, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx rbp rsi r14]
- cmp r13d, dword ptr [rbx+0x08]
- jae G_M56974_IG30
- mov eax, r13d
- mov r12, gword ptr [rbx+8*rax+0x10]
- ; gcrRegs +[r12]
- xor r15d, r15d
- test edi, edi
- mov rax, r12
- ; gcrRegs +[rax]
- jg SHORT G_M56974_IG10
- ;; size=28 bbWeight=0.02 PerfScore 0.16
-G_M56974_IG08: ; bbWeight=0.08, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r12]
- inc r13d
- cmp r10d, r13d
- jg SHORT G_M56974_IG07
- ;; size=8 bbWeight=0.08 PerfScore 0.12
-G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jg SHORT G_M56974_IG03
+ ;; size=8 bbWeight=8 PerfScore 12.00
+G_M56974_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rbp rsi r14]
vmovaps xmm6, xmmword ptr [rsp+0x30]
add rsp, 248
@@ -136,53 +106,53 @@ G_M56974_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
ret
;; size=26 bbWeight=1 PerfScore 9.25
-G_M56974_IG10: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG06: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax rbx rbp rsi r14]
cmp r13d, dword ptr [rsi+0x08]
- jae G_M56974_IG30
+ jae G_M56974_IG26
mov ecx, r13d
mov rcx, gword ptr [rsi+8*rcx+0x10]
; gcrRegs +[rcx]
test r15d, r15d
- jl SHORT G_M56974_IG12
+ jl SHORT G_M56974_IG08
;; size=23 bbWeight=2 PerfScore 15.00
-G_M56974_IG11: ; bbWeight=16, gcrefRegs=406B {rax rcx rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG07: ; bbWeight=16, gcrefRegs=406B {rax rcx rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rcx+0x08], r15d
- jg SHORT G_M56974_IG14
+ jg SHORT G_M56974_IG10
;; size=6 bbWeight=16 PerfScore 64.00
-G_M56974_IG12: ; bbWeight=8, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG08: ; bbWeight=8, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
inc r15d
cmp r15d, edi
- jl SHORT G_M56974_IG10
+ jl SHORT G_M56974_IG06
;; size=8 bbWeight=8 PerfScore 12.00
-G_M56974_IG13: ; bbWeight=1, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M56974_IG09: ; bbWeight=1, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- jmp G_M56974_IG03
- ;; size=5 bbWeight=1 PerfScore 2.00
-G_M56974_IG14: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M56974_IG04
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M56974_IG10: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs +[rax]
lea r12d, [r13+0x01]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M56974_IG15: ; bbWeight=1, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG11: ; bbWeight=1, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
mov r10d, dword ptr [r14+0x08]
mov dword ptr [rsp+0x24], r10d
cmp r10d, r12d
- jle SHORT G_M56974_IG12
+ jle SHORT G_M56974_IG08
test rsi, rsi
- je G_M56974_IG24
+ je G_M56974_IG20
test rbx, rbx
- je G_M56974_IG23
+ je G_M56974_IG19
test r12d, r12d
- jl G_M56974_IG22
+ jl G_M56974_IG18
cmp dword ptr [rsi+0x08], r10d
- jl G_M56974_IG21
+ jl G_M56974_IG17
cmp dword ptr [rbx+0x08], r10d
- jl G_M56974_IG24
+ jl G_M56974_IG20
;; size=61 bbWeight=1 PerfScore 16.00
-G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG12: ; bbWeight=3.96, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
cmp r15d, dword ptr [rax+0x08]
- jae G_M56974_IG30
+ jae G_M56974_IG26
mov ecx, r15d
mov gword ptr [rsp+0xE0], rax
; GC ptr vars +{V08}
@@ -205,61 +175,61 @@ G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=4069 {rax rbx rbp rsi r14}, byr
lea r9d, [r15+0x01]
mov r11d, r9d
test r11d, r11d
- jl SHORT G_M56974_IG19
+ jl SHORT G_M56974_IG15
;; size=79 bbWeight=3.96 PerfScore 116.82
-G_M56974_IG17: ; bbWeight=15.84, gcrefRegs=4469 {rax rbx rbp rsi r10 r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG13: ; bbWeight=15.84, gcrefRegs=4469 {rax rbx rbp rsi r10 r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r10+0x08], r11d
- jle SHORT G_M56974_IG19
+ jle SHORT G_M56974_IG15
;; size=6 bbWeight=15.84 PerfScore 63.36
-G_M56974_IG18: ; bbWeight=1.98, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG14: ; bbWeight=1.98, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r10]
mov ecx, r12d
mov r8, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[r8]
cmp r9d, dword ptr [r8+0x08]
- jae G_M56974_IG30
+ jae G_M56974_IG26
mov ecx, r9d
vcvtss2sd xmm0, xmm0, dword ptr [r8+4*rcx+0x10]
vucomisd xmm0, xmm6
- jbe SHORT G_M56974_IG20
+ jbe SHORT G_M56974_IG16
;; size=34 bbWeight=1.98 PerfScore 32.67
-G_M56974_IG19: ; bbWeight=1.98, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M56974_IG15: ; bbWeight=1.98, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
mov ecx, r12d
mov rdx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rdx]
cmp r9d, dword ptr [rdx+0x08]
- jae G_M56974_IG30
+ jae G_M56974_IG26
mov ecx, r9d
vcvtsd2ss xmm0, xmm0, xmm6
vmovss dword ptr [rdx+4*rcx+0x10], xmm0
cmp r9d, dword ptr [rax+0x08]
- jae G_M56974_IG30
+ jae G_M56974_IG26
mov ecx, r9d
mov dword ptr [rax+4*rcx+0x10], r13d
;; size=49 bbWeight=1.98 PerfScore 35.14
-G_M56974_IG20: ; bbWeight=3.96, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
+G_M56974_IG16: ; bbWeight=3.96, gcrefRegs=4068 {rbx rbp rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdx]
inc r12d
cmp dword ptr [rsp+0x24], r12d
mov rax, gword ptr [rsp+0xE0]
; gcrRegs +[rax]
- jg G_M56974_IG16
+ jg G_M56974_IG12
mov r10d, dword ptr [rsp+0x24]
- jmp G_M56974_IG12
+ jmp G_M56974_IG08
;; size=32 bbWeight=3.96 PerfScore 28.71
-G_M56974_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M56974_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V08}
- jmp SHORT G_M56974_IG24
+ jmp SHORT G_M56974_IG20
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M56974_IG22: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M56974_IG24
+G_M56974_IG18: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M56974_IG20
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M56974_IG23: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M56974_IG19: ; bbWeight=0.50, gcrefRegs=4069 {rax rbx rbp rsi r14}, byrefRegs=0000 {}, byref, isz
;; size=0 bbWeight=0.50 PerfScore 0.00
...
+68 (+2.15%) : 24586.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; 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
...
coreclr_tests.run.windows.x64.checked.mch
+41 (+1.20%) : 278668.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.00) 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 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 25 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T25] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T56] ( 3, 4 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T01] ( 61, 62 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T08] ( 31, 18 ) ushort -> [rsp+0x104]
-; V07 loc3 [V07,T37] ( 13, 6.98) int -> [rsp+0x100]
+; V05 loc1 [V05,T01] ( 66, 62 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T08] ( 34, 18 ) ushort -> [rsp+0x104]
+; V07 loc3 [V07,T37] ( 16, 6.98) int -> [rsp+0x100]
; V08 loc4 [V08,T35] ( 5, 8 ) ubyte -> [rsp+0xFC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T17] ( 7, 12 ) 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,T58] ( 3, 4 ) 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 -> r8 "CSE - conservative"
; V188 cse3 [V188,T71] ( 5, 3.00) int -> registers multi-def "CSE - conservative"
; V189 cse4 [V189,T00] ( 23,215.98) ref -> registers multi-def "CSE - aggressive"
-; V190 cse5 [V190,T04] ( 18, 26 ) int -> r12 "CSE - aggressive"
+; V190 cse5 [V190,T04] ( 19, 26 ) int -> r12 "CSE - aggressive"
; V191 cse6 [V191,T32] ( 3, 9 ) int -> rcx "CSE - moderate"
; V192 rat0 [V192,T38] ( 3, 6.23) byref -> rcx "TLS field access"
; V193 rat1 [V193,T26] ( 3, 9.35) long -> rcx "TLS access"
@@ -488,7 +488,7 @@ G_M36935_IG20: ; bbWeight=3, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov gword ptr [rsp+0x78], r10
; GC ptr vars +{V13}
test r15, r15
- jne G_M36935_IG99
+ jne G_M36935_IG102
;; size=55 bbWeight=3 PerfScore 25.50
G_M36935_IG21: ; bbWeight=3, gcVars=00000000000000400010000000800000 {V12 V13 V130}, gcrefRegs=94C0 {rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; gcrRegs -[rax]
@@ -575,7 +575,7 @@ G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r9, gword ptr [rsp+0x70]
; gcrRegs +[r9]
cmp qword ptr [r9], rcx
- jne G_M36935_IG104
+ jne G_M36935_IG107
;; size=48 bbWeight=2 PerfScore 18.50
G_M36935_IG30: ; bbWeight=2.00, gcVars=00000000000000400410000001800000 {V12 V13 V18 V130 V168}, gcrefRegs=82C0 {rsi rdi r9 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; byrRegs -[rax]
@@ -598,11 +598,11 @@ G_M36935_IG31: ; bbWeight=1.56, gcVars=00000000000000400410000000800000 {
mov rcx, qword ptr GS:[0x0058]
mov rcx, qword ptr [rcx]
cmp dword ptr [rcx+0xD8], 2
- jl G_M36935_IG102
+ jl G_M36935_IG105
mov rcx, qword ptr [rcx+0xE0]
mov rcx, qword ptr [rcx+0x10]
test rcx, rcx
- je G_M36935_IG102
+ je G_M36935_IG105
mov rcx, bword ptr [rcx]
; byrRegs +[rcx]
add rcx, 16
@@ -646,20 +646,19 @@ G_M36935_IG36: ; bbWeight=2, gcrefRegs=88C0 {rsi rdi r11 r15}, byrefRegs=
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
@@ -667,7 +666,7 @@ G_M36935_IG36: ; bbWeight=2, gcrefRegs=88C0 {rsi rdi r11 r15}, byrefRegs=
; GC ptr vars -{V168}
call [<unknown method>]
; gcrRegs -[r8 r11]
- ; byrRegs -[rax]
+ ; byrRegs -[rax r10]
; gcr arg pop 0
;; size=150 bbWeight=2 PerfScore 40.50
G_M36935_IG37: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
@@ -678,7 +677,7 @@ G_M36935_IG37: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov ecx, dword ptr [rsp+0xF0]
add dword ptr [rbx+0x08], ecx
test r12d, r12d
- jne G_M36935_IG103
+ jne G_M36935_IG106
jmp G_M36935_IG04
;; size=37 bbWeight=2 PerfScore 19.00
G_M36935_IG38: ; bbWeight=0.00, gcVars=00000000000000400410000000800000 {V12 V13 V130 V168}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
@@ -819,23 +818,23 @@ G_M36935_IG52: ; bbWeight=1, gcVars=00000000000000400010000000800000 {V12
G_M36935_IG53: ; bbWeight=0.50, gcrefRegs=86C0 {rsi rdi r9 r10 r15}, byrefRegs=0028 {rbx rbp}, byref
mov rcx, 0xD1FFAB1E ; System.String
cmp qword ptr [r9], rcx
- jne G_M36935_IG105
+ jne G_M36935_IG108
xor r9, r9
;; size=22 bbWeight=0.50 PerfScore 2.25
G_M36935_IG54: ; 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_IG106
+ jne G_M36935_IG109
;; size=12 bbWeight=1 PerfScore 1.50
G_M36935_IG55: ; 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_IG109
+ je G_M36935_IG112
mov rcx, 0xD1FFAB1E ; System.String
cmp qword ptr [r10], rcx
- jne G_M36935_IG110
+ jne G_M36935_IG113
;; size=28 bbWeight=1 PerfScore 5.50
G_M36935_IG56: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; GC ptr vars -{V13}
@@ -846,7 +845,7 @@ G_M36935_IG57: ; bbWeight=1, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=
; gcrRegs -[r10]
test rdx, rdx
mov dword ptr [rsp+0xFC], r12d
- je G_M36935_IG111
+ je G_M36935_IG114
;; size=17 bbWeight=1 PerfScore 2.25
G_M36935_IG58: ; bbWeight=0.50, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
mov r12, rdx
@@ -856,7 +855,7 @@ G_M36935_IG59: ; bbWeight=1, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=
; gcrRegs -[rdx]
mov r8d, dword ptr [rsp+0x100]
cmp dword ptr [r12+0x08], r8d
- jl G_M36935_IG112
+ jl G_M36935_IG115
;; size=19 bbWeight=1 PerfScore 5.00
G_M36935_IG60: ; bbWeight=1, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=0028 {rbx rbp}, byref
mov eax, dword ptr [rbx+0x08]
@@ -1088,9 +1087,7 @@ G_M36935_IG84: ; bbWeight=0, gcVars=00000000000000000010000000000000 {V13
jbe G_M36935_IG69
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_IG85: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea ecx, [rax-0x30]
cmp ecx, 9
@@ -1107,10 +1104,8 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG69
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_IG87: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 32
mov r8d, dword ptr [rsp+0xF8]
@@ -1118,7 +1113,7 @@ G_M36935_IG87: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=13 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
@@ -1126,10 +1121,8 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG69
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+0xFC], 1
@@ -1138,52 +1131,72 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG69
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
add eax, -48
cmp eax, 10
jae G_M36935_IG68
inc r13d
cmp r12d, r13d
- ja SHORT G_M36935_IG92
- jmp G_M36935_IG69
- ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG69
+ test r13d, r13d
+ jl SHORT G_M36935_IG94
+ jmp SHORT G_M36935_IG92
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG91: ; 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_IG69
- ;; size=19 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG92: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp r13d, r12d
- jae G_M36935_IG76
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
- lea r10d, [rcx-0x30]
- cmp r10d, 9
- ja SHORT G_M36935_IG94
+ mov r10d, ecx
+ lea ecx, [r10-0x30]
...
+45 (+1.22%) : 336475.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%) : 336479.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.30%) : 23928.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, 23.50) byref -> rbx this single-def
; V01 arg1 [V01,T16] ( 10, 5.61) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 19, 12 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 20, 12 ) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T10] ( 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,T02] ( 63, 25 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T19] ( 31, 6 ) ushort -> [rsp+0x104]
-; V07 loc3 [V07,T58] ( 13, 2.50) int -> [rsp+0x100]
+; V05 loc1 [V05,T02] ( 68, 25 ) int -> r13 ld-addr-op
+; V06 loc2 [V06,T19] ( 34, 6 ) ushort -> [rsp+0x104]
+; V07 loc3 [V07,T58] ( 16, 2.50) int -> [rsp+0x100]
; V08 loc4 [V08,T59] ( 5, 2.50) ubyte -> [rsp+0xFC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T33] ( 7, 4 ) int -> [rsp+0xF8]
@@ -256,7 +256,7 @@
; V244 cse3 [V244,T76] ( 5, 1.50) int -> registers multi-def "CSE - conservative"
; V245 cse4 [V245,T77] ( 3, 1.50) int -> r8 "CSE - conservative"
; V246 cse5 [V246,T00] ( 29, 92.99) ref -> registers multi-def "CSE - aggressive"
-; V247 cse6 [V247,T08] ( 20, 11 ) int -> r12 "CSE - aggressive"
+; V247 cse6 [V247,T08] ( 21, 11 ) int -> r12 "CSE - aggressive"
; V248 rat0 [V248,T17] ( 5, 7.50) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V249 rat1 [V249,T34] ( 6, 4 ) ref -> registers class-hnd "replacement local" <<unknown class>>
;
@@ -554,7 +554,7 @@ G_M36935_IG23: ; bbWeight=1, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov gword ptr [rsp+0x88], r10
; GC ptr vars +{V13}
test r15, r15
- jne G_M36935_IG108
+ jne G_M36935_IG111
;; size=58 bbWeight=1 PerfScore 8.50
G_M36935_IG24: ; bbWeight=1, gcVars=00000000000042000000000100000000 {V12 V13 V162}, gcrefRegs=94C0 {rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; gcrRegs -[rax]
@@ -620,7 +620,7 @@ G_M36935_IG29: ; bbWeight=0.50, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0
mov r9, gword ptr [rsp+0x80]
; gcrRegs +[r9]
cmp qword ptr [r9], rcx
- jne G_M36935_IG111
+ jne G_M36935_IG114
add r9, 8
; gcrRegs -[r9]
; byrRegs +[r9]
@@ -790,7 +790,7 @@ G_M36935_IG43: ; bbWeight=0.50, 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_IG112
+ jne G_M36935_IG115
jmp G_M36935_IG04
;; size=36 bbWeight=0.50 PerfScore 4.75
G_M36935_IG44: ; bbWeight=0.50, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, byref
@@ -805,7 +805,7 @@ G_M36935_IG45: ; bbWeight=0.50, gcrefRegs=86C0 {rsi rdi r9 r10 r15}, byre
mov gword ptr [rsp+0x78], r11
; GC ptr vars +{V20}
test r11, r11
- jne G_M36935_IG113
+ jne G_M36935_IG116
test r10, r10
je G_M36935_IG68
mov rdx, 0xD1FFAB1E ; System.String
@@ -1030,7 +1030,7 @@ G_M36935_IG67: ; bbWeight=0.25, gcVars=00000000000042000000000100000000 {
; GC ptr vars +{V12 V13 V78 V162}
mov rdx, 0xD1FFAB1E ; System.String
cmp qword ptr [r9], rdx
- jne G_M36935_IG116
+ jne G_M36935_IG119
xor r9, r9
jmp G_M36935_IG45
;; size=27 bbWeight=0.25 PerfScore 1.62
@@ -1294,9 +1294,7 @@ G_M36935_IG93: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V16
jbe G_M36935_IG81
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_IG94: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea ecx, [rax-0x30]
cmp ecx, 9
@@ -1313,10 +1311,8 @@ G_M36935_IG95: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG81
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_IG96: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 32
mov r8d, dword ptr [rsp+0xF8]
@@ -1324,7 +1320,7 @@ G_M36935_IG96: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=13 bbWeight=0 PerfScore 0.00
G_M36935_IG97: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 44
- jne G_M36935_IG104
+ jne G_M36935_IG107
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG98: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
@@ -1332,10 +1328,8 @@ G_M36935_IG98: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG81
mov eax, r13d
movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
- cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG98
- mov eax, ecx
cmp eax, 45
jne SHORT G_M36935_IG99
mov dword ptr [rsp+0xFC], 1
@@ -1344,52 +1338,72 @@ G_M36935_IG98: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG81
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_IG99: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
add eax, -48
cmp eax, 10
jae G_M36935_IG80
inc r13d
cmp r12d, r13d
- ja SHORT G_M36935_IG101
- jmp G_M36935_IG81
- ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG81
+ test r13d, r13d
+ jl SHORT G_M36935_IG103
+ jmp SHORT G_M36935_IG101
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG100: ; 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_IG81
- ;; size=19 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG101: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp r13d, r12d
- jae G_M36935_IG87
mov ecx, r13d
movzx rcx, word ptr [rsi+2*rcx+0x0C]
- lea r10d, [rcx-0x30]
- cmp r10d, 9
- ja SHORT G_M36935_IG103
+ mov r10d, ecx
+ lea ecx, [r10-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG106
cmp eax, 0xD1FFAB1E
jl SHORT G_M36935_IG100
- cmp ecx, 32
- jne SHORT G_M36935_IG106
- ;; size=39 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M36935_IG104
+ ;; size=29 bbWeight=0 PerfScore 0.00
G_M36935_IG102: ; bbWeight=0, 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_IG81
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
;; size=20 bbWeight=0 PerfScore 0.00
G_M36935_IG103: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- je SHORT G_M36935_IG102
+ cmp r13d, r12d
+ jae G_M36935_IG87
+ mov r10d, r13d
+ movzx r10, word ptr [rsi+2*r10+0x0C]
+ lea ecx, [r10-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG106
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG102
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M36935_IG104: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp r10d, 32
+ jne SHORT G_M36935_IG109
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M36935_IG105: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG81
+ mov r10d, r13d
+ movzx r10, word ptr [rsi+2*r10+0x0C]
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp r10d, 32
+ je SHORT G_M36935_IG105
mov dword ptr [rsp+0x100], eax
- mov eax, ecx
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG104: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ mov eax, r10d
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M36935_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125
mov dword ptr [rsp+0xF8], r8d
je G_M36935_IG21
@@ -1397,7 +1411,7 @@ G_M36935_IG104: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
jne G_M36935_IG82
mov ecx, r13d
;; size=29 bbWeight=0 PerfScore 0.00
-G_M36935_IG105: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG108: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars -{V162}
inc r13d
cmp r12d, r13d
@@ -1405,18 +1419,18 @@ G_M36935_IG105: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
mov eax, r13d
movzx rax, word ptr [rsi+2*rax+0x0C]
cmp eax, 125
- je SHORT G_M36935_IG107
+ je SHORT G_M36935_IG110
cmp eax, 123
- jne SHORT G_M36935_IG105
+ jne SHORT G_M36935_IG108
jmp G_M36935_IG82
;; size=35 bbWeight=0 PerfScore 0.00
-G_M36935_IG106: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V162}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG109: ; bbWeight=0, gcVars=00000000000002000000000000000000 {V162}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars +{V162}
mov dword ptr [rsp+0x100], eax
- mov eax, ecx
- jmp SHORT G_M36935_IG104
- ;; size=11 bbWeight=0 PerfScore 0.00
-G_M36935_IG107: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
+ mov eax, r10d
+ jmp SHORT G_M36935_IG107
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; GC ptr vars -{V162}
inc ecx
mov eax, r13d
@@ -1450,7 +1464,7 @@ G_M36935_IG107: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; GC ptr vars +{V162}
jmp G_M36935_IG21
;; size=98 bbWeight=0 PerfScore 0.00
...
+45 (+1.35%) : 273512.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -11,12 +11,12 @@
;
; V00 this [V00,T04] ( 36, 16 ) byref -> rbx this single-def
; V01 arg1 [V01,T09] ( 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,T11] ( 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 -> rax "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,T10] ( 18, 10 ) int -> r12 "CSE - aggressive"
+; V210 cse3 [V210,T10] ( 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"
@@ -502,18 +502,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
@@ -566,7 +566,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]
@@ -651,7 +651,7 @@ G_M36935_IG32: ; bbWeight=0.50, gcVars=00000000000010000500000000000000 {
; GC ptr vars -{V12 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.50, gcVars=00000000000000000000040000000000 {V150}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; gcrRegs -[r10]
@@ -683,7 +683,7 @@ G_M36935_IG36: ; bbWeight=0.50, gcVars=00000000000010000500000000000000 {
; GC ptr vars -{V12 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_IG37: ; bbWeight=0.50, gcVars=00000000000000000000040080000000 {V64 V150}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
@@ -829,11 +829,11 @@ G_M36935_IG47: ; 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_IG48: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
@@ -1022,9 +1022,7 @@ G_M36935_IG67: ; bbWeight=0, gcVars=00000000000000000400000000000000 {V14
jbe G_M36935_IG54
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
@@ -1041,10 +1039,8 @@ G_M36935_IG69: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG54
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]
@@ -1052,7 +1048,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
@@ -1060,10 +1056,8 @@ G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG54
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
@@ -1072,54 +1066,74 @@ G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG54
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_IG53
inc r13d
cmp r12d, r13d
- ja SHORT G_M36935_IG75
- jmp G_M36935_IG54
- ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG54
+ 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_IG54
+ ;; 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_IG54
- ;; 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_IG60
- 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_IG54
- 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
@@ -1127,7 +1141,7 @@ G_M36935_IG78: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jne G_M36935_IG55
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
@@ -1135,18 +1149,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
...
+32 (+2.54%) : 263589.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.crossgen2.windows.x64.checked.mch
-15 (-21.13%) : 98514.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint
@@ -8,9 +8,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=16 bbWeight=1 PerfScore 3.75
-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=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 71, prolog size 6, PerfScore 66.50, instruction count 23, allocated bytes for code 71 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 56, prolog size 6, PerfScore 56.02, instruction count 19, allocated bytes for code 56 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.windows.x64.checked.mch
-14 (-17.72%) : 102175.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
+32 (+0.76%) : 79208.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -11,12 +11,12 @@
;
; V00 this [V00,T06] ( 47, 36.36) byref -> rbx this single-def
; V01 arg1 [V01,T53] ( 12, 3.64) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T09] ( 18, 24.53) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T09] ( 19, 24.53) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T29] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T62] ( 3, 3.86) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T04] ( 62, 62.84) int -> r13 ld-addr-op
-; V06 loc2 [V06,T14] ( 31, 16.92) ushort -> [rsp+0x154]
-; V07 loc3 [V07,T46] ( 12, 7.20) int -> [rsp+0x150]
+; V05 loc1 [V05,T04] ( 67, 62.84) int -> r13 ld-addr-op
+; V06 loc2 [V06,T14] ( 34, 16.92) ushort -> [rsp+0x154]
+; V07 loc3 [V07,T46] ( 15, 7.20) int -> [rsp+0x150]
; V08 loc4 [V08,T50] ( 5, 6.81) ubyte -> [rsp+0x14C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T23] ( 7, 11.28) int -> [rsp+0x148]
@@ -288,7 +288,7 @@
; V276 cse3 [V276,T55] ( 5, 4.81) int -> registers multi-def "CSE - conservative"
; V277 cse4 [V277,T65] ( 3, 3.52) int -> r11 "CSE - conservative"
; V278 cse5 [V278,T78] ( 3, 2.37) int -> rdi "CSE - conservative"
-; V279 cse6 [V279,T10] ( 18, 25.35) int -> r12 "CSE - moderate"
+; V279 cse6 [V279,T10] ( 19, 25.35) int -> r12 "CSE - moderate"
; V280 cse7 [V280,T26] ( 12, 11.21) int -> [rsp+0xBC] spill-single-def "CSE - moderate"
; V281 rat0 [V281,T12] ( 6, 22.54) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V282 rat1 [V282,T20] ( 6, 13.16) ref -> registers class-hnd "replacement local" <System.IFormattable>
@@ -590,7 +590,7 @@ G_M36935_IG17: ; bbWeight=2.82, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0
mov gword ptr [rsp+0xA8], r8
; GC ptr vars +{V13}
test r15, r15
- jne G_M36935_IG116
+ jne G_M36935_IG119
;; size=88 bbWeight=2.82 PerfScore 48.64
G_M36935_IG18: ; bbWeight=2.82, gcVars=00000000000008400000000000200000 {V12 V13 V179}, gcrefRegs=91C0 {rsi rdi r8 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; gcrRegs -[rax]
@@ -946,7 +946,7 @@ G_M36935_IG46: ; bbWeight=1.17, 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_IG119
+ jne G_M36935_IG122
jmp G_M36935_IG05
;; size=36 bbWeight=1.17 PerfScore 11.15
G_M36935_IG47: ; bbWeight=0.03, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
@@ -1090,7 +1090,7 @@ G_M36935_IG60: ; bbWeight=1.64, gcVars=00000000000000000000000000200000 {
; GC ptr vars -{V12 V179}
mov rcx, 0xD1FFAB1E ; System.String
cmp qword ptr [r8], rcx
- jne G_M36935_IG123
+ jne G_M36935_IG126
;; size=19 bbWeight=1.64 PerfScore 6.98
G_M36935_IG61: ; bbWeight=1.62, gcVars=00000000000000000000000000000000 {}, gcrefRegs=81C0 {rsi rdi r8 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; GC ptr vars -{V13}
@@ -1113,7 +1113,7 @@ G_M36935_IG64: ; bbWeight=1.60, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRe
mov dword ptr [rsp+0xBC], edx
mov r10d, dword ptr [rsp+0x150]
cmp edx, r10d
- jl G_M36935_IG124
+ jl G_M36935_IG127
mov r11d, dword ptr [rbx+0x08]
mov ecx, r11d
cmp edx, 1
@@ -1125,7 +1125,7 @@ G_M36935_IG65: ; bbWeight=1.60, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRe
mov ecx, dword ptr [rbx+0x18]
sub ecx, edx
cmp ecx, eax
- jl G_M36935_IG120
+ jl G_M36935_IG123
;; size=23 bbWeight=1.60 PerfScore 7.60
G_M36935_IG66: ; bbWeight=1.60, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea rcx, bword ptr [rbx+0x10]
@@ -1269,13 +1269,13 @@ G_M36935_IG76: ; bbWeight=0.00, gcVars=00000000000000500000000000000000 {
; GC ptr vars -{V187} +{V20 V70 V179}
mov r11d, dword ptr [rsp+0xF4]
test r11d, r11d
- jne G_M36935_IG121
+ jne G_M36935_IG124
;; size=17 bbWeight=0.00 PerfScore 0.00
G_M36935_IG77: ; bbWeight=0.00, gcVars=00000000000000100000000000000000 {V20}, gcrefRegs=82C1 {rax rsi rdi r9 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; GC ptr vars -{V70 V179}
mov rcx, 0xD1FFAB1E ; NuGet.Versioning.NuGetVersion
cmp qword ptr [r9], rcx
- jne G_M36935_IG122
+ jne G_M36935_IG125
;; size=19 bbWeight=0.00 PerfScore 0.01
G_M36935_IG78: ; bbWeight=0.00, gcrefRegs=82C1 {rax rsi rdi r9 r15}, byrefRegs=0028 {rbx rbp}, byref
mov rcx, r9
@@ -1488,9 +1488,7 @@ G_M36935_IG101: ; bbWeight=0, gcVars=00000000000000400000000000000000 {V1
jbe G_M36935_IG88
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_IG102: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea ecx, [rax-0x30]
cmp ecx, 9
@@ -1507,10 +1505,8 @@ G_M36935_IG103: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
jbe G_M36935_IG88
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_IG104: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 32
mov edx, dword ptr [rsp+0x148]
@@ -1518,7 +1514,7 @@ G_M36935_IG104: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG105: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 44
- jne G_M36935_IG112
+ jne G_M36935_IG115
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
@@ -1526,10 +1522,8 @@ G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
jbe G_M36935_IG88
mov eax, r13d
movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
- cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG106
- mov eax, ecx
cmp eax, 45
jne SHORT G_M36935_IG107
mov dword ptr [rsp+0x14C], 1
@@ -1538,56 +1532,72 @@ G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
jbe G_M36935_IG88
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_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea r10d, [rax-0x30]
cmp r10d, 10
jae G_M36935_IG87
inc r13d
cmp r12d, r13d
- ja SHORT G_M36935_IG109
- jmp G_M36935_IG88
- ;; size=27 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG88
+ test r13d, r13d
+ jl SHORT G_M36935_IG111
+ jmp SHORT G_M36935_IG109
+ ;; size=33 bbWeight=0 PerfScore 0.00
G_M36935_IG108: ; 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_IG88
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M36935_IG109: ; 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_IG114
+ cmp r10d, 0xD1FFAB1E
+ jl SHORT G_M36935_IG108
+ jmp SHORT G_M36935_IG112
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M36935_IG110: ; 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_IG88
;; size=37 bbWeight=0 PerfScore 0.00
-G_M36935_IG109: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG111: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
jae G_M36935_IG94
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_IG111
+ lea ecx, [rax-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG114
cmp r10d, 0xD1FFAB1E
- jl SHORT G_M36935_IG108
- cmp ecx, 32
- mov eax, ecx
- jne SHORT G_M36935_IG114
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG110
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M36935_IG112: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp eax, 32
+ jne SHORT G_M36935_IG117
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M36935_IG113: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d
cmp r12d, r13d
jbe G_M36935_IG88
- 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_IG111: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- mov eax, ecx
- je SHORT G_M36935_IG110
+G_M36935_IG114: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp eax, 32
+ je SHORT G_M36935_IG113
mov dword ptr [rsp+0x150], r10d
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M36935_IG112: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M36935_IG115: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125
mov dword ptr [rsp+0x148], edx
je G_M36935_IG17
@@ -1595,7 +1605,7 @@ G_M36935_IG112: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
jne G_M36935_IG89
mov ecx, r13d
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG113: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG116: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars -{V70 V179}
inc r13d
cmp r12d, r13d
@@ -1603,17 +1613,17 @@ G_M36935_IG113: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
mov eax, r13d
movzx rax, word ptr [rsi+2*rax+0x0C]
cmp eax, 125
- je SHORT G_M36935_IG115
+ je SHORT G_M36935_IG118
cmp eax, 123
- jne SHORT G_M36935_IG113
+ jne SHORT G_M36935_IG116
jmp G_M36935_IG89
;; size=35 bbWeight=0 PerfScore 0.00
...
+32 (+0.80%) : 306362.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -11,12 +11,12 @@
;
; V00 this [V00,T03] ( 41, 37.12) byref -> rbx this single-def
; V01 arg1 [V01,T41] ( 11, 3.66) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T07] ( 18, 20.73) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T07] ( 19, 20.73) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T26] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T54] ( 3, 3.42) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 52.10) int -> r13 ld-addr-op
-; V06 loc2 [V06,T15] ( 31, 14.22) ushort -> [rsp+0x154]
-; V07 loc3 [V07,T38] ( 12, 6.67) int -> [rsp+0x150]
+; V05 loc1 [V05,T02] ( 67, 52.10) int -> r13 ld-addr-op
+; V06 loc2 [V06,T15] ( 34, 14.22) ushort -> [rsp+0x154]
+; V07 loc3 [V07,T38] ( 15, 6.67) int -> [rsp+0x150]
; V08 loc4 [V08,T44] ( 5, 5.07) ubyte -> [rsp+0x14C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T30] ( 7, 9.48) int -> [rsp+0x148]
@@ -264,7 +264,7 @@
; V252 cse2 [V252,T37] ( 3, 7.11) int -> rdx "CSE - conservative"
; V253 cse3 [V253,T40] ( 3, 5.95) int -> r8 "CSE - conservative"
; V254 cse4 [V254,T39] ( 5, 5.95) int -> registers multi-def "CSE - conservative"
-; V255 cse5 [V255,T09] ( 18, 21.10) int -> r12 "CSE - aggressive"
+; V255 cse5 [V255,T09] ( 19, 21.10) int -> r12 "CSE - aggressive"
; V256 cse6 [V256,T18] ( 12, 13.88) int -> [rsp+0xB8] spill-single-def "CSE - moderate"
; V257 rat0 [V257,T11] ( 6, 18.88) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V258 rat1 [V258,T12] ( 6, 16.17) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -550,7 +550,7 @@ G_M36935_IG16: ; bbWeight=2.37, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0
mov gword ptr [rsp+0xA8], r8
; GC ptr vars +{V13}
test r15, r15
- jne G_M36935_IG111
+ jne G_M36935_IG114
;; size=96 bbWeight=2.37 PerfScore 43.26
G_M36935_IG17: ; bbWeight=2.37, gcVars=00000000000000004000000000080000 {V13 V164}, gcrefRegs=91C1 {rax rsi rdi r8 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; GC ptr vars -{V12}
@@ -843,7 +843,7 @@ G_M36935_IG42: ; bbWeight=0.34, gcVars=00000000000000006000000000080000 {
add r8, qword ptr [rcx+8*rdx]
sar r8, 32
cmp r8d, dword ptr [rsp+0xE8]
- jg G_M36935_IG114
+ jg G_M36935_IG117
mov dword ptr [rsp+0x140], r8d
mov rdx, bword ptr [rsp+0x38]
; byrRegs +[rdx]
@@ -991,7 +991,7 @@ G_M36935_IG52: ; bbWeight=0.34, 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_IG116
+ jne G_M36935_IG119
jmp G_M36935_IG06
;; size=48 bbWeight=0.34 PerfScore 3.56
G_M36935_IG53: ; bbWeight=0.00, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0029 {rax rbx rbp}, byref
@@ -1242,15 +1242,15 @@ G_M36935_IG71: ; bbWeight=0, gcVars=00000000000000004008000000000000 {V20
; GC ptr vars -{V12 V13} +{V20}
test rax, rax
jne G_M36935_IG31
- mov rcx, bword ptr [rsp+0x58]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0xD0], rcx
+ mov r8, bword ptr [rsp+0x58]
+ ; byrRegs +[r8]
+ mov bword ptr [rsp+0xD0], r8
mov dword ptr [rsp+0xD8], edx
lea rcx, [rsp+0xD0]
- ; byrRegs -[rcx]
; GC ptr vars -{V164}
call <unknown method>
; gcrRegs -[r11]
+ ; byrRegs -[r8]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
@@ -1506,9 +1506,7 @@ G_M36935_IG96: ; bbWeight=0, gcVars=00000000000000004000000000000000 {V16
jbe G_M36935_IG84
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_IG97: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea ecx, [rax-0x30]
cmp ecx, 9
@@ -1525,10 +1523,8 @@ G_M36935_IG98: ; 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+0x148], edx
- mov eax, ecx
- ;; size=31 bbWeight=0 PerfScore 0.00
+ ;; size=27 bbWeight=0 PerfScore 0.00
G_M36935_IG99: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 32
mov edx, dword ptr [rsp+0x148]
@@ -1536,7 +1532,7 @@ G_M36935_IG99: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG100: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 44
- jne G_M36935_IG107
+ jne G_M36935_IG110
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG101: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
@@ -1544,10 +1540,8 @@ G_M36935_IG101: ; 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_IG101
- mov eax, ecx
cmp eax, 45
jne SHORT G_M36935_IG102
mov dword ptr [rsp+0x14C], 1
@@ -1556,56 +1550,72 @@ G_M36935_IG101: ; 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_IG102: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea r10d, [rax-0x30]
cmp r10d, 10
jae G_M36935_IG83
inc r13d
cmp r12d, r13d
- ja SHORT G_M36935_IG104
- jmp G_M36935_IG84
- ;; size=27 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG84
+ test r13d, r13d
+ jl SHORT G_M36935_IG106
+ jmp SHORT G_M36935_IG104
+ ;; size=33 bbWeight=0 PerfScore 0.00
G_M36935_IG103: ; 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_IG84
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M36935_IG104: ; 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_IG109
+ cmp r10d, 0xD1FFAB1E
+ jl SHORT G_M36935_IG103
+ jmp SHORT G_M36935_IG107
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M36935_IG105: ; 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_IG84
;; size=37 bbWeight=0 PerfScore 0.00
-G_M36935_IG104: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
jae G_M36935_IG90
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_IG106
+ lea ecx, [rax-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG109
cmp r10d, 0xD1FFAB1E
- jl SHORT G_M36935_IG103
- cmp ecx, 32
- mov eax, ecx
- jne SHORT G_M36935_IG109
- ;; size=43 bbWeight=0 PerfScore 0.00
-G_M36935_IG105: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG105
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M36935_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp eax, 32
+ jne SHORT G_M36935_IG112
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M36935_IG108: ; 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]
+ mov eax, r13d
+ movzx rax, word ptr [rsi+2*rax+0x0C]
;; size=20 bbWeight=0 PerfScore 0.00
-G_M36935_IG106: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- mov eax, ecx
- je SHORT G_M36935_IG105
+G_M36935_IG109: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp eax, 32
+ je SHORT G_M36935_IG108
mov dword ptr [rsp+0x150], r10d
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M36935_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ ;; size=13 bbWeight=0 PerfScore 0.00
+G_M36935_IG110: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125
mov dword ptr [rsp+0x148], edx
je G_M36935_IG16
@@ -1613,7 +1623,7 @@ G_M36935_IG107: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
jne G_M36935_IG85
mov ecx, r13d
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG108: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG111: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars -{V62 V164}
inc r13d
cmp r12d, r13d
@@ -1621,17 +1631,17 @@ G_M36935_IG108: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
mov eax, r13d
movzx rax, word ptr [rsi+2*rax+0x0C]
cmp eax, 125
- je SHORT G_M36935_IG110
+ je SHORT G_M36935_IG113
cmp eax, 123
- jne SHORT G_M36935_IG108
+ jne SHORT G_M36935_IG111
jmp G_M36935_IG85
;; size=35 bbWeight=0 PerfScore 0.00
-G_M36935_IG109: ; bbWeight=0, gcVars=00000000000000004000000000000000 {V164}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG112: ; bbWeight=0, gcVars=00000000000000004000000000000000 {V164}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
; GC ptr vars +{V62 V164}
mov dword ptr [rsp+0x150], r10d
- jmp SHORT G_M36935_IG107
+ jmp SHORT G_M36935_IG110
;; size=10 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
+G_M36935_IG113: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; GC ptr vars -{V62 V164}
inc ecx
mov eax, r13d
@@ -1663,13 +1673,13 @@ G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
; GC ptr vars +{V164}
...
+22 (+0.81%) : 354547.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
@@ -5,18 +5,18 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 23
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 23
; 26 inlinees with PGO data; 32 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T07] ( 29, 5.19) 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,T03] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T23] ( 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,T16] ( 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,T16] ( 15, 3 ) int -> [rsp+0xB0]
; V08 loc4 [V08,T22] ( 5, 2 ) ubyte -> [rsp+0xAC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T14] ( 7, 4 ) int -> [rsp+0xA8]
@@ -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,T02] ( 18, 10 ) int -> r12 "CSE - aggressive"
+; V134 cse0 [V134,T02] ( 19, 10 ) int -> r12 "CSE - aggressive"
; V135 cse1 [V135,T19] ( 3, 3 ) int -> rcx "CSE - moderate"
; V136 rat0 [V136,T04] ( 6, 8 ) ref -> rcx class-hnd "replacement local" <<unknown class>>
; V137 rat1 [V137,T05] ( 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_IG55
+ je G_M4730_IG50
test rdi, rdi
- je G_M4730_IG56
+ je G_M4730_IG51
mov rdx, 0xD1FFAB1E ; System.Globalization.CultureInfo
cmp qword ptr [rdi], rdx
- jne G_M4730_IG57
+ jne G_M4730_IG52
xor rdx, rdx
; gcrRegs +[rdx]
;; size=46 bbWeight=1 PerfScore 11.00
@@ -198,9 +198,9 @@ 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_IG35
+ jbe G_M4730_IG31
;; size=13 bbWeight=2 PerfScore 6.50
-G_M4730_IG05: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+G_M4730_IG05: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov ecx, r13d
lea rax, bword ptr [rbx+2*rcx+0x0C]
; byrRegs +[rax]
@@ -251,9 +251,9 @@ G_M4730_IG05: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
mov dword ptr [rsp+0x98], eax
test eax, eax
- jl G_M4730_IG44
+ jl G_M4730_IG39
cmp eax, dword ptr [rsp+0x80]
- ja G_M4730_IG52
+ ja G_M4730_IG47
mov ecx, eax
not ecx
shr ecx, 31
@@ -261,29 +261,82 @@ G_M4730_IG05: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
mov eax, dword ptr [rsp+0x98]
test eax, eax
- jne G_M4730_IG15
- ;; size=215 bbWeight=1 PerfScore 48.25
-G_M4730_IG06: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, gcvars, byref
+ je SHORT G_M4730_IG12
+ ;; size=211 bbWeight=1 PerfScore 48.25
+G_M4730_IG06: ; bbWeight=0.37, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov r8, gword ptr [rsi+0x08]
+ ; gcrRegs +[r8]
+ mov r10d, dword ptr [rsi+0x18]
+ mov dword ptr [rsp+0x94], r10d
+ lea ecx, [r10+rax]
+ cmp ecx, dword ptr [r8+0x08]
+ ja SHORT G_M4730_IG11
+ ;; size=26 bbWeight=0.37 PerfScore 3.47
+G_M4730_IG07: ; bbWeight=0.32, gcrefRegs=81C8 {rbx rsi rdi r8 r15}, byrefRegs=0020 {rbp}, byref
+ movsxd rcx, r10d
+ lea rcx, bword ptr [r8+2*rcx+0x10]
+ ; byrRegs +[rcx]
+ cmp eax, 2
+ jg G_M4730_IG33
+ ;; size=17 bbWeight=0.32 PerfScore 0.80
+G_M4730_IG08: ; bbWeight=0.19, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0022 {rcx rbp}, byref, isz
+ ; gcrRegs -[r8]
+ mov r9, bword ptr [rsp+0x28]
+ ; byrRegs +[r9]
+ movzx r8, word ptr [r9]
+ mov word ptr [rcx], r8w
+ cmp eax, 2
+ je SHORT G_M4730_IG10
+ ;; size=18 bbWeight=0.19 PerfScore 0.98
+G_M4730_IG09: ; bbWeight=0.32, 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
+ jmp SHORT G_M4730_IG12
+ ;; size=17 bbWeight=0.32 PerfScore 1.69
+G_M4730_IG10: ; bbWeight=0.08, gcVars=00000000000000000000000000200000 {V103}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0222 {rcx rbp r9}, gcvars, byref, isz
+ ; byrRegs +[rcx r9]
+ ; GC ptr vars +{V103}
+ movzx r8, word ptr [r9+0x02]
+ mov word ptr [rcx+0x02], r8w
+ jmp SHORT G_M4730_IG09
+ ;; size=12 bbWeight=0.08 PerfScore 0.40
+G_M4730_IG11: ; bbWeight=0.04, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ ; byrRegs -[rcx r9]
+ 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.04 PerfScore 0.24
+G_M4730_IG12: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
add r13d, eax
cmp r13d, r12d
- jae G_M4730_IG54
+ jae G_M4730_IG49
mov ecx, r13d
movzx rcx, word ptr [rbx+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG48
+ jbe G_M4730_IG43
mov eax, r13d
movzx rax, word ptr [rbx+2*rax+0x0C]
mov dword ptr [rsp+0xB4], eax
cmp ecx, eax
- je G_M4730_IG14
+ je G_M4730_IG53
cmp ecx, 123
- jne G_M4730_IG46
+ jne G_M4730_IG41
xor edx, edx
mov dword ptr [rsp+0xB0], edx
;; size=73 bbWeight=1 PerfScore 12.25
-G_M4730_IG07: ; 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]
@@ -293,7 +346,7 @@ G_M4730_IG07: ; 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_IG54
+ jae G_M4730_IG49
cmp word ptr [rbx+2*rcx+0x0C], 123
sete cl
movzx rcx, cl
@@ -309,18 +362,18 @@ G_M4730_IG07: ; 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_IG47
+ jae G_M4730_IG42
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG48
+ jbe G_M4730_IG43
mov eax, r13d
movzx rax, word ptr [rbx+2*rax+0x0C]
cmp eax, 125
- jne G_M4730_IG59
+ jne G_M4730_IG55
;; size=131 bbWeight=1 PerfScore 27.50
-G_M4730_IG08: ; 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_IG54
+ jae G_M4730_IG49
mov ecx, r13d
cmp word ptr [rbx+2*rcx+0x0C], 125
sete cl
@@ -334,169 +387,94 @@ G_M4730_IG08: ; bbWeight=1, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcrRegs +[rax]
mov r10d, dword ptr [rsp+0xA8]
cmp r10d, r14d
- jae G_M4730_IG51
+ jae G_M4730_IG46
mov r8d, r10d
mov r9, gword ptr [rbp+8*r8]
; gcrRegs +[r9]
mov gword ptr [rsp+0x50], r9
; GC ptr vars +{V13}
test r15, r15
- jne G_M4730_IG73
+ jne G_M4730_IG72
;; size=77 bbWeight=1 PerfScore 16.25
-G_M4730_IG09: ; bbWeight=1, gcVars=00000000000000000000100000000800 {V13 V93}, gcrefRegs=92C9 {rax rbx rsi rdi r9 r12 r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
+G_M4730_IG15: ; bbWeight=1, gcVars=00000000000000000000100000000800 {V13 V93}, gcrefRegs=92C9 {rax rbx rsi rdi r9 r12 r15}, byrefRegs=0020 {rbp}, gcvars, byref, isz
test r12, r12
- jne G_M4730_IG30
+ jne G_M4730_IG26
mov r12d, dword ptr [rsp+0xAC]
; gcrRegs -[r12]
test r12d, r12d
- jne SHORT G_M4730_IG11
+ jne SHORT G_M4730_IG17
mov r8d, dword ptr [rsp+0xB0]
test r8d, r8d
- jne G_M4730_IG21
- ;; size=39 bbWeight=1 PerfScore 5.75
-G_M4730_IG10: ; bbWeight=0.50, gcrefRegs=82C9 {rax rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref
+ jne SHORT G_M4730_IG20
+ ;; size=35 bbWeight=1 PerfScore 5.75
+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_IG11: ; bbWeight=1, gcrefRegs=82C9 {rax rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref
+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 G_M4730_IG20
- ;; size=12 bbWeight=1 PerfScore 1.50
-G_M4730_IG12: ; bbWeight=0.50, gcrefRegs=82CB {rax rcx rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref, isz
+ je SHORT G_M4730_IG19
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M4730_IG18: ; bbWeight=0.50, gcrefRegs=82CB {rax rcx rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref
mov rdx, 0xD1FFAB1E ; System.String
cmp qword ptr [rcx], rdx
- je SHORT G_M4730_IG19
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M4730_IG13: ; bbWeight=2.17, gcrefRegs=82C9 {rax rbx rsi rdi r9 r15}, byrefRegs=0020 {rbp}, byref
- ; gcrRegs -[rcx]
- jmp G_M4730_IG76
...
+45 (+1.54%) : 404777.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -11,12 +11,12 @@
;
; V00 this [V00,T01] ( 41, 32.23) byref -> rbx this single-def
; V01 arg1 [V01,T36] ( 8, 4.00) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 18, 18.13) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 19, 18.13) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T20] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T48] ( 3, 3.03) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61, 42.37) int -> r13 ld-addr-op
-; V06 loc2 [V06,T09] ( 31, 12.11) ushort -> [rsp+0xE4]
-; V07 loc3 [V07,T33] ( 12, 6.03) int -> [rsp+0xE0]
+; V05 loc1 [V05,T00] ( 66, 42.37) int -> r13 ld-addr-op
+; V06 loc2 [V06,T09] ( 34, 12.11) ushort -> [rsp+0xE4]
+; V07 loc3 [V07,T33] ( 15, 6.03) int -> [rsp+0xE0]
; V08 loc4 [V08,T43] ( 5, 4.03) ubyte -> [rsp+0xDC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T21] ( 7, 8.07) int -> [rsp+0xD8]
@@ -161,7 +161,7 @@
; V149 cse0 [V149,T31] ( 3, 6.05) int -> rdx "CSE - moderate"
; V150 cse1 [V150,T35] ( 3, 6.02) int -> r8 "CSE - moderate"
; V151 cse2 [V151,T34] ( 5, 6.03) int -> registers multi-def "CSE - moderate"
-; V152 cse3 [V152,T04] ( 18, 18.14) int -> r12 "CSE - aggressive"
+; V152 cse3 [V152,T04] ( 19, 18.14) int -> r12 "CSE - aggressive"
; V153 cse4 [V153,T08] ( 12, 14.07) int -> [rsp+0x84] spill-single-def "CSE - moderate"
; V154 cse5 [V154,T32] ( 3, 6.05) int -> rcx "CSE - moderate"
; V155 rat0 [V155,T06] ( 7, 16.13) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -435,7 +435,7 @@ G_M36935_IG13: ; bbWeight=2.02, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0
mov gword ptr [rsp+0x70], r9
; GC ptr vars +{V13}
test r15, r15
- jne G_M36935_IG78
+ jne G_M36935_IG81
;; size=77 bbWeight=2.02 PerfScore 32.79
G_M36935_IG14: ; bbWeight=2.02, gcVars=00000000000000000040000000004000 {V13 V100}, gcrefRegs=92C1 {rax rsi rdi r9 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
test r12, r12
@@ -460,14 +460,14 @@ G_M36935_IG17: ; bbWeight=2.02, gcrefRegs=82C1 {rax rsi rdi r9 r15}, byre
G_M36935_IG18: ; bbWeight=1.01, gcrefRegs=8AC1 {rax rsi rdi r9 r11 r15}, byrefRegs=0028 {rbx rbp}, byref
mov rcx, 0xD1FFAB1E ; System.String
cmp qword ptr [r11], rcx
- jne G_M36935_IG81
+ jne G_M36935_IG84
xor r11, r11
;; size=22 bbWeight=1.01 PerfScore 4.54
G_M36935_IG19: ; bbWeight=2.02, gcrefRegs=8AC1 {rax rsi rdi r9 r11 r15}, byrefRegs=0028 {rbx rbp}, byref
mov rdx, r11
; gcrRegs +[rdx]
test rdx, rdx
- jne G_M36935_IG82
+ jne G_M36935_IG85
;; size=12 bbWeight=2.02 PerfScore 3.02
G_M36935_IG20: ; bbWeight=2.02, gcrefRegs=82C1 {rax rsi rdi r9 r15}, byrefRegs=0028 {rbx rbp}, byref, isz
; gcrRegs -[rdx r11]
@@ -479,7 +479,7 @@ G_M36935_IG20: ; bbWeight=2.02, gcrefRegs=82C1 {rax rsi rdi r9 r15}, byre
G_M36935_IG21: ; bbWeight=1.01, gcrefRegs=82C3 {rax rcx rsi rdi r9 r15}, byrefRegs=0028 {rbx rbp}, byref
mov rdx, 0xD1FFAB1E ; System.String
cmp qword ptr [rcx], rdx
- jne G_M36935_IG83
+ jne G_M36935_IG86
xor rcx, rcx
xor rdx, rdx
; gcrRegs +[rdx]
@@ -503,7 +503,7 @@ G_M36935_IG23: ; bbWeight=2.01, gcVars=00000000000000000000000000004000 {
G_M36935_IG24: ; bbWeight=2.01, gcrefRegs=82C0 {rsi rdi r9 r15}, byrefRegs=0028 {rbx rbp}, byref
mov rdx, 0xD1FFAB1E ; System.String
cmp qword ptr [r9], rdx
- jne G_M36935_IG84
+ jne G_M36935_IG87
mov rdx, r9
; gcrRegs +[rdx]
;; size=22 bbWeight=2.01 PerfScore 9.02
@@ -512,7 +512,7 @@ G_M36935_IG25: ; bbWeight=2.01, gcVars=00000000000000000000000000000000 {
; GC ptr vars -{V13}
test rdx, rdx
mov dword ptr [rsp+0xDC], r12d
- je G_M36935_IG85
+ je G_M36935_IG88
;; size=17 bbWeight=2.01 PerfScore 4.53
G_M36935_IG26: ; bbWeight=1.01, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
mov r12, rdx
@@ -535,7 +535,7 @@ G_M36935_IG28: ; bbWeight=2.01, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRe
mov ecx, dword ptr [rbx+0x18]
sub ecx, eax
cmp ecx, edx
- jl G_M36935_IG86
+ jl G_M36935_IG89
;; size=20 bbWeight=2.01 PerfScore 9.04
G_M36935_IG29: ; bbWeight=2.01, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=0028 {rbx rbp}, byref
lea rcx, bword ptr [rbx+0x10]
@@ -646,7 +646,7 @@ G_M36935_IG37: ; bbWeight=0.00, gcVars=00000000000000000040100000000000 {
; GC ptr vars +{V20 V44 V100}
mov r10d, dword ptr [rsp+0xAC]
test r10d, r10d
- jne G_M36935_IG87
+ jne G_M36935_IG90
;; size=17 bbWeight=0.00 PerfScore 0.00
G_M36935_IG38: ; bbWeight=0.00, gcVars=00000000000000000000100000000000 {V20}, gcrefRegs=80C5 {rax rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; GC ptr vars -{V44 V100}
@@ -909,9 +909,7 @@ G_M36935_IG63: ; bbWeight=0, gcVars=00000000000000000040000000000000 {V10
jbe G_M36935_IG50
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_IG64: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea ecx, [rax-0x30]
cmp ecx, 9
@@ -928,10 +926,8 @@ G_M36935_IG65: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG50
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_IG66: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 32
mov edx, dword ptr [rsp+0xD8]
@@ -939,7 +935,7 @@ G_M36935_IG66: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG67: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 44
- jne G_M36935_IG74
+ jne G_M36935_IG77
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
@@ -947,10 +943,8 @@ G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG50
mov eax, r13d
movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
- cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG68
- mov eax, ecx
cmp eax, 45
jne SHORT G_M36935_IG69
mov dword ptr [rsp+0xDC], 1
@@ -959,54 +953,74 @@ G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG50
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_IG69: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
add eax, -48
cmp eax, 10
jae G_M36935_IG49
inc r13d
cmp r12d, r13d
- ja SHORT G_M36935_IG71
- jmp G_M36935_IG50
- ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG50
+ test r13d, r13d
+ jl SHORT G_M36935_IG73
+ jmp SHORT G_M36935_IG71
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG70: ; 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_IG50
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M36935_IG71: ; 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_IG76
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG70
+ jmp SHORT G_M36935_IG74
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M36935_IG72: ; 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_IG50
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M36935_IG71: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M36935_IG73: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
jae G_M36935_IG56
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- lea r10d, [rcx-0x30]
- cmp r10d, 9
- ja SHORT G_M36935_IG73
+ mov r10d, r13d
+ movzx r10, word ptr [rsi+2*r10+0x0C]
+ lea ecx, [r10-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG76
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG70
- cmp ecx, 32
- jne SHORT G_M36935_IG76
- ;; size=39 bbWeight=0 PerfScore 0.00
-G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG72
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M36935_IG74: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp r10d, 32
+ jne SHORT G_M36935_IG79
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M36935_IG75: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d
cmp r12d, r13d
jbe G_M36935_IG50
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M36935_IG73: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- je SHORT G_M36935_IG72
+ mov r10d, r13d
+ movzx r10, word ptr [rsi+2*r10+0x0C]
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M36935_IG76: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp r10d, 32
+ je SHORT G_M36935_IG75
mov dword ptr [rsp+0xE0], eax
- mov eax, ecx
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG74: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ mov eax, r10d
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M36935_IG77: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125
mov dword ptr [rsp+0xD8], edx
je G_M36935_IG13
@@ -1014,7 +1028,7 @@ G_M36935_IG74: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jne G_M36935_IG51
mov ecx, r13d
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG75: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
+G_M36935_IG78: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
...
+48 (+1.56%) : 272845.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -11,12 +11,12 @@
;
; V00 this [V00,T01] ( 41, 39.97) byref -> rbx this single-def
; V01 arg1 [V01,T30] ( 8, 4.00) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 18, 17.99) ref -> rsi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 19, 17.99) ref -> rsi class-hnd single-def <System.String>
; V03 arg3 [V03,T17] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T48] ( 3, 3.00) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 61, 41.97) int -> r13 ld-addr-op
-; V06 loc2 [V06,T10] ( 31, 11.99) ushort -> [rsp+0xE4]
-; V07 loc3 [V07,T31] ( 13, 6.00) int -> [rsp+0xE0]
+; V05 loc1 [V05,T00] ( 66, 41.97) int -> r13 ld-addr-op
+; V06 loc2 [V06,T10] ( 34, 11.99) ushort -> [rsp+0xE4]
+; V07 loc3 [V07,T31] ( 16, 6.00) int -> [rsp+0xE0]
; V08 loc4 [V08,T45] ( 5, 4.00) ubyte -> [rsp+0xDC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T22] ( 7, 7.99) int -> [rsp+0xD8]
@@ -162,7 +162,7 @@
; V150 cse1 [V150,T36] ( 3, 5.99) int -> rax "CSE - moderate"
; V151 cse2 [V151,T35] ( 5, 5.99) int -> registers multi-def "CSE - moderate"
; V152 cse3 [V152,T03] ( 14, 21.97) int -> [rsp+0x84] "CSE - aggressive"
-; V153 cse4 [V153,T05] ( 18, 17.99) int -> r12 "CSE - aggressive"
+; V153 cse4 [V153,T05] ( 19, 17.99) int -> r12 "CSE - aggressive"
; V154 cse5 [V154,T34] ( 3, 6.00) int -> rcx "CSE - moderate"
; V155 rat0 [V155,T06] ( 7, 15.99) ref -> registers class-hnd "replacement local" <<unknown class>>
; V156 rat1 [V156,T07] ( 7, 15.99) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -468,7 +468,7 @@ G_M36935_IG19: ; bbWeight=2.00, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0
mov gword ptr [rsp+0x70], r10
; GC ptr vars +{V13}
test r15, r15
- jne G_M36935_IG73
+ jne G_M36935_IG76
;; size=77 bbWeight=2.00 PerfScore 32.48
G_M36935_IG20: ; bbWeight=2.00, gcVars=00000000000000000080000000001000 {V13 V100}, gcrefRegs=94C1 {rax rsi rdi r10 r12 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
test r12, r12
@@ -493,14 +493,14 @@ G_M36935_IG22: ; bbWeight=2.00, gcrefRegs=84C1 {rax rsi rdi r10 r15}, byr
G_M36935_IG23: ; bbWeight=1.00, 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_IG76
+ jne G_M36935_IG79
xor r9, r9
;; size=22 bbWeight=1.00 PerfScore 4.50
G_M36935_IG24: ; bbWeight=2.00, gcrefRegs=86C1 {rax rsi rdi r9 r10 r15}, byrefRegs=0028 {rbx rbp}, byref
mov r11, r9
; gcrRegs +[r11]
test r11, r11
- jne G_M36935_IG77
+ jne G_M36935_IG80
;; size=12 bbWeight=2.00 PerfScore 3.00
G_M36935_IG25: ; bbWeight=1.00, gcrefRegs=84C1 {rax rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, byref
; gcrRegs -[r9 r11]
@@ -515,23 +515,23 @@ G_M36935_IG26: ; bbWeight=2.00, gcrefRegs=84C1 {rax rsi rdi r10 r15}, byr
G_M36935_IG27: ; bbWeight=1.00, 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_IG79
+ jne G_M36935_IG82
xor rcx, rcx
;; size=21 bbWeight=1.00 PerfScore 4.50
G_M36935_IG28: ; bbWeight=2.00, gcrefRegs=84C3 {rax rcx rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, byref
mov rdx, rcx
; gcrRegs +[rdx]
test rdx, rdx
- jne G_M36935_IG80
+ jne G_M36935_IG83
;; size=12 bbWeight=2.00 PerfScore 3.00
G_M36935_IG29: ; bbWeight=2.00, gcVars=00000000000000000000000000001000 {V13}, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; gcrRegs -[rax rcx rdx]
; GC ptr vars -{V100}
test r10, r10
- je G_M36935_IG83
+ je G_M36935_IG86
mov rdx, 0xD1FFAB1E ; System.String
cmp qword ptr [r10], rdx
- jne G_M36935_IG84
+ jne G_M36935_IG87
;; size=28 bbWeight=2.00 PerfScore 10.99
G_M36935_IG30: ; bbWeight=2.00, gcVars=00000000000000000000000000000000 {}, gcrefRegs=84C0 {rsi rdi r10 r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref
; GC ptr vars -{V13}
@@ -543,7 +543,7 @@ G_M36935_IG31: ; bbWeight=2.00, 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_IG85
+ je G_M36935_IG88
;; size=25 bbWeight=2.00 PerfScore 6.50
G_M36935_IG32: ; bbWeight=1.00, gcrefRegs=80C4 {rdx rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
mov r12, rdx
@@ -554,7 +554,7 @@ G_M36935_IG33: ; bbWeight=2.00, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRe
mov edx, dword ptr [r12+0x08]
mov r8d, dword ptr [rsp+0xE0]
cmp edx, r8d
- jl G_M36935_IG86
+ jl G_M36935_IG89
;; size=22 bbWeight=2.00 PerfScore 8.49
G_M36935_IG34: ; bbWeight=2.00, gcrefRegs=90C0 {rsi rdi r12 r15}, byrefRegs=0028 {rbx rbp}, byref
mov eax, dword ptr [rbx+0x08]
@@ -807,9 +807,7 @@ G_M36935_IG58: ; bbWeight=0, gcVars=00000000000000000080000000000000 {V10
jbe G_M36935_IG46
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_IG59: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea ecx, [rax-0x30]
cmp ecx, 9
@@ -826,10 +824,8 @@ G_M36935_IG60: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG46
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_IG61: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 32
mov edx, dword ptr [rsp+0xD8]
@@ -837,7 +833,7 @@ G_M36935_IG61: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG62: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 44
- jne G_M36935_IG69
+ jne G_M36935_IG72
;; size=9 bbWeight=0 PerfScore 0.00
G_M36935_IG63: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
@@ -845,10 +841,8 @@ G_M36935_IG63: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG46
mov eax, r13d
movzx rax, word ptr [rsi+2*rax+0x0C]
- mov ecx, eax
- cmp ecx, 32
+ cmp eax, 32
je SHORT G_M36935_IG63
- mov eax, ecx
cmp eax, 45
jne SHORT G_M36935_IG64
mov dword ptr [rsp+0xDC], 1
@@ -857,54 +851,74 @@ G_M36935_IG63: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jbe G_M36935_IG46
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_IG64: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
add eax, -48
cmp eax, 10
jae G_M36935_IG45
inc r13d
cmp r12d, r13d
- ja SHORT G_M36935_IG66
- jmp G_M36935_IG46
- ;; size=25 bbWeight=0 PerfScore 0.00
+ jbe G_M36935_IG46
+ test r13d, r13d
+ jl SHORT G_M36935_IG68
+ jmp SHORT G_M36935_IG66
+ ;; size=31 bbWeight=0 PerfScore 0.00
G_M36935_IG65: ; 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_IG46
+ ;; size=20 bbWeight=0 PerfScore 0.00
+G_M36935_IG66: ; 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_IG71
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG65
+ jmp SHORT G_M36935_IG69
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M36935_IG67: ; 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_IG46
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M36935_IG66: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
jae G_M36935_IG52
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- lea r10d, [rcx-0x30]
- cmp r10d, 9
- ja SHORT G_M36935_IG68
+ mov r10d, r13d
+ movzx r10, word ptr [rsi+2*r10+0x0C]
+ lea ecx, [r10-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG71
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG65
- cmp ecx, 32
- jne SHORT G_M36935_IG71
- ;; size=39 bbWeight=0 PerfScore 0.00
-G_M36935_IG67: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jl SHORT G_M36935_IG67
+ ;; size=34 bbWeight=0 PerfScore 0.00
+G_M36935_IG69: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp r10d, 32
+ jne SHORT G_M36935_IG74
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M36935_IG70: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
inc r13d
cmp r12d, r13d
jbe G_M36935_IG46
- mov ecx, r13d
- movzx rcx, word ptr [rsi+2*rcx+0x0C]
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M36935_IG68: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp ecx, 32
- je SHORT G_M36935_IG67
+ mov r10d, r13d
+ movzx r10, word ptr [rsi+2*r10+0x0C]
+ ;; size=21 bbWeight=0 PerfScore 0.00
+G_M36935_IG71: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ cmp r10d, 32
+ je SHORT G_M36935_IG70
mov dword ptr [rsp+0xE0], eax
- mov eax, ecx
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG69: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ mov eax, r10d
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M36935_IG72: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
cmp eax, 125
mov dword ptr [rsp+0xD8], edx
je G_M36935_IG19
@@ -912,7 +926,7 @@ G_M36935_IG69: ; bbWeight=0, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
jne G_M36935_IG47
mov ecx, r13d
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG70: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, gcvars, byref, isz
...
+48 (+1.60%) : 676332.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
...
librariestestsnotieredcompilation.run.windows.x64.Release.mch
+0 (0.00%) : 138580.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%) : 2363.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%) : 2137.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
...
smoke_tests.nativeaot.windows.x64.checked.mch
-15 (-0.69%) : 11775.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T04] ( 17, 87.50) ref -> rsi this class-hnd exact single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T24] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 20,127 ) ref -> rbx class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T02] ( 19,127 ) ref -> rbx class-hnd exact single-def <System.String>
; V03 arg3 [V03,T36] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T48] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0xB4]
-; V07 loc3 [V07,T05] ( 12, 74 ) int -> [rsp+0xB0]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 33,260 ) ushort -> [rsp+0xB4]
+; V07 loc3 [V07,T05] ( 15, 74 ) int -> [rsp+0xB0]
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [rsp+0xAC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T08] ( 7, 48 ) int -> [rsp+0xA8]
@@ -137,7 +137,7 @@
; V127 cse1 [V127,T31] ( 3, 12 ) ref -> rdx "CSE - moderate"
; V128 cse2 [V128,T34] ( 3, 12 ) int -> r8 "CSE - moderate"
; V129 cse3 [V129,T32] ( 3, 12 ) ref -> rcx "CSE - moderate"
-; V130 cse4 [V130,T02] ( 20,142 ) int -> r12 "CSE - aggressive"
+; V130 cse4 [V130,T03] ( 19,126.16) int -> r12 "CSE - aggressive"
; V131 cse5 [V131,T06] ( 6, 60 ) int -> [rsp+0x64] spill-single-def "CSE - aggressive"
; V132 cse6 [V132,T35] ( 3, 12 ) int -> rcx "CSE - moderate"
;
@@ -171,7 +171,7 @@ 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_IG68
+ je G_M4730_IG67
test rdi, rdi
jne SHORT G_M4730_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -239,7 +239,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcrRegs -[rax]
mov r12d, dword ptr [rbx+0x08]
cmp r12d, r13d
- jbe G_M4730_IG63
+ jbe G_M4730_IG62
;; size=13 bbWeight=8 PerfScore 26.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov ecx, r13d
@@ -282,9 +282,9 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
mov dword ptr [rsp+0x98], eax
test eax, eax
- jl G_M4730_IG65
+ jl G_M4730_IG64
cmp eax, dword ptr [rsp+0x8C]
- ja G_M4730_IG75
+ ja G_M4730_IG74
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, bword ptr [rsp+0x28]
@@ -297,12 +297,12 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
add r13d, dword ptr [rsp+0x98]
cmp r13d, r12d
- jae G_M4730_IG67
+ jae G_M4730_IG66
mov ecx, r13d
movzx rax, word ptr [rbx+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG71
+ jbe G_M4730_IG70
mov ecx, r13d
movzx r8, word ptr [rbx+2*rcx+0x0C]
cmp eax, r8d
@@ -319,7 +319,7 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
G_M4730_IG14: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
cmp eax, 123
- jne G_M4730_IG69
+ jne G_M4730_IG68
xor eax, eax
mov dword ptr [rsp+0xB0], eax
xor r10d, r10d
@@ -332,7 +332,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov dword ptr [rsp+0x90], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M4730_IG67
+ jae G_M4730_IG66
cmp word ptr [rbx+2*rcx+0x0C], 123
je SHORT G_M4730_IG16
;; size=69 bbWeight=4 PerfScore 48.00
@@ -366,14 +366,14 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov r8d, dword ptr [rsp+0xB4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M4730_IG70
+ jae G_M4730_IG69
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG71
+ jbe G_M4730_IG70
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 125
- je G_M4730_IG42
+ je G_M4730_IG41
;; size=52 bbWeight=4 PerfScore 31.00
G_M4730_IG19: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
jmp SHORT G_M4730_IG21
@@ -384,7 +384,7 @@ G_M4730_IG20: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov dword ptr [rsp+0xA8], edx
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG71
+ jbe G_M4730_IG70
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
mov edx, dword ptr [rsp+0xA8]
@@ -398,143 +398,133 @@ G_M4730_IG21: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
;; size=17 bbWeight=16 PerfScore 48.00
G_M4730_IG22: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp r8d, 32
- jne SHORT G_M4730_IG26
- test r13d, r13d
- jl SHORT G_M4730_IG25
- ;; size=11 bbWeight=2 PerfScore 5.00
-G_M4730_IG23: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jne SHORT G_M4730_IG24
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M4730_IG23: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG71
+ jbe G_M4730_IG70
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M4730_IG23
- ;; size=27 bbWeight=15.84 PerfScore 79.20
-G_M4730_IG24: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- mov ecx, r8d
- mov r8d, ecx
- jmp SHORT G_M4730_IG26
- ;; size=8 bbWeight=2 PerfScore 5.00
-G_M4730_IG25: ; bbWeight=0.16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ ;; size=27 bbWeight=16 PerfScore 80.00
+G_M4730_IG24: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ cmp r8d, 44
+ mov eax, dword ptr [rsp+0xB0]
+ jne G_M4730_IG36
+ ;; size=17 bbWeight=2 PerfScore 4.50
+G_M4730_IG25: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG71
+ jbe G_M4730_IG70
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M4730_IG25
- ;; size=27 bbWeight=0.16 PerfScore 0.80
-G_M4730_IG26: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
- cmp r8d, 44
- jne G_M4730_IG38
- ;; size=10 bbWeight=2 PerfScore 2.50
-G_M4730_IG27: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M4730_IG71
- mov r8d, r13d
- movzx r8, word ptr [rbx+2*r8+0x0C]
- cmp r8d, 32
- je SHORT G_M4730_IG27
;; size=27 bbWeight=16 PerfScore 80.00
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG26: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp r8d, 45
- jne SHORT G_M4730_IG29
+ jne SHORT G_M4730_IG27
mov dword ptr [rsp+0xAC], 1
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG71
+ jbe G_M4730_IG70
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
;; size=38 bbWeight=2 PerfScore 12.00
-G_M4730_IG29: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG27: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
lea eax, [r8-0x30]
cmp eax, 10
- jae G_M4730_IG70
+ jae G_M4730_IG69
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG71
- jmp SHORT G_M4730_IG31
- ;; size=27 bbWeight=2 PerfScore 10.50
-G_M4730_IG30: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ jbe G_M4730_IG70
+ test r13d, r13d
+ jge SHORT G_M4730_IG30
+ ;; size=30 bbWeight=2 PerfScore 9.00
+G_M4730_IG28: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M4730_IG33
+ ;; size=2 bbWeight=0.02 PerfScore 0.04
+G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ lea eax, [rax+4*rax]
+ lea eax, [r8+2*rax-0x30]
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M4730_IG70
+ ;; size=20 bbWeight=7.92 PerfScore 23.76
+G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov r8d, r13d
+ movzx r8, word ptr [rbx+2*r8+0x0C]
+ lea ecx, [r8-0x30]
+ cmp ecx, 9
+ ja SHORT G_M4730_IG34
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M4730_IG29
+ ;; size=25 bbWeight=15.84 PerfScore 83.16
+G_M4730_IG31: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M4730_IG34
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M4730_IG32: ; bbWeight=0.08, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
lea eax, [rax+4*rax]
lea eax, [r8+2*rax-0x30]
mov dword ptr [rsp+0xB0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xB0]
- jbe G_M4730_IG71
- ;; size=34 bbWeight=8 PerfScore 40.00
-G_M4730_IG31: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jbe G_M4730_IG70
+ ;; size=34 bbWeight=0.08 PerfScore 0.40
+G_M4730_IG33: ; bbWeight=0.16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp r13d, r12d
- jae G_M4730_IG67
+ jae G_M4730_IG66
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
lea ecx, [r8-0x30]
cmp ecx, 9
- ja SHORT G_M4730_IG32
+ ja SHORT G_M4730_IG34
cmp eax, 0xD1FFAB1E
- jl SHORT G_M4730_IG30
- ;; size=34 bbWeight=16 PerfScore 104.00
-G_M4730_IG32: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- cmp r8d, 32
...
-15 (-0.66%) : 6462.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,T04] ( 17, 87.50) ref -> rsi this class-hnd exact single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T24] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 20,127 ) ref -> rbx class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T02] ( 19,127 ) ref -> rbx class-hnd exact single-def <System.String>
; V03 arg3 [V03,T37] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T49] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0xC4]
-; V07 loc3 [V07,T05] ( 12, 74 ) int -> [rsp+0xC0]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 33,260 ) ushort -> [rsp+0xC4]
+; V07 loc3 [V07,T05] ( 15, 74 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T08] ( 7, 48 ) int -> [rsp+0xB8]
@@ -139,7 +139,7 @@
; V128 cse1 [V128,T32] ( 3, 12 ) ref -> rax "CSE - moderate"
; V129 cse2 [V129,T35] ( 3, 12 ) int -> r8 "CSE - moderate"
; V130 cse3 [V130,T33] ( 3, 12 ) ref -> rcx "CSE - moderate"
-; V131 cse4 [V131,T02] ( 20,142 ) int -> r12 "CSE - aggressive"
+; V131 cse4 [V131,T03] ( 19,126.16) int -> r12 "CSE - aggressive"
; V132 cse5 [V132,T06] ( 6, 60 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
; V133 cse6 [V133,T36] ( 3, 12 ) int -> rcx "CSE - moderate"
;
@@ -173,7 +173,7 @@ 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_IG71
+ je G_M4730_IG70
test rdi, rdi
jne SHORT G_M4730_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -241,7 +241,7 @@ G_M4730_IG10: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcrRegs -[rax]
mov r12d, dword ptr [rbx+0x08]
cmp r12d, r13d
- jbe G_M4730_IG66
+ jbe G_M4730_IG65
;; size=13 bbWeight=8 PerfScore 26.00
G_M4730_IG11: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
mov ecx, r13d
@@ -284,9 +284,9 @@ G_M4730_IG13: ; 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_IG68
+ jl G_M4730_IG67
cmp eax, dword ptr [rsp+0x9C]
- ja G_M4730_IG78
+ ja G_M4730_IG77
mov rcx, rsi
; gcrRegs +[rcx]
mov rdx, bword ptr [rsp+0x30]
@@ -299,12 +299,12 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M4730_IG70
+ jae G_M4730_IG69
mov ecx, r13d
movzx rax, word ptr [rbx+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG74
+ jbe G_M4730_IG73
mov ecx, r13d
movzx r8, word ptr [rbx+2*rcx+0x0C]
cmp eax, r8d
@@ -321,7 +321,7 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
G_M4730_IG14: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
; gcrRegs -[rax]
cmp eax, 123
- jne G_M4730_IG72
+ jne G_M4730_IG71
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -334,7 +334,7 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov dword ptr [rsp+0xA0], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M4730_IG70
+ jae G_M4730_IG69
cmp word ptr [rbx+2*rcx+0x0C], 123
je SHORT G_M4730_IG16
;; size=69 bbWeight=4 PerfScore 48.00
@@ -368,14 +368,14 @@ G_M4730_IG18: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M4730_IG73
+ jae G_M4730_IG72
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG74
+ jbe G_M4730_IG73
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 125
- je G_M4730_IG42
+ je G_M4730_IG41
;; size=52 bbWeight=4 PerfScore 31.00
G_M4730_IG19: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
jmp SHORT G_M4730_IG21
@@ -386,7 +386,7 @@ G_M4730_IG20: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG74
+ jbe G_M4730_IG73
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -400,143 +400,133 @@ G_M4730_IG21: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=
;; size=17 bbWeight=16 PerfScore 48.00
G_M4730_IG22: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp r8d, 32
- jne SHORT G_M4730_IG26
- test r13d, r13d
- jl SHORT G_M4730_IG25
- ;; size=11 bbWeight=2 PerfScore 5.00
-G_M4730_IG23: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jne SHORT G_M4730_IG24
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M4730_IG23: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG74
+ jbe G_M4730_IG73
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M4730_IG23
- ;; size=27 bbWeight=15.84 PerfScore 79.20
-G_M4730_IG24: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- mov ecx, r8d
- mov r8d, ecx
- jmp SHORT G_M4730_IG26
- ;; size=8 bbWeight=2 PerfScore 5.00
-G_M4730_IG25: ; bbWeight=0.16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ ;; size=27 bbWeight=16 PerfScore 80.00
+G_M4730_IG24: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ cmp r8d, 44
+ mov eax, dword ptr [rsp+0xC0]
+ jne G_M4730_IG36
+ ;; size=17 bbWeight=2 PerfScore 4.50
+G_M4730_IG25: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG74
+ jbe G_M4730_IG73
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M4730_IG25
- ;; size=27 bbWeight=0.16 PerfScore 0.80
-G_M4730_IG26: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
- cmp r8d, 44
- jne G_M4730_IG38
- ;; size=10 bbWeight=2 PerfScore 2.50
-G_M4730_IG27: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M4730_IG74
- mov r8d, r13d
- movzx r8, word ptr [rbx+2*r8+0x0C]
- cmp r8d, 32
- je SHORT G_M4730_IG27
;; size=27 bbWeight=16 PerfScore 80.00
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG26: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp r8d, 45
- jne SHORT G_M4730_IG29
+ jne SHORT G_M4730_IG27
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG74
+ jbe G_M4730_IG73
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
;; size=38 bbWeight=2 PerfScore 12.00
-G_M4730_IG29: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+G_M4730_IG27: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
lea eax, [r8-0x30]
cmp eax, 10
- jae G_M4730_IG73
+ jae G_M4730_IG72
inc r13d
cmp r12d, r13d
- jbe G_M4730_IG74
- jmp SHORT G_M4730_IG31
- ;; size=27 bbWeight=2 PerfScore 10.50
-G_M4730_IG30: ; bbWeight=8, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ jbe G_M4730_IG73
+ test r13d, r13d
+ jge SHORT G_M4730_IG30
+ ;; size=30 bbWeight=2 PerfScore 9.00
+G_M4730_IG28: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M4730_IG33
+ ;; size=2 bbWeight=0.02 PerfScore 0.04
+G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
+ lea eax, [rax+4*rax]
+ lea eax, [r8+2*rax-0x30]
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M4730_IG73
+ ;; size=20 bbWeight=7.92 PerfScore 23.76
+G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ mov r8d, r13d
+ movzx r8, word ptr [rbx+2*r8+0x0C]
+ lea ecx, [r8-0x30]
+ cmp ecx, 9
+ ja SHORT G_M4730_IG34
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M4730_IG29
+ ;; size=25 bbWeight=15.84 PerfScore 83.16
+G_M4730_IG31: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jmp SHORT G_M4730_IG34
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M4730_IG32: ; bbWeight=0.08, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref
lea eax, [rax+4*rax]
lea eax, [r8+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M4730_IG74
- ;; size=34 bbWeight=8 PerfScore 40.00
-G_M4730_IG31: ; bbWeight=16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
+ jbe G_M4730_IG73
+ ;; size=34 bbWeight=0.08 PerfScore 0.40
+G_M4730_IG33: ; bbWeight=0.16, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
cmp r13d, r12d
- jae G_M4730_IG70
+ jae G_M4730_IG69
mov r8d, r13d
movzx r8, word ptr [rbx+2*r8+0x0C]
lea ecx, [r8-0x30]
cmp ecx, 9
- ja SHORT G_M4730_IG32
+ ja SHORT G_M4730_IG34
cmp eax, 0xD1FFAB1E
- jl SHORT G_M4730_IG30
- ;; size=34 bbWeight=16 PerfScore 104.00
-G_M4730_IG32: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0020 {rbp}, byref, isz
- cmp r8d, 32
...
-15 (-0.63%) : 1592.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 20,127 ) ref -> rsi class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> rsi class-hnd exact single-def <System.String>
; V03 arg3 [V03,T37] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T50] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rsp+0xC4]
-; V07 loc3 [V07,T06] ( 12,102 ) int -> [rsp+0xC0]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0xC4]
+; V07 loc3 [V07,T06] ( 15,102 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [rsp+0xB8]
@@ -131,7 +131,7 @@
; V121 tmp100 [V121 ] ( 15, 75 ) struct (16) [rsp+0x88] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
; V122 tmp101 [V122 ] ( 3, 24 ) struct (16) [rsp+0x78] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ushort]>
; V123 cse0 [V123,T35] ( 3, 12 ) int -> rax "CSE - moderate"
-; V124 cse1 [V124,T03] ( 20,142 ) int -> r12 "CSE - aggressive"
+; V124 cse1 [V124,T04] ( 19,126.16) int -> r12 "CSE - aggressive"
; V125 cse2 [V125,T05] ( 7,108 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
; V126 cse3 [V126,T36] ( 3, 12 ) int -> rcx "CSE - moderate"
;
@@ -165,7 +165,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_IG75
+ je G_M36935_IG74
test rdi, rdi
jne SHORT G_M36935_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -233,7 +233,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M36935_IG71
+ jbe G_M36935_IG70
;; size=13 bbWeight=8 PerfScore 26.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d
@@ -276,9 +276,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M36935_IG72
+ jl G_M36935_IG71
cmp eax, dword ptr [rsp+0x98]
- ja G_M36935_IG82
+ ja G_M36935_IG81
mov rdx, bword ptr [rsp+0x30]
; byrRegs +[rdx]
mov ecx, eax
@@ -294,12 +294,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
mov ecx, r13d
movzx rax, word ptr [rsi+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov ecx, r13d
movzx r8, word ptr [rsi+2*rcx+0x0C]
cmp eax, r8d
@@ -333,7 +333,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=8 bbWeight=4 PerfScore 9.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 123
- jne G_M36935_IG76
+ jne G_M36935_IG75
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -346,7 +346,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0x9C], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
cmp word ptr [rsi+2*rcx+0x0C], 123
je SHORT G_M36935_IG19
;; size=69 bbWeight=4 PerfScore 48.00
@@ -380,14 +380,14 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M36935_IG77
+ jae G_M36935_IG76
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 125
- je G_M36935_IG45
+ je G_M36935_IG44
;; size=52 bbWeight=4 PerfScore 31.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
jmp SHORT G_M36935_IG24
@@ -398,7 +398,7 @@ G_M36935_IG23: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -412,143 +412,133 @@ G_M36935_IG24: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=17 bbWeight=16 PerfScore 48.00
G_M36935_IG25: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r8d, 32
- jne SHORT G_M36935_IG29
- test r13d, r13d
- jl SHORT G_M36935_IG28
- ;; size=11 bbWeight=2 PerfScore 5.00
-G_M36935_IG26: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jne SHORT G_M36935_IG27
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M36935_IG26: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG26
- ;; size=27 bbWeight=15.84 PerfScore 79.20
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- mov ecx, r8d
- mov r8d, ecx
- jmp SHORT G_M36935_IG29
- ;; size=8 bbWeight=2 PerfScore 5.00
-G_M36935_IG28: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=27 bbWeight=16 PerfScore 80.00
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ cmp r8d, 44
+ mov eax, dword ptr [rsp+0xC0]
+ jne G_M36935_IG39
+ ;; size=17 bbWeight=2 PerfScore 4.50
+G_M36935_IG28: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG28
- ;; size=27 bbWeight=0.16 PerfScore 0.80
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp r8d, 44
- jne G_M36935_IG41
- ;; size=10 bbWeight=2 PerfScore 2.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M36935_IG78
- mov r8d, r13d
- movzx r8, word ptr [rsi+2*r8+0x0C]
- cmp r8d, 32
- je SHORT G_M36935_IG30
;; size=27 bbWeight=16 PerfScore 80.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r8d, 45
- jne SHORT G_M36935_IG32
+ jne SHORT G_M36935_IG30
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
;; size=38 bbWeight=2 PerfScore 12.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea eax, [r8-0x30]
cmp eax, 10
- jae G_M36935_IG77
+ jae G_M36935_IG76
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
- jmp SHORT G_M36935_IG34
- ;; size=27 bbWeight=2 PerfScore 10.50
-G_M36935_IG33: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jbe G_M36935_IG77
+ test r13d, r13d
+ jge SHORT G_M36935_IG33
+ ;; size=30 bbWeight=2 PerfScore 9.00
+G_M36935_IG31: ; bbWeight=0.02, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG36
+ ;; size=2 bbWeight=0.02 PerfScore 0.04
+G_M36935_IG32: ; bbWeight=7.92, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ lea eax, [rax+4*rax]
+ lea eax, [r8+2*rax-0x30]
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG77
+ ;; size=20 bbWeight=7.92 PerfScore 23.76
+G_M36935_IG33: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ mov r8d, r13d
+ movzx r8, word ptr [rsi+2*r8+0x0C]
+ lea ecx, [r8-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG37
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG32
+ ;; size=25 bbWeight=15.84 PerfScore 83.16
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG37
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG35: ; bbWeight=0.08, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
lea eax, [r8+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M36935_IG78
- ;; size=34 bbWeight=8 PerfScore 40.00
-G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jbe G_M36935_IG77
+ ;; size=34 bbWeight=0.08 PerfScore 0.40
+G_M36935_IG36: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
lea ecx, [r8-0x30]
cmp ecx, 9
- ja SHORT G_M36935_IG35
+ ja SHORT G_M36935_IG37
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG33
- ;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG35: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp r8d, 32
...
-15 (-0.63%) : 16686.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 20,127 ) ref -> rsi class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> rsi class-hnd exact single-def <System.String>
; V03 arg3 [V03,T37] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T50] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rsp+0xC4]
-; V07 loc3 [V07,T06] ( 12,102 ) int -> [rsp+0xC0]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0xC4]
+; V07 loc3 [V07,T06] ( 15,102 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [rsp+0xB8]
@@ -131,7 +131,7 @@
; V121 tmp100 [V121 ] ( 15, 75 ) struct (16) [rsp+0x88] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
; V122 tmp101 [V122 ] ( 3, 24 ) struct (16) [rsp+0x78] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ushort]>
; V123 cse0 [V123,T35] ( 3, 12 ) int -> rax "CSE - moderate"
-; V124 cse1 [V124,T03] ( 20,142 ) int -> r12 "CSE - aggressive"
+; V124 cse1 [V124,T04] ( 19,126.16) int -> r12 "CSE - aggressive"
; V125 cse2 [V125,T05] ( 7,108 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
; V126 cse3 [V126,T36] ( 3, 12 ) int -> rcx "CSE - moderate"
;
@@ -165,7 +165,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_IG75
+ je G_M36935_IG74
test rdi, rdi
jne SHORT G_M36935_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -233,7 +233,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M36935_IG71
+ jbe G_M36935_IG70
;; size=13 bbWeight=8 PerfScore 26.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d
@@ -276,9 +276,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M36935_IG72
+ jl G_M36935_IG71
cmp eax, dword ptr [rsp+0x98]
- ja G_M36935_IG82
+ ja G_M36935_IG81
mov rdx, bword ptr [rsp+0x30]
; byrRegs +[rdx]
mov ecx, eax
@@ -294,12 +294,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
mov ecx, r13d
movzx rax, word ptr [rsi+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov ecx, r13d
movzx r8, word ptr [rsi+2*rcx+0x0C]
cmp eax, r8d
@@ -333,7 +333,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=8 bbWeight=4 PerfScore 9.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 123
- jne G_M36935_IG76
+ jne G_M36935_IG75
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -346,7 +346,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0x9C], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
cmp word ptr [rsi+2*rcx+0x0C], 123
je SHORT G_M36935_IG19
;; size=69 bbWeight=4 PerfScore 48.00
@@ -380,14 +380,14 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M36935_IG77
+ jae G_M36935_IG76
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 125
- je G_M36935_IG45
+ je G_M36935_IG44
;; size=52 bbWeight=4 PerfScore 31.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
jmp SHORT G_M36935_IG24
@@ -398,7 +398,7 @@ G_M36935_IG23: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -412,143 +412,133 @@ G_M36935_IG24: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=17 bbWeight=16 PerfScore 48.00
G_M36935_IG25: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r8d, 32
- jne SHORT G_M36935_IG29
- test r13d, r13d
- jl SHORT G_M36935_IG28
- ;; size=11 bbWeight=2 PerfScore 5.00
-G_M36935_IG26: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jne SHORT G_M36935_IG27
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M36935_IG26: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG26
- ;; size=27 bbWeight=15.84 PerfScore 79.20
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- mov ecx, r8d
- mov r8d, ecx
- jmp SHORT G_M36935_IG29
- ;; size=8 bbWeight=2 PerfScore 5.00
-G_M36935_IG28: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=27 bbWeight=16 PerfScore 80.00
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ cmp r8d, 44
+ mov eax, dword ptr [rsp+0xC0]
+ jne G_M36935_IG39
+ ;; size=17 bbWeight=2 PerfScore 4.50
+G_M36935_IG28: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG28
- ;; size=27 bbWeight=0.16 PerfScore 0.80
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp r8d, 44
- jne G_M36935_IG41
- ;; size=10 bbWeight=2 PerfScore 2.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M36935_IG78
- mov r8d, r13d
- movzx r8, word ptr [rsi+2*r8+0x0C]
- cmp r8d, 32
- je SHORT G_M36935_IG30
;; size=27 bbWeight=16 PerfScore 80.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r8d, 45
- jne SHORT G_M36935_IG32
+ jne SHORT G_M36935_IG30
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
;; size=38 bbWeight=2 PerfScore 12.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea eax, [r8-0x30]
cmp eax, 10
- jae G_M36935_IG77
+ jae G_M36935_IG76
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
- jmp SHORT G_M36935_IG34
- ;; size=27 bbWeight=2 PerfScore 10.50
-G_M36935_IG33: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jbe G_M36935_IG77
+ test r13d, r13d
+ jge SHORT G_M36935_IG33
+ ;; size=30 bbWeight=2 PerfScore 9.00
+G_M36935_IG31: ; bbWeight=0.02, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG36
+ ;; size=2 bbWeight=0.02 PerfScore 0.04
+G_M36935_IG32: ; bbWeight=7.92, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ lea eax, [rax+4*rax]
+ lea eax, [r8+2*rax-0x30]
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG77
+ ;; size=20 bbWeight=7.92 PerfScore 23.76
+G_M36935_IG33: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ mov r8d, r13d
+ movzx r8, word ptr [rsi+2*r8+0x0C]
+ lea ecx, [r8-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG37
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG32
+ ;; size=25 bbWeight=15.84 PerfScore 83.16
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG37
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG35: ; bbWeight=0.08, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
lea eax, [r8+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M36935_IG78
- ;; size=34 bbWeight=8 PerfScore 40.00
-G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jbe G_M36935_IG77
+ ;; size=34 bbWeight=0.08 PerfScore 0.40
+G_M36935_IG36: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
lea ecx, [r8-0x30]
cmp ecx, 9
- ja SHORT G_M36935_IG35
+ ja SHORT G_M36935_IG37
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG33
- ;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG35: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp r8d, 32
...
-15 (-0.63%) : 19240.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -9,12 +9,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 20,127 ) ref -> rsi class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> rsi class-hnd exact single-def <System.String>
; V03 arg3 [V03,T37] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T50] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rsp+0xC4]
-; V07 loc3 [V07,T06] ( 12,102 ) int -> [rsp+0xC0]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0xC4]
+; V07 loc3 [V07,T06] ( 15,102 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [rsp+0xB8]
@@ -131,7 +131,7 @@
; V121 tmp100 [V121 ] ( 15, 75 ) struct (16) [rsp+0x88] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
; V122 tmp101 [V122 ] ( 3, 24 ) struct (16) [rsp+0x78] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ushort]>
; V123 cse0 [V123,T35] ( 3, 12 ) int -> rax "CSE - moderate"
-; V124 cse1 [V124,T03] ( 20,142 ) int -> r12 "CSE - aggressive"
+; V124 cse1 [V124,T04] ( 19,126.16) int -> r12 "CSE - aggressive"
; V125 cse2 [V125,T05] ( 7,108 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
; V126 cse3 [V126,T36] ( 3, 12 ) int -> rcx "CSE - moderate"
;
@@ -165,7 +165,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_IG75
+ je G_M36935_IG74
test rdi, rdi
jne SHORT G_M36935_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -233,7 +233,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M36935_IG71
+ jbe G_M36935_IG70
;; size=13 bbWeight=8 PerfScore 26.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d
@@ -276,9 +276,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M36935_IG72
+ jl G_M36935_IG71
cmp eax, dword ptr [rsp+0x98]
- ja G_M36935_IG82
+ ja G_M36935_IG81
mov rdx, bword ptr [rsp+0x30]
; byrRegs +[rdx]
mov ecx, eax
@@ -294,12 +294,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
mov ecx, r13d
movzx rax, word ptr [rsi+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov ecx, r13d
movzx r8, word ptr [rsi+2*rcx+0x0C]
cmp eax, r8d
@@ -333,7 +333,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=8 bbWeight=4 PerfScore 9.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 123
- jne G_M36935_IG76
+ jne G_M36935_IG75
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -346,7 +346,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0x9C], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
cmp word ptr [rsi+2*rcx+0x0C], 123
je SHORT G_M36935_IG19
;; size=69 bbWeight=4 PerfScore 48.00
@@ -380,14 +380,14 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M36935_IG77
+ jae G_M36935_IG76
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 125
- je G_M36935_IG45
+ je G_M36935_IG44
;; size=52 bbWeight=4 PerfScore 31.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
jmp SHORT G_M36935_IG24
@@ -398,7 +398,7 @@ G_M36935_IG23: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -412,143 +412,133 @@ G_M36935_IG24: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=17 bbWeight=16 PerfScore 48.00
G_M36935_IG25: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r8d, 32
- jne SHORT G_M36935_IG29
- test r13d, r13d
- jl SHORT G_M36935_IG28
- ;; size=11 bbWeight=2 PerfScore 5.00
-G_M36935_IG26: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jne SHORT G_M36935_IG27
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M36935_IG26: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG26
- ;; size=27 bbWeight=15.84 PerfScore 79.20
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- mov ecx, r8d
- mov r8d, ecx
- jmp SHORT G_M36935_IG29
- ;; size=8 bbWeight=2 PerfScore 5.00
-G_M36935_IG28: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=27 bbWeight=16 PerfScore 80.00
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ cmp r8d, 44
+ mov eax, dword ptr [rsp+0xC0]
+ jne G_M36935_IG39
+ ;; size=17 bbWeight=2 PerfScore 4.50
+G_M36935_IG28: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG28
- ;; size=27 bbWeight=0.16 PerfScore 0.80
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp r8d, 44
- jne G_M36935_IG41
- ;; size=10 bbWeight=2 PerfScore 2.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M36935_IG78
- mov r8d, r13d
- movzx r8, word ptr [rsi+2*r8+0x0C]
- cmp r8d, 32
- je SHORT G_M36935_IG30
;; size=27 bbWeight=16 PerfScore 80.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r8d, 45
- jne SHORT G_M36935_IG32
+ jne SHORT G_M36935_IG30
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
+ jbe G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
;; size=38 bbWeight=2 PerfScore 12.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea eax, [r8-0x30]
cmp eax, 10
- jae G_M36935_IG77
+ jae G_M36935_IG76
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG78
- jmp SHORT G_M36935_IG34
- ;; size=27 bbWeight=2 PerfScore 10.50
-G_M36935_IG33: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jbe G_M36935_IG77
+ test r13d, r13d
+ jge SHORT G_M36935_IG33
+ ;; size=30 bbWeight=2 PerfScore 9.00
+G_M36935_IG31: ; bbWeight=0.02, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG36
+ ;; size=2 bbWeight=0.02 PerfScore 0.04
+G_M36935_IG32: ; bbWeight=7.92, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ lea eax, [rax+4*rax]
+ lea eax, [r8+2*rax-0x30]
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG77
+ ;; size=20 bbWeight=7.92 PerfScore 23.76
+G_M36935_IG33: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ mov r8d, r13d
+ movzx r8, word ptr [rsi+2*r8+0x0C]
+ lea ecx, [r8-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG37
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG32
+ ;; size=25 bbWeight=15.84 PerfScore 83.16
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG37
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG35: ; bbWeight=0.08, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
lea eax, [r8+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M36935_IG78
- ;; size=34 bbWeight=8 PerfScore 40.00
-G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jbe G_M36935_IG77
+ ;; size=34 bbWeight=0.08 PerfScore 0.40
+G_M36935_IG36: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
- jae G_M36935_IG74
+ jae G_M36935_IG73
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
lea ecx, [r8-0x30]
cmp ecx, 9
- ja SHORT G_M36935_IG35
+ ja SHORT G_M36935_IG37
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG33
- ;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG35: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp r8d, 32
...
-15 (-0.62%) : 5122.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -10,12 +10,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> rbx this single-def
; V01 arg1 [V01,T26] ( 11, 12.33) ref -> rdi class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 20,127 ) ref -> rsi class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T03] ( 19,127 ) ref -> rsi class-hnd exact single-def <System.String>
; V03 arg3 [V03,T38] ( 4, 8 ) byref -> r9 ld-addr-op single-def
; V04 loc0 [V04,T51] ( 3, 7 ) ref -> r15 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 71,459 ) int -> r13 ld-addr-op
-; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [rsp+0xC4]
-; V07 loc3 [V07,T06] ( 12,102 ) int -> [rsp+0xC0]
+; V05 loc1 [V05,T00] ( 66,441.16) int -> r13 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [rsp+0xC4]
+; V07 loc3 [V07,T06] ( 15,102 ) int -> [rsp+0xC0]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [rsp+0xBC]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [rsp+0xB8]
@@ -133,7 +133,7 @@
; V122 tmp101 [V122 ] ( 3, 24 ) struct (16) [rsp+0x78] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Span`1[ushort]>
; V123 tmp102 [V123,T34] ( 3, 12 ) ref -> rcx "argument with side effect"
; V124 cse0 [V124,T36] ( 3, 12 ) int -> rax "CSE - moderate"
-; V125 cse1 [V125,T03] ( 20,142 ) int -> r12 "CSE - aggressive"
+; V125 cse1 [V125,T04] ( 19,126.16) int -> r12 "CSE - aggressive"
; V126 cse2 [V126,T05] ( 7,108 ) int -> [rsp+0x74] spill-single-def "CSE - aggressive"
; V127 cse3 [V127,T37] ( 3, 12 ) int -> rcx "CSE - moderate"
;
@@ -167,7 +167,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_IG79
+ je G_M36935_IG78
test rdi, rdi
jne SHORT G_M36935_IG04
;; size=21 bbWeight=1 PerfScore 6.50
@@ -235,7 +235,7 @@ G_M36935_IG10: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcrRegs -[rax]
mov r12d, dword ptr [rsi+0x08]
cmp r12d, r13d
- jbe G_M36935_IG75
+ jbe G_M36935_IG74
;; size=13 bbWeight=8 PerfScore 26.00
G_M36935_IG11: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
mov ecx, r13d
@@ -278,9 +278,9 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
mov dword ptr [rsp+0xA8], eax
test eax, eax
- jl G_M36935_IG76
+ jl G_M36935_IG75
cmp eax, dword ptr [rsp+0x98]
- ja G_M36935_IG86
+ ja G_M36935_IG85
mov rdx, bword ptr [rsp+0x30]
; byrRegs +[rdx]
mov ecx, eax
@@ -296,12 +296,12 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
; gcr arg pop 0
add r13d, dword ptr [rsp+0xA8]
cmp r13d, r12d
- jae G_M36935_IG78
+ jae G_M36935_IG77
mov ecx, r13d
movzx rax, word ptr [rsi+2*rcx+0x0C]
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG82
+ jbe G_M36935_IG81
mov ecx, r13d
movzx r8, word ptr [rsi+2*rcx+0x0C]
cmp eax, r8d
@@ -335,7 +335,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
;; size=8 bbWeight=4 PerfScore 9.00
G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp eax, 123
- jne G_M36935_IG80
+ jne G_M36935_IG79
xor eax, eax
mov dword ptr [rsp+0xC0], eax
xor r10d, r10d
@@ -348,7 +348,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0x9C], r11d
lea ecx, [r13-0x01]
cmp ecx, r12d
- jae G_M36935_IG78
+ jae G_M36935_IG77
cmp word ptr [rsi+2*rcx+0x0C], 123
je SHORT G_M36935_IG19
;; size=69 bbWeight=4 PerfScore 48.00
@@ -382,14 +382,14 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov r8d, dword ptr [rsp+0xC4]
lea edx, [r8-0x30]
cmp edx, 10
- jae G_M36935_IG81
+ jae G_M36935_IG80
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG82
+ jbe G_M36935_IG81
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 125
- je G_M36935_IG45
+ je G_M36935_IG44
;; size=52 bbWeight=4 PerfScore 31.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
jmp SHORT G_M36935_IG24
@@ -400,7 +400,7 @@ G_M36935_IG23: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028
mov dword ptr [rsp+0xB8], edx
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG82
+ jbe G_M36935_IG81
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
mov edx, dword ptr [rsp+0xB8]
@@ -414,143 +414,133 @@ G_M36935_IG24: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=002
;; size=17 bbWeight=16 PerfScore 48.00
G_M36935_IG25: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r8d, 32
- jne SHORT G_M36935_IG29
- test r13d, r13d
- jl SHORT G_M36935_IG28
- ;; size=11 bbWeight=2 PerfScore 5.00
-G_M36935_IG26: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jne SHORT G_M36935_IG27
+ ;; size=6 bbWeight=2 PerfScore 2.50
+G_M36935_IG26: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG82
+ jbe G_M36935_IG81
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG26
- ;; size=27 bbWeight=15.84 PerfScore 79.20
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- mov ecx, r8d
- mov r8d, ecx
- jmp SHORT G_M36935_IG29
- ;; size=8 bbWeight=2 PerfScore 5.00
-G_M36935_IG28: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ ;; size=27 bbWeight=16 PerfScore 80.00
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ cmp r8d, 44
+ mov eax, dword ptr [rsp+0xC0]
+ jne G_M36935_IG39
+ ;; size=17 bbWeight=2 PerfScore 4.50
+G_M36935_IG28: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG82
+ jbe G_M36935_IG81
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
cmp r8d, 32
je SHORT G_M36935_IG28
- ;; size=27 bbWeight=0.16 PerfScore 0.80
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
- cmp r8d, 44
- jne G_M36935_IG41
- ;; size=10 bbWeight=2 PerfScore 2.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- inc r13d
- cmp r12d, r13d
- jbe G_M36935_IG82
- mov r8d, r13d
- movzx r8, word ptr [rsi+2*r8+0x0C]
- cmp r8d, 32
- je SHORT G_M36935_IG30
;; size=27 bbWeight=16 PerfScore 80.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG29: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r8d, 45
- jne SHORT G_M36935_IG32
+ jne SHORT G_M36935_IG30
mov dword ptr [rsp+0xBC], 1
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG82
+ jbe G_M36935_IG81
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
;; size=38 bbWeight=2 PerfScore 12.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+G_M36935_IG30: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
lea eax, [r8-0x30]
cmp eax, 10
- jae G_M36935_IG81
+ jae G_M36935_IG80
inc r13d
cmp r12d, r13d
- jbe G_M36935_IG82
- jmp SHORT G_M36935_IG34
- ;; size=27 bbWeight=2 PerfScore 10.50
-G_M36935_IG33: ; bbWeight=8, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ jbe G_M36935_IG81
+ test r13d, r13d
+ jge SHORT G_M36935_IG33
+ ;; size=30 bbWeight=2 PerfScore 9.00
+G_M36935_IG31: ; bbWeight=0.02, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG36
+ ;; size=2 bbWeight=0.02 PerfScore 0.04
+G_M36935_IG32: ; bbWeight=7.92, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
+ lea eax, [rax+4*rax]
+ lea eax, [r8+2*rax-0x30]
+ inc r13d
+ cmp r12d, r13d
+ jbe G_M36935_IG81
+ ;; size=20 bbWeight=7.92 PerfScore 23.76
+G_M36935_IG33: ; bbWeight=15.84, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ mov r8d, r13d
+ movzx r8, word ptr [rsi+2*r8+0x0C]
+ lea ecx, [r8-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG37
+ cmp eax, 0xD1FFAB1E
+ jl SHORT G_M36935_IG32
+ ;; size=25 bbWeight=15.84 PerfScore 83.16
+G_M36935_IG34: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jmp SHORT G_M36935_IG37
+ ;; size=2 bbWeight=2 PerfScore 4.00
+G_M36935_IG35: ; bbWeight=0.08, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref
lea eax, [rax+4*rax]
lea eax, [r8+2*rax-0x30]
mov dword ptr [rsp+0xC0], eax
inc r13d
cmp r12d, r13d
mov eax, dword ptr [rsp+0xC0]
- jbe G_M36935_IG82
- ;; size=34 bbWeight=8 PerfScore 40.00
-G_M36935_IG34: ; bbWeight=16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
+ jbe G_M36935_IG81
+ ;; size=34 bbWeight=0.08 PerfScore 0.40
+G_M36935_IG36: ; bbWeight=0.16, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
cmp r13d, r12d
- jae G_M36935_IG78
+ jae G_M36935_IG77
mov r8d, r13d
movzx r8, word ptr [rsi+2*r8+0x0C]
lea ecx, [r8-0x30]
cmp ecx, 9
- ja SHORT G_M36935_IG35
+ ja SHORT G_M36935_IG37
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG33
- ;; size=34 bbWeight=16 PerfScore 104.00
-G_M36935_IG35: ; bbWeight=2, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0028 {rbx rbp}, byref, isz
- cmp r8d, 32
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| aspnet.run.windows.x64.checked.mch |
16 |
2 |
14 |
0 |
-533 |
+1,155 |
| benchmarks.run.windows.x64.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+102 |
| benchmarks.run_pgo.windows.x64.checked.mch |
3 |
1 |
2 |
0 |
-68 |
+710 |
| benchmarks.run_tiered.windows.x64.checked.mch |
3 |
2 |
1 |
0 |
-178 |
+68 |
| coreclr_tests.run.windows.x64.checked.mch |
151 |
1 |
150 |
0 |
-152 |
+12,598 |
| libraries.crossgen2.windows.x64.checked.mch |
6 |
1 |
5 |
0 |
-15 |
+453 |
| libraries.pmi.windows.x64.checked.mch |
4 |
1 |
3 |
0 |
-14 |
+521 |
| libraries_tests.run.windows.x64.Release.mch |
229 |
2 |
227 |
0 |
-176 |
+19,865 |
| 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 |
9 |
7 |
2 |
0 |
-105 |
+208 |
|
426 |
17 |
408 |
1 |
-1,241 |
+35,782 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| aspnet.run.windows.x64.checked.mch |
129,290 |
61,702 |
67,588 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run.windows.x64.checked.mch |
27,926 |
4 |
27,922 |
0 (0.00%) |
0 (0.00%) |
| benchmarks.run_pgo.windows.x64.checked.mch |
103,179 |
50,327 |
52,852 |
4 (0.00%) |
0 (0.00%) |
| benchmarks.run_tiered.windows.x64.checked.mch |
53,510 |
36,872 |
16,638 |
1 (0.00%) |
0 (0.00%) |
| coreclr_tests.run.windows.x64.checked.mch |
574,381 |
341,481 |
232,900 |
3 (0.00%) |
1 (0.00%) |
| libraries.crossgen2.windows.x64.checked.mch |
243,730 |
15 |
243,715 |
0 (0.00%) |
1 (0.00%) |
| libraries.pmi.windows.x64.checked.mch |
309,227 |
6 |
309,221 |
0 (0.00%) |
1 (0.00%) |
| libraries_tests.run.windows.x64.Release.mch |
681,424 |
485,046 |
196,378 |
0 (0.00%) |
0 (0.00%) |
| librariestestsnotieredcompilation.run.windows.x64.Release.mch |
320,536 |
21,924 |
298,612 |
0 (0.00%) |
0 (0.00%) |
| realworld.run.windows.x64.checked.mch |
36,610 |
3 |
36,607 |
0 (0.00%) |
0 (0.00%) |
| smoke_tests.nativeaot.windows.x64.checked.mch |
32,388 |
11 |
32,377 |
0 (0.00%) |
0 (0.00%) |
|
2,512,201 |
997,391 |
1,514,810 |
8 (0.00%) |
3 (0.00%) |
jit-analyze output
aspnet.run.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 47041738 (overridden on cmd)
Total bytes of diff: 47042360 (overridden on cmd)
Total bytes of delta: 622 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
121 : 101728.dasm (3.61 % of base)
121 : 129143.dasm (3.61 % of base)
114 : 128104.dasm (3.28 % of base)
114 : 118073.dasm (3.28 % of base)
114 : 96960.dasm (3.28 % of base)
73 : 100631.dasm (3.73 % of base)
73 : 128573.dasm (3.73 % of base)
73 : 118493.dasm (3.73 % of base)
70 : 119373.dasm (2.43 % of base)
70 : 101927.dasm (2.42 % of base)
70 : 129219.dasm (2.43 % of base)
54 : 113953.dasm (1.76 % of base)
51 : 127902.dasm (1.75 % of base)
37 : 85154.dasm (1.30 % of base)
Top file improvements (bytes):
-276 : 116846.dasm (-8.62 % of base)
-257 : 117815.dasm (-8.20 % of base)
16 total files with Code Size differences (2 improved, 14 regressed), 0 unchanged.
Top method regressions (bytes):
121 (3.61 % of base) : 101728.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
121 (3.61 % of base) : 129143.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
114 (3.28 % of base) : 128104.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
114 (3.28 % of base) : 118073.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
114 (3.28 % of base) : 96960.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
73 (3.73 % of base) : 100631.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
73 (3.73 % of base) : 128573.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
73 (3.73 % of base) : 118493.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
70 (2.43 % of base) : 119373.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
70 (2.42 % of base) : 101927.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
70 (2.43 % of base) : 129219.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
54 (1.76 % of base) : 113953.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
51 (1.75 % of base) : 127902.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
37 (1.30 % of base) : 85154.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
Top method improvements (bytes):
-276 (-8.62 % of base) : 116846.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
-257 (-8.20 % of base) : 117815.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
Top method regressions (percentages):
73 (3.73 % of base) : 100631.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
73 (3.73 % of base) : 128573.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
73 (3.73 % of base) : 118493.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
121 (3.61 % of base) : 101728.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
121 (3.61 % of base) : 129143.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
114 (3.28 % of base) : 128104.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
114 (3.28 % of base) : 118073.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
114 (3.28 % of base) : 96960.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
70 (2.43 % of base) : 119373.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
70 (2.43 % of base) : 129219.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
70 (2.42 % of base) : 101927.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
54 (1.76 % of base) : 113953.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
51 (1.75 % of base) : 127902.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
37 (1.30 % of base) : 85154.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
Top method improvements (percentages):
-276 (-8.62 % of base) : 116846.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
-257 (-8.20 % of base) : 117815.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
16 total methods with Code Size differences (2 improved, 14 regressed).
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: 8742508 (overridden on cmd)
Total bytes of diff: 8742610 (overridden on cmd)
Total bytes of delta: 102 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
51 : 4482.dasm (2.05 % of base)
51 : 5014.dasm (1.68 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
51 (2.05 % of base) : 4482.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
51 (1.68 % of base) : 5014.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
51 (2.05 % of base) : 4482.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
51 (1.68 % of base) : 5014.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 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: 36236407 (overridden on cmd)
Total bytes of diff: 36237049 (overridden on cmd)
Total bytes of delta: 642 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
355 : 50666.dasm (31.84 % of base)
355 : 50660.dasm (31.84 % of base)
Top file improvements (bytes):
-68 : 80126.dasm (-7.75 % of base)
3 total files with Code Size differences (1 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
355 (31.84 % of base) : 50666.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
355 (31.84 % of base) : 50660.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
Top method improvements (bytes):
-68 (-7.75 % of base) : 80126.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
355 (31.84 % of base) : 50666.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
355 (31.84 % of base) : 50660.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
Top method improvements (percentages):
-68 (-7.75 % of base) : 80126.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
3 total methods with Code Size differences (1 improved, 2 regressed).
benchmarks.run_tiered.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: 12416111 (overridden on cmd)
Total bytes of diff: 12416001 (overridden on cmd)
Total bytes of delta: -110 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
68 : 24586.dasm (2.15 % of base)
Top file improvements (bytes):
-126 : 33472.dasm (-13.95 % of base)
-52 : 46672.dasm (-6.62 % of base)
3 total files with Code Size differences (2 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
68 (2.15 % of base) : 24586.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
Top method improvements (bytes):
-126 (-13.95 % of base) : 33472.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-52 (-6.62 % of base) : 46672.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
Top method regressions (percentages):
68 (2.15 % of base) : 24586.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
Top method improvements (percentages):
-126 (-13.95 % of base) : 33472.dasm - LUDecomp:DoLUIteration(double[][],double[],double[][][],double[][],int):long (Tier1-OSR)
-52 (-6.62 % of base) : 46672.dasm - JetStream.Statistics:findOptimalSegmentationInternal(float[][],int[][],double[],JetStream.SampleVarianceUpperTriangularMatrix,int) (Tier1-OSR)
3 total methods with Code Size differences (2 improved, 1 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: 393193248 (overridden on cmd)
Total bytes of diff: 393205694 (overridden on cmd)
Total bytes of delta: 12446 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
355 : 230510.dasm (31.84 % of base)
112 : 227773.dasm (2.61 % of base)
112 : 336480.dasm (2.61 % of base)
112 : 363077.dasm (2.61 % of base)
112 : 365964.dasm (3.05 % of base)
112 : 23910.dasm (2.61 % of base)
112 : 276218.dasm (2.97 % of base)
112 : 370676.dasm (3.05 % of base)
112 : 336477.dasm (2.61 % of base)
112 : 274572.dasm (2.61 % of base)
112 : 336155.dasm (2.61 % of base)
112 : 336472.dasm (2.61 % of base)
110 : 234313.dasm (2.55 % of base)
110 : 265858.dasm (2.55 % of base)
110 : 288476.dasm (2.55 % of base)
110 : 289662.dasm (2.55 % of base)
110 : 1619.dasm (2.55 % of base)
110 : 249631.dasm (2.55 % of base)
110 : 325268.dasm (2.55 % of base)
110 : 337542.dasm (2.55 % of base)
Top file improvements (bytes):
-152 : 281444.dasm (-37.25 % of base)
59 total files with Code Size differences (1 improved, 58 regressed), 0 unchanged.
Top method regressions (bytes):
355 (31.84 % of base) : 230510.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
112 (3.05 % of base) : 365964.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (2.97 % of base) : 276218.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (3.05 % of base) : 370676.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (2.61 % of base) : 227773.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 336480.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 363077.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 23910.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 336477.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 274572.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 336155.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 336472.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 234313.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 265858.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 288476.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 289662.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 1619.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 249631.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 325268.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 337542.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (bytes):
-152 (-37.25 % of base) : 281444.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
Top method regressions (percentages):
355 (31.84 % of base) : 230510.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier1-OSR)
112 (3.05 % of base) : 365964.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (3.05 % of base) : 370676.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (2.97 % of base) : 276218.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
112 (2.61 % of base) : 227773.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 336480.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 363077.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 23910.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 336477.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 274572.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 336155.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
112 (2.61 % of base) : 336472.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 234313.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 289662.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 1619.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 337542.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 7910.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 235005.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 247356.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
110 (2.55 % of base) : 360080.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
Top method improvements (percentages):
-152 (-37.25 % of base) : 281444.dasm - Runtime_88091:Problem(System.Collections.Generic.List`1[NamedSet][]) (Tier1-OSR)
libraries.crossgen2.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: 39485973 (overridden on cmd)
Total bytes of diff: 39486411 (overridden on cmd)
Total bytes of delta: 438 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
109 : 101633.dasm (29.38 % of base)
104 : 222276.dasm (37.68 % of base)
104 : 220903.dasm (37.68 % of base)
68 : 30816.dasm (3.21 % of base)
68 : 34799.dasm (2.96 % of base)
Top file improvements (bytes):
-15 : 98514.dasm (-21.13 % of base)
6 total files with Code Size differences (1 improved, 5 regressed), 0 unchanged.
Top method regressions (bytes):
109 (29.38 % of base) : 101633.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
104 (37.68 % of base) : 222276.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
104 (37.68 % of base) : 220903.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
68 (3.21 % of base) : 30816.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
68 (2.96 % of base) : 34799.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (bytes):
-15 (-21.13 % of base) : 98514.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
104 (37.68 % of base) : 222276.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
104 (37.68 % of base) : 220903.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
109 (29.38 % of base) : 101633.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
68 (3.21 % of base) : 30816.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
68 (2.96 % of base) : 34799.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method improvements (percentages):
-15 (-21.13 % of base) : 98514.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
6 total methods with Code Size differences (1 improved, 5 regressed).
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: 61661946 (overridden on cmd)
Total bytes of diff: 61662453 (overridden on cmd)
Total bytes of delta: 507 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
311 : 105579.dasm (55.64 % of base)
105 : 272465.dasm (31.07 % of base)
105 : 268779.dasm (31.07 % of base)
Top file improvements (bytes):
-14 : 102175.dasm (-17.72 % of base)
4 total files with Code Size differences (1 improved, 3 regressed), 0 unchanged.
Top method regressions (bytes):
311 (55.64 % of base) : 105579.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
105 (31.07 % of base) : 272465.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
105 (31.07 % of base) : 268779.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
Top method improvements (bytes):
-14 (-17.72 % of base) : 102175.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
Top method regressions (percentages):
311 (55.64 % of base) : 105579.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
105 (31.07 % of base) : 272465.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
105 (31.07 % of base) : 268779.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
Top method improvements (percentages):
-14 (-17.72 % of base) : 102175.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
4 total methods with Code Size differences (1 improved, 3 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: 282113061 (overridden on cmd)
Total bytes of diff: 282132750 (overridden on cmd)
Total bytes of delta: 19689 (0.01 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
133 : 253418.dasm (2.98 % of base)
133 : 294691.dasm (2.96 % of base)
126 : 183586.dasm (3.35 % of base)
126 : 240011.dasm (3.29 % of base)
126 : 296546.dasm (3.35 % of base)
126 : 317866.dasm (3.35 % of base)
126 : 378017.dasm (3.35 % of base)
126 : 389713.dasm (3.35 % of base)
126 : 459986.dasm (3.37 % of base)
126 : 511683.dasm (3.29 % of base)
126 : 570781.dasm (3.35 % of base)
126 : 589796.dasm (3.35 % of base)
126 : 666592.dasm (3.35 % of base)
126 : 302185.dasm (3.35 % of base)
126 : 185986.dasm (3.34 % of base)
126 : 308880.dasm (3.37 % of base)
126 : 322894.dasm (3.35 % of base)
126 : 352404.dasm (3.29 % of base)
126 : 365888.dasm (3.35 % of base)
126 : 383065.dasm (3.35 % of base)
Top file improvements (bytes):
-103 : 299020.dasm (-2.82 % of base)
-73 : 295517.dasm (-2.31 % of base)
53 total files with Code Size differences (2 improved, 51 regressed), 0 unchanged.
Top method regressions (bytes):
133 (2.98 % of base) : 253418.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
133 (2.96 % of base) : 294691.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
126 (3.35 % of base) : 183586.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.29 % of base) : 240011.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 296546.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 317866.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 378017.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 389713.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.37 % of base) : 459986.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.29 % of base) : 511683.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 570781.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 589796.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 666592.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 302185.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.34 % of base) : 185986.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.37 % of base) : 308880.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 322894.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.29 % of base) : 352404.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 365888.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 383065.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
Top method improvements (bytes):
-103 (-2.82 % of base) : 299020.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-73 (-2.31 % of base) : 295517.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
Top method regressions (percentages):
126 (3.37 % of base) : 308880.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.37 % of base) : 459986.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 389713.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 365888.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 383065.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 296546.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 317866.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 589796.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 302185.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 322894.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 488980.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 521061.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 208274.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 183586.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 378017.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 411621.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 570781.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.35 % of base) : 666592.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.34 % of base) : 185986.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
126 (3.34 % of base) : 538444.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
Top method improvements (percentages):
-103 (-2.82 % of base) : 299020.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
-73 (-2.31 % of base) : 295517.dasm - System.Globalization.Tests.CompareInfoCompareTests:TestHiraganaAndKatakana(int[],int[]):this (Tier1-OSR)
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: 137067068 (overridden on cmd)
Total bytes of diff: 137067068 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 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: 14130922 (overridden on cmd)
Total bytes of diff: 14131024 (overridden on cmd)
Total bytes of delta: 102 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
51 : 2137.dasm (2.05 % of base)
51 : 2363.dasm (1.68 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
51 (2.05 % of base) : 2137.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
51 (1.68 % of base) : 2363.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
51 (2.05 % of base) : 2137.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
51 (1.68 % of base) : 2363.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
smoke_tests.nativeaot.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: 5083011 (overridden on cmd)
Total bytes of diff: 5083114 (overridden on cmd)
Total bytes of delta: 103 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
104 : 8238.dasm (38.81 % of base)
104 : 7602.dasm (38.81 % of base)
Top file improvements (bytes):
-15 : 16686.dasm (-0.63 % of base)
-15 : 5122.dasm (-0.62 % of base)
-15 : 19240.dasm (-0.63 % of base)
-15 : 1592.dasm (-0.63 % of base)
-15 : 21973.dasm (-0.63 % of base)
-15 : 11775.dasm (-0.69 % of base)
-15 : 6462.dasm (-0.66 % of base)
9 total files with Code Size differences (7 improved, 2 regressed), 0 unchanged.
Top method regressions (bytes):
104 (38.81 % of base) : 8238.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
104 (38.81 % of base) : 7602.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
Top method improvements (bytes):
-15 (-0.69 % of base) : 11775.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-15 (-0.66 % of base) : 6462.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-15 (-0.63 % of base) : 16686.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-15 (-0.62 % of base) : 5122.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-15 (-0.63 % of base) : 19240.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-15 (-0.63 % of base) : 1592.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-15 (-0.63 % of base) : 21973.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
Top method regressions (percentages):
104 (38.81 % of base) : 8238.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
104 (38.81 % of base) : 7602.dasm - Interop+Kernel32:GetLeadByteRanges(int,ubyte[]):int (FullOpts)
Top method improvements (percentages):
-15 (-0.69 % of base) : 11775.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-15 (-0.66 % of base) : 6462.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
-15 (-0.63 % of base) : 1592.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-15 (-0.63 % of base) : 16686.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-15 (-0.63 % of base) : 19240.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-15 (-0.63 % of base) : 21973.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
-15 (-0.62 % of base) : 5122.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
9 total methods with Code Size differences (7 improved, 2 regressed).