Assembly Diffs

linux arm

Diffs are based on 2,239,390 contexts (829,328 MinOpts, 1,410,062 FullOpts).

MISSED contexts: base: 71,273 (3.08%), diff: 71,274 (3.08%)

Overall (+33,226 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,292,204 +140
benchmarks.run_pgo.linux.arm.checked.mch 63,958,726 +118
benchmarks.run_tiered.linux.arm.checked.mch 21,548,242 +104
coreclr_tests.run.linux.arm.checked.mch 321,753,238 +10,062
libraries.crossgen2.linux.arm.checked.mch 34,522,594 +100
libraries.pmi.linux.arm.checked.mch 49,856,628 +204
libraries_tests.run.linux.arm.Release.mch 243,861,550 +22,350
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,524,240 +8
realworld.run.linux.arm.checked.mch 13,606,688 +140

FullOpts (+33,226 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,903,002 +140
benchmarks.run_pgo.linux.arm.checked.mch 52,758,760 +118
benchmarks.run_tiered.linux.arm.checked.mch 12,895,242 +104
coreclr_tests.run.linux.arm.checked.mch 109,275,650 +10,062
libraries.crossgen2.linux.arm.checked.mch 34,521,364 +100
libraries.pmi.linux.arm.checked.mch 49,750,404 +204
libraries_tests.run.linux.arm.Release.mch 122,892,418 +22,350
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,453,504 +8
realworld.run.linux.arm.checked.mch 13,171,388 +140

Example diffs

benchmarks.run.linux.arm.checked.mch

+70 (+3.09%) : 2105.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%) : 7968.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%) : 16252.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%) : 28040.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%) : 8803.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%) : 21483.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%) : 199687.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

+0 (0.00%) : 416872.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

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

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T22] ( 5, 7.04) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T36] ( 4, 4.04) struct ( 8) [sp+0xDC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T68] ( 3, 2.04) ref -> [sp+0x54] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T09] ( 62, 25.81) int -> [sp+0xB4] ld-addr-op -; V06 loc2 [V06,T29] ( 29, 6.26) ushort -> [sp+0xB0] -; V07 loc3 [V07,T60] ( 12, 2.09) int -> [sp+0xAC]
+; V05 loc1 [V05,T09] ( 67, 25.81) int -> [sp+0xB4] ld-addr-op +; V06 loc2 [V06,T29] ( 32, 6.26) ushort -> [sp+0xB0] +; V07 loc3 [V07,T60] ( 15, 2.09) int -> [sp+0xAC]
; V08 loc4 [V08,T51] ( 5, 3.13) 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.17) int -> r8 @@ -287,8 +287,8 @@ ; V275 cse0 [V275,T53] ( 3, 3.13) int -> r2 "CSE - conservative" ; V276 cse1 [V276,T54] ( 3, 3.13) int -> lr "CSE - conservative" ; V277 cse2 [V277,T57] ( 3, 2.87) int -> r3 "CSE - conservative"
-; V278 cse3 [V278,T17] ( 19, 11.30) int -> [sp+0x58] spill-single-def "CSE - moderate" -; V279 cse4 [V279,T21] ( 15, 9.21) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V278 cse3 [V278,T17] ( 20, 11.30) int -> [sp+0x58] spill-single-def "CSE - moderate" +; V279 cse4 [V279,T21] ( 16, 9.21) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
; V280 cse5 [V280,T02] ( 32,164.35) ref -> registers multi-def "CSE - aggressive" ; V281 rat0 [V281,T28] ( 5, 7.30) ref -> r1 class-hnd "replacement local" <System.ISpanFormattable> ; V282 rat1 [V282,T34] ( 3, 6.24) byref -> r0 "ReplaceWithLclVar is creating a new local variable" @@ -589,20 +589,20 @@ G_M36935_IG19: ; bbWeight=1.04, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r ldr lr, [sp+0x54] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG91
+ bne G_M36935_IG93
;; size=40 bbWeight=1.04 PerfScore 13.56 G_M36935_IG20: ; bbWeight=1.04, gcVars=00000000000004900000000000000000 {V04 V12 V183}, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[lr] +[r9] ; byrRegs -[r0] cmp r9, 0
- bne G_M36935_IG105
+ bne G_M36935_IG107
ldr r9, [sp+0xA8] // [V08 loc4] ; gcrRegs -[r9] cmp r9, 0 bne SHORT G_M36935_IG21 ldr r12, [sp+0xAC] // [V07 loc3] cmp r12, 0
- bne G_M36935_IG97
+ bne G_M36935_IG99
;; size=30 bbWeight=1.04 PerfScore 8.34 G_M36935_IG21: ; bbWeight=1.04, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz mov r1, r8 @@ -615,7 +615,7 @@ G_M36935_IG22: ; bbWeight=0.52, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0 movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- bne G_M36935_IG94
+ bne G_M36935_IG96
;; size=16 bbWeight=0.52 PerfScore 2.61 G_M36935_IG23: ; bbWeight=1.04, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz mov r0, r1 @@ -623,7 +623,7 @@ G_M36935_IG23: ; bbWeight=1.04, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0 str r0, [sp+0x4C] // [V18 loc14] ; GC ptr vars +{V18} cmp r0, 0
- beq G_M36935_IG97
+ beq G_M36935_IG99
add r1, r5, 8 ; gcrRegs -[r1] ; byrRegs +[r1] @@ -673,7 +673,7 @@ G_M36935_IG25: ; bbWeight=1.04, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M36935_IG96
+ bne G_M36935_IG98
add r0, r12, 4 ; byrRegs +[r0] ldr r3, [r0] @@ -889,7 +889,7 @@ G_M36935_IG42: ; bbWeight=1.04, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 ;; size=4 bbWeight=1.04 PerfScore 2.08 G_M36935_IG43: ; bbWeight=1.04, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz cmp r0, 0
- beq G_M36935_IG97
+ beq G_M36935_IG99
;; size=6 bbWeight=1.04 PerfScore 2.09 G_M36935_IG44: ; bbWeight=1.04, gcVars=00000000000000100000000000000000 {V04}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[r8] @@ -899,7 +899,7 @@ G_M36935_IG44: ; bbWeight=1.04, gcVars=00000000000000100000000000000000 { adds r0, r0, r1 str r0, [r5+0x04] cmp r9, 0
- bne G_M36935_IG95
+ bne G_M36935_IG97
b SHORT G_M36935_IG04 ;; size=18 bbWeight=1.04 PerfScore 7.30 G_M36935_IG45: ; bbWeight=0.00, gcVars=00000000000004900000000000000000 {V04 V12 V183}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz @@ -1304,9 +1304,7 @@ G_M36935_IG76: ; bbWeight=0, gcVars=00000000000000900000000000200000 {V04 bls SHORT G_M36935_IG64 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_IG77: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r0, r2, 48 cmp r0, 9 @@ -1323,14 +1321,12 @@ G_M36935_IG78: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG64 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_IG79: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz cmp r2, 32 beq SHORT G_M36935_IG78 cmp r2, 44
- bne SHORT G_M36935_IG86
+ bne SHORT G_M36935_IG88
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG80: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz adds r4, r4, 1 @@ -1338,10 +1334,8 @@ G_M36935_IG80: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG64 lsls r2, r4, 1 ldrh r2, [r3+r2]
- mov r0, r2 - cmp r0, 32
+ cmp r2, 32
beq SHORT G_M36935_IG80
- mov r2, r0
cmp r2, 45 bne SHORT G_M36935_IG81 movs r2, 1 @@ -1350,9 +1344,10 @@ G_M36935_IG80: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG64 lsls r0, r4, 1 ldrh r0, [r3+r0]
+ mov r1, r0
str r2, [sp+0xA8] // [V08 loc4]
- mov r2, r0 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r2, r1 + ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG81: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r12, r2, 48 mov r1, r12 @@ -1360,56 +1355,79 @@ G_M36935_IG81: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bhs G_M36935_IG63 adds r4, r4, 1 cmp r9, r4
- bhi SHORT G_M36935_IG83 - b SHORT G_M36935_IG64 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG64 + cmp r4, 0 + blt SHORT G_M36935_IG85 + b SHORT G_M36935_IG83 + ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG82: ; 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_IG64 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG83: ; 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_IG87 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + blt SHORT G_M36935_IG82 + b SHORT G_M36935_IG87 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG84: ; 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+0xAC] // [V07 loc3] adds r4, r4, 1 cmp r9, r4 ldr r1, [sp+0xAC] // [V07 loc3] bls G_M36935_IG64 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG83: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG85: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r4, r9 bhs G_M36935_IG69
- lsls r2, r4, 1 - ldrh r2, [r3+r2] - mov r0, r2 - sub r2, r0, 48 - cmp r2, 9 - bhi SHORT G_M36935_IG85 - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r1, r2 - blt SHORT G_M36935_IG82 - b SHORT G_M36935_IG85 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG84: ; 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_IG87 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + blt SHORT G_M36935_IG84 + b SHORT G_M36935_IG87 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG86: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1 cmp r9, r4 bls G_M36935_IG64
- 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_IG85: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz - cmp r0, 32 - mov r2, r0 - beq SHORT G_M36935_IG84
+G_M36935_IG87: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + cmp r2, 32 + beq SHORT G_M36935_IG86
str r1, [sp+0xAC] // [V07 loc3]
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG86: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG88: ; 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_IG65 mov r0, r4 ...

+46 (+1.74%) : 313793.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%) : 313881.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%) : 313835.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.crossgen2.linux.arm.checked.mch

-24 (-26.67%) : 75277.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -9,10 +9,10 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 3, 3 ) ref -> r5 class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> r6 -; V02 loc2 [V02,T01] ( 2, 16 ) int -> r0
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> r6 +; 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 -> r7 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> r7 hoist "CSE - aggressive"
; ; Lcl frame size = 0 @@ -34,7 +34,7 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r7, r5, 8 ; byrRegs +[r7] ;; size=26 bbWeight=1 PerfScore 9.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0080 {r7}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=0020 {r5}, byrefRegs=0080 {r7}, byref, isz
; gcrRegs -[r0] mov r0, r6 movw r4, LOW RELOC 0xD1FFAB1E @@ -42,15 +42,12 @@ G_M39919_IG03: ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0080 {r7}, by add r4, pc ldr r3, [r4] blx r3 // Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint
- mov r3, 256 - cmp r6, r3 - bhs SHORT G_M39919_IG06
lsls r3, r6, 2 str r0, [r7+r3] adds r6, r6, 1 cmp r6, 255 bls SHORT G_M39919_IG03
- ;; size=34 bbWeight=8 PerfScore 112.00
+ ;; size=26 bbWeight=7.92 PerfScore 87.12
G_M39919_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref ; byrRegs -[r7] mov r0, r5 @@ -59,34 +56,21 @@ G_M39919_IG04: ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop {r4,r5,r6,r7,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r5] - movw r3, LOW RELOC 0xD1FFAB1E - movt r3, HIGH RELOC 0xD1FFAB1E - add r3, pc - ldr r3, [r3] - blx r3 // CORINFO_HELP_RNGCHKFAIL - bkpt - ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 90, prolog size 8, PerfScore 125.00, instruction count 33, allocated bytes for code 90 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+; Total bytes of code 66, prolog size 8, PerfScore 100.12, instruction count 24, allocated bytes for code 66 (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 : 45 (0x0002d) Actual length = 90 (0x00005a) - ---- 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 : 33 (0x00021) Actual length = 66 (0x000042) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- A8 F0 pop {r4,r5,r6,r7,r11,lr} ; opsize 32

libraries.pmi.linux.arm.checked.mch

-20 (-22.73%) : 115770.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

+8 (+0.62%) : 335256.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,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,T35] ( 7, 3 ) ref -> [sp+0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T36] ( 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,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, 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=0000000800000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000000400000000 {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,20 +566,24 @@ 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=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
- ;; size=428 bbWeight=4.01 PerfScore 596.93 -G_M53770_IG09: ; bbWeight=4.01, isz, extend
str r0, [sp+0x20] // [V34 tmp27] ; GC ptr vars +{V34} movw r0, 0xd1ff @@ -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=178 bbWeight=4.01 PerfScore 256.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] @@ -775,14 +780,14 @@ G_M53770_IG16: ; bbWeight=1, epilog, nogc, extend add sp, 108 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ...

+36 (+1.38%) : 347811.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.29) ref -> [sp+0x58] class-hnd single-def <System.String> ; V03 arg3 [V03,T29] ( 4, 4 ) struct ( 8) [sp+0xDC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T43] ( 3, 2.99) ref -> [sp+0x54] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 44.87) int -> [sp+0xB4] ld-addr-op -; V06 loc2 [V06,T12] ( 29, 12.09) ushort -> [sp+0xB0] -; V07 loc3 [V07,T31] ( 13, 5.96) int -> [sp+0xAC]
+; V05 loc1 [V05,T00] ( 67, 44.87) int -> [sp+0xB4] ld-addr-op +; V06 loc2 [V06,T12] ( 32, 12.09) ushort -> [sp+0xB0] +; V07 loc3 [V07,T31] ( 16, 5.96) int -> [sp+0xAC]
; V08 loc4 [V08,T39] ( 5, 3.98) ubyte -> [sp+0xA8] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T21] ( 7, 7.95) int -> r8 @@ -223,8 +223,8 @@ ; V211 cse2 [V211,T27] ( 3, 6.13) int -> r1 "CSE - moderate" ; V212 cse3 [V212,T33] ( 3, 5.95) int -> r12 "CSE - moderate" ; V213 cse4 [V213,T32] ( 5, 5.95) int -> r1 multi-def "CSE - moderate"
-; V214 cse5 [V214,T03] ( 19, 18.38) int -> [sp+0x60] spill-single-def "CSE - aggressive" -; V215 cse6 [V215,T07] ( 15, 14.54) byref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V214 cse5 [V214,T03] ( 20, 18.38) int -> [sp+0x60] spill-single-def "CSE - aggressive" +; V215 cse6 [V215,T07] ( 16, 14.54) byref -> [sp+0x10] spill-single-def "CSE - moderate"
; V216 cse7 [V216,T08] ( 14, 13.89) int -> [sp+0x5C] "CSE - moderate" ; V217 rat0 [V217,T05] ( 6, 15.90) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V218 rat1 [V218,T06] ( 6, 15.89) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -531,7 +531,7 @@ G_M36935_IG22: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r ldr lr, [sp+0x54] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG115
+ bne G_M36935_IG117
;; size=54 bbWeight=1.99 PerfScore 35.77 G_M36935_IG23: ; bbWeight=1.99, gcVars=00000000000000000018180000004000 {V04 V12 V13 V131 V207}, gcrefRegs=00CA {r1 r3 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[lr] +[r3] @@ -559,7 +559,7 @@ G_M36935_IG25: ; bbWeight=0.99, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 movw r8, 0xd1ff movt r8, 0xd1ff cmp r3, r8
- bne G_M36935_IG118
+ bne G_M36935_IG120
movs r3, 0 mov r8, r3 ; gcrRegs +[r8] @@ -1560,9 +1560,7 @@ G_M36935_IG99: ; bbWeight=0, gcVars=00000000000000000010180000000080 {V04 bls G_M36935_IG85 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_IG100: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz sub r0, r1, 48 cmp r0, 9 @@ -1579,14 +1577,12 @@ G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG85 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_IG102: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz cmp r1, 32 beq SHORT G_M36935_IG101 cmp r1, 44
- bne SHORT G_M36935_IG110
+ bne SHORT G_M36935_IG112
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz adds r3, r3, 1 @@ -1594,10 +1590,8 @@ G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG85 lsls r1, r3, 1 ldrh r1, [r2+r1]
- mov r0, r1 - cmp r0, 32
+ cmp r1, 32
beq SHORT G_M36935_IG103
- mov r1, r0
cmp r1, 45 bne SHORT G_M36935_IG104 mov r12, 1 @@ -1607,9 +1601,7 @@ G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG85 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_IG104: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz sub r0, r1, 48 mov r12, r0 @@ -1617,9 +1609,11 @@ G_M36935_IG104: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bhs SHORT G_M36935_IG105 adds r3, r3, 1 cmp r4, r3
- bhi SHORT G_M36935_IG107 - b SHORT G_M36935_IG85 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG85 + cmp r3, 0 + blt SHORT G_M36935_IG109 + b SHORT G_M36935_IG107 + ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG105: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r6-r7] ; byrRegs -[r2 r5] @@ -1631,52 +1625,73 @@ G_M36935_IG106: ; bbWeight=0, gcVars=00000000000000000010180000000080 {V0 ; gcrRegs +[r6-r7] ; byrRegs +[r2 r5] ; GC ptr vars +{V04 V07 V52 V131 V207 V215}
- 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_IG85 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG107: ; 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_IG111 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r12, r0 + blt SHORT G_M36935_IG106 + b SHORT G_M36935_IG111 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG108: ; 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+0xAC] // [V07 loc3] adds r3, r3, 1 cmp r4, r3 ldr r12, [sp+0xAC] // [V07 loc3] bls G_M36935_IG85 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG107: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG109: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r3, r4 bhs G_M36935_IG91
- lsls r1, r3, 1 - ldrh r1, [r2+r1] - mov r0, r1 - sub r1, r0, 48 - cmp r1, 9 - bhi SHORT G_M36935_IG109 - movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r12, r1 - blt SHORT G_M36935_IG106 - b SHORT G_M36935_IG109 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG108: ; 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_IG111 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r12, r0 + blt SHORT G_M36935_IG108 + b SHORT G_M36935_IG111 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG110: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r3, r3, 1 cmp r4, r3 bls G_M36935_IG85
- 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_IG109: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz - cmp r0, 32 - mov r1, r0 - beq SHORT G_M36935_IG108
+G_M36935_IG111: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz + cmp r1, 32 + beq SHORT G_M36935_IG110
str r12, [sp+0xAC] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M36935_IG110: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M36935_IG112: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r1, 125 beq G_M36935_IG20 cmp r1, 58 bne G_M36935_IG86 mov r0, r3 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG111: ; bbWeight=0, gcVars=00000000000000000000180000000080 {V04 V207 V215}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
+G_M36935_IG113: ; bbWeight=0, gcVars=00000000000000000000180000000080 {V04 V207 V215}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
; GC ptr vars -{V07 V52 V131} adds r3, r3, 1 cmp r4, r3 @@ -1684,12 +1699,12 @@ G_M36935_IG111: ; bbWeight=0, gcVars=00000000000000000000180000000080 {V0 lsls r1, r3, 1 ldrh r1, [r2+r1] cmp r1, 125
- beq SHORT G_M36935_IG112
+ beq SHORT G_M36935_IG114
cmp r1, 123
- bne SHORT G_M36935_IG111
+ bne SHORT G_M36935_IG113
b SHORT G_M36935_IG86 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG112: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r0, r0, 1 str r3, [sp+0xB4] // [V05 loc1] subs r1, r3, r0 @@ -1707,16 +1722,16 @@ G_M36935_IG112: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 str r0, [sp+0x34] // [V83 tmp62] ; GC ptr vars +{V83} cmp r1, 0
- bge SHORT G_M36935_IG113
+ bge SHORT G_M36935_IG115
movs r0, 0 ; byrRegs -[r0]
- b SHORT G_M36935_IG114
+ b SHORT G_M36935_IG116
;; size=40 bbWeight=0 PerfScore 0.00
-G_M36935_IG113: ; bbWeight=0, gcVars=00000000004000000000180000000080 {V04 V83 V207 V215}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
+G_M36935_IG115: ; bbWeight=0, gcVars=00000000004000000000180000000080 {V04 V83 V207 V215}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
; byrRegs -[r2] movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
+G_M36935_IG116: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
movw r1, 0xd1ff movt r1, 0xd1ff ldr r1, [r1] @@ -1738,7 +1753,7 @@ G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5} ; byrRegs -[r3] b SHORT G_M36935_IG20 ;; size=32 bbWeight=0 PerfScore 0.00 ...

+36 (+1.38%) : 309910.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.25) ref -> [sp+0x58] class-hnd single-def <System.String> ; V03 arg3 [V03,T27] ( 4, 4 ) struct ( 8) [sp+0xDC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T43] ( 3, 2.95) ref -> [sp+0x54] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 43.61) int -> [sp+0xB4] ld-addr-op -; V06 loc2 [V06,T10] ( 29, 11.68) ushort -> [sp+0xB0] -; V07 loc3 [V07,T31] ( 13, 5.84) int -> [sp+0xAC]
+; V05 loc1 [V05,T00] ( 67, 43.61) int -> [sp+0xB4] ld-addr-op +; V06 loc2 [V06,T10] ( 32, 11.68) ushort -> [sp+0xB0] +; V07 loc3 [V07,T31] ( 16, 5.84) int -> [sp+0xAC]
; V08 loc4 [V08,T39] ( 5, 3.90) ubyte -> [sp+0xA8] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T21] ( 7, 7.79) int -> r8 @@ -223,8 +223,8 @@ ; V211 cse2 [V211,T30] ( 3, 5.84) int -> r1 "CSE - moderate" ; V212 cse3 [V212,T33] ( 3, 5.82) int -> r12 "CSE - moderate" ; V213 cse4 [V213,T32] ( 5, 5.83) int -> r1 multi-def "CSE - moderate"
-; V214 cse5 [V214,T03] ( 19, 17.93) int -> [sp+0x60] spill-single-def "CSE - aggressive" -; V215 cse6 [V215,T07] ( 15, 14.34) byref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V214 cse5 [V214,T03] ( 20, 17.93) int -> [sp+0x60] spill-single-def "CSE - aggressive" +; V215 cse6 [V215,T07] ( 16, 14.34) byref -> [sp+0x10] spill-single-def "CSE - moderate"
; V216 cse7 [V216,T09] ( 14, 13.60) int -> [sp+0x5C] "CSE - moderate" ; V217 rat0 [V217,T04] ( 6, 15.58) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V218 rat1 [V218,T06] ( 6, 15.55) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -528,7 +528,7 @@ G_M36935_IG21: ; bbWeight=1.95, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r ldr lr, [sp+0x54] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG114
+ bne G_M36935_IG116
;; size=54 bbWeight=1.95 PerfScore 35.05 G_M36935_IG22: ; bbWeight=1.95, gcVars=000000000000000000C0180000004000 {V04 V12 V13 V131 V207}, gcrefRegs=00CA {r1 r3 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[lr] +[r3] @@ -556,7 +556,7 @@ G_M36935_IG24: ; bbWeight=0.97, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 movw r8, 0xd1ff movt r8, 0xd1ff cmp r3, r8
- bne G_M36935_IG117
+ bne G_M36935_IG119
movs r3, 0 mov r8, r3 ; gcrRegs +[r8] @@ -1554,9 +1554,7 @@ G_M36935_IG98: ; bbWeight=0, gcVars=00000000000000000080180000000080 {V04 bls G_M36935_IG82 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_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz sub r0, r1, 48 cmp r0, 9 @@ -1573,14 +1571,12 @@ G_M36935_IG100: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG82 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_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz cmp r1, 32 beq SHORT G_M36935_IG100 cmp r1, 44
- bne SHORT G_M36935_IG109
+ bne SHORT G_M36935_IG111
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG102: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz adds r3, r3, 1 @@ -1588,10 +1584,8 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG82 lsls r1, r3, 1 ldrh r1, [r2+r1]
- mov r0, r1 - cmp r0, 32
+ cmp r1, 32
beq SHORT G_M36935_IG102
- mov r1, r0
cmp r1, 45 bne SHORT G_M36935_IG103 mov r12, 1 @@ -1601,9 +1595,7 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG82 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_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz sub r0, r1, 48 mov r12, r0 @@ -1611,9 +1603,11 @@ G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bhs SHORT G_M36935_IG104 adds r3, r3, 1 cmp r4, r3
- bhi SHORT G_M36935_IG106 - b SHORT G_M36935_IG82 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG82 + cmp r3, 0 + blt SHORT G_M36935_IG108 + b SHORT G_M36935_IG106 + ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG104: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r6-r7] ; byrRegs -[r2 r5] @@ -1625,52 +1619,73 @@ G_M36935_IG105: ; bbWeight=0, gcVars=00000000000000000080180000000080 {V0 ; gcrRegs +[r6-r7] ; byrRegs +[r2 r5] ; GC ptr vars +{V04 V07 V55 V131 V207 V215}
- 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_IG82 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG106: ; 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_IG110 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r12, r0 + blt SHORT G_M36935_IG105 + b SHORT G_M36935_IG110 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG107: ; 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+0xAC] // [V07 loc3] adds r3, r3, 1 cmp r4, r3 ldr r12, [sp+0xAC] // [V07 loc3] bls G_M36935_IG82 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG106: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG108: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r3, r4 bhs G_M36935_IG88
- lsls r1, r3, 1 - ldrh r1, [r2+r1] - mov r0, r1 - sub r1, r0, 48 - cmp r1, 9 - bhi SHORT G_M36935_IG108 - movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r12, r1 - blt SHORT G_M36935_IG105 - b SHORT G_M36935_IG108 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG107: ; 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_IG110 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r12, r0 + blt SHORT G_M36935_IG107 + b SHORT G_M36935_IG110 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG109: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r3, r3, 1 cmp r4, r3 bls G_M36935_IG82
- 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_IG108: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz - cmp r0, 32 - mov r1, r0 - beq SHORT G_M36935_IG107
+G_M36935_IG110: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz + cmp r1, 32 + beq SHORT G_M36935_IG109
str r12, [sp+0xAC] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M36935_IG109: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M36935_IG111: ; 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_IG83 mov r0, r3 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000000000180000000080 {V04 V207 V215}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
+G_M36935_IG112: ; bbWeight=0, gcVars=00000000000000000000180000000080 {V04 V207 V215}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
; GC ptr vars -{V07 V55 V131} adds r3, r3, 1 cmp r4, r3 @@ -1678,12 +1693,12 @@ G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000000000180000000080 {V0 lsls r1, r3, 1 ldrh r1, [r2+r1] cmp r1, 125
- beq SHORT G_M36935_IG111
+ beq SHORT G_M36935_IG113
cmp r1, 123
- bne SHORT G_M36935_IG110
+ bne SHORT G_M36935_IG112
b SHORT G_M36935_IG83 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG111: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG113: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r0, r0, 1 str r3, [sp+0xB4] // [V05 loc1] subs r1, r3, r0 @@ -1701,16 +1716,16 @@ G_M36935_IG111: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 str r0, [sp+0x34] // [V83 tmp62] ; GC ptr vars +{V83} cmp r1, 0
- bge SHORT G_M36935_IG112
+ bge SHORT G_M36935_IG114
movs r0, 0 ; byrRegs -[r0]
- b SHORT G_M36935_IG113
+ b SHORT G_M36935_IG115
;; size=40 bbWeight=0 PerfScore 0.00
-G_M36935_IG112: ; bbWeight=0, gcVars=00000000001000000000180000000080 {V04 V83 V207 V215}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
+G_M36935_IG114: ; bbWeight=0, gcVars=00000000001000000000180000000080 {V04 V83 V207 V215}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
; byrRegs -[r2] movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M36935_IG113: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
+G_M36935_IG115: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz
movw r1, 0xd1ff movt r1, 0xd1ff ldr r1, [r1] @@ -1732,7 +1747,7 @@ G_M36935_IG113: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5} ; byrRegs -[r3] b SHORT G_M36935_IG19 ;; size=32 bbWeight=0 PerfScore 0.00 ...

+44 (+1.93%) : 486715.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T18] ( 5, 8.92) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T32] ( 4, 4 ) struct ( 8) [sp+0xBC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T45] ( 3, 3.23) ref -> [sp+0x50] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 49.77) int -> [sp+0x94] ld-addr-op -; V06 loc2 [V06,T11] ( 29, 13.38) ushort -> [sp+0x90] -; V07 loc3 [V07,T30] ( 12, 6.46) int -> [sp+0x8C]
+; V05 loc1 [V05,T02] ( 67, 49.77) int -> [sp+0x94] ld-addr-op +; V06 loc2 [V06,T11] ( 32, 13.38) ushort -> [sp+0x90] +; V07 loc3 [V07,T30] ( 15, 6.46) int -> [sp+0x8C]
; V08 loc4 [V08,T40] ( 5, 4.69) ubyte -> [sp+0x88] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T22] ( 7, 8.92) int -> r8 @@ -192,8 +192,8 @@ ; V180 cse2 [V180,T34] ( 3, 5.99) int -> r2 "CSE - moderate" ; V181 cse3 [V181,T33] ( 5, 6.00) int -> r0 multi-def "CSE - moderate" ; V182 cse4 [V182,T61] ( 3, 1.38) int -> r3 "CSE - conservative"
-; V183 cse5 [V183,T04] ( 19, 20.31) int -> [sp+0x58] spill-single-def "CSE - aggressive" -; V184 cse6 [V184,T07] ( 15, 16.54) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V183 cse5 [V183,T04] ( 20, 20.31) int -> [sp+0x58] spill-single-def "CSE - aggressive" +; V184 cse6 [V184,T07] ( 16, 16.54) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
; V185 cse7 [V185,T10] ( 12, 13.99) int -> [sp+0x54] spill-single-def "CSE - moderate" ; V186 cse8 [V186,T00] ( 26,167.49) ref -> registers multi-def "CSE - aggressive" ; V187 rat0 [V187,T05] ( 6, 17.85) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> @@ -513,7 +513,7 @@ G_M36935_IG22: ; bbWeight=2.23, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r ldr lr, [sp+0x50] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG99
+ bne G_M36935_IG101
;; size=44 bbWeight=2.23 PerfScore 31.23 G_M36935_IG23: ; bbWeight=2.23, gcVars=000000000018600000004000 {V04 V12 V13 V122 V176}, gcrefRegs=04C4 {r2 r6 r7 r10}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[lr] +[r10] @@ -798,7 +798,7 @@ G_M36935_IG46: ; bbWeight=0.23, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r adds r0, r0, r1 str r0, [r5+0x04] cmp r10, 0
- bne G_M36935_IG101
+ bne G_M36935_IG103
ldr r4, [sp+0x94] // [V05 loc1] b SHORT G_M36935_IG04 ;; size=28 bbWeight=0.23 PerfScore 2.54 @@ -844,7 +844,7 @@ G_M36935_IG49: ; bbWeight=0.46, gcVars=000000000000000000000000 {}, gcref ldr r4, [sp+0x60] // [V131 tmp110] subs r1, r1, r4 cmp r0, r1
- bgt G_M36935_IG102
+ bgt G_M36935_IG104
;; size=14 bbWeight=0.46 PerfScore 2.77 G_M36935_IG50: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0420 {r5 r10}, byref, isz add r0, r5, 8 @@ -939,8 +939,8 @@ G_M36935_IG53: ; bbWeight=0, gcrefRegs=00C4 {r2 r6 r7}, byrefRegs=0020 {r G_M36935_IG54: ; bbWeight=0, gcVars=000000000018620000000000 {V04 V12 V20 V122 V176}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[r0-r2] ; GC ptr vars -{V13} +{V20}
- ldr r1, [sp+0x64] // [V123 tmp102] - cmp r1, 0
+ ldr r2, [sp+0x64] // [V123 tmp102] + cmp r2, 0
beq SHORT G_M36935_IG56 ldr r3, [sp+0x4C] // [V12 loc8] ; gcrRegs +[r3] @@ -948,6 +948,7 @@ G_M36935_IG54: ; bbWeight=0, gcVars=000000000018620000000000 {V04 V12 V20 bne SHORT G_M36935_IG55 ldr r0, [sp+0x24] // [V122 tmp101] ; byrRegs +[r0]
+ mov r1, r2
movw r3, 0xd1ff ; gcrRegs -[r3] movt r3, 0xd1ff @@ -958,7 +959,7 @@ G_M36935_IG54: ; bbWeight=0, gcVars=000000000018620000000000 {V04 V12 V20 ; gcr arg pop 0 mov r3, r0 ; gcrRegs +[r3]
- ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG55: ; bbWeight=0, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 {r5}, byref, isz ; gcrRegs -[r0] ldr r0, [sp+0x40] // [V20 loc16] @@ -1035,8 +1036,8 @@ G_M36935_IG60: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 { b SHORT G_M36935_IG36 ;; size=20 bbWeight=0 PerfScore 0.00 G_M36935_IG61: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz
- ldr r0, [sp+0x88] // [V08 loc4] - cmp r0, 0
+ ldr r3, [sp+0x88] // [V08 loc4] + cmp r3, 0
beq SHORT G_M36935_IG66 ldr r0, [r5+0x04] cmp r1, 1 @@ -1326,9 +1327,7 @@ G_M36935_IG84: ; bbWeight=0, gcVars=000000000008600000000080 {V04 V122 V1 bls SHORT G_M36935_IG70 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 @@ -1345,14 +1344,12 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG70 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 @@ -1360,10 +1357,8 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG70 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 @@ -1372,9 +1367,10 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG70 lsls r0, r4, 1 ldrh r0, [r3+r0]
+ mov r1, r0
str r2, [sp+0x88] // [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 @@ -1382,56 +1378,79 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bhs G_M36935_IG69 adds r4, r4, 1 cmp r10, r4
- bhi SHORT G_M36935_IG91 - b SHORT G_M36935_IG70 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG70 + 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 r10, r4 + mov r1, r2 + bls G_M36935_IG70 + ;; 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+0x8C] // [V07 loc3] adds r4, r4, 1 cmp r10, r4 ldr r1, [sp+0x8C] // [V07 loc3] bls G_M36935_IG70 ;; 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, r10 bhs G_M36935_IG76
- 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 r10, r4 bls G_M36935_IG70
- 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+0x8C] // [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_IG20 cmp r2, 58 bne G_M36935_IG71 mov r0, r4 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcVars=000000000000600000000080 {V04 V176 V184}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
+G_M36935_IG97: ; bbWeight=0, gcVars=000000000000600000000080 {V04 V176 V184}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
...

+48 (+2.09%) : 656859.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.87) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T28] ( 4, 4 ) struct ( 8) [sp+0xC4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T46] ( 3, 2.70) ref -> r10 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 38.53) int -> [sp+0x9C] ld-addr-op -; V06 loc2 [V06,T10] ( 29, 10.16) ushort -> [sp+0x98] -; V07 loc3 [V07,T31] ( 12, 5.05) int -> [sp+0x94]
+; V05 loc1 [V05,T00] ( 67, 38.53) int -> [sp+0x9C] ld-addr-op +; V06 loc2 [V06,T10] ( 32, 10.16) ushort -> [sp+0x98] +; V07 loc3 [V07,T31] ( 15, 5.05) int -> [sp+0x94]
; V08 loc4 [V08,T39] ( 5, 3.38) 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, 6.77) int -> [sp+0x8C] @@ -177,8 +177,8 @@ ; V165 cse2 [V165,T33] ( 3, 5.03) int -> lr "CSE - moderate" ; V166 cse3 [V166,T32] ( 5, 5.04) int -> registers multi-def "CSE - moderate" ; V167 cse4 [V167,T57] ( 3, 1.45) int -> r2 "CSE - conservative"
-; V168 cse5 [V168,T03] ( 19, 16.03) int -> [sp+0x58] spill-single-def "CSE - aggressive" -; V169 cse6 [V169,T08] ( 15, 12.82) byref -> [sp+0x18] spill-single-def "CSE - moderate"
+; V168 cse5 [V168,T03] ( 20, 16.03) int -> [sp+0x58] spill-single-def "CSE - aggressive" +; V169 cse6 [V169,T08] ( 16, 12.82) byref -> [sp+0x18] spill-single-def "CSE - moderate"
; V170 cse7 [V170,T09] ( 12, 11.75) int -> [sp+0x54] spill-single-def "CSE - moderate" ; V171 rat0 [V171,T05] ( 6, 13.46) ref -> r2 class-hnd "replacement local" <System.ISpanFormattable> ; V172 rat1 [V172,T06] ( 6, 13.45) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -479,7 +479,7 @@ G_M36935_IG21: ; bbWeight=1.69, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=002 str lr, [sp+0x4C] // [V13 loc9] ; GC ptr vars +{V13} cmp r10, 0
- bne G_M36935_IG103
+ bne G_M36935_IG105
;; size=54 bbWeight=1.69 PerfScore 32.16 G_M36935_IG22: ; bbWeight=1.69, gcVars=000000000080800000002000 {V13 V106 V160}, gcrefRegs=45C8 {r3 r6 r7 r8 r10 lr}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs +[r8] @@ -512,7 +512,7 @@ G_M36935_IG26: ; bbWeight=0.84, gcrefRegs=04CC {r2 r3 r6 r7 r10}, byrefRe movw r0, 0xd1ff movt r0, 0xd1ff cmp r2, r0
- bne G_M36935_IG106
+ bne G_M36935_IG108
movs r2, 0 ;; size=18 bbWeight=0.84 PerfScore 5.05 G_M36935_IG27: ; bbWeight=1.68, gcrefRegs=04CC {r2 r3 r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz @@ -976,8 +976,8 @@ G_M36935_IG60: ; bbWeight=0, gcVars=000000000080820000000000 {V20 V106 V1 G_M36935_IG61: ; bbWeight=0, gcVars=000000000000800000000000 {V160}, gcrefRegs=05C0 {r6 r7 r8 r10}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[r0 r3] +[r8] ; GC ptr vars -{V20}
- ldr r0, [sp+0x90] // [V08 loc4] - cmp r0, 0
+ ldr r2, [sp+0x90] // [V08 loc4] + cmp r2, 0
beq SHORT G_M36935_IG66 ldr r2, [r5+0x04] mov r0, r2 @@ -1339,8 +1339,9 @@ G_M36935_IG88: ; bbWeight=0, gcVars=000000000080800000000100 {V106 V160 V 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_IG89: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz sub r0, r3, 48 cmp r0, 9 @@ -1359,14 +1360,12 @@ G_M36935_IG90: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 { 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_IG91: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz cmp r3, 32 beq SHORT G_M36935_IG90 cmp r3, 44
- bne SHORT G_M36935_IG98
+ bne SHORT G_M36935_IG100
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG92: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz adds r4, r4, 1 @@ -1374,10 +1373,8 @@ G_M36935_IG92: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 { 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_IG92
- mov r3, r0
cmp r3, 45 bne SHORT G_M36935_IG93 movs r3, 1 @@ -1386,9 +1383,10 @@ G_M36935_IG92: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 { bls G_M36935_IG70 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_IG93: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz sub r12, r3, 48 mov lr, r12 @@ -1396,56 +1394,79 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 { bhs G_M36935_IG69 adds r4, r4, 1 cmp r8, r4
- bhi SHORT G_M36935_IG95 - b SHORT G_M36935_IG70 - ;; size=22 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG70 + cmp r4, 0 + blt SHORT G_M36935_IG97 + b SHORT G_M36935_IG95 + ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG94: ; 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_IG70 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG95: ; 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_IG99 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp lr, r0 + blt SHORT G_M36935_IG94 + b SHORT G_M36935_IG99 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; 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_IG70 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+G_M36935_IG97: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
cmp r4, r8 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_IG97 - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp lr, r3 - blt SHORT G_M36935_IG94 - b SHORT G_M36935_IG97 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG96: ; 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_IG99 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp lr, r0 + blt SHORT G_M36935_IG96 + b SHORT G_M36935_IG99 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG98: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
adds r4, r4, 1 cmp r8, 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_IG97: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz - cmp r0, 32 - mov r3, r0 - beq SHORT G_M36935_IG96
+G_M36935_IG99: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz + cmp r3, 32 + beq SHORT G_M36935_IG98
str lr, [sp+0x94] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M36935_IG98: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M36935_IG100: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, 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_IG99: ; bbWeight=0, gcVars=000000000000800000000100 {V160 V169}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
+G_M36935_IG101: ; bbWeight=0, gcVars=000000000000800000000100 {V160 V169}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
; GC ptr vars -{V08 V55 V106} adds r4, r4, 1 cmp r8, r4 @@ -1453,12 +1474,12 @@ G_M36935_IG99: ; bbWeight=0, gcVars=000000000000800000000100 {V160 V169}, lsls r3, r4, 1 ldrh r3, [r1+r3] cmp r3, 125
- beq SHORT G_M36935_IG100
+ beq SHORT G_M36935_IG102
cmp r3, 123
- bne SHORT G_M36935_IG99
+ bne SHORT G_M36935_IG101
b SHORT G_M36935_IG71 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+G_M36935_IG102: ; 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 @@ -1474,15 +1495,15 @@ G_M36935_IG100: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 str r12, [sp+0x38] // [V83 tmp62] ; GC ptr vars +{V83} cmp r3, 0
- bge SHORT G_M36935_IG101
+ bge SHORT G_M36935_IG103
movs r0, 0
- b SHORT G_M36935_IG102
+ b SHORT G_M36935_IG104
;; size=42 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcVars=000008000000800000000100 {V83 V160 V169}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, gcvars, byref
+G_M36935_IG103: ; bbWeight=0, gcVars=000008000000800000000100 {V83 V160 V169}, 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_IG102: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz
+G_M36935_IG104: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz
...

+48 (+2.12%) : 73002.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.09) ref -> r6 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,T44] ( 3, 2.86) ref -> [sp+0x48] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 41.80) int -> [sp+0x94] ld-addr-op -; V06 loc2 [V06,T10] ( 29, 11.16) ushort -> [sp+0x90] -; V07 loc3 [V07,T31] ( 13, 5.55) int -> [sp+0x8C]
+; V05 loc1 [V05,T00] ( 67, 41.80) int -> [sp+0x94] ld-addr-op +; V06 loc2 [V06,T10] ( 32, 11.16) ushort -> [sp+0x90] +; V07 loc3 [V07,T31] ( 16, 5.55) int -> [sp+0x8C]
; V08 loc4 [V08,T39] ( 5, 3.75) ubyte -> [sp+0x88] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T21] ( 7, 7.44) int -> [sp+0x84] @@ -177,8 +177,8 @@ ; V165 cse2 [V165,T30] ( 3, 5.58) int -> r2 "CSE - moderate" ; V166 cse3 [V166,T33] ( 3, 5.49) int -> r1 "CSE - moderate" ; V167 cse4 [V167,T32] ( 5, 5.50) int -> registers multi-def "CSE - moderate"
-; V168 cse5 [V168,T03] ( 19, 17.25) int -> [sp+0x50] spill-single-def "CSE - aggressive" -; V169 cse6 [V169,T07] ( 15, 13.76) byref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V168 cse5 [V168,T03] ( 20, 17.25) int -> [sp+0x50] spill-single-def "CSE - aggressive" +; V169 cse6 [V169,T07] ( 16, 13.76) byref -> [sp+0x10] spill-single-def "CSE - moderate"
; V170 cse7 [V170,T09] ( 14, 12.89) int -> [sp+0x4C] "CSE - moderate" ; V171 rat0 [V171,T04] ( 6, 14.88) ref -> r2 class-hnd "replacement local" <System.ISpanFormattable> ; V172 rat1 [V172,T06] ( 6, 14.67) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -472,7 +472,7 @@ G_M36935_IG21: ; bbWeight=1.86, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r ldr r12, [sp+0x48] // [V04 loc0] ; gcrRegs +[r12] cmp r12, 0
- bne G_M36935_IG102
+ bne G_M36935_IG104
;; size=54 bbWeight=1.86 PerfScore 33.48 G_M36935_IG22: ; bbWeight=1.86, gcVars=000000000018100000002000 {V04 V12 V13 V106}, gcrefRegs=44C0 {r6 r7 r10 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz ; gcrRegs -[r12] +[r10] @@ -1021,8 +1021,8 @@ G_M36935_IG62: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r bge G_M36935_IG34 ;; size=30 bbWeight=0 PerfScore 0.00 G_M36935_IG63: ; 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_IG68 ldr r2, [r5+0x04] mov r1, r2 @@ -1343,8 +1343,9 @@ G_M36935_IG87: ; bbWeight=0, gcVars=000000000008100000000080 {V04 V106 V1 bls G_M36935_IG72 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_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz sub r0, r3, 48 cmp r0, 9 @@ -1363,14 +1364,12 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r bls G_M36935_IG72 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_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz cmp r3, 32 beq SHORT G_M36935_IG89 cmp r3, 44
- bne SHORT G_M36935_IG97
+ bne SHORT G_M36935_IG99
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz adds r4, r4, 1 @@ -1378,10 +1377,8 @@ G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r bls G_M36935_IG72 lsls r3, r4, 1 ldrh r3, [r1+r3]
- mov r0, r3 - cmp r0, 32
+ cmp r3, 32
beq SHORT G_M36935_IG91
- mov r3, r0
cmp r3, 45 bne SHORT G_M36935_IG92 movs r3, 1 @@ -1390,9 +1387,10 @@ G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r bls G_M36935_IG72 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_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz sub r0, r3, 48 mov lr, r0 @@ -1400,56 +1398,79 @@ G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r bhs G_M36935_IG71 adds r4, r4, 1 cmp r10, r4
- bhi SHORT G_M36935_IG94 - b SHORT G_M36935_IG72 - ;; size=22 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG72 + cmp r4, 0 + blt SHORT G_M36935_IG96 + b SHORT G_M36935_IG94 + ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG93: ; 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_IG72 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG94: ; 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_IG98 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp lr, r0 + blt SHORT G_M36935_IG93 + b SHORT G_M36935_IG98 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG95: ; 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_IG72 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
cmp r4, r10 bhs G_M36935_IG78
- lsls r3, r4, 1 - ldrh r3, [r1+r3] - mov r0, r3 - sub r3, r0, 48 - cmp r3, 9 - bhi SHORT G_M36935_IG96 - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp lr, r3 - blt SHORT G_M36935_IG93 - b SHORT G_M36935_IG96 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG95: ; 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_IG98 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp lr, r0 + blt SHORT G_M36935_IG95 + b SHORT G_M36935_IG98 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
adds r4, r4, 1 cmp r10, r4 bls G_M36935_IG72
- 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_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz - cmp r0, 32 - mov r3, r0 - beq SHORT G_M36935_IG95
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz + cmp r3, 32 + beq SHORT G_M36935_IG97
str lr, [sp+0x8C] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M36935_IG99: ; 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_IG73 mov r0, r4 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcVars=000000000000100000000080 {V04 V169}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, gcvars, byref, isz
+G_M36935_IG100: ; bbWeight=0, gcVars=000000000000100000000080 {V04 V169}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, gcvars, byref, isz
; GC ptr vars -{V07 V106} adds r4, r4, 1 cmp r10, r4 @@ -1457,12 +1478,12 @@ G_M36935_IG98: ; bbWeight=0, gcVars=000000000000100000000080 {V04 V169}, lsls r3, r4, 1 ldrh r3, [r1+r3] cmp r3, 125
- beq SHORT G_M36935_IG99
+ beq SHORT G_M36935_IG101
cmp r3, 123
- bne SHORT G_M36935_IG98
+ bne SHORT G_M36935_IG100
b SHORT G_M36935_IG73 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+G_M36935_IG101: ; 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 @@ -1478,15 +1499,15 @@ G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r str r12, [sp+0x2C] // [V83 tmp62] ; GC ptr vars +{V83} cmp r3, 0
- bge SHORT G_M36935_IG100
+ bge SHORT G_M36935_IG102
movs r0, 0
- b SHORT G_M36935_IG101
+ b SHORT G_M36935_IG103
;; size=42 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcVars=000008000000100000000080 {V04 V83 V169}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, gcvars, byref
+G_M36935_IG102: ; bbWeight=0, gcVars=000008000000100000000080 {V04 V83 V169}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, gcvars, byref
; byrRegs -[r1 r12] movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
+G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -1503,7 +1524,7 @@ G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 ldr r4, [sp+0x94] // [V05 loc1] b SHORT G_M36935_IG19 ;; size=26 bbWeight=0 PerfScore 0.00
-G_M36935_IG102: ; bbWeight=0, gcVars=000000000018100000002000 {V04 V12 V13 V106}, gcrefRegs=40C0 {r6 r7 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz
+G_M36935_IG104: ; bbWeight=0, gcVars=000000000018100000002000 {V04 V12 V13 V106}, gcrefRegs=40C0 {r6 r7 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz
...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

+8 (+0.64%) : 131167.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 141 0 139 2 -0 +10,062
libraries.crossgen2.linux.arm.checked.mch 2 1 1 0 -24 +124
libraries.pmi.linux.arm.checked.mch 2 1 1 0 -20 +224
libraries_tests.run.linux.arm.Release.mch 309 0 309 0 -0 +22,350
librariestestsnotieredcompilation.run.linux.arm.Release.mch 1 0 1 0 -0 +8
realworld.run.linux.arm.checked.mch 2 0 2 0 -0 +140
463 2 459 2 -44 +33,270

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 45,964 5,344 40,620 1,203 (2.55%) 1,203 (2.55%)
benchmarks.run_pgo.linux.arm.checked.mch 159,513 56,729 102,784 3,201 (1.97%) 3,201 (1.97%)
benchmarks.run_tiered.linux.arm.checked.mch 80,099 43,607 36,492 1,086 (1.34%) 1,086 (1.34%)
coreclr_tests.run.linux.arm.checked.mch 471,992 259,195 212,797 7,170 (1.50%) 7,171 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 188,191 14 188,177 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,360 6 272,354 7,786 (2.78%) 7,786 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,231 442,672 267,559 16,195 (2.23%) 16,195 (2.23%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,633 21,604 253,029 33,224 (10.79%) 33,224 (10.79%)
realworld.run.linux.arm.checked.mch 36,407 157 36,250 1,408 (3.72%) 1,408 (3.72%)
2,239,390 829,328 1,410,062 71,273 (3.08%) 71,274 (3.08%)

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

Detail diffs



Top file regressions (bytes):
          70 : 7968.dasm (3.40 % of base)
          70 : 2105.dasm (3.09 % of base)

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

Top method regressions (bytes):
          70 (3.40 % of base) : 7968.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
          70 (3.09 % of base) : 2105.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

Top method regressions (percentages):
          70 (3.40 % of base) : 7968.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
          70 (3.09 % of base) : 2105.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

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


benchmarks.run_pgo.linux.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: 63958726 (overridden on cmd)
Total bytes of diff: 63958844 (overridden on cmd)
Total bytes of delta: 118 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          60 : 16252.dasm (2.33 % of base)
          58 : 28040.dasm (2.53 % of base)

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

Top method regressions (bytes):
          60 (2.33 % of base) : 16252.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
          58 (2.53 % of base) : 28040.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)

Top method regressions (percentages):
          58 (2.53 % of base) : 28040.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)
          60 (2.33 % of base) : 16252.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)

2 total methods with Code Size differences (0 improved, 2 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: 21548242 (overridden on cmd)
Total bytes of diff: 21548346 (overridden on cmd)
Total bytes of delta: 104 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          52 : 8803.dasm (2.19 % of base)
          52 : 21483.dasm (2.39 % of base)

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

Top method regressions (bytes):
          52 (2.39 % of base) : 21483.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)
          52 (2.19 % of base) : 8803.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)

Top method regressions (percentages):
          52 (2.39 % of base) : 21483.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)
          52 (2.19 % of base) : 8803.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)

2 total methods with Code Size differences (0 improved, 2 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: 321753238 (overridden on cmd)
Total bytes of diff: 321763300 (overridden on cmd)
Total bytes of delta: 10062 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          96 : 156771.dasm (2.86 % of base)
          96 : 164004.dasm (2.85 % of base)
          96 : 173742.dasm (2.86 % of base)
          96 : 210016.dasm (2.85 % of base)
          96 : 241801.dasm (2.85 % of base)
          96 : 249676.dasm (2.85 % of base)
          96 : 312281.dasm (2.86 % of base)
          96 : 315206.dasm (2.85 % of base)
          96 : 7530.dasm (2.86 % of base)
          96 : 1531.dasm (2.85 % of base)
          96 : 156328.dasm (2.85 % of base)
          96 : 165688.dasm (2.85 % of base)
          96 : 170992.dasm (2.85 % of base)
          96 : 198216.dasm (2.85 % of base)
          96 : 216405.dasm (2.85 % of base)
          96 : 231521.dasm (2.85 % of base)
          96 : 23524.dasm (2.86 % of base)
          96 : 276168.dasm (2.85 % of base)
          96 : 279060.dasm (2.85 % of base)
          96 : 302127.dasm (2.85 % of base)

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

Top method regressions (bytes):
          96 (2.86 % of base) : 156771.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 164004.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 173742.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 210016.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 241801.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 249676.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 312281.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 315206.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 7530.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 1531.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 156328.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 165688.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 170992.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 198216.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 216405.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 231521.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 23524.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 276168.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 279060.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 302127.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)

Top method regressions (percentages):
          74 (3.25 % of base) : 297900.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
          78 (3.19 % of base) : 208806.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          70 (3.08 % of base) : 474573.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
          92 (3.00 % of base) : 306301.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 311896.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          96 (2.86 % of base) : 312281.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 156771.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 173742.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 7530.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 23524.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 159875.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 275398.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 159183.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 308294.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 313196.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 156328.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 170992.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 164004.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 210016.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 241801.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)


libraries.crossgen2.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: 34522594 (overridden on cmd)
Total bytes of diff: 34522694 (overridden on cmd)
Total bytes of delta: 100 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         124 : 78413.dasm (32.12 % of base)

Top file improvements (bytes):
         -24 : 75277.dasm (-26.67 % of base)

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

Top method regressions (bytes):
         124 (32.12 % of base) : 78413.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (bytes):
         -24 (-26.67 % of base) : 75277.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

Top method regressions (percentages):
         124 (32.12 % of base) : 78413.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (percentages):
         -24 (-26.67 % of base) : 75277.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

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


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

Detail diffs



Top file regressions (bytes):
         224 : 119182.dasm (45.16 % of base)

Top file improvements (bytes):
         -20 : 115770.dasm (-22.73 % of base)

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

Top method regressions (bytes):
         224 (45.16 % of base) : 119182.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (bytes):
         -20 (-22.73 % of base) : 115770.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

Top method regressions (percentages):
         224 (45.16 % of base) : 119182.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (percentages):
         -20 (-22.73 % of base) : 115770.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

2 total methods with Code Size differences (1 improved, 1 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: 243861550 (overridden on cmd)
Total bytes of diff: 243883900 (overridden on cmd)
Total bytes of delta: 22350 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          96 : 250912.dasm (2.87 % of base)
          96 : 266304.dasm (2.86 % of base)
          96 : 268908.dasm (2.87 % of base)
          96 : 408104.dasm (2.86 % of base)
          96 : 468572.dasm (2.84 % of base)
          96 : 266540.dasm (2.86 % of base)
          96 : 313024.dasm (2.86 % of base)
          96 : 324940.dasm (2.86 % of base)
          96 : 332976.dasm (2.84 % of base)
          96 : 429704.dasm (2.87 % of base)
          96 : 484884.dasm (2.86 % of base)
          96 : 721872.dasm (2.86 % of base)
          96 : 316744.dasm (2.86 % of base)
          96 : 405900.dasm (2.86 % of base)
          96 : 408536.dasm (2.84 % of base)
          96 : 486840.dasm (2.85 % of base)
          96 : 265724.dasm (2.85 % of base)
          96 : 266632.dasm (2.86 % of base)
          96 : 326888.dasm (2.86 % of base)
          96 : 392996.dasm (2.86 % of base)

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

Top method regressions (bytes):
          96 (2.87 % of base) : 250912.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 266304.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.87 % of base) : 268908.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 408104.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.84 % of base) : 468572.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 266540.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 313024.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 324940.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.84 % of base) : 332976.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.87 % of base) : 429704.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 484884.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 721872.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 316744.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 405900.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.84 % of base) : 408536.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 486840.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.85 % of base) : 265724.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 266632.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 326888.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          96 (2.86 % of base) : 392996.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)

Top method regressions (percentages):
          64 (3.22 % of base) : 429530.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
          64 (3.11 % of base) : 214030.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)
          94 (3.07 % of base) : 318418.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          94 (3.07 % of base) : 538228.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          94 (3.07 % of base) : 306189.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          94 (3.07 % of base) : 402675.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          94 (3.07 % of base) : 573891.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.02 % of base) : 315559.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.02 % of base) : 379893.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.02 % of base) : 443324.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 107120.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 303452.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 358927.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 251973.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 721653.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 206543.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 328826.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 552366.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 479177.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)
          92 (3.00 % of base) : 657069.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Instrumented Tier1)


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

Detail diffs



Top file regressions (bytes):
           8 : 131167.dasm (0.64 % of base)

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

Top method regressions (bytes):
           8 (0.64 % of base) : 131167.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)

Top method regressions (percentages):
           8 (0.64 % of base) : 131167.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)

1 total methods with Code Size differences (0 improved, 1 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: 13606688 (overridden on cmd)
Total bytes of diff: 13606828 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          70 : 3169.dasm (3.40 % of base)
          70 : 3405.dasm (3.09 % of base)

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

Top method regressions (bytes):
          70 (3.40 % of base) : 3169.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
          70 (3.09 % of base) : 3405.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

Top method regressions (percentages):
          70 (3.40 % of base) : 3169.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
          70 (3.09 % of base) : 3405.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

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



windows x86

Diffs are based on 2,293,488 contexts (839,658 MinOpts, 1,453,830 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 8 (0.00%)

Overall (+29,276 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,124,689 +77
benchmarks.run_pgo.windows.x86.checked.mch 44,988,104 +88
benchmarks.run_tiered.windows.x86.checked.mch 9,472,179 +89
coreclr_tests.run.windows.x86.checked.mch 309,393,378 +10,753
libraries.crossgen2.windows.x86.checked.mch 31,716,415 +116
libraries.pmi.windows.x86.checked.mch 49,289,080 +220
libraries_tests.run.windows.x86.Release.mch 186,679,151 +17,856
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,828,161 -3
realworld.run.windows.x86.checked.mch 11,355,574 +80

FullOpts (+29,276 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,124,408 +77
benchmarks.run_pgo.windows.x86.checked.mch 38,399,473 +88
benchmarks.run_tiered.windows.x86.checked.mch 5,202,358 +89
coreclr_tests.run.windows.x86.checked.mch 107,605,244 +10,753
libraries.crossgen2.windows.x86.checked.mch 31,715,355 +116
libraries.pmi.windows.x86.checked.mch 49,193,847 +220
libraries_tests.run.windows.x86.Release.mch 88,405,451 +17,856
librariestestsnotieredcompilation.run.windows.x86.Release.mch 95,148,097 -3
realworld.run.windows.x86.checked.mch 11,059,860 +80

Example diffs

benchmarks.run.windows.x86.checked.mch

+28 (+1.28%) : 4847.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
...

+49 (+2.10%) : 2560.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (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]
...

benchmarks.run_pgo.windows.x86.checked.mch

+36 (+1.59%) : 15423.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]
...

benchmarks.run_tiered.windows.x86.checked.mch

+37 (+1.67%) : 15798.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}
...

coreclr_tests.run.windows.x86.checked.mch

+1 (+0.04%) : 452588.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.66) byref -> esi this single-def
-; V01 arg1 [V01,T20] ( 11, 4.72) ref -> [ebp-0x78] class-hnd single-def <System.IFormatProvider> -; V02 arg2 [V02,T04] ( 16, 25.36) ref -> edi class-hnd single-def <System.String>
+; V01 arg1 [V01,T20] ( 11, 4.72) ref -> [ebp-0x6C] class-hnd single-def <System.IFormatProvider> +; V02 arg2 [V02,T04] ( 17, 25.36) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T60] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
-; V04 loc0 [V04,T49] ( 3, 2.76) ref -> [ebp-0x7C] class-hnd spill-single-def <<unknown class>> -; V05 loc1 [V05,T00] ( 62, 72.64) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T01] ( 31, 37.45) ushort -> [ebp-0x14] -; V07 loc3 [V07,T24] ( 12, 5.40) int -> [ebp-0x18]
+; V04 loc0 [V04,T49] ( 3, 2.76) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>> +; V05 loc1 [V05,T00] ( 67, 72.55) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T01] ( 34, 37.45) ushort -> [ebp-0x14] +; V07 loc3 [V07,T24] ( 15, 5.40) int -> [ebp-0x18]
; V08 loc4 [V08,T30] ( 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,T17] ( 7, 7.05) int -> [ebp-0x20]
-; V11 loc7 [V11,T05] ( 28, 15.07) ref -> [ebp-0x80] class-hnd <System.String> -; V12 loc8 [V12,T58] ( 7, 2.06) ref -> [ebp-0x84] class-hnd <System.String> -; V13 loc9 [V13,T19] ( 10, 6.91) ref -> [ebp-0x88] class-hnd spill-single-def <System.Object>
+; V11 loc7 [V11,T05] ( 28, 15.07) ref -> [ebp-0x74] class-hnd <System.String> +; V12 loc8 [V12,T58] ( 7, 2.06) ref -> [ebp-0x78] class-hnd <System.String> +; V13 loc9 [V13,T19] ( 10, 6.91) 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,T25] ( 3, 5.29) ushort -> ecx ; V17 loc13 [V17,T12] ( 7, 9.35) int -> edx
-; V18 loc14 [V18,T29] ( 5, 4.70) ref -> [ebp-0x8C] class-hnd spill-single-def <System.ISpanFormattable>
+; V18 loc14 [V18,T29] ( 5, 4.70) ref -> [ebp-0x80] class-hnd spill-single-def <System.ISpanFormattable>
; V19 loc15 [V19 ] ( 5, 1.58) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T54] ( 5, 2.14) ref -> [ebp-0x90] class-hnd spill-single-def <System.IFormattable>
+; V20 loc16 [V20,T54] ( 5, 2.14) ref -> [ebp-0x84] class-hnd spill-single-def <System.IFormattable>
; V21 tmp0 [V21,T59] ( 3, 2 ) ref -> edx ;* V22 tmp1 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V23 tmp2 [V23,T62] ( 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.69) int -> ebx "Inlining Arg"
-; V39 tmp18 [V39,T13] ( 2, 8.46) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
+; V39 tmp18 [V39,T13] ( 2, 8.46) 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,T55] ( 3, 2.11) 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,T56] ( 3, 2.11) int -> edi "Inlining Arg"
-; V66 tmp45 [V66,T73] ( 2, 1.41) byref -> [ebp-0x98] spill-single-def "Inlining Arg"
+; V66 tmp45 [V66,T73] ( 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,T10] ( 3, 10.57) 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,T11] ( 3, 10.57) int -> ebx "Inlining Arg"
-; V84 tmp63 [V84,T18] ( 2, 7.05) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
+; V84 tmp63 [V84,T18] ( 2, 7.05) 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,T27] ( 3, 4.74) byref -> ecx "Inlining Arg" ;* V106 tmp85 [V106 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V107 tmp86 [V107,T28] ( 3, 4.74) int -> [ebp-0x34] spill-single-def "Inlining Arg"
-; V108 tmp87 [V108,T44] ( 2, 3.16) byref -> [ebp-0xA0] spill-single-def "Inlining Arg"
+; V108 tmp87 [V108,T44] ( 2, 3.16) 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,T52] ( 2, 2.50) byref -> ecx "Inlining Arg" @@ -131,10 +131,10 @@ ; V119 tmp98 [V119,T89] ( 3, 0.45) byref -> edx "Span.get_Item ptrToSpan" ; V120 tmp99 [V120,T41] ( 5, 3.48) 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,T37] ( 3, 4.18) byref -> eax "Inlining Arg"
+; V122 tmp101 [V122,T37] ( 3, 4.18) 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,T38] ( 3, 4.18) int -> [ebp-0x48] spill-single-def "Inlining Arg"
-; V125 tmp104 [V125,T47] ( 2, 2.94) byref -> [ebp-0xA4] spill-single-def "Inlining Arg"
+; V125 tmp104 [V125,T47] ( 2, 2.94) 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,T101] ( 3, 0 ) byref -> ecx "Span.get_Item ptrToSpan" ; V134 tmp113 [V134,T23] ( 9, 5.09) 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,T40] ( 6, 3.56) int -> ecx "Inline stloc first use temp" -; V137 tmp116 [V137,T64] ( 4, 1.60) int -> [ebp-0x54] spill-single-def "Inlining Arg" -; V138 tmp117 [V138,T74] ( 3, 1.20) byref -> [ebp-0xA8] spill-single-def "Inlining Arg"
+; V136 tmp115 [V136,T40] ( 6, 3.56) int -> edx "Inline stloc first use temp" +; V137 tmp116 [V137,T64] ( 4, 1.60) int -> edi "Inlining Arg" +; V138 tmp117 [V138,T74] ( 3, 1.20) 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,T81] ( 2, 0.80) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
+; V140 tmp119 [V140,T81] ( 2, 0.80) 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,T92] ( 5, 0.28) int -> edx "Inline stloc first use temp" ; V144 tmp123 [V144,T97] ( 3, 0.12) byref -> eax "Span.get_Item ptrToSpan"
-; V145 tmp124 [V145,T79] ( 5, 0.90) int -> [ebp-0x58] spill-single-def "Inline stloc first use temp"
+; V145 tmp124 [V145,T79] ( 5, 0.90) 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,T75] ( 3, 1.08) 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,T76] ( 3, 1.08) int -> [ebp-0x5C] spill-single-def "Inlining Arg" -; V150 tmp129 [V150,T82] ( 2, 0.72) byref -> [ebp-0xB0] spill-single-def "Inlining Arg"
+; V149 tmp128 [V149,T76] ( 3, 1.08) int -> edi "Inlining Arg" +; V150 tmp129 [V150,T82] ( 2, 0.72) 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,T83] ( 2, 0.72) byref -> edx "Inlining Arg" ; V156 tmp135 [V156,T84] ( 2, 0.72) int -> ecx "Inlining Arg"
-; V157 tmp136 [V157,T43] ( 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,T43] ( 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,T21] ( 4, 6.34) byref -> [ebp-0xB8] spill-single-def "field V34._reference (fldOffset=0x0)" P-INDEP
+; V165 tmp144 [V165,T21] ( 4, 6.34) byref -> [ebp-0xA8] spill-single-def "field V34._reference (fldOffset=0x0)" P-INDEP
; V166 tmp145 [V166,T15] ( 8, 7.41) int -> ebx "field V34._length (fldOffset=0x4)" P-INDEP ; V167 tmp146 [V167,T31] ( 2, 4.23) byref -> eax "field V36._reference (fldOffset=0x0)" P-INDEP ; V168 tmp147 [V168,T32] ( 2, 4.23) 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,T102] ( 2, 0 ) byref -> [ebp-0xBC] spill-single-def "field V92._reference (fldOffset=0x0)" P-INDEP -; V196 tmp175 [V196,T103] ( 2, 0 ) int -> [ebp-0x64] spill-single-def "field V92._length (fldOffset=0x4)" P-INDEP
+; V195 tmp174 [V195,T102] ( 2, 0 ) byref -> [ebp-0xAC] spill-single-def "field V92._reference (fldOffset=0x0)" P-INDEP +; V196 tmp175 [V196,T103] ( 2, 0 ) int -> [ebp-0x58] spill-single-def "field V92._length (fldOffset=0x4)" P-INDEP
; V197 tmp176 [V197,T69] ( 2, 1.44) byref -> ebx "field V96._reference (fldOffset=0x0)" P-INDEP ; V198 tmp177 [V198,T71] ( 2, 1.44) int -> eax "field V96._length (fldOffset=0x4)" P-INDEP ; V199 tmp178 [V199,T70] ( 2, 1.44) byref -> ebx "field V98._reference (fldOffset=0x0)" P-INDEP ; V200 tmp179 [V200,T72] ( 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,T66] ( 3, 1.58) byref -> [ebp-0xC0] spill-single-def "field V106._reference (fldOffset=0x0)" P-INDEP
+; V203 tmp182 [V203,T66] ( 3, 1.58) byref -> [ebp-0xB0] spill-single-def "field V106._reference (fldOffset=0x0)" P-INDEP
; V204 tmp183 [V204,T68] ( 3, 1.58) 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,T61] ( 3, 1.87) long -> [ebp-0x6C] do-not-enreg[F] "field V113._dateData (fldOffset=0x0)" P-INDEP
+; V207 tmp186 [V207,T61] ( 3, 1.87) long -> [ebp-0x60] do-not-enreg[F] "field V113._dateData (fldOffset=0x0)" P-INDEP
;* V208 tmp187 [V208,T85] ( 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,T80] ( 2, 0.87) byref -> edx "field V135._reference (fldOffset=0x0)" P-INDEP
+; V215 tmp194 [V215,T80] ( 2, 0.87) byref -> edi "field V135._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp195 [V216,T95] ( 0, 0 ) int -> zero-ref "field V135._length (fldOffset=0x4)" P-INDEP
-; V217 tmp196 [V217,T91] ( 2, 0.40) byref -> edx "field V139._reference (fldOffset=0x0)" P-INDEP
+; V217 tmp196 [V217,T91] ( 2, 0.40) byref -> edi "field V139._reference (fldOffset=0x0)" P-INDEP
;* V218 tmp197 [V218,T96] ( 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,22 +234,22 @@ ;* 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,T50] ( 2, 2.76) byref -> [ebp-0xC4] spill-single-def "V03.[000..004)" -; V226 tmp205 [V226,T51] ( 2, 2.76) int -> [ebp-0x70] spill-single-def "V03.[004..008)"
+; V225 tmp204 [V225,T50] ( 2, 2.76) byref -> [ebp-0xB4] spill-single-def "V03.[000..004)" +; V226 tmp205 [V226,T51] ( 2, 2.76) int -> [ebp-0x64] spill-single-def "V03.[004..008)"
; V227 cse0 [V227,T78] ( 3, 1.06) int -> edi "CSE - conservative" ; V228 cse1 [V228,T86] ( 3, 0.60) int -> ecx "CSE - conservative" ; V229 cse2 [V229,T88] ( 3, 0.54) int -> eax "CSE - conservative" ; V230 cse3 [V230,T26] ( 3, 5.29) int -> ebx "CSE - conservative" ; V231 cse4 [V231,T53] ( 3, 2.37) int -> eax "CSE - conservative"
-; V232 cse5 [V232,T57] ( 3, 2.09) int -> edx "CSE - conservative" -; V233 cse6 [V233,T87] ( 3, 0.58) int -> eax "CSE - conservative" -; V234 cse7 [V234,T03] ( 19, 28.14) int -> [ebp-0x74] spill-single-def "CSE - aggressive"
+; V232 cse5 [V232,T57] ( 3, 2.09) int -> eax "CSE - conservative" +; V233 cse6 [V233,T87] ( 3, 0.58) int -> edi "CSE - conservative" +; V234 cse7 [V234,T03] ( 20, 27.85) int -> [ebp-0x68] spill-single-def "CSE - aggressive"
; V235 rat0 [V235,T14] ( 6, 7.77) ref -> registers class-hnd "replacement local" <System.IFormattable> ; V236 rat1 [V236,T39] ( 3, 3.75) 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 @@ -257,10 +257,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 @@ -271,21 +271,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_IG106
+ je G_M36935_IG109
test ebx, ebx je G_M36935_IG32 ;; size=31 bbWeight=1 PerfScore 6.50 G_M36935_IG03: ; bbWeight=0.80, gcVars=00000000000000000004000000000000 {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_IG107
+ jne G_M36935_IG110
xor edx, edx ; gcrRegs +[edx] ;; size=17 bbWeight=0.80 PerfScore 4.20 @@ -294,21 +294,21 @@ G_M36935_IG04: ; bbWeight=1, gcVars=00000000000000000004000000100000 {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 ;; size=16 bbWeight=1 PerfScore 4.50 ...

libraries.crossgen2.windows.x86.checked.mch

-15 (-24.19%) : 140417.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%) : 80344.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.33%) : 298151.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,T33] ( 3, 1 ) ref -> [ebp-0x2C] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T32] ( 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,T33] ( 3, 1 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T32] ( 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,T31] ( 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,T31] ( 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=0000000200000000 {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=0000000200000000 {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=0000000300080000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1, gcVars=0000000300100000 {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=0000000300080000 {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=0000000300080000 {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=0000000300080000 {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=0000000300080000 {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=0000000300080000 {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] ...

+44 (+2.00%) : 415910.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -5,19 +5,19 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 144
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 144
; 23 inlinees with PGO data; 32 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 29, 9 ) ref -> esi this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T11] ( 8, 4 ) ref -> [ebp-0x64] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T05] ( 16, 9 ) ref -> edi class-hnd single-def <System.String>
+; V02 arg2 [V02,T05] ( 17, 9 ) ref -> edi class-hnd single-def <System.String>
; V03 arg3 [V03,T33] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
-; V04 loc0 [V04,T25] ( 3, 2 ) ref -> [ebp-0x68] class-hnd spill-single-def <<unknown class>> -; V05 loc1 [V05,T00] ( 62, 23 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T09] ( 30, 6 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T20] ( 12, 3 ) int -> [ebp-0x18] -; V08 loc4 [V08,T24] ( 5, 2 ) ubyte -> [ebp-0x1C]
+; V04 loc0 [V04,T27] ( 3, 2 ) ref -> [ebp-0x68] class-hnd spill-single-def <<unknown class>> +; V05 loc1 [V05,T00] ( 67, 23 ) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T09] ( 33, 6 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T20] ( 15, 3 ) int -> [ebp-0x18] +; V08 loc4 [V08,T26] ( 5, 2 ) ubyte -> [ebp-0x1C]
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 4 ) int -> [ebp-0x20] ; V11 loc7 [V11,T08] ( 14, 7 ) ref -> [ebp-0x6C] class-hnd <System.String> @@ -27,9 +27,9 @@ ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T21] ( 3, 3 ) ushort -> ecx ; V17 loc13 [V17,T45] ( 7, 0 ) int -> [ebp-0x24]
-; V18 loc14 [V18,T26] ( 3, 2 ) ref -> [ebp-0x78] class-hnd <<unknown class>>
+; V18 loc14 [V18,T24] ( 5, 2 ) ref -> [ebp-0x78] class-hnd <<unknown class>>
; V19 loc15 [V19 ] ( 5, 0 ) int -> [ebp-0x28] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T27] ( 3, 2 ) ref -> [ebp-0x7C] class-hnd spill-single-def <<unknown class>>
+; V20 loc16 [V20,T25] ( 5, 2 ) ref -> [ebp-0x7C] class-hnd <<unknown class>>
;* V21 loc17 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Span`1[ushort]> ; V22 tmp0 [V22,T28] ( 3, 2 ) ref -> edx ;* V23 tmp1 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -134,9 +134,9 @@ ;* V122 tmp100 [V122 ] ( 0, 0 ) byref -> zero-ref "field V75._reference (fldOffset=0x0)" P-INDEP ; V123 tmp101 [V123,T55] ( 3, 0 ) int -> edx "field V75._length (fldOffset=0x4)" P-INDEP ; V124 tmp102 [V124,T35] ( 2, 2 ) int -> [ebp-0x5C] spill-single-def "V03.[004..008)"
-; V125 cse0 [V125,T03] ( 19, 10 ) int -> [ebp-0x60] spill-single-def "CSE - aggressive" -; V126 rat0 [V126,T06] ( 6, 8 ) ref -> eax class-hnd "replacement local" <<unknown class>> -; V127 rat1 [V127,T07] ( 6, 8 ) ref -> ecx class-hnd "replacement local" <<unknown class>>
+; V125 cse0 [V125,T03] ( 20, 10 ) int -> [ebp-0x60] spill-single-def "CSE - aggressive" +; V126 rat0 [V126,T06] ( 7, 8 ) ref -> eax class-hnd "replacement local" <<unknown class>> +; V127 rat1 [V127,T07] ( 7, 8 ) ref -> ecx class-hnd "replacement local" <<unknown class>>
; ; Lcl frame size = 152 @@ -164,11 +164,11 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 call [<unknown method>] ; gcrRegs -[ecx edx] test ebx, ebx
- je G_M4730_IG54
+ je G_M4730_IG51
mov gword ptr [ebp-0x64], ebx ; GC ptr vars +{V01} cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M4730_IG55
+ jne G_M4730_IG52
xor edx, edx ; gcrRegs +[edx] ;; size=44 bbWeight=1 PerfScore 12.00 @@ -181,7 +181,7 @@ G_M4730_IG03: ; bbWeight=1, gcVars=0000000000000800 {V01}, gcrefRegs=0000 ; GC ptr vars +{V04} xor edx, edx ;; size=15 bbWeight=1 PerfScore 2.50
-G_M4730_IG04: ; bbWeight=2, gcVars=0000000002000800 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M4730_IG04: ; bbWeight=2, gcVars=0000000008000800 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
; gcrRegs -[eax] mov ecx, dword ptr [edi+0x04] mov dword ptr [ebp-0x60], ecx @@ -228,11 +228,11 @@ G_M4730_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 ; byrRegs -[ecx] mov dword ptr [ebp-0x30], eax test eax, eax
- jl G_M4730_IG43
+ jl G_M4730_IG40
;; size=133 bbWeight=1 PerfScore 37.50 G_M4730_IG06: ; bbWeight=1.00, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref cmp eax, ebx
- ja G_M4730_IG51
+ ja G_M4730_IG48
;; size=8 bbWeight=1.00 PerfScore 1.26 G_M4730_IG07: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz mov ecx, eax @@ -241,54 +241,82 @@ G_M4730_IG07: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 call [<unknown method>] mov ebx, dword ptr [ebp-0x30] test ebx, ebx
- je SHORT G_M4730_IG11
+ je SHORT G_M4730_IG14
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [esi+0x0C] mov dword ptr [ebp-0x34], eax lea edx, [eax+ebx] cmp edx, dword ptr [ecx+0x04]
- ja G_M4730_IG39 - ;; size=41 bbWeight=1 PerfScore 15.75 -G_M4730_IG08: ; bbWeight=0.83, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref
+ ja SHORT G_M4730_IG13 + ;; size=37 bbWeight=1 PerfScore 15.75 +G_M4730_IG08: ; bbWeight=0.83, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
lea ecx, bword ptr [ecx+2*eax+0x08] ; gcrRegs -[ecx] ; byrRegs +[ecx] cmp ebx, 2
- jg G_M4730_IG26 - ;; size=13 bbWeight=0.83 PerfScore 1.87 -G_M4730_IG09: ; bbWeight=0.54, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000002 {ecx}, byref
+ jg SHORT G_M4730_IG11 + ;; size=9 bbWeight=0.83 PerfScore 1.87 +G_M4730_IG09: ; bbWeight=0.54, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000002 {ecx}, byref, isz
mov edx, bword ptr [ebp-0xA0] ; byrRegs +[edx] movzx edx, word ptr [edx] ; byrRegs -[edx] mov word ptr [ecx], dx cmp ebx, 2
- je G_M4730_IG20 - ;; size=21 bbWeight=0.54 PerfScore 2.85 -G_M4730_IG10: ; bbWeight=0.83, gcVars=0000000002000800 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; byrRegs -[ecx]
+ jne SHORT G_M4730_IG12 + ;; size=17 bbWeight=0.54 PerfScore 2.85 +G_M4730_IG10: ; bbWeight=0.23, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000002 {ecx}, byref, isz + mov edx, bword ptr [ebp-0xA0] + ; byrRegs +[edx] + movzx edx, word ptr [edx+0x02] + ; byrRegs -[edx] + mov word ptr [ecx+0x02], dx + jmp SHORT G_M4730_IG12 + ;; size=16 bbWeight=0.23 PerfScore 1.39 +G_M4730_IG11: ; bbWeight=0.29, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000002 {ecx}, byref + lea edx, [ebx+ebx] + push edx + mov edx, bword ptr [ebp-0xA0] + ; byrRegs +[edx]
; GC ptr vars -{V96}
+ call [<unknown method>] + ; byrRegs -[ecx edx] + ;; size=16 bbWeight=0.29 PerfScore 1.59 +G_M4730_IG12: ; bbWeight=0.83, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, ebx add eax, dword ptr [ebp-0x34] mov dword ptr [esi+0x0C], eax
- ;; size=8 bbWeight=0.83 PerfScore 2.71 -G_M4730_IG11: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M4730_IG14 + ;; size=10 bbWeight=0.83 PerfScore 4.37 +G_M4730_IG13: ; bbWeight=0.17, gcVars=0000000008040800 {V01 V04 V96}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref + ; GC ptr vars +{V18 V96} + push ebx + mov ecx, esi + ; gcrRegs +[ecx] + mov edx, bword ptr [ebp-0xA0] + ; byrRegs +[edx] + ; GC ptr vars -{V18 V96} + call [<unknown method>] + ; gcrRegs -[ecx] + ; byrRegs -[edx] + ;; size=15 bbWeight=0.17 PerfScore 0.88 +G_M4730_IG14: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, dword ptr [ebp-0x10] add edx, ebx mov ebx, dword ptr [ebp-0x60] cmp edx, ebx
- jae G_M4730_IG53
+ jae G_M4730_IG50
movzx ecx, word ptr [edi+2*edx+0x08] inc edx cmp ebx, edx
- jbe G_M4730_IG47
+ jbe G_M4730_IG44
movzx eax, word ptr [edi+2*edx+0x08] mov dword ptr [ebp-0x14], eax cmp ecx, eax
- je G_M4730_IG19
+ je G_M4730_IG53
cmp ecx, 123
- jne G_M4730_IG45
+ jne G_M4730_IG42
xor ecx, ecx mov dword ptr [ebp-0x18], ecx xor ecx, ecx @@ -302,7 +330,7 @@ G_M4730_IG11: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov dword ptr [ebp-0x54], ecx lea ecx, [edx-0x01] cmp ecx, ebx
- jae G_M4730_IG53
+ jae G_M4730_IG50
mov dword ptr [ebp-0x10], edx xor ecx, ecx cmp word ptr [edi+2*edx+0x06], 123 @@ -316,18 +344,18 @@ G_M4730_IG11: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 lea edx, [eax-0x30] mov dword ptr [ebp-0x20], edx cmp edx, 10
- jae G_M4730_IG46
+ jae G_M4730_IG43
mov ecx, dword ptr [ebp-0x10] inc ecx cmp ebx, ecx
- jbe G_M4730_IG18
+ jbe G_M4730_IG32
movzx eax, word ptr [edi+2*ecx+0x08] cmp eax, 125
- jne G_M4730_IG57
+ jne G_M4730_IG55
;; size=168 bbWeight=1 PerfScore 43.25
-G_M4730_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG15: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, ebx
- jae G_M4730_IG53
+ jae G_M4730_IG50
mov dword ptr [ebp-0x10], ecx cmp word ptr [edi+2*ecx+0x08], 125 sete cl @@ -344,7 +372,7 @@ G_M4730_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 ; GC ptr vars +{V12} mov ecx, dword ptr [ebp-0x20] cmp ecx, dword ptr [ebp-0x5C]
- jae G_M4730_IG50
+ jae G_M4730_IG47
mov edx, bword ptr [ebp+0x08] ; gcrRegs -[edx] ; byrRegs +[edx] @@ -354,142 +382,78 @@ G_M4730_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov gword ptr [ebp-0x74], edx ; GC ptr vars +{V13} cmp gword ptr [ebp-0x68], 0
- jne G_M4730_IG80
+ jne G_M4730_IG84
;; size=74 bbWeight=1 PerfScore 24.25
-G_M4730_IG13: ; bbWeight=1, gcVars=0000180002000C00 {V01 V04 V12 V13 V86}, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M4730_IG16: ; bbWeight=1, gcVars=0000180008000C00 {V01 V04 V12 V13 V86}, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
test eax, eax
- jne G_M4730_IG31
+ jne SHORT G_M4730_IG28
cmp dword ptr [ebp-0x1C], 0
- jne SHORT G_M4730_IG15
+ jne SHORT G_M4730_IG18
mov eax, dword ptr [ebp-0x18] ; gcrRegs -[eax] test eax, eax
- jne SHORT G_M4730_IG23
...

+46 (+2.07%) : 324692.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier1)

@@ -5,18 +5,18 @@ ; optimized using Dynamic PGO ; ebp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 22
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 22
; 24 inlinees with PGO data; 32 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T02] ( 29, 9 ) ref -> esi this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T11] ( 8, 4 ) ref -> [ebp-0x64] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T05] ( 16, 9 ) ref -> edi class-hnd single-def <System.String>
+; V02 arg2 [V02,T05] ( 17, 9 ) ref -> edi class-hnd single-def <System.String>
; V03 arg3 [V03,T34] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T25] ( 3, 2 ) ref -> [ebp-0x68] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 23 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T09] ( 30, 6 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T19] ( 13, 3 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67, 23 ) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T09] ( 33, 6 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T19] ( 16, 3 ) int -> [ebp-0x18]
; V08 loc4 [V08,T24] ( 5, 2 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T14] ( 7, 4 ) int -> [ebp-0x20] @@ -134,7 +134,7 @@ ;* V122 tmp100 [V122 ] ( 0, 0 ) byref -> zero-ref "field V75._reference (fldOffset=0x0)" P-INDEP ; V123 tmp101 [V123,T56] ( 3, 0 ) int -> edx "field V75._length (fldOffset=0x4)" P-INDEP ; V124 tmp102 [V124,T36] ( 2, 2 ) int -> [ebp-0x5C] spill-single-def "V03.[004..008)"
-; V125 cse0 [V125,T03] ( 19, 10 ) int -> [ebp-0x60] spill-single-def "CSE - aggressive"
+; V125 cse0 [V125,T03] ( 20, 10 ) int -> [ebp-0x60] spill-single-def "CSE - aggressive"
; V126 rat0 [V126,T06] ( 6, 8 ) ref -> eax class-hnd "replacement local" <<unknown class>> ; V127 rat1 [V127,T07] ( 6, 8 ) ref -> ecx class-hnd "replacement local" <<unknown class>> ; @@ -158,13 +158,13 @@ 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_IG93
+ je G_M4730_IG36
test ebx, ebx
- je G_M4730_IG94
+ je G_M4730_IG37
mov gword ptr [ebp-0x64], ebx ; GC ptr vars +{V01} cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M4730_IG95
+ jne G_M4730_IG38
xor edx, edx ; gcrRegs +[edx] ;; size=39 bbWeight=1 PerfScore 9.75 @@ -182,7 +182,7 @@ G_M4730_IG04: ; bbWeight=2, gcVars=0000000002000800 {V01 V04}, gcrefRegs= mov ecx, dword ptr [edi+0x04] mov dword ptr [ebp-0x60], ecx cmp ecx, edx
- jbe G_M4730_IG34
+ jbe G_M4730_IG29
;; size=14 bbWeight=2 PerfScore 8.50 G_M4730_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz lea eax, bword ptr [edi+2*edx+0x08] @@ -224,63 +224,86 @@ G_M4730_IG05: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 ; byrRegs -[ecx] mov dword ptr [ebp-0x30], eax test eax, eax
- jl G_M4730_IG82
+ jl G_M4730_IG88
cmp eax, ebx
- ja G_M4730_IG90
+ ja G_M4730_IG96
mov ecx, eax not ecx shr ecx, 31 call [<unknown method>] mov ebx, dword ptr [ebp-0x30] test ebx, ebx
- je SHORT G_M4730_IG09
+ je SHORT G_M4730_IG11
mov ecx, gword ptr [esi+0x04] ; gcrRegs +[ecx] mov eax, dword ptr [esi+0x0C] mov dword ptr [ebp-0x34], eax lea edx, [eax+ebx] cmp edx, dword ptr [ecx+0x04]
- ja G_M4730_IG37 - ;; size=182 bbWeight=1 PerfScore 54.50
+ ja SHORT G_M4730_IG10 + ;; size=178 bbWeight=1 PerfScore 54.50
G_M4730_IG06: ; bbWeight=0.93, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref lea ecx, bword ptr [ecx+2*eax+0x08] ; gcrRegs -[ecx] ; byrRegs +[ecx] cmp ebx, 2
- jg G_M4730_IG24
+ jg G_M4730_IG31
;; size=13 bbWeight=0.93 PerfScore 2.09
-G_M4730_IG07: ; bbWeight=0.60, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000002 {ecx}, byref
+G_M4730_IG07: ; bbWeight=0.60, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000002 {ecx}, byref, isz
mov edx, bword ptr [ebp-0xA0] ; byrRegs +[edx] movzx edx, word ptr [edx] ; byrRegs -[edx] mov word ptr [ecx], dx cmp ebx, 2
- je G_M4730_IG18 - ;; size=21 bbWeight=0.60 PerfScore 3.16 -G_M4730_IG08: ; bbWeight=0.93, gcVars=0000000002000800 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+ je SHORT G_M4730_IG09 + ;; size=17 bbWeight=0.60 PerfScore 3.16 +G_M4730_IG08: ; bbWeight=0.93, gcVars=0000000002000800 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
; byrRegs -[ecx] ; GC ptr vars -{V96} mov eax, ebx add eax, dword ptr [ebp-0x34] mov dword ptr [esi+0x0C], eax
- ;; size=8 bbWeight=0.93 PerfScore 3.02 -G_M4730_IG09: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jmp SHORT G_M4730_IG11 + ;; size=10 bbWeight=0.93 PerfScore 4.87 +G_M4730_IG09: ; bbWeight=0.03, gcVars=0000000002040800 {V01 V04 V96}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000002 {ecx}, gcvars, byref, isz + ; byrRegs +[ecx] + ; GC ptr vars +{V18 V96} + mov edx, bword ptr [ebp-0xA0] + ; byrRegs +[edx] + movzx edx, word ptr [edx+0x02] + ; byrRegs -[edx] + mov word ptr [ecx+0x02], dx + jmp SHORT G_M4730_IG08 + ;; size=16 bbWeight=0.03 PerfScore 0.18 +G_M4730_IG10: ; bbWeight=0.07, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + ; byrRegs -[ecx] + push ebx + mov ecx, esi + ; gcrRegs +[ecx] + mov edx, bword ptr [ebp-0xA0] + ; byrRegs +[edx] + ; GC ptr vars -{V18 V96} + call [<unknown method>] + ; gcrRegs -[ecx] + ; byrRegs -[edx] + ;; size=15 bbWeight=0.07 PerfScore 0.38 +G_M4730_IG11: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
mov edx, dword ptr [ebp-0x10] add edx, ebx mov ebx, dword ptr [ebp-0x60] cmp edx, ebx
- jae G_M4730_IG92
+ jae G_M4730_IG35
movzx ecx, word ptr [edi+2*edx+0x08] inc edx cmp ebx, edx
- jbe G_M4730_IG86
+ jbe G_M4730_IG92
movzx eax, word ptr [edi+2*edx+0x08] mov dword ptr [ebp-0x14], eax cmp ecx, eax
- je G_M4730_IG17
+ je G_M4730_IG39
cmp ecx, 123
- jne G_M4730_IG84
+ jne G_M4730_IG90
xor ecx, ecx mov dword ptr [ebp-0x18], ecx xor ecx, ecx @@ -294,7 +317,7 @@ G_M4730_IG09: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov dword ptr [ebp-0x54], ecx lea ecx, [edx-0x01] cmp ecx, ebx
- jae G_M4730_IG92
+ jae G_M4730_IG35
mov dword ptr [ebp-0x10], edx xor ecx, ecx cmp word ptr [edi+2*edx+0x06], 123 @@ -308,18 +331,18 @@ G_M4730_IG09: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 lea edx, [eax-0x30] mov dword ptr [ebp-0x20], edx cmp edx, 10
- jae G_M4730_IG85
+ jae G_M4730_IG91
mov ecx, dword ptr [ebp-0x10] inc ecx cmp ebx, ecx
- jbe G_M4730_IG16
+ jbe G_M4730_IG28
movzx eax, word ptr [edi+2*ecx+0x08] cmp eax, 125 jne G_M4730_IG41 ;; size=168 bbWeight=1 PerfScore 43.25
-G_M4730_IG10: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG12: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
cmp ecx, ebx
- jae G_M4730_IG92
+ jae G_M4730_IG35
mov dword ptr [ebp-0x10], ecx cmp word ptr [edi+2*ecx+0x08], 125 sete cl @@ -336,7 +359,7 @@ G_M4730_IG10: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 ; GC ptr vars +{V12} mov ecx, dword ptr [ebp-0x20] cmp ecx, dword ptr [ebp-0x5C]
- jae G_M4730_IG89
+ jae G_M4730_IG95
mov edx, bword ptr [ebp+0x08] ; gcrRegs -[edx] ; byrRegs +[edx] @@ -346,144 +369,80 @@ G_M4730_IG10: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov gword ptr [ebp-0x74], edx ; GC ptr vars +{V13} cmp gword ptr [ebp-0x68], 0
- jne G_M4730_IG64
+ jne G_M4730_IG70
;; size=74 bbWeight=1 PerfScore 24.25
-G_M4730_IG11: ; bbWeight=1, gcVars=0000300002000C00 {V01 V04 V12 V13 V86}, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M4730_IG13: ; bbWeight=1, gcVars=0000300002000C00 {V01 V04 V12 V13 V86}, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
test eax, eax
- jne G_M4730_IG29
+ jne SHORT G_M4730_IG23
cmp dword ptr [ebp-0x1C], 0
- jne SHORT G_M4730_IG13
+ jne SHORT G_M4730_IG15
mov eax, dword ptr [ebp-0x18] ; gcrRegs -[eax] test eax, eax
- jne SHORT G_M4730_IG21 - ;; size=21 bbWeight=1 PerfScore 6.50 -G_M4730_IG12: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M4730_IG18 + ;; size=17 bbWeight=1 PerfScore 6.50 +G_M4730_IG14: ; bbWeight=0.50, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
mov dword ptr [ebp-0x18], eax ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M4730_IG13: ; bbWeight=1, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M4730_IG15: ; bbWeight=1, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
mov eax, edx ; gcrRegs +[eax] test eax, eax
- je SHORT G_M4730_IG20
+ je SHORT G_M4730_IG17
;; size=6 bbWeight=1 PerfScore 1.50
-G_M4730_IG14: ; bbWeight=0.50, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M4730_IG16: ; bbWeight=0.50, gcrefRegs=000000C5 {eax edx esi edi}, byrefRegs=00000000 {}, byref
cmp dword ptr [eax], 0xD1FFAB1E
- je SHORT G_M4730_IG19 - ;; size=8 bbWeight=0.50 PerfScore 2.00 -G_M4730_IG15: ; bbWeight=2.27, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref - ; gcrRegs -[eax] - jmp G_M4730_IG67 - ;; size=5 bbWeight=2.27 PerfScore 4.55 -G_M4730_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[edx esi edi] - ; GC ptr vars -{V01 V04 V12 V13 V86} - mov edx, ecx
...

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-3 (-0.31%) : 136913.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%) : 2121.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 +77
benchmarks.run_pgo.windows.x86.checked.mch 2 0 2 0 -0 +88
benchmarks.run_tiered.windows.x86.checked.mch 2 0 2 0 -0 +89
coreclr_tests.run.windows.x86.checked.mch 169 0 169 0 -0 +10,753
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 263 1 262 0 -3 +17,859
librariestestsnotieredcompilation.run.windows.x86.Release.mch 1 1 0 0 -3 +0
realworld.run.windows.x86.checked.mch 2 0 2 0 -0 +80
447 4 443 0 -35 +29,311

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,493 4 24,489 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x86.checked.mch 117,807 41,904 75,903 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.x86.checked.mch 47,883 28,747 19,136 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 574,666 319,847 254,819 1 (0.00%) 2 (0.00%)
libraries.crossgen2.windows.x86.checked.mch 242,616 15 242,601 0 (0.00%) 3 (0.00%)
libraries.pmi.windows.x86.checked.mch 305,770 6 305,764 0 (0.00%) 3 (0.00%)
libraries_tests.run.windows.x86.Release.mch 627,833 427,222 200,611 0 (0.00%) 0 (0.00%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,435 21,910 294,525 0 (0.00%) 0 (0.00%)
realworld.run.windows.x86.checked.mch 35,985 3 35,982 0 (0.00%) 0 (0.00%)
2,293,488 839,658 1,453,830 1 (0.00%) 8 (0.00%)

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

Detail diffs



Top file regressions (bytes):
          49 : 2560.dasm (2.10 % of base)
          28 : 4847.dasm (1.28 % of base)

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

Top method regressions (bytes):
          49 (2.10 % of base) : 2560.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
          28 (1.28 % of base) : 4847.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

Top method regressions (percentages):
          49 (2.10 % of base) : 2560.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
          28 (1.28 % of base) : 4847.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

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


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

Detail diffs



Top file regressions (bytes):
          52 : 11734.dasm (2.21 % of base)
          36 : 15423.dasm (1.59 % of base)

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

Top method regressions (bytes):
          52 (2.21 % of base) : 11734.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
          36 (1.59 % of base) : 15423.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)

Top method regressions (percentages):
          52 (2.21 % of base) : 11734.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
          36 (1.59 % of base) : 15423.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)

2 total methods with Code Size differences (0 improved, 2 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: 9472179 (overridden on cmd)
Total bytes of diff: 9472268 (overridden on cmd)
Total bytes of delta: 89 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          52 : 10775.dasm (2.21 % of base)
          37 : 15798.dasm (1.67 % of base)

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

Top method regressions (bytes):
          52 (2.21 % of base) : 10775.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
          37 (1.67 % of base) : 15798.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)

Top method regressions (percentages):
          52 (2.21 % of base) : 10775.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)
          37 (1.67 % of base) : 15798.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)

2 total methods with Code Size differences (0 improved, 2 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: 309393378 (overridden on cmd)
Total bytes of diff: 309404131 (overridden on cmd)
Total bytes of delta: 10753 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          75 : 456109.dasm (2.41 % of base)
          75 : 465164.dasm (2.39 % of base)
          75 : 523709.dasm (2.38 % of base)
          75 : 546737.dasm (2.41 % of base)
          75 : 573460.dasm (2.38 % of base)
          75 : 407880.dasm (2.38 % of base)
          75 : 434564.dasm (2.41 % of base)
          75 : 450715.dasm (2.41 % of base)
          75 : 456897.dasm (2.41 % of base)
          75 : 465434.dasm (2.38 % of base)
          75 : 472589.dasm (2.38 % of base)
          75 : 482480.dasm (2.38 % of base)
          75 : 495546.dasm (2.41 % of base)
          75 : 546458.dasm (2.41 % of base)
          75 : 546730.dasm (2.41 % of base)
          75 : 550512.dasm (2.39 % of base)
          75 : 305729.dasm (2.39 % of base)
          75 : 327345.dasm (2.39 % of base)
          75 : 369876.dasm (2.38 % of base)
          75 : 425832.dasm (2.38 % of base)

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

Top method regressions (bytes):
          75 (2.41 % of base) : 456109.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.39 % of base) : 465164.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.38 % of base) : 523709.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 546737.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.38 % of base) : 573460.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.38 % of base) : 407880.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 434564.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 450715.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 456897.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.38 % of base) : 465434.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.38 % of base) : 472589.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.38 % of base) : 482480.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 495546.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 546458.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 546730.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.39 % of base) : 550512.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.39 % of base) : 305729.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.39 % of base) : 327345.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.38 % of base) : 369876.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.38 % of base) : 425832.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)

Top method regressions (percentages):
          63 (2.69 % of base) : 565517.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          63 (2.44 % of base) : 321884.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          75 (2.44 % of base) : 458536.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 456109.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 546737.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 434564.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 450715.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 456897.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 495546.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 546458.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 546730.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 460768.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 546734.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 572746.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 309405.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 427678.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 440956.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.41 % of base) : 461709.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.39 % of base) : 465164.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.39 % of base) : 550512.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)


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

Detail diffs



Top file regressions (bytes):
          81 : 143485.dasm (28.62 % of base)
          25 : 20839.dasm (1.47 % of base)
          25 : 16861.dasm (1.58 % of base)

Top file improvements (bytes):
         -15 : 140417.dasm (-24.19 % of base)

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

Top method regressions (bytes):
          81 (28.62 % of base) : 143485.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          25 (1.58 % of base) : 16861.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
          25 (1.47 % of base) : 20839.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

Top method improvements (bytes):
         -15 (-24.19 % of base) : 140417.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

Top method regressions (percentages):
          81 (28.62 % of base) : 143485.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)
          25 (1.58 % of base) : 16861.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)
          25 (1.47 % of base) : 20839.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

Top method improvements (percentages):
         -15 (-24.19 % of base) : 140417.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

4 total methods with Code Size differences (1 improved, 3 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: 49289080 (overridden on cmd)
Total bytes of diff: 49289300 (overridden on cmd)
Total bytes of delta: 220 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         234 : 83783.dasm (49.68 % of base)

Top file improvements (bytes):
         -14 : 80344.dasm (-21.54 % of base)

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

Top method regressions (bytes):
         234 (49.68 % of base) : 83783.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (bytes):
         -14 (-21.54 % of base) : 80344.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

Top method regressions (percentages):
         234 (49.68 % of base) : 83783.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol:ReplaceRestExtensionType(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers],Microsoft.CodeAnalysis.VisualBasic.Symbols.TupleTypeSymbol):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol (FullOpts)

Top method improvements (percentages):
         -14 (-21.54 % of base) : 80344.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)

2 total methods with Code Size differences (1 improved, 1 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: 186679151 (overridden on cmd)
Total bytes of diff: 186697007 (overridden on cmd)
Total bytes of delta: 17856 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          95 : 333577.dasm (3.51 % of base)
          83 : 167419.dasm (3.31 % of base)
          83 : 442388.dasm (3.46 % of base)
          83 : 85318.dasm (3.20 % of base)
          79 : 414081.dasm (3.19 % of base)
          78 : 312050.dasm (3.17 % of base)
          78 : 563072.dasm (2.45 % of base)
          75 : 360284.dasm (2.40 % of base)
          75 : 346884.dasm (2.40 % of base)
          75 : 360720.dasm (2.43 % of base)
          75 : 404648.dasm (2.43 % of base)
          75 : 411320.dasm (2.40 % of base)
          75 : 342620.dasm (2.43 % of base)
          75 : 361984.dasm (2.40 % of base)
          75 : 493332.dasm (2.43 % of base)
          75 : 623776.dasm (2.44 % of base)
          75 : 298008.dasm (2.40 % of base)
          75 : 413136.dasm (2.40 % of base)
          75 : 434464.dasm (2.40 % of base)
          75 : 468400.dasm (2.43 % of base)

Top file improvements (bytes):
          -3 : 298151.dasm (-0.33 % of base)

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

Top method regressions (bytes):
          95 (3.51 % of base) : 333577.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          83 (3.31 % of base) : 167419.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          83 (3.46 % of base) : 442388.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          83 (3.20 % of base) : 85318.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          79 (3.19 % of base) : 414081.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          78 (3.17 % of base) : 312050.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          78 (2.45 % of base) : 563072.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          75 (2.40 % of base) : 360284.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.40 % of base) : 346884.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.43 % of base) : 360720.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.43 % of base) : 404648.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.40 % of base) : 411320.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.43 % of base) : 342620.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.40 % of base) : 361984.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.43 % of base) : 493332.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.44 % of base) : 623776.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.40 % of base) : 298008.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.40 % of base) : 413136.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.40 % of base) : 434464.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)
          75 (2.43 % of base) : 468400.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Instrumented Tier1)

Top method improvements (bytes):
          -3 (-0.33 % of base) : 298151.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (Tier0-FullOpts)

Top method regressions (percentages):
          95 (3.51 % of base) : 333577.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          83 (3.46 % of base) : 442388.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          83 (3.31 % of base) : 167419.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          83 (3.20 % of base) : 85318.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          79 (3.19 % of base) : 414081.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          78 (3.17 % of base) : 312050.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          72 (2.88 % of base) : 497496.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          63 (2.75 % of base) : 63588.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.66 % of base) : 533929.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.66 % of base) : 370139.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.65 % of base) : 292723.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.64 % of base) : 246819.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.60 % of base) : 233574.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.60 % of base) : 605409.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.59 % of base) : 369592.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.58 % of base) : 362733.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.57 % of base) : 615501.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.57 % of base) : 106333.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.55 % of base) : 236564.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
          59 (2.55 % of base) : 619994.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

Top method improvements (percentages):
          -3 (-0.33 % of base) : 298151.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (Tier0-FullOpts)


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: 103828161 (overridden on cmd)
Total bytes of diff: 103828158 (overridden on cmd)
Total bytes of delta: -3 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
          -3 : 136913.dasm (-0.31 % of base)

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

Top method improvements (bytes):
          -3 (-0.31 % of base) : 136913.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)

Top method improvements (percentages):
          -3 (-0.31 % of base) : 136913.dasm - System.IO.Tests.Uma_ReadWriteStructArray:UmaReadWriteStructArray_Multiples() (FullOpts)

1 total methods with Code Size differences (1 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: 11355574 (overridden on cmd)
Total bytes of diff: 11355654 (overridden on cmd)
Total bytes of delta: 80 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          52 : 2348.dasm (2.21 % of base)
          28 : 2121.dasm (1.28 % of base)

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

Top method regressions (bytes):
          52 (2.21 % of base) : 2348.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
          28 (1.28 % of base) : 2121.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

Top method regressions (percentages):
          52 (2.21 % of base) : 2348.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)
          28 (1.28 % of base) : 2121.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

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