Assembly Diffs
linux arm
Diffs are based on 2,053,494 contexts (830,101 MinOpts, 1,223,393 FullOpts).
MISSED contexts: base: 71,368 (3.36%), diff: 71,369 (3.36%)
Overall (+34,456 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
14,772,250 |
+140 |
| benchmarks.run_pgo.linux.arm.checked.mch |
68,605,354 |
+118 |
| benchmarks.run_tiered.linux.arm.checked.mch |
18,108,580 |
+104 |
| coreclr_tests.run.linux.arm.checked.mch |
321,785,900 |
+10,384 |
| libraries.pmi.linux.arm.checked.mch |
49,828,568 |
+204 |
| libraries_tests.run.linux.arm.Release.mch |
244,096,990 |
+23,358 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
94,425,864 |
+8 |
| realworld.run.linux.arm.checked.mch |
13,618,802 |
+140 |
FullOpts (+34,456 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.linux.arm.checked.mch |
14,410,744 |
+140 |
| benchmarks.run_pgo.linux.arm.checked.mch |
55,931,552 |
+118 |
| benchmarks.run_tiered.linux.arm.checked.mch |
10,724,598 |
+104 |
| coreclr_tests.run.linux.arm.checked.mch |
109,313,464 |
+10,384 |
| libraries.pmi.linux.arm.checked.mch |
49,722,344 |
+204 |
| libraries_tests.run.linux.arm.Release.mch |
122,244,482 |
+23,358 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
84,355,126 |
+8 |
| realworld.run.linux.arm.checked.mch |
13,183,502 |
+140 |
Example diffs
benchmarks.run.linux.arm.checked.mch
+70 (+3.09%) : 4904.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 -> r5 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> r5 this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> [sp+0x48] class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T25] ( 5, 15 ) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T52] ( 4, 7 ) struct ( 8) [sp+0xAC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T70] ( 3, 7 ) ref -> [sp+0x44] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r10 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [sp+0x84]
-; V07 loc3 [V07,T05] ( 12, 62 ) int -> [sp+0x80]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r10 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [sp+0x84]
+; V07 loc3 [V07,T05] ( 15, 62 ) int -> [sp+0x80]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [sp+0x7C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T07] ( 7, 48 ) int -> r9
@@ -25,7 +25,7 @@
;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V15 loc11 [V15,T09] ( 10, 38 ) int -> r8
; V16 loc12 [V16,T43] ( 3, 12 ) ushort -> r3
-; V17 loc13 [V17,T31] ( 7, 14 ) int -> r1
+; V17 loc13 [V17,T31] ( 7, 14 ) int -> lr
; V18 loc14 [V18,T38] ( 3, 12 ) ref -> [sp+0x3C] class-hnd spill-single-def <<unknown class>>
; V19 loc15 [V19 ] ( 4, 16 ) int -> [sp+0x78] do-not-enreg[X] addr-exposed ld-addr-op
; V20 loc16 [V20,T71] ( 3, 6 ) ref -> [sp+0x38] class-hnd spill-single-def <<unknown class>>
@@ -202,8 +202,8 @@
; V191 cse3 [V191,T74] ( 3, 6 ) int -> r1 "CSE - conservative"
; V192 cse4 [V192,T75] ( 3, 6 ) int -> r2 "CSE - conservative"
; V193 cse5 [V193,T87] ( 3, 1.50) int -> r2 "CSE - conservative"
-; V194 cse6 [V194,T02] ( 19,144 ) int -> r4 "CSE - aggressive"
-; V195 cse7 [V195,T04] ( 15,120 ) byref -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V194 cse6 [V194,T03] ( 20,128.16) int -> r4 "CSE - aggressive"
+; V195 cse7 [V195,T04] ( 16,120 ) byref -> [sp+0x14] spill-single-def "CSE - aggressive"
; V196 cse8 [V196,T06] ( 21, 58 ) int -> r4 "CSE - aggressive"
; V197 cse9 [V197,T12] ( 11, 29 ) byref -> [sp+0x10] multi-def "CSE - moderate"
;
@@ -225,7 +225,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr r8, [sp+0xB0]
str r8, [sp+0x4C] // [V187 tmp166]
cmp r6, 0
- beq G_M36935_IG84
+ beq G_M36935_IG88
cmp r7, 0
bne SHORT G_M36935_IG04
;; size=18 bbWeight=1 PerfScore 6.00
@@ -263,7 +263,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000400000000000000000 {V04}, gcref
; gcrRegs -[r0]
ldr r4, [r6+0x04]
cmp r4, r10
- bls G_M36935_IG78
+ bls G_M36935_IG82
;; size=8 bbWeight=8 PerfScore 24.00
G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
add r3, r6, 8
@@ -312,10 +312,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
; gcr arg pop 0
mov r8, r0
cmp r8, 0
- blt G_M36935_IG79
+ blt G_M36935_IG83
ldr r3, [sp+0x50] // [V130 tmp109]
cmp r8, r3
- bhi G_M36935_IG91
+ bhi G_M36935_IG95
cmp r8, 0
bge SHORT G_M36935_IG10
movs r0, 0
@@ -357,7 +357,7 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr r2, [r5+0x04]
ldr r1, [r0+0x04]
cmp r2, r1
- bhi G_M36935_IG91
+ bhi G_M36935_IG95
ldr r0, [r0]
lsl lr, r2, 1
add lr, r0
@@ -384,7 +384,7 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
; gcr arg pop 0
ldr r2, [sp+0x70] // [V63 tmp42]
cmp r8, r2
- bhi G_M36935_IG92
+ bhi G_M36935_IG96
lsl r2, r8, 1
ldr r0, [sp+0x30] // [V64 tmp43]
; byrRegs +[r0]
@@ -402,14 +402,14 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
str r0, [r5+0x04]
add r10, r8
cmp r10, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG87
lsl r0, r10, 1
ldr r8, [sp+0x14] // [V195 cse7]
; byrRegs +[r8]
ldrh r3, [r8+r0]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1
ldrh r2, [r8+r0]
cmp r3, r2
@@ -450,7 +450,7 @@ G_M36935_IG19: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V195 V1
; byrRegs +[r8]
; GC ptr vars +{V04 V12 V195 V197}
cmp r3, 123
- bne G_M36935_IG85
+ bne G_M36935_IG89
str r2, [sp+0x84] // [V06 loc2]
movs r3, 0
str r3, [sp+0x80] // [V07 loc3]
@@ -463,7 +463,7 @@ G_M36935_IG19: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V195 V1
str r12, [sp+0x54] // [V122 tmp101]
add r0, r10, -1
cmp r0, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG87
lsl r0, r10, 1
subs r0, r0, 2
ldrh r0, [r8+r0]
@@ -499,175 +499,205 @@ G_M36935_IG23: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
; gcr arg pop 0
sub r9, r9, 48
cmp r9, 10
- bhs G_M36935_IG86
+ bhs G_M36935_IG90
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1
ldrh r0, [r8+r0]
- cmp r0, 125
- beq G_M36935_IG43
- ;; size=48 bbWeight=4 PerfScore 56.00
+ mov r3, r0
+ cmp r3, 125
+ beq G_M36935_IG47
+ ;; size=50 bbWeight=4 PerfScore 60.00
G_M36935_IG24: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
b SHORT G_M36935_IG26
;; size=2 bbWeight=2 PerfScore 2.00
G_M36935_IG25: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- movs r3, 10
- mul r3, r9, r3
- adds r0, r3, r0
- sub r9, r0, 48
+ movs r0, 10
+ mul r0, r9, r0
+ adds r3, r0, r3
+ sub r9, r3, 48
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ ldrh r3, [r8+r0]
;; size=30 bbWeight=8 PerfScore 72.00
G_M36935_IG26: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- sub r3, r0, 48
- cmp r3, 9
+ sub r0, r3, 48
+ cmp r0, 9
bhi SHORT G_M36935_IG27
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r9, r3
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r9, r0
blt SHORT G_M36935_IG25
;; size=20 bbWeight=16 PerfScore 112.00
G_M36935_IG27: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 32
+ cmp r3, 32
bne SHORT G_M36935_IG29
;; size=4 bbWeight=2 PerfScore 4.00
G_M36935_IG28: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
+ bls G_M36935_IG91
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
+ cmp r3, 32
beq SHORT G_M36935_IG28
;; size=22 bbWeight=16 PerfScore 112.00
G_M36935_IG29: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 44
- ldr r2, [sp+0x80] // [V07 loc3]
- bne SHORT G_M36935_IG36
+ cmp r3, 44
+ mov r1, r3
+ bne SHORT G_M36935_IG33
;; size=6 bbWeight=2 PerfScore 6.00
G_M36935_IG30: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
+ bls G_M36935_IG91
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
+ cmp r3, 32
beq SHORT G_M36935_IG30
;; size=22 bbWeight=16 PerfScore 112.00
G_M36935_IG31: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 45
+ cmp r3, 45
bne SHORT G_M36935_IG32
movs r1, 1
str r1, [sp+0x7C] // [V08 loc4]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ bls G_M36935_IG91
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
;; size=26 bbWeight=2 PerfScore 18.00
G_M36935_IG32: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- subs r0, 48
- mov r2, r0
- cmp r2, 10
- bhs G_M36935_IG86
+ subs r3, 48
+ cmp r3, 10
+ bhs G_M36935_IG90
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- ;; size=20 bbWeight=2 PerfScore 14.00
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r10, r4
- bhs G_M36935_IG83
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- sub r1, r0, 48
- cmp r1, 9
- bhi SHORT G_M36935_IG34
...
+70 (+3.40%) : 4896.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,T36] ( 5, 15 ) ref -> [sp+0x34] class-hnd single-def <System.String>
; V03 arg3 [V03,T55] ( 4, 7 ) struct ( 8) [sp+0x84] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [sp+0x30] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r10 ld-addr-op
-; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [sp+0x5C]
-; V07 loc3 [V07,T08] ( 12, 242 ) int -> [sp+0x58]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r10 ld-addr-op
+; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [sp+0x5C]
+; V07 loc3 [V07,T08] ( 15, 242 ) int -> [sp+0x58]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [sp+0x54]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T16] ( 7, 48 ) int -> r9
@@ -25,7 +25,7 @@
;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V15 loc11 [V15,T25] ( 6, 24 ) int -> r8
; V16 loc12 [V16,T48] ( 3, 12 ) ushort -> r3
-; V17 loc13 [V17,T42] ( 7, 14 ) int -> r1
+; V17 loc13 [V17,T42] ( 7, 14 ) int -> lr
; V18 loc14 [V18,T46] ( 3, 12 ) ref -> r0 class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [sp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V20 loc16 [V20,T26] ( 3, 24 ) ref -> [sp+0x28] class-hnd spill-single-def <<unknown class>>
@@ -159,8 +159,8 @@
; V148 cse3 [V148,T47] ( 3, 12 ) ref -> r1 "CSE - conservative"
; V149 cse4 [V149,T49] ( 3, 12 ) int -> r3 "CSE - conservative"
; V150 cse5 [V150,T03] ( 6, 416 ) int -> r4 "CSE - aggressive"
-; V151 cse6 [V151,T12] ( 19, 144 ) int -> r4 "CSE - aggressive"
-; V152 cse7 [V152,T13] ( 15, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V151 cse6 [V151,T12] ( 20, 128.16) int -> r4 "CSE - moderate"
+; V152 cse7 [V152,T13] ( 16, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V153 cse8 [V153,T10] ( 4, 192 ) int -> r3 "CSE - moderate"
; V154 cse9 [V154,T20] ( 4, 32 ) int -> r3 "CSE - moderate"
;
@@ -182,7 +182,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {},
ldr r8, [sp+0x88]
str r8, [sp+0x38] // [V141 tmp119]
cmp r7, 0
- beq G_M4730_IG76
+ beq G_M4730_IG80
cmp r6, 0
bne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 6.00
@@ -220,7 +220,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR
; gcrRegs -[r0]
ldr r4, [r7+0x04]
cmp r4, r10
- bls G_M4730_IG71
+ bls G_M4730_IG75
;; size=8 bbWeight=8 PerfScore 24.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
str r7, [sp+0x34] // [V02 arg2]
@@ -272,10 +272,10 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
; gcr arg pop 0
mov r8, r0
cmp r8, 0
- blt G_M4730_IG73
+ blt G_M4730_IG77
ldr r3, [sp+0x3C] // [V98 tmp76]
cmp r8, r3
- bhi G_M4730_IG87
+ bhi G_M4730_IG91
cmp r8, 0
bge SHORT G_M4730_IG10
movs r0, 0
@@ -305,14 +305,14 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
; gcr arg pop 0
add r10, r8
cmp r10, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG79
lsl r0, r10, 1
ldr r8, [sp+0x14] // [V152 cse7]
; byrRegs +[r8]
ldrh r3, [r8+r0]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1
ldrh r2, [r8+r0]
cmp r3, r2
@@ -360,7 +360,7 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152
; byrRegs +[r8]
; GC ptr vars +{V13 V152}
cmp r3, 123
- bne G_M4730_IG77
+ bne G_M4730_IG81
str r2, [sp+0x5C] // [V06 loc2]
movs r3, 0
str r3, [sp+0x58] // [V07 loc3]
@@ -373,7 +373,7 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152
str r12, [sp+0x40] // [V88 tmp66]
add r0, r10, -1
cmp r0, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG79
lsl r0, r10, 1
subs r0, r0, 2
ldrh r0, [r8+r0]
@@ -409,175 +409,205 @@ G_M4730_IG19: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8},
; gcr arg pop 0
sub r9, r9, 48
cmp r9, 10
- bhs G_M4730_IG78
+ bhs G_M4730_IG82
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1
ldrh r0, [r8+r0]
- cmp r0, 125
- beq G_M4730_IG39
- ;; size=48 bbWeight=4 PerfScore 56.00
+ mov r3, r0
+ cmp r3, 125
+ beq G_M4730_IG43
+ ;; size=50 bbWeight=4 PerfScore 60.00
G_M4730_IG20: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
b SHORT G_M4730_IG22
;; size=2 bbWeight=2 PerfScore 2.00
G_M4730_IG21: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- movs r3, 10
- mul r3, r9, r3
- adds r0, r3, r0
- sub r9, r0, 48
+ movs r0, 10
+ mul r0, r9, r0
+ adds r3, r0, r3
+ sub r9, r3, 48
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ ldrh r3, [r8+r0]
;; size=30 bbWeight=8 PerfScore 72.00
G_M4730_IG22: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- sub r3, r0, 48
- cmp r3, 9
+ sub r0, r3, 48
+ cmp r0, 9
bhi SHORT G_M4730_IG23
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r9, r3
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r9, r0
blt SHORT G_M4730_IG21
;; size=20 bbWeight=16 PerfScore 112.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 32
+ cmp r3, 32
bne SHORT G_M4730_IG25
;; size=4 bbWeight=2 PerfScore 4.00
G_M4730_IG24: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
+ bls G_M4730_IG83
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
+ cmp r3, 32
beq SHORT G_M4730_IG24
;; size=22 bbWeight=16 PerfScore 112.00
G_M4730_IG25: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 44
- ldr r2, [sp+0x58] // [V07 loc3]
- bne SHORT G_M4730_IG32
+ cmp r3, 44
+ mov r1, r3
+ bne SHORT G_M4730_IG29
;; size=6 bbWeight=2 PerfScore 6.00
G_M4730_IG26: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
+ bls G_M4730_IG83
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
+ cmp r3, 32
beq SHORT G_M4730_IG26
;; size=22 bbWeight=16 PerfScore 112.00
G_M4730_IG27: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 45
+ cmp r3, 45
bne SHORT G_M4730_IG28
movs r1, 1
str r1, [sp+0x54] // [V08 loc4]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ bls G_M4730_IG83
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
;; size=26 bbWeight=2 PerfScore 18.00
G_M4730_IG28: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- subs r0, 48
- mov r2, r0
- cmp r2, 10
- bhs G_M4730_IG78
+ subs r3, 48
+ cmp r3, 10
+ bhs G_M4730_IG82
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
- ;; size=20 bbWeight=2 PerfScore 14.00
-G_M4730_IG29: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r10, r4
- bhs G_M4730_IG75
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- sub r1, r0, 48
- cmp r1, 9
- bhi SHORT G_M4730_IG30
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r2, r1
- blt SHORT G_M4730_IG35
- ;; size=34 bbWeight=16 PerfScore 176.00
-G_M4730_IG30: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 32
- bne SHORT G_M4730_IG32
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M4730_IG31: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- add r10, r10, 1
- cmp r4, r10
- bls G_M4730_IG79
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
- beq SHORT G_M4730_IG31
- ;; size=22 bbWeight=16 PerfScore 112.00
-G_M4730_IG32: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 125
- beq SHORT G_M4730_IG34
- cmp r0, 58
- bne G_M4730_IG80
- mov r1, r10
...
benchmarks.run_pgo.linux.arm.checked.mch
+60 (+2.33%) : 6243.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
@@ -8,14 +8,14 @@
; 29 inlinees with PGO data; 37 single block inlinees; 28 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 49,133.50) byref -> [sp+0x54] this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> [sp+0x54] this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> r7 class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T25] ( 5, 15 ) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T52] ( 4, 7 ) struct ( 8) [sp+0xC4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T70] ( 3, 7 ) ref -> [sp+0x50] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r10 ld-addr-op
-; V06 loc2 [V06,T01] ( 32,260 ) ushort -> [sp+0x9C]
-; V07 loc3 [V07,T05] ( 12, 62 ) int -> [sp+0x98]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r10 ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [sp+0x9C]
+; V07 loc3 [V07,T05] ( 15, 62 ) int -> [sp+0x98]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [sp+0x94]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T07] ( 7, 48 ) int -> r8
@@ -223,8 +223,8 @@
; V212 cse3 [V212,T74] ( 3, 6 ) int -> r1 "CSE - conservative"
; V213 cse4 [V213,T75] ( 3, 6 ) int -> r0 "CSE - conservative"
; V214 cse5 [V214,T87] ( 3, 1.50) int -> r1 "CSE - conservative"
-; V215 cse6 [V215,T02] ( 19,144 ) int -> r4 "CSE - aggressive"
-; V216 cse7 [V216,T04] ( 15,120 ) byref -> [sp+0x20] spill-single-def "CSE - aggressive"
+; V215 cse6 [V215,T03] ( 20,128.16) int -> r4 "CSE - aggressive"
+; V216 cse7 [V216,T04] ( 16,120 ) byref -> [sp+0x20] spill-single-def "CSE - aggressive"
; V217 cse8 [V217,T06] ( 21, 58 ) int -> r8 "CSE - aggressive"
; V218 cse9 [V218,T12] ( 11, 29 ) byref -> [sp+0x1C] multi-def "CSE - moderate"
; TEMP_02 ref -> [r11-0xA4]
@@ -250,7 +250,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr r8, [sp+0xC8]
str r8, [sp+0x58] // [V208 tmp187]
cmp r6, 0
- beq G_M36935_IG75
+ beq G_M36935_IG78
cmp r7, 0
bne SHORT G_M36935_IG04
;; size=18 bbWeight=1 PerfScore 6.00
@@ -288,7 +288,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000400000000000000000 {V04}, gcref
; gcrRegs -[r0]
ldr r4, [r6+0x04]
cmp r4, r10
- bls G_M36935_IG70
+ bls G_M36935_IG73
;; size=8 bbWeight=8 PerfScore 24.00
G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
add lr, r6, 8
@@ -303,7 +303,7 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
sub r3, r4, r10
str r3, [sp+0x88] // [V30 tmp9]
cmp r3, 0
- blt G_M36935_IG76
+ blt G_M36935_IG79
;; size=32 bbWeight=4 PerfScore 36.00
G_M36935_IG08: ; bbWeight=4, gcVars=000000400000000008000010 {V04 V31 V216}, gcrefRegs=00C0 {r6 r7}, byrefRegs=1020 {r5 r12}, gcvars, byref, isz
; byrRegs -[lr]
@@ -327,10 +327,10 @@ G_M36935_IG08: ; bbWeight=4, gcVars=000000400000000008000010 {V04 V31 V21
mov r3, r0
str r3, [sp+0x90] // [V15 loc11]
cmp r3, 0
- blt G_M36935_IG71
+ blt G_M36935_IG74
ldr r2, [sp+0x5C] // [V151 tmp130]
cmp r3, r2
- bhi G_M36935_IG94
+ bhi G_M36935_IG97
ldr r0, [r5+0x04]
ldr r1, [r5+0x0C]
subs r1, r1, r3
@@ -359,7 +359,7 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr r0, [r5+0x04]
ldr r1, [r2+0x04]
cmp r0, r1
- bhi G_M36935_IG94
+ bhi G_M36935_IG97
ldr r2, [r2]
lsl r12, r0, 1
add r12, r2
@@ -369,12 +369,12 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
subs r1, r1, r0
str r1, [sp+0x84] // [V68 tmp47]
cmp r1, 0
- blt G_M36935_IG77
+ blt G_M36935_IG80
;; size=42 bbWeight=4 PerfScore 60.00
G_M36935_IG11: ; bbWeight=4, gcVars=000000400000000810001010 {V04 V69 V150 V216 V218}, gcrefRegs=00C0 {r6 r7}, byrefRegs=1020 {r5 r12}, gcvars, byref, isz
; byrRegs -[r2 lr]
cmp r3, r1
- bhi G_M36935_IG95
+ bhi G_M36935_IG98
lsls r2, r3, 1
mov r0, r12
; byrRegs +[r0]
@@ -394,14 +394,14 @@ G_M36935_IG11: ; bbWeight=4, gcVars=000000400000000810001010 {V04 V69 V15
str r0, [r5+0x04]
add r10, r3
cmp r10, r4
- bhs G_M36935_IG74
+ bhs G_M36935_IG77
lsl r0, r10, 1
ldr r2, [sp+0x20] // [V216 cse7]
; byrRegs +[r2]
ldrh r3, [r2+r0]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl r0, r10, 1
ldrh lr, [r2+r0]
cmp r3, lr
@@ -442,19 +442,19 @@ G_M36935_IG15: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V216 V2
; byrRegs +[r2]
; GC ptr vars +{V04 V12 V216 V218}
cmp r3, 123
- bne G_M36935_IG88
+ bne G_M36935_IG91
movs r3, 0
mov r12, 0
movs r1, 0
movs r0, 0
add r8, r10, -1
cmp r8, r4
- bhs G_M36935_IG74
+ bhs G_M36935_IG77
lsl r8, r10, 1
sub r8, r8, 2
ldrh r8, [r2+r8]
cmp r8, 123
- bne G_M36935_IG78
+ bne G_M36935_IG81
cmp lr, 123
beq SHORT G_M36935_IG18
;; size=52 bbWeight=4 PerfScore 64.00
@@ -462,14 +462,14 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r
; byrRegs +[r1]
sub r8, lr, 48
cmp r8, 10
- bhs G_M36935_IG89
+ bhs G_M36935_IG92
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl lr, r10, 1
ldrh lr, [r2+lr]
cmp lr, 125
- beq G_M36935_IG37
+ beq G_M36935_IG40
;; size=38 bbWeight=4 PerfScore 40.00
G_M36935_IG17: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
b SHORT G_M36935_IG20
@@ -483,7 +483,7 @@ G_M36935_IG18: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r
str r12, [sp+0x94] // [V08 loc4]
str r1, [sp+0x28] // [V142 tmp121]
; GC ptr vars +{V142}
- b SHORT G_M36935_IG79
+ b SHORT G_M36935_IG82
;; size=18 bbWeight=2 PerfScore 14.00
G_M36935_IG19: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
; GC ptr vars -{V00 V12 V142}
@@ -493,7 +493,7 @@ G_M36935_IG19: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r
sub r8, lr, 48
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl lr, r10, 1
ldrh lr, [r2+lr]
mov r9, lr
@@ -516,7 +516,7 @@ G_M36935_IG21: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r
G_M36935_IG22: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl lr, r10, 1
ldrh lr, [r2+lr]
mov r9, lr
@@ -525,12 +525,12 @@ G_M36935_IG22: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1
;; size=26 bbWeight=16 PerfScore 128.00
G_M36935_IG23: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
cmp r9, 44
- bne SHORT G_M36935_IG33
+ bne SHORT G_M36935_IG27
;; size=6 bbWeight=2 PerfScore 4.00
G_M36935_IG24: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl r3, r10, 1
ldrh r9, [r2+r3]
cmp r9, 32
@@ -543,7 +543,7 @@ G_M36935_IG25: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r
str r12, [sp+0x94] // [V08 loc4]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl r3, r10, 1
ldrh r3, [r2+r3]
mov r9, r3
@@ -553,69 +553,44 @@ G_M36935_IG26: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r
sub r3, r9, 48
mov r9, r3
cmp r9, 10
- bhs G_M36935_IG89
+ bhs G_M36935_IG92
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG90
- ;; size=24 bbWeight=2 PerfScore 14.00
-G_M36935_IG27: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
- cmp r10, r4
- bhs G_M36935_IG74
+ bls G_M36935_IG93
+ cmp r10, 0
+ blt SHORT G_M36935_IG32
+ b SHORT G_M36935_IG29
+ ;; size=32 bbWeight=2 PerfScore 20.00
+G_M36935_IG27: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
+ mov lr, r3
+ mov r3, r9
+ mov r9, lr
+ b SHORT G_M36935_IG35
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M36935_IG28: ; bbWeight=7.92, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
+ mov lr, 10
+ mul lr, r9, lr
+ add r3, lr
+ sub r9, r3, 48
+ add r10, r10, 1
+ cmp r4, r10
+ bls G_M36935_IG93
+ ;; size=24 bbWeight=7.92 PerfScore 55.44
+G_M36935_IG29: ; bbWeight=15.84, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
lsl r3, r10, 1
ldrh r3, [r2+r3]
sub lr, r3, 48
cmp lr, 9
- bhi SHORT G_M36935_IG28
+ bhi SHORT G_M36935_IG33
movw lr, 0xd1ff
movt lr, 0xd1ff
cmp r9, lr
- blt SHORT G_M36935_IG34
- ;; size=34 bbWeight=16 PerfScore 176.00
-G_M36935_IG28: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
- cmp r3, 32
...
+58 (+2.53%) : 22866.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)
@@ -13,9 +13,9 @@
; V02 arg2 [V02,T36] ( 5, 15 ) ref -> r7 class-hnd single-def <System.String>
; V03 arg3 [V03,T55] ( 4, 7 ) struct ( 8) [sp+0x94] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [sp+0x3C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r10 ld-addr-op
-; V06 loc2 [V06,T07] ( 32, 260 ) ushort -> [sp+0x6C]
-; V07 loc3 [V07,T08] ( 12, 242 ) int -> [sp+0x68]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r10 ld-addr-op
+; V06 loc2 [V06,T07] ( 35, 260 ) ushort -> [sp+0x6C]
+; V07 loc3 [V07,T08] ( 15, 242 ) int -> [sp+0x68]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [sp+0x64]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T16] ( 7, 48 ) int -> [sp+0x60]
@@ -169,8 +169,8 @@
; V158 cse3 [V158,T47] ( 3, 12 ) ref -> r1 "CSE - conservative"
; V159 cse4 [V159,T49] ( 3, 12 ) int -> r3 "CSE - conservative"
; V160 cse5 [V160,T03] ( 6, 416 ) int -> [sp+0x40] spill-single-def "CSE - aggressive"
-; V161 cse6 [V161,T12] ( 19, 144 ) int -> r4 "CSE - aggressive"
-; V162 cse7 [V162,T13] ( 15, 120 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V161 cse6 [V161,T12] ( 20, 128.16) int -> r4 "CSE - moderate"
+; V162 cse7 [V162,T13] ( 16, 120 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
; V163 cse8 [V163,T10] ( 4, 192 ) int -> r3 "CSE - moderate"
; V164 cse9 [V164,T20] ( 4, 32 ) int -> lr "CSE - moderate"
; TEMP_02 ref -> [r11-0x74]
@@ -196,7 +196,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {},
ldr r8, [sp+0x98]
str r8, [sp+0x44] // [V151 tmp129]
cmp r7, 0
- beq G_M4730_IG74
+ beq G_M4730_IG77
cmp r6, 0
bne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 6.00
@@ -234,7 +234,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR
; gcrRegs -[r0]
ldr r4, [r7+0x04]
cmp r4, r10
- bls G_M4730_IG69
+ bls G_M4730_IG72
;; size=8 bbWeight=8 PerfScore 24.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
add lr, r7, 8
@@ -249,7 +249,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {},
sub r3, r4, r10
str r3, [sp+0x58] // [V32 tmp10]
cmp r3, 0
- blt G_M4730_IG75
+ blt G_M4730_IG78
;; size=32 bbWeight=4 PerfScore 36.00
G_M4730_IG08: ; bbWeight=4, gcVars=000000020000008000002000 {V04 V33 V162}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1000 {r12}, gcvars, byref, isz
; byrRegs -[lr]
@@ -269,10 +269,10 @@ G_M4730_IG08: ; bbWeight=4, gcVars=000000020000008000002000 {V04 V33 V162
; gcr arg pop 0
mov r8, r0
cmp r8, 0
- blt G_M4730_IG71
+ blt G_M4730_IG74
ldr r3, [sp+0x48] // [V108 tmp86]
cmp r8, r3
- bhi G_M4730_IG91
+ bhi G_M4730_IG94
mov r0, r5
; gcrRegs +[r0]
ldr r1, [sp+0x20] // [V107 tmp85]
@@ -288,14 +288,14 @@ G_M4730_IG08: ; bbWeight=4, gcVars=000000020000008000002000 {V04 V33 V162
; gcr arg pop 0
add r10, r8
cmp r10, r4
- bhs G_M4730_IG73
+ bhs G_M4730_IG76
lsl r0, r10, 1
ldr r8, [sp+0x1C] // [V162 cse7]
; byrRegs +[r8]
ldrh r3, [r8+r0]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r0, r10, 1
ldrh r2, [r8+r0]
cmp r3, r2
@@ -340,19 +340,19 @@ G_M4730_IG12: ; bbWeight=4, gcVars=000000020000000000002000 {V04 V162}, g
; byrRegs +[r8]
; GC ptr vars +{V13 V162}
cmp r3, 123
- bne G_M4730_IG81
+ bne G_M4730_IG84
movs r3, 0
mov lr, 0
mov r12, 0
movs r1, 0
add r0, r10, -1
cmp r0, r4
- bhs G_M4730_IG73
+ bhs G_M4730_IG76
lsl r0, r10, 1
subs r0, r0, 2
ldrh r0, [r8+r0]
cmp r0, 123
- bne G_M4730_IG76
+ bne G_M4730_IG79
cmp r2, 123
beq SHORT G_M4730_IG15
;; size=48 bbWeight=4 PerfScore 64.00
@@ -360,14 +360,14 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8
; byrRegs +[r12]
sub r0, r2, 48
cmp r0, 10
- bhs G_M4730_IG82
+ bhs G_M4730_IG85
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r2, r10, 1
ldrh r2, [r8+r2]
cmp r2, 125
- beq G_M4730_IG34
+ beq G_M4730_IG37
;; size=34 bbWeight=4 PerfScore 40.00
G_M4730_IG14: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
b SHORT G_M4730_IG17
@@ -379,7 +379,7 @@ G_M4730_IG15: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8
str r1, [sp+0x4C] // [V98 tmp76]
str r12, [sp+0x24] // [V97 tmp75]
; GC ptr vars +{V97}
- b SHORT G_M4730_IG77
+ b SHORT G_M4730_IG80
;; size=16 bbWeight=2 PerfScore 12.00
G_M4730_IG16: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
; GC ptr vars -{V13 V97}
@@ -390,7 +390,7 @@ G_M4730_IG16: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8
mov r9, r0
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r0, r10, 1
ldrh r2, [r8+r0]
mov r0, r9
@@ -412,7 +412,7 @@ G_M4730_IG18: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8
G_M4730_IG19: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r2, r10, 1
ldrh r2, [r8+r2]
mov r9, r2
@@ -421,12 +421,12 @@ G_M4730_IG19: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r
;; size=26 bbWeight=16 PerfScore 128.00
G_M4730_IG20: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
cmp r9, 44
- bne SHORT G_M4730_IG30
+ bne SHORT G_M4730_IG24
;; size=6 bbWeight=2 PerfScore 4.00
G_M4730_IG21: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r3, r10, 1
ldrh r9, [r8+r3]
cmp r9, 32
@@ -439,7 +439,7 @@ G_M4730_IG22: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8
str lr, [sp+0x64] // [V08 loc4]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r3, r10, 1
ldrh r3, [r8+r3]
mov r9, r3
@@ -449,69 +449,44 @@ G_M4730_IG23: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8
sub r3, r9, 48
mov r9, r3
cmp r9, 10
- bhs G_M4730_IG82
+ bhs G_M4730_IG85
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG83
- ;; size=24 bbWeight=2 PerfScore 14.00
-G_M4730_IG24: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
- cmp r10, r4
- bhs G_M4730_IG73
+ bls G_M4730_IG86
+ cmp r10, 0
+ blt SHORT G_M4730_IG29
+ b SHORT G_M4730_IG26
+ ;; size=32 bbWeight=2 PerfScore 20.00
+G_M4730_IG24: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
+ mov r2, r3
+ mov r3, r9
+ mov r9, r2
+ b SHORT G_M4730_IG32
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M4730_IG25: ; bbWeight=7.92, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
+ movs r2, 10
+ mul r2, r9, r2
+ adds r3, r2, r3
+ sub r9, r3, 48
+ add r10, r10, 1
+ cmp r4, r10
+ bls G_M4730_IG86
+ ;; size=22 bbWeight=7.92 PerfScore 55.44
+G_M4730_IG26: ; bbWeight=15.84, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
lsl r3, r10, 1
ldrh r3, [r8+r3]
sub r2, r3, 48
cmp r2, 9
- bhi SHORT G_M4730_IG25
+ bhi SHORT G_M4730_IG30
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r9, r2
- blt SHORT G_M4730_IG31
- ;; size=34 bbWeight=16 PerfScore 176.00
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
- cmp r3, 32
- bne SHORT G_M4730_IG27
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M4730_IG26: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
- add r10, r10, 1
- cmp r4, r10
- bls G_M4730_IG83
- lsl r3, r10, 1
- ldrh r3, [r8+r3]
- cmp r3, 32
- beq SHORT G_M4730_IG26
- ;; size=22 bbWeight=16 PerfScore 112.00
+ blt SHORT G_M4730_IG25
+ ;; size=28 bbWeight=15.84 PerfScore 142.56
G_M4730_IG27: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
- cmp r3, 125
- beq SHORT G_M4730_IG29
- cmp r3, 58
- bne G_M4730_IG84
- mov r2, r10
- ;; size=12 bbWeight=2 PerfScore 10.00
-G_M4730_IG28: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
- ; byrRegs -[r12]
- add r10, r10, 1
- cmp r4, r10
- bls G_M4730_IG83
- lsl r3, r10, 1
- ldrh r3, [r8+r3]
- cmp r3, 125
- beq SHORT G_M4730_IG32
- cmp r3, 123
...
benchmarks.run_tiered.linux.arm.checked.mch
+52 (+2.19%) : 9506.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-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 -> r5 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> r5 this single-def
; V01 arg1 [V01,T35] ( 7, 11.50) ref -> r7 class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T26] ( 5, 15 ) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T53] ( 4, 7 ) struct ( 8) [sp+0xBC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T71] ( 3, 7 ) ref -> [sp+0x4C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r10 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [sp+0x94]
-; V07 loc3 [V07,T06] ( 12, 62 ) int -> [sp+0x90]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r10 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [sp+0x94]
+; V07 loc3 [V07,T06] ( 15, 62 ) int -> [sp+0x90]
; V08 loc4 [V08,T25] ( 5, 18 ) ubyte -> [sp+0x8C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T08] ( 7, 48 ) int -> [sp+0x88]
@@ -224,8 +224,8 @@
; V213 cse3 [V213,T75] ( 3, 6 ) int -> r1 "CSE - conservative"
; V214 cse4 [V214,T76] ( 3, 6 ) int -> r1 "CSE - conservative"
; V215 cse5 [V215,T88] ( 3, 1.50) int -> r3 "CSE - conservative"
-; V216 cse6 [V216,T02] ( 19,144 ) int -> r4 "CSE - aggressive"
-; V217 cse7 [V217,T04] ( 15,120 ) byref -> [sp+0x18] spill-single-def "CSE - aggressive"
+; V216 cse6 [V216,T03] ( 20,128.16) int -> r4 "CSE - aggressive"
+; V217 cse7 [V217,T04] ( 16,120 ) byref -> [sp+0x18] spill-single-def "CSE - aggressive"
; V218 cse8 [V218,T07] ( 21, 58 ) int -> r4 "CSE - aggressive"
; V219 cse9 [V219,T13] ( 11, 29 ) byref -> [sp+0x14] multi-def "CSE - moderate"
; V220 cse10 [V220,T05] ( 35, 65.50) ref -> registers multi-def "CSE - aggressive"
@@ -248,7 +248,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr r8, [sp+0xC0]
str r8, [sp+0x50] // [V209 tmp188]
cmp r6, 0
- beq G_M36935_IG84
+ beq G_M36935_IG87
cmp r7, 0
bne SHORT G_M36935_IG04
;; size=18 bbWeight=1 PerfScore 6.00
@@ -286,7 +286,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000800000000000000000 {V04}, gcref
; gcrRegs -[r0]
ldr r4, [r6+0x04]
cmp r4, r10
- bls G_M36935_IG79
+ bls G_M36935_IG82
;; size=8 bbWeight=8 PerfScore 24.00
G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
add r3, r6, 8
@@ -345,10 +345,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
; gcr arg pop 0
mov r8, r0
cmp r8, 0
- blt G_M36935_IG80
+ blt G_M36935_IG83
ldr r3, [sp+0x54] // [V152 tmp131]
cmp r8, r3
- bhi G_M36935_IG91
+ bhi G_M36935_IG94
ldr r0, [r5+0x04]
ldr r1, [r5+0x0C]
sub r1, r1, r8
@@ -376,7 +376,7 @@ G_M36935_IG11: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr r1, [r5+0x04]
ldr r2, [r0+0x04]
cmp r1, r2
- bhi G_M36935_IG91
+ bhi G_M36935_IG94
ldr r0, [r0]
lsl lr, r1, 1
add lr, r0
@@ -408,7 +408,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=000000800000001020002010 {V04 V70 V15
G_M36935_IG13: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=4020 {r5 lr}, byref, isz
ldr r2, [sp+0x7C] // [V69 tmp48]
cmp r8, r2
- bhi G_M36935_IG92
+ bhi G_M36935_IG95
lsl r2, r8, 1
mov r0, lr
; byrRegs +[r0]
@@ -427,14 +427,14 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=4020 {r5 l
str r0, [r5+0x04]
add r10, r8
cmp r10, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG86
lsl r0, r10, 1
ldr r8, [sp+0x18] // [V217 cse7]
; byrRegs +[r8]
ldrh r3, [r8+r0]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r0, r10, 1
ldrh r2, [r8+r0]
cmp r3, r2
@@ -483,7 +483,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=000000800000000000002010 {V04 V217 V2
; byrRegs +[r8]
; GC ptr vars +{V04 V13 V217 V219}
cmp r3, 123
- bne G_M36935_IG85
+ bne G_M36935_IG88
movs r3, 0
str r3, [sp+0x90] // [V07 loc3]
mov lr, 0
@@ -495,7 +495,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=000000800000000000002010 {V04 V217 V2
str r1, [sp+0x58] // [V144 tmp123]
add r0, r10, -1
cmp r0, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG86
lsl r0, r10, 1
subs r0, r0, 2
ldrh r0, [r8+r0]
@@ -538,10 +538,10 @@ G_M36935_IG22: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
ldr r2, [sp+0x94] // [V06 loc2]
sub r0, r2, 48
cmp r0, 10
- bhs G_M36935_IG86
+ bhs G_M36935_IG89
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r2, r10, 1
ldrh r2, [r8+r2]
cmp r2, 125
@@ -553,7 +553,7 @@ G_M36935_IG23: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
G_M36935_IG24: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
ldr r12, [sp+0x20] // [V143 tmp122]
; byrRegs +[r12]
- b SHORT G_M36935_IG43
+ b SHORT G_M36935_IG46
;; size=6 bbWeight=2 PerfScore 4.00
G_M36935_IG25: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
; byrRegs -[r12]
@@ -564,13 +564,11 @@ G_M36935_IG25: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
str r0, [sp+0x88] // [V10 loc6]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r0, r10, 1
ldrh r2, [r8+r0]
- mov r0, r2
- mov r2, r0
ldr r0, [sp+0x88] // [V10 loc6]
- ;; size=40 bbWeight=8 PerfScore 104.00
+ ;; size=36 bbWeight=8 PerfScore 88.00
G_M36935_IG26: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
sub r9, r2, 48
cmp r9, 9
@@ -588,7 +586,7 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
G_M36935_IG28: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r2, r10, 1
ldrh r2, [r8+r2]
mov r9, r2
@@ -598,12 +596,12 @@ G_M36935_IG28: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5
G_M36935_IG29: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
cmp r9, 44
mov r3, r9
- bne SHORT G_M36935_IG39
+ bne SHORT G_M36935_IG33
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG30: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r3, r10, 1
ldrh r9, [r8+r3]
cmp r9, 32
@@ -616,7 +614,7 @@ G_M36935_IG31: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
str lr, [sp+0x8C] // [V08 loc4]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r3, r10, 1
ldrh r3, [r8+r3]
mov r9, r3
@@ -625,73 +623,42 @@ G_M36935_IG32: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
sub r3, r9, 48
mov r9, r3
cmp r9, 10
- bhs G_M36935_IG86
+ bhs G_M36935_IG89
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- ;; size=24 bbWeight=2 PerfScore 14.00
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r10, r4
- bhs G_M36935_IG83
+ bls G_M36935_IG90
+ cmp r10, 0
+ blt SHORT G_M36935_IG38
+ b SHORT G_M36935_IG35
+ ;; size=32 bbWeight=2 PerfScore 20.00
+G_M36935_IG33: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
+ ldr r9, [sp+0x90] // [V07 loc3]
+ b SHORT G_M36935_IG41
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M36935_IG34: ; bbWeight=7.92, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
+ movs r2, 10
+ mul r2, r9, r2
+ adds r3, r2, r3
+ sub r9, r3, 48
+ add r10, r10, 1
+ cmp r4, r10
+ bls G_M36935_IG90
+ ;; size=22 bbWeight=7.92 PerfScore 55.44
+G_M36935_IG35: ; bbWeight=15.84, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
lsl r3, r10, 1
ldrh r3, [r8+r3]
sub r2, r3, 48
cmp r2, 9
- bhi SHORT G_M36935_IG34
+ bhi SHORT G_M36935_IG39
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r9, r2
- blt SHORT G_M36935_IG40
- ;; size=34 bbWeight=16 PerfScore 176.00
-G_M36935_IG34: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r3, 32
- bne SHORT G_M36935_IG36
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M36935_IG35: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- add r10, r10, 1
- cmp r4, r10
- bls G_M36935_IG87
- lsl r3, r10, 1
- ldrh r3, [r8+r3]
- cmp r3, 32
- beq SHORT G_M36935_IG35
- ;; size=22 bbWeight=16 PerfScore 112.00
+ blt SHORT G_M36935_IG34
+ ;; size=28 bbWeight=15.84 PerfScore 142.56
G_M36935_IG36: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r3, 125
- ldr r12, [sp+0x20] // [V143 tmp122]
- ; byrRegs +[r12]
- beq SHORT G_M36935_IG38
- cmp r3, 58
- bne G_M36935_IG88
...
+52 (+2.39%) : 15946.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)
@@ -13,9 +13,9 @@
; V02 arg2 [V02,T36] ( 5, 15 ) ref -> r7 class-hnd single-def <System.String>
; V03 arg3 [V03,T55] ( 4, 7 ) struct ( 8) [sp+0x8C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [sp+0x34] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r10 ld-addr-op
-; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [sp+0x64]
-; V07 loc3 [V07,T08] ( 12, 242 ) int -> [sp+0x60]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r10 ld-addr-op
+; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [sp+0x64]
+; V07 loc3 [V07,T08] ( 15, 242 ) int -> [sp+0x60]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [sp+0x5C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T16] ( 7, 48 ) int -> [sp+0x58]
@@ -169,8 +169,8 @@
; V158 cse3 [V158,T47] ( 3, 12 ) ref -> r1 "CSE - conservative"
; V159 cse4 [V159,T49] ( 3, 12 ) int -> r3 "CSE - conservative"
; V160 cse5 [V160,T03] ( 6, 416 ) int -> [sp+0x38] spill-single-def "CSE - aggressive"
-; V161 cse6 [V161,T12] ( 19, 144 ) int -> r4 "CSE - aggressive"
-; V162 cse7 [V162,T13] ( 15, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V161 cse6 [V161,T12] ( 20, 128.16) int -> r4 "CSE - moderate"
+; V162 cse7 [V162,T13] ( 16, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V163 cse8 [V163,T10] ( 4, 192 ) int -> r3 "CSE - moderate"
; V164 cse9 [V164,T20] ( 4, 32 ) int -> lr "CSE - moderate"
;
@@ -192,7 +192,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {},
ldr r8, [sp+0x90]
str r8, [sp+0x3C] // [V151 tmp129]
cmp r7, 0
- beq G_M4730_IG79
+ beq G_M4730_IG82
cmp r6, 0
bne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 6.00
@@ -230,7 +230,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR
; gcrRegs -[r0]
ldr r4, [r7+0x04]
cmp r4, r10
- bls G_M4730_IG74
+ bls G_M4730_IG77
;; size=8 bbWeight=8 PerfScore 24.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
add r3, r7, 8
@@ -283,10 +283,10 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {},
; gcr arg pop 0
mov r8, r0
cmp r8, 0
- blt G_M4730_IG76
+ blt G_M4730_IG79
ldr r3, [sp+0x40] // [V108 tmp86]
cmp r8, r3
- bhi G_M4730_IG90
+ bhi G_M4730_IG93
mov r0, r5
; gcrRegs +[r0]
ldr r1, [sp+0x18] // [V107 tmp85]
@@ -302,14 +302,14 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {},
; gcr arg pop 0
add r10, r8
cmp r10, r4
- bhs G_M4730_IG78
+ bhs G_M4730_IG81
lsl r0, r10, 1
ldr r8, [sp+0x14] // [V162 cse7]
; byrRegs +[r8]
ldrh r3, [r8+r0]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r0, r10, 1
ldrh r2, [r8+r0]
cmp r3, r2
@@ -354,7 +354,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000002000 {V04 V162}, g
; byrRegs +[r8]
; GC ptr vars +{V13 V162}
cmp r3, 123
- bne G_M4730_IG80
+ bne G_M4730_IG83
movs r3, 0
str r3, [sp+0x60] // [V07 loc3]
mov lr, 0
@@ -366,7 +366,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000002000 {V04 V162}, g
str r1, [sp+0x44] // [V98 tmp76]
add r0, r10, -1
cmp r0, r4
- bhs G_M4730_IG78
+ bhs G_M4730_IG81
lsl r0, r10, 1
subs r0, r0, 2
ldrh r0, [r8+r0]
@@ -407,10 +407,10 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8
ldr r2, [sp+0x64] // [V06 loc2]
sub r0, r2, 48
cmp r0, 10
- bhs G_M4730_IG81
+ bhs G_M4730_IG84
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r2, r10, 1
ldrh r2, [r8+r2]
cmp r2, 125
@@ -422,7 +422,7 @@ G_M4730_IG18: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8
G_M4730_IG19: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
ldr r12, [sp+0x1C] // [V97 tmp75]
; byrRegs +[r12]
- b SHORT G_M4730_IG38
+ b SHORT G_M4730_IG41
;; size=6 bbWeight=2 PerfScore 4.00
G_M4730_IG20: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
; byrRegs -[r12]
@@ -433,13 +433,11 @@ G_M4730_IG20: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8
str r0, [sp+0x58] // [V10 loc6]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r0, r10, 1
ldrh r2, [r8+r0]
- mov r0, r2
- mov r2, r0
ldr r0, [sp+0x58] // [V10 loc6]
- ;; size=40 bbWeight=8 PerfScore 104.00
+ ;; size=36 bbWeight=8 PerfScore 88.00
G_M4730_IG21: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
sub r9, r2, 48
cmp r9, 9
@@ -457,7 +455,7 @@ G_M4730_IG22: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8
G_M4730_IG23: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r2, r10, 1
ldrh r2, [r8+r2]
mov r9, r2
@@ -467,12 +465,12 @@ G_M4730_IG23: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r
G_M4730_IG24: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
cmp r9, 44
mov r3, r9
- bne SHORT G_M4730_IG34
+ bne SHORT G_M4730_IG28
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG25: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r3, r10, 1
ldrh r9, [r8+r3]
cmp r9, 32
@@ -485,7 +483,7 @@ G_M4730_IG26: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8
str lr, [sp+0x5C] // [V08 loc4]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r3, r10, 1
ldrh r3, [r8+r3]
mov r9, r3
@@ -494,73 +492,42 @@ G_M4730_IG27: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8
sub r3, r9, 48
mov r9, r3
cmp r9, 10
- bhs G_M4730_IG81
+ bhs G_M4730_IG84
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG82
- ;; size=24 bbWeight=2 PerfScore 14.00
-G_M4730_IG28: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
- cmp r10, r4
- bhs G_M4730_IG78
+ bls G_M4730_IG85
+ cmp r10, 0
+ blt SHORT G_M4730_IG33
+ b SHORT G_M4730_IG30
+ ;; size=32 bbWeight=2 PerfScore 20.00
+G_M4730_IG28: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+ ldr r9, [sp+0x60] // [V07 loc3]
+ b SHORT G_M4730_IG36
+ ;; size=6 bbWeight=1 PerfScore 2.00
+G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
+ movs r2, 10
+ mul r2, r9, r2
+ adds r3, r2, r3
+ sub r9, r3, 48
+ add r10, r10, 1
+ cmp r4, r10
+ bls G_M4730_IG85
+ ;; size=22 bbWeight=7.92 PerfScore 55.44
+G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
lsl r3, r10, 1
ldrh r3, [r8+r3]
sub r2, r3, 48
cmp r2, 9
- bhi SHORT G_M4730_IG29
+ bhi SHORT G_M4730_IG34
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r9, r2
- blt SHORT G_M4730_IG35
- ;; size=34 bbWeight=16 PerfScore 176.00
-G_M4730_IG29: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
- cmp r3, 32
- bne SHORT G_M4730_IG31
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M4730_IG30: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
- add r10, r10, 1
- cmp r4, r10
- bls G_M4730_IG82
- lsl r3, r10, 1
- ldrh r3, [r8+r3]
- cmp r3, 32
- beq SHORT G_M4730_IG30
- ;; size=22 bbWeight=16 PerfScore 112.00
+ blt SHORT G_M4730_IG29
+ ;; size=28 bbWeight=15.84 PerfScore 142.56
G_M4730_IG31: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
- cmp r3, 125
- ldr r12, [sp+0x1C] // [V97 tmp75]
- ; byrRegs +[r12]
- beq SHORT G_M4730_IG33
- cmp r3, 58
- bne G_M4730_IG83
- mov r2, r10
- ;; size=16 bbWeight=2 PerfScore 12.00
-G_M4730_IG32: ; bbWeight=16, gcVars=000000020000000000002000 {V04 V162}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, gcvars, byref, isz
- ; byrRegs -[r12]
- ; GC ptr vars -{V97}
- add r10, r10, 1
- cmp r4, r10
- bls G_M4730_IG82
- lsl r3, r10, 1
- ldrh r3, [r8+r3]
- mov r1, r3
- cmp r1, 125
- beq SHORT G_M4730_IG36
- cmp r1, 123
- beq G_M4730_IG83
- b SHORT G_M4730_IG32
- ;; size=32 bbWeight=16 PerfScore 176.00
-G_M4730_IG33: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
- ; byrRegs +[r12]
- str r9, [sp+0x60] // [V07 loc3]
- b SHORT G_M4730_IG38
- ;; size=6 bbWeight=1 PerfScore 2.00
-G_M4730_IG34: ; bbWeight=1, gcVars=000000020000000020002000 {V04 V97 V162}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, gcvars, byref, isz
- ; byrRegs -[r12]
...
coreclr_tests.run.linux.arm.checked.mch
+0 (0.00%) : 417281.dasm - Test_b147816:main():int (FullOpts)
@@ -3,13 +3,12 @@
; FullOpts code
; optimized code
; r11 based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00,T01] ( 0, 0 ) int -> zero-ref
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 cse0 [V02,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,7 +23,6 @@ G_M15237_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcr arg pop 0
movs r0, 100
;; size=22 bbWeight=1 PerfScore 7.00
G_M15237_IG03: ; bbWeight=1, epilog, nogc, extend
+0 (0.00%) : 200148.dasm - Test_b147816:main():int (Tier0-FullOpts)
@@ -3,13 +3,12 @@
; Tier-0 switched to FullOpts code
; optimized code
; r11 based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data
; Final local variable assignments
;
-;* V00 loc0 [V00,T01] ( 0, 0 ) int -> zero-ref
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 cse0 [V02,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 0
@@ -24,7 +23,6 @@ G_M15237_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // <unknown method>
- ; gcr arg pop 0
movs r0, 100
;; size=22 bbWeight=1 PerfScore 7.00
G_M15237_IG03: ; bbWeight=1, epilog, nogc, extend
+42 (+1.57%) : 199211.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -14,9 +14,9 @@
; V02 arg2 [V02,T21] ( 6, 7 ) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T31] ( 4, 4 ) struct ( 8) [sp+0xDC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T64] ( 3, 2 ) ref -> [sp+0x54] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T09] ( 63, 25 ) int -> [sp+0xB4] ld-addr-op
-; V06 loc2 [V06,T29] ( 29, 6 ) ushort -> [sp+0xB0]
-; V07 loc3 [V07,T60] ( 12, 2.00) int -> [sp+0xAC]
+; V05 loc1 [V05,T09] ( 68, 25 ) int -> [sp+0xB4] ld-addr-op
+; V06 loc2 [V06,T29] ( 32, 6 ) ushort -> [sp+0xB0]
+; V07 loc3 [V07,T60] ( 15, 2.00) int -> [sp+0xAC]
; V08 loc4 [V08,T51] ( 5, 3 ) ubyte -> [sp+0xA8]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T41] ( 7, 4.00) int -> r8
@@ -287,8 +287,8 @@
; V275 cse0 [V275,T53] ( 3, 3 ) int -> r2 "CSE - conservative"
; V276 cse1 [V276,T54] ( 3, 3 ) int -> r2 "CSE - conservative"
; V277 cse2 [V277,T55] ( 3, 3 ) int -> r3 "CSE - conservative"
-; V278 cse3 [V278,T17] ( 21, 11 ) int -> [sp+0x58] "CSE - moderate"
-; V279 cse4 [V279,T19] ( 15, 9.00) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V278 cse3 [V278,T17] ( 22, 11 ) int -> [sp+0x58] "CSE - moderate"
+; V279 cse4 [V279,T19] ( 16, 9.00) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
; V280 cse5 [V280,T02] ( 32,158.85) ref -> registers multi-def "CSE - aggressive"
; V281 rat0 [V281,T28] ( 5, 7 ) ref -> r1 class-hnd "replacement local" <System.ISpanFormattable>
; V282 rat1 [V282,T38] ( 3, 5.99) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
@@ -338,7 +338,7 @@ G_M36935_IG04: ; bbWeight=2, gcVars=00000000000000010000000000000000 {V04
; gcrRegs -[r0]
ldr r3, [r6+0x04]
cmp r3, r4
- bls G_M36935_IG109
+ bls G_M36935_IG111
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG05: ; bbWeight=2.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
add r2, r6, 8
@@ -394,7 +394,7 @@ G_M36935_IG07: ; bbWeight=2.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r
G_M36935_IG08: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r5 r9}, byref, isz
ldr r2, [sp+0x64] // [V192 tmp171]
cmp r3, r2
- bhi G_M36935_IG118
+ bhi G_M36935_IG120
;; size=8 bbWeight=1.00 PerfScore 3.00
G_M36935_IG09: ; bbWeight=8.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r5 r9}, byref, isz
ldr r0, [r5+0x04]
@@ -409,7 +409,7 @@ G_M36935_IG10: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r5 r
ldr r1, [r5+0x04]
ldr r2, [r0+0x04]
cmp r1, r2
- bhi G_M36935_IG118
+ bhi G_M36935_IG120
;; size=14 bbWeight=1 PerfScore 5.00
G_M36935_IG11: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0221 {r0 r5 r9}, byref, isz
ldr r0, [r0]
@@ -445,7 +445,7 @@ G_M36935_IG13: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r
ldr r3, [sp+0xA4] // [V15 loc11]
ldr r2, [sp+0x98] // [V71 tmp50]
cmp r3, r2
- bhi G_M36935_IG111
+ bhi G_M36935_IG113
lsls r2, r3, 1
ldr r0, [sp+0x40] // [V72 tmp51]
; byrRegs +[r0]
@@ -472,7 +472,7 @@ G_M36935_IG13: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r
ldrh r0, [r3+r0]
adds r4, r4, 1
cmp r9, r4
- bls G_M36935_IG114
+ bls G_M36935_IG116
;; size=66 bbWeight=1.00 PerfScore 25.00
G_M36935_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
lsls r1, r4, 1
@@ -481,7 +481,7 @@ G_M36935_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
cmp r0, r2
beq G_M36935_IG70
cmp r0, 123
- bne G_M36935_IG112
+ bne G_M36935_IG114
;; size=18 bbWeight=1 PerfScore 7.00
G_M36935_IG15: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
mov lr, 0
@@ -540,12 +540,12 @@ G_M36935_IG18: ; bbWeight=4.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r
G_M36935_IG19: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
sub r8, r8, 48
cmp r8, 10
- bhs G_M36935_IG113
+ bhs G_M36935_IG115
;; size=12 bbWeight=1.00 PerfScore 3.00
G_M36935_IG20: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
adds r4, r4, 1
cmp r9, r4
- bls G_M36935_IG114
+ bls G_M36935_IG116
lsls r0, r4, 1
ldr r3, [sp+0x1C] // [V279 cse4]
; byrRegs +[r3]
@@ -588,7 +588,7 @@ G_M36935_IG23: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r
; GC ptr vars +{V12}
ldr r2, [sp+0x5C] // [V273 tmp252]
cmp r8, r2
- bhs G_M36935_IG117
+ bhs G_M36935_IG119
;; size=18 bbWeight=1.00 PerfScore 7.00
G_M36935_IG24: ; bbWeight=1, gcVars=00000000000004810000000000000000 {V04 V12 V183}, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs +[r9]
@@ -600,20 +600,20 @@ G_M36935_IG24: ; bbWeight=1, gcVars=00000000000004810000000000000000 {V04
ldr lr, [sp+0x54] // [V04 loc0]
; gcrRegs +[lr]
cmp lr, 0
- bne G_M36935_IG88
+ bne G_M36935_IG90
;; size=22 bbWeight=1 PerfScore 6.00
G_M36935_IG25: ; bbWeight=1, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, byref, isz
; gcrRegs -[lr]
; byrRegs -[r0]
cmp r9, 0
- bne G_M36935_IG102
+ bne G_M36935_IG104
ldr r9, [sp+0xA8] // [V08 loc4]
; gcrRegs -[r9]
cmp r9, 0
bne SHORT G_M36935_IG26
ldr r12, [sp+0xAC] // [V07 loc3]
cmp r12, 0
- bne G_M36935_IG94
+ bne G_M36935_IG96
;; size=30 bbWeight=1 PerfScore 8.00
G_M36935_IG26: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
mov r1, r8
@@ -626,7 +626,7 @@ G_M36935_IG27: ; bbWeight=0.50, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0
movw lr, 0xd1ff
movt lr, 0xd1ff
cmp r0, lr
- bne G_M36935_IG91
+ bne G_M36935_IG93
;; size=16 bbWeight=0.50 PerfScore 2.50
G_M36935_IG28: ; bbWeight=1, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
mov r0, r1
@@ -634,14 +634,14 @@ G_M36935_IG28: ; bbWeight=1, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0020
str r0, [sp+0x4C] // [V18 loc14]
; GC ptr vars +{V18}
cmp r0, 0
- beq G_M36935_IG94
+ beq G_M36935_IG96
add r1, r5, 8
; gcrRegs -[r1]
; byrRegs +[r1]
ldr lr, [r5+0x04]
ldr r2, [r1+0x04]
cmp lr, r2
- bhi G_M36935_IG118
+ bhi G_M36935_IG120
;; size=26 bbWeight=1 PerfScore 9.00
G_M36935_IG29: ; bbWeight=1.00, gcVars=00000000000004810000040000000000 {V04 V12 V18 V183}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
; gcrRegs -[r0]
@@ -686,7 +686,7 @@ G_M36935_IG31: ; bbWeight=1.00, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020
movw r3, 0xd1ff
movt r3, 0xd1ff
cmp r0, r3
- bne G_M36935_IG93
+ bne G_M36935_IG95
;; size=30 bbWeight=1.00 PerfScore 10.00
G_M36935_IG32: ; bbWeight=1, gcVars=00000000000005810000040000000000 {V04 V12 V18 V183 V189}, gcrefRegs=11C0 {r6 r7 r8 r12}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
; GC ptr vars -{V95}
@@ -905,7 +905,7 @@ G_M36935_IG49: ; bbWeight=1.00, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020
;; size=4 bbWeight=1.00 PerfScore 2.00
G_M36935_IG50: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
cmp r0, 0
- beq G_M36935_IG94
+ beq G_M36935_IG96
;; size=6 bbWeight=1 PerfScore 2.00
G_M36935_IG51: ; bbWeight=1, gcVars=00000000000000010000000000000000 {V04}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs -[r8]
@@ -915,7 +915,7 @@ G_M36935_IG51: ; bbWeight=1, gcVars=00000000000000010000000000000000 {V04
adds r0, r0, r1
str r0, [r5+0x04]
cmp r9, 0
- bne G_M36935_IG92
+ bne G_M36935_IG94
b SHORT G_M36935_IG04
;; size=18 bbWeight=1 PerfScore 7.00
G_M36935_IG52: ; bbWeight=0.00, gcVars=00000000000004810000000000000000 {V04 V12 V183}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
@@ -954,7 +954,7 @@ G_M36935_IG53: ; bbWeight=1, gcVars=00000000000000000000000000000000 {},
ldr r1, [r5+0x04]
ldr r3, [r0+0x04]
cmp r1, r3
- bhi G_M36935_IG118
+ bhi G_M36935_IG120
;; size=14 bbWeight=1 PerfScore 5.00
G_M36935_IG54: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0221 {r0 r5 r9}, byref, isz
ldr r0, [r0]
@@ -978,7 +978,7 @@ G_M36935_IG54: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0221 {r0 r5
;; size=34 bbWeight=1.00 PerfScore 13.00
G_M36935_IG55: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=02A0 {r5 r7 r9}, byref, isz
cmp r8, r4
- bhi G_M36935_IG111
+ bhi G_M36935_IG113
lsl r2, r8, 1
mov r0, r7
; byrRegs +[r0]
@@ -993,7 +993,7 @@ G_M36935_IG55: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=02A0 {r5 r7
ldr r0, [r5+0x04]
add r0, r8
str r0, [r5+0x04]
- b SHORT G_M36935_IG109
+ b SHORT G_M36935_IG111
;; size=34 bbWeight=1.00 PerfScore 13.00
G_M36935_IG56: ; bbWeight=0.00, gcVars=00000000000005810000000000000000 {V04 V12 V183 V189}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs +[r6-r8]
@@ -1123,7 +1123,7 @@ G_M36935_IG65: ; bbWeight=1, gcVars=00000000000000000000000000000000 {},
ldr r8, [sp+0x64] // [V192 tmp171]
sub r1, r1, r8
cmp r0, r1
- bgt G_M36935_IG110
+ bgt G_M36935_IG112
b SHORT G_M36935_IG53
;; size=20 bbWeight=1 PerfScore 7.00
G_M36935_IG66: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -1224,12 +1224,10 @@ G_M36935_IG73: ; bbWeight=0, gcVars=00000000000000810000000000080000 {V04
sub r8, r2, 48
adds r4, r4, 1
cmp r9, r4
- bls G_M36935_IG114
+ bls G_M36935_IG116
lsls r0, r4, 1
ldrh r2, [r3+r0]
- mov r0, r2
- mov r2, r0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG74: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
sub r0, r2, 48
cmp r0, 9
@@ -1243,133 +1241,153 @@ G_M36935_IG74: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
G_M36935_IG75: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1
cmp r9, r4
- bls G_M36935_IG114
+ bls G_M36935_IG116
lsls r2, r4, 1
ldrh r2, [r3+r2]
- mov r0, r2
- mov r2, r0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG76: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 32
beq SHORT G_M36935_IG75
cmp r2, 44
- bne SHORT G_M36935_IG83
+ bne SHORT G_M36935_IG85
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG77: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
...
+42 (+1.69%) : 24972.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -14,9 +14,9 @@
; V02 arg2 [V02,T09] ( 6, 7 ) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T21] ( 4, 4 ) struct ( 8) [sp+0xB4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T59] ( 3, 2 ) ref -> [sp+0x44] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 63, 25 ) int -> [sp+0x8C] ld-addr-op
-; V06 loc2 [V06,T19] ( 29, 6 ) ushort -> [sp+0x88]
-; V07 loc3 [V07,T54] ( 13, 2.50) int -> [sp+0x84]
+; V05 loc1 [V05,T02] ( 68, 25 ) int -> [sp+0x8C] ld-addr-op
+; V06 loc2 [V06,T19] ( 32, 6 ) ushort -> [sp+0x88]
+; V07 loc3 [V07,T54] ( 16, 2.50) int -> [sp+0x84]
; V08 loc4 [V08,T55] ( 5, 2.50) ubyte -> [sp+0x80]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T33] ( 7, 4 ) int -> r8
@@ -243,8 +243,8 @@
; V231 cse1 [V231,T51] ( 3, 3 ) int -> r3 "CSE - conservative"
; V232 cse2 [V232,T70] ( 3, 1.50) int -> r2 "CSE - conservative"
; V233 cse3 [V233,T71] ( 3, 1.50) int -> r1 "CSE - conservative"
-; V234 cse4 [V234,T06] ( 21, 11 ) int -> [sp+0x50] "CSE - aggressive"
-; V235 cse5 [V235,T07] ( 15, 9 ) byref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V234 cse4 [V234,T06] ( 22, 11 ) int -> [sp+0x50] "CSE - aggressive"
+; V235 cse5 [V235,T07] ( 16, 9 ) byref -> [sp+0x10] spill-single-def "CSE - moderate"
; V236 cse6 [V236,T00] ( 29, 92.99) ref -> registers multi-def "CSE - aggressive"
; V237 rat0 [V237,T17] ( 5, 7.50) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V238 rat1 [V238,T34] ( 6, 4 ) ref -> r0 class-hnd "replacement local" <<unknown class>>
@@ -544,7 +544,7 @@ G_M36935_IG19: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr lr, [sp+0x44] // [V04 loc0]
; gcrRegs +[lr]
cmp lr, 0
- bne G_M36935_IG99
+ bne G_M36935_IG101
;; size=40 bbWeight=1 PerfScore 13.00
G_M36935_IG20: ; bbWeight=1, gcVars=00000000000001100800000000000000 {V04 V12 V153}, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs -[lr] +[r9]
@@ -622,7 +622,7 @@ G_M36935_IG25: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020
; byrRegs -[r1]
movt r1, 0xd1ff
cmp r0, r1
- bne G_M36935_IG102
+ bne G_M36935_IG104
add r0, r12, 4
; byrRegs +[r0]
ldr r2, [r0]
@@ -811,7 +811,7 @@ G_M36935_IG39: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020
adds r1, r1, r0
str r1, [r5+0x04]
cmp r9, 0
- bne G_M36935_IG103
+ bne G_M36935_IG105
b SHORT G_M36935_IG04
;; size=22 bbWeight=0.50 PerfScore 4.50
G_M36935_IG40: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
@@ -826,7 +826,7 @@ G_M36935_IG41: ; bbWeight=0.50, gcrefRegs=01C1 {r0 r6 r7 r8}, byrefRegs=0
str r1, [sp+0x38] // [V20 loc16]
; GC ptr vars +{V20}
cmp r1, 0
- bne G_M36935_IG104
+ bne G_M36935_IG106
cmp r8, 0
beq G_M36935_IG57
ldr r1, [r8]
@@ -1017,7 +1017,7 @@ G_M36935_IG56: ; bbWeight=0.25, gcVars=00000000000001100800000000000000 {
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r0, r1
- bne G_M36935_IG108
+ bne G_M36935_IG110
movs r0, 0
b SHORT G_M36935_IG41
;; size=20 bbWeight=0.25 PerfScore 1.75
@@ -1364,9 +1364,7 @@ G_M36935_IG84: ; bbWeight=0, gcVars=00000000000000100800000000000080 {V04
bls SHORT G_M36935_IG71
lsls r0, r4, 1
ldrh r2, [r3+r0]
- mov r0, r2
- mov r2, r0
- ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M36935_IG85: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
sub r0, r2, 48
cmp r0, 9
@@ -1383,14 +1381,12 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls G_M36935_IG71
lsls r2, r4, 1
ldrh r2, [r3+r2]
- mov r0, r2
- mov r2, r0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 32
beq SHORT G_M36935_IG86
cmp r2, 44
- bne SHORT G_M36935_IG94
+ bne SHORT G_M36935_IG96
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1
@@ -1398,10 +1394,8 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls G_M36935_IG71
lsls r2, r4, 1
ldrh r2, [r3+r2]
- mov r0, r2
- cmp r0, 32
+ cmp r2, 32
beq SHORT G_M36935_IG88
- mov r2, r0
cmp r2, 45
bne SHORT G_M36935_IG89
movs r2, 1
@@ -1410,9 +1404,10 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls G_M36935_IG71
lsls r0, r4, 1
ldrh r0, [r3+r0]
+ mov r1, r0
str r2, [sp+0x80] // [V08 loc4]
- mov r2, r0
- ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r2, r1
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
sub r12, r2, 48
mov r1, r12
@@ -1420,56 +1415,79 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bhs G_M36935_IG70
adds r4, r4, 1
cmp r9, r4
- bhi SHORT G_M36935_IG91
- b SHORT G_M36935_IG71
- ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG71
+ cmp r4, 0
+ blt SHORT G_M36935_IG93
+ b SHORT G_M36935_IG91
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- movs r2, 10
- mul r1, r1, r2
- adds r0, r1, r0
- sub r1, r0, 48
+ movs r0, 10
+ mul r1, r1, r0
+ adds r2, r1, r2
+ sub r1, r2, 48
+ mov r2, r1
+ adds r4, r4, 1
+ cmp r9, r4
+ mov r1, r2
+ bls G_M36935_IG71
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r2, r4, 1
+ ldrh r2, [r3+r2]
+ sub r0, r2, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG95
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ blt SHORT G_M36935_IG90
+ b SHORT G_M36935_IG95
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ movs r0, 10
+ mul r1, r1, r0
+ adds r2, r1, r2
+ sub r1, r2, 48
str r1, [sp+0x84] // [V07 loc3]
adds r4, r4, 1
cmp r9, r4
ldr r1, [sp+0x84] // [V07 loc3]
bls G_M36935_IG71
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r4, r9
bhs G_M36935_IG77
- lsls r2, r4, 1
- ldrh r2, [r3+r2]
- mov r0, r2
- sub r2, r0, 48
- cmp r2, 9
- bhi SHORT G_M36935_IG93
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r1, r2
- blt SHORT G_M36935_IG90
- b SHORT G_M36935_IG93
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r0, r4, 1
+ ldrh r2, [r3+r0]
+ sub r0, r2, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG95
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ blt SHORT G_M36935_IG92
+ b SHORT G_M36935_IG95
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1
cmp r9, r4
bls G_M36935_IG71
- lsls r0, r4, 1
- ldrh r0, [r3+r0]
+ lsls r2, r4, 1
+ ldrh r2, [r3+r2]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- cmp r0, 32
- mov r2, r0
- beq SHORT G_M36935_IG92
+G_M36935_IG95: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ cmp r2, 32
+ beq SHORT G_M36935_IG94
str r1, [sp+0x84] // [V07 loc3]
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 125
beq G_M36935_IG17
cmp r2, 58
bne G_M36935_IG72
mov r0, r4
;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000000800000000000080 {V04 V235}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
+G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000000800000000000080 {V04 V235}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
; GC ptr vars -{V07 V153}
adds r4, r4, 1
cmp r9, r4
@@ -1477,12 +1495,12 @@ G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000000800000000000080 {V04
lsls r2, r4, 1
ldrh r2, [r3+r2]
cmp r2, 125
- beq SHORT G_M36935_IG96
+ beq SHORT G_M36935_IG98
cmp r2, 123
- bne SHORT G_M36935_IG95
+ bne SHORT G_M36935_IG97
b SHORT G_M36935_IG72
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r0, r0, 1
str r4, [sp+0x8C] // [V05 loc1]
subs r2, r4, r0
@@ -1498,15 +1516,15 @@ G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
str lr, [sp+0x2C] // [V91 tmp70]
...
+46 (+1.74%) : 313690.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -14,9 +14,9 @@
; V02 arg2 [V02,T20] ( 5, 6 ) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T26] ( 4, 4 ) struct ( 8) [sp+0xD4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T54] ( 3, 2 ) ref -> [sp+0x4C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T09] ( 62, 23 ) int -> [sp+0xAC] ld-addr-op
-; V06 loc2 [V06,T25] ( 29, 6 ) ushort -> [sp+0xA8]
-; V07 loc3 [V07,T51] ( 12, 2 ) int -> [sp+0xA4]
+; V05 loc1 [V05,T09] ( 67, 23 ) int -> [sp+0xAC] ld-addr-op
+; V06 loc2 [V06,T25] ( 32, 6 ) ushort -> [sp+0xA8]
+; V07 loc3 [V07,T51] ( 15, 2 ) int -> [sp+0xA4]
; V08 loc4 [V08,T41] ( 5, 3 ) ubyte -> [sp+0xA0]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T35] ( 7, 4 ) int -> r8
@@ -263,8 +263,8 @@
; V251 tmp230 [V251,T13] ( 2, 15.97) int -> r2 "Cast away GC"
; V252 cse0 [V252,T45] ( 3, 3 ) int -> r2 "CSE - conservative"
; V253 cse1 [V253,T46] ( 3, 3 ) int -> r3 "CSE - conservative"
-; V254 cse2 [V254,T16] ( 19, 10 ) int -> [sp+0x50] spill-single-def "CSE - moderate"
-; V255 cse3 [V255,T23] ( 15, 7 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V254 cse2 [V254,T16] ( 20, 10 ) int -> [sp+0x50] spill-single-def "CSE - moderate"
+; V255 cse3 [V255,T23] ( 16, 7 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V256 cse4 [V256,T02] ( 29,143.85) ref -> registers multi-def "CSE - aggressive"
; V257 rat0 [V257,T24] ( 5, 7 ) ref -> r1 class-hnd "replacement local" <System.ISpanFormattable>
; V258 rat1 [V258,T32] ( 3, 5.99) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
@@ -573,7 +573,7 @@ G_M36935_IG19: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr lr, [sp+0x4C] // [V04 loc0]
; gcrRegs +[lr]
cmp lr, 0
- bne G_M36935_IG104
+ bne G_M36935_IG106
;; size=40 bbWeight=1 PerfScore 13.00
G_M36935_IG20: ; bbWeight=1, gcVars=00000000000000240040000000000000 {V04 V12 V168}, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs -[lr] +[r9]
@@ -761,7 +761,7 @@ G_M36935_IG30: ; bbWeight=31.93, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=002
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne G_M36935_IG107
+ bne G_M36935_IG109
;; size=20 bbWeight=31.93 PerfScore 191.59
G_M36935_IG31: ; bbWeight=31.93, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
movw r0, 0xd1ff
@@ -809,7 +809,7 @@ G_M36935_IG33: ; bbWeight=3.99, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne G_M36935_IG108
+ bne G_M36935_IG110
;; size=20 bbWeight=3.99 PerfScore 23.95
G_M36935_IG34: ; bbWeight=3.99, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
movw r0, 0xd1ff
@@ -931,7 +931,7 @@ G_M36935_IG46: ; bbWeight=0.50, gcVars=00000000000000240040000000000000 {
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r0, r2
- bne G_M36935_IG109
+ bne G_M36935_IG111
b SHORT G_M36935_IG22
;; size=18 bbWeight=0.50 PerfScore 3.00
G_M36935_IG47: ; bbWeight=0.00, gcVars=000000000000002C0040000000000000 {V04 V12 V168 V174}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref, isz
@@ -1533,9 +1533,7 @@ G_M36935_IG89: ; bbWeight=0, gcVars=00000000000000040040000000800000 {V04
bls SHORT G_M36935_IG78
lsls r0, r4, 1
ldrh r2, [r3+r0]
- mov r0, r2
- mov r2, r0
- ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
sub r0, r2, 48
cmp r0, 9
@@ -1552,14 +1550,12 @@ G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls SHORT G_M36935_IG78
lsls r2, r4, 1
ldrh r2, [r3+r2]
- mov r0, r2
- mov r2, r0
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 32
beq SHORT G_M36935_IG91
cmp r2, 44
- bne SHORT G_M36935_IG99
+ bne SHORT G_M36935_IG101
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1
@@ -1567,10 +1563,8 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls G_M36935_IG78
lsls r2, r4, 1
ldrh r2, [r3+r2]
- mov r0, r2
- cmp r0, 32
+ cmp r2, 32
beq SHORT G_M36935_IG93
- mov r2, r0
cmp r2, 45
bne SHORT G_M36935_IG94
movs r2, 1
@@ -1579,9 +1573,10 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls G_M36935_IG78
lsls r0, r4, 1
ldrh r0, [r3+r0]
+ mov r1, r0
str r2, [sp+0xA0] // [V08 loc4]
- mov r2, r0
- ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r2, r1
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
sub r12, r2, 48
mov r1, r12
@@ -1589,56 +1584,79 @@ G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bhs G_M36935_IG77
adds r4, r4, 1
cmp r9, r4
- bhi SHORT G_M36935_IG96
- b SHORT G_M36935_IG78
- ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG78
+ cmp r4, 0
+ blt SHORT G_M36935_IG98
+ b SHORT G_M36935_IG96
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG95: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- movs r2, 10
- mul r1, r1, r2
- adds r0, r1, r0
- sub r1, r0, 48
+ movs r0, 10
+ mul r1, r1, r0
+ adds r2, r1, r2
+ sub r1, r2, 48
+ mov r2, r1
+ adds r4, r4, 1
+ cmp r9, r4
+ mov r1, r2
+ bls G_M36935_IG78
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r2, r4, 1
+ ldrh r2, [r3+r2]
+ sub r0, r2, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG100
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ blt SHORT G_M36935_IG95
+ b SHORT G_M36935_IG100
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ movs r0, 10
+ mul r1, r1, r0
+ adds r2, r1, r2
+ sub r1, r2, 48
str r1, [sp+0xA4] // [V07 loc3]
adds r4, r4, 1
cmp r9, r4
ldr r1, [sp+0xA4] // [V07 loc3]
bls G_M36935_IG78
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r4, r9
bhs G_M36935_IG83
- lsls r2, r4, 1
- ldrh r2, [r3+r2]
- mov r0, r2
- sub r2, r0, 48
- cmp r2, 9
- bhi SHORT G_M36935_IG98
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r1, r2
- blt SHORT G_M36935_IG95
- b SHORT G_M36935_IG98
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r0, r4, 1
+ ldrh r2, [r3+r0]
+ sub r0, r2, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG100
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ blt SHORT G_M36935_IG97
+ b SHORT G_M36935_IG100
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1
cmp r9, r4
bls G_M36935_IG78
- lsls r0, r4, 1
- ldrh r0, [r3+r0]
+ lsls r2, r4, 1
+ ldrh r2, [r3+r2]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- cmp r0, 32
- mov r2, r0
- beq SHORT G_M36935_IG97
+G_M36935_IG100: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ cmp r2, 32
+ beq SHORT G_M36935_IG99
str r1, [sp+0xA4] // [V07 loc3]
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 125
beq G_M36935_IG17
cmp r2, 58
bne G_M36935_IG79
mov r0, r4
;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V04 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
+G_M36935_IG102: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V04 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
; GC ptr vars -{V168}
adds r4, r4, 1
cmp r9, r4
@@ -1646,12 +1664,12 @@ G_M36935_IG100: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V0
lsls r2, r4, 1
ldrh r2, [r3+r2]
cmp r2, 125
- beq SHORT G_M36935_IG101
+ beq SHORT G_M36935_IG103
cmp r2, 123
- bne SHORT G_M36935_IG100
+ bne SHORT G_M36935_IG102
b SHORT G_M36935_IG79
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r0, r0, 1
str r4, [sp+0xAC] // [V05 loc1]
subs r2, r4, r0
@@ -1667,15 +1685,15 @@ G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3
str lr, [sp+0x34] // [V74 tmp53]
; GC ptr vars +{V74}
cmp r2, 0
- bge SHORT G_M36935_IG102
+ bge SHORT G_M36935_IG104
movs r0, 0
- b SHORT G_M36935_IG103
+ b SHORT G_M36935_IG105
;; size=42 bbWeight=0 PerfScore 0.00
-G_M36935_IG102: ; bbWeight=0, gcVars=00000000200000000040000000800000 {V04 V74 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
...
+46 (+1.74%) : 313803.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -14,9 +14,9 @@
; V02 arg2 [V02,T20] ( 5, 6 ) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T26] ( 4, 4 ) struct ( 8) [sp+0xD4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T54] ( 3, 2 ) ref -> [sp+0x4C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T09] ( 62, 23 ) int -> [sp+0xAC] ld-addr-op
-; V06 loc2 [V06,T25] ( 29, 6 ) ushort -> [sp+0xA8]
-; V07 loc3 [V07,T51] ( 12, 2 ) int -> [sp+0xA4]
+; V05 loc1 [V05,T09] ( 67, 23 ) int -> [sp+0xAC] ld-addr-op
+; V06 loc2 [V06,T25] ( 32, 6 ) ushort -> [sp+0xA8]
+; V07 loc3 [V07,T51] ( 15, 2 ) int -> [sp+0xA4]
; V08 loc4 [V08,T41] ( 5, 3 ) ubyte -> [sp+0xA0]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T35] ( 7, 4 ) int -> r8
@@ -263,8 +263,8 @@
; V251 tmp230 [V251,T13] ( 2, 15.97) int -> r2 "Cast away GC"
; V252 cse0 [V252,T45] ( 3, 3 ) int -> r2 "CSE - conservative"
; V253 cse1 [V253,T46] ( 3, 3 ) int -> r3 "CSE - conservative"
-; V254 cse2 [V254,T16] ( 19, 10 ) int -> [sp+0x50] spill-single-def "CSE - moderate"
-; V255 cse3 [V255,T23] ( 15, 7 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V254 cse2 [V254,T16] ( 20, 10 ) int -> [sp+0x50] spill-single-def "CSE - moderate"
+; V255 cse3 [V255,T23] ( 16, 7 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V256 cse4 [V256,T02] ( 29,143.85) ref -> registers multi-def "CSE - aggressive"
; V257 rat0 [V257,T24] ( 5, 7 ) ref -> r1 class-hnd "replacement local" <System.ISpanFormattable>
; V258 rat1 [V258,T32] ( 3, 5.99) byref -> r0 "ReplaceWithLclVar is creating a new local variable"
@@ -573,7 +573,7 @@ G_M36935_IG19: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr lr, [sp+0x4C] // [V04 loc0]
; gcrRegs +[lr]
cmp lr, 0
- bne G_M36935_IG104
+ bne G_M36935_IG106
;; size=40 bbWeight=1 PerfScore 13.00
G_M36935_IG20: ; bbWeight=1, gcVars=00000000000000240040000000000000 {V04 V12 V168}, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs -[lr] +[r9]
@@ -761,7 +761,7 @@ G_M36935_IG30: ; bbWeight=31.93, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=002
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne G_M36935_IG107
+ bne G_M36935_IG109
;; size=20 bbWeight=31.93 PerfScore 191.59
G_M36935_IG31: ; bbWeight=31.93, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
movw r0, 0xd1ff
@@ -809,7 +809,7 @@ G_M36935_IG33: ; bbWeight=3.99, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020
ldr r0, [r0]
and r0, r0, 1
cmp r0, 1
- bne G_M36935_IG108
+ bne G_M36935_IG110
;; size=20 bbWeight=3.99 PerfScore 23.95
G_M36935_IG34: ; bbWeight=3.99, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz
movw r0, 0xd1ff
@@ -931,7 +931,7 @@ G_M36935_IG46: ; bbWeight=0.50, gcVars=00000000000000240040000000000000 {
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r0, r2
- bne G_M36935_IG109
+ bne G_M36935_IG111
b SHORT G_M36935_IG22
;; size=18 bbWeight=0.50 PerfScore 3.00
G_M36935_IG47: ; bbWeight=0.00, gcVars=000000000000002C0040000000000000 {V04 V12 V168 V174}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref, isz
@@ -1533,9 +1533,7 @@ G_M36935_IG89: ; bbWeight=0, gcVars=00000000000000040040000000800000 {V04
bls SHORT G_M36935_IG78
lsls r0, r4, 1
ldrh r2, [r3+r0]
- mov r0, r2
- mov r2, r0
- ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
sub r0, r2, 48
cmp r0, 9
@@ -1552,14 +1550,12 @@ G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls SHORT G_M36935_IG78
lsls r2, r4, 1
ldrh r2, [r3+r2]
- mov r0, r2
- mov r2, r0
- ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 32
beq SHORT G_M36935_IG91
cmp r2, 44
- bne SHORT G_M36935_IG99
+ bne SHORT G_M36935_IG101
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1
@@ -1567,10 +1563,8 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls G_M36935_IG78
lsls r2, r4, 1
ldrh r2, [r3+r2]
- mov r0, r2
- cmp r0, 32
+ cmp r2, 32
beq SHORT G_M36935_IG93
- mov r2, r0
cmp r2, 45
bne SHORT G_M36935_IG94
movs r2, 1
@@ -1579,9 +1573,10 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bls G_M36935_IG78
lsls r0, r4, 1
ldrh r0, [r3+r0]
+ mov r1, r0
str r2, [sp+0xA0] // [V08 loc4]
- mov r2, r0
- ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r2, r1
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
sub r12, r2, 48
mov r1, r12
@@ -1589,56 +1584,79 @@ G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r
bhs G_M36935_IG77
adds r4, r4, 1
cmp r9, r4
- bhi SHORT G_M36935_IG96
- b SHORT G_M36935_IG78
- ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG78
+ cmp r4, 0
+ blt SHORT G_M36935_IG98
+ b SHORT G_M36935_IG96
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG95: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- movs r2, 10
- mul r1, r1, r2
- adds r0, r1, r0
- sub r1, r0, 48
+ movs r0, 10
+ mul r1, r1, r0
+ adds r2, r1, r2
+ sub r1, r2, 48
+ mov r2, r1
+ adds r4, r4, 1
+ cmp r9, r4
+ mov r1, r2
+ bls G_M36935_IG78
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r2, r4, 1
+ ldrh r2, [r3+r2]
+ sub r0, r2, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG100
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ blt SHORT G_M36935_IG95
+ b SHORT G_M36935_IG100
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ movs r0, 10
+ mul r1, r1, r0
+ adds r2, r1, r2
+ sub r1, r2, 48
str r1, [sp+0xA4] // [V07 loc3]
adds r4, r4, 1
cmp r9, r4
ldr r1, [sp+0xA4] // [V07 loc3]
bls G_M36935_IG78
;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r4, r9
bhs G_M36935_IG83
- lsls r2, r4, 1
- ldrh r2, [r3+r2]
- mov r0, r2
- sub r2, r0, 48
- cmp r2, 9
- bhi SHORT G_M36935_IG98
- movw r2, 0xd1ff
- movt r2, 0xd1ff
- cmp r1, r2
- blt SHORT G_M36935_IG95
- b SHORT G_M36935_IG98
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r0, r4, 1
+ ldrh r2, [r3+r0]
+ sub r0, r2, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG100
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r1, r0
+ blt SHORT G_M36935_IG97
+ b SHORT G_M36935_IG100
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1
cmp r9, r4
bls G_M36935_IG78
- lsls r0, r4, 1
- ldrh r0, [r3+r0]
+ lsls r2, r4, 1
+ ldrh r2, [r3+r2]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- cmp r0, 32
- mov r2, r0
- beq SHORT G_M36935_IG97
+G_M36935_IG100: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ cmp r2, 32
+ beq SHORT G_M36935_IG99
str r1, [sp+0xA4] // [V07 loc3]
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ ;; size=6 bbWeight=0 PerfScore 0.00
+G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 125
beq G_M36935_IG17
cmp r2, 58
bne G_M36935_IG79
mov r0, r4
;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V04 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
+G_M36935_IG102: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V04 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
; GC ptr vars -{V168}
adds r4, r4, 1
cmp r9, r4
@@ -1646,12 +1664,12 @@ G_M36935_IG100: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V0
lsls r2, r4, 1
ldrh r2, [r3+r2]
cmp r2, 125
- beq SHORT G_M36935_IG101
+ beq SHORT G_M36935_IG103
cmp r2, 123
- bne SHORT G_M36935_IG100
+ bne SHORT G_M36935_IG102
b SHORT G_M36935_IG79
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r0, r0, 1
str r4, [sp+0xAC] // [V05 loc1]
subs r2, r4, r0
@@ -1667,15 +1685,15 @@ G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3
str lr, [sp+0x34] // [V74 tmp53]
; GC ptr vars +{V74}
cmp r2, 0
- bge SHORT G_M36935_IG102
+ bge SHORT G_M36935_IG104
movs r0, 0
- b SHORT G_M36935_IG103
+ b SHORT G_M36935_IG105
;; size=42 bbWeight=0 PerfScore 0.00
-G_M36935_IG102: ; bbWeight=0, gcVars=00000000200000000040000000800000 {V04 V74 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
...
libraries.pmi.linux.arm.checked.mch
-20 (-22.73%) : 99389.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint
@@ -8,10 +8,10 @@
; Final local variable assignments
;
; V00 loc0 [V00,T03] ( 3, 3 ) ref -> r4 class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> r5
-; V02 loc2 [V02,T01] ( 2, 16 ) int -> r0
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> r5
+; V02 loc2 [V02,T01] ( 2, 15.84) int -> r0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T02] ( 2, 9 ) byref -> r6 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> r6 hoist "CSE - aggressive"
;
; Lcl frame size = 4
@@ -33,22 +33,19 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r6, r4, 8
; byrRegs +[r6]
;; size=30 bbWeight=1 PerfScore 9.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs -[r0]
mov r0, r5
movw r3, 0xd1ff
movt r3, 0xd1ff
ldr r3, [r3]
blx r3 // Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint
- mov r3, 256
- cmp r5, r3
- bhs SHORT G_M39919_IG06
lsls r3, r5, 2
str r0, [r6+r3]
adds r5, r5, 1
cmp r5, 255
bls SHORT G_M39919_IG03
- ;; size=32 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=7.92 PerfScore 79.20
G_M39919_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
; byrRegs -[r6]
mov r0, r4
@@ -57,32 +54,21 @@ G_M39919_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend
pop {r3,r4,r5,r6,r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r0 r4]
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- blx r3 // CORINFO_HELP_RNGCHKFAIL
- bkpt
- ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 88, prolog size 8, PerfScore 117.00, instruction count 30, allocated bytes for code 88 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 68, prolog size 8, PerfScore 92.20, instruction count 23, allocated bytes for code 68 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0
Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058)
- ---- Epilog scopes ----
- ---- Scope 0
- Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
- Condition : 14 (0xe) (always)
- Epilog Start Index : 0 (0x00)
+ Function Length : 34 (0x00022) Actual length = 68 (0x000044)
+ --- One epilog, unwind codes at 0
---- Unwind codes ----
---- Epilog start at index 0 ----
A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
libraries_tests.run.linux.arm.Release.mch
+14 (+1.06%) : 335212.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (Tier0-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,T29] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T21] ( 4, 10.01) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T28] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>>
+; V01 loc1 [V01,T13] ( 7, 21.83) ref -> r5 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T08] ( 7, 24.76) int -> r0
;* 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,T34] ( 7, 3 ) ref -> [sp+0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
-; V05 loc5 [V05,T35] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor>
-; V06 loc6 [V06,T07] ( 8, 29.03) int -> r4
+; V04 loc4 [V04,T33] ( 7, 3 ) ref -> [sp+0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
+; V05 loc5 [V05,T34] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor>
+; V06 loc6 [V06,T07] ( 8, 28.75) int -> r4
; V07 OutArgs [V07 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T27] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V09 tmp2 [V09,T22] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
-; V10 tmp3 [V10,T30] ( 2, 4.01) int -> r4 "Inlining Arg"
-; V11 tmp4 [V11,T28] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T24] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
+; V09 tmp2 [V09,T21] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V10 tmp3 [V10,T29] ( 2, 4.01) int -> r4 "Inlining Arg"
+; V11 tmp4 [V11,T27] ( 3, 6.01) ref -> r8 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,T33] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V14 tmp7 [V14,T23] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp8 [V15,T24] ( 4, 8.01) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V16 tmp9 [V16,T13] ( 2, 16.02) int -> r9 "Inlining Arg"
-; V17 tmp10 [V17,T09] ( 3, 24.04) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T32] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V14 tmp7 [V14,T22] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp8 [V15,T23] ( 4, 8.01) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp9 [V16,T14] ( 2, 15.86) int -> r9 "Inlining Arg"
+; V17 tmp10 [V17,T10] ( 3, 23.80) ref -> [sp+0x44] 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,T16] ( 3, 12.02) ref -> [sp+0x40] 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 -> [sp+0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T17] ( 3, 11.90) ref -> [sp+0x40] 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 -> [sp+0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V21 tmp14 [V21,T02] ( 4, 31.73) ref -> [sp+0x38] 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 -> r9 "Inlining Arg"
-; V24 tmp17 [V24,T10] ( 3, 24.04) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T15] ( 2, 15.86) int -> r9 "Inlining Arg"
+; V24 tmp17 [V24,T11] ( 3, 23.80) ref -> [sp+0x34] 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,T17] ( 3, 12.02) ref -> [sp+0x30] 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 -> [sp+0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T18] ( 3, 11.90) ref -> [sp+0x30] 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 -> [sp+0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T04] ( 4, 31.73) ref -> [sp+0x28] 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 ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 4) 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 -> r9 "Inlining Arg"
-; V34 tmp27 [V34,T11] ( 3, 24.04) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T16] ( 2, 15.86) ushort -> r9 "Inlining Arg"
+; V34 tmp27 [V34,T12] ( 3, 23.80) ref -> [sp+0x24] 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,T18] ( 3, 12.02) ref -> [sp+0x20] 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 -> [sp+0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T19] ( 3, 11.90) ref -> [sp+0x20] 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 -> [sp+0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V38 tmp31 [V38,T06] ( 4, 31.73) ref -> [sp+0x18] 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 ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP
-; V43 tmp36 [V43,T25] ( 3, 8.01) ubyte -> r9 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T30] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP
+; V43 tmp36 [V43,T25] ( 3, 7.93) ubyte -> r9 "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,T32] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP
-; V47 tmp40 [V47,T26] ( 2, 8.01) ubyte -> r0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T31] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP
+; V47 tmp40 [V47,T26] ( 3, 7.93) ubyte -> r8 "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,11 +64,10 @@
;* 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 -> r3 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T37] ( 6, 0 ) struct ( 4) [sp+0x54] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V57 PSPSym [V57,T36] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym"
-; V58 cse0 [V58,T12] ( 5, 20.03) byref -> r8 "CSE - moderate"
-; V59 cse1 [V59,T19] ( 3, 12.02) int -> r8 "CSE - moderate"
-; V60 cse2 [V60,T20] ( 3, 11.88) int -> r2 "CSE - moderate"
+; V56 tmp49 [V56,T36] ( 6, 0 ) struct ( 4) [sp+0x54] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V57 PSPSym [V57,T35] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym"
+; V58 cse0 [V58,T09] ( 6, 23.80) int -> r8 "CSE - moderate"
+; V59 cse1 [V59,T20] ( 3, 11.88) int -> r2 "CSE - moderate"
; TEMP_01 ref -> [r11-0x64]
;
; Lcl frame size = 92
@@ -148,7 +147,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
str r7, [sp+0x50]
; GC ptr vars +{V04}
;; size=40 bbWeight=1 PerfScore 14.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000000400000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000000200000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -183,7 +182,7 @@ G_M53770_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0
str r6, [sp+0x4C]
; GC ptr vars +{V05}
;; size=22 bbWeight=1 PerfScore 8.00
-G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000600000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
str r4, [sp]
; gcr arg write
movs r2, 0
@@ -323,7 +322,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefR
; gcr arg pop 0
movs r4, 0
;; size=256 bbWeight=1.00 PerfScore 90.14
-G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG08: ; bbWeight=3.97, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
lsls r0, r4, 4
add r8, r0, 8
ldr r9, [r5+r8]
@@ -369,7 +368,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ; GC ptr vars -{V19}
+ ; GC ptr vars -{V17 V19}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
@@ -394,7 +393,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ; GC ptr vars -{V20}
+ ; GC ptr vars -{V20} +{V17}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1-r2]
; byrRegs -[r0]
@@ -442,10 +441,11 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r2]
; gcr arg pop 0
- add r8, r5
- ; byrRegs +[r8]
- ldr r9, [r8+0x08]
+ add r0, r5, r8
+ ; byrRegs +[r0]
+ ldr r9, [r0+0x08]
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -560,16 +560,20 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r2]
; gcr arg pop 0
- ldrb r9, [r8+0x04]
+ add r0, r5, r8
+ ; byrRegs +[r0]
+ ldrb r9, [r0+0x04]
cmp r9, 0
bne SHORT G_M53770_IG12
- ldrh r9, [r8+0x0C]
+ add r0, r5, r8
+ ldrh r9, [r0+0x0C]
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff
+ ;; size=444 bbWeight=3.97 PerfScore 590.96
+G_M53770_IG09: ; bbWeight=3.97, isz, extend
movw r3, 0xd1ff
movt r3, 0xd1ff
- ;; size=442 bbWeight=4.01 PerfScore 596.93
-G_M53770_IG09: ; bbWeight=4.01, isz, extend
blx r3 // CORINFO_HELP_NEWSFAST
; gcrRegs +[r0]
; gcr arg pop 0
@@ -681,16 +685,18 @@ G_M53770_IG09: ; bbWeight=4.01, isz, extend
blx r3 // <unknown method>
; gcrRegs -[r2]
; gcr arg pop 0
- ldrb r0, [r8+0x0E]
- cmp r0, 0
+ add r0, r5, r8
+ ; byrRegs +[r0]
+ ldrb r8, [r0+0x0E]
+ cmp r8, 0
beq SHORT G_M53770_IG13
- ;; size=190 bbWeight=4.01 PerfScore 268.42
-G_M53770_IG10: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8]
+ ;; size=204 bbWeight=3.97 PerfScore 277.63
+G_M53770_IG10: ; bbWeight=3.96, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
adds r4, r4, 1
cmp r4, 12
blt G_M53770_IG08
- ;; size=8 bbWeight=4 PerfScore 12.00
+ ;; size=8 bbWeight=3.96 PerfScore 11.88
G_M53770_IG11: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
b SHORT G_M53770_IG14
@@ -716,8 +722,7 @@ G_M53770_IG12: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b
G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
movs r1, 1
strb r1, [sp+0x54] // [V56 tmp49]
- movs r1, 0
- strb r1, [sp+0x55] // [V56 tmp49+0x01]
+ strb r8, [sp+0x55] // [V56 tmp49+0x01]
ldrh r1, [sp+0x54] // [V56 tmp49]
movs r0, 0
movw r3, 0xd1ff
@@ -732,7 +737,7 @@ G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
bkpt
- ;; size=42 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M53770_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
movs r0, 0
strb r0, [r6+0x20]
@@ -770,14 +775,14 @@ G_M53770_IG16: ; bbWeight=1, epilog, nogc, extend
add sp, 92
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M53770_IG17: ; bbWeight=0, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V04 V05 V34}
+G_M53770_IG17: ; bbWeight=0, gcVars=0000000600000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V04 V05 V33 V34}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr}
sub sp, 20
add r3, r11, 8
str r3, [sp+0x10]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M53770_IG18: ; bbWeight=0, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG18: ; bbWeight=0, gcVars=0000000600000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 0
ldr r6, [r11-0x2C]
; gcrRegs +[r6]
@@ -786,7 +791,7 @@ G_M53770_IG18: ; bbWeight=0, gcVars=0000000C00000000 {V04 V05}, gcrefRegs
...
+36 (+1.25%) : 720415.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -14,9 +14,9 @@
; V02 arg2 [V02,T19] ( 5, 7.78) ref -> [sp+0x4C] class-hnd single-def <System.String>
; V03 arg3 [V03,T28] ( 4, 4 ) struct ( 8) [sp+0xE4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T52] ( 3, 2.84) ref -> [sp+0x48] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 40.89) int -> [sp+0xBC] ld-addr-op
-; V06 loc2 [V06,T15] ( 29, 11.06) ushort -> [sp+0xB8]
-; V07 loc3 [V07,T38] ( 12, 5.14) int -> [sp+0xB4]
+; V05 loc1 [V05,T02] ( 67, 40.89) int -> [sp+0xBC] ld-addr-op
+; V06 loc2 [V06,T15] ( 32, 11.06) ushort -> [sp+0xB8]
+; V07 loc3 [V07,T38] ( 15, 5.14) int -> [sp+0xB4]
; V08 loc4 [V08,T42] ( 5, 4.08) ubyte -> [sp+0xB0]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T25] ( 7, 7.37) int -> r8
@@ -261,8 +261,8 @@
; V249 cse0 [V249,T36] ( 3, 5.53) int -> r1 "CSE - conservative"
; V250 cse1 [V250,T41] ( 3, 4.34) int -> r12 "CSE - conservative"
; V251 cse2 [V251,T70] ( 3, 1.18) int -> [sp+0x58] spill-single-def "CSE - conservative"
-; V252 cse3 [V252,T07] ( 19, 16.84) int -> [sp+0x54] spill-single-def "CSE - aggressive"
-; V253 cse4 [V253,T11] ( 15, 13.09) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V252 cse3 [V252,T07] ( 20, 16.84) int -> [sp+0x54] spill-single-def "CSE - aggressive"
+; V253 cse4 [V253,T11] ( 16, 13.09) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V254 cse5 [V254,T18] ( 12, 10.15) int -> [sp+0x50] spill-single-def "CSE - moderate"
; V255 rat0 [V255,T09] ( 6, 14.74) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V256 rat1 [V256,T14] ( 6, 11.61) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -566,7 +566,7 @@ G_M36935_IG21: ; bbWeight=1.84, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r
ldr lr, [sp+0x48] // [V04 loc0]
; gcrRegs +[lr]
cmp lr, 0
- bne G_M36935_IG126
+ bne G_M36935_IG128
;; size=56 bbWeight=1.84 PerfScore 35.01
G_M36935_IG22: ; bbWeight=1.84, gcVars=00000000000000006030000000200000 {V04 V12 V13 V158 V246}, gcrefRegs=00CA {r1 r3 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs -[lr] +[r3]
@@ -594,7 +594,7 @@ G_M36935_IG24: ; bbWeight=0.92, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020
movw r8, 0xd1ff
movt r8, 0xd1ff
cmp r3, r8
- bne G_M36935_IG129
+ bne G_M36935_IG131
movs r3, 0
mov r8, r3
; gcrRegs +[r8]
@@ -763,7 +763,7 @@ G_M36935_IG39: ; bbWeight=0.36, gcVars=00000000000000006030000000200000 {
adc r0, lr, r0
ldr r2, [sp+0x60] // [V221 tmp200]
cmp r0, r2
- bgt G_M36935_IG131
+ bgt G_M36935_IG133
str r0, [sp+0xA4] // [V19 loc15]
str r8, [sp+0x84] // [V105 tmp84]
lsls r0, r0, 1
@@ -1093,7 +1093,7 @@ G_M36935_IG69: ; bbWeight=1.45, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020
ldr r0, [r5+0x0C]
subs r0, r0, r2
cmp r0, r1
- blt G_M36935_IG130
+ blt G_M36935_IG132
;; size=14 bbWeight=1.45 PerfScore 8.69
G_M36935_IG70: ; bbWeight=1.45, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 {r5}, byref, isz
add r0, r5, 8
@@ -1690,9 +1690,7 @@ G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000002030000000000800 {V0
bls G_M36935_IG97
lsls r0, r3, 1
ldrh r1, [r2+r0]
- mov r0, r1
- mov r1, r0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG111: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
sub r0, r1, 48
cmp r0, 9
@@ -1709,14 +1707,12 @@ G_M36935_IG112: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2
bls G_M36935_IG97
lsls r1, r3, 1
ldrh r1, [r2+r1]
- mov r0, r1
- mov r1, r0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG113: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r1, 32
beq SHORT G_M36935_IG112
cmp r1, 44
- bne SHORT G_M36935_IG121
+ bne SHORT G_M36935_IG123
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r3, r3, 1
@@ -1724,10 +1720,8 @@ G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2
bls G_M36935_IG97
lsls r1, r3, 1
ldrh r1, [r2+r1]
- mov r0, r1
- cmp r0, 32
+ cmp r1, 32
beq SHORT G_M36935_IG114
- mov r1, r0
cmp r1, 45
bne SHORT G_M36935_IG115
mov r12, 1
@@ -1737,9 +1731,7 @@ G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2
bls G_M36935_IG97
lsls r1, r3, 1
ldrh r1, [r2+r1]
- mov r0, r1
- mov r1, r0
- ;; size=48 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG115: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
sub r0, r1, 48
mov r12, r0
@@ -1747,9 +1739,11 @@ G_M36935_IG115: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2
bhs SHORT G_M36935_IG116
adds r3, r3, 1
cmp r4, r3
- bhi SHORT G_M36935_IG118
- b SHORT G_M36935_IG97
- ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG97
+ cmp r3, 0
+ blt SHORT G_M36935_IG120
+ b SHORT G_M36935_IG118
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG116: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r6-r7]
; byrRegs -[r2 r5]
@@ -1761,52 +1755,73 @@ G_M36935_IG117: ; bbWeight=0, gcVars=00000000000000002030000000000800 {V0
; gcrRegs +[r6-r7]
; byrRegs +[r2 r5]
; GC ptr vars +{V04 V11 V158 V246 V253}
- movs r1, 10
- mul r12, r12, r1
- add r0, r12
- sub r12, r0, 48
+ movs r0, 10
+ mul r12, r12, r0
+ add r1, r12
+ sub r12, r1, 48
+ mov r1, r12
+ adds r3, r3, 1
+ cmp r4, r3
+ mov r12, r1
+ bls G_M36935_IG97
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG118: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ lsls r1, r3, 1
+ ldrh r1, [r2+r1]
+ sub r0, r1, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG122
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r12, r0
+ blt SHORT G_M36935_IG117
+ b SHORT G_M36935_IG122
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M36935_IG119: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ movs r0, 10
+ mul r12, r12, r0
+ add r1, r12
+ sub r12, r1, 48
str r12, [sp+0xB4] // [V07 loc3]
adds r3, r3, 1
cmp r4, r3
ldr r12, [sp+0xB4] // [V07 loc3]
bls G_M36935_IG97
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG118: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG120: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r3, r4
bhs G_M36935_IG103
- lsls r1, r3, 1
- ldrh r1, [r2+r1]
- mov r0, r1
- sub r1, r0, 48
- cmp r1, 9
- bhi SHORT G_M36935_IG120
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r12, r1
- blt SHORT G_M36935_IG117
- b SHORT G_M36935_IG120
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M36935_IG119: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ lsls r0, r3, 1
+ ldrh r1, [r2+r0]
+ sub r0, r1, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG122
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r12, r0
+ blt SHORT G_M36935_IG119
+ b SHORT G_M36935_IG122
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36935_IG121: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r3, r3, 1
cmp r4, r3
bls G_M36935_IG97
- lsls r0, r3, 1
- ldrh r0, [r2+r0]
+ lsls r1, r3, 1
+ ldrh r1, [r2+r1]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG120: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
- cmp r0, 32
- mov r1, r0
- beq SHORT G_M36935_IG119
+G_M36935_IG122: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ cmp r1, 32
+ beq SHORT G_M36935_IG121
str r12, [sp+0xB4] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M36935_IG121: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M36935_IG123: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r1, 125
beq G_M36935_IG19
cmp r1, 58
bne G_M36935_IG98
mov r0, r3
;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG122: ; bbWeight=0, gcVars=00000000000000000030000000000800 {V04 V246 V253}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
+G_M36935_IG124: ; bbWeight=0, gcVars=00000000000000000030000000000800 {V04 V246 V253}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
; GC ptr vars -{V11 V158}
adds r3, r3, 1
cmp r4, r3
@@ -1814,12 +1829,12 @@ G_M36935_IG122: ; bbWeight=0, gcVars=00000000000000000030000000000800 {V0
lsls r1, r3, 1
ldrh r1, [r2+r1]
cmp r1, 125
- beq SHORT G_M36935_IG123
+ beq SHORT G_M36935_IG125
cmp r1, 123
- bne SHORT G_M36935_IG122
+ bne SHORT G_M36935_IG124
b SHORT G_M36935_IG98
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG123: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG125: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r0, r0, 1
str r3, [sp+0xBC] // [V05 loc1]
subs r1, r3, r0
@@ -1839,16 +1854,16 @@ G_M36935_IG123: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2
str r0, [sp+0x28] // [V70 tmp49]
; GC ptr vars +{V70}
cmp r1, 0
- bge SHORT G_M36935_IG124
+ bge SHORT G_M36935_IG126
movs r0, 0
...
+36 (+1.37%) : 383939.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, 7.92) ref -> [sp+0x5C] class-hnd single-def <System.String>
; V03 arg3 [V03,T27] ( 4, 4 ) struct ( 8) [sp+0xE4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T45] ( 3, 2.69) ref -> [sp+0x58] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 38.00) int -> [sp+0xBC] ld-addr-op
-; V06 loc2 [V06,T12] ( 29, 9.93) ushort -> [sp+0xB8]
-; V07 loc3 [V07,T31] ( 12, 4.86) int -> [sp+0xB4]
+; V05 loc1 [V05,T00] ( 67, 38.00) int -> [sp+0xBC] ld-addr-op
+; V06 loc2 [V06,T12] ( 32, 9.93) ushort -> [sp+0xB8]
+; V07 loc3 [V07,T31] ( 15, 4.86) int -> [sp+0xB4]
; V08 loc4 [V08,T41] ( 5, 3.33) ubyte -> [sp+0xB0]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T23] ( 7, 6.60) int -> r9
@@ -222,8 +222,8 @@
; V210 cse1 [V210,T29] ( 3, 4.97) int -> r1 "CSE - conservative"
; V211 cse2 [V211,T33] ( 3, 4.76) int -> r12 "CSE - conservative"
; V212 cse3 [V212,T52] ( 3, 1.81) int -> r2 "CSE - conservative"
-; V213 cse4 [V213,T03] ( 19, 15.84) int -> [sp+0x64] spill-single-def "CSE - aggressive"
-; V214 cse5 [V214,T08] ( 15, 12.79) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V213 cse4 [V213,T03] ( 20, 15.84) int -> [sp+0x64] spill-single-def "CSE - aggressive"
+; V214 cse5 [V214,T08] ( 16, 12.79) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V215 cse6 [V215,T09] ( 12, 11.17) int -> [sp+0x60] spill-single-def "CSE - moderate"
; V216 rat0 [V216,T06] ( 6, 13.19) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V217 rat1 [V217,T07] ( 6, 12.98) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -531,7 +531,7 @@ G_M36935_IG22: ; bbWeight=1.65, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020
str lr, [sp+0x4C] // [V13 loc9]
; GC ptr vars +{V13}
cmp r4, 0
- bne G_M36935_IG118
+ bne G_M36935_IG120
;; size=56 bbWeight=1.65 PerfScore 29.72
G_M36935_IG23: ; bbWeight=1.65, gcVars=000000000000000000C0600000004000 {V04 V12 V13 V131 V207}, gcrefRegs=40C8 {r3 r6 r7 lr}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs -[r4] +[r3]
@@ -563,7 +563,7 @@ G_M36935_IG27: ; bbWeight=0.82, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020
movw r9, 0xd1ff
movt r9, 0xd1ff
cmp r3, r9
- bne G_M36935_IG121
+ bne G_M36935_IG123
movs r3, 0
mov r9, r3
; gcrRegs +[r9]
@@ -1567,9 +1567,7 @@ G_M36935_IG102: ; bbWeight=0, gcVars=00000000000000000080600000000100 {V0
bls G_M36935_IG86
lsls r0, r3, 1
ldrh r1, [r2+r0]
- mov r0, r1
- mov r1, r0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG103: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
sub r0, r1, 48
cmp r0, 9
@@ -1586,14 +1584,12 @@ G_M36935_IG104: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {
bls G_M36935_IG86
lsls r1, r3, 1
ldrh r1, [r2+r1]
- mov r0, r1
- mov r1, r0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG105: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r1, 32
beq SHORT G_M36935_IG104
cmp r1, 44
- bne SHORT G_M36935_IG113
+ bne SHORT G_M36935_IG115
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG106: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r3, r3, 1
@@ -1601,10 +1597,8 @@ G_M36935_IG106: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {
bls G_M36935_IG86
lsls r1, r3, 1
ldrh r1, [r2+r1]
- mov r0, r1
- cmp r0, 32
+ cmp r1, 32
beq SHORT G_M36935_IG106
- mov r1, r0
cmp r1, 45
bne SHORT G_M36935_IG107
mov r12, 1
@@ -1614,9 +1608,7 @@ G_M36935_IG106: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {
bls G_M36935_IG86
lsls r1, r3, 1
ldrh r1, [r2+r1]
- mov r0, r1
- mov r1, r0
- ;; size=48 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG107: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
sub r0, r1, 48
mov r12, r0
@@ -1624,9 +1616,11 @@ G_M36935_IG107: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {
bhs SHORT G_M36935_IG108
adds r3, r3, 1
cmp r8, r3
- bhi SHORT G_M36935_IG110
- b SHORT G_M36935_IG86
- ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG86
+ cmp r3, 0
+ blt SHORT G_M36935_IG112
+ b SHORT G_M36935_IG110
+ ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG108: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r4 r6-r7]
; byrRegs -[r2 r5]
@@ -1638,52 +1632,73 @@ G_M36935_IG109: ; bbWeight=0, gcVars=00000000000000000080600000000100 {V0
; gcrRegs +[r4 r6-r7]
; byrRegs +[r2 r5]
; GC ptr vars +{V04 V08 V55 V131 V207 V214}
- movs r1, 10
- mul r12, r12, r1
- add r0, r12
- sub r12, r0, 48
+ movs r0, 10
+ mul r12, r12, r0
+ add r1, r12
+ sub r12, r1, 48
+ mov r1, r12
+ adds r3, r3, 1
+ cmp r8, r3
+ mov r12, r1
+ bls G_M36935_IG86
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG110: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ lsls r1, r3, 1
+ ldrh r1, [r2+r1]
+ sub r0, r1, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG114
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r12, r0
+ blt SHORT G_M36935_IG109
+ b SHORT G_M36935_IG114
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M36935_IG111: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ movs r0, 10
+ mul r12, r12, r0
+ add r1, r12
+ sub r12, r1, 48
str r12, [sp+0xB4] // [V07 loc3]
adds r3, r3, 1
cmp r8, r3
ldr r12, [sp+0xB4] // [V07 loc3]
bls G_M36935_IG86
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG112: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r3, r8
bhs G_M36935_IG92
- lsls r1, r3, 1
- ldrh r1, [r2+r1]
- mov r0, r1
- sub r1, r0, 48
- cmp r1, 9
- bhi SHORT G_M36935_IG112
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r12, r1
- blt SHORT G_M36935_IG109
- b SHORT G_M36935_IG112
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M36935_IG111: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ lsls r0, r3, 1
+ ldrh r1, [r2+r0]
+ sub r0, r1, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG114
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r12, r0
+ blt SHORT G_M36935_IG111
+ b SHORT G_M36935_IG114
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36935_IG113: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r3, r3, 1
cmp r8, r3
bls G_M36935_IG86
- lsls r0, r3, 1
- ldrh r0, [r2+r0]
+ lsls r1, r3, 1
+ ldrh r1, [r2+r1]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG112: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
- cmp r0, 32
- mov r1, r0
- beq SHORT G_M36935_IG111
+G_M36935_IG114: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ cmp r1, 32
+ beq SHORT G_M36935_IG113
str r12, [sp+0xB4] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M36935_IG113: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M36935_IG115: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r1, 125
beq G_M36935_IG20
cmp r1, 58
bne G_M36935_IG87
mov r0, r3
;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG114: ; bbWeight=0, gcVars=00000000000000000000600000000100 {V04 V207 V214}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
+G_M36935_IG116: ; bbWeight=0, gcVars=00000000000000000000600000000100 {V04 V207 V214}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
; GC ptr vars -{V08 V55 V131}
adds r3, r3, 1
cmp r8, r3
@@ -1691,12 +1706,12 @@ G_M36935_IG114: ; bbWeight=0, gcVars=00000000000000000000600000000100 {V0
lsls r1, r3, 1
ldrh r1, [r2+r1]
cmp r1, 125
- beq SHORT G_M36935_IG115
+ beq SHORT G_M36935_IG117
cmp r1, 123
- bne SHORT G_M36935_IG114
+ bne SHORT G_M36935_IG116
b SHORT G_M36935_IG87
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG115: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG117: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r0, r0, 1
str r3, [sp+0xBC] // [V05 loc1]
subs r1, r3, r0
@@ -1714,16 +1729,16 @@ G_M36935_IG115: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {
str r0, [sp+0x38] // [V83 tmp62]
; GC ptr vars +{V83}
cmp r1, 0
- bge SHORT G_M36935_IG116
+ bge SHORT G_M36935_IG118
movs r0, 0
; byrRegs -[r0]
- b SHORT G_M36935_IG117
+ b SHORT G_M36935_IG119
;; size=42 bbWeight=0 PerfScore 0.00
-G_M36935_IG116: ; bbWeight=0, gcVars=00000000002000000000600000000100 {V04 V83 V207 V214}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
+G_M36935_IG118: ; bbWeight=0, gcVars=00000000002000000000600000000100 {V04 V83 V207 V214}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
; byrRegs -[r2]
movs r0, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M36935_IG117: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
+G_M36935_IG119: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
movw r1, 0xd1ff
movt r1, 0xd1ff
ldr r1, [r1]
@@ -1745,7 +1760,7 @@ G_M36935_IG117: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {
; byrRegs -[r3]
b SHORT G_M36935_IG20
;; size=30 bbWeight=0 PerfScore 0.00
...
+48 (+2.16%) : 468959.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.02) ref -> [sp+0x4C] class-hnd single-def <System.String>
; V03 arg3 [V03,T27] ( 4, 4 ) struct ( 8) [sp+0xBC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T43] ( 3, 2.94) ref -> [sp+0x48] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 43.00) int -> [sp+0x94] ld-addr-op
-; V06 loc2 [V06,T10] ( 29, 11.64) ushort -> [sp+0x90]
-; V07 loc3 [V07,T31] ( 13, 5.76) int -> [sp+0x8C]
+; V05 loc1 [V05,T00] ( 67, 43.00) int -> [sp+0x94] ld-addr-op
+; V06 loc2 [V06,T10] ( 32, 11.64) ushort -> [sp+0x90]
+; V07 loc3 [V07,T31] ( 16, 5.76) int -> [sp+0x8C]
; V08 loc4 [V08,T39] ( 5, 3.93) ubyte -> [sp+0x88]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T20] ( 7, 7.76) int -> [sp+0x84]
@@ -154,8 +154,8 @@
; V142 cse1 [V142,T30] ( 3, 5.82) int -> r2 "CSE - moderate"
; V143 cse2 [V143,T33] ( 3, 5.65) int -> r1 "CSE - moderate"
; V144 cse3 [V144,T32] ( 5, 5.65) int -> registers multi-def "CSE - moderate"
-; V145 cse4 [V145,T03] ( 19, 17.65) int -> [sp+0x54] spill-single-def "CSE - aggressive"
-; V146 cse5 [V146,T07] ( 15, 13.85) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V145 cse4 [V145,T03] ( 20, 17.65) int -> [sp+0x54] spill-single-def "CSE - aggressive"
+; V146 cse5 [V146,T07] ( 16, 13.85) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V147 cse6 [V147,T08] ( 14, 13.19) int -> [sp+0x50] "CSE - moderate"
; V148 rat0 [V148,T04] ( 6, 15.51) ref -> r2 class-hnd "replacement local" <System.ISpanFormattable>
; V149 rat1 [V149,T06] ( 6, 15.09) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -449,7 +449,7 @@ G_M36935_IG21: ; bbWeight=1.94, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r
ldr r12, [sp+0x48] // [V04 loc0]
; gcrRegs +[r12]
cmp r12, 0
- bne G_M36935_IG99
+ bne G_M36935_IG101
;; size=54 bbWeight=1.94 PerfScore 34.91
G_M36935_IG22: ; bbWeight=1.94, gcVars=000000000003080000002000 {V04 V12 V13 V93}, gcrefRegs=44C0 {r6 r7 r10 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz
; gcrRegs -[r12] +[r10]
@@ -501,7 +501,7 @@ G_M36935_IG28: ; bbWeight=0.94, gcrefRegs=40C4 {r2 r6 r7 lr}, byrefRegs=0
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r2, r1
- bne G_M36935_IG103
+ bne G_M36935_IG105
movs r2, 0
;; size=18 bbWeight=0.94 PerfScore 5.66
G_M36935_IG29: ; bbWeight=1.89, gcrefRegs=40C4 {r2 r6 r7 lr}, byrefRegs=0120 {r5 r8}, byref, isz
@@ -712,7 +712,7 @@ G_M36935_IG47: ; bbWeight=0.05, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r
adds r0, r0, r3
str r0, [r5+0x04]
cmp r10, 0
- bne G_M36935_IG102
+ bne G_M36935_IG104
ldr r4, [sp+0x94] // [V05 loc1]
b SHORT G_M36935_IG05
;; size=30 bbWeight=0.05 PerfScore 0.59
@@ -932,8 +932,8 @@ G_M36935_IG59: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
bge SHORT G_M36935_IG63
;; size=30 bbWeight=0 PerfScore 0.00
G_M36935_IG60: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
- ldr r1, [sp+0x88] // [V08 loc4]
- cmp r1, 0
+ ldr r2, [sp+0x88] // [V08 loc4]
+ cmp r2, 0
beq SHORT G_M36935_IG66
ldr r2, [r5+0x04]
mov r1, r2
@@ -1240,8 +1240,9 @@ G_M36935_IG84: ; bbWeight=0, gcVars=000000000001080000000080 {V04 V93 V14
bls G_M36935_IG70
lsls r0, r4, 1
ldrh r0, [r1+r0]
- mov r3, r0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ mov r2, r0
+ mov r3, r2
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M36935_IG85: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
sub r0, r3, 48
cmp r0, 9
@@ -1260,14 +1261,12 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r
bls G_M36935_IG70
lsls r3, r4, 1
ldrh r3, [r1+r3]
- mov r0, r3
- mov r3, r0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
cmp r3, 32
beq SHORT G_M36935_IG86
cmp r3, 44
- bne SHORT G_M36935_IG94
+ bne SHORT G_M36935_IG96
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
adds r4, r4, 1
@@ -1275,10 +1274,8 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r
bls G_M36935_IG70
lsls r3, r4, 1
ldrh r3, [r1+r3]
- mov r0, r3
- cmp r0, 32
+ cmp r3, 32
beq SHORT G_M36935_IG88
- mov r3, r0
cmp r3, 45
bne SHORT G_M36935_IG89
movs r3, 1
@@ -1287,9 +1284,10 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r
bls G_M36935_IG70
lsls r0, r4, 1
ldrh r0, [r1+r0]
+ mov lr, r0
str r3, [sp+0x88] // [V08 loc4]
- mov r3, r0
- ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r3, lr
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
sub r0, r3, 48
mov lr, r0
@@ -1297,56 +1295,79 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r
bhs G_M36935_IG69
adds r4, r4, 1
cmp r10, r4
- bhi SHORT G_M36935_IG91
- b SHORT G_M36935_IG70
- ;; size=22 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG70
+ cmp r4, 0
+ blt SHORT G_M36935_IG93
+ b SHORT G_M36935_IG91
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
- movs r3, 10
- mul lr, lr, r3
- add r0, lr
- sub lr, r0, 48
+ movs r0, 10
+ mul lr, lr, r0
+ add r3, lr
+ sub lr, r3, 48
+ mov r3, lr
+ adds r4, r4, 1
+ cmp r10, r4
+ mov lr, r3
+ bls G_M36935_IG70
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+ lsls r3, r4, 1
+ ldrh r3, [r1+r3]
+ sub r0, r3, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG95
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp lr, r0
+ blt SHORT G_M36935_IG90
+ b SHORT G_M36935_IG95
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+ movs r0, 10
+ mul lr, lr, r0
+ add r3, lr
+ sub lr, r3, 48
str lr, [sp+0x8C] // [V07 loc3]
adds r4, r4, 1
cmp r10, r4
ldr lr, [sp+0x8C] // [V07 loc3]
bls G_M36935_IG70
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
cmp r4, r10
bhs G_M36935_IG76
- lsls r3, r4, 1
- ldrh r3, [r1+r3]
- mov r0, r3
- sub r3, r0, 48
- cmp r3, 9
- bhi SHORT G_M36935_IG93
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp lr, r3
- blt SHORT G_M36935_IG90
- b SHORT G_M36935_IG93
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+ lsls r0, r4, 1
+ ldrh r3, [r1+r0]
+ sub r0, r3, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG95
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp lr, r0
+ blt SHORT G_M36935_IG92
+ b SHORT G_M36935_IG95
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
adds r4, r4, 1
cmp r10, r4
bls G_M36935_IG70
- lsls r0, r4, 1
- ldrh r0, [r1+r0]
+ lsls r3, r4, 1
+ ldrh r3, [r1+r3]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
- cmp r0, 32
- mov r3, r0
- beq SHORT G_M36935_IG92
+G_M36935_IG95: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+ cmp r3, 32
+ beq SHORT G_M36935_IG94
str lr, [sp+0x8C] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
cmp r3, 125
beq G_M36935_IG19
cmp r3, 58
bne G_M36935_IG71
mov r0, r4
;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcVars=000000000000080000000080 {V04 V146}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, gcvars, byref, isz
+G_M36935_IG97: ; bbWeight=0, gcVars=000000000000080000000080 {V04 V146}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, gcvars, byref, isz
; GC ptr vars -{V07 V93}
adds r4, r4, 1
cmp r10, r4
@@ -1354,12 +1375,12 @@ G_M36935_IG95: ; bbWeight=0, gcVars=000000000000080000000080 {V04 V146},
lsls r3, r4, 1
ldrh r3, [r1+r3]
cmp r3, 125
- beq SHORT G_M36935_IG96
+ beq SHORT G_M36935_IG98
cmp r3, 123
- bne SHORT G_M36935_IG95
+ bne SHORT G_M36935_IG97
b SHORT G_M36935_IG71
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
adds r0, r0, 1
str r4, [sp+0x94] // [V05 loc1]
subs r3, r4, r0
@@ -1376,15 +1397,15 @@ G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r
str r12, [sp+0x2C] // [V70 tmp49]
; GC ptr vars +{V70}
cmp r3, 0
- bge SHORT G_M36935_IG97
+ bge SHORT G_M36935_IG99
movs r0, 0
- b SHORT G_M36935_IG98
...
+48 (+2.17%) : 357592.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 -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T30] ( 4, 4 ) struct ( 8) [sp+0xC4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T43] ( 3, 3.06) ref -> r10 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 45.12) int -> [sp+0x9C] ld-addr-op
-; V06 loc2 [V06,T12] ( 29, 12.24) ushort -> [sp+0x98]
-; V07 loc3 [V07,T31] ( 12, 5.95) int -> [sp+0x94]
+; V05 loc1 [V05,T00] ( 67, 45.12) int -> [sp+0x9C] ld-addr-op
+; V06 loc2 [V06,T12] ( 32, 12.24) ushort -> [sp+0x98]
+; V07 loc3 [V07,T31] ( 15, 5.95) int -> [sp+0x94]
; V08 loc4 [V08,T40] ( 5, 4.03) ubyte -> [sp+0x90]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T21] ( 7, 8.05) int -> [sp+0x8C]
@@ -158,8 +158,8 @@
; V146 cse1 [V146,T27] ( 3, 6.20) int -> r2 "CSE - moderate"
; V147 cse2 [V147,T33] ( 3, 5.86) int -> lr "CSE - moderate"
; V148 cse3 [V148,T32] ( 5, 5.87) int -> registers multi-def "CSE - moderate"
-; V149 cse4 [V149,T03] ( 19, 18.42) int -> [sp+0x58] spill-single-def "CSE - aggressive"
-; V150 cse5 [V150,T07] ( 15, 14.39) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V149 cse4 [V149,T03] ( 20, 18.42) int -> [sp+0x58] spill-single-def "CSE - aggressive"
+; V150 cse5 [V150,T07] ( 16, 14.39) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
; V151 cse6 [V151,T08] ( 12, 13.70) int -> [sp+0x54] spill-single-def "CSE - moderate"
; V152 rat0 [V152,T05] ( 6, 16.09) ref -> r2 class-hnd "replacement local" <System.ISpanFormattable>
; V153 rat1 [V153,T06] ( 6, 16.07) ref -> registers class-hnd "replacement local" <<unknown class>>
@@ -463,7 +463,7 @@ G_M36935_IG22: ; bbWeight=2.01, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=002
str lr, [sp+0x4C] // [V13 loc9]
; GC ptr vars +{V13}
cmp r10, 0
- bne G_M36935_IG105
+ bne G_M36935_IG107
;; size=54 bbWeight=2.01 PerfScore 38.24
G_M36935_IG23: ; bbWeight=2.01, gcVars=000000000002100000002000 {V13 V95 V143}, gcrefRegs=45C8 {r3 r6 r7 r8 r10 lr}, byrefRegs=0020 {r5}, gcvars, byref, isz
; gcrRegs +[r8]
@@ -496,7 +496,7 @@ G_M36935_IG27: ; bbWeight=1.01, gcrefRegs=04CC {r2 r3 r6 r7 r10}, byrefRe
movw r0, 0xd1ff
movt r0, 0xd1ff
cmp r2, r0
- bne G_M36935_IG108
+ bne G_M36935_IG110
movs r2, 0
;; size=18 bbWeight=1.01 PerfScore 6.03
G_M36935_IG28: ; bbWeight=2.01, gcrefRegs=04CC {r2 r3 r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz
@@ -952,8 +952,8 @@ G_M36935_IG66: ; bbWeight=0, gcVars=000000000000100000000000 {V143}, gcre
; gcrRegs -[r0 r3] +[r8]
; GC ptr vars -{V20}
ldr r4, [sp+0x9C] // [V05 loc1]
- ldr r0, [sp+0x90] // [V08 loc4]
- cmp r0, 0
+ ldr r2, [sp+0x90] // [V08 loc4]
+ cmp r2, 0
beq SHORT G_M36935_IG71
ldr r2, [r5+0x04]
mov r0, r2
@@ -1261,8 +1261,9 @@ G_M36935_IG89: ; bbWeight=0, gcVars=000000000002100000000080 {V95 V143 V1
bls G_M36935_IG75
lsls r0, r4, 1
ldrh r0, [r1+r0]
- mov r3, r0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ mov r2, r0
+ mov r3, r2
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
sub r0, r3, 48
cmp r0, 9
@@ -1309,14 +1310,12 @@ G_M36935_IG92: ; bbWeight=0, gcVars=000000000002100000000080 {V95 V143 V1
bls G_M36935_IG75
lsls r3, r4, 1
ldrh r3, [r1+r3]
- mov r0, r3
- mov r3, r0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG93: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
cmp r3, 32
beq SHORT G_M36935_IG92
cmp r3, 44
- bne SHORT G_M36935_IG100
+ bne SHORT G_M36935_IG102
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG94: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
adds r4, r4, 1
@@ -1324,10 +1323,8 @@ G_M36935_IG94: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {
bls G_M36935_IG75
lsls r3, r4, 1
ldrh r3, [r1+r3]
- mov r0, r3
- cmp r0, 32
+ cmp r3, 32
beq SHORT G_M36935_IG94
- mov r3, r0
cmp r3, 45
bne SHORT G_M36935_IG95
movs r3, 1
@@ -1336,9 +1333,10 @@ G_M36935_IG94: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {
bls G_M36935_IG75
lsls r0, r4, 1
ldrh r0, [r1+r0]
+ mov lr, r0
str r3, [sp+0x90] // [V08 loc4]
- mov r3, r0
- ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r3, lr
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG95: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
sub r12, r3, 48
mov lr, r12
@@ -1346,56 +1344,79 @@ G_M36935_IG95: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {
bhs G_M36935_IG74
adds r4, r4, 1
cmp r8, r4
- bhi SHORT G_M36935_IG97
- b SHORT G_M36935_IG75
- ;; size=22 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG75
+ cmp r4, 0
+ blt SHORT G_M36935_IG99
+ b SHORT G_M36935_IG97
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG96: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
- movs r3, 10
- mul lr, lr, r3
- add r0, lr
- sub lr, r0, 48
+ movs r0, 10
+ mul lr, lr, r0
+ add r3, lr
+ sub lr, r3, 48
+ mov r3, lr
+ adds r4, r4, 1
+ cmp r8, r4
+ mov lr, r3
+ bls G_M36935_IG75
+ ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36935_IG97: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+ lsls r3, r4, 1
+ ldrh r3, [r1+r3]
+ sub r0, r3, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG101
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp lr, r0
+ blt SHORT G_M36935_IG96
+ b SHORT G_M36935_IG101
+ ;; size=26 bbWeight=0 PerfScore 0.00
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+ movs r0, 10
+ mul lr, lr, r0
+ add r3, lr
+ sub lr, r3, 48
str lr, [sp+0x94] // [V07 loc3]
adds r4, r4, 1
cmp r8, r4
ldr lr, [sp+0x94] // [V07 loc3]
bls G_M36935_IG75
;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG97: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+G_M36935_IG99: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
cmp r4, r8
bhs G_M36935_IG81
- lsls r3, r4, 1
- ldrh r3, [r1+r3]
- mov r0, r3
- sub r3, r0, 48
- cmp r3, 9
- bhi SHORT G_M36935_IG99
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp lr, r3
- blt SHORT G_M36935_IG96
- b SHORT G_M36935_IG99
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+ lsls r0, r4, 1
+ ldrh r3, [r1+r0]
+ sub r0, r3, 48
+ cmp r0, 9
+ bhi SHORT G_M36935_IG101
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp lr, r0
+ blt SHORT G_M36935_IG98
+ b SHORT G_M36935_IG101
+ ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36935_IG100: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
adds r4, r4, 1
cmp r8, r4
bls G_M36935_IG75
- lsls r0, r4, 1
- ldrh r0, [r1+r0]
+ lsls r3, r4, 1
+ ldrh r3, [r1+r3]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG99: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
- cmp r0, 32
- mov r3, r0
- beq SHORT G_M36935_IG98
+G_M36935_IG101: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+ cmp r3, 32
+ beq SHORT G_M36935_IG100
str lr, [sp+0x94] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M36935_IG102: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
cmp r3, 125
beq G_M36935_IG20
cmp r3, 58
bne G_M36935_IG76
mov r0, r4
;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcVars=000000000000100000000080 {V143 V150}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
+G_M36935_IG103: ; bbWeight=0, gcVars=000000000000100000000080 {V143 V150}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
; GC ptr vars -{V07 V95}
adds r4, r4, 1
cmp r8, r4
@@ -1403,12 +1424,12 @@ G_M36935_IG101: ; bbWeight=0, gcVars=000000000000100000000080 {V143 V150}
lsls r3, r4, 1
ldrh r3, [r1+r3]
cmp r3, 125
- beq SHORT G_M36935_IG102
+ beq SHORT G_M36935_IG104
cmp r3, 123
- bne SHORT G_M36935_IG101
+ bne SHORT G_M36935_IG103
b SHORT G_M36935_IG76
;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG102: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+G_M36935_IG104: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
adds r0, r0, 1
str r4, [sp+0x9C] // [V05 loc1]
subs r3, r4, r0
@@ -1425,15 +1446,15 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022
str r12, [sp+0x38] // [V70 tmp49]
; GC ptr vars +{V70}
cmp r3, 0
- bge SHORT G_M36935_IG103
+ bge SHORT G_M36935_IG105
movs r0, 0
- b SHORT G_M36935_IG104
+ b SHORT G_M36935_IG106
;; size=44 bbWeight=0 PerfScore 0.00
-G_M36935_IG103: ; bbWeight=0, gcVars=000001000000100000000080 {V70 V143 V150}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, gcvars, byref
+G_M36935_IG105: ; bbWeight=0, gcVars=000001000000100000000080 {V70 V143 V150}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, gcvars, byref
; byrRegs -[r1 r12]
movs r0, 1
;; size=2 bbWeight=0 PerfScore 0.00
-G_M36935_IG104: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz
+G_M36935_IG106: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz
...
+48 (+2.22%) : 366620.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -14,9 +14,9 @@
; V02 arg2 [V02,T17] ( 5, 7.99) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T26] ( 4, 4 ) struct ( 8) [sp+0xB4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T43] ( 3, 2.99) ref -> [sp+0x48] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 43.75) int -> [sp+0x8C] ld-addr-op
-; V06 loc2 [V06,T11] ( 29, 11.92) ushort -> [sp+0x88]
-; V07 loc3 [V07,T29] ( 13, 5.96) int -> [sp+0x84]
+; V05 loc1 [V05,T00] ( 67, 43.75) int -> [sp+0x8C] ld-addr-op
+; V06 loc2 [V06,T11] ( 32, 11.92) ushort -> [sp+0x88]
+; V07 loc3 [V07,T29] ( 16, 5.96) int -> [sp+0x84]
; V08 loc4 [V08,T38] ( 5, 3.97) ubyte -> [sp+0x80]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T20] ( 7, 7.95) int -> [sp+0x7C]
@@ -151,9 +151,9 @@
; V139 cse0 [V139,T31] ( 3, 5.96) int -> r2 "CSE - moderate"
; V140 cse1 [V140,T33] ( 3, 5.95) int -> r1 "CSE - moderate"
; V141 cse2 [V141,T32] ( 5, 5.96) int -> registers multi-def "CSE - moderate"
-; V142 cse3 [V142,T02] ( 19, 17.91) int -> [sp+0x50] spill-single-def "CSE - aggressive"
+; V142 cse3 [V142,T02] ( 20, 17.91) int -> [sp+0x50] spill-single-def "CSE - aggressive"
; V143 cse4 [V143,T07] ( 14, 13.97) int -> [sp+0x4C] "CSE - moderate"
-; V144 cse5 [V144,T08] ( 15, 13.93) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V144 cse5 [V144,T08] ( 16, 13.93) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V145 rat0 [V145,T04] ( 6, 15.89) ref -> registers class-hnd "replacement local" <<unknown class>>
; V146 rat1 [V146,T05] ( 6, 15.89) ref -> registers class-hnd "replacement local" <<unknown class>>
;
@@ -260,7 +260,7 @@ G_M36935_IG08: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
G_M36935_IG09: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
ldr r3, [sp+0x54] // [V100 tmp79]
cmp r10, r3
- bhi G_M36935_IG96
+ bhi G_M36935_IG98
cmp r10, 0
bge SHORT G_M36935_IG10
movs r0, 0
@@ -287,7 +287,7 @@ G_M36935_IG12: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r
ldr r3, [r5+0x04]
ldr r2, [r0+0x04]
cmp r3, r2
- bhi G_M36935_IG96
+ bhi G_M36935_IG98
ldr r0, [r0]
lsls r1, r3, 1
adds r1, r0, r1
@@ -314,7 +314,7 @@ G_M36935_IG14: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r
; gcr arg pop 0
ldr r2, [sp+0x70] // [V55 tmp34]
cmp r10, r2
- bhi G_M36935_IG97
+ bhi G_M36935_IG99
lsl r2, r10, 1
ldr r0, [sp+0x30] // [V56 tmp35]
; byrRegs +[r0]
@@ -340,14 +340,14 @@ G_M36935_IG14: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r
ldrh r0, [r3+r0]
adds r4, r4, 1
cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r2, r4, 1
ldrh r2, [r3+r2]
str r2, [sp+0x88] // [V06 loc2]
cmp r0, r2
beq G_M36935_IG50
cmp r0, 123
- bne G_M36935_IG90
+ bne G_M36935_IG92
movs r1, 0
str r1, [sp+0x84] // [V07 loc3]
mov lr, 0
@@ -397,10 +397,10 @@ G_M36935_IG18: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r
sub r2, r3, 48
str r2, [sp+0x7C] // [V10 loc6]
cmp r2, 10
- bhs G_M36935_IG91
+ bhs G_M36935_IG93
adds r4, r4, 1
cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r3, r4, 1
ldr r1, [sp+0x14] // [V144 cse5]
; byrRegs +[r1]
@@ -434,7 +434,7 @@ G_M36935_IG21: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r
movs r3, 0
ldr r2, [sp+0x7C] // [V10 loc6]
cmp r2, r9
- bhs G_M36935_IG95
+ bhs G_M36935_IG97
lsls r1, r2, 2
ldr lr, [r8+r1]
; gcrRegs +[lr]
@@ -443,7 +443,7 @@ G_M36935_IG21: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r
ldr r12, [sp+0x48] // [V04 loc0]
; gcrRegs +[r12]
cmp r12, 0
- bne G_M36935_IG68
+ bne G_M36935_IG70
;; size=50 bbWeight=1.99 PerfScore 31.79
G_M36935_IG22: ; bbWeight=1.99, gcVars=000000000004080000001000 {V04 V13 V91}, gcrefRegs=44C8 {r3 r6 r7 r10 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz
; gcrRegs -[r12] +[r3 r10]
@@ -472,7 +472,7 @@ G_M36935_IG25: ; bbWeight=0.99, gcrefRegs=40CA {r1 r3 r6 r7 lr}, byrefReg
movw r2, 0xd1ff
movt r2, 0xd1ff
cmp r1, r2
- bne G_M36935_IG71
+ bne G_M36935_IG73
movs r1, 0
mov r2, r1
; gcrRegs +[r2]
@@ -487,7 +487,7 @@ G_M36935_IG26: ; bbWeight=1.99, gcrefRegs=40CA {r1 r3 r6 r7 lr}, byrefReg
str r2, [sp+0x3C] // [V18 loc14]
; GC ptr vars +{V18}
ldr r0, [sp+0x84] // [V07 loc3]
- bne G_M36935_IG72
+ bne G_M36935_IG74
;; size=12 bbWeight=1.99 PerfScore 9.93
G_M36935_IG27: ; bbWeight=1.99, gcrefRegs=40C8 {r3 r6 r7 lr}, byrefRegs=0120 {r5 r8}, byref, isz
; gcrRegs -[r1-r2]
@@ -503,7 +503,7 @@ G_M36935_IG28: ; bbWeight=0.99, gcrefRegs=40CC {r2 r3 r6 r7 lr}, byrefReg
movw r1, 0xd1ff
movt r1, 0xd1ff
cmp r2, r1
- bne G_M36935_IG75
+ bne G_M36935_IG77
movs r2, 0
;; size=18 bbWeight=0.99 PerfScore 5.96
G_M36935_IG29: ; bbWeight=1.99, gcrefRegs=40CC {r2 r3 r6 r7 lr}, byrefRegs=0120 {r5 r8}, byref, isz
@@ -513,16 +513,16 @@ G_M36935_IG29: ; bbWeight=1.99, gcrefRegs=40CC {r2 r3 r6 r7 lr}, byrefReg
str r1, [sp+0x38] // [V20 loc16]
; GC ptr vars +{V20}
cmp r1, 0
- bne G_M36935_IG76
+ bne G_M36935_IG78
cmp lr, 0
- beq G_M36935_IG80
+ beq G_M36935_IG82
ldr r1, [lr]
; gcrRegs -[r1]
movw r3, 0xd1ff
; gcrRegs -[r3]
movt r3, 0xd1ff
cmp r1, r3
- bne G_M36935_IG81
+ bne G_M36935_IG83
;; size=36 bbWeight=1.99 PerfScore 21.86
G_M36935_IG30: ; bbWeight=1.99, gcVars=000000000000080000000000 {V04}, gcrefRegs=40C0 {r6 r7 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref
; gcrRegs -[r2]
@@ -535,7 +535,7 @@ G_M36935_IG31: ; bbWeight=1.99, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0120
cmp r3, 0
str r0, [sp+0x84] // [V07 loc3]
str r10, [sp+0x80] // [V08 loc4]
- beq G_M36935_IG82
+ beq G_M36935_IG84
;; size=12 bbWeight=1.99 PerfScore 7.95
G_M36935_IG32: ; bbWeight=0.99, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0120 {r5 r8}, byref
mov r10, r3
@@ -546,7 +546,7 @@ G_M36935_IG33: ; bbWeight=1.99, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012
ldr r3, [r10+0x04]
ldr r0, [sp+0x84] // [V07 loc3]
cmp r3, r0
- blt G_M36935_IG83
+ blt G_M36935_IG85
;; size=12 bbWeight=1.99 PerfScore 7.95
G_M36935_IG34: ; bbWeight=1.99, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
ldr r2, [r5+0x04]
@@ -568,7 +568,7 @@ G_M36935_IG36: ; bbWeight=1.98, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012
ldr r2, [sp+0x60] // [V76 tmp55]
cmp r2, r1
str r3, [sp+0x4C] // [V143 cse4]
- bhi G_M36935_IG96
+ bhi G_M36935_IG98
ldr r0, [r0]
lsl lr, r2, 1
add lr, r0
@@ -596,7 +596,7 @@ G_M36935_IG38: ; bbWeight=1.98, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012
ldr r3, [sp+0x4C] // [V143 cse4]
ldr r2, [sp+0x5C] // [V80 tmp59]
cmp r3, r2
- bhi G_M36935_IG97
+ bhi G_M36935_IG99
;; size=22 bbWeight=1.98 PerfScore 15.86
G_M36935_IG39: ; bbWeight=1.99, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
add r1, r10, 8
@@ -795,11 +795,12 @@ G_M36935_IG53: ; bbWeight=0, gcVars=000000000004080000000100 {V04 V91 V14
str r2, [sp+0x7C] // [V10 loc6]
adds r4, r4, 1
cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r0, r4, 1
ldrh r0, [r1+r0]
- mov r3, r0
- ;; size=28 bbWeight=0 PerfScore 0.00
+ mov r2, r0
+ mov r3, r2
+ ;; size=30 bbWeight=0 PerfScore 0.00
G_M36935_IG54: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
sub r0, r3, 48
cmp r0, 9
@@ -815,134 +816,154 @@ G_M36935_IG54: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r
G_M36935_IG55: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
adds r4, r4, 1
cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r3, r4, 1
ldrh r3, [r1+r3]
- mov r0, r3
- mov r3, r0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG56: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
cmp r3, 32
beq SHORT G_M36935_IG55
cmp r3, 44
- bne SHORT G_M36935_IG63
+ bne SHORT G_M36935_IG65
;; size=8 bbWeight=0 PerfScore 0.00
G_M36935_IG57: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
adds r4, r4, 1
cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r3, r4, 1
ldrh r3, [r1+r3]
- mov r0, r3
- cmp r0, 32
+ cmp r3, 32
beq SHORT G_M36935_IG57
- mov r3, r0
cmp r3, 45
bne SHORT G_M36935_IG58
movs r3, 1
adds r4, r4, 1
cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r0, r4, 1
ldrh r0, [r1+r0]
+ mov lr, r0
str r3, [sp+0x80] // [V08 loc4]
- mov r3, r0
- ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r3, lr
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG58: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
sub r0, r3, 48
mov lr, r0
cmp lr, 10
- bhs G_M36935_IG91
...
librariestestsnotieredcompilation.run.linux.arm.Release.mch
+8 (+0.64%) : 131138.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,T30] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T22] ( 4, 10.01) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T29] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>>
+; V01 loc1 [V01,T14] ( 7, 21.83) ref -> r5 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T09] ( 7, 24.76) int -> r0
;* 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,T36] ( 3, 1 ) ref -> [sp+0x50] class-hnd exact EH-live single-def <System.IO.Tests.TestSafeBuffer>
-; V05 loc5 [V05,T35] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor>
-; V06 loc6 [V06,T07] ( 8, 29.03) int -> r4
+; V04 loc4 [V04,T35] ( 3, 1 ) ref -> [sp+0x50] class-hnd exact EH-live single-def <System.IO.Tests.TestSafeBuffer>
+; V05 loc5 [V05,T34] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor>
+; V06 loc6 [V06,T07] ( 8, 28.75) int -> r4
; V07 OutArgs [V07 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T28] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V09 tmp2 [V09,T23] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
-; V10 tmp3 [V10,T31] ( 2, 4.01) int -> r4 "Inlining Arg"
-; V11 tmp4 [V11,T29] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T25] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
+; V09 tmp2 [V09,T22] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V10 tmp3 [V10,T30] ( 2, 4.01) int -> r4 "Inlining Arg"
+; V11 tmp4 [V11,T28] ( 3, 6.01) ref -> r8 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,T34] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V14 tmp7 [V14,T24] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp8 [V15,T25] ( 4, 8.01) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V16 tmp9 [V16,T14] ( 2, 16.02) int -> [sp+0x64] spill-single-def "Inlining Arg"
-; V17 tmp10 [V17,T10] ( 3, 24.04) ref -> [sp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T33] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V14 tmp7 [V14,T23] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp8 [V15,T24] ( 4, 8.01) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V16 tmp9 [V16,T15] ( 2, 15.86) int -> [sp+0x64] spill-single-def "Inlining Arg"
+; V17 tmp10 [V17,T11] ( 3, 23.80) ref -> [sp+0x40] 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,T17] ( 3, 12.02) ref -> [sp+0x3C] 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 -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T18] ( 3, 11.90) ref -> [sp+0x3C] 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 -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V21 tmp14 [V21,T02] ( 4, 31.73) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T15] ( 2, 16.02) int -> [sp+0x60] spill-single-def "Inlining Arg"
-; V24 tmp17 [V24,T11] ( 3, 24.04) ref -> [sp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T16] ( 2, 15.86) int -> [sp+0x60] spill-single-def "Inlining Arg"
+; V24 tmp17 [V24,T12] ( 3, 23.80) ref -> [sp+0x30] 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,T18] ( 3, 12.02) ref -> [sp+0x2C] 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 -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T19] ( 3, 11.90) ref -> [sp+0x2C] 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 -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V28 tmp21 [V28,T04] ( 4, 31.73) ref -> [sp+0x24] 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 ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T16] ( 2, 16.02) ushort -> [sp+0x5C] spill-single-def "Inlining Arg"
-; V34 tmp27 [V34,T12] ( 3, 24.04) ref -> [sp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T17] ( 2, 15.86) ushort -> [sp+0x5C] spill-single-def "Inlining Arg"
+; V34 tmp27 [V34,T13] ( 3, 23.80) ref -> [sp+0x20] 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,T19] ( 3, 12.02) ref -> [sp+0x1C] 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 -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> [sp+0x14] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T20] ( 3, 11.90) ref -> [sp+0x1C] 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 -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V38 tmp31 [V38,T06] ( 4, 31.73) ref -> [sp+0x14] 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 ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T32] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP
-; V43 tmp36 [V43,T26] ( 3, 8.01) ubyte -> r3 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP
+; V43 tmp36 [V43,T26] ( 3, 7.93) ubyte -> r3 "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,T33] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP
-; V47 tmp40 [V47,T27] ( 2, 8.01) ubyte -> r0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T32] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP
+; V47 tmp40 [V47,T27] ( 3, 7.93) ubyte -> r8 "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,12 +64,11 @@
;* 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 -> r3 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T38] ( 6, 0 ) struct ( 4) [sp+0x58] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V57 PSPSym [V57,T37] ( 1, 1 ) int -> [sp+0x68] do-not-enreg[V] "PSPSym"
-; V58 cse0 [V58,T13] ( 5, 20.03) byref -> r8 "CSE - moderate"
-; V59 cse1 [V59,T20] ( 3, 12.02) int -> r8 "CSE - moderate"
-; V60 cse2 [V60,T21] ( 3, 11.88) int -> r2 "CSE - moderate"
-; V61 cse3 [V61,T08] ( 9, 27.04) int -> [sp+0x54] spill-single-def "CSE - aggressive"
+; V56 tmp49 [V56,T37] ( 6, 0 ) struct ( 4) [sp+0x58] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V57 PSPSym [V57,T36] ( 1, 1 ) int -> [sp+0x68] do-not-enreg[V] "PSPSym"
+; V58 cse0 [V58,T10] ( 6, 23.80) int -> r8 "CSE - moderate"
+; V59 cse1 [V59,T21] ( 3, 11.88) int -> r2 "CSE - moderate"
+; V60 cse2 [V60,T08] ( 9, 26.80) int -> [sp+0x54] spill-single-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x78]
;
; Lcl frame size = 108
@@ -149,7 +148,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
str r7, [sp+0x50]
; GC ptr vars +{V04}
;; size=40 bbWeight=1 PerfScore 14.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000001000000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000000800000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff
movt r0, 0xd1ff
movw r3, 0xd1ff
@@ -184,7 +183,7 @@ G_M53770_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0
str r6, [sp+0x4C]
; GC ptr vars +{V05}
;; size=22 bbWeight=1 PerfScore 8.00
-G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
str r4, [sp]
; gcr arg write
movs r2, 0
@@ -266,7 +265,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefR
movw r0, 0xd1ff
movt r0, 0xd1ff
str r0, [r2+0x0C]
- ldr r9, [sp+0x54] // [V61 cse3]
+ ldr r9, [sp+0x54] // [V60 cse2]
add r0, r9, 152
movw r3, 0xd1ff
movt r3, 0xd1ff
@@ -331,7 +330,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefR
; gcr arg pop 0
movs r4, 0
;; size=262 bbWeight=1.00 PerfScore 94.15
-G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG08: ; bbWeight=3.97, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
lsls r0, r4, 4
add r8, r0, 8
ldr r3, [r5+r8]
@@ -377,7 +376,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ; GC ptr vars -{V17 V19}
+ ; GC ptr vars -{V19}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1]
; byrRegs -[r0]
@@ -401,7 +400,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
; gcrRegs +[r1]
movw r12, 0xd1ff
movt r12, 0xd1ff
- ; GC ptr vars -{V20} +{V17}
+ ; GC ptr vars -{V20}
blx r12 // CORINFO_HELP_ASSIGN_REF
; gcrRegs -[r1-r2]
; byrRegs -[r0]
@@ -449,11 +448,12 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r2]
; gcr arg pop 0
- add r8, r5
- ; byrRegs +[r8]
- ldr r3, [r8+0x08]
+ add r0, r5, r8
+ ; byrRegs +[r0]
+ ldr r3, [r0+0x08]
str r3, [sp+0x60] // [V23 tmp16]
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff
movw r2, 0xd1ff
movt r2, 0xd1ff
@@ -566,17 +566,21 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000
blx r3 // <unknown method>
; gcrRegs -[r2]
; gcr arg pop 0
- ldrb r3, [r8+0x04]
+ add r0, r5, r8
+ ; byrRegs +[r0]
+ ldrb r3, [r0+0x04]
cmp r3, 0
bne SHORT G_M53770_IG12
- ldrh r3, [r8+0x0C]
+ add r0, r5, r8
+ ldrh r3, [r0+0x0C]
str r3, [sp+0x5C] // [V33 tmp26]
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff
movw r2, 0xd1ff
movt r2, 0xd1ff
- ;; size=426 bbWeight=4.01 PerfScore 592.92
-G_M53770_IG09: ; bbWeight=4.01, isz, extend
+ ;; size=430 bbWeight=3.97 PerfScore 594.92
+G_M53770_IG09: ; bbWeight=3.97, isz, extend
blx r2 // CORINFO_HELP_NEWSFAST
; gcrRegs +[r0]
; gcr arg pop 0
@@ -686,16 +690,18 @@ G_M53770_IG09: ; bbWeight=4.01, isz, extend
blx r3 // <unknown method>
; gcrRegs -[r2]
; gcr arg pop 0
- ldrb r0, [r8+0x0E]
- cmp r0, 0
+ add r0, r5, r8
+ ; byrRegs +[r0]
+ ldrb r8, [r0+0x0E]
+ cmp r8, 0
beq SHORT G_M53770_IG13
- ;; size=180 bbWeight=4.01 PerfScore 260.40
-G_M53770_IG10: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r8]
+ ;; size=186 bbWeight=3.97 PerfScore 261.77
+G_M53770_IG10: ; bbWeight=3.96, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r0]
adds r4, r4, 1
cmp r4, 12
blt G_M53770_IG08
- ;; size=8 bbWeight=4 PerfScore 12.00
+ ;; size=8 bbWeight=3.96 PerfScore 11.88
G_M53770_IG11: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r5]
b SHORT G_M53770_IG14
@@ -721,8 +727,7 @@ G_M53770_IG12: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b
G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
movs r1, 1
strb r1, [sp+0x58] // [V56 tmp49]
- movs r1, 0
- strb r1, [sp+0x59] // [V56 tmp49+0x01]
+ strb r8, [sp+0x59] // [V56 tmp49+0x01]
ldrh r1, [sp+0x58] // [V56 tmp49]
movs r0, 0
movw r3, 0xd1ff
@@ -737,7 +742,7 @@ G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b
; gcrRegs -[r0]
; gcr arg pop 0
bkpt
- ;; size=42 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M53770_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref
movs r0, 0
strb r0, [r6+0x20]
@@ -765,14 +770,14 @@ G_M53770_IG16: ; bbWeight=1, epilog, nogc, extend
add sp, 108
pop {r4,r5,r6,r7,r8,r9,r10,r11,pc}
;; size=6 bbWeight=1 PerfScore 2.00
-G_M53770_IG17: ; bbWeight=0, gcVars=0000001800000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V04 V05 V36}
...
realworld.run.linux.arm.checked.mch
+70 (+3.09%) : 3405.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 -> r5 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> r5 this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> [sp+0x48] class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T25] ( 5, 15 ) ref -> r6 class-hnd single-def <System.String>
; V03 arg3 [V03,T52] ( 4, 7 ) struct ( 8) [sp+0xAC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T70] ( 3, 7 ) ref -> [sp+0x44] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r10 ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [sp+0x84]
-; V07 loc3 [V07,T05] ( 12, 62 ) int -> [sp+0x80]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r10 ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [sp+0x84]
+; V07 loc3 [V07,T05] ( 15, 62 ) int -> [sp+0x80]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [sp+0x7C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T07] ( 7, 48 ) int -> r9
@@ -25,7 +25,7 @@
;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V15 loc11 [V15,T09] ( 10, 38 ) int -> r8
; V16 loc12 [V16,T43] ( 3, 12 ) ushort -> r3
-; V17 loc13 [V17,T31] ( 7, 14 ) int -> r1
+; V17 loc13 [V17,T31] ( 7, 14 ) int -> lr
; V18 loc14 [V18,T38] ( 3, 12 ) ref -> [sp+0x3C] class-hnd spill-single-def <<unknown class>>
; V19 loc15 [V19 ] ( 4, 16 ) int -> [sp+0x78] do-not-enreg[X] addr-exposed ld-addr-op
; V20 loc16 [V20,T71] ( 3, 6 ) ref -> [sp+0x38] class-hnd spill-single-def <<unknown class>>
@@ -202,8 +202,8 @@
; V191 cse3 [V191,T74] ( 3, 6 ) int -> r1 "CSE - conservative"
; V192 cse4 [V192,T75] ( 3, 6 ) int -> r2 "CSE - conservative"
; V193 cse5 [V193,T87] ( 3, 1.50) int -> r2 "CSE - conservative"
-; V194 cse6 [V194,T02] ( 19,144 ) int -> r4 "CSE - aggressive"
-; V195 cse7 [V195,T04] ( 15,120 ) byref -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V194 cse6 [V194,T03] ( 20,128.16) int -> r4 "CSE - aggressive"
+; V195 cse7 [V195,T04] ( 16,120 ) byref -> [sp+0x14] spill-single-def "CSE - aggressive"
; V196 cse8 [V196,T06] ( 21, 58 ) int -> r4 "CSE - aggressive"
; V197 cse9 [V197,T12] ( 11, 29 ) byref -> [sp+0x10] multi-def "CSE - moderate"
;
@@ -225,7 +225,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr r8, [sp+0xB0]
str r8, [sp+0x4C] // [V187 tmp166]
cmp r6, 0
- beq G_M36935_IG84
+ beq G_M36935_IG88
cmp r7, 0
bne SHORT G_M36935_IG04
;; size=18 bbWeight=1 PerfScore 6.00
@@ -263,7 +263,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000400000000000000000 {V04}, gcref
; gcrRegs -[r0]
ldr r4, [r6+0x04]
cmp r4, r10
- bls G_M36935_IG78
+ bls G_M36935_IG82
;; size=8 bbWeight=8 PerfScore 24.00
G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
add r3, r6, 8
@@ -312,10 +312,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
; gcr arg pop 0
mov r8, r0
cmp r8, 0
- blt G_M36935_IG79
+ blt G_M36935_IG83
ldr r3, [sp+0x50] // [V130 tmp109]
cmp r8, r3
- bhi G_M36935_IG91
+ bhi G_M36935_IG95
cmp r8, 0
bge SHORT G_M36935_IG10
movs r0, 0
@@ -357,7 +357,7 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
ldr r2, [r5+0x04]
ldr r1, [r0+0x04]
cmp r2, r1
- bhi G_M36935_IG91
+ bhi G_M36935_IG95
ldr r0, [r0]
lsl lr, r2, 1
add lr, r0
@@ -384,7 +384,7 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
; gcr arg pop 0
ldr r2, [sp+0x70] // [V63 tmp42]
cmp r8, r2
- bhi G_M36935_IG92
+ bhi G_M36935_IG96
lsl r2, r8, 1
ldr r0, [sp+0x30] // [V64 tmp43]
; byrRegs +[r0]
@@ -402,14 +402,14 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5},
str r0, [r5+0x04]
add r10, r8
cmp r10, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG87
lsl r0, r10, 1
ldr r8, [sp+0x14] // [V195 cse7]
; byrRegs +[r8]
ldrh r3, [r8+r0]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1
ldrh r2, [r8+r0]
cmp r3, r2
@@ -450,7 +450,7 @@ G_M36935_IG19: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V195 V1
; byrRegs +[r8]
; GC ptr vars +{V04 V12 V195 V197}
cmp r3, 123
- bne G_M36935_IG85
+ bne G_M36935_IG89
str r2, [sp+0x84] // [V06 loc2]
movs r3, 0
str r3, [sp+0x80] // [V07 loc3]
@@ -463,7 +463,7 @@ G_M36935_IG19: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V195 V1
str r12, [sp+0x54] // [V122 tmp101]
add r0, r10, -1
cmp r0, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG87
lsl r0, r10, 1
subs r0, r0, 2
ldrh r0, [r8+r0]
@@ -499,175 +499,205 @@ G_M36935_IG23: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r
; gcr arg pop 0
sub r9, r9, 48
cmp r9, 10
- bhs G_M36935_IG86
+ bhs G_M36935_IG90
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1
ldrh r0, [r8+r0]
- cmp r0, 125
- beq G_M36935_IG43
- ;; size=48 bbWeight=4 PerfScore 56.00
+ mov r3, r0
+ cmp r3, 125
+ beq G_M36935_IG47
+ ;; size=50 bbWeight=4 PerfScore 60.00
G_M36935_IG24: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
b SHORT G_M36935_IG26
;; size=2 bbWeight=2 PerfScore 2.00
G_M36935_IG25: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- movs r3, 10
- mul r3, r9, r3
- adds r0, r3, r0
- sub r9, r0, 48
+ movs r0, 10
+ mul r0, r9, r0
+ adds r3, r0, r3
+ sub r9, r3, 48
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ ldrh r3, [r8+r0]
;; size=30 bbWeight=8 PerfScore 72.00
G_M36935_IG26: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- sub r3, r0, 48
- cmp r3, 9
+ sub r0, r3, 48
+ cmp r0, 9
bhi SHORT G_M36935_IG27
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r9, r3
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r9, r0
blt SHORT G_M36935_IG25
;; size=20 bbWeight=16 PerfScore 112.00
G_M36935_IG27: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 32
+ cmp r3, 32
bne SHORT G_M36935_IG29
;; size=4 bbWeight=2 PerfScore 4.00
G_M36935_IG28: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
+ bls G_M36935_IG91
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
+ cmp r3, 32
beq SHORT G_M36935_IG28
;; size=22 bbWeight=16 PerfScore 112.00
G_M36935_IG29: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 44
- ldr r2, [sp+0x80] // [V07 loc3]
- bne SHORT G_M36935_IG36
+ cmp r3, 44
+ mov r1, r3
+ bne SHORT G_M36935_IG33
;; size=6 bbWeight=2 PerfScore 6.00
G_M36935_IG30: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
+ bls G_M36935_IG91
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
+ cmp r3, 32
beq SHORT G_M36935_IG30
;; size=22 bbWeight=16 PerfScore 112.00
G_M36935_IG31: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 45
+ cmp r3, 45
bne SHORT G_M36935_IG32
movs r1, 1
str r1, [sp+0x7C] // [V08 loc4]
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ bls G_M36935_IG91
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
;; size=26 bbWeight=2 PerfScore 18.00
G_M36935_IG32: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- subs r0, 48
- mov r2, r0
- cmp r2, 10
- bhs G_M36935_IG86
+ subs r3, 48
+ cmp r3, 10
+ bhs G_M36935_IG90
add r10, r10, 1
cmp r4, r10
- bls G_M36935_IG87
- ;; size=20 bbWeight=2 PerfScore 14.00
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r10, r4
- bhs G_M36935_IG83
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- sub r1, r0, 48
- cmp r1, 9
- bhi SHORT G_M36935_IG34
...
+70 (+3.40%) : 3169.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,T36] ( 5, 15 ) ref -> [sp+0x34] class-hnd single-def <System.String>
; V03 arg3 [V03,T55] ( 4, 7 ) struct ( 8) [sp+0x84] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [sp+0x30] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r10 ld-addr-op
-; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [sp+0x5C]
-; V07 loc3 [V07,T08] ( 12, 242 ) int -> [sp+0x58]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r10 ld-addr-op
+; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [sp+0x5C]
+; V07 loc3 [V07,T08] ( 15, 242 ) int -> [sp+0x58]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [sp+0x54]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T16] ( 7, 48 ) int -> r9
@@ -25,7 +25,7 @@
;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V15 loc11 [V15,T25] ( 6, 24 ) int -> r8
; V16 loc12 [V16,T48] ( 3, 12 ) ushort -> r3
-; V17 loc13 [V17,T42] ( 7, 14 ) int -> r1
+; V17 loc13 [V17,T42] ( 7, 14 ) int -> lr
; V18 loc14 [V18,T46] ( 3, 12 ) ref -> r0 class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 20 ) int -> [sp+0x50] do-not-enreg[X] addr-exposed ld-addr-op
; V20 loc16 [V20,T26] ( 3, 24 ) ref -> [sp+0x28] class-hnd spill-single-def <<unknown class>>
@@ -159,8 +159,8 @@
; V148 cse3 [V148,T47] ( 3, 12 ) ref -> r1 "CSE - conservative"
; V149 cse4 [V149,T49] ( 3, 12 ) int -> r3 "CSE - conservative"
; V150 cse5 [V150,T03] ( 6, 416 ) int -> r4 "CSE - aggressive"
-; V151 cse6 [V151,T12] ( 19, 144 ) int -> r4 "CSE - aggressive"
-; V152 cse7 [V152,T13] ( 15, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V151 cse6 [V151,T12] ( 20, 128.16) int -> r4 "CSE - moderate"
+; V152 cse7 [V152,T13] ( 16, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V153 cse8 [V153,T10] ( 4, 192 ) int -> r3 "CSE - moderate"
; V154 cse9 [V154,T20] ( 4, 32 ) int -> r3 "CSE - moderate"
;
@@ -182,7 +182,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {},
ldr r8, [sp+0x88]
str r8, [sp+0x38] // [V141 tmp119]
cmp r7, 0
- beq G_M4730_IG76
+ beq G_M4730_IG80
cmp r6, 0
bne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 6.00
@@ -220,7 +220,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR
; gcrRegs -[r0]
ldr r4, [r7+0x04]
cmp r4, r10
- bls G_M4730_IG71
+ bls G_M4730_IG75
;; size=8 bbWeight=8 PerfScore 24.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
str r7, [sp+0x34] // [V02 arg2]
@@ -272,10 +272,10 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
; gcr arg pop 0
mov r8, r0
cmp r8, 0
- blt G_M4730_IG73
+ blt G_M4730_IG77
ldr r3, [sp+0x3C] // [V98 tmp76]
cmp r8, r3
- bhi G_M4730_IG87
+ bhi G_M4730_IG91
cmp r8, 0
bge SHORT G_M4730_IG10
movs r0, 0
@@ -305,14 +305,14 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
; gcr arg pop 0
add r10, r8
cmp r10, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG79
lsl r0, r10, 1
ldr r8, [sp+0x14] // [V152 cse7]
; byrRegs +[r8]
ldrh r3, [r8+r0]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1
ldrh r2, [r8+r0]
cmp r3, r2
@@ -360,7 +360,7 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152
; byrRegs +[r8]
; GC ptr vars +{V13 V152}
cmp r3, 123
- bne G_M4730_IG77
+ bne G_M4730_IG81
str r2, [sp+0x5C] // [V06 loc2]
movs r3, 0
str r3, [sp+0x58] // [V07 loc3]
@@ -373,7 +373,7 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152
str r12, [sp+0x40] // [V88 tmp66]
add r0, r10, -1
cmp r0, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG79
lsl r0, r10, 1
subs r0, r0, 2
ldrh r0, [r8+r0]
@@ -409,175 +409,205 @@ G_M4730_IG19: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8},
; gcr arg pop 0
sub r9, r9, 48
cmp r9, 10
- bhs G_M4730_IG78
+ bhs G_M4730_IG82
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1
ldrh r0, [r8+r0]
- cmp r0, 125
- beq G_M4730_IG39
- ;; size=48 bbWeight=4 PerfScore 56.00
+ mov r3, r0
+ cmp r3, 125
+ beq G_M4730_IG43
+ ;; size=50 bbWeight=4 PerfScore 60.00
G_M4730_IG20: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
b SHORT G_M4730_IG22
;; size=2 bbWeight=2 PerfScore 2.00
G_M4730_IG21: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- movs r3, 10
- mul r3, r9, r3
- adds r0, r3, r0
- sub r9, r0, 48
+ movs r0, 10
+ mul r0, r9, r0
+ adds r3, r0, r3
+ sub r9, r3, 48
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ ldrh r3, [r8+r0]
;; size=30 bbWeight=8 PerfScore 72.00
G_M4730_IG22: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- sub r3, r0, 48
- cmp r3, 9
+ sub r0, r3, 48
+ cmp r0, 9
bhi SHORT G_M4730_IG23
- movw r3, 0xd1ff
- movt r3, 0xd1ff
- cmp r9, r3
+ movw r0, 0xd1ff
+ movt r0, 0xd1ff
+ cmp r9, r0
blt SHORT G_M4730_IG21
;; size=20 bbWeight=16 PerfScore 112.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 32
+ cmp r3, 32
bne SHORT G_M4730_IG25
;; size=4 bbWeight=2 PerfScore 4.00
G_M4730_IG24: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
+ bls G_M4730_IG83
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
+ cmp r3, 32
beq SHORT G_M4730_IG24
;; size=22 bbWeight=16 PerfScore 112.00
G_M4730_IG25: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 44
- ldr r2, [sp+0x58] // [V07 loc3]
- bne SHORT G_M4730_IG32
+ cmp r3, 44
+ mov r1, r3
+ bne SHORT G_M4730_IG29
;; size=6 bbWeight=2 PerfScore 6.00
G_M4730_IG26: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
+ bls G_M4730_IG83
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
+ cmp r3, 32
beq SHORT G_M4730_IG26
;; size=22 bbWeight=16 PerfScore 112.00
G_M4730_IG27: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 45
+ cmp r3, 45
bne SHORT G_M4730_IG28
movs r1, 1
str r1, [sp+0x54] // [V08 loc4]
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ bls G_M4730_IG83
+ lsl r3, r10, 1
+ ldrh r3, [r8+r3]
;; size=26 bbWeight=2 PerfScore 18.00
G_M4730_IG28: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- subs r0, 48
- mov r2, r0
- cmp r2, 10
- bhs G_M4730_IG78
+ subs r3, 48
+ cmp r3, 10
+ bhs G_M4730_IG82
add r10, r10, 1
cmp r4, r10
- bls G_M4730_IG79
- ;; size=20 bbWeight=2 PerfScore 14.00
-G_M4730_IG29: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r10, r4
- bhs G_M4730_IG75
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- sub r1, r0, 48
- cmp r1, 9
- bhi SHORT G_M4730_IG30
- movw r1, 0xd1ff
- movt r1, 0xd1ff
- cmp r2, r1
- blt SHORT G_M4730_IG35
- ;; size=34 bbWeight=16 PerfScore 176.00
-G_M4730_IG30: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 32
- bne SHORT G_M4730_IG32
- ;; size=4 bbWeight=2 PerfScore 4.00
-G_M4730_IG31: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- add r10, r10, 1
- cmp r4, r10
- bls G_M4730_IG79
- lsl r0, r10, 1
- ldrh r0, [r8+r0]
- cmp r0, 32
- beq SHORT G_M4730_IG31
- ;; size=22 bbWeight=16 PerfScore 112.00
-G_M4730_IG32: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 125
- beq SHORT G_M4730_IG34
- cmp r0, 58
- bne G_M4730_IG80
- mov r1, r10
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.linux.arm.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+140 |
| benchmarks.run_pgo.linux.arm.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+118 |
| benchmarks.run_tiered.linux.arm.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+104 |
| coreclr_tests.run.linux.arm.checked.mch |
144 |
0 |
142 |
2 |
-0 |
+10,384 |
| libraries.crossgen2.linux.arm.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
| libraries.pmi.linux.arm.checked.mch |
2 |
1 |
1 |
0 |
-20 |
+224 |
| libraries_tests.run.linux.arm.Release.mch |
320 |
0 |
320 |
0 |
-0 |
+23,358 |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
1 |
0 |
1 |
0 |
-0 |
+8 |
| realworld.run.linux.arm.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+140 |
|
475 |
1 |
472 |
2 |
-20 |
+34,476 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.linux.arm.checked.mch |
44,925 |
4,966 |
39,959 |
1,181 (2.56%) |
1,181 (2.56%) |
| benchmarks.run_pgo.linux.arm.checked.mch |
167,318 |
62,159 |
105,159 |
3,336 (1.95%) |
3,336 (1.95%) |
| benchmarks.run_tiered.linux.arm.checked.mch |
73,071 |
38,812 |
34,259 |
951 (1.28%) |
951 (1.28%) |
| coreclr_tests.run.linux.arm.checked.mch |
472,398 |
259,200 |
213,198 |
7,170 (1.50%) |
7,171 (1.50%) |
| libraries.crossgen2.linux.arm.checked.mch |
1,774 |
0 |
1,774 |
0 (0.00%) |
0 (0.00%) |
| libraries.pmi.linux.arm.checked.mch |
272,307 |
6 |
272,301 |
7,786 (2.78%) |
7,786 (2.78%) |
| libraries_tests.run.linux.arm.Release.mch |
710,649 |
443,197 |
267,452 |
16,293 (2.24%) |
16,293 (2.24%) |
| librariestestsnotieredcompilation.run.linux.arm.Release.mch |
274,641 |
21,604 |
253,037 |
33,244 (10.80%) |
33,244 (10.80%) |
| realworld.run.linux.arm.checked.mch |
36,411 |
157 |
36,254 |
1,407 (3.72%) |
1,407 (3.72%) |
|
2,053,494 |
830,101 |
1,223,393 |
71,368 (3.36%) |
71,369 (3.36%) |
jit-analyze output
benchmarks.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14772250 (overridden on cmd)
Total bytes of diff: 14772390 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 68605354 (overridden on cmd)
Total bytes of diff: 68605472 (overridden on cmd)
Total bytes of delta: 118 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_tiered.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 18108580 (overridden on cmd)
Total bytes of diff: 18108684 (overridden on cmd)
Total bytes of delta: 104 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 321785900 (overridden on cmd)
Total bytes of diff: 321796284 (overridden on cmd)
Total bytes of delta: 10384 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 68 unchanged.
libraries.pmi.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 49828568 (overridden on cmd)
Total bytes of diff: 49828772 (overridden on cmd)
Total bytes of delta: 204 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
libraries_tests.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 244096990 (overridden on cmd)
Total bytes of diff: 244120348 (overridden on cmd)
Total bytes of delta: 23358 (0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 73 unchanged.
librariestestsnotieredcompilation.run.linux.arm.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 94425864 (overridden on cmd)
Total bytes of diff: 94425872 (overridden on cmd)
Total bytes of delta: 8 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
realworld.run.linux.arm.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os linux -target_arch arm -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13618802 (overridden on cmd)
Total bytes of diff: 13618942 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
windows x86
Diffs are based on 2,290,734 contexts (838,165 MinOpts, 1,452,569 FullOpts).
MISSED contexts: base: 808 (0.04%), diff: 815 (0.04%)
Overall (+28,904 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
7,120,212 |
+80 |
| benchmarks.run_pgo.windows.x86.checked.mch |
45,137,426 |
+81 |
| benchmarks.run_tiered.windows.x86.checked.mch |
9,472,425 |
+86 |
| coreclr_tests.run.windows.x86.checked.mch |
309,367,285 |
+10,748 |
| libraries.crossgen2.windows.x86.checked.mch |
31,673,137 |
+116 |
| libraries.pmi.windows.x86.checked.mch |
49,151,797 |
+220 |
| libraries_tests.run.windows.x86.Release.mch |
184,751,383 |
+17,496 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
103,727,320 |
-3 |
| realworld.run.windows.x86.checked.mch |
11,283,258 |
+80 |
FullOpts (+28,904 bytes)
| Collection |
Base size (bytes) |
Diff size (bytes) |
| benchmarks.run.windows.x86.checked.mch |
7,119,931 |
+80 |
| benchmarks.run_pgo.windows.x86.checked.mch |
38,525,060 |
+81 |
| benchmarks.run_tiered.windows.x86.checked.mch |
5,202,833 |
+86 |
| coreclr_tests.run.windows.x86.checked.mch |
107,571,708 |
+10,748 |
| libraries.crossgen2.windows.x86.checked.mch |
31,672,077 |
+116 |
| libraries.pmi.windows.x86.checked.mch |
49,056,564 |
+220 |
| libraries_tests.run.windows.x86.Release.mch |
87,451,343 |
+17,496 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
95,047,259 |
-3 |
| realworld.run.windows.x86.checked.mch |
10,987,544 |
+80 |
Example diffs
benchmarks.run.windows.x86.checked.mch
+28 (+1.28%) : 3344.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 -> esi this class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T35] ( 7, 17.50) ref -> [ebp-0x74] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T13] ( 16, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V02 arg2 [V02,T13] ( 17, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T66] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [ebp-0x78] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T08] ( 12, 242 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T08] ( 15, 242 ) int -> [ebp-0x18]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T16] ( 7, 48 ) int -> [ebp-0x20]
@@ -165,7 +165,7 @@
; V154 cse3 [V154,T46] ( 3, 12 ) ref -> edx "CSE - conservative"
; V155 cse4 [V155,T48] ( 3, 12 ) int -> [ebp-0x64] spill-single-def "CSE - conservative"
; V156 cse5 [V156,T03] ( 6, 416 ) int -> [ebp-0x68] spill-single-def "CSE - aggressive"
-; V157 cse6 [V157,T12] ( 19, 144 ) int -> [ebp-0x6C] spill-single-def "CSE - moderate"
+; V157 cse6 [V157,T12] ( 20, 128.16) int -> [ebp-0x6C] spill-single-def "CSE - moderate"
; V158 cse7 [V158,T10] ( 4, 192 ) int -> eax "CSE - moderate"
; V159 cse8 [V159,T20] ( 4, 32 ) int -> [ebp-0x70] spill-single-def "CSE - conservative"
; TEMP_01 int -> [ebp-0xA0]
@@ -190,7 +190,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
mov eax, dword ptr [ebp+0x0C]
mov dword ptr [ebp-0x5C], eax
test edi, edi
- je G_M4730_IG78
+ je G_M4730_IG82
test ebx, ebx
jne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 4.50
@@ -229,7 +229,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR
mov ecx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x6C], ecx
cmp ecx, edx
- jbe G_M4730_IG73
+ jbe G_M4730_IG77
;; size=14 bbWeight=8 PerfScore 34.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
lea eax, bword ptr [edi+2*edx+0x08]
@@ -274,9 +274,9 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
; byrRegs -[ecx]
mov dword ptr [ebp-0x38], eax
test eax, eax
- jl G_M4730_IG75
+ jl G_M4730_IG79
cmp eax, dword ptr [ebp-0x58]
- ja G_M4730_IG89
+ ja G_M4730_IG93
mov ecx, eax
not ecx
shr ecx, 31
@@ -294,7 +294,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
add edx, dword ptr [ebp-0x38]
mov eax, dword ptr [ebp-0x6C]
cmp edx, eax
- jae G_M4730_IG77
+ jae G_M4730_IG81
;; size=206 bbWeight=4 PerfScore 232.00
G_M4730_IG08: ; bbWeight=4, isz, extend
movzx ecx, word ptr [edi+2*edx+0x08]
@@ -328,7 +328,7 @@ G_M4730_IG10: ; bbWeight=2, gcVars=000000000000000000000000 {}, gcrefRegs
; gcrRegs -[eax esi]
; GC ptr vars -{V01 V04}
mov ecx, edx
- jmp G_M4730_IG81
+ jmp G_M4730_IG85
;; size=7 bbWeight=2 PerfScore 4.50
G_M4730_IG11: ; bbWeight=2, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
@@ -353,7 +353,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR
; gcrRegs -[edi]
; GC ptr vars -{V01 V35 V65}
cmp dword ptr [ebp-0x24], 123
- jne G_M4730_IG79
+ jne G_M4730_IG83
mov dword ptr [ebp-0x14], ecx
mov gword ptr [ebp-0x74], ebx
; GC ptr vars +{V01}
@@ -371,7 +371,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR
mov edx, dword ptr [ebp-0x10]
lea edi, [edx-0x01]
cmp edi, dword ptr [ebp-0x6C]
- jae G_M4730_IG77
+ jae G_M4730_IG81
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
mov dword ptr [ebp-0x10], edx
@@ -387,16 +387,16 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR
lea edx, [eax-0x30]
mov dword ptr [ebp-0x20], edx
cmp edx, 10
- jae G_M4730_IG80
+ jae G_M4730_IG84
mov ecx, dword ptr [ebp-0x10]
inc ecx
mov eax, dword ptr [ebp-0x6C]
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov gword ptr [ebp+0x10], edi
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 125
- je G_M4730_IG38
+ je G_M4730_IG42
;; size=139 bbWeight=4 PerfScore 162.00
G_M4730_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
@@ -408,7 +408,7 @@ G_M4730_IG15: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x20], edi
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov edx, gword ptr [ebp+0x10]
; gcrRegs +[edx]
movzx edi, word ptr [edx+2*ecx+0x08]
@@ -427,28 +427,28 @@ G_M4730_IG16: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M4730_IG17: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x20], edi
;; size=3 bbWeight=8 PerfScore 8.00
-G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edx, 32
- jne G_M4730_IG35
- ;; size=9 bbWeight=2 PerfScore 2.50
-G_M4730_IG19: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M4730_IG27
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M4730_IG19: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 32
- je G_M4730_IG34
- ;; size=26 bbWeight=16 PerfScore 92.00
-G_M4730_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG26
+ ;; size=22 bbWeight=16 PerfScore 92.00
+G_M4730_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp edx, 44
- jne G_M4730_IG33
- ;; size=9 bbWeight=2 PerfScore 2.50
+ jne SHORT G_M4730_IG25
+ ;; size=5 bbWeight=2 PerfScore 2.50
G_M4730_IG21: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 32
je SHORT G_M4730_IG21
@@ -459,124 +459,152 @@ G_M4730_IG22: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov ebx, 1
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
movzx edx, word ptr [edi+2*ecx+0x08]
mov dword ptr [ebp-0x1C], ebx
;; size=27 bbWeight=2 PerfScore 12.00
-G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
add edx, -48
cmp edx, 10
- jae G_M4730_IG32
+ jae SHORT G_M4730_IG24
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
- ;; size=21 bbWeight=2 PerfScore 6.00
-G_M4730_IG24: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, eax
- jae G_M4730_IG77
- mov gword ptr [ebp+0x10], edi
- movzx edi, word ptr [edi+2*ecx+0x08]
- ; gcrRegs -[edi]
- lea eax, [edi-0x30]
- cmp eax, 9
- ja SHORT G_M4730_IG25
- cmp edx, 0xD1FFAB1E
- jl G_M4730_IG36
- ;; size=36 bbWeight=16 PerfScore 116.00
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp edi, 32
- jne SHORT G_M4730_IG31
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG26: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- mov eax, dword ptr [ebp-0x6C]
- cmp eax, ecx
- jbe G_M4730_IG81
- mov edi, gword ptr [ebp+0x10]
- ; gcrRegs +[edi]
- movzx edi, word ptr [edi+2*ecx+0x08]
- ; gcrRegs -[edi]
- cmp edi, 32
- je SHORT G_M4730_IG30
- ;; size=25 bbWeight=16 PerfScore 108.00
-G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp edi, 125
- je SHORT G_M4730_IG29
- cmp edi, 58
- jne G_M4730_IG82
- mov dword ptr [ebp-0x28], ecx
- ;; size=17 bbWeight=2 PerfScore 7.00
-G_M4730_IG28: ; bbWeight=16, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V93}
- inc ecx
- cmp eax, ecx
- jbe G_M4730_IG81
- mov edi, gword ptr [ebp+0x10]
- ; gcrRegs +[edi]
- movzx edi, word ptr [edi+2*ecx+0x08]
- ; gcrRegs -[edi]
- cmp edi, 125
- je SHORT G_M4730_IG37
- cmp edi, 123
- je G_M4730_IG82
- mov eax, dword ptr [ebp-0x6C]
- jmp SHORT G_M4730_IG28
- ;; size=36 bbWeight=16 PerfScore 160.00
-G_M4730_IG29: ; bbWeight=1, gcVars=000000020000000840000000 {V01 V04 V93}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V93}
- mov ebx, edx
- jmp G_M4730_IG38
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M4730_IG30: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M4730_IG26
- ;; size=2 bbWeight=8 PerfScore 16.00
-G_M4730_IG31: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x6C]
- jmp SHORT G_M4730_IG27
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M4730_IG32: ; bbWeight=1, gcVars=000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
+ jbe G_M4730_IG85
+ test ecx, ecx
+ jl SHORT G_M4730_IG33
+ jmp SHORT G_M4730_IG30
+ ;; size=23 bbWeight=2 PerfScore 12.50
...
benchmarks.run_pgo.windows.x86.checked.mch
+36 (+1.59%) : 7877.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)
@@ -10,12 +10,12 @@
;
; V00 this [V00,T01] ( 33, 559.50) ref -> esi this class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T35] ( 7, 17.50) ref -> [ebp-0x7C] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T13] ( 16, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V02 arg2 [V02,T13] ( 17, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T66] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [ebp-0x80] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T07] ( 32, 260 ) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T08] ( 12, 242 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T07] ( 35, 260 ) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T08] ( 15, 242 ) int -> [ebp-0x18]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T16] ( 7, 48 ) int -> [ebp-0x20]
@@ -175,7 +175,7 @@
; V164 cse3 [V164,T46] ( 3, 12 ) ref -> edx "CSE - conservative"
; V165 cse4 [V165,T48] ( 3, 12 ) int -> [ebp-0x6C] spill-single-def "CSE - conservative"
; V166 cse5 [V166,T03] ( 6, 416 ) int -> [ebp-0x70] spill-single-def "CSE - aggressive"
-; V167 cse6 [V167,T12] ( 19, 144 ) int -> [ebp-0x74] spill-single-def "CSE - moderate"
+; V167 cse6 [V167,T12] ( 20, 128.16) int -> [ebp-0x74] spill-single-def "CSE - moderate"
; V168 cse7 [V168,T10] ( 4, 192 ) int -> eax "CSE - moderate"
; V169 cse8 [V169,T20] ( 4, 32 ) int -> [ebp-0x78] spill-single-def "CSE - conservative"
; TEMP_01 int -> [ebp-0xB0]
@@ -200,7 +200,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
mov eax, dword ptr [ebp+0x0C]
mov dword ptr [ebp-0x64], eax
test edi, edi
- je G_M4730_IG80
+ je G_M4730_IG83
test ebx, ebx
jne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 4.50
@@ -239,7 +239,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR
mov edx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x74], edx
cmp edx, ecx
- jbe G_M4730_IG75
+ jbe G_M4730_IG78
;; size=14 bbWeight=8 PerfScore 34.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
lea eax, bword ptr [edi+2*ecx+0x08]
@@ -252,7 +252,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
sub eax, ecx
mov dword ptr [ebp-0x30], eax
test eax, eax
- jl G_M4730_IG81
+ jl G_M4730_IG84
;; size=28 bbWeight=4 PerfScore 23.00
G_M4730_IG08: ; bbWeight=2, gcVars=000000020000004000000000 {V04 V32}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
mov gword ptr [ebp-0x7C], ebx
@@ -273,9 +273,9 @@ G_M4730_IG09: ; bbWeight=4, gcVars=000000020000004800000000 {V01 V04 V32}
; byrRegs -[ecx]
mov dword ptr [ebp-0x34], eax
test eax, eax
- jl G_M4730_IG77
+ jl G_M4730_IG80
cmp eax, dword ptr [ebp-0x58]
- ja G_M4730_IG97
+ ja G_M4730_IG100
push eax
mov ecx, esi
; gcrRegs +[ecx]
@@ -288,11 +288,11 @@ G_M4730_IG09: ; bbWeight=4, gcVars=000000020000004800000000 {V01 V04 V32}
add ebx, dword ptr [ebp-0x34]
mov eax, dword ptr [ebp-0x74]
cmp ebx, eax
- jae G_M4730_IG79
+ jae G_M4730_IG82
movzx edx, word ptr [edi+2*ebx+0x08]
inc ebx
cmp eax, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov gword ptr [ebp+0x10], edi
movzx ecx, word ptr [edi+2*ebx+0x08]
cmp edx, ecx
@@ -330,7 +330,7 @@ G_M4730_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M4730_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[ebx edi]
cmp edx, 123
- jne G_M4730_IG87
+ jne G_M4730_IG90
xor edx, edx
xor eax, eax
xor edi, edi
@@ -342,11 +342,11 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x54], edi
lea edi, [ebx-0x01]
cmp edi, dword ptr [ebp-0x74]
- jae G_M4730_IG79
+ jae G_M4730_IG82
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
cmp word ptr [edi+2*ebx+0x06], 123
- jne G_M4730_IG82
+ jne G_M4730_IG85
cmp ecx, 123
je SHORT G_M4730_IG16
;; size=58 bbWeight=4 PerfScore 56.00
@@ -354,15 +354,15 @@ G_M4730_IG14: ; bbWeight=4, gcVars=000000020000000820000000 {V01 V04 V103
add ecx, -48
mov dword ptr [ebp-0x20], ecx
cmp ecx, 10
- jae G_M4730_IG88
+ jae G_M4730_IG91
inc ebx
cmp dword ptr [ebp-0x74], ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov gword ptr [ebp+0x10], edi
movzx edi, word ptr [edi+2*ebx+0x08]
; gcrRegs -[edi]
cmp edi, 125
- je G_M4730_IG40
+ je G_M4730_IG43
;; size=42 bbWeight=4 PerfScore 40.00
G_M4730_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M4730_IG18
@@ -372,7 +372,7 @@ G_M4730_IG16: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov dword ptr [ebp-0x1C], eax
mov dword ptr [ebp-0x14], ecx
mov dword ptr [ebp-0x18], edx
- jmp G_M4730_IG83
+ jmp G_M4730_IG86
;; size=14 bbWeight=2 PerfScore 10.00
G_M4730_IG17: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
; gcrRegs -[edi]
@@ -382,7 +382,7 @@ G_M4730_IG17: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000
inc ebx
mov ecx, dword ptr [ebp-0x74]
cmp ecx, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edi, word ptr [edi+2*ebx+0x08]
@@ -401,28 +401,28 @@ G_M4730_IG19: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000
;; size=3 bbWeight=8 PerfScore 8.00
G_M4730_IG20: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp edi, 32
- jne G_M4730_IG36
+ jne G_M4730_IG28
;; size=9 bbWeight=2 PerfScore 2.50
-G_M4730_IG21: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG21: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ebx
mov ecx, dword ptr [ebp-0x74]
cmp ecx, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edi, word ptr [edi+2*ebx+0x08]
; gcrRegs -[edi]
cmp edi, 32
- je G_M4730_IG35
- ;; size=29 bbWeight=16 PerfScore 108.00
-G_M4730_IG22: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG27
+ ;; size=25 bbWeight=16 PerfScore 108.00
+G_M4730_IG22: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, 44
- jne G_M4730_IG34
- ;; size=9 bbWeight=2 PerfScore 2.50
+ jne SHORT G_M4730_IG26
+ ;; size=5 bbWeight=2 PerfScore 2.50
G_M4730_IG23: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ebx
cmp ecx, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edx, word ptr [edi+2*ebx+0x08]
@@ -438,7 +438,7 @@ G_M4730_IG24: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x1C], 1
inc ebx
cmp ecx, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edx, word ptr [edi+2*ebx+0x08]
@@ -447,102 +447,126 @@ G_M4730_IG24: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
; gcrRegs -[edi]
mov eax, dword ptr [ebp-0x1C]
;; size=39 bbWeight=2 PerfScore 18.50
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea edx, [edi-0x30]
mov edi, edx
cmp edi, 10
- jae G_M4730_IG88
+ jae G_M4730_IG91
inc ebx
cmp ecx, ebx
- jbe G_M4730_IG89
- ;; size=23 bbWeight=2 PerfScore 7.00
-G_M4730_IG26: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp ebx, ecx
- jae G_M4730_IG79
+ jbe G_M4730_IG92
+ test ebx, ebx
+ jl SHORT G_M4730_IG33
+ jmp SHORT G_M4730_IG30
+ ;; size=29 bbWeight=2 PerfScore 13.50
+G_M4730_IG26: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ xchg edx, edi
+ jmp G_M4730_IG36
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M4730_IG27: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jmp G_M4730_IG21
+ ;; size=5 bbWeight=8 PerfScore 16.00
+G_M4730_IG28: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [ebp-0x74]
+ jmp SHORT G_M4730_IG22
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea ecx, [edi+4*edi]
+ lea edi, [edx+2*ecx-0x30]
+ inc ebx
+ mov ecx, dword ptr [ebp-0x74]
+ cmp ecx, ebx
+ jbe G_M4730_IG92
+ ;; size=19 bbWeight=7.92 PerfScore 31.68
+G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp+0x10]
; gcrRegs +[edx]
movzx edx, word ptr [edx+2*ebx+0x08]
; gcrRegs -[edx]
lea ecx, [edx-0x30]
cmp ecx, 9
- ja SHORT G_M4730_IG27
+ ja SHORT G_M4730_IG34
cmp edi, 0xD1FFAB1E
- jl SHORT G_M4730_IG37
- ;; size=32 bbWeight=16 PerfScore 116.00
-G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp edx, 32
- jne SHORT G_M4730_IG33
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG28: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- inc ebx
- mov ecx, dword ptr [ebp-0x74]
- cmp ecx, ebx
- jbe G_M4730_IG89
- mov edx, gword ptr [ebp+0x10]
...
+45 (+1.88%) : 15636.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
@@ -10,12 +10,12 @@
;
; V00 this [V00,T02] ( 56,153.50) byref -> esi this single-def
; V01 arg1 [V01,T32] ( 7, 11.50) ref -> [ebp-0x6C] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 16,125 ) ref -> edi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 17,125 ) ref -> edi class-hnd single-def <System.String>
; V03 arg3 [V03,T76] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T69] ( 3, 7 ) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T01] ( 32,260 ) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T05] ( 12, 62 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T05] ( 15, 62 ) int -> [ebp-0x18]
; V08 loc4 [V08,T23] ( 5, 18 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T07] ( 7, 48 ) int -> [ebp-0x20]
@@ -229,7 +229,7 @@
; V218 cse3 [V218,T73] ( 3, 6 ) int -> [ebp-0x5C] spill-single-def "CSE - conservative"
; V219 cse4 [V219,T74] ( 3, 6 ) int -> [ebp-0x60] spill-single-def "CSE - conservative"
; V220 cse5 [V220,T87] ( 3, 1.50) int -> edi "CSE - conservative"
-; V221 cse6 [V221,T03] ( 19,144 ) int -> [ebp-0x64] spill-single-def "CSE - aggressive"
+; V221 cse6 [V221,T03] ( 20,128.16) int -> [ebp-0x64] spill-single-def "CSE - aggressive"
; V222 cse7 [V222,T06] ( 21, 58 ) int -> [ebp-0x68] spill-single-def "CSE - moderate"
;
; Lcl frame size = 180
@@ -252,7 +252,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
mov eax, dword ptr [ebp+0x0C]
mov dword ptr [ebp-0x54], eax
test edi, edi
- je G_M36935_IG71
+ je G_M36935_IG74
test ebx, ebx
jne SHORT G_M36935_IG04
;; size=18 bbWeight=1 PerfScore 4.50
@@ -293,7 +293,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000200000000000000000 {V04}, gcref
cmp edx, ecx
mov gword ptr [ebp-0x6C], ebx
; GC ptr vars +{V01}
- jbe G_M36935_IG66
+ jbe G_M36935_IG69
;; size=17 bbWeight=8 PerfScore 42.00
G_M36935_IG07: ; bbWeight=4, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs -[ebx]
@@ -304,7 +304,7 @@ G_M36935_IG07: ; bbWeight=4, gcVars=000000200000000100000000 {V01 V04}, g
mov dword ptr [ebp-0x10], ecx
mov ebx, edx
sub ebx, ecx
- js G_M36935_IG72
+ js G_M36935_IG75
;; size=23 bbWeight=4 PerfScore 18.00
G_M36935_IG08: ; bbWeight=4, gcVars=000000200000000102000000 {V01 V04 V30}, gcrefRegs=00000080 {edi}, byrefRegs=00000041 {eax esi}, gcvars, byref, isz
mov bword ptr [ebp-0xBC], eax
@@ -319,9 +319,9 @@ G_M36935_IG08: ; bbWeight=4, gcVars=000000200000000102000000 {V01 V04 V30
; byrRegs -[eax ecx]
mov dword ptr [ebp-0x2C], eax
test eax, eax
- jl G_M36935_IG67
+ jl G_M36935_IG70
cmp eax, ebx
- ja G_M36935_IG90
+ ja G_M36935_IG93
mov ecx, dword ptr [esi+0x04]
mov edx, dword ptr [esi+0x0C]
sub edx, eax
@@ -342,17 +342,17 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov edx, dword ptr [esi+0x04]
mov ebx, dword ptr [ecx+0x04]
cmp edx, ebx
- ja G_M36935_IG90
+ ja G_M36935_IG93
mov ecx, bword ptr [ecx]
lea ecx, bword ptr [ecx+2*edx]
mov bword ptr [ebp-0x90], ecx
; GC ptr vars +{V75}
sub ebx, edx
- js G_M36935_IG73
+ js G_M36935_IG76
;; size=36 bbWeight=4 PerfScore 42.00
G_M36935_IG11: ; bbWeight=4, gcVars=000000200000000304000000 {V01 V04 V75 V156}, gcrefRegs=00000080 {edi}, byrefRegs=00000042 {ecx esi}, gcvars, byref, isz
cmp eax, ebx
- ja G_M36935_IG91
+ ja G_M36935_IG94
lea edx, [eax+eax]
push edx
mov edx, bword ptr [ebp-0xBC]
@@ -366,11 +366,11 @@ G_M36935_IG11: ; bbWeight=4, gcVars=000000200000000304000000 {V01 V04 V75
add ecx, ebx
mov ebx, dword ptr [ebp-0x64]
cmp ecx, ebx
- jae G_M36935_IG70
+ jae G_M36935_IG73
movzx eax, word ptr [edi+2*ecx+0x08]
inc ecx
cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
mov dword ptr [ebp-0x10], ecx
movzx edx, word ptr [edi+2*ecx+0x08]
cmp eax, edx
@@ -411,7 +411,7 @@ G_M36935_IG14: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
G_M36935_IG15: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[ebx]
cmp eax, 123
- jne G_M36935_IG84
+ jne G_M36935_IG87
xor eax, eax
mov dword ptr [ebp-0x18], eax
xor eax, eax
@@ -426,9 +426,9 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov ecx, dword ptr [ebp-0x10]
lea eax, [ecx-0x01]
cmp eax, ebx
- jae G_M36935_IG70
+ jae G_M36935_IG73
cmp word ptr [edi+2*ecx+0x06], 123
- jne G_M36935_IG74
+ jne G_M36935_IG77
cmp edx, 123
je SHORT G_M36935_IG18
;; size=63 bbWeight=4 PerfScore 57.00
@@ -436,13 +436,13 @@ G_M36935_IG16: ; bbWeight=4, gcVars=000000200000000180000000 {V01 V04 V14
lea eax, [edx-0x30]
mov dword ptr [ebp-0x20], eax
cmp eax, 10
- jae G_M36935_IG85
+ jae G_M36935_IG88
inc ecx
cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 125
- je G_M36935_IG37
+ je G_M36935_IG40
;; size=38 bbWeight=4 PerfScore 30.00
G_M36935_IG17: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
jmp SHORT G_M36935_IG20
@@ -450,7 +450,7 @@ G_M36935_IG17: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040
G_M36935_IG18: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov dword ptr [ebp-0x10], ecx
mov dword ptr [ebp-0x14], edx
- jmp G_M36935_IG75
+ jmp G_M36935_IG78
;; size=11 bbWeight=2 PerfScore 8.00
G_M36935_IG19: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
lea eax, [eax+4*eax]
@@ -458,7 +458,7 @@ G_M36935_IG19: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov dword ptr [ebp-0x20], eax
inc ecx
cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08]
;; size=24 bbWeight=8 PerfScore 48.00
G_M36935_IG20: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
@@ -479,7 +479,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040
G_M36935_IG23: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
inc ecx
cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 32
je SHORT G_M36935_IG23
@@ -487,12 +487,12 @@ G_M36935_IG23: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000004
G_M36935_IG24: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
cmp edx, 44
mov eax, edx
- jne G_M36935_IG32
+ jne G_M36935_IG36
;; size=11 bbWeight=2 PerfScore 3.00
G_M36935_IG25: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
inc ecx
cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 32
je SHORT G_M36935_IG25
@@ -503,108 +503,129 @@ G_M36935_IG26: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov dword ptr [ebp-0x1C], 1
inc ecx
cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08]
;; size=26 bbWeight=2 PerfScore 11.50
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
add edx, -48
mov dword ptr [ebp-0x18], edx
cmp edx, 10
- jae G_M36935_IG85
+ jae G_M36935_IG88
inc ecx
cmp ebx, ecx
- jbe G_M36935_IG86
- ;; size=24 bbWeight=2 PerfScore 8.00
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- cmp ecx, ebx
- jae G_M36935_IG70
- movzx eax, word ptr [edi+2*ecx+0x08]
- lea edx, [eax-0x30]
- cmp edx, 9
- ja SHORT G_M36935_IG30
- mov edx, dword ptr [ebp-0x18]
- cmp edx, 0xD1FFAB1E
- jl SHORT G_M36935_IG34
- ;; size=32 bbWeight=16 PerfScore 116.00
-G_M36935_IG29: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- mov dword ptr [ebp-0x18], edx
- ;; size=3 bbWeight=8 PerfScore 8.00
-G_M36935_IG30: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- cmp eax, 32
- jne SHORT G_M36935_IG32
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG31: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ecx
- cmp ebx, ecx
- jbe G_M36935_IG86
- movzx eax, word ptr [edi+2*ecx+0x08]
- cmp eax, 32
- je SHORT G_M36935_IG31
- ;; size=19 bbWeight=16 PerfScore 76.00
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- cmp eax, 125
- je G_M36935_IG37
- cmp eax, 58
- jne G_M36935_IG87
- mov dword ptr [ebp-0x24], ecx
- ;; size=21 bbWeight=2 PerfScore 7.00
-G_M36935_IG33: ; bbWeight=16, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V148}
- inc ecx
- cmp ebx, ecx
- jbe G_M36935_IG86
- movzx eax, word ptr [edi+2*ecx+0x08]
- cmp eax, 125
- je SHORT G_M36935_IG35
- cmp eax, 123
- je G_M36935_IG87
- jmp SHORT G_M36935_IG33
- ;; size=30 bbWeight=16 PerfScore 128.00
-G_M36935_IG34: ; bbWeight=8, gcVars=000000200000000180000000 {V01 V04 V148}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars +{V148}
+ jbe G_M36935_IG89
+ test ecx, ecx
+ jl SHORT G_M36935_IG32
+ jmp SHORT G_M36935_IG29
...
benchmarks.run_tiered.windows.x86.checked.mch
+37 (+1.67%) : 9920.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)
@@ -10,12 +10,12 @@
;
; V00 this [V00,T01] ( 33, 559.50) ref -> esi this class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T35] ( 7, 17.50) ref -> [ebp-0x78] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T13] ( 16, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V02 arg2 [V02,T13] ( 17, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T66] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [ebp-0x7C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T08] ( 12, 242 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T08] ( 15, 242 ) int -> [ebp-0x18]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T16] ( 7, 48 ) int -> [ebp-0x20]
@@ -175,7 +175,7 @@
; V164 cse3 [V164,T46] ( 3, 12 ) ref -> edx "CSE - conservative"
; V165 cse4 [V165,T48] ( 3, 12 ) int -> edi "CSE - conservative"
; V166 cse5 [V166,T03] ( 6, 416 ) int -> [ebp-0x6C] spill-single-def "CSE - aggressive"
-; V167 cse6 [V167,T12] ( 19, 144 ) int -> [ebp-0x70] spill-single-def "CSE - moderate"
+; V167 cse6 [V167,T12] ( 20, 128.16) int -> [ebp-0x70] spill-single-def "CSE - moderate"
; V168 cse7 [V168,T10] ( 4, 192 ) int -> eax "CSE - moderate"
; V169 cse8 [V169,T20] ( 4, 32 ) int -> [ebp-0x74] spill-single-def "CSE - conservative"
; TEMP_01 int -> [ebp-0xB4]
@@ -200,7 +200,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
mov eax, dword ptr [ebp+0x0C]
mov dword ptr [ebp-0x64], eax
test edi, edi
- je G_M4730_IG84
+ je G_M4730_IG87
test ebx, ebx
jne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 4.50
@@ -239,7 +239,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR
mov ecx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x70], ecx
cmp ecx, edx
- jbe G_M4730_IG79
+ jbe G_M4730_IG82
;; size=14 bbWeight=8 PerfScore 34.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
lea eax, bword ptr [edi+2*edx+0x08]
@@ -287,9 +287,9 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
; byrRegs -[ecx]
mov dword ptr [ebp-0x34], eax
test eax, eax
- jl G_M4730_IG81
+ jl G_M4730_IG84
cmp eax, dword ptr [ebp-0x54]
- ja G_M4730_IG95
+ ja G_M4730_IG98
push eax
mov ecx, esi
; gcrRegs +[ecx]
@@ -303,12 +303,12 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
add edx, dword ptr [ebp-0x34]
mov eax, dword ptr [ebp-0x70]
cmp edx, eax
- jae G_M4730_IG83
+ jae G_M4730_IG86
movzx ecx, word ptr [edi+2*edx+0x08]
mov dword ptr [ebp-0x24], ecx
inc edx
cmp eax, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov gword ptr [ebp+0x10], edi
mov dword ptr [ebp-0x10], edx
movzx ecx, word ptr [edi+2*edx+0x08]
@@ -353,7 +353,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR
; gcrRegs -[edi]
; GC ptr vars -{V01}
cmp dword ptr [ebp-0x24], 123
- jne G_M4730_IG85
+ jne G_M4730_IG88
mov gword ptr [ebp-0x78], ebx
; GC ptr vars +{V01}
xor ebx, ebx
@@ -370,7 +370,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR
mov edx, dword ptr [ebp-0x10]
lea edi, [edx-0x01]
cmp edi, dword ptr [ebp-0x70]
- jae G_M4730_IG83
+ jae G_M4730_IG86
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
mov dword ptr [ebp-0x10], edx
@@ -409,12 +409,12 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov edx, dword ptr [ebp-0x10]
inc edx
cmp dword ptr [ebp-0x70], edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov gword ptr [ebp+0x10], edi
movzx edi, word ptr [edi+2*edx+0x08]
; gcrRegs -[edi]
cmp edi, 125
- je G_M4730_IG43
+ je G_M4730_IG46
;; size=44 bbWeight=4 PerfScore 48.00
G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M4730_IG21
@@ -423,7 +423,7 @@ G_M4730_IG19: ; bbWeight=2, gcVars=000000000000000000000000 {}, gcrefRegs
; gcrRegs -[esi]
; GC ptr vars -{V01 V04 V103}
mov edx, dword ptr [ebp-0x10]
- jmp G_M4730_IG86
+ jmp G_M4730_IG89
;; size=8 bbWeight=2 PerfScore 6.00
G_M4730_IG20: ; bbWeight=8, gcVars=000000020000000820000000 {V01 V04 V103}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
@@ -434,7 +434,7 @@ G_M4730_IG20: ; bbWeight=8, gcVars=000000020000000820000000 {V01 V04 V103
inc edx
mov ecx, dword ptr [ebp-0x70]
cmp ecx, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edi, word ptr [edi+2*edx+0x08]
@@ -453,28 +453,28 @@ G_M4730_IG22: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000
;; size=3 bbWeight=8 PerfScore 8.00
G_M4730_IG23: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
cmp edi, 32
- jne G_M4730_IG39
+ jne G_M4730_IG31
;; size=9 bbWeight=2 PerfScore 2.50
-G_M4730_IG24: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG24: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc edx
mov ecx, dword ptr [ebp-0x70]
cmp ecx, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edi, word ptr [edi+2*edx+0x08]
; gcrRegs -[edi]
cmp edi, 32
- je G_M4730_IG38
- ;; size=29 bbWeight=16 PerfScore 108.00
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG30
+ ;; size=25 bbWeight=16 PerfScore 108.00
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, 44
- jne G_M4730_IG37
- ;; size=9 bbWeight=2 PerfScore 2.50
+ jne SHORT G_M4730_IG29
+ ;; size=5 bbWeight=2 PerfScore 2.50
G_M4730_IG26: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc edx
cmp ecx, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx ebx, word ptr [edi+2*edx+0x08]
@@ -490,7 +490,7 @@ G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x1C], 1
inc edx
cmp ecx, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx ebx, word ptr [edi+2*edx+0x08]
@@ -498,104 +498,127 @@ G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov edi, ebx
; gcrRegs -[edi]
;; size=36 bbWeight=2 PerfScore 16.50
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG28: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea ebx, [edi-0x30]
cmp ebx, 10
- jae G_M4730_IG86
+ jae G_M4730_IG89
inc edx
cmp ecx, edx
- jbe G_M4730_IG87
- ;; size=21 bbWeight=2 PerfScore 6.50
-G_M4730_IG29: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp edx, ecx
- jae G_M4730_IG83
+ jbe G_M4730_IG90
+ test edx, edx
+ jl SHORT G_M4730_IG36
+ jmp SHORT G_M4730_IG33
+ ;; size=27 bbWeight=2 PerfScore 13.00
+G_M4730_IG29: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ mov eax, ecx
+ mov ecx, edi
+ mov edi, eax
+ jmp G_M4730_IG39
+ ;; size=11 bbWeight=1 PerfScore 2.75
+G_M4730_IG30: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jmp G_M4730_IG24
+ ;; size=5 bbWeight=8 PerfScore 16.00
+G_M4730_IG31: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [ebp-0x70]
+ jmp SHORT G_M4730_IG25
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M4730_IG32: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ lea ecx, [ebx+4*ebx]
+ lea ebx, [edi+2*ecx-0x30]
+ inc edx
+ mov edi, dword ptr [ebp-0x70]
+ cmp edi, edx
+ jbe G_M4730_IG90
+ ;; size=19 bbWeight=7.92 PerfScore 31.68
+G_M4730_IG33: ; bbWeight=15.84, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edi, word ptr [edi+2*edx+0x08]
; gcrRegs -[edi]
lea ecx, [edi-0x30]
cmp ecx, 9
- ja SHORT G_M4730_IG30
+ ja SHORT G_M4730_IG37
cmp ebx, 0xD1FFAB1E
- jl SHORT G_M4730_IG40
- ;; size=32 bbWeight=16 PerfScore 116.00
-G_M4730_IG30: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp edi, 32
- mov ecx, edi
- jne SHORT G_M4730_IG36
- ;; size=7 bbWeight=2 PerfScore 3.00
-G_M4730_IG31: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- inc edx
- mov edi, dword ptr [ebp-0x70]
- cmp edi, edx
- jbe G_M4730_IG87
- mov ecx, gword ptr [ebp+0x10]
- ; gcrRegs +[ecx]
- movzx ecx, word ptr [ecx+2*edx+0x08]
- ; gcrRegs -[ecx]
- cmp ecx, 32
- je SHORT G_M4730_IG35
- ;; size=25 bbWeight=16 PerfScore 108.00
-G_M4730_IG32: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, 125
- je SHORT G_M4730_IG34
- cmp ecx, 58
- jne G_M4730_IG88
- mov dword ptr [ebp-0x28], edx
- ;; size=17 bbWeight=2 PerfScore 7.00
-G_M4730_IG33: ; bbWeight=16, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V103}
...
+49 (+2.10%) : 9936.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
@@ -10,12 +10,12 @@
;
; V00 this [V00,T02] ( 56,153.50) byref -> esi this single-def
; V01 arg1 [V01,T32] ( 7, 11.50) ref -> [ebp-0x6C] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 16,125 ) ref -> edi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 17,125 ) ref -> edi class-hnd single-def <System.String>
; V03 arg3 [V03,T76] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T69] ( 3, 7 ) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T05] ( 12, 62 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T05] ( 15, 62 ) int -> [ebp-0x18]
; V08 loc4 [V08,T23] ( 5, 18 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T07] ( 7, 48 ) int -> [ebp-0x20]
@@ -230,7 +230,7 @@
; V219 cse3 [V219,T73] ( 3, 6 ) int -> [ebp-0x5C] spill-single-def "CSE - conservative"
; V220 cse4 [V220,T74] ( 3, 6 ) int -> [ebp-0x60] spill-single-def "CSE - conservative"
; V221 cse5 [V221,T87] ( 3, 1.50) int -> edi "CSE - conservative"
-; V222 cse6 [V222,T03] ( 19,144 ) int -> [ebp-0x64] spill-single-def "CSE - aggressive"
+; V222 cse6 [V222,T03] ( 20,128.16) int -> [ebp-0x64] spill-single-def "CSE - aggressive"
; V223 cse7 [V223,T06] ( 21, 58 ) int -> [ebp-0x68] spill-single-def "CSE - moderate"
;
; Lcl frame size = 180
@@ -253,7 +253,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
mov eax, dword ptr [ebp+0x0C]
mov dword ptr [ebp-0x54], eax
test edi, edi
- je G_M36935_IG82
+ je G_M36935_IG85
test ebx, ebx
jne SHORT G_M36935_IG04
;; size=18 bbWeight=1 PerfScore 4.50
@@ -294,7 +294,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000200000000000000000 {V04}, gcref
cmp ecx, edx
mov gword ptr [ebp-0x6C], ebx
; GC ptr vars +{V01}
- jbe G_M36935_IG76
+ jbe G_M36935_IG79
;; size=17 bbWeight=8 PerfScore 42.00
G_M36935_IG07: ; bbWeight=4, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
; gcrRegs -[ebx]
@@ -331,9 +331,9 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
; byrRegs -[eax ecx]
mov dword ptr [ebp-0x2C], eax
test eax, eax
- jl G_M36935_IG77
+ jl G_M36935_IG80
cmp eax, ebx
- ja G_M36935_IG89
+ ja G_M36935_IG92
mov ecx, dword ptr [esi+0x04]
mov edx, dword ptr [esi+0x0C]
sub edx, eax
@@ -354,7 +354,7 @@ G_M36935_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov edx, dword ptr [esi+0x04]
mov ebx, dword ptr [ecx+0x04]
cmp edx, ebx
- ja G_M36935_IG89
+ ja G_M36935_IG92
mov ecx, bword ptr [ecx]
lea ecx, bword ptr [ecx+2*edx]
mov bword ptr [ebp-0x90], ecx
@@ -374,7 +374,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=000000200000000304000000 {V01 V04 V76
;; size=19 bbWeight=2 PerfScore 9.00
G_M36935_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp eax, ebx
- ja G_M36935_IG90
+ ja G_M36935_IG93
lea edx, [eax+eax]
push edx
mov ecx, bword ptr [ebp-0x90]
@@ -390,11 +390,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
add edx, ebx
mov ebx, dword ptr [ebp-0x64]
cmp edx, ebx
- jae G_M36935_IG81
+ jae G_M36935_IG84
movzx eax, word ptr [edi+2*edx+0x08]
inc edx
cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
mov dword ptr [ebp-0x10], edx
movzx ecx, word ptr [edi+2*edx+0x08]
cmp eax, ecx
@@ -437,7 +437,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
G_M36935_IG17: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[ebx]
cmp eax, 123
- jne G_M36935_IG83
+ jne G_M36935_IG86
xor eax, eax
mov dword ptr [ebp-0x18], eax
xor eax, eax
@@ -452,7 +452,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov edx, dword ptr [ebp-0x10]
lea eax, [edx-0x01]
cmp eax, ebx
- jae G_M36935_IG81
+ jae G_M36935_IG84
mov dword ptr [ebp-0x10], edx
cmp word ptr [edi+2*edx+0x06], 123
je SHORT G_M36935_IG19
@@ -489,10 +489,10 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov edx, dword ptr [ebp-0x10]
inc edx
cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08]
cmp ecx, 125
- je G_M36935_IG42
+ je G_M36935_IG45
;; size=40 bbWeight=4 PerfScore 38.00
G_M36935_IG22: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
jmp SHORT G_M36935_IG25
@@ -502,7 +502,7 @@ G_M36935_IG23: ; bbWeight=2, gcVars=000000000000000000000000 {}, gcrefReg
; byrRegs -[esi]
; GC ptr vars -{V01 V04 V149}
mov edx, dword ptr [ebp-0x10]
- jmp G_M36935_IG84
+ jmp G_M36935_IG87
;; size=8 bbWeight=2 PerfScore 6.00
G_M36935_IG24: ; bbWeight=8, gcVars=000000200000000180000000 {V01 V04 V149}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
; gcrRegs +[edi]
@@ -513,7 +513,7 @@ G_M36935_IG24: ; bbWeight=8, gcVars=000000200000000180000000 {V01 V04 V14
mov dword ptr [ebp-0x20], eax
inc edx
cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08]
;; size=24 bbWeight=8 PerfScore 48.00
G_M36935_IG25: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
@@ -534,7 +534,7 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040
G_M36935_IG28: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
inc edx
cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08]
cmp ecx, 32
je SHORT G_M36935_IG28
@@ -542,12 +542,12 @@ G_M36935_IG28: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000004
G_M36935_IG29: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
cmp ecx, 44
mov eax, ecx
- jne G_M36935_IG37
+ jne G_M36935_IG41
;; size=11 bbWeight=2 PerfScore 3.00
G_M36935_IG30: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
inc edx
cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08]
cmp ecx, 32
je SHORT G_M36935_IG30
@@ -558,75 +558,96 @@ G_M36935_IG31: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov dword ptr [ebp-0x1C], 1
inc edx
cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08]
;; size=26 bbWeight=2 PerfScore 11.50
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
add ecx, -48
mov dword ptr [ebp-0x18], ecx
cmp ecx, 10
- jae G_M36935_IG84
+ jae G_M36935_IG87
inc edx
cmp ebx, edx
- jbe G_M36935_IG85
- ;; size=24 bbWeight=2 PerfScore 8.00
-G_M36935_IG33: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- cmp edx, ebx
- jae G_M36935_IG81
- movzx eax, word ptr [edi+2*edx+0x08]
- lea ecx, [eax-0x30]
- cmp ecx, 9
- ja SHORT G_M36935_IG35
- mov ecx, dword ptr [ebp-0x18]
- cmp ecx, 0xD1FFAB1E
- jl SHORT G_M36935_IG39
- ;; size=32 bbWeight=16 PerfScore 116.00
-G_M36935_IG34: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- mov dword ptr [ebp-0x18], ecx
- ;; size=3 bbWeight=8 PerfScore 8.00
-G_M36935_IG35: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- cmp eax, 32
- jne SHORT G_M36935_IG37
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG36: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc edx
- cmp ebx, edx
- jbe G_M36935_IG85
- movzx eax, word ptr [edi+2*edx+0x08]
- cmp eax, 32
- je SHORT G_M36935_IG36
- ;; size=19 bbWeight=16 PerfScore 76.00
-G_M36935_IG37: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
- cmp eax, 125
- je G_M36935_IG42
- cmp eax, 58
- jne G_M36935_IG86
- mov dword ptr [ebp-0x24], edx
- ;; size=21 bbWeight=2 PerfScore 7.00
-G_M36935_IG38: ; bbWeight=16, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V149}
- inc edx
- cmp ebx, edx
- jbe G_M36935_IG85
- movzx eax, word ptr [edi+2*edx+0x08]
- cmp eax, 125
- je SHORT G_M36935_IG40
- cmp eax, 123
- je G_M36935_IG86
- jmp SHORT G_M36935_IG38
- ;; size=30 bbWeight=16 PerfScore 128.00
-G_M36935_IG39: ; bbWeight=8, gcVars=000000200000000180000000 {V01 V04 V149}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars +{V149}
+ jbe G_M36935_IG88
+ test edx, edx
+ jl SHORT G_M36935_IG37
+ jmp SHORT G_M36935_IG34
+ ;; size=30 bbWeight=2 PerfScore 14.50
+G_M36935_IG33: ; bbWeight=7.92, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
lea ecx, [ecx+4*ecx]
lea ecx, [eax+2*ecx-0x30]
mov dword ptr [ebp-0x18], ecx
inc edx
cmp ebx, edx
- jbe G_M36935_IG85
- jmp G_M36935_IG33
- ;; size=24 bbWeight=8 PerfScore 48.00
-G_M36935_IG40: ; bbWeight=2, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ jbe G_M36935_IG88
+ ;; size=19 bbWeight=7.92 PerfScore 31.68
+G_M36935_IG34: ; bbWeight=15.84, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+ movzx eax, word ptr [edi+2*edx+0x08]
+ lea ecx, [eax-0x30]
+ cmp ecx, 9
+ ja SHORT G_M36935_IG39
+ mov ecx, dword ptr [ebp-0x18]
...
coreclr_tests.run.windows.x86.checked.mch
+17 (+0.62%) : 452845.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
@@ -10,26 +10,26 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 56, 26.65) byref -> esi this single-def
-; V01 arg1 [V01,T21] ( 11, 4.71) ref -> [ebp-0x78] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 16, 25.33) ref -> edi class-hnd single-def <System.String>
+; V01 arg1 [V01,T21] ( 11, 4.71) ref -> [ebp-0x6C] class-hnd single-def <System.IFormatProvider>
+; V02 arg2 [V02,T04] ( 17, 25.33) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T61] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
-; V04 loc0 [V04,T50] ( 3, 2.76) ref -> [ebp-0x7C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 72.53) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T01] ( 31, 37.40) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T25] ( 12, 5.40) int -> [ebp-0x18]
+; V04 loc0 [V04,T50] ( 3, 2.76) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>>
+; V05 loc1 [V05,T00] ( 67, 72.43) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T01] ( 34, 37.40) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T25] ( 15, 5.40) int -> [ebp-0x18]
; V08 loc4 [V08,T31] ( 5, 4.51) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T19] ( 7, 7.03) int -> [ebp-0x20]
-; V11 loc7 [V11,T05] ( 28, 15.06) ref -> [ebp-0x80] class-hnd <System.String>
-; V12 loc8 [V12,T59] ( 7, 2.06) ref -> [ebp-0x84] class-hnd <System.String>
-; V13 loc9 [V13,T17] ( 11, 7.28) ref -> [ebp-0x88] class-hnd spill-single-def <System.Object>
+; V11 loc7 [V11,T05] ( 28, 15.06) ref -> [ebp-0x74] class-hnd <System.String>
+; V12 loc8 [V12,T59] ( 7, 2.06) ref -> [ebp-0x78] class-hnd <System.String>
+; V13 loc9 [V13,T17] ( 11, 7.28) ref -> [ebp-0x7C] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref
; V16 loc12 [V16,T26] ( 3, 5.28) ushort -> ecx
; V17 loc13 [V17,T13] ( 7, 9.36) int -> edx
-; V18 loc14 [V18,T30] ( 5, 4.69) ref -> [ebp-0x8C] class-hnd spill-single-def <System.ISpanFormattable>
+; V18 loc14 [V18,T30] ( 5, 4.69) ref -> [ebp-0x80] class-hnd spill-single-def <System.ISpanFormattable>
; V19 loc15 [V19 ] ( 5, 1.57) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T55] ( 5, 2.14) ref -> [ebp-0x90] class-hnd spill-single-def <System.IFormattable>
+; V20 loc16 [V20,T55] ( 5, 2.14) ref -> [ebp-0x84] class-hnd spill-single-def <System.IFormattable>
; V21 tmp0 [V21,T60] ( 3, 2.00) ref -> edx
;* V22 tmp1 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V23 tmp2 [V23,T63] ( 3, 1.74) ref -> edx
@@ -48,7 +48,7 @@
;* V36 tmp15 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp16 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V38 tmp17 [V38,T09] ( 3, 12.67) int -> ebx "Inlining Arg"
-; V39 tmp18 [V39,T14] ( 2, 8.44) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
+; V39 tmp18 [V39,T14] ( 2, 8.44) byref -> [ebp-0x88] spill-single-def "Inlining Arg"
;* V40 tmp19 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp20 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp21 [V42 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -75,7 +75,7 @@
; V63 tmp42 [V63,T56] ( 3, 2.12) byref -> ecx single-def "Inlining Arg"
;* V64 tmp43 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V65 tmp44 [V65,T57] ( 3, 2.12) int -> edi "Inlining Arg"
-; V66 tmp45 [V66,T74] ( 2, 1.41) byref -> [ebp-0x98] spill-single-def "Inlining Arg"
+; V66 tmp45 [V66,T74] ( 2, 1.41) byref -> [ebp-0x8C] spill-single-def "Inlining Arg"
;* V67 tmp46 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp47 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V69 tmp48 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
@@ -93,7 +93,7 @@
; V81 tmp60 [V81,T11] ( 3, 10.55) byref -> ecx "Inlining Arg"
;* V82 tmp61 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V83 tmp62 [V83,T12] ( 3, 10.55) int -> ebx "Inlining Arg"
-; V84 tmp63 [V84,T20] ( 2, 7.03) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
+; V84 tmp63 [V84,T20] ( 2, 7.03) byref -> [ebp-0x90] spill-single-def "Inlining Arg"
;* V85 tmp64 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V86 tmp65 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V87 tmp66 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
@@ -117,7 +117,7 @@
; V105 tmp84 [V105,T28] ( 3, 4.72) byref -> eax "Inlining Arg"
;* V106 tmp85 [V106 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V107 tmp86 [V107,T29] ( 3, 4.72) int -> [ebp-0x34] spill-single-def "Inlining Arg"
-; V108 tmp87 [V108,T45] ( 2, 3.15) byref -> [ebp-0xA0] spill-single-def "Inlining Arg"
+; V108 tmp87 [V108,T45] ( 2, 3.15) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
;* V109 tmp88 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V110 tmp89 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V111 tmp90 [V111,T53] ( 2, 2.58) byref -> ecx "Inlining Arg"
@@ -131,10 +131,10 @@
; V119 tmp98 [V119,T90] ( 3, 0.45) byref -> edx "Span.get_Item ptrToSpan"
; V120 tmp99 [V120,T43] ( 5, 3.47) int -> [ebp-0x44] spill-single-def "Inline stloc first use temp"
;* V121 tmp100 [V121 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V122 tmp101 [V122,T38] ( 3, 4.16) byref -> eax "Inlining Arg"
+; V122 tmp101 [V122,T38] ( 3, 4.16) byref -> ecx "Inlining Arg"
;* V123 tmp102 [V123 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V124 tmp103 [V124,T39] ( 3, 4.16) int -> [ebp-0x48] spill-single-def "Inlining Arg"
-; V125 tmp104 [V125,T48] ( 2, 2.92) byref -> [ebp-0xA4] spill-single-def "Inlining Arg"
+; V125 tmp104 [V125,T48] ( 2, 2.92) byref -> [ebp-0x98] spill-single-def "Inlining Arg"
;* V126 tmp105 [V126 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V127 tmp106 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V128 tmp107 [V128 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
@@ -145,36 +145,36 @@
; V133 tmp112 [V133,T102] ( 3, 0 ) byref -> ecx "Span.get_Item ptrToSpan"
; V134 tmp113 [V134,T24] ( 9, 5.16) int -> [ebp-0x50] spill-single-def "Inlining Arg"
;* V135 tmp114 [V135 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V136 tmp115 [V136,T41] ( 6, 3.61) int -> ecx "Inline stloc first use temp"
-; V137 tmp116 [V137,T65] ( 4, 1.62) int -> [ebp-0x54] spill-single-def "Inlining Arg"
-; V138 tmp117 [V138,T75] ( 3, 1.22) byref -> [ebp-0xA8] spill-single-def "Inlining Arg"
+; V136 tmp115 [V136,T41] ( 6, 3.61) int -> edx "Inline stloc first use temp"
+; V137 tmp116 [V137,T65] ( 4, 1.62) int -> edi "Inlining Arg"
+; V138 tmp117 [V138,T75] ( 3, 1.22) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
;* V139 tmp118 [V139 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V140 tmp119 [V140,T82] ( 2, 0.81) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
+; V140 tmp119 [V140,T82] ( 2, 0.81) byref -> edi "Inlining Arg"
;* V141 tmp120 [V141 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V142 tmp121 [V142 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V143 tmp122 [V143,T93] ( 5, 0.28) int -> edx "Inline stloc first use temp"
; V144 tmp123 [V144,T98] ( 3, 0.12) byref -> eax "Span.get_Item ptrToSpan"
-; V145 tmp124 [V145,T80] ( 5, 0.92) int -> [ebp-0x58] spill-single-def "Inline stloc first use temp"
+; V145 tmp124 [V145,T80] ( 5, 0.92) int -> edi "Inline stloc first use temp"
;* V146 tmp125 [V146 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V147 tmp126 [V147,T76] ( 3, 1.10) byref -> ecx "Inlining Arg"
;* V148 tmp127 [V148 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V149 tmp128 [V149,T77] ( 3, 1.10) int -> [ebp-0x5C] spill-single-def "Inlining Arg"
-; V150 tmp129 [V150,T83] ( 2, 0.73) byref -> [ebp-0xB0] spill-single-def "Inlining Arg"
+; V149 tmp128 [V149,T77] ( 3, 1.10) int -> edi "Inlining Arg"
+; V150 tmp129 [V150,T83] ( 2, 0.73) byref -> [ebp-0xA0] spill-single-def "Inlining Arg"
;* V151 tmp130 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V152 tmp131 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V153 tmp132 [V153 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V154 tmp133 [V154 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V155 tmp134 [V155,T84] ( 2, 0.73) byref -> edx "Inlining Arg"
; V156 tmp135 [V156,T85] ( 2, 0.73) int -> ecx "Inlining Arg"
-; V157 tmp136 [V157,T44] ( 6, 3.37) byref -> [ebp-0xB4] "field V09._reference (fldOffset=0x0)" P-INDEP
-; V158 tmp137 [V158,T42] ( 8, 3.47) int -> [ebp-0x60] "field V09._length (fldOffset=0x4)" P-INDEP
+; V157 tmp136 [V157,T44] ( 6, 3.37) byref -> [ebp-0xA4] "field V09._reference (fldOffset=0x0)" P-INDEP
+; V158 tmp137 [V158,T42] ( 8, 3.47) int -> [ebp-0x54] "field V09._length (fldOffset=0x4)" P-INDEP
;* V159 tmp138 [V159 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V160 tmp139 [V160 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP
;* V161 tmp140 [V161 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP
;* V162 tmp141 [V162 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP
;* V163 tmp142 [V163 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V164 tmp143 [V164 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
-; V165 tmp144 [V165,T22] ( 4, 6.33) byref -> [ebp-0xB8] spill-single-def "field V34._reference (fldOffset=0x0)" P-INDEP
+; V165 tmp144 [V165,T22] ( 4, 6.33) byref -> [ebp-0xA8] spill-single-def "field V34._reference (fldOffset=0x0)" P-INDEP
; V166 tmp145 [V166,T16] ( 8, 7.40) int -> ebx "field V34._length (fldOffset=0x4)" P-INDEP
; V167 tmp146 [V167,T32] ( 2, 4.22) byref -> eax "field V36._reference (fldOffset=0x0)" P-INDEP
; V168 tmp147 [V168,T33] ( 2, 4.22) int -> ebx "field V36._length (fldOffset=0x4)" P-INDEP
@@ -204,19 +204,19 @@
;* V192 tmp171 [V192 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x4)" P-INDEP
;* V193 tmp172 [V193 ] ( 0, 0 ) byref -> zero-ref "field V87._reference (fldOffset=0x0)" P-INDEP
;* V194 tmp173 [V194 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP
-; V195 tmp174 [V195,T103] ( 2, 0 ) byref -> [ebp-0xBC] spill-single-def "field V92._reference (fldOffset=0x0)" P-INDEP
-; V196 tmp175 [V196,T104] ( 2, 0 ) int -> [ebp-0x64] spill-single-def "field V92._length (fldOffset=0x4)" P-INDEP
+; V195 tmp174 [V195,T103] ( 2, 0 ) byref -> [ebp-0xAC] spill-single-def "field V92._reference (fldOffset=0x0)" P-INDEP
+; V196 tmp175 [V196,T104] ( 2, 0 ) int -> [ebp-0x58] spill-single-def "field V92._length (fldOffset=0x4)" P-INDEP
; V197 tmp176 [V197,T70] ( 2, 1.44) byref -> ebx "field V96._reference (fldOffset=0x0)" P-INDEP
; V198 tmp177 [V198,T72] ( 2, 1.44) int -> eax "field V96._length (fldOffset=0x4)" P-INDEP
; V199 tmp178 [V199,T71] ( 2, 1.44) byref -> ebx "field V98._reference (fldOffset=0x0)" P-INDEP
; V200 tmp179 [V200,T73] ( 2, 1.44) int -> eax "field V98._length (fldOffset=0x4)" P-INDEP
;* V201 tmp180 [V201 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP
;* V202 tmp181 [V202 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x4)" P-INDEP
-; V203 tmp182 [V203,T67] ( 3, 1.57) byref -> [ebp-0xC0] spill-single-def "field V106._reference (fldOffset=0x0)" P-INDEP
+; V203 tmp182 [V203,T67] ( 3, 1.57) byref -> [ebp-0xB0] spill-single-def "field V106._reference (fldOffset=0x0)" P-INDEP
; V204 tmp183 [V204,T69] ( 3, 1.57) int -> edx "field V106._length (fldOffset=0x4)" P-INDEP
;* V205 tmp184 [V205 ] ( 0, 0 ) byref -> zero-ref "field V112._reference (fldOffset=0x0)" P-INDEP
;* V206 tmp185 [V206 ] ( 0, 0 ) int -> zero-ref "field V112._length (fldOffset=0x4)" P-INDEP
-; V207 tmp186 [V207,T62] ( 3, 1.94) long -> [ebp-0x6C] do-not-enreg[F] "field V113._dateData (fldOffset=0x0)" P-INDEP
+; V207 tmp186 [V207,T62] ( 3, 1.94) long -> [ebp-0x60] do-not-enreg[F] "field V113._dateData (fldOffset=0x0)" P-INDEP
;* V208 tmp187 [V208,T86] ( 0, 0 ) long -> zero-ref "field V114._ticks (fldOffset=0x0)" P-INDEP
;* V209 tmp188 [V209 ] ( 0, 0 ) byref -> zero-ref "field V121._reference (fldOffset=0x0)" P-INDEP
;* V210 tmp189 [V210 ] ( 0, 0 ) int -> zero-ref "field V121._length (fldOffset=0x4)" P-INDEP
@@ -224,9 +224,9 @@
;* V212 tmp191 [V212 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x4)" P-INDEP
;* V213 tmp192 [V213 ] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP
;* V214 tmp193 [V214 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x4)" P-INDEP
-; V215 tmp194 [V215,T81] ( 2, 0.88) byref -> edx "field V135._reference (fldOffset=0x0)" P-INDEP
+; V215 tmp194 [V215,T81] ( 2, 0.88) byref -> edi "field V135._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp195 [V216,T96] ( 0, 0 ) int -> zero-ref "field V135._length (fldOffset=0x4)" P-INDEP
-; V217 tmp196 [V217,T92] ( 2, 0.41) byref -> edx "field V139._reference (fldOffset=0x0)" P-INDEP
+; V217 tmp196 [V217,T92] ( 2, 0.41) byref -> edi "field V139._reference (fldOffset=0x0)" P-INDEP
;* V218 tmp197 [V218,T97] ( 0, 0 ) int -> zero-ref "field V139._length (fldOffset=0x4)" P-INDEP
;* V219 tmp198 [V219 ] ( 0, 0 ) byref -> zero-ref "field V146._reference (fldOffset=0x0)" P-INDEP
;* V220 tmp199 [V220 ] ( 0, 0 ) int -> zero-ref "field V146._length (fldOffset=0x4)" P-INDEP
@@ -234,23 +234,23 @@
;* V222 tmp201 [V222 ] ( 0, 0 ) int -> zero-ref "field V148._length (fldOffset=0x4)" P-INDEP
;* V223 tmp202 [V223 ] ( 0, 0 ) byref -> zero-ref "field V153._reference (fldOffset=0x0)" P-INDEP
;* V224 tmp203 [V224 ] ( 0, 0 ) int -> zero-ref "field V153._length (fldOffset=0x4)" P-INDEP
-; V225 tmp204 [V225,T51] ( 2, 2.76) byref -> [ebp-0xC4] spill-single-def "V03.[000..004)"
-; V226 tmp205 [V226,T52] ( 2, 2.76) int -> [ebp-0x70] spill-single-def "V03.[004..008)"
+; V225 tmp204 [V225,T51] ( 2, 2.76) byref -> [ebp-0xB4] spill-single-def "V03.[000..004)"
+; V226 tmp205 [V226,T52] ( 2, 2.76) int -> [ebp-0x64] spill-single-def "V03.[004..008)"
; V227 cse0 [V227,T79] ( 3, 1.06) int -> edi "CSE - conservative"
; V228 cse1 [V228,T87] ( 3, 0.61) int -> ecx "CSE - conservative"
; V229 cse2 [V229,T89] ( 3, 0.55) int -> eax "CSE - conservative"
; V230 cse3 [V230,T27] ( 3, 5.28) int -> ebx "CSE - conservative"
; V231 cse4 [V231,T54] ( 3, 2.36) int -> ecx "CSE - conservative"
-; V232 cse5 [V232,T58] ( 3, 2.08) int -> edx "CSE - conservative"
-; V233 cse6 [V233,T88] ( 3, 0.59) int -> eax "CSE - conservative"
-; V234 cse7 [V234,T03] ( 19, 28.11) int -> [ebp-0x74] spill-single-def "CSE - aggressive"
+; V232 cse5 [V232,T58] ( 3, 2.08) int -> eax "CSE - conservative"
+; V233 cse6 [V233,T88] ( 3, 0.59) int -> edi "CSE - conservative"
+; V234 cse7 [V234,T03] ( 20, 27.81) int -> [ebp-0x68] spill-single-def "CSE - aggressive"
; V235 rat0 [V235,T10] ( 5, 11.56) ref -> registers class-hnd "replacement local" <System.ISpanFormattable>
; V236 rat1 [V236,T15] ( 6, 7.77) ref -> eax class-hnd "replacement local" <System.IFormattable>
; V237 rat2 [V237,T40] ( 3, 3.87) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; TEMP_02 byref -> [ebp-0xC8]
-; TEMP_01 int -> [ebp-0xCC]
+; TEMP_02 byref -> [ebp-0xB8]
+; TEMP_01 int -> [ebp-0xBC]
;
-; Lcl frame size = 192
+; Lcl frame size = 176
G_M36935_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -258,10 +258,10 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 192
+ sub esp, 176
vzeroupper
xor eax, eax
- mov dword ptr [ebp-0xC8], eax
+ mov dword ptr [ebp-0xB8], eax
mov esi, ecx
; byrRegs +[esi]
mov ebx, edx
@@ -272,21 +272,21 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
G_M36935_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref
mov eax, bword ptr [ebp+0x08]
; byrRegs +[eax]
- mov bword ptr [ebp-0xC4], eax
+ mov bword ptr [ebp-0xB4], eax
; GC ptr vars +{V225}
mov ecx, dword ptr [ebp+0x0C]
- mov dword ptr [ebp-0x70], ecx
+ mov dword ptr [ebp-0x64], ecx
test edi, edi
- je G_M36935_IG111
+ je G_M36935_IG100
test ebx, ebx
je G_M36935_IG32
;; size=31 bbWeight=1 PerfScore 6.50
G_M36935_IG03: ; bbWeight=0.80, gcVars=00000000000000000008000000000000 {V225}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref
; byrRegs -[eax]
- mov gword ptr [ebp-0x78], ebx
+ mov gword ptr [ebp-0x6C], ebx
; GC ptr vars +{V01}
cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M36935_IG112
+ jne G_M36935_IG101
xor edx, edx
; gcrRegs +[edx]
;; size=17 bbWeight=0.80 PerfScore 4.18
@@ -295,21 +295,21 @@ G_M36935_IG04: ; bbWeight=1, gcVars=00000000000000000008000000200000 {V01
mov ecx, 0xD1FFAB1E ; <unknown class>
call [CORINFO_HELP_CHKCASTINTERFACE]
; gcrRegs -[edx] +[eax]
- mov gword ptr [ebp-0x7C], eax
+ mov gword ptr [ebp-0x70], eax
; GC ptr vars +{V04}
xor edx, edx
...
libraries.crossgen2.windows.x86.checked.mch
-15 (-24.19%) : 80963.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 -> esi class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> edi
-; V02 loc2 [V02,T01] ( 2, 16 ) int -> eax
+; V00 loc0 [V00,T02] ( 3, 9.92) ref -> esi class-hnd exact single-def <uint[]>
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> edi
+; V02 loc2 [V02,T01] ( 2, 15.84) int -> eax
;
; Lcl frame size = 0
@@ -28,17 +28,15 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
xor edi, edi
;; size=15 bbWeight=1 PerfScore 3.75
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov ecx, edi
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint]
- cmp edi, 256
- jae SHORT G_M39919_IG06
mov dword ptr [esi+4*edi+0x08], eax
inc edi
cmp edi, 255
jbe SHORT G_M39919_IG03
- ;; size=29 bbWeight=8 PerfScore 56.00
+ ;; size=21 bbWeight=7.92 PerfScore 45.54
G_M39919_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, esi
; gcrRegs +[eax]
@@ -49,12 +47,7 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax esi]
- call [CORINFO_HELP_RNGCHKFAIL]
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 62, prolog size 5, PerfScore 65.75, instruction count 23, allocated bytes for code 62 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 47, prolog size 5, PerfScore 55.29, instruction count 19, allocated bytes for code 47 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================
+25 (+1.47%) : 20839.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
@@ -11,12 +11,12 @@
;
; V00 this [V00,T02] ( 30,250.50) byref -> esi this single-def
; V01 arg1 [V01,T30] ( 7, 11.50) ref -> [ebp-0x4C] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 16,125 ) ref -> edi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 17,125 ) ref -> edi class-hnd single-def <System.String>
; V03 arg3 [V03,T53] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T49] ( 3, 7 ) ref -> [ebp-0x50] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T06] ( 12,102 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T06] ( 15,102 ) int -> [ebp-0x18]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T10] ( 7, 48 ) int -> [ebp-0x20]
@@ -125,7 +125,7 @@
; V113 tmp92 [V113,T60] ( 2, 2 ) ref -> edx single-def "argument with side effect"
; V114 cse0 [V114,T14] ( 20, 40 ) ref -> registers multi-def "CSE - moderate"
; V115 cse1 [V115,T36] ( 3, 12 ) int -> eax "CSE - conservative"
-; V116 cse2 [V116,T03] ( 19,144 ) int -> [ebp-0x44] spill-single-def "CSE - aggressive"
+; V116 cse2 [V116,T03] ( 20,128.16) int -> [ebp-0x44] spill-single-def "CSE - aggressive"
; V117 cse3 [V117,T05] ( 7,108 ) int -> [ebp-0x48] spill-single-def "CSE - moderate"
;
; Lcl frame size = 112
@@ -148,7 +148,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000
mov eax, dword ptr [ebp+0x0C]
mov dword ptr [ebp-0x40], eax
test edi, edi
- je G_M36935_IG76
+ je G_M36935_IG79
test ebx, ebx
jne SHORT G_M36935_IG04
;; size=18 bbWeight=1 PerfScore 4.50
@@ -189,7 +189,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=0002000000000000 {V04}, gcrefRegs=000
mov ecx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x44], ecx
cmp ecx, edx
- jbe G_M36935_IG72
+ jbe G_M36935_IG75
;; size=14 bbWeight=8 PerfScore 34.00
G_M36935_IG07: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz
mov gword ptr [ebp-0x4C], ebx
@@ -231,9 +231,9 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
; byrRegs -[eax ecx]
mov dword ptr [ebp-0x2C], eax
test eax, eax
- jl G_M36935_IG73
+ jl G_M36935_IG76
cmp eax, ebx
- ja G_M36935_IG83
+ ja G_M36935_IG86
mov ebx, bword ptr [ebp-0x78]
; byrRegs +[ebx]
mov ecx, eax
@@ -250,11 +250,11 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
add ebx, dword ptr [ebp-0x2C]
mov eax, dword ptr [ebp-0x44]
cmp ebx, eax
- jae G_M36935_IG75
+ jae G_M36935_IG78
movzx edx, word ptr [edi+2*ebx+0x08]
inc ebx
cmp eax, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx ecx, word ptr [edi+2*ebx+0x08]
cmp edx, ecx
jne SHORT G_M36935_IG13
@@ -296,7 +296,7 @@ G_M36935_IG12: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
G_M36935_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
; gcrRegs -[ebx]
cmp edx, 123
- jne G_M36935_IG77
+ jne G_M36935_IG80
xor edx, edx
mov dword ptr [ebp-0x18], edx
xor eax, eax
@@ -310,7 +310,7 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov dword ptr [ebp-0x3C], eax
lea eax, [ebx-0x01]
cmp eax, dword ptr [ebp-0x44]
- jae G_M36935_IG75
+ jae G_M36935_IG78
cmp word ptr [edi+2*ebx+0x06], 123
je SHORT G_M36935_IG15
;; size=49 bbWeight=4 PerfScore 55.00
@@ -348,13 +348,13 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040
lea eax, [ecx-0x30]
mov dword ptr [ebp-0x20], eax
cmp eax, 10
- jae G_M36935_IG78
+ jae G_M36935_IG81
inc ebx
cmp dword ptr [ebp-0x44], ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx eax, word ptr [edi+2*ebx+0x08]
cmp eax, 125
- je G_M36935_IG42
+ je G_M36935_IG45
;; size=42 bbWeight=4 PerfScore 41.00
G_M36935_IG18: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
jmp SHORT G_M36935_IG20
@@ -366,7 +366,7 @@ G_M36935_IG19: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040
inc ebx
mov eax, dword ptr [ebp-0x44]
cmp eax, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx ecx, word ptr [edi+2*ebx+0x08]
mov eax, ecx
;; size=29 bbWeight=8 PerfScore 58.00
@@ -381,28 +381,28 @@ G_M36935_IG20: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000004
G_M36935_IG21: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
mov dword ptr [ebp-0x20], ecx
;; size=3 bbWeight=8 PerfScore 8.00
-G_M36935_IG22: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M36935_IG22: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp eax, 32
- jne G_M36935_IG38
- ;; size=9 bbWeight=2 PerfScore 2.50
-G_M36935_IG23: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ jne SHORT G_M36935_IG30
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M36935_IG23: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
inc ebx
mov ecx, dword ptr [ebp-0x44]
cmp ecx, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx eax, word ptr [edi+2*ebx+0x08]
cmp eax, 32
- je G_M36935_IG37
- ;; size=26 bbWeight=16 PerfScore 92.00
-G_M36935_IG24: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ je SHORT G_M36935_IG29
+ ;; size=22 bbWeight=16 PerfScore 92.00
+G_M36935_IG24: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp eax, 44
mov edx, eax
- jne G_M36935_IG36
- ;; size=11 bbWeight=2 PerfScore 3.00
+ jne SHORT G_M36935_IG28
+ ;; size=7 bbWeight=2 PerfScore 3.00
G_M36935_IG25: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
inc ebx
cmp ecx, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx eax, word ptr [edi+2*ebx+0x08]
cmp eax, 32
je SHORT G_M36935_IG25
@@ -413,95 +413,116 @@ G_M36935_IG26: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040
mov dword ptr [ebp-0x1C], 1
inc ebx
cmp ecx, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx eax, word ptr [edi+2*ebx+0x08]
;; size=26 bbWeight=2 PerfScore 11.50
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
add eax, -48
cmp eax, 10
- jae G_M36935_IG78
+ jae G_M36935_IG81
inc ebx
cmp ecx, ebx
- jbe G_M36935_IG79
- ;; size=21 bbWeight=2 PerfScore 6.00
-G_M36935_IG28: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- cmp ebx, ecx
- jae G_M36935_IG75
+ jbe G_M36935_IG82
+ test ebx, ebx
+ jl SHORT G_M36935_IG35
+ jmp SHORT G_M36935_IG32
+ ;; size=27 bbWeight=2 PerfScore 12.50
+G_M36935_IG28: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ mov eax, dword ptr [ebp-0x18]
+ jmp G_M36935_IG38
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M36935_IG29: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+ jmp SHORT G_M36935_IG23
+ ;; size=2 bbWeight=8 PerfScore 16.00
+G_M36935_IG30: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
+ mov ecx, dword ptr [ebp-0x44]
+ jmp SHORT G_M36935_IG24
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M36935_IG31: ; bbWeight=7.92, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ lea eax, [eax+4*eax]
+ lea eax, [edx+2*eax-0x30]
+ inc ebx
+ mov ecx, dword ptr [ebp-0x44]
+ cmp ecx, ebx
+ jbe G_M36935_IG82
+ ;; size=19 bbWeight=7.92 PerfScore 31.68
+G_M36935_IG32: ; bbWeight=15.84, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
movzx edx, word ptr [edi+2*ebx+0x08]
lea ecx, [edx-0x30]
cmp ecx, 9
- ja SHORT G_M36935_IG29
+ ja SHORT G_M36935_IG36
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG39
- ;; size=28 bbWeight=16 PerfScore 100.00
-G_M36935_IG29: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- cmp edx, 32
- jne SHORT G_M36935_IG35
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M36935_IG30: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- inc ebx
- mov ecx, dword ptr [ebp-0x44]
- cmp ecx, ebx
- jbe G_M36935_IG79
- movzx edx, word ptr [edi+2*ebx+0x08]
- cmp edx, 32
- je SHORT G_M36935_IG34
- ;; size=22 bbWeight=16 PerfScore 92.00
-G_M36935_IG31: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- cmp edx, 125
- je SHORT G_M36935_IG33
- cmp edx, 58
- jne G_M36935_IG80
- mov dword ptr [ebp-0x24], ebx
- ;; size=17 bbWeight=2 PerfScore 7.00
-G_M36935_IG32: ; bbWeight=16, gcVars=0002000040000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
- ; GC ptr vars -{V80}
- inc ebx
- cmp ecx, ebx
- jbe G_M36935_IG79
- movzx edx, word ptr [edi+2*ebx+0x08]
- cmp edx, 125
- je SHORT G_M36935_IG40
- cmp edx, 123
- je G_M36935_IG80
- mov ecx, dword ptr [ebp-0x44]
- jmp SHORT G_M36935_IG32
- ;; size=33 bbWeight=16 PerfScore 144.00
-G_M36935_IG33: ; bbWeight=1, gcVars=0002000060000000 {V01 V04 V80}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref
- ; GC ptr vars +{V29 V80}
- mov dword ptr [ebp-0x18], eax
- jmp G_M36935_IG42
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M36935_IG34: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
- jmp SHORT G_M36935_IG30
- ;; size=2 bbWeight=8 PerfScore 16.00
-G_M36935_IG35: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
...
+25 (+1.58%) : 16861.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
@@ -11,12 +11,12 @@
;
; V00 this [V00,T04] ( 17, 87.50) ref -> edi this class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T28] ( 7, 11.50) ref -> [ebp-0x54] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 16,125 ) ref -> esi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 17,125 ) ref -> esi class-hnd single-def <System.String>
; V03 arg3 [V03,T50] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T47] ( 3, 7 ) ref -> [ebp-0x58] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T01] ( 30,260 ) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T05] ( 12, 74 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T01] ( 33,260 ) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T05] ( 15, 74 ) int -> [ebp-0x18]
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T08] ( 7, 48 ) int -> [ebp-0x20]
@@ -131,7 +131,7 @@
; V119 cse2 [V119,T32] ( 3, 12 ) ref -> edx "CSE - conservative"
; V120 cse3 [V120,T35] ( 3, 12 ) int -> [ebp-0x48] spill-single-def "CSE - conservative"
; V121 cse4 [V121,T33] ( 3, 12 ) ref -> [ebp-0x80] spill-single-def "CSE - conservative"
-; V122 cse5 [V122,T02] ( 19,144 ) int -> [ebp-0x4C] spill-single-def "CSE - aggressive"
+; V122 cse5 [V122,T02] ( 20,128.16) int -> [ebp-0x4C] spill-single-def "CSE - aggressive"
; V123 cse6 [V123,T06] ( 6, 60 ) int -> [ebp-0x50] spill-single-def "CSE - moderate"
;
; Lcl frame size = 116
@@ -154,7 +154,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
mov eax, dword ptr [ebp+0x0C]
mov dword ptr [ebp-0x40], eax
test esi, esi
- je G_M4730_IG69
+ je G_M4730_IG72
test ebx, ebx
jne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 4.50
@@ -195,7 +195,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=0000800000000000 {V04}, gcrefRegs=0000
mov ecx, dword ptr [esi+0x04]
mov dword ptr [ebp-0x4C], ecx
cmp ecx, edx
- jbe G_M4730_IG64
+ jbe G_M4730_IG67
;; size=14 bbWeight=8 PerfScore 34.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
mov gword ptr [ebp-0x54], ebx
@@ -237,9 +237,9 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
; byrRegs -[eax ecx]
mov dword ptr [ebp-0x30], eax
test eax, eax
- jl G_M4730_IG66
+ jl G_M4730_IG69
cmp eax, ebx
- ja G_M4730_IG76
+ ja G_M4730_IG79
push eax
mov ecx, edi
; gcrRegs +[ecx]
@@ -253,11 +253,11 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
add ebx, dword ptr [ebp-0x30]
mov eax, dword ptr [ebp-0x4C]
cmp ebx, eax
- jae G_M4730_IG68
+ jae G_M4730_IG71
movzx edx, word ptr [esi+2*ebx+0x08]
inc ebx
cmp eax, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx ecx, word ptr [esi+2*ebx+0x08]
mov dword ptr [ebp-0x14], ecx
cmp edx, ecx
@@ -276,7 +276,7 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
G_M4730_IG10: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax ebx]
cmp edx, 123
- jne G_M4730_IG70
+ jne G_M4730_IG73
xor edx, edx
mov dword ptr [ebp-0x18], edx
xor eax, eax
@@ -290,7 +290,7 @@ G_M4730_IG10: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov dword ptr [ebp-0x3C], eax
lea eax, [ebx-0x01]
cmp eax, dword ptr [ebp-0x4C]
- jae G_M4730_IG68
+ jae G_M4730_IG71
cmp word ptr [esi+2*ebx+0x06], 123
je SHORT G_M4730_IG12
;; size=49 bbWeight=4 PerfScore 55.00
@@ -325,13 +325,13 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
lea eax, [ecx-0x30]
mov dword ptr [ebp-0x20], eax
cmp eax, 10
- jae G_M4730_IG71
+ jae G_M4730_IG74
inc ebx
cmp dword ptr [ebp-0x4C], ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx eax, word ptr [esi+2*ebx+0x08]
cmp eax, 125
- je G_M4730_IG39
+ je G_M4730_IG42
;; size=42 bbWeight=4 PerfScore 41.00
G_M4730_IG15: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
jmp SHORT G_M4730_IG17
@@ -343,7 +343,7 @@ G_M4730_IG16: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
inc ebx
mov eax, dword ptr [ebp-0x4C]
cmp eax, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx ecx, word ptr [esi+2*ebx+0x08]
mov eax, ecx
;; size=29 bbWeight=8 PerfScore 58.00
@@ -358,28 +358,28 @@ G_M4730_IG17: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
G_M4730_IG18: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x20], ecx
;; size=3 bbWeight=8 PerfScore 8.00
-G_M4730_IG19: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG19: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 32
- jne G_M4730_IG35
- ;; size=9 bbWeight=2 PerfScore 2.50
-G_M4730_IG20: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M4730_IG27
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M4730_IG20: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
inc ebx
mov ecx, dword ptr [ebp-0x4C]
cmp ecx, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx eax, word ptr [esi+2*ebx+0x08]
cmp eax, 32
- je G_M4730_IG34
- ;; size=26 bbWeight=16 PerfScore 92.00
-G_M4730_IG21: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG26
+ ;; size=22 bbWeight=16 PerfScore 92.00
+G_M4730_IG21: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 44
mov edx, eax
- jne G_M4730_IG33
- ;; size=11 bbWeight=2 PerfScore 3.00
+ jne SHORT G_M4730_IG25
+ ;; size=7 bbWeight=2 PerfScore 3.00
G_M4730_IG22: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
inc ebx
cmp ecx, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx eax, word ptr [esi+2*ebx+0x08]
cmp eax, 32
je SHORT G_M4730_IG22
@@ -390,95 +390,116 @@ G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov dword ptr [ebp-0x1C], 1
inc ebx
cmp ecx, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx eax, word ptr [esi+2*ebx+0x08]
;; size=26 bbWeight=2 PerfScore 11.50
-G_M4730_IG24: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG24: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
add eax, -48
cmp eax, 10
- jae G_M4730_IG71
+ jae G_M4730_IG74
inc ebx
cmp ecx, ebx
- jbe G_M4730_IG72
- ;; size=21 bbWeight=2 PerfScore 6.00
-G_M4730_IG25: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ebx, ecx
- jae G_M4730_IG68
+ jbe G_M4730_IG75
+ test ebx, ebx
+ jl SHORT G_M4730_IG32
+ jmp SHORT G_M4730_IG29
+ ;; size=27 bbWeight=2 PerfScore 12.50
+G_M4730_IG25: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ mov eax, dword ptr [ebp-0x18]
+ jmp G_M4730_IG35
+ ;; size=8 bbWeight=1 PerfScore 3.00
+G_M4730_IG26: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ jmp SHORT G_M4730_IG20
+ ;; size=2 bbWeight=8 PerfScore 16.00
+G_M4730_IG27: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+ mov ecx, dword ptr [ebp-0x4C]
+ jmp SHORT G_M4730_IG21
+ ;; size=5 bbWeight=1 PerfScore 3.00
+G_M4730_IG28: ; bbWeight=7.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ lea eax, [eax+4*eax]
+ lea eax, [edx+2*eax-0x30]
+ inc ebx
+ mov ecx, dword ptr [ebp-0x4C]
+ cmp ecx, ebx
+ jbe G_M4730_IG75
+ ;; size=19 bbWeight=7.92 PerfScore 31.68
+G_M4730_IG29: ; bbWeight=15.84, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx edx, word ptr [esi+2*ebx+0x08]
lea ecx, [edx-0x30]
cmp ecx, 9
- ja SHORT G_M4730_IG26
+ ja SHORT G_M4730_IG33
cmp eax, 0xD1FFAB1E
- jl SHORT G_M4730_IG36
- ;; size=28 bbWeight=16 PerfScore 100.00
-G_M4730_IG26: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp edx, 32
- jne SHORT G_M4730_IG32
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG27: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- inc ebx
- mov ecx, dword ptr [ebp-0x4C]
- cmp ecx, ebx
- jbe G_M4730_IG72
- movzx edx, word ptr [esi+2*ebx+0x08]
- cmp edx, 32
- je SHORT G_M4730_IG31
- ;; size=22 bbWeight=16 PerfScore 92.00
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp edx, 125
- je SHORT G_M4730_IG30
- cmp edx, 58
- jne G_M4730_IG73
- mov dword ptr [ebp-0x24], ebx
- ;; size=17 bbWeight=2 PerfScore 7.00
-G_M4730_IG29: ; bbWeight=16, gcVars=0000800010000000 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V77}
- inc ebx
- cmp ecx, ebx
- jbe G_M4730_IG72
- movzx edx, word ptr [esi+2*ebx+0x08]
- cmp edx, 125
- je SHORT G_M4730_IG37
- cmp edx, 123
- je G_M4730_IG73
- mov ecx, dword ptr [ebp-0x4C]
- jmp SHORT G_M4730_IG29
- ;; size=33 bbWeight=16 PerfScore 144.00
-G_M4730_IG30: ; bbWeight=1, gcVars=0000800018000000 {V01 V04 V77}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V77}
- mov dword ptr [ebp-0x18], eax
- jmp G_M4730_IG39
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M4730_IG31: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M4730_IG27
- ;; size=2 bbWeight=8 PerfScore 16.00
-G_M4730_IG32: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
...
libraries.pmi.windows.x86.checked.mch
-14 (-21.54%) : 80517.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 -> esi class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> edi
-; V02 loc2 [V02,T01] ( 2, 16 ) int -> eax
+; V00 loc0 [V00,T02] ( 3, 9.92) ref -> esi class-hnd exact single-def <uint[]>
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> edi
+; V02 loc2 [V02,T01] ( 2, 15.84) int -> eax
;
; Lcl frame size = 0
@@ -28,17 +28,15 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
; gcrRegs +[esi]
xor edi, edi
;; size=19 bbWeight=1 PerfScore 2.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax]
mov ecx, edi
call [Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint]
- cmp edi, 256
- jae SHORT G_M39919_IG06
mov dword ptr [esi+4*edi+0x08], eax
inc edi
cmp edi, 255
jbe SHORT G_M39919_IG03
- ;; size=29 bbWeight=8 PerfScore 56.00
+ ;; size=21 bbWeight=7.92 PerfScore 45.54
G_M39919_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov eax, esi
; gcrRegs +[eax]
@@ -49,12 +47,7 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend
pop ebp
ret
;; size=4 bbWeight=1 PerfScore 2.50
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[eax esi]
- call CORINFO_HELP_RNGCHKFAIL
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 65, prolog size 5, PerfScore 64.00, instruction count 24, allocated bytes for code 65 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 51, prolog size 5, PerfScore 53.54, instruction count 20, allocated bytes for code 51 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================
libraries_tests.run.windows.x86.Release.mch
-3 (-0.31%) : 291154.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (Tier0-FullOpts)
@@ -9,52 +9,52 @@
; Final local variable assignments
;
; V00 loc0 [V00,T27] ( 3, 5.96) ref -> esi class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T20] ( 4, 10 ) ref -> edi class-hnd exact single-def <<unknown class>>
-; V02 loc2 [V02,T08] ( 8, 28.72) int -> ecx
+; V01 loc1 [V01,T13] ( 7, 21.80) ref -> edi class-hnd exact single-def <<unknown class>>
+; V02 loc2 [V02,T07] ( 8, 28.72) int -> ecx
;* 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,T31] ( 7, 3 ) ref -> [ebp-0x2C] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
-; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor>
-; V06 loc6 [V06,T01] ( 9, 33 ) int -> esi
+; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
+; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x34] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor>
+; V06 loc6 [V06,T08] ( 8, 28.72) int -> esi
; V07 tmp0 [V07,T21] ( 4, 8 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V08 tmp1 [V08,T19] ( 5, 10 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V08 tmp1 [V08,T20] ( 5, 10 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
; V09 tmp2 [V09,T28] ( 2, 4 ) int -> esi "Inlining Arg"
; V10 tmp3 [V10,T26] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp8 [V15,T13] ( 2, 16 ) int -> ebx "Inlining Arg"
-; V16 tmp9 [V16,T09] ( 3, 24 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp8 [V15,T14] ( 2, 15.84) int -> [ebp-0x24] spill-single-def "Inlining Arg"
+; V16 tmp9 [V16,T10] ( 3, 23.76) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp11 [V18,T16] ( 3, 12 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T02] ( 4, 32 ) ref -> [ebp-0x4C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V20 tmp13 [V20,T03] ( 4, 32 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp11 [V18,T17] ( 3, 11.88) ref -> [ebp-0x4C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V19 tmp12 [V19,T01] ( 4, 31.68) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V20 tmp13 [V20,T02] ( 4, 31.68) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V22 tmp15 [V22,T14] ( 2, 16 ) int -> [ebp-0x24] spill-single-def "Inlining Arg"
-; V23 tmp16 [V23,T10] ( 3, 24 ) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V22 tmp15 [V22,T15] ( 2, 15.84) int -> [ebp-0x28] spill-single-def "Inlining Arg"
+; V23 tmp16 [V23,T11] ( 3, 23.76) ref -> [ebp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V25 tmp18 [V25,T17] ( 3, 12 ) ref -> [ebp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T04] ( 4, 32 ) ref -> [ebp-0x5C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp20 [V27,T05] ( 4, 32 ) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp18 [V25,T18] ( 3, 11.88) ref -> [ebp-0x5C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V26 tmp19 [V26,T03] ( 4, 31.68) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V27 tmp20 [V27,T04] ( 4, 31.68) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V28 tmp21 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V31 tmp24 [V31 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V32 tmp25 [V32,T15] ( 2, 16 ) ushort -> [ebp-0x28] spill-single-def "Inlining Arg"
-; V33 tmp26 [V33,T11] ( 3, 24 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V32 tmp25 [V32,T16] ( 2, 15.84) ushort -> [ebp-0x2C] spill-single-def "Inlining Arg"
+; V33 tmp26 [V33,T12] ( 3, 23.76) ref -> [ebp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V35 tmp28 [V35,T18] ( 3, 12 ) ref -> [ebp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T06] ( 4, 32 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V37 tmp30 [V37,T07] ( 4, 32 ) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V35 tmp28 [V35,T19] ( 3, 11.88) ref -> [ebp-0x6C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
+; V36 tmp29 [V36,T05] ( 4, 31.68) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V37 tmp30 [V37,T06] ( 4, 31.68) ref -> [ebp-0x74] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V41 tmp34 [V41,T29] ( 0, 0 ) ubyte -> zero-ref "field V29.hasValue (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T24] ( 3, 8 ) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
+; V42 tmp35 [V42,T24] ( 3, 7.92) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V30.value (fldOffset=0x1)" P-INDEP
;* V45 tmp38 [V45,T30] ( 0, 0 ) ubyte -> zero-ref "field V39.hasValue (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T25] ( 2, 8 ) ubyte -> ecx "field V39.value (fldOffset=0x1)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 7.92) ubyte -> ebx "field V39.value (fldOffset=0x1)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V40.value (fldOffset=0x1)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)"
@@ -64,9 +64,9 @@
;* V53 tmp46 [V53 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)"
; V54 tmp47 [V54,T00] ( 6, 47.52) byref -> eax "Spilling address for field-by-field copy"
; V55 EHSlots [V55 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V56 cse0 [V56,T12] ( 5, 20 ) byref -> ebx "CSE - moderate"
+; V56 cse0 [V56,T09] ( 6, 23.76) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 100
+; Lcl frame size = 104
G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -74,7 +74,7 @@ G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 100
+ sub esp, 104
xor eax, eax
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -123,14 +123,14 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov edx, 192
call [System.IO.Tests.TestSafeBuffer:.ctor(int):this]
; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x2C], ebx
+ mov gword ptr [ebp-0x30], ebx
; GC ptr vars +{V04}
;; size=28 bbWeight=1 PerfScore 6.00
G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E ; System.IO.UnmanagedMemoryAccessor
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- mov gword ptr [ebp-0x34], eax
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V08}
push 0
push 0
@@ -143,12 +143,12 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[eax ecx edx ebx]
- mov ebx, gword ptr [ebp-0x34]
+ mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x30], ebx
+ mov gword ptr [ebp-0x34], ebx
; GC ptr vars +{V05}
;; size=42 bbWeight=1 PerfScore 12.75
-G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1, gcVars=0000000280100000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
push 0
push 0
push 0
@@ -178,7 +178,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
; gcrRegs +[ebx]
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x38], eax
+ mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V12}
xor ecx, ecx
; gcrRegs +[ecx]
@@ -186,11 +186,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
mov ecx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[ecx]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x3C], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V13}
lea edx, bword ptr [eax+0x04]
; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x38]
+ mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx]
; GC ptr vars -{V12}
call CORINFO_HELP_ASSIGN_REF_ECX
@@ -199,11 +199,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
mov dword ptr [eax+0x0C], 0xD1FFAB1E
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x40], eax
+ mov gword ptr [ebp-0x44], eax
; GC ptr vars +{V14}
lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x3C]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx]
; GC ptr vars -{V13}
call CORINFO_HELP_ASSIGN_REF_ECX
@@ -213,7 +213,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
xor edx, edx
call [System.LazyHelper:Create(int,ubyte):System.LazyHelper]
; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x40]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx]
lea edx, bword ptr [ecx+0x04]
; byrRegs +[edx]
@@ -235,18 +235,19 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
; gcr arg pop 1
xor esi, esi
;; size=171 bbWeight=1 PerfScore 43.00
-G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov ecx, esi
- shl ecx, 4
- mov ebx, dword ptr [edi+ecx+0x08]
+G_M53770_IG07: ; bbWeight=3.96, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ mov ebx, esi
+ shl ebx, 4
+ mov eax, dword ptr [edi+ebx+0x08]
+ mov dword ptr [ebp-0x24], eax
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x48], eax
; GC ptr vars +{V16}
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x48], eax
+ mov gword ptr [ebp-0x4C], eax
; GC ptr vars +{V18}
xor ecx, ecx
; gcrRegs +[ecx]
@@ -254,26 +255,26 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000
mov ecx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[ecx]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x4C], eax
+ mov gword ptr [ebp-0x50], eax
; GC ptr vars +{V19}
lea edx, bword ptr [eax+0x04]
; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x48]
+ mov ecx, gword ptr [ebp-0x4C]
; gcrRegs +[ecx]
- ; GC ptr vars -{V16 V18}
+ ; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[ecx]
; byrRegs -[edx]
mov dword ptr [eax+0x0C], 0xD1FFAB1E
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x50], eax
+ mov gword ptr [ebp-0x54], eax
; GC ptr vars +{V20}
lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x4C]
+ mov ecx, gword ptr [ebp-0x50]
; gcrRegs +[ecx]
- ; GC ptr vars -{V19} +{V16}
+ ; GC ptr vars -{V19}
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[eax ecx]
; byrRegs -[edx]
@@ -281,14 +282,14 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000
xor edx, edx
call [System.LazyHelper:Create(int,ubyte):System.LazyHelper]
; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x50]
+ mov ecx, gword ptr [ebp-0x54]
; gcrRegs +[ecx]
lea edx, bword ptr [ecx+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
...
librariestestsnotieredcompilation.run.windows.x86.Release.mch
-3 (-0.31%) : 136874.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)
@@ -9,52 +9,52 @@
; Final local variable assignments
;
; V00 loc0 [V00,T27] ( 3, 5.96) ref -> esi class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T20] ( 4, 10 ) ref -> edi class-hnd exact single-def <<unknown class>>
-; V02 loc2 [V02,T08] ( 8, 28.72) int -> ecx
+; V01 loc1 [V01,T13] ( 7, 21.80) ref -> edi class-hnd exact single-def <<unknown class>>
+; V02 loc2 [V02,T07] ( 8, 28.72) int -> ecx
;* 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,T31] ( 7, 3 ) ref -> [ebp-0x2C] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
-; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor>
-; V06 loc6 [V06,T01] ( 9, 33 ) int -> esi
+; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer>
+; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x34] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor>
+; V06 loc6 [V06,T08] ( 8, 28.72) int -> esi
; V07 tmp0 [V07,T21] ( 4, 8 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V08 tmp1 [V08,T19] ( 5, 10 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V08 tmp1 [V08,T20] ( 5, 10 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
; V09 tmp2 [V09,T28] ( 2, 4 ) int -> esi "Inlining Arg"
; V10 tmp3 [V10,T26] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V15 tmp8 [V15,T13] ( 2, 16 ) int -> ebx "Inlining Arg"
-; V16 tmp9 [V16,T09] ( 3, 24 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp8 [V15,T14] ( 2, 15.84) int -> [ebp-0x24] spill-single-def "Inlining Arg"
+; V16 tmp9 [V16,T10] ( 3, 23.76) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp11 [V18,T16] ( 3, 12 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T02] ( 4, 32 ) ref -> [ebp-0x4C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V20 tmp13 [V20,T03] ( 4, 32 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp11 [V18,T17] ( 3, 11.88) ref -> [ebp-0x4C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V19 tmp12 [V19,T01] ( 4, 31.68) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V20 tmp13 [V20,T02] ( 4, 31.68) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V22 tmp15 [V22,T14] ( 2, 16 ) int -> [ebp-0x24] spill-single-def "Inlining Arg"
-; V23 tmp16 [V23,T10] ( 3, 24 ) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V22 tmp15 [V22,T15] ( 2, 15.84) int -> [ebp-0x28] spill-single-def "Inlining Arg"
+; V23 tmp16 [V23,T11] ( 3, 23.76) ref -> [ebp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V25 tmp18 [V25,T17] ( 3, 12 ) ref -> [ebp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T04] ( 4, 32 ) ref -> [ebp-0x5C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp20 [V27,T05] ( 4, 32 ) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp18 [V25,T18] ( 3, 11.88) ref -> [ebp-0x5C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
+; V26 tmp19 [V26,T03] ( 4, 31.68) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V27 tmp20 [V27,T04] ( 4, 31.68) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V28 tmp21 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V31 tmp24 [V31 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V32 tmp25 [V32,T15] ( 2, 16 ) ushort -> [ebp-0x28] spill-single-def "Inlining Arg"
-; V33 tmp26 [V33,T11] ( 3, 24 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V32 tmp25 [V32,T16] ( 2, 15.84) ushort -> [ebp-0x2C] spill-single-def "Inlining Arg"
+; V33 tmp26 [V33,T12] ( 3, 23.76) ref -> [ebp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V35 tmp28 [V35,T18] ( 3, 12 ) ref -> [ebp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T06] ( 4, 32 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V37 tmp30 [V37,T07] ( 4, 32 ) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V35 tmp28 [V35,T19] ( 3, 11.88) ref -> [ebp-0x6C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
+; V36 tmp29 [V36,T05] ( 4, 31.68) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V37 tmp30 [V37,T06] ( 4, 31.68) ref -> [ebp-0x74] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V39 tmp32 [V39 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
;* V41 tmp34 [V41,T29] ( 0, 0 ) ubyte -> zero-ref "field V29.hasValue (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T24] ( 3, 8 ) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
+; V42 tmp35 [V42,T24] ( 3, 7.92) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V30.value (fldOffset=0x1)" P-INDEP
;* V45 tmp38 [V45,T30] ( 0, 0 ) ubyte -> zero-ref "field V39.hasValue (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T25] ( 2, 8 ) ubyte -> ecx "field V39.value (fldOffset=0x1)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 7.92) ubyte -> ebx "field V39.value (fldOffset=0x1)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V40.value (fldOffset=0x1)" P-INDEP
;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)"
@@ -64,9 +64,9 @@
;* V53 tmp46 [V53 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)"
; V54 tmp47 [V54,T00] ( 6, 47.52) byref -> eax "Spilling address for field-by-field copy"
; V55 EHSlots [V55 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V56 cse0 [V56,T12] ( 5, 20 ) byref -> ebx "CSE - moderate"
+; V56 cse0 [V56,T09] ( 6, 23.76) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 100
+; Lcl frame size = 104
G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
push ebp
@@ -74,7 +74,7 @@ G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
push edi
push esi
push ebx
- sub esp, 100
+ sub esp, 104
xor eax, eax
mov dword ptr [ebp-0x20], eax
mov dword ptr [ebp-0x1C], eax
@@ -123,14 +123,14 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
mov edx, 192
call [System.IO.Tests.TestSafeBuffer:.ctor(int):this]
; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x2C], ebx
+ mov gword ptr [ebp-0x30], ebx
; GC ptr vars +{V04}
;; size=28 bbWeight=1 PerfScore 6.00
G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
mov ecx, 0xD1FFAB1E ; System.IO.UnmanagedMemoryAccessor
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- mov gword ptr [ebp-0x34], eax
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V08}
push 0
push 0
@@ -143,12 +143,12 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000
; gcrRegs +[edx]
call [<unknown method>]
; gcrRegs -[eax ecx edx ebx]
- mov ebx, gword ptr [ebp-0x34]
+ mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x30], ebx
+ mov gword ptr [ebp-0x34], ebx
; GC ptr vars +{V05}
;; size=42 bbWeight=1 PerfScore 12.75
-G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1, gcVars=0000000280100000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
push 0
push 0
push 0
@@ -178,7 +178,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
; gcrRegs +[ebx]
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x38], eax
+ mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V12}
xor ecx, ecx
; gcrRegs +[ecx]
@@ -186,11 +186,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
mov ecx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[ecx]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x3C], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V13}
lea edx, bword ptr [eax+0x04]
; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x38]
+ mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx]
; GC ptr vars -{V12}
call CORINFO_HELP_ASSIGN_REF_ECX
@@ -199,11 +199,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
mov dword ptr [eax+0x0C], 0xD1FFAB1E
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x40], eax
+ mov gword ptr [ebp-0x44], eax
; GC ptr vars +{V14}
lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x3C]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx]
; GC ptr vars -{V13}
call CORINFO_HELP_ASSIGN_REF_ECX
@@ -213,7 +213,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
xor edx, edx
call [System.LazyHelper:Create(int,ubyte):System.LazyHelper]
; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x40]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx]
lea edx, bword ptr [ecx+0x04]
; byrRegs +[edx]
@@ -235,18 +235,19 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref
; gcr arg pop 1
xor esi, esi
;; size=171 bbWeight=1 PerfScore 43.00
-G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
- mov ecx, esi
- shl ecx, 4
- mov ebx, dword ptr [edi+ecx+0x08]
+G_M53770_IG07: ; bbWeight=3.96, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+ mov ebx, esi
+ shl ebx, 4
+ mov eax, dword ptr [edi+ebx+0x08]
+ mov dword ptr [ebp-0x24], eax
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x48], eax
; GC ptr vars +{V16}
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x48], eax
+ mov gword ptr [ebp-0x4C], eax
; GC ptr vars +{V18}
xor ecx, ecx
; gcrRegs +[ecx]
@@ -254,26 +255,26 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000
mov ecx, 0xD1FFAB1E ; <unknown class>
; gcrRegs -[ecx]
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x4C], eax
+ mov gword ptr [ebp-0x50], eax
; GC ptr vars +{V19}
lea edx, bword ptr [eax+0x04]
; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x48]
+ mov ecx, gword ptr [ebp-0x4C]
; gcrRegs +[ecx]
- ; GC ptr vars -{V16 V18}
+ ; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[ecx]
; byrRegs -[edx]
mov dword ptr [eax+0x0C], 0xD1FFAB1E
mov ecx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x50], eax
+ mov gword ptr [ebp-0x54], eax
; GC ptr vars +{V20}
lea edx, bword ptr [eax+0x08]
; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x4C]
+ mov ecx, gword ptr [ebp-0x50]
; gcrRegs +[ecx]
- ; GC ptr vars -{V19} +{V16}
+ ; GC ptr vars -{V19}
call CORINFO_HELP_ASSIGN_REF_ECX
; gcrRegs -[eax ecx]
; byrRegs -[edx]
@@ -281,14 +282,14 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000
xor edx, edx
call [System.LazyHelper:Create(int,ubyte):System.LazyHelper]
; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x50]
+ mov ecx, gword ptr [ebp-0x54]
; gcrRegs +[ecx]
lea edx, bword ptr [ecx+0x04]
; byrRegs +[edx]
call CORINFO_HELP_ASSIGN_REF_EAX
; gcrRegs -[eax]
; byrRegs -[edx]
...
realworld.run.windows.x86.checked.mch
+28 (+1.28%) : 2116.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 -> esi this class-hnd single-def <System.Text.StringBuilder>
; V01 arg1 [V01,T35] ( 7, 17.50) ref -> [ebp-0x74] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T13] ( 16, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V02 arg2 [V02,T13] ( 17, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T66] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [ebp-0x78] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [ebp-0x10] ld-addr-op
-; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [ebp-0x14]
-; V07 loc3 [V07,T08] ( 12, 242 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [ebp-0x10] ld-addr-op
+; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [ebp-0x14]
+; V07 loc3 [V07,T08] ( 15, 242 ) int -> [ebp-0x18]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V10 loc6 [V10,T16] ( 7, 48 ) int -> [ebp-0x20]
@@ -165,7 +165,7 @@
; V154 cse3 [V154,T46] ( 3, 12 ) ref -> edx "CSE - conservative"
; V155 cse4 [V155,T48] ( 3, 12 ) int -> [ebp-0x64] spill-single-def "CSE - conservative"
; V156 cse5 [V156,T03] ( 6, 416 ) int -> [ebp-0x68] spill-single-def "CSE - aggressive"
-; V157 cse6 [V157,T12] ( 19, 144 ) int -> [ebp-0x6C] spill-single-def "CSE - moderate"
+; V157 cse6 [V157,T12] ( 20, 128.16) int -> [ebp-0x6C] spill-single-def "CSE - moderate"
; V158 cse7 [V158,T10] ( 4, 192 ) int -> eax "CSE - moderate"
; V159 cse8 [V159,T20] ( 4, 32 ) int -> [ebp-0x70] spill-single-def "CSE - conservative"
; TEMP_01 int -> [ebp-0xA0]
@@ -190,7 +190,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
mov eax, dword ptr [ebp+0x0C]
mov dword ptr [ebp-0x5C], eax
test edi, edi
- je G_M4730_IG78
+ je G_M4730_IG82
test ebx, ebx
jne SHORT G_M4730_IG04
;; size=18 bbWeight=1 PerfScore 4.50
@@ -229,7 +229,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR
mov ecx, dword ptr [edi+0x04]
mov dword ptr [ebp-0x6C], ecx
cmp ecx, edx
- jbe G_M4730_IG73
+ jbe G_M4730_IG77
;; size=14 bbWeight=8 PerfScore 34.00
G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
lea eax, bword ptr [edi+2*edx+0x08]
@@ -274,9 +274,9 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
; byrRegs -[ecx]
mov dword ptr [ebp-0x38], eax
test eax, eax
- jl G_M4730_IG75
+ jl G_M4730_IG79
cmp eax, dword ptr [ebp-0x58]
- ja G_M4730_IG89
+ ja G_M4730_IG93
mov ecx, eax
not ecx
shr ecx, 31
@@ -294,7 +294,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
add edx, dword ptr [ebp-0x38]
mov eax, dword ptr [ebp-0x6C]
cmp edx, eax
- jae G_M4730_IG77
+ jae G_M4730_IG81
;; size=206 bbWeight=4 PerfScore 232.00
G_M4730_IG08: ; bbWeight=4, isz, extend
movzx ecx, word ptr [edi+2*edx+0x08]
@@ -328,7 +328,7 @@ G_M4730_IG10: ; bbWeight=2, gcVars=000000000000000000000000 {}, gcrefRegs
; gcrRegs -[eax esi]
; GC ptr vars -{V01 V04}
mov ecx, edx
- jmp G_M4730_IG81
+ jmp G_M4730_IG85
;; size=7 bbWeight=2 PerfScore 4.50
G_M4730_IG11: ; bbWeight=2, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs +[esi]
@@ -353,7 +353,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR
; gcrRegs -[edi]
; GC ptr vars -{V01 V35 V65}
cmp dword ptr [ebp-0x24], 123
- jne G_M4730_IG79
+ jne G_M4730_IG83
mov dword ptr [ebp-0x14], ecx
mov gword ptr [ebp-0x74], ebx
; GC ptr vars +{V01}
@@ -371,7 +371,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR
mov edx, dword ptr [ebp-0x10]
lea edi, [edx-0x01]
cmp edi, dword ptr [ebp-0x6C]
- jae G_M4730_IG77
+ jae G_M4730_IG81
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
mov dword ptr [ebp-0x10], edx
@@ -387,16 +387,16 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR
lea edx, [eax-0x30]
mov dword ptr [ebp-0x20], edx
cmp edx, 10
- jae G_M4730_IG80
+ jae G_M4730_IG84
mov ecx, dword ptr [ebp-0x10]
inc ecx
mov eax, dword ptr [ebp-0x6C]
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov gword ptr [ebp+0x10], edi
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 125
- je G_M4730_IG38
+ je G_M4730_IG42
;; size=139 bbWeight=4 PerfScore 162.00
G_M4730_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[edi]
@@ -408,7 +408,7 @@ G_M4730_IG15: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000
mov dword ptr [ebp-0x20], edi
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov edx, gword ptr [ebp+0x10]
; gcrRegs +[edx]
movzx edi, word ptr [edx+2*ecx+0x08]
@@ -427,28 +427,28 @@ G_M4730_IG16: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000
G_M4730_IG17: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x20], edi
;; size=3 bbWeight=8 PerfScore 8.00
-G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edx, 32
- jne G_M4730_IG35
- ;; size=9 bbWeight=2 PerfScore 2.50
-G_M4730_IG19: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M4730_IG27
+ ;; size=5 bbWeight=2 PerfScore 2.50
+G_M4730_IG19: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov edi, gword ptr [ebp+0x10]
; gcrRegs +[edi]
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 32
- je G_M4730_IG34
- ;; size=26 bbWeight=16 PerfScore 92.00
-G_M4730_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG26
+ ;; size=22 bbWeight=16 PerfScore 92.00
+G_M4730_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp edx, 44
- jne G_M4730_IG33
- ;; size=9 bbWeight=2 PerfScore 2.50
+ jne SHORT G_M4730_IG25
+ ;; size=5 bbWeight=2 PerfScore 2.50
G_M4730_IG21: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
movzx edx, word ptr [edi+2*ecx+0x08]
cmp edx, 32
je SHORT G_M4730_IG21
@@ -459,124 +459,152 @@ G_M4730_IG22: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
mov ebx, 1
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
movzx edx, word ptr [edi+2*ecx+0x08]
mov dword ptr [ebp-0x1C], ebx
;; size=27 bbWeight=2 PerfScore 12.00
-G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
add edx, -48
cmp edx, 10
- jae G_M4730_IG32
+ jae SHORT G_M4730_IG24
inc ecx
cmp eax, ecx
- jbe G_M4730_IG81
- ;; size=21 bbWeight=2 PerfScore 6.00
-G_M4730_IG24: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
- cmp ecx, eax
- jae G_M4730_IG77
- mov gword ptr [ebp+0x10], edi
- movzx edi, word ptr [edi+2*ecx+0x08]
- ; gcrRegs -[edi]
- lea eax, [edi-0x30]
- cmp eax, 9
- ja SHORT G_M4730_IG25
- cmp edx, 0xD1FFAB1E
- jl G_M4730_IG36
- ;; size=36 bbWeight=16 PerfScore 116.00
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp edi, 32
- jne SHORT G_M4730_IG31
- ;; size=5 bbWeight=2 PerfScore 2.50
-G_M4730_IG26: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- inc ecx
- mov eax, dword ptr [ebp-0x6C]
- cmp eax, ecx
- jbe G_M4730_IG81
- mov edi, gword ptr [ebp+0x10]
- ; gcrRegs +[edi]
- movzx edi, word ptr [edi+2*ecx+0x08]
- ; gcrRegs -[edi]
- cmp edi, 32
- je SHORT G_M4730_IG30
- ;; size=25 bbWeight=16 PerfScore 108.00
-G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- cmp edi, 125
- je SHORT G_M4730_IG29
- cmp edi, 58
- jne G_M4730_IG82
- mov dword ptr [ebp-0x28], ecx
- ;; size=17 bbWeight=2 PerfScore 7.00
-G_M4730_IG28: ; bbWeight=16, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
- ; GC ptr vars -{V93}
- inc ecx
- cmp eax, ecx
- jbe G_M4730_IG81
- mov edi, gword ptr [ebp+0x10]
- ; gcrRegs +[edi]
- movzx edi, word ptr [edi+2*ecx+0x08]
- ; gcrRegs -[edi]
- cmp edi, 125
- je SHORT G_M4730_IG37
- cmp edi, 123
- je G_M4730_IG82
- mov eax, dword ptr [ebp-0x6C]
- jmp SHORT G_M4730_IG28
- ;; size=36 bbWeight=16 PerfScore 160.00
-G_M4730_IG29: ; bbWeight=1, gcVars=000000020000000840000000 {V01 V04 V93}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
- ; GC ptr vars +{V93}
- mov ebx, edx
- jmp G_M4730_IG38
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M4730_IG30: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- jmp SHORT G_M4730_IG26
- ;; size=2 bbWeight=8 PerfScore 16.00
-G_M4730_IG31: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
- mov eax, dword ptr [ebp-0x6C]
- jmp SHORT G_M4730_IG27
- ;; size=5 bbWeight=1 PerfScore 3.00
-G_M4730_IG32: ; bbWeight=1, gcVars=000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
- ; gcrRegs -[esi]
+ jbe G_M4730_IG85
+ test ecx, ecx
+ jl SHORT G_M4730_IG33
+ jmp SHORT G_M4730_IG30
+ ;; size=23 bbWeight=2 PerfScore 12.50
...
Details
Improvements/regressions per collection
| Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
| benchmarks.run.windows.x86.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+80 |
| benchmarks.run_pgo.windows.x86.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+81 |
| benchmarks.run_tiered.windows.x86.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+86 |
| coreclr_tests.run.windows.x86.checked.mch |
169 |
0 |
169 |
0 |
-0 |
+10,748 |
| libraries.crossgen2.windows.x86.checked.mch |
4 |
1 |
3 |
0 |
-15 |
+131 |
| libraries.pmi.windows.x86.checked.mch |
2 |
1 |
1 |
0 |
-14 |
+234 |
| libraries_tests.run.windows.x86.Release.mch |
256 |
1 |
255 |
0 |
-3 |
+17,499 |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
1 |
1 |
0 |
0 |
-3 |
+0 |
| realworld.run.windows.x86.checked.mch |
2 |
0 |
2 |
0 |
-0 |
+80 |
|
440 |
4 |
436 |
0 |
-35 |
+28,939 |
Context information
| Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
| benchmarks.run.windows.x86.checked.mch |
24,485 |
4 |
24,481 |
3 (0.01%) |
3 (0.01%) |
| benchmarks.run_pgo.windows.x86.checked.mch |
118,206 |
42,036 |
76,170 |
35 (0.03%) |
35 (0.03%) |
| benchmarks.run_tiered.windows.x86.checked.mch |
48,024 |
28,739 |
19,285 |
3 (0.01%) |
3 (0.01%) |
| coreclr_tests.run.windows.x86.checked.mch |
574,596 |
319,944 |
254,652 |
76 (0.01%) |
77 (0.01%) |
| libraries.crossgen2.windows.x86.checked.mch |
242,536 |
15 |
242,521 |
47 (0.02%) |
50 (0.02%) |
| libraries.pmi.windows.x86.checked.mch |
305,641 |
6 |
305,635 |
72 (0.02%) |
75 (0.02%) |
| libraries_tests.run.windows.x86.Release.mch |
624,876 |
425,508 |
199,368 |
481 (0.08%) |
481 (0.08%) |
| librariestestsnotieredcompilation.run.windows.x86.Release.mch |
316,407 |
21,910 |
294,497 |
64 (0.02%) |
64 (0.02%) |
| realworld.run.windows.x86.checked.mch |
35,963 |
3 |
35,960 |
27 (0.08%) |
27 (0.08%) |
|
2,290,734 |
838,165 |
1,452,569 |
808 (0.04%) |
815 (0.04%) |
jit-analyze output
benchmarks.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 7120212 (overridden on cmd)
Total bytes of diff: 7120292 (overridden on cmd)
Total bytes of delta: 80 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_pgo.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 45137426 (overridden on cmd)
Total bytes of diff: 45137507 (overridden on cmd)
Total bytes of delta: 81 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
benchmarks.run_tiered.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 9472425 (overridden on cmd)
Total bytes of diff: 9472511 (overridden on cmd)
Total bytes of delta: 86 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
coreclr_tests.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 309367285 (overridden on cmd)
Total bytes of diff: 309378033 (overridden on cmd)
Total bytes of delta: 10748 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 89 unchanged.
libraries.crossgen2.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 31673137 (overridden on cmd)
Total bytes of diff: 31673253 (overridden on cmd)
Total bytes of delta: 116 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 4 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
libraries.pmi.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 49151797 (overridden on cmd)
Total bytes of diff: 49152017 (overridden on cmd)
Total bytes of delta: 220 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
libraries_tests.run.windows.x86.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 184751383 (overridden on cmd)
Total bytes of diff: 184768879 (overridden on cmd)
Total bytes of delta: 17496 (0.01 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 81 unchanged.
librariestestsnotieredcompilation.run.windows.x86.Release.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 103727320 (overridden on cmd)
Total bytes of diff: 103727317 (overridden on cmd)
Total bytes of delta: -3 (-0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
realworld.run.windows.x86.checked.mch
To reproduce these diffs on Windows x86:
superpmi.py asmdiffs -target_os windows -target_arch x86 -arch x86
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11283258 (overridden on cmd)
Total bytes of diff: 11283338 (overridden on cmd)
Total bytes of delta: 80 (0.00 % of base)
relative diff is a regression.
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 2 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).