Assembly Diffs

linux arm

Diffs are based on 2,053,494 contexts (830,101 MinOpts, 1,223,393 FullOpts).

MISSED contexts: base: 71,368 (3.36%), diff: 71,369 (3.36%)

Overall (+34,456 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,772,250 +140
benchmarks.run_pgo.linux.arm.checked.mch 68,605,354 +118
benchmarks.run_tiered.linux.arm.checked.mch 18,108,580 +104
coreclr_tests.run.linux.arm.checked.mch 321,785,900 +10,384
libraries.pmi.linux.arm.checked.mch 49,828,568 +204
libraries_tests.run.linux.arm.Release.mch 244,096,990 +23,358
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,425,864 +8
realworld.run.linux.arm.checked.mch 13,618,802 +140

FullOpts (+34,456 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,410,744 +140
benchmarks.run_pgo.linux.arm.checked.mch 55,931,552 +118
benchmarks.run_tiered.linux.arm.checked.mch 10,724,598 +104
coreclr_tests.run.linux.arm.checked.mch 109,313,464 +10,384
libraries.pmi.linux.arm.checked.mch 49,722,344 +204
libraries_tests.run.linux.arm.Release.mch 122,244,482 +23,358
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,355,126 +8
realworld.run.linux.arm.checked.mch 13,183,502 +140

Example diffs

benchmarks.run.linux.arm.checked.mch

+70 (+3.09%) : 4904.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 25 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> r5 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> r5 this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> [sp+0x48] class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T25] ( 5, 15 ) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T52] ( 4, 7 ) struct ( 8) [sp+0xAC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T70] ( 3, 7 ) ref -> [sp+0x44] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r10 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [sp+0x84] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [sp+0x80]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r10 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [sp+0x84] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [sp+0x80]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [sp+0x7C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> r9 @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T09] ( 10, 38 ) int -> r8 ; V16 loc12 [V16,T43] ( 3, 12 ) ushort -> r3
-; V17 loc13 [V17,T31] ( 7, 14 ) int -> r1
+; V17 loc13 [V17,T31] ( 7, 14 ) int -> lr
; V18 loc14 [V18,T38] ( 3, 12 ) ref -> [sp+0x3C] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [sp+0x78] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T71] ( 3, 6 ) ref -> [sp+0x38] class-hnd spill-single-def <<unknown class>> @@ -202,8 +202,8 @@ ; V191 cse3 [V191,T74] ( 3, 6 ) int -> r1 "CSE - conservative" ; V192 cse4 [V192,T75] ( 3, 6 ) int -> r2 "CSE - conservative" ; V193 cse5 [V193,T87] ( 3, 1.50) int -> r2 "CSE - conservative"
-; V194 cse6 [V194,T02] ( 19,144 ) int -> r4 "CSE - aggressive" -; V195 cse7 [V195,T04] ( 15,120 ) byref -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V194 cse6 [V194,T03] ( 20,128.16) int -> r4 "CSE - aggressive" +; V195 cse7 [V195,T04] ( 16,120 ) byref -> [sp+0x14] spill-single-def "CSE - aggressive"
; V196 cse8 [V196,T06] ( 21, 58 ) int -> r4 "CSE - aggressive" ; V197 cse9 [V197,T12] ( 11, 29 ) byref -> [sp+0x10] multi-def "CSE - moderate" ; @@ -225,7 +225,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr r8, [sp+0xB0] str r8, [sp+0x4C] // [V187 tmp166] cmp r6, 0
- beq G_M36935_IG84
+ beq G_M36935_IG88
cmp r7, 0 bne SHORT G_M36935_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -263,7 +263,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000400000000000000000 {V04}, gcref ; gcrRegs -[r0] ldr r4, [r6+0x04] cmp r4, r10
- bls G_M36935_IG78
+ bls G_M36935_IG82
;; size=8 bbWeight=8 PerfScore 24.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz add r3, r6, 8 @@ -312,10 +312,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ; gcr arg pop 0 mov r8, r0 cmp r8, 0
- blt G_M36935_IG79
+ blt G_M36935_IG83
ldr r3, [sp+0x50] // [V130 tmp109] cmp r8, r3
- bhi G_M36935_IG91
+ bhi G_M36935_IG95
cmp r8, 0 bge SHORT G_M36935_IG10 movs r0, 0 @@ -357,7 +357,7 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr r2, [r5+0x04] ldr r1, [r0+0x04] cmp r2, r1
- bhi G_M36935_IG91
+ bhi G_M36935_IG95
ldr r0, [r0] lsl lr, r2, 1 add lr, r0 @@ -384,7 +384,7 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ; gcr arg pop 0 ldr r2, [sp+0x70] // [V63 tmp42] cmp r8, r2
- bhi G_M36935_IG92
+ bhi G_M36935_IG96
lsl r2, r8, 1 ldr r0, [sp+0x30] // [V64 tmp43] ; byrRegs +[r0] @@ -402,14 +402,14 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, str r0, [r5+0x04] add r10, r8 cmp r10, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG87
lsl r0, r10, 1 ldr r8, [sp+0x14] // [V195 cse7] ; byrRegs +[r8] ldrh r3, [r8+r0] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1 ldrh r2, [r8+r0] cmp r3, r2 @@ -450,7 +450,7 @@ G_M36935_IG19: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V195 V1 ; byrRegs +[r8] ; GC ptr vars +{V04 V12 V195 V197} cmp r3, 123
- bne G_M36935_IG85
+ bne G_M36935_IG89
str r2, [sp+0x84] // [V06 loc2] movs r3, 0 str r3, [sp+0x80] // [V07 loc3] @@ -463,7 +463,7 @@ G_M36935_IG19: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V195 V1 str r12, [sp+0x54] // [V122 tmp101] add r0, r10, -1 cmp r0, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG87
lsl r0, r10, 1 subs r0, r0, 2 ldrh r0, [r8+r0] @@ -499,175 +499,205 @@ G_M36935_IG23: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r ; gcr arg pop 0 sub r9, r9, 48 cmp r9, 10
- bhs G_M36935_IG86
+ bhs G_M36935_IG90
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1 ldrh r0, [r8+r0]
- cmp r0, 125 - beq G_M36935_IG43 - ;; size=48 bbWeight=4 PerfScore 56.00
+ mov r3, r0 + cmp r3, 125 + beq G_M36935_IG47 + ;; size=50 bbWeight=4 PerfScore 60.00
G_M36935_IG24: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz b SHORT G_M36935_IG26 ;; size=2 bbWeight=2 PerfScore 2.00 G_M36935_IG25: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- movs r3, 10 - mul r3, r9, r3 - adds r0, r3, r0 - sub r9, r0, 48
+ movs r0, 10 + mul r0, r9, r0 + adds r3, r0, r3 + sub r9, r3, 48
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ ldrh r3, [r8+r0]
;; size=30 bbWeight=8 PerfScore 72.00 G_M36935_IG26: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- sub r3, r0, 48 - cmp r3, 9
+ sub r0, r3, 48 + cmp r0, 9
bhi SHORT G_M36935_IG27
- movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r9, r3
+ movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r9, r0
blt SHORT G_M36935_IG25 ;; size=20 bbWeight=16 PerfScore 112.00 G_M36935_IG27: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 32
+ cmp r3, 32
bne SHORT G_M36935_IG29 ;; size=4 bbWeight=2 PerfScore 4.00 G_M36935_IG28: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32
+ bls G_M36935_IG91 + lsl r3, r10, 1 + ldrh r3, [r8+r3] + cmp r3, 32
beq SHORT G_M36935_IG28 ;; size=22 bbWeight=16 PerfScore 112.00 G_M36935_IG29: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 44 - ldr r2, [sp+0x80] // [V07 loc3] - bne SHORT G_M36935_IG36
+ cmp r3, 44 + mov r1, r3 + bne SHORT G_M36935_IG33
;; size=6 bbWeight=2 PerfScore 6.00 G_M36935_IG30: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32
+ bls G_M36935_IG91 + lsl r3, r10, 1 + ldrh r3, [r8+r3] + cmp r3, 32
beq SHORT G_M36935_IG30 ;; size=22 bbWeight=16 PerfScore 112.00 G_M36935_IG31: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 45
+ cmp r3, 45
bne SHORT G_M36935_IG32 movs r1, 1 str r1, [sp+0x7C] // [V08 loc4] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - lsl r0, r10, 1 - ldrh r0, [r8+r0]
+ bls G_M36935_IG91 + lsl r3, r10, 1 + ldrh r3, [r8+r3]
;; size=26 bbWeight=2 PerfScore 18.00 G_M36935_IG32: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- subs r0, 48 - mov r2, r0 - cmp r2, 10 - bhs G_M36935_IG86
+ subs r3, 48 + cmp r3, 10 + bhs G_M36935_IG90
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - ;; size=20 bbWeight=2 PerfScore 14.00 -G_M36935_IG33: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz - cmp r10, r4 - bhs G_M36935_IG83 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - sub r1, r0, 48 - cmp r1, 9 - bhi SHORT G_M36935_IG34
...

+70 (+3.40%) : 4896.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T36] ( 5, 15 ) ref -> [sp+0x34] class-hnd single-def <System.String> ; V03 arg3 [V03,T55] ( 4, 7 ) struct ( 8) [sp+0x84] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [sp+0x30] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r10 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [sp+0x5C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [sp+0x58]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r10 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [sp+0x5C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [sp+0x58]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [sp+0x54] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T16] ( 7, 48 ) int -> r9 @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T25] ( 6, 24 ) int -> r8 ; V16 loc12 [V16,T48] ( 3, 12 ) ushort -> r3
-; V17 loc13 [V17,T42] ( 7, 14 ) int -> r1
+; V17 loc13 [V17,T42] ( 7, 14 ) int -> lr
; V18 loc14 [V18,T46] ( 3, 12 ) ref -> r0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [sp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T26] ( 3, 24 ) ref -> [sp+0x28] class-hnd spill-single-def <<unknown class>> @@ -159,8 +159,8 @@ ; V148 cse3 [V148,T47] ( 3, 12 ) ref -> r1 "CSE - conservative" ; V149 cse4 [V149,T49] ( 3, 12 ) int -> r3 "CSE - conservative" ; V150 cse5 [V150,T03] ( 6, 416 ) int -> r4 "CSE - aggressive"
-; V151 cse6 [V151,T12] ( 19, 144 ) int -> r4 "CSE - aggressive" -; V152 cse7 [V152,T13] ( 15, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V151 cse6 [V151,T12] ( 20, 128.16) int -> r4 "CSE - moderate" +; V152 cse7 [V152,T13] ( 16, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V153 cse8 [V153,T10] ( 4, 192 ) int -> r3 "CSE - moderate" ; V154 cse9 [V154,T20] ( 4, 32 ) int -> r3 "CSE - moderate" ; @@ -182,7 +182,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, ldr r8, [sp+0x88] str r8, [sp+0x38] // [V141 tmp119] cmp r7, 0
- beq G_M4730_IG76
+ beq G_M4730_IG80
cmp r6, 0 bne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -220,7 +220,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR ; gcrRegs -[r0] ldr r4, [r7+0x04] cmp r4, r10
- bls G_M4730_IG71
+ bls G_M4730_IG75
;; size=8 bbWeight=8 PerfScore 24.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz str r7, [sp+0x34] // [V02 arg2] @@ -272,10 +272,10 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov r8, r0 cmp r8, 0
- blt G_M4730_IG73
+ blt G_M4730_IG77
ldr r3, [sp+0x3C] // [V98 tmp76] cmp r8, r3
- bhi G_M4730_IG87
+ bhi G_M4730_IG91
cmp r8, 0 bge SHORT G_M4730_IG10 movs r0, 0 @@ -305,14 +305,14 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by ; gcr arg pop 0 add r10, r8 cmp r10, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG79
lsl r0, r10, 1 ldr r8, [sp+0x14] // [V152 cse7] ; byrRegs +[r8] ldrh r3, [r8+r0] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1 ldrh r2, [r8+r0] cmp r3, r2 @@ -360,7 +360,7 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152 ; byrRegs +[r8] ; GC ptr vars +{V13 V152} cmp r3, 123
- bne G_M4730_IG77
+ bne G_M4730_IG81
str r2, [sp+0x5C] // [V06 loc2] movs r3, 0 str r3, [sp+0x58] // [V07 loc3] @@ -373,7 +373,7 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152 str r12, [sp+0x40] // [V88 tmp66] add r0, r10, -1 cmp r0, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG79
lsl r0, r10, 1 subs r0, r0, 2 ldrh r0, [r8+r0] @@ -409,175 +409,205 @@ G_M4730_IG19: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, ; gcr arg pop 0 sub r9, r9, 48 cmp r9, 10
- bhs G_M4730_IG78
+ bhs G_M4730_IG82
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1 ldrh r0, [r8+r0]
- cmp r0, 125 - beq G_M4730_IG39 - ;; size=48 bbWeight=4 PerfScore 56.00
+ mov r3, r0 + cmp r3, 125 + beq G_M4730_IG43 + ;; size=50 bbWeight=4 PerfScore 60.00
G_M4730_IG20: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz b SHORT G_M4730_IG22 ;; size=2 bbWeight=2 PerfScore 2.00 G_M4730_IG21: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- movs r3, 10 - mul r3, r9, r3 - adds r0, r3, r0 - sub r9, r0, 48
+ movs r0, 10 + mul r0, r9, r0 + adds r3, r0, r3 + sub r9, r3, 48
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ ldrh r3, [r8+r0]
;; size=30 bbWeight=8 PerfScore 72.00 G_M4730_IG22: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- sub r3, r0, 48 - cmp r3, 9
+ sub r0, r3, 48 + cmp r0, 9
bhi SHORT G_M4730_IG23
- movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r9, r3
+ movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r9, r0
blt SHORT G_M4730_IG21 ;; size=20 bbWeight=16 PerfScore 112.00 G_M4730_IG23: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 32
+ cmp r3, 32
bne SHORT G_M4730_IG25 ;; size=4 bbWeight=2 PerfScore 4.00 G_M4730_IG24: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32
+ bls G_M4730_IG83 + lsl r3, r10, 1 + ldrh r3, [r8+r3] + cmp r3, 32
beq SHORT G_M4730_IG24 ;; size=22 bbWeight=16 PerfScore 112.00 G_M4730_IG25: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 44 - ldr r2, [sp+0x58] // [V07 loc3] - bne SHORT G_M4730_IG32
+ cmp r3, 44 + mov r1, r3 + bne SHORT G_M4730_IG29
;; size=6 bbWeight=2 PerfScore 6.00 G_M4730_IG26: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32
+ bls G_M4730_IG83 + lsl r3, r10, 1 + ldrh r3, [r8+r3] + cmp r3, 32
beq SHORT G_M4730_IG26 ;; size=22 bbWeight=16 PerfScore 112.00 G_M4730_IG27: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 45
+ cmp r3, 45
bne SHORT G_M4730_IG28 movs r1, 1 str r1, [sp+0x54] // [V08 loc4] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79 - lsl r0, r10, 1 - ldrh r0, [r8+r0]
+ bls G_M4730_IG83 + lsl r3, r10, 1 + ldrh r3, [r8+r3]
;; size=26 bbWeight=2 PerfScore 18.00 G_M4730_IG28: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- subs r0, 48 - mov r2, r0 - cmp r2, 10 - bhs G_M4730_IG78
+ subs r3, 48 + cmp r3, 10 + bhs G_M4730_IG82
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79 - ;; size=20 bbWeight=2 PerfScore 14.00 -G_M4730_IG29: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - cmp r10, r4 - bhs G_M4730_IG75 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - sub r1, r0, 48 - cmp r1, 9 - bhi SHORT G_M4730_IG30 - movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r2, r1 - blt SHORT G_M4730_IG35 - ;; size=34 bbWeight=16 PerfScore 176.00 -G_M4730_IG30: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - cmp r0, 32 - bne SHORT G_M4730_IG32 - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M4730_IG31: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - add r10, r10, 1 - cmp r4, r10 - bls G_M4730_IG79 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32 - beq SHORT G_M4730_IG31 - ;; size=22 bbWeight=16 PerfScore 112.00 -G_M4730_IG32: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - cmp r0, 125 - beq SHORT G_M4730_IG34 - cmp r0, 58 - bne G_M4730_IG80 - mov r1, r10
...

benchmarks.run_pgo.linux.arm.checked.mch

+60 (+2.33%) : 6243.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)

@@ -8,14 +8,14 @@ ; 29 inlinees with PGO data; 37 single block inlinees; 28 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> [sp+0x54] this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> [sp+0x54] this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> r7 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T25] ( 5, 15 ) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T52] ( 4, 7 ) struct ( 8) [sp+0xC4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T70] ( 3, 7 ) ref -> [sp+0x50] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r10 ld-addr-op -; V06 loc2 [V06,T01] ( 32,260 ) ushort -> [sp+0x9C] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [sp+0x98]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r10 ld-addr-op +; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [sp+0x9C] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [sp+0x98]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [sp+0x94] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> r8 @@ -223,8 +223,8 @@ ; V212 cse3 [V212,T74] ( 3, 6 ) int -> r1 "CSE - conservative" ; V213 cse4 [V213,T75] ( 3, 6 ) int -> r0 "CSE - conservative" ; V214 cse5 [V214,T87] ( 3, 1.50) int -> r1 "CSE - conservative"
-; V215 cse6 [V215,T02] ( 19,144 ) int -> r4 "CSE - aggressive" -; V216 cse7 [V216,T04] ( 15,120 ) byref -> [sp+0x20] spill-single-def "CSE - aggressive"
+; V215 cse6 [V215,T03] ( 20,128.16) int -> r4 "CSE - aggressive" +; V216 cse7 [V216,T04] ( 16,120 ) byref -> [sp+0x20] spill-single-def "CSE - aggressive"
; V217 cse8 [V217,T06] ( 21, 58 ) int -> r8 "CSE - aggressive" ; V218 cse9 [V218,T12] ( 11, 29 ) byref -> [sp+0x1C] multi-def "CSE - moderate" ; TEMP_02 ref -> [r11-0xA4] @@ -250,7 +250,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr r8, [sp+0xC8] str r8, [sp+0x58] // [V208 tmp187] cmp r6, 0
- beq G_M36935_IG75
+ beq G_M36935_IG78
cmp r7, 0 bne SHORT G_M36935_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -288,7 +288,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000400000000000000000 {V04}, gcref ; gcrRegs -[r0] ldr r4, [r6+0x04] cmp r4, r10
- bls G_M36935_IG70
+ bls G_M36935_IG73
;; size=8 bbWeight=8 PerfScore 24.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz add lr, r6, 8 @@ -303,7 +303,7 @@ G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, sub r3, r4, r10 str r3, [sp+0x88] // [V30 tmp9] cmp r3, 0
- blt G_M36935_IG76
+ blt G_M36935_IG79
;; size=32 bbWeight=4 PerfScore 36.00 G_M36935_IG08: ; bbWeight=4, gcVars=000000400000000008000010 {V04 V31 V216}, gcrefRegs=00C0 {r6 r7}, byrefRegs=1020 {r5 r12}, gcvars, byref, isz ; byrRegs -[lr] @@ -327,10 +327,10 @@ G_M36935_IG08: ; bbWeight=4, gcVars=000000400000000008000010 {V04 V31 V21 mov r3, r0 str r3, [sp+0x90] // [V15 loc11] cmp r3, 0
- blt G_M36935_IG71
+ blt G_M36935_IG74
ldr r2, [sp+0x5C] // [V151 tmp130] cmp r3, r2
- bhi G_M36935_IG94
+ bhi G_M36935_IG97
ldr r0, [r5+0x04] ldr r1, [r5+0x0C] subs r1, r1, r3 @@ -359,7 +359,7 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr r0, [r5+0x04] ldr r1, [r2+0x04] cmp r0, r1
- bhi G_M36935_IG94
+ bhi G_M36935_IG97
ldr r2, [r2] lsl r12, r0, 1 add r12, r2 @@ -369,12 +369,12 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, subs r1, r1, r0 str r1, [sp+0x84] // [V68 tmp47] cmp r1, 0
- blt G_M36935_IG77
+ blt G_M36935_IG80
;; size=42 bbWeight=4 PerfScore 60.00 G_M36935_IG11: ; bbWeight=4, gcVars=000000400000000810001010 {V04 V69 V150 V216 V218}, gcrefRegs=00C0 {r6 r7}, byrefRegs=1020 {r5 r12}, gcvars, byref, isz ; byrRegs -[r2 lr] cmp r3, r1
- bhi G_M36935_IG95
+ bhi G_M36935_IG98
lsls r2, r3, 1 mov r0, r12 ; byrRegs +[r0] @@ -394,14 +394,14 @@ G_M36935_IG11: ; bbWeight=4, gcVars=000000400000000810001010 {V04 V69 V15 str r0, [r5+0x04] add r10, r3 cmp r10, r4
- bhs G_M36935_IG74
+ bhs G_M36935_IG77
lsl r0, r10, 1 ldr r2, [sp+0x20] // [V216 cse7] ; byrRegs +[r2] ldrh r3, [r2+r0] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl r0, r10, 1 ldrh lr, [r2+r0] cmp r3, lr @@ -442,19 +442,19 @@ G_M36935_IG15: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V216 V2 ; byrRegs +[r2] ; GC ptr vars +{V04 V12 V216 V218} cmp r3, 123
- bne G_M36935_IG88
+ bne G_M36935_IG91
movs r3, 0 mov r12, 0 movs r1, 0 movs r0, 0 add r8, r10, -1 cmp r8, r4
- bhs G_M36935_IG74
+ bhs G_M36935_IG77
lsl r8, r10, 1 sub r8, r8, 2 ldrh r8, [r2+r8] cmp r8, 123
- bne G_M36935_IG78
+ bne G_M36935_IG81
cmp lr, 123 beq SHORT G_M36935_IG18 ;; size=52 bbWeight=4 PerfScore 64.00 @@ -462,14 +462,14 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r ; byrRegs +[r1] sub r8, lr, 48 cmp r8, 10
- bhs G_M36935_IG89
+ bhs G_M36935_IG92
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl lr, r10, 1 ldrh lr, [r2+lr] cmp lr, 125
- beq G_M36935_IG37
+ beq G_M36935_IG40
;; size=38 bbWeight=4 PerfScore 40.00 G_M36935_IG17: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz b SHORT G_M36935_IG20 @@ -483,7 +483,7 @@ G_M36935_IG18: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r str r12, [sp+0x94] // [V08 loc4] str r1, [sp+0x28] // [V142 tmp121] ; GC ptr vars +{V142}
- b SHORT G_M36935_IG79
+ b SHORT G_M36935_IG82
;; size=18 bbWeight=2 PerfScore 14.00 G_M36935_IG19: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz ; GC ptr vars -{V00 V12 V142} @@ -493,7 +493,7 @@ G_M36935_IG19: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r sub r8, lr, 48 add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl lr, r10, 1 ldrh lr, [r2+lr] mov r9, lr @@ -516,7 +516,7 @@ G_M36935_IG21: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r G_M36935_IG22: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl lr, r10, 1 ldrh lr, [r2+lr] mov r9, lr @@ -525,12 +525,12 @@ G_M36935_IG22: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 ;; size=26 bbWeight=16 PerfScore 128.00 G_M36935_IG23: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz cmp r9, 44
- bne SHORT G_M36935_IG33
+ bne SHORT G_M36935_IG27
;; size=6 bbWeight=2 PerfScore 4.00 G_M36935_IG24: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl r3, r10, 1 ldrh r9, [r2+r3] cmp r9, 32 @@ -543,7 +543,7 @@ G_M36935_IG25: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r str r12, [sp+0x94] // [V08 loc4] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG90
+ bls G_M36935_IG93
lsl r3, r10, 1 ldrh r3, [r2+r3] mov r9, r3 @@ -553,69 +553,44 @@ G_M36935_IG26: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r sub r3, r9, 48 mov r9, r3 cmp r9, 10
- bhs G_M36935_IG89
+ bhs G_M36935_IG92
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG90 - ;; size=24 bbWeight=2 PerfScore 14.00 -G_M36935_IG27: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz - cmp r10, r4 - bhs G_M36935_IG74
+ bls G_M36935_IG93 + cmp r10, 0 + blt SHORT G_M36935_IG32 + b SHORT G_M36935_IG29 + ;; size=32 bbWeight=2 PerfScore 20.00 +G_M36935_IG27: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz + mov lr, r3 + mov r3, r9 + mov r9, lr + b SHORT G_M36935_IG35 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M36935_IG28: ; bbWeight=7.92, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz + mov lr, 10 + mul lr, r9, lr + add r3, lr + sub r9, r3, 48 + add r10, r10, 1 + cmp r4, r10 + bls G_M36935_IG93 + ;; size=24 bbWeight=7.92 PerfScore 55.44 +G_M36935_IG29: ; bbWeight=15.84, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz
lsl r3, r10, 1 ldrh r3, [r2+r3] sub lr, r3, 48 cmp lr, 9
- bhi SHORT G_M36935_IG28
+ bhi SHORT G_M36935_IG33
movw lr, 0xd1ff movt lr, 0xd1ff cmp r9, lr
- blt SHORT G_M36935_IG34 - ;; size=34 bbWeight=16 PerfScore 176.00 -G_M36935_IG28: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0026 {r1 r2 r5}, byref, isz - cmp r3, 32
...

+58 (+2.53%) : 22866.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T36] ( 5, 15 ) ref -> r7 class-hnd single-def <System.String> ; V03 arg3 [V03,T55] ( 4, 7 ) struct ( 8) [sp+0x94] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [sp+0x3C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r10 ld-addr-op -; V06 loc2 [V06,T07] ( 32, 260 ) ushort -> [sp+0x6C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [sp+0x68]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r10 ld-addr-op +; V06 loc2 [V06,T07] ( 35, 260 ) ushort -> [sp+0x6C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [sp+0x68]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [sp+0x64] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T16] ( 7, 48 ) int -> [sp+0x60] @@ -169,8 +169,8 @@ ; V158 cse3 [V158,T47] ( 3, 12 ) ref -> r1 "CSE - conservative" ; V159 cse4 [V159,T49] ( 3, 12 ) int -> r3 "CSE - conservative" ; V160 cse5 [V160,T03] ( 6, 416 ) int -> [sp+0x40] spill-single-def "CSE - aggressive"
-; V161 cse6 [V161,T12] ( 19, 144 ) int -> r4 "CSE - aggressive" -; V162 cse7 [V162,T13] ( 15, 120 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V161 cse6 [V161,T12] ( 20, 128.16) int -> r4 "CSE - moderate" +; V162 cse7 [V162,T13] ( 16, 120 ) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
; V163 cse8 [V163,T10] ( 4, 192 ) int -> r3 "CSE - moderate" ; V164 cse9 [V164,T20] ( 4, 32 ) int -> lr "CSE - moderate" ; TEMP_02 ref -> [r11-0x74] @@ -196,7 +196,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, ldr r8, [sp+0x98] str r8, [sp+0x44] // [V151 tmp129] cmp r7, 0
- beq G_M4730_IG74
+ beq G_M4730_IG77
cmp r6, 0 bne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -234,7 +234,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR ; gcrRegs -[r0] ldr r4, [r7+0x04] cmp r4, r10
- bls G_M4730_IG69
+ bls G_M4730_IG72
;; size=8 bbWeight=8 PerfScore 24.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz add lr, r7, 8 @@ -249,7 +249,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, sub r3, r4, r10 str r3, [sp+0x58] // [V32 tmp10] cmp r3, 0
- blt G_M4730_IG75
+ blt G_M4730_IG78
;; size=32 bbWeight=4 PerfScore 36.00 G_M4730_IG08: ; bbWeight=4, gcVars=000000020000008000002000 {V04 V33 V162}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1000 {r12}, gcvars, byref, isz ; byrRegs -[lr] @@ -269,10 +269,10 @@ G_M4730_IG08: ; bbWeight=4, gcVars=000000020000008000002000 {V04 V33 V162 ; gcr arg pop 0 mov r8, r0 cmp r8, 0
- blt G_M4730_IG71
+ blt G_M4730_IG74
ldr r3, [sp+0x48] // [V108 tmp86] cmp r8, r3
- bhi G_M4730_IG91
+ bhi G_M4730_IG94
mov r0, r5 ; gcrRegs +[r0] ldr r1, [sp+0x20] // [V107 tmp85] @@ -288,14 +288,14 @@ G_M4730_IG08: ; bbWeight=4, gcVars=000000020000008000002000 {V04 V33 V162 ; gcr arg pop 0 add r10, r8 cmp r10, r4
- bhs G_M4730_IG73
+ bhs G_M4730_IG76
lsl r0, r10, 1 ldr r8, [sp+0x1C] // [V162 cse7] ; byrRegs +[r8] ldrh r3, [r8+r0] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r0, r10, 1 ldrh r2, [r8+r0] cmp r3, r2 @@ -340,19 +340,19 @@ G_M4730_IG12: ; bbWeight=4, gcVars=000000020000000000002000 {V04 V162}, g ; byrRegs +[r8] ; GC ptr vars +{V13 V162} cmp r3, 123
- bne G_M4730_IG81
+ bne G_M4730_IG84
movs r3, 0 mov lr, 0 mov r12, 0 movs r1, 0 add r0, r10, -1 cmp r0, r4
- bhs G_M4730_IG73
+ bhs G_M4730_IG76
lsl r0, r10, 1 subs r0, r0, 2 ldrh r0, [r8+r0] cmp r0, 123
- bne G_M4730_IG76
+ bne G_M4730_IG79
cmp r2, 123 beq SHORT G_M4730_IG15 ;; size=48 bbWeight=4 PerfScore 64.00 @@ -360,14 +360,14 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 ; byrRegs +[r12] sub r0, r2, 48 cmp r0, 10
- bhs G_M4730_IG82
+ bhs G_M4730_IG85
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r2, r10, 1 ldrh r2, [r8+r2] cmp r2, 125
- beq G_M4730_IG34
+ beq G_M4730_IG37
;; size=34 bbWeight=4 PerfScore 40.00 G_M4730_IG14: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz b SHORT G_M4730_IG17 @@ -379,7 +379,7 @@ G_M4730_IG15: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 str r1, [sp+0x4C] // [V98 tmp76] str r12, [sp+0x24] // [V97 tmp75] ; GC ptr vars +{V97}
- b SHORT G_M4730_IG77
+ b SHORT G_M4730_IG80
;; size=16 bbWeight=2 PerfScore 12.00 G_M4730_IG16: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz ; GC ptr vars -{V13 V97} @@ -390,7 +390,7 @@ G_M4730_IG16: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 mov r9, r0 add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r0, r10, 1 ldrh r2, [r8+r0] mov r0, r9 @@ -412,7 +412,7 @@ G_M4730_IG18: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 G_M4730_IG19: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r2, r10, 1 ldrh r2, [r8+r2] mov r9, r2 @@ -421,12 +421,12 @@ G_M4730_IG19: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r ;; size=26 bbWeight=16 PerfScore 128.00 G_M4730_IG20: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz cmp r9, 44
- bne SHORT G_M4730_IG30
+ bne SHORT G_M4730_IG24
;; size=6 bbWeight=2 PerfScore 4.00 G_M4730_IG21: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r3, r10, 1 ldrh r9, [r8+r3] cmp r9, 32 @@ -439,7 +439,7 @@ G_M4730_IG22: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 str lr, [sp+0x64] // [V08 loc4] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG83
+ bls G_M4730_IG86
lsl r3, r10, 1 ldrh r3, [r8+r3] mov r9, r3 @@ -449,69 +449,44 @@ G_M4730_IG23: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 sub r3, r9, 48 mov r9, r3 cmp r9, 10
- bhs G_M4730_IG82
+ bhs G_M4730_IG85
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG83 - ;; size=24 bbWeight=2 PerfScore 14.00 -G_M4730_IG24: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz - cmp r10, r4 - bhs G_M4730_IG73
+ bls G_M4730_IG86 + cmp r10, 0 + blt SHORT G_M4730_IG29 + b SHORT G_M4730_IG26 + ;; size=32 bbWeight=2 PerfScore 20.00 +G_M4730_IG24: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz + mov r2, r3 + mov r3, r9 + mov r9, r2 + b SHORT G_M4730_IG32 + ;; size=8 bbWeight=1 PerfScore 4.00 +G_M4730_IG25: ; bbWeight=7.92, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz + movs r2, 10 + mul r2, r9, r2 + adds r3, r2, r3 + sub r9, r3, 48 + add r10, r10, 1 + cmp r4, r10 + bls G_M4730_IG86 + ;; size=22 bbWeight=7.92 PerfScore 55.44 +G_M4730_IG26: ; bbWeight=15.84, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
lsl r3, r10, 1 ldrh r3, [r8+r3] sub r2, r3, 48 cmp r2, 9
- bhi SHORT G_M4730_IG25
+ bhi SHORT G_M4730_IG30
movw r2, 0xd1ff movt r2, 0xd1ff cmp r9, r2
- blt SHORT G_M4730_IG31 - ;; size=34 bbWeight=16 PerfScore 176.00 -G_M4730_IG25: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz - cmp r3, 32 - bne SHORT G_M4730_IG27 - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M4730_IG26: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz - add r10, r10, 1 - cmp r4, r10 - bls G_M4730_IG83 - lsl r3, r10, 1 - ldrh r3, [r8+r3] - cmp r3, 32 - beq SHORT G_M4730_IG26 - ;; size=22 bbWeight=16 PerfScore 112.00
+ blt SHORT G_M4730_IG25 + ;; size=28 bbWeight=15.84 PerfScore 142.56
G_M4730_IG27: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz
- cmp r3, 125 - beq SHORT G_M4730_IG29 - cmp r3, 58 - bne G_M4730_IG84 - mov r2, r10 - ;; size=12 bbWeight=2 PerfScore 10.00 -G_M4730_IG28: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz - ; byrRegs -[r12] - add r10, r10, 1 - cmp r4, r10 - bls G_M4730_IG83 - lsl r3, r10, 1 - ldrh r3, [r8+r3] - cmp r3, 125 - beq SHORT G_M4730_IG32 - cmp r3, 123
...

benchmarks.run_tiered.linux.arm.checked.mch

+52 (+2.19%) : 9506.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 37 single block inlinees; 58 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> r5 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> r5 this single-def
; V01 arg1 [V01,T35] ( 7, 11.50) ref -> r7 class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T26] ( 5, 15 ) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T53] ( 4, 7 ) struct ( 8) [sp+0xBC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T71] ( 3, 7 ) ref -> [sp+0x4C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r10 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [sp+0x94] -; V07 loc3 [V07,T06] ( 12, 62 ) int -> [sp+0x90]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r10 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [sp+0x94] +; V07 loc3 [V07,T06] ( 15, 62 ) int -> [sp+0x90]
; V08 loc4 [V08,T25] ( 5, 18 ) ubyte -> [sp+0x8C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T08] ( 7, 48 ) int -> [sp+0x88] @@ -224,8 +224,8 @@ ; V213 cse3 [V213,T75] ( 3, 6 ) int -> r1 "CSE - conservative" ; V214 cse4 [V214,T76] ( 3, 6 ) int -> r1 "CSE - conservative" ; V215 cse5 [V215,T88] ( 3, 1.50) int -> r3 "CSE - conservative"
-; V216 cse6 [V216,T02] ( 19,144 ) int -> r4 "CSE - aggressive" -; V217 cse7 [V217,T04] ( 15,120 ) byref -> [sp+0x18] spill-single-def "CSE - aggressive"
+; V216 cse6 [V216,T03] ( 20,128.16) int -> r4 "CSE - aggressive" +; V217 cse7 [V217,T04] ( 16,120 ) byref -> [sp+0x18] spill-single-def "CSE - aggressive"
; V218 cse8 [V218,T07] ( 21, 58 ) int -> r4 "CSE - aggressive" ; V219 cse9 [V219,T13] ( 11, 29 ) byref -> [sp+0x14] multi-def "CSE - moderate" ; V220 cse10 [V220,T05] ( 35, 65.50) ref -> registers multi-def "CSE - aggressive" @@ -248,7 +248,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr r8, [sp+0xC0] str r8, [sp+0x50] // [V209 tmp188] cmp r6, 0
- beq G_M36935_IG84
+ beq G_M36935_IG87
cmp r7, 0 bne SHORT G_M36935_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -286,7 +286,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000800000000000000000 {V04}, gcref ; gcrRegs -[r0] ldr r4, [r6+0x04] cmp r4, r10
- bls G_M36935_IG79
+ bls G_M36935_IG82
;; size=8 bbWeight=8 PerfScore 24.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz add r3, r6, 8 @@ -345,10 +345,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ; gcr arg pop 0 mov r8, r0 cmp r8, 0
- blt G_M36935_IG80
+ blt G_M36935_IG83
ldr r3, [sp+0x54] // [V152 tmp131] cmp r8, r3
- bhi G_M36935_IG91
+ bhi G_M36935_IG94
ldr r0, [r5+0x04] ldr r1, [r5+0x0C] sub r1, r1, r8 @@ -376,7 +376,7 @@ G_M36935_IG11: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr r1, [r5+0x04] ldr r2, [r0+0x04] cmp r1, r2
- bhi G_M36935_IG91
+ bhi G_M36935_IG94
ldr r0, [r0] lsl lr, r1, 1 add lr, r0 @@ -408,7 +408,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=000000800000001020002010 {V04 V70 V15 G_M36935_IG13: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=4020 {r5 lr}, byref, isz ldr r2, [sp+0x7C] // [V69 tmp48] cmp r8, r2
- bhi G_M36935_IG92
+ bhi G_M36935_IG95
lsl r2, r8, 1 mov r0, lr ; byrRegs +[r0] @@ -427,14 +427,14 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=4020 {r5 l str r0, [r5+0x04] add r10, r8 cmp r10, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG86
lsl r0, r10, 1 ldr r8, [sp+0x18] // [V217 cse7] ; byrRegs +[r8] ldrh r3, [r8+r0] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r0, r10, 1 ldrh r2, [r8+r0] cmp r3, r2 @@ -483,7 +483,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=000000800000000000002010 {V04 V217 V2 ; byrRegs +[r8] ; GC ptr vars +{V04 V13 V217 V219} cmp r3, 123
- bne G_M36935_IG85
+ bne G_M36935_IG88
movs r3, 0 str r3, [sp+0x90] // [V07 loc3] mov lr, 0 @@ -495,7 +495,7 @@ G_M36935_IG18: ; bbWeight=4, gcVars=000000800000000000002010 {V04 V217 V2 str r1, [sp+0x58] // [V144 tmp123] add r0, r10, -1 cmp r0, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG86
lsl r0, r10, 1 subs r0, r0, 2 ldrh r0, [r8+r0] @@ -538,10 +538,10 @@ G_M36935_IG22: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r ldr r2, [sp+0x94] // [V06 loc2] sub r0, r2, 48 cmp r0, 10
- bhs G_M36935_IG86
+ bhs G_M36935_IG89
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r2, r10, 1 ldrh r2, [r8+r2] cmp r2, 125 @@ -553,7 +553,7 @@ G_M36935_IG23: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r G_M36935_IG24: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz ldr r12, [sp+0x20] // [V143 tmp122] ; byrRegs +[r12]
- b SHORT G_M36935_IG43
+ b SHORT G_M36935_IG46
;; size=6 bbWeight=2 PerfScore 4.00 G_M36935_IG25: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz ; byrRegs -[r12] @@ -564,13 +564,11 @@ G_M36935_IG25: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r str r0, [sp+0x88] // [V10 loc6] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r0, r10, 1 ldrh r2, [r8+r0]
- mov r0, r2 - mov r2, r0
ldr r0, [sp+0x88] // [V10 loc6]
- ;; size=40 bbWeight=8 PerfScore 104.00
+ ;; size=36 bbWeight=8 PerfScore 88.00
G_M36935_IG26: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz sub r9, r2, 48 cmp r9, 9 @@ -588,7 +586,7 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r G_M36935_IG28: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r2, r10, 1 ldrh r2, [r8+r2] mov r9, r2 @@ -598,12 +596,12 @@ G_M36935_IG28: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 G_M36935_IG29: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz cmp r9, 44 mov r3, r9
- bne SHORT G_M36935_IG39
+ bne SHORT G_M36935_IG33
;; size=8 bbWeight=2 PerfScore 6.00 G_M36935_IG30: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r3, r10, 1 ldrh r9, [r8+r3] cmp r9, 32 @@ -616,7 +614,7 @@ G_M36935_IG31: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r str lr, [sp+0x8C] // [V08 loc4] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG90
lsl r3, r10, 1 ldrh r3, [r8+r3] mov r9, r3 @@ -625,73 +623,42 @@ G_M36935_IG32: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r sub r3, r9, 48 mov r9, r3 cmp r9, 10
- bhs G_M36935_IG86
+ bhs G_M36935_IG89
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - ;; size=24 bbWeight=2 PerfScore 14.00 -G_M36935_IG33: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz - cmp r10, r4 - bhs G_M36935_IG83
+ bls G_M36935_IG90 + cmp r10, 0 + blt SHORT G_M36935_IG38 + b SHORT G_M36935_IG35 + ;; size=32 bbWeight=2 PerfScore 20.00 +G_M36935_IG33: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz + ldr r9, [sp+0x90] // [V07 loc3] + b SHORT G_M36935_IG41 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M36935_IG34: ; bbWeight=7.92, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz + movs r2, 10 + mul r2, r9, r2 + adds r3, r2, r3 + sub r9, r3, 48 + add r10, r10, 1 + cmp r4, r10 + bls G_M36935_IG90 + ;; size=22 bbWeight=7.92 PerfScore 55.44 +G_M36935_IG35: ; bbWeight=15.84, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
lsl r3, r10, 1 ldrh r3, [r8+r3] sub r2, r3, 48 cmp r2, 9
- bhi SHORT G_M36935_IG34
+ bhi SHORT G_M36935_IG39
movw r2, 0xd1ff movt r2, 0xd1ff cmp r9, r2
- blt SHORT G_M36935_IG40 - ;; size=34 bbWeight=16 PerfScore 176.00 -G_M36935_IG34: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz - cmp r3, 32 - bne SHORT G_M36935_IG36 - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M36935_IG35: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz - add r10, r10, 1 - cmp r4, r10 - bls G_M36935_IG87 - lsl r3, r10, 1 - ldrh r3, [r8+r3] - cmp r3, 32 - beq SHORT G_M36935_IG35 - ;; size=22 bbWeight=16 PerfScore 112.00
+ blt SHORT G_M36935_IG34 + ;; size=28 bbWeight=15.84 PerfScore 142.56
G_M36935_IG36: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r3, 125 - ldr r12, [sp+0x20] // [V143 tmp122] - ; byrRegs +[r12] - beq SHORT G_M36935_IG38 - cmp r3, 58 - bne G_M36935_IG88
...

+52 (+2.39%) : 15946.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T36] ( 5, 15 ) ref -> r7 class-hnd single-def <System.String> ; V03 arg3 [V03,T55] ( 4, 7 ) struct ( 8) [sp+0x8C] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [sp+0x34] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r10 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [sp+0x64] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [sp+0x60]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r10 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [sp+0x64] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [sp+0x60]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [sp+0x5C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T16] ( 7, 48 ) int -> [sp+0x58] @@ -169,8 +169,8 @@ ; V158 cse3 [V158,T47] ( 3, 12 ) ref -> r1 "CSE - conservative" ; V159 cse4 [V159,T49] ( 3, 12 ) int -> r3 "CSE - conservative" ; V160 cse5 [V160,T03] ( 6, 416 ) int -> [sp+0x38] spill-single-def "CSE - aggressive"
-; V161 cse6 [V161,T12] ( 19, 144 ) int -> r4 "CSE - aggressive" -; V162 cse7 [V162,T13] ( 15, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V161 cse6 [V161,T12] ( 20, 128.16) int -> r4 "CSE - moderate" +; V162 cse7 [V162,T13] ( 16, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V163 cse8 [V163,T10] ( 4, 192 ) int -> r3 "CSE - moderate" ; V164 cse9 [V164,T20] ( 4, 32 ) int -> lr "CSE - moderate" ; @@ -192,7 +192,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, ldr r8, [sp+0x90] str r8, [sp+0x3C] // [V151 tmp129] cmp r7, 0
- beq G_M4730_IG79
+ beq G_M4730_IG82
cmp r6, 0 bne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -230,7 +230,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR ; gcrRegs -[r0] ldr r4, [r7+0x04] cmp r4, r10
- bls G_M4730_IG74
+ bls G_M4730_IG77
;; size=8 bbWeight=8 PerfScore 24.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz add r3, r7, 8 @@ -283,10 +283,10 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, ; gcr arg pop 0 mov r8, r0 cmp r8, 0
- blt G_M4730_IG76
+ blt G_M4730_IG79
ldr r3, [sp+0x40] // [V108 tmp86] cmp r8, r3
- bhi G_M4730_IG90
+ bhi G_M4730_IG93
mov r0, r5 ; gcrRegs +[r0] ldr r1, [sp+0x18] // [V107 tmp85] @@ -302,14 +302,14 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, ; gcr arg pop 0 add r10, r8 cmp r10, r4
- bhs G_M4730_IG78
+ bhs G_M4730_IG81
lsl r0, r10, 1 ldr r8, [sp+0x14] // [V162 cse7] ; byrRegs +[r8] ldrh r3, [r8+r0] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r0, r10, 1 ldrh r2, [r8+r0] cmp r3, r2 @@ -354,7 +354,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000002000 {V04 V162}, g ; byrRegs +[r8] ; GC ptr vars +{V13 V162} cmp r3, 123
- bne G_M4730_IG80
+ bne G_M4730_IG83
movs r3, 0 str r3, [sp+0x60] // [V07 loc3] mov lr, 0 @@ -366,7 +366,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000002000 {V04 V162}, g str r1, [sp+0x44] // [V98 tmp76] add r0, r10, -1 cmp r0, r4
- bhs G_M4730_IG78
+ bhs G_M4730_IG81
lsl r0, r10, 1 subs r0, r0, 2 ldrh r0, [r8+r0] @@ -407,10 +407,10 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8 ldr r2, [sp+0x64] // [V06 loc2] sub r0, r2, 48 cmp r0, 10
- bhs G_M4730_IG81
+ bhs G_M4730_IG84
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r2, r10, 1 ldrh r2, [r8+r2] cmp r2, 125 @@ -422,7 +422,7 @@ G_M4730_IG18: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8 G_M4730_IG19: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz ldr r12, [sp+0x1C] // [V97 tmp75] ; byrRegs +[r12]
- b SHORT G_M4730_IG38
+ b SHORT G_M4730_IG41
;; size=6 bbWeight=2 PerfScore 4.00 G_M4730_IG20: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz ; byrRegs -[r12] @@ -433,13 +433,11 @@ G_M4730_IG20: ; bbWeight=8, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8 str r0, [sp+0x58] // [V10 loc6] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r0, r10, 1 ldrh r2, [r8+r0]
- mov r0, r2 - mov r2, r0
ldr r0, [sp+0x58] // [V10 loc6]
- ;; size=40 bbWeight=8 PerfScore 104.00
+ ;; size=36 bbWeight=8 PerfScore 88.00
G_M4730_IG21: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz sub r9, r2, 48 cmp r9, 9 @@ -457,7 +455,7 @@ G_M4730_IG22: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8 G_M4730_IG23: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r2, r10, 1 ldrh r2, [r8+r2] mov r9, r2 @@ -467,12 +465,12 @@ G_M4730_IG23: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r G_M4730_IG24: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz cmp r9, 44 mov r3, r9
- bne SHORT G_M4730_IG34
+ bne SHORT G_M4730_IG28
;; size=8 bbWeight=2 PerfScore 6.00 G_M4730_IG25: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r3, r10, 1 ldrh r9, [r8+r3] cmp r9, 32 @@ -485,7 +483,7 @@ G_M4730_IG26: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8 str lr, [sp+0x5C] // [V08 loc4] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG82
+ bls G_M4730_IG85
lsl r3, r10, 1 ldrh r3, [r8+r3] mov r9, r3 @@ -494,73 +492,42 @@ G_M4730_IG27: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8 sub r3, r9, 48 mov r9, r3 cmp r9, 10
- bhs G_M4730_IG81
+ bhs G_M4730_IG84
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG82 - ;; size=24 bbWeight=2 PerfScore 14.00 -G_M4730_IG28: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz - cmp r10, r4 - bhs G_M4730_IG78
+ bls G_M4730_IG85 + cmp r10, 0 + blt SHORT G_M4730_IG33 + b SHORT G_M4730_IG30 + ;; size=32 bbWeight=2 PerfScore 20.00 +G_M4730_IG28: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz + ldr r9, [sp+0x60] // [V07 loc3] + b SHORT G_M4730_IG36 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz + movs r2, 10 + mul r2, r9, r2 + adds r3, r2, r3 + sub r9, r3, 48 + add r10, r10, 1 + cmp r4, r10 + bls G_M4730_IG85 + ;; size=22 bbWeight=7.92 PerfScore 55.44 +G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
lsl r3, r10, 1 ldrh r3, [r8+r3] sub r2, r3, 48 cmp r2, 9
- bhi SHORT G_M4730_IG29
+ bhi SHORT G_M4730_IG34
movw r2, 0xd1ff movt r2, 0xd1ff cmp r9, r2
- blt SHORT G_M4730_IG35 - ;; size=34 bbWeight=16 PerfScore 176.00 -G_M4730_IG29: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz - cmp r3, 32 - bne SHORT G_M4730_IG31 - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M4730_IG30: ; bbWeight=16, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz - add r10, r10, 1 - cmp r4, r10 - bls G_M4730_IG82 - lsl r3, r10, 1 - ldrh r3, [r8+r3] - cmp r3, 32 - beq SHORT G_M4730_IG30 - ;; size=22 bbWeight=16 PerfScore 112.00
+ blt SHORT G_M4730_IG29 + ;; size=28 bbWeight=15.84 PerfScore 142.56
G_M4730_IG31: ; bbWeight=2, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, byref, isz
- cmp r3, 125 - ldr r12, [sp+0x1C] // [V97 tmp75] - ; byrRegs +[r12] - beq SHORT G_M4730_IG33 - cmp r3, 58 - bne G_M4730_IG83 - mov r2, r10 - ;; size=16 bbWeight=2 PerfScore 12.00 -G_M4730_IG32: ; bbWeight=16, gcVars=000000020000000000002000 {V04 V162}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, gcvars, byref, isz - ; byrRegs -[r12] - ; GC ptr vars -{V97} - add r10, r10, 1 - cmp r4, r10 - bls G_M4730_IG82 - lsl r3, r10, 1 - ldrh r3, [r8+r3] - mov r1, r3 - cmp r1, 125 - beq SHORT G_M4730_IG36 - cmp r1, 123 - beq G_M4730_IG83 - b SHORT G_M4730_IG32 - ;; size=32 bbWeight=16 PerfScore 176.00 -G_M4730_IG33: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=1100 {r8 r12}, byref, isz - ; byrRegs +[r12] - str r9, [sp+0x60] // [V07 loc3] - b SHORT G_M4730_IG38 - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M4730_IG34: ; bbWeight=1, gcVars=000000020000000020002000 {V04 V97 V162}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0100 {r8}, gcvars, byref, isz - ; byrRegs -[r12]
...

coreclr_tests.run.linux.arm.checked.mch

+0 (0.00%) : 417281.dasm - Test_b147816:main():int (FullOpts)

@@ -3,13 +3,12 @@ ; FullOpts code ; optimized code ; r11 based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data ; Final local variable assignments ;
-;* V00 loc0 [V00,T01] ( 0, 0 ) int -> zero-ref
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 cse0 [V02,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,7 +23,6 @@ G_M15237_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcr arg pop 0
movs r0, 100 ;; size=22 bbWeight=1 PerfScore 7.00 G_M15237_IG03: ; bbWeight=1, epilog, nogc, extend

+0 (0.00%) : 200148.dasm - Test_b147816:main():int (Tier0-FullOpts)

@@ -3,13 +3,12 @@ ; Tier-0 switched to FullOpts code ; optimized code ; r11 based frame
-; fully interruptible
+; partially interruptible
; No matching PGO data ; Final local variable assignments ;
-;* V00 loc0 [V00,T01] ( 0, 0 ) int -> zero-ref
+;* V00 loc0 [V00,T00] ( 0, 0 ) int -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 cse0 [V02,T00] ( 0, 0 ) int -> zero-ref "CSE - aggressive"
; ; Lcl frame size = 0 @@ -24,7 +23,6 @@ G_M15237_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method>
- ; gcr arg pop 0
movs r0, 100 ;; size=22 bbWeight=1 PerfScore 7.00 G_M15237_IG03: ; bbWeight=1, epilog, nogc, extend

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

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T21] ( 6, 7 ) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T31] ( 4, 4 ) struct ( 8) [sp+0xDC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T64] ( 3, 2 ) ref -> [sp+0x54] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T09] ( 63, 25 ) int -> [sp+0xB4] ld-addr-op -; V06 loc2 [V06,T29] ( 29, 6 ) ushort -> [sp+0xB0] -; V07 loc3 [V07,T60] ( 12, 2.00) int -> [sp+0xAC]
+; V05 loc1 [V05,T09] ( 68, 25 ) int -> [sp+0xB4] ld-addr-op +; V06 loc2 [V06,T29] ( 32, 6 ) ushort -> [sp+0xB0] +; V07 loc3 [V07,T60] ( 15, 2.00) int -> [sp+0xAC]
; V08 loc4 [V08,T51] ( 5, 3 ) ubyte -> [sp+0xA8] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T41] ( 7, 4.00) int -> r8 @@ -287,8 +287,8 @@ ; V275 cse0 [V275,T53] ( 3, 3 ) int -> r2 "CSE - conservative" ; V276 cse1 [V276,T54] ( 3, 3 ) int -> r2 "CSE - conservative" ; V277 cse2 [V277,T55] ( 3, 3 ) int -> r3 "CSE - conservative"
-; V278 cse3 [V278,T17] ( 21, 11 ) int -> [sp+0x58] "CSE - moderate" -; V279 cse4 [V279,T19] ( 15, 9.00) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V278 cse3 [V278,T17] ( 22, 11 ) int -> [sp+0x58] "CSE - moderate" +; V279 cse4 [V279,T19] ( 16, 9.00) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
; V280 cse5 [V280,T02] ( 32,158.85) ref -> registers multi-def "CSE - aggressive" ; V281 rat0 [V281,T28] ( 5, 7 ) ref -> r1 class-hnd "replacement local" <System.ISpanFormattable> ; V282 rat1 [V282,T38] ( 3, 5.99) byref -> r0 "ReplaceWithLclVar is creating a new local variable" @@ -338,7 +338,7 @@ G_M36935_IG04: ; bbWeight=2, gcVars=00000000000000010000000000000000 {V04 ; gcrRegs -[r0] ldr r3, [r6+0x04] cmp r3, r4
- bls G_M36935_IG109
+ bls G_M36935_IG111
;; size=8 bbWeight=2 PerfScore 6.00 G_M36935_IG05: ; bbWeight=2.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz add r2, r6, 8 @@ -394,7 +394,7 @@ G_M36935_IG07: ; bbWeight=2.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r G_M36935_IG08: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r5 r9}, byref, isz ldr r2, [sp+0x64] // [V192 tmp171] cmp r3, r2
- bhi G_M36935_IG118
+ bhi G_M36935_IG120
;; size=8 bbWeight=1.00 PerfScore 3.00 G_M36935_IG09: ; bbWeight=8.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r5 r9}, byref, isz ldr r0, [r5+0x04] @@ -409,7 +409,7 @@ G_M36935_IG10: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r5 r ldr r1, [r5+0x04] ldr r2, [r0+0x04] cmp r1, r2
- bhi G_M36935_IG118
+ bhi G_M36935_IG120
;; size=14 bbWeight=1 PerfScore 5.00 G_M36935_IG11: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0221 {r0 r5 r9}, byref, isz ldr r0, [r0] @@ -445,7 +445,7 @@ G_M36935_IG13: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r ldr r3, [sp+0xA4] // [V15 loc11] ldr r2, [sp+0x98] // [V71 tmp50] cmp r3, r2
- bhi G_M36935_IG111
+ bhi G_M36935_IG113
lsls r2, r3, 1 ldr r0, [sp+0x40] // [V72 tmp51] ; byrRegs +[r0] @@ -472,7 +472,7 @@ G_M36935_IG13: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0220 {r ldrh r0, [r3+r0] adds r4, r4, 1 cmp r9, r4
- bls G_M36935_IG114
+ bls G_M36935_IG116
;; size=66 bbWeight=1.00 PerfScore 25.00 G_M36935_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz lsls r1, r4, 1 @@ -481,7 +481,7 @@ G_M36935_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r cmp r0, r2 beq G_M36935_IG70 cmp r0, 123
- bne G_M36935_IG112
+ bne G_M36935_IG114
;; size=18 bbWeight=1 PerfScore 7.00 G_M36935_IG15: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz mov lr, 0 @@ -540,12 +540,12 @@ G_M36935_IG18: ; bbWeight=4.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r G_M36935_IG19: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz sub r8, r8, 48 cmp r8, 10
- bhs G_M36935_IG113
+ bhs G_M36935_IG115
;; size=12 bbWeight=1.00 PerfScore 3.00 G_M36935_IG20: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz adds r4, r4, 1 cmp r9, r4
- bls G_M36935_IG114
+ bls G_M36935_IG116
lsls r0, r4, 1 ldr r3, [sp+0x1C] // [V279 cse4] ; byrRegs +[r3] @@ -588,7 +588,7 @@ G_M36935_IG23: ; bbWeight=1.00, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r ; GC ptr vars +{V12} ldr r2, [sp+0x5C] // [V273 tmp252] cmp r8, r2
- bhs G_M36935_IG117
+ bhs G_M36935_IG119
;; size=18 bbWeight=1.00 PerfScore 7.00 G_M36935_IG24: ; bbWeight=1, gcVars=00000000000004810000000000000000 {V04 V12 V183}, gcrefRegs=02C0 {r6 r7 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs +[r9] @@ -600,20 +600,20 @@ G_M36935_IG24: ; bbWeight=1, gcVars=00000000000004810000000000000000 {V04 ldr lr, [sp+0x54] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG88
+ bne G_M36935_IG90
;; size=22 bbWeight=1 PerfScore 6.00 G_M36935_IG25: ; bbWeight=1, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, byref, isz ; gcrRegs -[lr] ; byrRegs -[r0] cmp r9, 0
- bne G_M36935_IG102
+ bne G_M36935_IG104
ldr r9, [sp+0xA8] // [V08 loc4] ; gcrRegs -[r9] cmp r9, 0 bne SHORT G_M36935_IG26 ldr r12, [sp+0xAC] // [V07 loc3] cmp r12, 0
- bne G_M36935_IG94
+ bne G_M36935_IG96
;; size=30 bbWeight=1 PerfScore 8.00 G_M36935_IG26: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz mov r1, r8 @@ -626,7 +626,7 @@ G_M36935_IG27: ; bbWeight=0.50, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0 movw lr, 0xd1ff movt lr, 0xd1ff cmp r0, lr
- bne G_M36935_IG91
+ bne G_M36935_IG93
;; size=16 bbWeight=0.50 PerfScore 2.50 G_M36935_IG28: ; bbWeight=1, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz mov r0, r1 @@ -634,14 +634,14 @@ G_M36935_IG28: ; bbWeight=1, gcrefRegs=01C2 {r1 r6 r7 r8}, byrefRegs=0020 str r0, [sp+0x4C] // [V18 loc14] ; GC ptr vars +{V18} cmp r0, 0
- beq G_M36935_IG94
+ beq G_M36935_IG96
add r1, r5, 8 ; gcrRegs -[r1] ; byrRegs +[r1] ldr lr, [r5+0x04] ldr r2, [r1+0x04] cmp lr, r2
- bhi G_M36935_IG118
+ bhi G_M36935_IG120
;; size=26 bbWeight=1 PerfScore 9.00 G_M36935_IG29: ; bbWeight=1.00, gcVars=00000000000004810000040000000000 {V04 V12 V18 V183}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz ; gcrRegs -[r0] @@ -686,7 +686,7 @@ G_M36935_IG31: ; bbWeight=1.00, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 movw r3, 0xd1ff movt r3, 0xd1ff cmp r0, r3
- bne G_M36935_IG93
+ bne G_M36935_IG95
;; size=30 bbWeight=1.00 PerfScore 10.00 G_M36935_IG32: ; bbWeight=1, gcVars=00000000000005810000040000000000 {V04 V12 V18 V183 V189}, gcrefRegs=11C0 {r6 r7 r8 r12}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz ; GC ptr vars -{V95} @@ -905,7 +905,7 @@ G_M36935_IG49: ; bbWeight=1.00, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 ;; size=4 bbWeight=1.00 PerfScore 2.00 G_M36935_IG50: ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz cmp r0, 0
- beq G_M36935_IG94
+ beq G_M36935_IG96
;; size=6 bbWeight=1 PerfScore 2.00 G_M36935_IG51: ; bbWeight=1, gcVars=00000000000000010000000000000000 {V04}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[r8] @@ -915,7 +915,7 @@ G_M36935_IG51: ; bbWeight=1, gcVars=00000000000000010000000000000000 {V04 adds r0, r0, r1 str r0, [r5+0x04] cmp r9, 0
- bne G_M36935_IG92
+ bne G_M36935_IG94
b SHORT G_M36935_IG04 ;; size=18 bbWeight=1 PerfScore 7.00 G_M36935_IG52: ; bbWeight=0.00, gcVars=00000000000004810000000000000000 {V04 V12 V183}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz @@ -954,7 +954,7 @@ G_M36935_IG53: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, ldr r1, [r5+0x04] ldr r3, [r0+0x04] cmp r1, r3
- bhi G_M36935_IG118
+ bhi G_M36935_IG120
;; size=14 bbWeight=1 PerfScore 5.00 G_M36935_IG54: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0221 {r0 r5 r9}, byref, isz ldr r0, [r0] @@ -978,7 +978,7 @@ G_M36935_IG54: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0221 {r0 r5 ;; size=34 bbWeight=1.00 PerfScore 13.00 G_M36935_IG55: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=02A0 {r5 r7 r9}, byref, isz cmp r8, r4
- bhi G_M36935_IG111
+ bhi G_M36935_IG113
lsl r2, r8, 1 mov r0, r7 ; byrRegs +[r0] @@ -993,7 +993,7 @@ G_M36935_IG55: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=02A0 {r5 r7 ldr r0, [r5+0x04] add r0, r8 str r0, [r5+0x04]
- b SHORT G_M36935_IG109
+ b SHORT G_M36935_IG111
;; size=34 bbWeight=1.00 PerfScore 13.00 G_M36935_IG56: ; bbWeight=0.00, gcVars=00000000000005810000000000000000 {V04 V12 V183 V189}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs +[r6-r8] @@ -1123,7 +1123,7 @@ G_M36935_IG65: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, ldr r8, [sp+0x64] // [V192 tmp171] sub r1, r1, r8 cmp r0, r1
- bgt G_M36935_IG110
+ bgt G_M36935_IG112
b SHORT G_M36935_IG53 ;; size=20 bbWeight=1 PerfScore 7.00 G_M36935_IG66: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref @@ -1224,12 +1224,10 @@ G_M36935_IG73: ; bbWeight=0, gcVars=00000000000000810000000000080000 {V04 sub r8, r2, 48 adds r4, r4, 1 cmp r9, r4
- bls G_M36935_IG114
+ bls G_M36935_IG116
lsls r0, r4, 1 ldrh r2, [r3+r0]
- mov r0, r2 - mov r2, r0 - ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG74: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r0, r2, 48 cmp r0, 9 @@ -1243,133 +1241,153 @@ G_M36935_IG74: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r G_M36935_IG75: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz adds r4, r4, 1 cmp r9, r4
- bls G_M36935_IG114
+ bls G_M36935_IG116
lsls r2, r4, 1 ldrh r2, [r3+r2]
- mov r0, r2 - mov r2, r0 - ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG76: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz cmp r2, 32 beq SHORT G_M36935_IG75 cmp r2, 44
- bne SHORT G_M36935_IG83
+ bne SHORT G_M36935_IG85
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG77: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz ...

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

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T09] ( 6, 7 ) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T21] ( 4, 4 ) struct ( 8) [sp+0xB4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T59] ( 3, 2 ) ref -> [sp+0x44] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 63, 25 ) int -> [sp+0x8C] ld-addr-op -; V06 loc2 [V06,T19] ( 29, 6 ) ushort -> [sp+0x88] -; V07 loc3 [V07,T54] ( 13, 2.50) int -> [sp+0x84]
+; V05 loc1 [V05,T02] ( 68, 25 ) int -> [sp+0x8C] ld-addr-op +; V06 loc2 [V06,T19] ( 32, 6 ) ushort -> [sp+0x88] +; V07 loc3 [V07,T54] ( 16, 2.50) int -> [sp+0x84]
; V08 loc4 [V08,T55] ( 5, 2.50) ubyte -> [sp+0x80] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T33] ( 7, 4 ) int -> r8 @@ -243,8 +243,8 @@ ; V231 cse1 [V231,T51] ( 3, 3 ) int -> r3 "CSE - conservative" ; V232 cse2 [V232,T70] ( 3, 1.50) int -> r2 "CSE - conservative" ; V233 cse3 [V233,T71] ( 3, 1.50) int -> r1 "CSE - conservative"
-; V234 cse4 [V234,T06] ( 21, 11 ) int -> [sp+0x50] "CSE - aggressive" -; V235 cse5 [V235,T07] ( 15, 9 ) byref -> [sp+0x10] spill-single-def "CSE - moderate"
+; V234 cse4 [V234,T06] ( 22, 11 ) int -> [sp+0x50] "CSE - aggressive" +; V235 cse5 [V235,T07] ( 16, 9 ) byref -> [sp+0x10] spill-single-def "CSE - moderate"
; V236 cse6 [V236,T00] ( 29, 92.99) ref -> registers multi-def "CSE - aggressive" ; V237 rat0 [V237,T17] ( 5, 7.50) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V238 rat1 [V238,T34] ( 6, 4 ) ref -> r0 class-hnd "replacement local" <<unknown class>> @@ -544,7 +544,7 @@ G_M36935_IG19: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr lr, [sp+0x44] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG99
+ bne G_M36935_IG101
;; size=40 bbWeight=1 PerfScore 13.00 G_M36935_IG20: ; bbWeight=1, gcVars=00000000000001100800000000000000 {V04 V12 V153}, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[lr] +[r9] @@ -622,7 +622,7 @@ G_M36935_IG25: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 ; byrRegs -[r1] movt r1, 0xd1ff cmp r0, r1
- bne G_M36935_IG102
+ bne G_M36935_IG104
add r0, r12, 4 ; byrRegs +[r0] ldr r2, [r0] @@ -811,7 +811,7 @@ G_M36935_IG39: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 adds r1, r1, r0 str r1, [r5+0x04] cmp r9, 0
- bne G_M36935_IG103
+ bne G_M36935_IG105
b SHORT G_M36935_IG04 ;; size=22 bbWeight=0.50 PerfScore 4.50 G_M36935_IG40: ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz @@ -826,7 +826,7 @@ G_M36935_IG41: ; bbWeight=0.50, gcrefRegs=01C1 {r0 r6 r7 r8}, byrefRegs=0 str r1, [sp+0x38] // [V20 loc16] ; GC ptr vars +{V20} cmp r1, 0
- bne G_M36935_IG104
+ bne G_M36935_IG106
cmp r8, 0 beq G_M36935_IG57 ldr r1, [r8] @@ -1017,7 +1017,7 @@ G_M36935_IG56: ; bbWeight=0.25, gcVars=00000000000001100800000000000000 { movw r1, 0xd1ff movt r1, 0xd1ff cmp r0, r1
- bne G_M36935_IG108
+ bne G_M36935_IG110
movs r0, 0 b SHORT G_M36935_IG41 ;; size=20 bbWeight=0.25 PerfScore 1.75 @@ -1364,9 +1364,7 @@ G_M36935_IG84: ; bbWeight=0, gcVars=00000000000000100800000000000080 {V04 bls SHORT G_M36935_IG71 lsls r0, r4, 1 ldrh r2, [r3+r0]
- mov r0, r2 - mov r2, r0 - ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M36935_IG85: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r0, r2, 48 cmp r0, 9 @@ -1383,14 +1381,12 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG71 lsls r2, r4, 1 ldrh r2, [r3+r2]
- mov r0, r2 - mov r2, r0 - ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz cmp r2, 32 beq SHORT G_M36935_IG86 cmp r2, 44
- bne SHORT G_M36935_IG94
+ bne SHORT G_M36935_IG96
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz adds r4, r4, 1 @@ -1398,10 +1394,8 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG71 lsls r2, r4, 1 ldrh r2, [r3+r2]
- mov r0, r2 - cmp r0, 32
+ cmp r2, 32
beq SHORT G_M36935_IG88
- mov r2, r0
cmp r2, 45 bne SHORT G_M36935_IG89 movs r2, 1 @@ -1410,9 +1404,10 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG71 lsls r0, r4, 1 ldrh r0, [r3+r0]
+ mov r1, r0
str r2, [sp+0x80] // [V08 loc4]
- mov r2, r0 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r2, r1 + ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r12, r2, 48 mov r1, r12 @@ -1420,56 +1415,79 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bhs G_M36935_IG70 adds r4, r4, 1 cmp r9, r4
- bhi SHORT G_M36935_IG91 - b SHORT G_M36935_IG71 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG71 + cmp r4, 0 + blt SHORT G_M36935_IG93 + b SHORT G_M36935_IG91 + ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- movs r2, 10 - mul r1, r1, r2 - adds r0, r1, r0 - sub r1, r0, 48
+ movs r0, 10 + mul r1, r1, r0 + adds r2, r1, r2 + sub r1, r2, 48 + mov r2, r1 + adds r4, r4, 1 + cmp r9, r4 + mov r1, r2 + bls G_M36935_IG71 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + lsls r2, r4, 1 + ldrh r2, [r3+r2] + sub r0, r2, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG95 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + blt SHORT G_M36935_IG90 + b SHORT G_M36935_IG95 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + movs r0, 10 + mul r1, r1, r0 + adds r2, r1, r2 + sub r1, r2, 48
str r1, [sp+0x84] // [V07 loc3] adds r4, r4, 1 cmp r9, r4 ldr r1, [sp+0x84] // [V07 loc3] bls G_M36935_IG71 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r4, r9 bhs G_M36935_IG77
- lsls r2, r4, 1 - ldrh r2, [r3+r2] - mov r0, r2 - sub r2, r0, 48 - cmp r2, 9 - bhi SHORT G_M36935_IG93 - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r1, r2 - blt SHORT G_M36935_IG90 - b SHORT G_M36935_IG93 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r0, r4, 1 + ldrh r2, [r3+r0] + sub r0, r2, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG95 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + blt SHORT G_M36935_IG92 + b SHORT G_M36935_IG95 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1 cmp r9, r4 bls G_M36935_IG71
- lsls r0, r4, 1 - ldrh r0, [r3+r0]
+ lsls r2, r4, 1 + ldrh r2, [r3+r2]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz - cmp r0, 32 - mov r2, r0 - beq SHORT G_M36935_IG92
+G_M36935_IG95: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + cmp r2, 32 + beq SHORT G_M36935_IG94
str r1, [sp+0x84] // [V07 loc3]
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 125 beq G_M36935_IG17 cmp r2, 58 bne G_M36935_IG72 mov r0, r4 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000000800000000000080 {V04 V235}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
+G_M36935_IG97: ; bbWeight=0, gcVars=00000000000000000800000000000080 {V04 V235}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
; GC ptr vars -{V07 V153} adds r4, r4, 1 cmp r9, r4 @@ -1477,12 +1495,12 @@ G_M36935_IG95: ; bbWeight=0, gcVars=00000000000000000800000000000080 {V04 lsls r2, r4, 1 ldrh r2, [r3+r2] cmp r2, 125
- beq SHORT G_M36935_IG96
+ beq SHORT G_M36935_IG98
cmp r2, 123
- bne SHORT G_M36935_IG95
+ bne SHORT G_M36935_IG97
b SHORT G_M36935_IG72 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r0, r0, 1 str r4, [sp+0x8C] // [V05 loc1] subs r2, r4, r0 @@ -1498,15 +1516,15 @@ G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r str lr, [sp+0x2C] // [V91 tmp70] ...

+46 (+1.74%) : 313690.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T20] ( 5, 6 ) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T26] ( 4, 4 ) struct ( 8) [sp+0xD4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T54] ( 3, 2 ) ref -> [sp+0x4C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T09] ( 62, 23 ) int -> [sp+0xAC] ld-addr-op -; V06 loc2 [V06,T25] ( 29, 6 ) ushort -> [sp+0xA8] -; V07 loc3 [V07,T51] ( 12, 2 ) int -> [sp+0xA4]
+; V05 loc1 [V05,T09] ( 67, 23 ) int -> [sp+0xAC] ld-addr-op +; V06 loc2 [V06,T25] ( 32, 6 ) ushort -> [sp+0xA8] +; V07 loc3 [V07,T51] ( 15, 2 ) int -> [sp+0xA4]
; V08 loc4 [V08,T41] ( 5, 3 ) ubyte -> [sp+0xA0] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T35] ( 7, 4 ) int -> r8 @@ -263,8 +263,8 @@ ; V251 tmp230 [V251,T13] ( 2, 15.97) int -> r2 "Cast away GC" ; V252 cse0 [V252,T45] ( 3, 3 ) int -> r2 "CSE - conservative" ; V253 cse1 [V253,T46] ( 3, 3 ) int -> r3 "CSE - conservative"
-; V254 cse2 [V254,T16] ( 19, 10 ) int -> [sp+0x50] spill-single-def "CSE - moderate" -; V255 cse3 [V255,T23] ( 15, 7 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V254 cse2 [V254,T16] ( 20, 10 ) int -> [sp+0x50] spill-single-def "CSE - moderate" +; V255 cse3 [V255,T23] ( 16, 7 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V256 cse4 [V256,T02] ( 29,143.85) ref -> registers multi-def "CSE - aggressive" ; V257 rat0 [V257,T24] ( 5, 7 ) ref -> r1 class-hnd "replacement local" <System.ISpanFormattable> ; V258 rat1 [V258,T32] ( 3, 5.99) byref -> r0 "ReplaceWithLclVar is creating a new local variable" @@ -573,7 +573,7 @@ G_M36935_IG19: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr lr, [sp+0x4C] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG104
+ bne G_M36935_IG106
;; size=40 bbWeight=1 PerfScore 13.00 G_M36935_IG20: ; bbWeight=1, gcVars=00000000000000240040000000000000 {V04 V12 V168}, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[lr] +[r9] @@ -761,7 +761,7 @@ G_M36935_IG30: ; bbWeight=31.93, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=002 ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne G_M36935_IG107
+ bne G_M36935_IG109
;; size=20 bbWeight=31.93 PerfScore 191.59 G_M36935_IG31: ; bbWeight=31.93, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz movw r0, 0xd1ff @@ -809,7 +809,7 @@ G_M36935_IG33: ; bbWeight=3.99, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne G_M36935_IG108
+ bne G_M36935_IG110
;; size=20 bbWeight=3.99 PerfScore 23.95 G_M36935_IG34: ; bbWeight=3.99, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz movw r0, 0xd1ff @@ -931,7 +931,7 @@ G_M36935_IG46: ; bbWeight=0.50, gcVars=00000000000000240040000000000000 { movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- bne G_M36935_IG109
+ bne G_M36935_IG111
b SHORT G_M36935_IG22 ;; size=18 bbWeight=0.50 PerfScore 3.00 G_M36935_IG47: ; bbWeight=0.00, gcVars=000000000000002C0040000000000000 {V04 V12 V168 V174}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref, isz @@ -1533,9 +1533,7 @@ G_M36935_IG89: ; bbWeight=0, gcVars=00000000000000040040000000800000 {V04 bls SHORT G_M36935_IG78 lsls r0, r4, 1 ldrh r2, [r3+r0]
- mov r0, r2 - mov r2, r0 - ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r0, r2, 48 cmp r0, 9 @@ -1552,14 +1550,12 @@ G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls SHORT G_M36935_IG78 lsls r2, r4, 1 ldrh r2, [r3+r2]
- mov r0, r2 - mov r2, r0 - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz cmp r2, 32 beq SHORT G_M36935_IG91 cmp r2, 44
- bne SHORT G_M36935_IG99
+ bne SHORT G_M36935_IG101
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz adds r4, r4, 1 @@ -1567,10 +1563,8 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG78 lsls r2, r4, 1 ldrh r2, [r3+r2]
- mov r0, r2 - cmp r0, 32
+ cmp r2, 32
beq SHORT G_M36935_IG93
- mov r2, r0
cmp r2, 45 bne SHORT G_M36935_IG94 movs r2, 1 @@ -1579,9 +1573,10 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG78 lsls r0, r4, 1 ldrh r0, [r3+r0]
+ mov r1, r0
str r2, [sp+0xA0] // [V08 loc4]
- mov r2, r0 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r2, r1 + ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r12, r2, 48 mov r1, r12 @@ -1589,56 +1584,79 @@ G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bhs G_M36935_IG77 adds r4, r4, 1 cmp r9, r4
- bhi SHORT G_M36935_IG96 - b SHORT G_M36935_IG78 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG78 + cmp r4, 0 + blt SHORT G_M36935_IG98 + b SHORT G_M36935_IG96 + ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG95: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- movs r2, 10 - mul r1, r1, r2 - adds r0, r1, r0 - sub r1, r0, 48
+ movs r0, 10 + mul r1, r1, r0 + adds r2, r1, r2 + sub r1, r2, 48 + mov r2, r1 + adds r4, r4, 1 + cmp r9, r4 + mov r1, r2 + bls G_M36935_IG78 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + lsls r2, r4, 1 + ldrh r2, [r3+r2] + sub r0, r2, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG100 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + blt SHORT G_M36935_IG95 + b SHORT G_M36935_IG100 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + movs r0, 10 + mul r1, r1, r0 + adds r2, r1, r2 + sub r1, r2, 48
str r1, [sp+0xA4] // [V07 loc3] adds r4, r4, 1 cmp r9, r4 ldr r1, [sp+0xA4] // [V07 loc3] bls G_M36935_IG78 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r4, r9 bhs G_M36935_IG83
- lsls r2, r4, 1 - ldrh r2, [r3+r2] - mov r0, r2 - sub r2, r0, 48 - cmp r2, 9 - bhi SHORT G_M36935_IG98 - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r1, r2 - blt SHORT G_M36935_IG95 - b SHORT G_M36935_IG98 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r0, r4, 1 + ldrh r2, [r3+r0] + sub r0, r2, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG100 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + blt SHORT G_M36935_IG97 + b SHORT G_M36935_IG100 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1 cmp r9, r4 bls G_M36935_IG78
- lsls r0, r4, 1 - ldrh r0, [r3+r0]
+ lsls r2, r4, 1 + ldrh r2, [r3+r2]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz - cmp r0, 32 - mov r2, r0 - beq SHORT G_M36935_IG97
+G_M36935_IG100: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + cmp r2, 32 + beq SHORT G_M36935_IG99
str r1, [sp+0xA4] // [V07 loc3]
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 125 beq G_M36935_IG17 cmp r2, 58 bne G_M36935_IG79 mov r0, r4 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V04 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
+G_M36935_IG102: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V04 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
; GC ptr vars -{V168} adds r4, r4, 1 cmp r9, r4 @@ -1646,12 +1664,12 @@ G_M36935_IG100: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V0 lsls r2, r4, 1 ldrh r2, [r3+r2] cmp r2, 125
- beq SHORT G_M36935_IG101
+ beq SHORT G_M36935_IG103
cmp r2, 123
- bne SHORT G_M36935_IG100
+ bne SHORT G_M36935_IG102
b SHORT G_M36935_IG79 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r0, r0, 1 str r4, [sp+0xAC] // [V05 loc1] subs r2, r4, r0 @@ -1667,15 +1685,15 @@ G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 str lr, [sp+0x34] // [V74 tmp53] ; GC ptr vars +{V74} cmp r2, 0
- bge SHORT G_M36935_IG102
+ bge SHORT G_M36935_IG104
movs r0, 0
- b SHORT G_M36935_IG103
+ b SHORT G_M36935_IG105
;; size=42 bbWeight=0 PerfScore 0.00
-G_M36935_IG102: ; bbWeight=0, gcVars=00000000200000000040000000800000 {V04 V74 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
...

+46 (+1.74%) : 313803.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T20] ( 5, 6 ) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T26] ( 4, 4 ) struct ( 8) [sp+0xD4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T54] ( 3, 2 ) ref -> [sp+0x4C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T09] ( 62, 23 ) int -> [sp+0xAC] ld-addr-op -; V06 loc2 [V06,T25] ( 29, 6 ) ushort -> [sp+0xA8] -; V07 loc3 [V07,T51] ( 12, 2 ) int -> [sp+0xA4]
+; V05 loc1 [V05,T09] ( 67, 23 ) int -> [sp+0xAC] ld-addr-op +; V06 loc2 [V06,T25] ( 32, 6 ) ushort -> [sp+0xA8] +; V07 loc3 [V07,T51] ( 15, 2 ) int -> [sp+0xA4]
; V08 loc4 [V08,T41] ( 5, 3 ) ubyte -> [sp+0xA0] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T35] ( 7, 4 ) int -> r8 @@ -263,8 +263,8 @@ ; V251 tmp230 [V251,T13] ( 2, 15.97) int -> r2 "Cast away GC" ; V252 cse0 [V252,T45] ( 3, 3 ) int -> r2 "CSE - conservative" ; V253 cse1 [V253,T46] ( 3, 3 ) int -> r3 "CSE - conservative"
-; V254 cse2 [V254,T16] ( 19, 10 ) int -> [sp+0x50] spill-single-def "CSE - moderate" -; V255 cse3 [V255,T23] ( 15, 7 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V254 cse2 [V254,T16] ( 20, 10 ) int -> [sp+0x50] spill-single-def "CSE - moderate" +; V255 cse3 [V255,T23] ( 16, 7 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V256 cse4 [V256,T02] ( 29,143.85) ref -> registers multi-def "CSE - aggressive" ; V257 rat0 [V257,T24] ( 5, 7 ) ref -> r1 class-hnd "replacement local" <System.ISpanFormattable> ; V258 rat1 [V258,T32] ( 3, 5.99) byref -> r0 "ReplaceWithLclVar is creating a new local variable" @@ -573,7 +573,7 @@ G_M36935_IG19: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr lr, [sp+0x4C] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG104
+ bne G_M36935_IG106
;; size=40 bbWeight=1 PerfScore 13.00 G_M36935_IG20: ; bbWeight=1, gcVars=00000000000000240040000000000000 {V04 V12 V168}, gcrefRegs=03C0 {r6 r7 r8 r9}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[lr] +[r9] @@ -761,7 +761,7 @@ G_M36935_IG30: ; bbWeight=31.93, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=002 ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne G_M36935_IG107
+ bne G_M36935_IG109
;; size=20 bbWeight=31.93 PerfScore 191.59 G_M36935_IG31: ; bbWeight=31.93, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz movw r0, 0xd1ff @@ -809,7 +809,7 @@ G_M36935_IG33: ; bbWeight=3.99, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 ldr r0, [r0] and r0, r0, 1 cmp r0, 1
- bne G_M36935_IG108
+ bne G_M36935_IG110
;; size=20 bbWeight=3.99 PerfScore 23.95 G_M36935_IG34: ; bbWeight=3.99, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, byref, isz movw r0, 0xd1ff @@ -931,7 +931,7 @@ G_M36935_IG46: ; bbWeight=0.50, gcVars=00000000000000240040000000000000 { movw r2, 0xd1ff movt r2, 0xd1ff cmp r0, r2
- bne G_M36935_IG109
+ bne G_M36935_IG111
b SHORT G_M36935_IG22 ;; size=18 bbWeight=0.50 PerfScore 3.00 G_M36935_IG47: ; bbWeight=0.00, gcVars=000000000000002C0040000000000000 {V04 V12 V168 V174}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0020 {r5}, gcvars, byref, isz @@ -1533,9 +1533,7 @@ G_M36935_IG89: ; bbWeight=0, gcVars=00000000000000040040000000800000 {V04 bls SHORT G_M36935_IG78 lsls r0, r4, 1 ldrh r2, [r3+r0]
- mov r0, r2 - mov r2, r0 - ;; size=26 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r0, r2, 48 cmp r0, 9 @@ -1552,14 +1550,12 @@ G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls SHORT G_M36935_IG78 lsls r2, r4, 1 ldrh r2, [r3+r2]
- mov r0, r2 - mov r2, r0 - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz cmp r2, 32 beq SHORT G_M36935_IG91 cmp r2, 44
- bne SHORT G_M36935_IG99
+ bne SHORT G_M36935_IG101
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz adds r4, r4, 1 @@ -1567,10 +1563,8 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG78 lsls r2, r4, 1 ldrh r2, [r3+r2]
- mov r0, r2 - cmp r0, 32
+ cmp r2, 32
beq SHORT G_M36935_IG93
- mov r2, r0
cmp r2, 45 bne SHORT G_M36935_IG94 movs r2, 1 @@ -1579,9 +1573,10 @@ G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bls G_M36935_IG78 lsls r0, r4, 1 ldrh r0, [r3+r0]
+ mov r1, r0
str r2, [sp+0xA0] // [V08 loc4]
- mov r2, r0 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r2, r1 + ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz sub r12, r2, 48 mov r1, r12 @@ -1589,56 +1584,79 @@ G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r bhs G_M36935_IG77 adds r4, r4, 1 cmp r9, r4
- bhi SHORT G_M36935_IG96 - b SHORT G_M36935_IG78 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG78 + cmp r4, 0 + blt SHORT G_M36935_IG98 + b SHORT G_M36935_IG96 + ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG95: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
- movs r2, 10 - mul r1, r1, r2 - adds r0, r1, r0 - sub r1, r0, 48
+ movs r0, 10 + mul r1, r1, r0 + adds r2, r1, r2 + sub r1, r2, 48 + mov r2, r1 + adds r4, r4, 1 + cmp r9, r4 + mov r1, r2 + bls G_M36935_IG78 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + lsls r2, r4, 1 + ldrh r2, [r3+r2] + sub r0, r2, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG100 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + blt SHORT G_M36935_IG95 + b SHORT G_M36935_IG100 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + movs r0, 10 + mul r1, r1, r0 + adds r2, r1, r2 + sub r1, r2, 48
str r1, [sp+0xA4] // [V07 loc3] adds r4, r4, 1 cmp r9, r4 ldr r1, [sp+0xA4] // [V07 loc3] bls G_M36935_IG78 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r4, r9 bhs G_M36935_IG83
- lsls r2, r4, 1 - ldrh r2, [r3+r2] - mov r0, r2 - sub r2, r0, 48 - cmp r2, 9 - bhi SHORT G_M36935_IG98 - movw r2, 0xd1ff - movt r2, 0xd1ff - cmp r1, r2 - blt SHORT G_M36935_IG95 - b SHORT G_M36935_IG98 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG97: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ lsls r0, r4, 1 + ldrh r2, [r3+r0] + sub r0, r2, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG100 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r1, r0 + blt SHORT G_M36935_IG97 + b SHORT G_M36935_IG100 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r4, r4, 1 cmp r9, r4 bls G_M36935_IG78
- lsls r0, r4, 1 - ldrh r0, [r3+r0]
+ lsls r2, r4, 1 + ldrh r2, [r3+r2]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz - cmp r0, 32 - mov r2, r0 - beq SHORT G_M36935_IG97
+G_M36935_IG100: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz + cmp r2, 32 + beq SHORT G_M36935_IG99
str r1, [sp+0xA4] // [V07 loc3]
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M36935_IG99: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+ ;; size=6 bbWeight=0 PerfScore 0.00 +G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
cmp r2, 125 beq G_M36935_IG17 cmp r2, 58 bne G_M36935_IG79 mov r0, r4 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG100: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V04 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
+G_M36935_IG102: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V04 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, gcvars, byref, isz
; GC ptr vars -{V168} adds r4, r4, 1 cmp r9, r4 @@ -1646,12 +1664,12 @@ G_M36935_IG100: ; bbWeight=0, gcVars=00000000000000000040000000800000 {V0 lsls r2, r4, 1 ldrh r2, [r3+r2] cmp r2, 125
- beq SHORT G_M36935_IG101
+ beq SHORT G_M36935_IG103
cmp r2, 123
- bne SHORT G_M36935_IG100
+ bne SHORT G_M36935_IG102
b SHORT G_M36935_IG79 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
+G_M36935_IG103: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 r5}, byref, isz
adds r0, r0, 1 str r4, [sp+0xAC] // [V05 loc1] subs r2, r4, r0 @@ -1667,15 +1685,15 @@ G_M36935_IG101: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0028 {r3 str lr, [sp+0x34] // [V74 tmp53] ; GC ptr vars +{V74} cmp r2, 0
- bge SHORT G_M36935_IG102
+ bge SHORT G_M36935_IG104
movs r0, 0
- b SHORT G_M36935_IG103
+ b SHORT G_M36935_IG105
;; size=42 bbWeight=0 PerfScore 0.00
-G_M36935_IG102: ; bbWeight=0, gcVars=00000000200000000040000000800000 {V04 V74 V255}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
...

libraries.pmi.linux.arm.checked.mch

-20 (-22.73%) : 99389.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -8,10 +8,10 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T03] ( 3, 3 ) ref -> r4 class-hnd exact single-def <uint[]>
-; V01 loc1 [V01,T00] ( 7, 49 ) int -> r5 -; V02 loc2 [V02,T01] ( 2, 16 ) int -> r0
+; V01 loc1 [V01,T00] ( 6, 40.60) int -> r5 +; V02 loc2 [V02,T01] ( 2, 15.84) int -> r0
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 cse0 [V04,T02] ( 2, 9 ) byref -> r6 hoist "CSE - aggressive"
+; V04 cse0 [V04,T02] ( 2, 8.92) byref -> r6 hoist "CSE - aggressive"
; ; Lcl frame size = 4 @@ -33,22 +33,19 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add r6, r4, 8 ; byrRegs +[r6] ;; size=30 bbWeight=1 PerfScore 9.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
; gcrRegs -[r0] mov r0, r5 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint
- mov r3, 256 - cmp r5, r3 - bhs SHORT G_M39919_IG06
lsls r3, r5, 2 str r0, [r6+r3] adds r5, r5, 1 cmp r5, 255 bls SHORT G_M39919_IG03
- ;; size=32 bbWeight=8 PerfScore 104.00
+ ;; size=24 bbWeight=7.92 PerfScore 79.20
G_M39919_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref ; byrRegs -[r6] mov r0, r4 @@ -57,32 +54,21 @@ G_M39919_IG04: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop {r3,r4,r5,r6,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r4] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // CORINFO_HELP_RNGCHKFAIL - bkpt - ;; size=12 bbWeight=0 PerfScore 0.00
-Total bytes of code 88, prolog size 8, PerfScore 117.00, instruction count 30, allocated bytes for code 88 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 68, prolog size 8, PerfScore 92.20, instruction count 23, allocated bytes for code 68 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1
- Epilog Count : 1
+ Epilog Count : 0
F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 44 (0x0002c) Actual length = 88 (0x000058) - ---- Epilog scopes ---- - ---- Scope 0 - Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) - Condition : 14 (0xe) (always) - Epilog Start Index : 0 (0x00)
+ Function Length : 34 (0x00022) Actual length = 68 (0x000044) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ---- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32

libraries_tests.run.linux.arm.Release.mch

+14 (+1.06%) : 335212.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (Tier0-FullOpts)

@@ -8,54 +8,54 @@ ; 16 inlinees with PGO data; 46 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T29] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T21] ( 4, 10.01) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T28] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T13] ( 7, 21.83) ref -> r5 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T08] ( 7, 24.76) int -> r0 ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T34] ( 7, 3 ) ref -> [sp+0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T35] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.03) int -> r4
+; V04 loc4 [V04,T33] ( 7, 3 ) ref -> [sp+0x50] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T34] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.75) int -> r4
; V07 OutArgs [V07 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T27] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T22] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T30] ( 2, 4.01) int -> r4 "Inlining Arg" -; V11 tmp4 [V11,T28] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T24] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T21] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T29] ( 2, 4.01) int -> r4 "Inlining Arg" +; V11 tmp4 [V11,T27] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T33] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T23] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T24] ( 4, 8.01) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T13] ( 2, 16.02) int -> r9 "Inlining Arg" -; V17 tmp10 [V17,T09] ( 3, 24.04) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T32] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T22] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T23] ( 4, 8.01) ref -> r9 class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T14] ( 2, 15.86) int -> r9 "Inlining Arg" +; V17 tmp10 [V17,T10] ( 3, 23.80) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T16] ( 3, 12.02) ref -> [sp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.05) ref -> [sp+0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T17] ( 3, 11.90) ref -> [sp+0x40] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 31.73) ref -> [sp+0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 31.73) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T14] ( 2, 16.02) int -> r9 "Inlining Arg" -; V24 tmp17 [V24,T10] ( 3, 24.04) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T15] ( 2, 15.86) int -> r9 "Inlining Arg" +; V24 tmp17 [V24,T11] ( 3, 23.80) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T17] ( 3, 12.02) ref -> [sp+0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.05) ref -> [sp+0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T18] ( 3, 11.90) ref -> [sp+0x30] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 31.73) ref -> [sp+0x2C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 31.73) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T15] ( 2, 16.02) ushort -> r9 "Inlining Arg" -; V34 tmp27 [V34,T11] ( 3, 24.04) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T16] ( 2, 15.86) ushort -> r9 "Inlining Arg" +; V34 tmp27 [V34,T12] ( 3, 23.80) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T18] ( 3, 12.02) ref -> [sp+0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.05) ref -> [sp+0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T19] ( 3, 11.90) ref -> [sp+0x20] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 31.73) ref -> [sp+0x1C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 31.73) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T25] ( 3, 8.01) ubyte -> r9 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T30] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T25] ( 3, 7.93) ubyte -> r9 "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T32] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T26] ( 2, 8.01) ubyte -> r0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T31] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T26] ( 3, 7.93) ubyte -> r8 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,11 +64,10 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> r3 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T37] ( 6, 0 ) struct ( 4) [sp+0x54] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T36] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T12] ( 5, 20.03) byref -> r8 "CSE - moderate" -; V59 cse1 [V59,T19] ( 3, 12.02) int -> r8 "CSE - moderate" -; V60 cse2 [V60,T20] ( 3, 11.88) int -> r2 "CSE - moderate"
+; V56 tmp49 [V56,T36] ( 6, 0 ) struct ( 4) [sp+0x54] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T35] ( 1, 1 ) int -> [sp+0x58] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T09] ( 6, 23.80) int -> r8 "CSE - moderate" +; V59 cse1 [V59,T20] ( 3, 11.88) int -> r2 "CSE - moderate"
; TEMP_01 ref -> [r11-0x64] ; ; Lcl frame size = 92 @@ -148,7 +147,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b str r7, [sp+0x50] ; GC ptr vars +{V04} ;; size=40 bbWeight=1 PerfScore 14.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000000400000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000000200000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -183,7 +182,7 @@ G_M53770_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0 str r6, [sp+0x4C] ; GC ptr vars +{V05} ;; size=22 bbWeight=1 PerfScore 8.00
-G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000600000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
str r4, [sp] ; gcr arg write movs r2, 0 @@ -323,7 +322,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefR ; gcr arg pop 0 movs r4, 0 ;; size=256 bbWeight=1.00 PerfScore 90.14
-G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG08: ; bbWeight=3.97, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
lsls r0, r4, 4 add r8, r0, 8 ldr r9, [r5+r8] @@ -369,7 +368,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V19}
+ ; GC ptr vars -{V17 V19}
blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0] @@ -394,7 +393,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V20}
+ ; GC ptr vars -{V20} +{V17}
blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1-r2] ; byrRegs -[r0] @@ -442,10 +441,11 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- add r8, r5 - ; byrRegs +[r8] - ldr r9, [r8+0x08]
+ add r0, r5, r8 + ; byrRegs +[r0] + ldr r9, [r0+0x08]
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff @@ -560,16 +560,20 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- ldrb r9, [r8+0x04]
+ add r0, r5, r8 + ; byrRegs +[r0] + ldrb r9, [r0+0x04]
cmp r9, 0 bne SHORT G_M53770_IG12
- ldrh r9, [r8+0x0C]
+ add r0, r5, r8 + ldrh r9, [r0+0x0C]
movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff
+ ;; size=444 bbWeight=3.97 PerfScore 590.96 +G_M53770_IG09: ; bbWeight=3.97, isz, extend
movw r3, 0xd1ff movt r3, 0xd1ff
- ;; size=442 bbWeight=4.01 PerfScore 596.93 -G_M53770_IG09: ; bbWeight=4.01, isz, extend
blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0 @@ -681,16 +685,18 @@ G_M53770_IG09: ; bbWeight=4.01, isz, extend blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- ldrb r0, [r8+0x0E] - cmp r0, 0
+ add r0, r5, r8 + ; byrRegs +[r0] + ldrb r8, [r0+0x0E] + cmp r8, 0
beq SHORT G_M53770_IG13
- ;; size=190 bbWeight=4.01 PerfScore 268.42 -G_M53770_IG10: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r8]
+ ;; size=204 bbWeight=3.97 PerfScore 277.63 +G_M53770_IG10: ; bbWeight=3.96, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0]
adds r4, r4, 1 cmp r4, 12 blt G_M53770_IG08
- ;; size=8 bbWeight=4 PerfScore 12.00
+ ;; size=8 bbWeight=3.96 PerfScore 11.88
G_M53770_IG11: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5] b SHORT G_M53770_IG14 @@ -716,8 +722,7 @@ G_M53770_IG12: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r1, 1 strb r1, [sp+0x54] // [V56 tmp49]
- movs r1, 0 - strb r1, [sp+0x55] // [V56 tmp49+0x01]
+ strb r8, [sp+0x55] // [V56 tmp49+0x01]
ldrh r1, [sp+0x54] // [V56 tmp49] movs r0, 0 movw r3, 0xd1ff @@ -732,7 +737,7 @@ G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 bkpt
- ;; size=42 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M53770_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r0, 0 strb r0, [r6+0x20] @@ -770,14 +775,14 @@ G_M53770_IG16: ; bbWeight=1, epilog, nogc, extend add sp, 92 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M53770_IG17: ; bbWeight=0, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V05 V34}
+G_M53770_IG17: ; bbWeight=0, gcVars=0000000600000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc + ; GC ptr vars +{V04 V05 V33 V34}
push {r4,r5,r6,r7,r8,r9,r10,r11,lr} sub sp, 20 add r3, r11, 8 str r3, [sp+0x10] ;; size=12 bbWeight=0 PerfScore 0.00
-G_M53770_IG18: ; bbWeight=0, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG18: ; bbWeight=0, gcVars=0000000600000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 0 ldr r6, [r11-0x2C] ; gcrRegs +[r6] @@ -786,7 +791,7 @@ G_M53770_IG18: ; bbWeight=0, gcVars=0000000C00000000 {V04 V05}, gcrefRegs ...

+36 (+1.25%) : 720415.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T19] ( 5, 7.78) ref -> [sp+0x4C] class-hnd single-def <System.String> ; V03 arg3 [V03,T28] ( 4, 4 ) struct ( 8) [sp+0xE4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T52] ( 3, 2.84) ref -> [sp+0x48] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 40.89) int -> [sp+0xBC] ld-addr-op -; V06 loc2 [V06,T15] ( 29, 11.06) ushort -> [sp+0xB8] -; V07 loc3 [V07,T38] ( 12, 5.14) int -> [sp+0xB4]
+; V05 loc1 [V05,T02] ( 67, 40.89) int -> [sp+0xBC] ld-addr-op +; V06 loc2 [V06,T15] ( 32, 11.06) ushort -> [sp+0xB8] +; V07 loc3 [V07,T38] ( 15, 5.14) int -> [sp+0xB4]
; V08 loc4 [V08,T42] ( 5, 4.08) ubyte -> [sp+0xB0] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T25] ( 7, 7.37) int -> r8 @@ -261,8 +261,8 @@ ; V249 cse0 [V249,T36] ( 3, 5.53) int -> r1 "CSE - conservative" ; V250 cse1 [V250,T41] ( 3, 4.34) int -> r12 "CSE - conservative" ; V251 cse2 [V251,T70] ( 3, 1.18) int -> [sp+0x58] spill-single-def "CSE - conservative"
-; V252 cse3 [V252,T07] ( 19, 16.84) int -> [sp+0x54] spill-single-def "CSE - aggressive" -; V253 cse4 [V253,T11] ( 15, 13.09) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V252 cse3 [V252,T07] ( 20, 16.84) int -> [sp+0x54] spill-single-def "CSE - aggressive" +; V253 cse4 [V253,T11] ( 16, 13.09) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V254 cse5 [V254,T18] ( 12, 10.15) int -> [sp+0x50] spill-single-def "CSE - moderate" ; V255 rat0 [V255,T09] ( 6, 14.74) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V256 rat1 [V256,T14] ( 6, 11.61) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -566,7 +566,7 @@ G_M36935_IG21: ; bbWeight=1.84, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r ldr lr, [sp+0x48] // [V04 loc0] ; gcrRegs +[lr] cmp lr, 0
- bne G_M36935_IG126
+ bne G_M36935_IG128
;; size=56 bbWeight=1.84 PerfScore 35.01 G_M36935_IG22: ; bbWeight=1.84, gcVars=00000000000000006030000000200000 {V04 V12 V13 V158 V246}, gcrefRegs=00CA {r1 r3 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[lr] +[r3] @@ -594,7 +594,7 @@ G_M36935_IG24: ; bbWeight=0.92, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 movw r8, 0xd1ff movt r8, 0xd1ff cmp r3, r8
- bne G_M36935_IG129
+ bne G_M36935_IG131
movs r3, 0 mov r8, r3 ; gcrRegs +[r8] @@ -763,7 +763,7 @@ G_M36935_IG39: ; bbWeight=0.36, gcVars=00000000000000006030000000200000 { adc r0, lr, r0 ldr r2, [sp+0x60] // [V221 tmp200] cmp r0, r2
- bgt G_M36935_IG131
+ bgt G_M36935_IG133
str r0, [sp+0xA4] // [V19 loc15] str r8, [sp+0x84] // [V105 tmp84] lsls r0, r0, 1 @@ -1093,7 +1093,7 @@ G_M36935_IG69: ; bbWeight=1.45, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 ldr r0, [r5+0x0C] subs r0, r0, r2 cmp r0, r1
- blt G_M36935_IG130
+ blt G_M36935_IG132
;; size=14 bbWeight=1.45 PerfScore 8.69 G_M36935_IG70: ; bbWeight=1.45, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 {r5}, byref, isz add r0, r5, 8 @@ -1690,9 +1690,7 @@ G_M36935_IG110: ; bbWeight=0, gcVars=00000000000000002030000000000800 {V0 bls G_M36935_IG97 lsls r0, r3, 1 ldrh r1, [r2+r0]
- mov r0, r1 - mov r1, r0 - ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG111: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz sub r0, r1, 48 cmp r0, 9 @@ -1709,14 +1707,12 @@ G_M36935_IG112: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG97 lsls r1, r3, 1 ldrh r1, [r2+r1]
- mov r0, r1 - mov r1, r0 - ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG113: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz cmp r1, 32 beq SHORT G_M36935_IG112 cmp r1, 44
- bne SHORT G_M36935_IG121
+ bne SHORT G_M36935_IG123
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz adds r3, r3, 1 @@ -1724,10 +1720,8 @@ G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG97 lsls r1, r3, 1 ldrh r1, [r2+r1]
- mov r0, r1 - cmp r0, 32
+ cmp r1, 32
beq SHORT G_M36935_IG114
- mov r1, r0
cmp r1, 45 bne SHORT G_M36935_IG115 mov r12, 1 @@ -1737,9 +1731,7 @@ G_M36935_IG114: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bls G_M36935_IG97 lsls r1, r3, 1 ldrh r1, [r2+r1]
- mov r0, r1 - mov r1, r0 - ;; size=48 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG115: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz sub r0, r1, 48 mov r12, r0 @@ -1747,9 +1739,11 @@ G_M36935_IG115: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 bhs SHORT G_M36935_IG116 adds r3, r3, 1 cmp r4, r3
- bhi SHORT G_M36935_IG118 - b SHORT G_M36935_IG97 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG97 + cmp r3, 0 + blt SHORT G_M36935_IG120 + b SHORT G_M36935_IG118 + ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG116: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r6-r7] ; byrRegs -[r2 r5] @@ -1761,52 +1755,73 @@ G_M36935_IG117: ; bbWeight=0, gcVars=00000000000000002030000000000800 {V0 ; gcrRegs +[r6-r7] ; byrRegs +[r2 r5] ; GC ptr vars +{V04 V11 V158 V246 V253}
- movs r1, 10 - mul r12, r12, r1 - add r0, r12 - sub r12, r0, 48
+ movs r0, 10 + mul r12, r12, r0 + add r1, r12 + sub r12, r1, 48 + mov r1, r12 + adds r3, r3, 1 + cmp r4, r3 + mov r12, r1 + bls G_M36935_IG97 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG118: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz + lsls r1, r3, 1 + ldrh r1, [r2+r1] + sub r0, r1, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG122 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r12, r0 + blt SHORT G_M36935_IG117 + b SHORT G_M36935_IG122 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG119: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz + movs r0, 10 + mul r12, r12, r0 + add r1, r12 + sub r12, r1, 48
str r12, [sp+0xB4] // [V07 loc3] adds r3, r3, 1 cmp r4, r3 ldr r12, [sp+0xB4] // [V07 loc3] bls G_M36935_IG97 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG118: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG120: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r3, r4 bhs G_M36935_IG103
- lsls r1, r3, 1 - ldrh r1, [r2+r1] - mov r0, r1 - sub r1, r0, 48 - cmp r1, 9 - bhi SHORT G_M36935_IG120 - movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r12, r1 - blt SHORT G_M36935_IG117 - b SHORT G_M36935_IG120 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG119: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ lsls r0, r3, 1 + ldrh r1, [r2+r0] + sub r0, r1, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG122 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r12, r0 + blt SHORT G_M36935_IG119 + b SHORT G_M36935_IG122 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG121: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r3, r3, 1 cmp r4, r3 bls G_M36935_IG97
- lsls r0, r3, 1 - ldrh r0, [r2+r0]
+ lsls r1, r3, 1 + ldrh r1, [r2+r1]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG120: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz - cmp r0, 32 - mov r1, r0 - beq SHORT G_M36935_IG119
+G_M36935_IG122: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz + cmp r1, 32 + beq SHORT G_M36935_IG121
str r12, [sp+0xB4] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M36935_IG121: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M36935_IG123: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r1, 125 beq G_M36935_IG19 cmp r1, 58 bne G_M36935_IG98 mov r0, r3 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG122: ; bbWeight=0, gcVars=00000000000000000030000000000800 {V04 V246 V253}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
+G_M36935_IG124: ; bbWeight=0, gcVars=00000000000000000030000000000800 {V04 V246 V253}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
; GC ptr vars -{V11 V158} adds r3, r3, 1 cmp r4, r3 @@ -1814,12 +1829,12 @@ G_M36935_IG122: ; bbWeight=0, gcVars=00000000000000000030000000000800 {V0 lsls r1, r3, 1 ldrh r1, [r2+r1] cmp r1, 125
- beq SHORT G_M36935_IG123
+ beq SHORT G_M36935_IG125
cmp r1, 123
- bne SHORT G_M36935_IG122
+ bne SHORT G_M36935_IG124
b SHORT G_M36935_IG98 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG123: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG125: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r0, r0, 1 str r3, [sp+0xBC] // [V05 loc1] subs r1, r3, r0 @@ -1839,16 +1854,16 @@ G_M36935_IG123: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0024 {r2 str r0, [sp+0x28] // [V70 tmp49] ; GC ptr vars +{V70} cmp r1, 0
- bge SHORT G_M36935_IG124
+ bge SHORT G_M36935_IG126
movs r0, 0 ...

+36 (+1.37%) : 383939.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T13] ( 5, 7.92) ref -> [sp+0x5C] class-hnd single-def <System.String> ; V03 arg3 [V03,T27] ( 4, 4 ) struct ( 8) [sp+0xE4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T45] ( 3, 2.69) ref -> [sp+0x58] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 38.00) int -> [sp+0xBC] ld-addr-op -; V06 loc2 [V06,T12] ( 29, 9.93) ushort -> [sp+0xB8] -; V07 loc3 [V07,T31] ( 12, 4.86) int -> [sp+0xB4]
+; V05 loc1 [V05,T00] ( 67, 38.00) int -> [sp+0xBC] ld-addr-op +; V06 loc2 [V06,T12] ( 32, 9.93) ushort -> [sp+0xB8] +; V07 loc3 [V07,T31] ( 15, 4.86) int -> [sp+0xB4]
; V08 loc4 [V08,T41] ( 5, 3.33) ubyte -> [sp+0xB0] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T23] ( 7, 6.60) int -> r9 @@ -222,8 +222,8 @@ ; V210 cse1 [V210,T29] ( 3, 4.97) int -> r1 "CSE - conservative" ; V211 cse2 [V211,T33] ( 3, 4.76) int -> r12 "CSE - conservative" ; V212 cse3 [V212,T52] ( 3, 1.81) int -> r2 "CSE - conservative"
-; V213 cse4 [V213,T03] ( 19, 15.84) int -> [sp+0x64] spill-single-def "CSE - aggressive" -; V214 cse5 [V214,T08] ( 15, 12.79) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V213 cse4 [V213,T03] ( 20, 15.84) int -> [sp+0x64] spill-single-def "CSE - aggressive" +; V214 cse5 [V214,T08] ( 16, 12.79) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V215 cse6 [V215,T09] ( 12, 11.17) int -> [sp+0x60] spill-single-def "CSE - moderate" ; V216 rat0 [V216,T06] ( 6, 13.19) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V217 rat1 [V217,T07] ( 6, 12.98) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -531,7 +531,7 @@ G_M36935_IG22: ; bbWeight=1.65, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 str lr, [sp+0x4C] // [V13 loc9] ; GC ptr vars +{V13} cmp r4, 0
- bne G_M36935_IG118
+ bne G_M36935_IG120
;; size=56 bbWeight=1.65 PerfScore 29.72 G_M36935_IG23: ; bbWeight=1.65, gcVars=000000000000000000C0600000004000 {V04 V12 V13 V131 V207}, gcrefRegs=40C8 {r3 r6 r7 lr}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs -[r4] +[r3] @@ -563,7 +563,7 @@ G_M36935_IG27: ; bbWeight=0.82, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0020 movw r9, 0xd1ff movt r9, 0xd1ff cmp r3, r9
- bne G_M36935_IG121
+ bne G_M36935_IG123
movs r3, 0 mov r9, r3 ; gcrRegs +[r9] @@ -1567,9 +1567,7 @@ G_M36935_IG102: ; bbWeight=0, gcVars=00000000000000000080600000000100 {V0 bls G_M36935_IG86 lsls r0, r3, 1 ldrh r1, [r2+r0]
- mov r0, r1 - mov r1, r0 - ;; size=28 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
G_M36935_IG103: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz sub r0, r1, 48 cmp r0, 9 @@ -1586,14 +1584,12 @@ G_M36935_IG104: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 { bls G_M36935_IG86 lsls r1, r3, 1 ldrh r1, [r2+r1]
- mov r0, r1 - mov r1, r0 - ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG105: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz cmp r1, 32 beq SHORT G_M36935_IG104 cmp r1, 44
- bne SHORT G_M36935_IG113
+ bne SHORT G_M36935_IG115
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG106: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz adds r3, r3, 1 @@ -1601,10 +1597,8 @@ G_M36935_IG106: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 { bls G_M36935_IG86 lsls r1, r3, 1 ldrh r1, [r2+r1]
- mov r0, r1 - cmp r0, 32
+ cmp r1, 32
beq SHORT G_M36935_IG106
- mov r1, r0
cmp r1, 45 bne SHORT G_M36935_IG107 mov r12, 1 @@ -1614,9 +1608,7 @@ G_M36935_IG106: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 { bls G_M36935_IG86 lsls r1, r3, 1 ldrh r1, [r2+r1]
- mov r0, r1 - mov r1, r0 - ;; size=48 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG107: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz sub r0, r1, 48 mov r12, r0 @@ -1624,9 +1616,11 @@ G_M36935_IG107: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 { bhs SHORT G_M36935_IG108 adds r3, r3, 1 cmp r8, r3
- bhi SHORT G_M36935_IG110 - b SHORT G_M36935_IG86 - ;; size=20 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG86 + cmp r3, 0 + blt SHORT G_M36935_IG112 + b SHORT G_M36935_IG110 + ;; size=26 bbWeight=0 PerfScore 0.00
G_M36935_IG108: ; bbWeight=0, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[r4 r6-r7] ; byrRegs -[r2 r5] @@ -1638,52 +1632,73 @@ G_M36935_IG109: ; bbWeight=0, gcVars=00000000000000000080600000000100 {V0 ; gcrRegs +[r4 r6-r7] ; byrRegs +[r2 r5] ; GC ptr vars +{V04 V08 V55 V131 V207 V214}
- movs r1, 10 - mul r12, r12, r1 - add r0, r12 - sub r12, r0, 48
+ movs r0, 10 + mul r12, r12, r0 + add r1, r12 + sub r12, r1, 48 + mov r1, r12 + adds r3, r3, 1 + cmp r8, r3 + mov r12, r1 + bls G_M36935_IG86 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG110: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz + lsls r1, r3, 1 + ldrh r1, [r2+r1] + sub r0, r1, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG114 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r12, r0 + blt SHORT G_M36935_IG109 + b SHORT G_M36935_IG114 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG111: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz + movs r0, 10 + mul r12, r12, r0 + add r1, r12 + sub r12, r1, 48
str r12, [sp+0xB4] // [V07 loc3] adds r3, r3, 1 cmp r8, r3 ldr r12, [sp+0xB4] // [V07 loc3] bls G_M36935_IG86 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG110: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG112: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r3, r8 bhs G_M36935_IG92
- lsls r1, r3, 1 - ldrh r1, [r2+r1] - mov r0, r1 - sub r1, r0, 48 - cmp r1, 9 - bhi SHORT G_M36935_IG112 - movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r12, r1 - blt SHORT G_M36935_IG109 - b SHORT G_M36935_IG112 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG111: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ lsls r0, r3, 1 + ldrh r1, [r2+r0] + sub r0, r1, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG114 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r12, r0 + blt SHORT G_M36935_IG111 + b SHORT G_M36935_IG114 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG113: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r3, r3, 1 cmp r8, r3 bls G_M36935_IG86
- lsls r0, r3, 1 - ldrh r0, [r2+r0]
+ lsls r1, r3, 1 + ldrh r1, [r2+r1]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG112: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz - cmp r0, 32 - mov r1, r0 - beq SHORT G_M36935_IG111
+G_M36935_IG114: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz + cmp r1, 32 + beq SHORT G_M36935_IG113
str r12, [sp+0xB4] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M36935_IG113: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M36935_IG115: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
cmp r1, 125 beq G_M36935_IG20 cmp r1, 58 bne G_M36935_IG87 mov r0, r3 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG114: ; bbWeight=0, gcVars=00000000000000000000600000000100 {V04 V207 V214}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
+G_M36935_IG116: ; bbWeight=0, gcVars=00000000000000000000600000000100 {V04 V207 V214}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, gcvars, byref, isz
; GC ptr vars -{V08 V55 V131} adds r3, r3, 1 cmp r8, r3 @@ -1691,12 +1706,12 @@ G_M36935_IG114: ; bbWeight=0, gcVars=00000000000000000000600000000100 {V0 lsls r1, r3, 1 ldrh r1, [r2+r1] cmp r1, 125
- beq SHORT G_M36935_IG115
+ beq SHORT G_M36935_IG117
cmp r1, 123
- bne SHORT G_M36935_IG114
+ bne SHORT G_M36935_IG116
b SHORT G_M36935_IG87 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG115: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
+G_M36935_IG117: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 {r2 r5}, byref, isz
adds r0, r0, 1 str r3, [sp+0xBC] // [V05 loc1] subs r1, r3, r0 @@ -1714,16 +1729,16 @@ G_M36935_IG115: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0024 { str r0, [sp+0x38] // [V83 tmp62] ; GC ptr vars +{V83} cmp r1, 0
- bge SHORT G_M36935_IG116
+ bge SHORT G_M36935_IG118
movs r0, 0 ; byrRegs -[r0]
- b SHORT G_M36935_IG117
+ b SHORT G_M36935_IG119
;; size=42 bbWeight=0 PerfScore 0.00
-G_M36935_IG116: ; bbWeight=0, gcVars=00000000002000000000600000000100 {V04 V83 V207 V214}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
+G_M36935_IG118: ; bbWeight=0, gcVars=00000000002000000000600000000100 {V04 V83 V207 V214}, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, gcvars, byref
; byrRegs -[r2] movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M36935_IG117: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
+G_M36935_IG119: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 {r5}, byref, isz
movw r1, 0xd1ff movt r1, 0xd1ff ldr r1, [r1] @@ -1745,7 +1760,7 @@ G_M36935_IG117: ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0020 { ; byrRegs -[r3] b SHORT G_M36935_IG20 ;; size=30 bbWeight=0 PerfScore 0.00 ...

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

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T17] ( 5, 8.02) ref -> [sp+0x4C] class-hnd single-def <System.String> ; V03 arg3 [V03,T27] ( 4, 4 ) struct ( 8) [sp+0xBC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T43] ( 3, 2.94) ref -> [sp+0x48] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 43.00) int -> [sp+0x94] ld-addr-op -; V06 loc2 [V06,T10] ( 29, 11.64) ushort -> [sp+0x90] -; V07 loc3 [V07,T31] ( 13, 5.76) int -> [sp+0x8C]
+; V05 loc1 [V05,T00] ( 67, 43.00) int -> [sp+0x94] ld-addr-op +; V06 loc2 [V06,T10] ( 32, 11.64) ushort -> [sp+0x90] +; V07 loc3 [V07,T31] ( 16, 5.76) int -> [sp+0x8C]
; V08 loc4 [V08,T39] ( 5, 3.93) ubyte -> [sp+0x88] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T20] ( 7, 7.76) int -> [sp+0x84] @@ -154,8 +154,8 @@ ; V142 cse1 [V142,T30] ( 3, 5.82) int -> r2 "CSE - moderate" ; V143 cse2 [V143,T33] ( 3, 5.65) int -> r1 "CSE - moderate" ; V144 cse3 [V144,T32] ( 5, 5.65) int -> registers multi-def "CSE - moderate"
-; V145 cse4 [V145,T03] ( 19, 17.65) int -> [sp+0x54] spill-single-def "CSE - aggressive" -; V146 cse5 [V146,T07] ( 15, 13.85) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V145 cse4 [V145,T03] ( 20, 17.65) int -> [sp+0x54] spill-single-def "CSE - aggressive" +; V146 cse5 [V146,T07] ( 16, 13.85) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V147 cse6 [V147,T08] ( 14, 13.19) int -> [sp+0x50] "CSE - moderate" ; V148 rat0 [V148,T04] ( 6, 15.51) ref -> r2 class-hnd "replacement local" <System.ISpanFormattable> ; V149 rat1 [V149,T06] ( 6, 15.09) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -449,7 +449,7 @@ G_M36935_IG21: ; bbWeight=1.94, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r ldr r12, [sp+0x48] // [V04 loc0] ; gcrRegs +[r12] cmp r12, 0
- bne G_M36935_IG99
+ bne G_M36935_IG101
;; size=54 bbWeight=1.94 PerfScore 34.91 G_M36935_IG22: ; bbWeight=1.94, gcVars=000000000003080000002000 {V04 V12 V13 V93}, gcrefRegs=44C0 {r6 r7 r10 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz ; gcrRegs -[r12] +[r10] @@ -501,7 +501,7 @@ G_M36935_IG28: ; bbWeight=0.94, gcrefRegs=40C4 {r2 r6 r7 lr}, byrefRegs=0 movw r1, 0xd1ff movt r1, 0xd1ff cmp r2, r1
- bne G_M36935_IG103
+ bne G_M36935_IG105
movs r2, 0 ;; size=18 bbWeight=0.94 PerfScore 5.66 G_M36935_IG29: ; bbWeight=1.89, gcrefRegs=40C4 {r2 r6 r7 lr}, byrefRegs=0120 {r5 r8}, byref, isz @@ -712,7 +712,7 @@ G_M36935_IG47: ; bbWeight=0.05, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r adds r0, r0, r3 str r0, [r5+0x04] cmp r10, 0
- bne G_M36935_IG102
+ bne G_M36935_IG104
ldr r4, [sp+0x94] // [V05 loc1] b SHORT G_M36935_IG05 ;; size=30 bbWeight=0.05 PerfScore 0.59 @@ -932,8 +932,8 @@ G_M36935_IG59: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r bge SHORT G_M36935_IG63 ;; size=30 bbWeight=0 PerfScore 0.00 G_M36935_IG60: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz
- ldr r1, [sp+0x88] // [V08 loc4] - cmp r1, 0
+ ldr r2, [sp+0x88] // [V08 loc4] + cmp r2, 0
beq SHORT G_M36935_IG66 ldr r2, [r5+0x04] mov r1, r2 @@ -1240,8 +1240,9 @@ G_M36935_IG84: ; bbWeight=0, gcVars=000000000001080000000080 {V04 V93 V14 bls G_M36935_IG70 lsls r0, r4, 1 ldrh r0, [r1+r0]
- mov r3, r0 - ;; size=28 bbWeight=0 PerfScore 0.00
+ mov r2, r0 + mov r3, r2 + ;; size=30 bbWeight=0 PerfScore 0.00
G_M36935_IG85: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz sub r0, r3, 48 cmp r0, 9 @@ -1260,14 +1261,12 @@ G_M36935_IG86: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r bls G_M36935_IG70 lsls r3, r4, 1 ldrh r3, [r1+r3]
- mov r0, r3 - mov r3, r0 - ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG87: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz cmp r3, 32 beq SHORT G_M36935_IG86 cmp r3, 44
- bne SHORT G_M36935_IG94
+ bne SHORT G_M36935_IG96
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz adds r4, r4, 1 @@ -1275,10 +1274,8 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r bls G_M36935_IG70 lsls r3, r4, 1 ldrh r3, [r1+r3]
- mov r0, r3 - cmp r0, 32
+ cmp r3, 32
beq SHORT G_M36935_IG88
- mov r3, r0
cmp r3, 45 bne SHORT G_M36935_IG89 movs r3, 1 @@ -1287,9 +1284,10 @@ G_M36935_IG88: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r bls G_M36935_IG70 lsls r0, r4, 1 ldrh r0, [r1+r0]
+ mov lr, r0
str r3, [sp+0x88] // [V08 loc4]
- mov r3, r0 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r3, lr + ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz sub r0, r3, 48 mov lr, r0 @@ -1297,56 +1295,79 @@ G_M36935_IG89: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r bhs G_M36935_IG69 adds r4, r4, 1 cmp r10, r4
- bhi SHORT G_M36935_IG91 - b SHORT G_M36935_IG70 - ;; size=22 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG70 + cmp r4, 0 + blt SHORT G_M36935_IG93 + b SHORT G_M36935_IG91 + ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
- movs r3, 10 - mul lr, lr, r3 - add r0, lr - sub lr, r0, 48
+ movs r0, 10 + mul lr, lr, r0 + add r3, lr + sub lr, r3, 48 + mov r3, lr + adds r4, r4, 1 + cmp r10, r4 + mov lr, r3 + bls G_M36935_IG70 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz + lsls r3, r4, 1 + ldrh r3, [r1+r3] + sub r0, r3, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG95 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp lr, r0 + blt SHORT G_M36935_IG90 + b SHORT G_M36935_IG95 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz + movs r0, 10 + mul lr, lr, r0 + add r3, lr + sub lr, r3, 48
str lr, [sp+0x8C] // [V07 loc3] adds r4, r4, 1 cmp r10, r4 ldr lr, [sp+0x8C] // [V07 loc3] bls G_M36935_IG70 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG91: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
cmp r4, r10 bhs G_M36935_IG76
- lsls r3, r4, 1 - ldrh r3, [r1+r3] - mov r0, r3 - sub r3, r0, 48 - cmp r3, 9 - bhi SHORT G_M36935_IG93 - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp lr, r3 - blt SHORT G_M36935_IG90 - b SHORT G_M36935_IG93 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG92: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+ lsls r0, r4, 1 + ldrh r3, [r1+r0] + sub r0, r3, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG95 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp lr, r0 + blt SHORT G_M36935_IG92 + b SHORT G_M36935_IG95 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
adds r4, r4, 1 cmp r10, r4 bls G_M36935_IG70
- lsls r0, r4, 1 - ldrh r0, [r1+r0]
+ lsls r3, r4, 1 + ldrh r3, [r1+r3]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG93: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz - cmp r0, 32 - mov r3, r0 - beq SHORT G_M36935_IG92
+G_M36935_IG95: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz + cmp r3, 32 + beq SHORT G_M36935_IG94
str lr, [sp+0x8C] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M36935_IG94: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
cmp r3, 125 beq G_M36935_IG19 cmp r3, 58 bne G_M36935_IG71 mov r0, r4 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG95: ; bbWeight=0, gcVars=000000000000080000000080 {V04 V146}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, gcvars, byref, isz
+G_M36935_IG97: ; bbWeight=0, gcVars=000000000000080000000080 {V04 V146}, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, gcvars, byref, isz
; GC ptr vars -{V07 V93} adds r4, r4, 1 cmp r10, r4 @@ -1354,12 +1375,12 @@ G_M36935_IG95: ; bbWeight=0, gcVars=000000000000080000000080 {V04 V146}, lsls r3, r4, 1 ldrh r3, [r1+r3] cmp r3, 125
- beq SHORT G_M36935_IG96
+ beq SHORT G_M36935_IG98
cmp r3, 123
- bne SHORT G_M36935_IG95
+ bne SHORT G_M36935_IG97
b SHORT G_M36935_IG71 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
+G_M36935_IG98: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz
adds r0, r0, 1 str r4, [sp+0x94] // [V05 loc1] subs r3, r4, r0 @@ -1376,15 +1397,15 @@ G_M36935_IG96: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r str r12, [sp+0x2C] // [V70 tmp49] ; GC ptr vars +{V70} cmp r3, 0
- bge SHORT G_M36935_IG97
+ bge SHORT G_M36935_IG99
movs r0, 0
- b SHORT G_M36935_IG98
...

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

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T17] ( 5, 8.18) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T30] ( 4, 4 ) struct ( 8) [sp+0xC4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T43] ( 3, 3.06) ref -> r10 class-hnd single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 45.12) int -> [sp+0x9C] ld-addr-op -; V06 loc2 [V06,T12] ( 29, 12.24) ushort -> [sp+0x98] -; V07 loc3 [V07,T31] ( 12, 5.95) int -> [sp+0x94]
+; V05 loc1 [V05,T00] ( 67, 45.12) int -> [sp+0x9C] ld-addr-op +; V06 loc2 [V06,T12] ( 32, 12.24) ushort -> [sp+0x98] +; V07 loc3 [V07,T31] ( 15, 5.95) int -> [sp+0x94]
; V08 loc4 [V08,T40] ( 5, 4.03) ubyte -> [sp+0x90] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T21] ( 7, 8.05) int -> [sp+0x8C] @@ -158,8 +158,8 @@ ; V146 cse1 [V146,T27] ( 3, 6.20) int -> r2 "CSE - moderate" ; V147 cse2 [V147,T33] ( 3, 5.86) int -> lr "CSE - moderate" ; V148 cse3 [V148,T32] ( 5, 5.87) int -> registers multi-def "CSE - moderate"
-; V149 cse4 [V149,T03] ( 19, 18.42) int -> [sp+0x58] spill-single-def "CSE - aggressive" -; V150 cse5 [V150,T07] ( 15, 14.39) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
+; V149 cse4 [V149,T03] ( 20, 18.42) int -> [sp+0x58] spill-single-def "CSE - aggressive" +; V150 cse5 [V150,T07] ( 16, 14.39) byref -> [sp+0x1C] spill-single-def "CSE - moderate"
; V151 cse6 [V151,T08] ( 12, 13.70) int -> [sp+0x54] spill-single-def "CSE - moderate" ; V152 rat0 [V152,T05] ( 6, 16.09) ref -> r2 class-hnd "replacement local" <System.ISpanFormattable> ; V153 rat1 [V153,T06] ( 6, 16.07) ref -> registers class-hnd "replacement local" <<unknown class>> @@ -463,7 +463,7 @@ G_M36935_IG22: ; bbWeight=2.01, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=002 str lr, [sp+0x4C] // [V13 loc9] ; GC ptr vars +{V13} cmp r10, 0
- bne G_M36935_IG105
+ bne G_M36935_IG107
;; size=54 bbWeight=2.01 PerfScore 38.24 G_M36935_IG23: ; bbWeight=2.01, gcVars=000000000002100000002000 {V13 V95 V143}, gcrefRegs=45C8 {r3 r6 r7 r8 r10 lr}, byrefRegs=0020 {r5}, gcvars, byref, isz ; gcrRegs +[r8] @@ -496,7 +496,7 @@ G_M36935_IG27: ; bbWeight=1.01, gcrefRegs=04CC {r2 r3 r6 r7 r10}, byrefRe movw r0, 0xd1ff movt r0, 0xd1ff cmp r2, r0
- bne G_M36935_IG108
+ bne G_M36935_IG110
movs r2, 0 ;; size=18 bbWeight=1.01 PerfScore 6.03 G_M36935_IG28: ; bbWeight=2.01, gcrefRegs=04CC {r2 r3 r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz @@ -952,8 +952,8 @@ G_M36935_IG66: ; bbWeight=0, gcVars=000000000000100000000000 {V143}, gcre ; gcrRegs -[r0 r3] +[r8] ; GC ptr vars -{V20} ldr r4, [sp+0x9C] // [V05 loc1]
- ldr r0, [sp+0x90] // [V08 loc4] - cmp r0, 0
+ ldr r2, [sp+0x90] // [V08 loc4] + cmp r2, 0
beq SHORT G_M36935_IG71 ldr r2, [r5+0x04] mov r0, r2 @@ -1261,8 +1261,9 @@ G_M36935_IG89: ; bbWeight=0, gcVars=000000000002100000000080 {V95 V143 V1 bls G_M36935_IG75 lsls r0, r4, 1 ldrh r0, [r1+r0]
- mov r3, r0 - ;; size=28 bbWeight=0 PerfScore 0.00
+ mov r2, r0 + mov r3, r2 + ;; size=30 bbWeight=0 PerfScore 0.00
G_M36935_IG90: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz sub r0, r3, 48 cmp r0, 9 @@ -1309,14 +1310,12 @@ G_M36935_IG92: ; bbWeight=0, gcVars=000000000002100000000080 {V95 V143 V1 bls G_M36935_IG75 lsls r3, r4, 1 ldrh r3, [r1+r3]
- mov r0, r3 - mov r3, r0 - ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG93: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz cmp r3, 32 beq SHORT G_M36935_IG92 cmp r3, 44
- bne SHORT G_M36935_IG100
+ bne SHORT G_M36935_IG102
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG94: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz adds r4, r4, 1 @@ -1324,10 +1323,8 @@ G_M36935_IG94: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 { bls G_M36935_IG75 lsls r3, r4, 1 ldrh r3, [r1+r3]
- mov r0, r3 - cmp r0, 32
+ cmp r3, 32
beq SHORT G_M36935_IG94
- mov r3, r0
cmp r3, 45 bne SHORT G_M36935_IG95 movs r3, 1 @@ -1336,9 +1333,10 @@ G_M36935_IG94: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 { bls G_M36935_IG75 lsls r0, r4, 1 ldrh r0, [r1+r0]
+ mov lr, r0
str r3, [sp+0x90] // [V08 loc4]
- mov r3, r0 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r3, lr + ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG95: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz sub r12, r3, 48 mov lr, r12 @@ -1346,56 +1344,79 @@ G_M36935_IG95: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 { bhs G_M36935_IG74 adds r4, r4, 1 cmp r8, r4
- bhi SHORT G_M36935_IG97 - b SHORT G_M36935_IG75 - ;; size=22 bbWeight=0 PerfScore 0.00
+ bls G_M36935_IG75 + cmp r4, 0 + blt SHORT G_M36935_IG99 + b SHORT G_M36935_IG97 + ;; size=28 bbWeight=0 PerfScore 0.00
G_M36935_IG96: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
- movs r3, 10 - mul lr, lr, r3 - add r0, lr - sub lr, r0, 48
+ movs r0, 10 + mul lr, lr, r0 + add r3, lr + sub lr, r3, 48 + mov r3, lr + adds r4, r4, 1 + cmp r8, r4 + mov lr, r3 + bls G_M36935_IG75 + ;; size=24 bbWeight=0 PerfScore 0.00 +G_M36935_IG97: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz + lsls r3, r4, 1 + ldrh r3, [r1+r3] + sub r0, r3, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG101 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp lr, r0 + blt SHORT G_M36935_IG96 + b SHORT G_M36935_IG101 + ;; size=26 bbWeight=0 PerfScore 0.00 +G_M36935_IG98: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz + movs r0, 10 + mul lr, lr, r0 + add r3, lr + sub lr, r3, 48
str lr, [sp+0x94] // [V07 loc3] adds r4, r4, 1 cmp r8, r4 ldr lr, [sp+0x94] // [V07 loc3] bls G_M36935_IG75 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M36935_IG97: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+G_M36935_IG99: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
cmp r4, r8 bhs G_M36935_IG81
- lsls r3, r4, 1 - ldrh r3, [r1+r3] - mov r0, r3 - sub r3, r0, 48 - cmp r3, 9 - bhi SHORT G_M36935_IG99 - movw r3, 0xd1ff - movt r3, 0xd1ff - cmp lr, r3 - blt SHORT G_M36935_IG96 - b SHORT G_M36935_IG99 - ;; size=34 bbWeight=0 PerfScore 0.00 -G_M36935_IG98: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+ lsls r0, r4, 1 + ldrh r3, [r1+r0] + sub r0, r3, 48 + cmp r0, 9 + bhi SHORT G_M36935_IG101 + movw r0, 0xd1ff + movt r0, 0xd1ff + cmp lr, r0 + blt SHORT G_M36935_IG98 + b SHORT G_M36935_IG101 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M36935_IG100: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
adds r4, r4, 1 cmp r8, r4 bls G_M36935_IG75
- lsls r0, r4, 1 - ldrh r0, [r1+r0]
+ lsls r3, r4, 1 + ldrh r3, [r1+r3]
;; size=12 bbWeight=0 PerfScore 0.00
-G_M36935_IG99: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz - cmp r0, 32 - mov r3, r0 - beq SHORT G_M36935_IG98
+G_M36935_IG101: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz + cmp r3, 32 + beq SHORT G_M36935_IG100
str lr, [sp+0x94] // [V07 loc3]
- ;; size=10 bbWeight=0 PerfScore 0.00 -G_M36935_IG100: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M36935_IG102: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
cmp r3, 125 beq G_M36935_IG20 cmp r3, 58 bne G_M36935_IG76 mov r0, r4 ;; size=14 bbWeight=0 PerfScore 0.00
-G_M36935_IG101: ; bbWeight=0, gcVars=000000000000100000000080 {V143 V150}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
+G_M36935_IG103: ; bbWeight=0, gcVars=000000000000100000000080 {V143 V150}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, gcvars, byref, isz
; GC ptr vars -{V07 V95} adds r4, r4, 1 cmp r8, r4 @@ -1403,12 +1424,12 @@ G_M36935_IG101: ; bbWeight=0, gcVars=000000000000100000000080 {V143 V150} lsls r3, r4, 1 ldrh r3, [r1+r3] cmp r3, 125
- beq SHORT G_M36935_IG102
+ beq SHORT G_M36935_IG104
cmp r3, 123
- bne SHORT G_M36935_IG101
+ bne SHORT G_M36935_IG103
b SHORT G_M36935_IG76 ;; size=22 bbWeight=0 PerfScore 0.00
-G_M36935_IG102: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
+G_M36935_IG104: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 {r1 r5}, byref, isz
adds r0, r0, 1 str r4, [sp+0x9C] // [V05 loc1] subs r3, r4, r0 @@ -1425,15 +1446,15 @@ G_M36935_IG102: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0022 str r12, [sp+0x38] // [V70 tmp49] ; GC ptr vars +{V70} cmp r3, 0
- bge SHORT G_M36935_IG103
+ bge SHORT G_M36935_IG105
movs r0, 0
- b SHORT G_M36935_IG104
+ b SHORT G_M36935_IG106
;; size=44 bbWeight=0 PerfScore 0.00
-G_M36935_IG103: ; bbWeight=0, gcVars=000001000000100000000080 {V70 V143 V150}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, gcvars, byref
+G_M36935_IG105: ; bbWeight=0, gcVars=000001000000100000000080 {V70 V143 V150}, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, gcvars, byref
; byrRegs -[r1 r12] movs r0, 1 ;; size=2 bbWeight=0 PerfScore 0.00
-G_M36935_IG104: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz
+G_M36935_IG106: ; bbWeight=0, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0020 {r5}, byref, isz
...

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

@@ -14,9 +14,9 @@ ; V02 arg2 [V02,T17] ( 5, 7.99) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T26] ( 4, 4 ) struct ( 8) [sp+0xB4] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T43] ( 3, 2.99) ref -> [sp+0x48] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62, 43.75) int -> [sp+0x8C] ld-addr-op -; V06 loc2 [V06,T11] ( 29, 11.92) ushort -> [sp+0x88] -; V07 loc3 [V07,T29] ( 13, 5.96) int -> [sp+0x84]
+; V05 loc1 [V05,T00] ( 67, 43.75) int -> [sp+0x8C] ld-addr-op +; V06 loc2 [V06,T11] ( 32, 11.92) ushort -> [sp+0x88] +; V07 loc3 [V07,T29] ( 16, 5.96) int -> [sp+0x84]
; V08 loc4 [V08,T38] ( 5, 3.97) ubyte -> [sp+0x80] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T20] ( 7, 7.95) int -> [sp+0x7C] @@ -151,9 +151,9 @@ ; V139 cse0 [V139,T31] ( 3, 5.96) int -> r2 "CSE - moderate" ; V140 cse1 [V140,T33] ( 3, 5.95) int -> r1 "CSE - moderate" ; V141 cse2 [V141,T32] ( 5, 5.96) int -> registers multi-def "CSE - moderate"
-; V142 cse3 [V142,T02] ( 19, 17.91) int -> [sp+0x50] spill-single-def "CSE - aggressive"
+; V142 cse3 [V142,T02] ( 20, 17.91) int -> [sp+0x50] spill-single-def "CSE - aggressive"
; V143 cse4 [V143,T07] ( 14, 13.97) int -> [sp+0x4C] "CSE - moderate"
-; V144 cse5 [V144,T08] ( 15, 13.93) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V144 cse5 [V144,T08] ( 16, 13.93) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V145 rat0 [V145,T04] ( 6, 15.89) ref -> registers class-hnd "replacement local" <<unknown class>> ; V146 rat1 [V146,T05] ( 6, 15.89) ref -> registers class-hnd "replacement local" <<unknown class>> ; @@ -260,7 +260,7 @@ G_M36935_IG08: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r G_M36935_IG09: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz ldr r3, [sp+0x54] // [V100 tmp79] cmp r10, r3
- bhi G_M36935_IG96
+ bhi G_M36935_IG98
cmp r10, 0 bge SHORT G_M36935_IG10 movs r0, 0 @@ -287,7 +287,7 @@ G_M36935_IG12: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r ldr r3, [r5+0x04] ldr r2, [r0+0x04] cmp r3, r2
- bhi G_M36935_IG96
+ bhi G_M36935_IG98
ldr r0, [r0] lsls r1, r3, 1 adds r1, r0, r1 @@ -314,7 +314,7 @@ G_M36935_IG14: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r ; gcr arg pop 0 ldr r2, [sp+0x70] // [V55 tmp34] cmp r10, r2
- bhi G_M36935_IG97
+ bhi G_M36935_IG99
lsl r2, r10, 1 ldr r0, [sp+0x30] // [V56 tmp35] ; byrRegs +[r0] @@ -340,14 +340,14 @@ G_M36935_IG14: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r ldrh r0, [r3+r0] adds r4, r4, 1 cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r2, r4, 1 ldrh r2, [r3+r2] str r2, [sp+0x88] // [V06 loc2] cmp r0, r2 beq G_M36935_IG50 cmp r0, 123
- bne G_M36935_IG90
+ bne G_M36935_IG92
movs r1, 0 str r1, [sp+0x84] // [V07 loc3] mov lr, 0 @@ -397,10 +397,10 @@ G_M36935_IG18: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r sub r2, r3, 48 str r2, [sp+0x7C] // [V10 loc6] cmp r2, 10
- bhs G_M36935_IG91
+ bhs G_M36935_IG93
adds r4, r4, 1 cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r3, r4, 1 ldr r1, [sp+0x14] // [V144 cse5] ; byrRegs +[r1] @@ -434,7 +434,7 @@ G_M36935_IG21: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r movs r3, 0 ldr r2, [sp+0x7C] // [V10 loc6] cmp r2, r9
- bhs G_M36935_IG95
+ bhs G_M36935_IG97
lsls r1, r2, 2 ldr lr, [r8+r1] ; gcrRegs +[lr] @@ -443,7 +443,7 @@ G_M36935_IG21: ; bbWeight=1.99, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r ldr r12, [sp+0x48] // [V04 loc0] ; gcrRegs +[r12] cmp r12, 0
- bne G_M36935_IG68
+ bne G_M36935_IG70
;; size=50 bbWeight=1.99 PerfScore 31.79 G_M36935_IG22: ; bbWeight=1.99, gcVars=000000000004080000001000 {V04 V13 V91}, gcrefRegs=44C8 {r3 r6 r7 r10 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz ; gcrRegs -[r12] +[r3 r10] @@ -472,7 +472,7 @@ G_M36935_IG25: ; bbWeight=0.99, gcrefRegs=40CA {r1 r3 r6 r7 lr}, byrefReg movw r2, 0xd1ff movt r2, 0xd1ff cmp r1, r2
- bne G_M36935_IG71
+ bne G_M36935_IG73
movs r1, 0 mov r2, r1 ; gcrRegs +[r2] @@ -487,7 +487,7 @@ G_M36935_IG26: ; bbWeight=1.99, gcrefRegs=40CA {r1 r3 r6 r7 lr}, byrefReg str r2, [sp+0x3C] // [V18 loc14] ; GC ptr vars +{V18} ldr r0, [sp+0x84] // [V07 loc3]
- bne G_M36935_IG72
+ bne G_M36935_IG74
;; size=12 bbWeight=1.99 PerfScore 9.93 G_M36935_IG27: ; bbWeight=1.99, gcrefRegs=40C8 {r3 r6 r7 lr}, byrefRegs=0120 {r5 r8}, byref, isz ; gcrRegs -[r1-r2] @@ -503,7 +503,7 @@ G_M36935_IG28: ; bbWeight=0.99, gcrefRegs=40CC {r2 r3 r6 r7 lr}, byrefReg movw r1, 0xd1ff movt r1, 0xd1ff cmp r2, r1
- bne G_M36935_IG75
+ bne G_M36935_IG77
movs r2, 0 ;; size=18 bbWeight=0.99 PerfScore 5.96 G_M36935_IG29: ; bbWeight=1.99, gcrefRegs=40CC {r2 r3 r6 r7 lr}, byrefRegs=0120 {r5 r8}, byref, isz @@ -513,16 +513,16 @@ G_M36935_IG29: ; bbWeight=1.99, gcrefRegs=40CC {r2 r3 r6 r7 lr}, byrefReg str r1, [sp+0x38] // [V20 loc16] ; GC ptr vars +{V20} cmp r1, 0
- bne G_M36935_IG76
+ bne G_M36935_IG78
cmp lr, 0
- beq G_M36935_IG80
+ beq G_M36935_IG82
ldr r1, [lr] ; gcrRegs -[r1] movw r3, 0xd1ff ; gcrRegs -[r3] movt r3, 0xd1ff cmp r1, r3
- bne G_M36935_IG81
+ bne G_M36935_IG83
;; size=36 bbWeight=1.99 PerfScore 21.86 G_M36935_IG30: ; bbWeight=1.99, gcVars=000000000000080000000000 {V04}, gcrefRegs=40C0 {r6 r7 lr}, byrefRegs=0120 {r5 r8}, gcvars, byref ; gcrRegs -[r2] @@ -535,7 +535,7 @@ G_M36935_IG31: ; bbWeight=1.99, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0120 cmp r3, 0 str r0, [sp+0x84] // [V07 loc3] str r10, [sp+0x80] // [V08 loc4]
- beq G_M36935_IG82
+ beq G_M36935_IG84
;; size=12 bbWeight=1.99 PerfScore 7.95 G_M36935_IG32: ; bbWeight=0.99, gcrefRegs=00C8 {r3 r6 r7}, byrefRegs=0120 {r5 r8}, byref mov r10, r3 @@ -546,7 +546,7 @@ G_M36935_IG33: ; bbWeight=1.99, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012 ldr r3, [r10+0x04] ldr r0, [sp+0x84] // [V07 loc3] cmp r3, r0
- blt G_M36935_IG83
+ blt G_M36935_IG85
;; size=12 bbWeight=1.99 PerfScore 7.95 G_M36935_IG34: ; bbWeight=1.99, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz ldr r2, [r5+0x04] @@ -568,7 +568,7 @@ G_M36935_IG36: ; bbWeight=1.98, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012 ldr r2, [sp+0x60] // [V76 tmp55] cmp r2, r1 str r3, [sp+0x4C] // [V143 cse4]
- bhi G_M36935_IG96
+ bhi G_M36935_IG98
ldr r0, [r0] lsl lr, r2, 1 add lr, r0 @@ -596,7 +596,7 @@ G_M36935_IG38: ; bbWeight=1.98, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=012 ldr r3, [sp+0x4C] // [V143 cse4] ldr r2, [sp+0x5C] // [V80 tmp59] cmp r3, r2
- bhi G_M36935_IG97
+ bhi G_M36935_IG99
;; size=22 bbWeight=1.98 PerfScore 15.86 G_M36935_IG39: ; bbWeight=1.99, gcrefRegs=04C0 {r6 r7 r10}, byrefRegs=0120 {r5 r8}, byref, isz add r1, r10, 8 @@ -795,11 +795,12 @@ G_M36935_IG53: ; bbWeight=0, gcVars=000000000004080000000100 {V04 V91 V14 str r2, [sp+0x7C] // [V10 loc6] adds r4, r4, 1 cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r0, r4, 1 ldrh r0, [r1+r0]
- mov r3, r0 - ;; size=28 bbWeight=0 PerfScore 0.00
+ mov r2, r0 + mov r3, r2 + ;; size=30 bbWeight=0 PerfScore 0.00
G_M36935_IG54: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz sub r0, r3, 48 cmp r0, 9 @@ -815,134 +816,154 @@ G_M36935_IG54: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r G_M36935_IG55: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz adds r4, r4, 1 cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r3, r4, 1 ldrh r3, [r1+r3]
- mov r0, r3 - mov r3, r0 - ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M36935_IG56: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz cmp r3, 32 beq SHORT G_M36935_IG55 cmp r3, 44
- bne SHORT G_M36935_IG63
+ bne SHORT G_M36935_IG65
;; size=8 bbWeight=0 PerfScore 0.00 G_M36935_IG57: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz adds r4, r4, 1 cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r3, r4, 1 ldrh r3, [r1+r3]
- mov r0, r3 - cmp r0, 32
+ cmp r3, 32
beq SHORT G_M36935_IG57
- mov r3, r0
cmp r3, 45 bne SHORT G_M36935_IG58 movs r3, 1 adds r4, r4, 1 cmp r10, r4
- bls G_M36935_IG92
+ bls G_M36935_IG94
lsls r0, r4, 1 ldrh r0, [r1+r0]
+ mov lr, r0
str r3, [sp+0x80] // [V08 loc4]
- mov r3, r0 - ;; size=42 bbWeight=0 PerfScore 0.00
+ mov r3, lr + ;; size=40 bbWeight=0 PerfScore 0.00
G_M36935_IG58: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0122 {r1 r5 r8}, byref, isz sub r0, r3, 48 mov lr, r0 cmp lr, 10
- bhs G_M36935_IG91
...

librariestestsnotieredcompilation.run.linux.arm.Release.mch

+8 (+0.64%) : 131138.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -8,54 +8,54 @@ ; 14 inlinees with PGO data; 44 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T30] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>> -; V01 loc1 [V01,T22] ( 4, 10.01) ref -> r5 class-hnd exact single-def <<unknown class>>
+; V00 loc0 [V00,T29] ( 3, 5.96) ref -> r4 class-hnd exact single-def <<unknown class>> +; V01 loc1 [V01,T14] ( 7, 21.83) ref -> r5 class-hnd exact single-def <<unknown class>>
; V02 loc2 [V02,T09] ( 7, 24.76) int -> r0 ;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T36] ( 3, 1 ) ref -> [sp+0x50] class-hnd exact EH-live single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T35] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T07] ( 8, 29.03) int -> r4
+; V04 loc4 [V04,T35] ( 3, 1 ) ref -> [sp+0x50] class-hnd exact EH-live single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T34] ( 5, 2 ) ref -> [sp+0x4C] class-hnd exact EH-live single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T07] ( 8, 28.75) int -> r4
; V07 OutArgs [V07 ] ( 1, 1 ) struct (12) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T28] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> -; V09 tmp2 [V09,T23] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> -; V10 tmp3 [V10,T31] ( 2, 4.01) int -> r4 "Inlining Arg" -; V11 tmp4 [V11,T29] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V08 tmp1 [V08,T25] ( 4, 8 ) ref -> r6 class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer> +; V09 tmp2 [V09,T22] ( 5, 10.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor> +; V10 tmp3 [V10,T30] ( 2, 4.01) int -> r4 "Inlining Arg" +; V11 tmp4 [V11,T28] ( 3, 6.01) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V13 tmp6 [V13,T34] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V14 tmp7 [V14,T24] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T25] ( 4, 8.01) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V16 tmp9 [V16,T14] ( 2, 16.02) int -> [sp+0x64] spill-single-def "Inlining Arg" -; V17 tmp10 [V17,T10] ( 3, 24.04) ref -> [sp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V13 tmp6 [V13,T33] ( 3, 3.00) ref -> r9 class-hnd exact single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V14 tmp7 [V14,T23] ( 4, 8.01) ref -> [sp+0x48] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T24] ( 4, 8.01) ref -> [sp+0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V16 tmp9 [V16,T15] ( 2, 15.86) int -> [sp+0x64] spill-single-def "Inlining Arg" +; V17 tmp10 [V17,T11] ( 3, 23.80) ref -> [sp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V19 tmp12 [V19,T17] ( 3, 12.02) ref -> [sp+0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V20 tmp13 [V20,T01] ( 4, 32.05) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V21 tmp14 [V21,T02] ( 4, 32.05) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V19 tmp12 [V19,T18] ( 3, 11.90) ref -> [sp+0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V20 tmp13 [V20,T01] ( 4, 31.73) ref -> [sp+0x38] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V21 tmp14 [V21,T02] ( 4, 31.73) ref -> [sp+0x34] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V22 tmp15 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V23 tmp16 [V23,T15] ( 2, 16.02) int -> [sp+0x60] spill-single-def "Inlining Arg" -; V24 tmp17 [V24,T11] ( 3, 24.04) ref -> [sp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V23 tmp16 [V23,T16] ( 2, 15.86) int -> [sp+0x60] spill-single-def "Inlining Arg" +; V24 tmp17 [V24,T12] ( 3, 23.80) ref -> [sp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V26 tmp19 [V26,T18] ( 3, 12.02) ref -> [sp+0x2C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V27 tmp20 [V27,T03] ( 4, 32.05) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp21 [V28,T04] ( 4, 32.05) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V26 tmp19 [V26,T19] ( 3, 11.90) ref -> [sp+0x2C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V27 tmp20 [V27,T03] ( 4, 31.73) ref -> [sp+0x28] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp21 [V28,T04] ( 4, 31.73) ref -> [sp+0x24] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V29 tmp22 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V32 tmp25 [V32 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V33 tmp26 [V33,T16] ( 2, 16.02) ushort -> [sp+0x5C] spill-single-def "Inlining Arg" -; V34 tmp27 [V34,T12] ( 3, 24.04) ref -> [sp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V33 tmp26 [V33,T17] ( 2, 15.86) ushort -> [sp+0x5C] spill-single-def "Inlining Arg" +; V34 tmp27 [V34,T13] ( 3, 23.80) ref -> [sp+0x20] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V35 tmp28 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V36 tmp29 [V36,T19] ( 3, 12.02) ref -> [sp+0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V37 tmp30 [V37,T05] ( 4, 32.05) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V38 tmp31 [V38,T06] ( 4, 32.05) ref -> [sp+0x14] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V36 tmp29 [V36,T20] ( 3, 11.90) ref -> [sp+0x1C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V37 tmp30 [V37,T05] ( 4, 31.73) ref -> [sp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V38 tmp31 [V38,T06] ( 4, 31.73) ref -> [sp+0x14] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]>
-;* V42 tmp35 [V42,T32] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V43 tmp36 [V43,T26] ( 3, 8.01) ubyte -> r3 "field V30.value (fldOffset=0x1)" P-INDEP
+;* V42 tmp35 [V42,T31] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP +; V43 tmp36 [V43,T26] ( 3, 7.93) ubyte -> r3 "field V30.value (fldOffset=0x1)" P-INDEP
;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP ;* V45 tmp38 [V45 ] ( 0, 0 ) ubyte -> zero-ref "field V31.value (fldOffset=0x1)" P-INDEP
-;* V46 tmp39 [V46,T33] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP -; V47 tmp40 [V47,T27] ( 2, 8.01) ubyte -> r0 "field V40.value (fldOffset=0x1)" P-INDEP
+;* V46 tmp39 [V46,T32] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP +; V47 tmp40 [V47,T27] ( 3, 7.93) ubyte -> r8 "field V40.value (fldOffset=0x1)" P-INDEP
;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V41.hasValue (fldOffset=0x0)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) ubyte -> zero-ref "field V41.value (fldOffset=0x1)" P-INDEP ;* V50 tmp43 [V50 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,12 +64,11 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ushort -> zero-ref "V03.[012..014)" ;* V54 tmp47 [V54 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V55 tmp48 [V55,T00] ( 6, 47.52) byref -> r3 "Spilling address for field-by-field copy"
-; V56 tmp49 [V56,T38] ( 6, 0 ) struct ( 4) [sp+0x58] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> -; V57 PSPSym [V57,T37] ( 1, 1 ) int -> [sp+0x68] do-not-enreg[V] "PSPSym" -; V58 cse0 [V58,T13] ( 5, 20.03) byref -> r8 "CSE - moderate" -; V59 cse1 [V59,T20] ( 3, 12.02) int -> r8 "CSE - moderate" -; V60 cse2 [V60,T21] ( 3, 11.88) int -> r2 "CSE - moderate" -; V61 cse3 [V61,T08] ( 9, 27.04) int -> [sp+0x54] spill-single-def "CSE - aggressive"
+; V56 tmp49 [V56,T37] ( 6, 0 ) struct ( 4) [sp+0x58] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]> +; V57 PSPSym [V57,T36] ( 1, 1 ) int -> [sp+0x68] do-not-enreg[V] "PSPSym" +; V58 cse0 [V58,T10] ( 6, 23.80) int -> r8 "CSE - moderate" +; V59 cse1 [V59,T21] ( 3, 11.88) int -> r2 "CSE - moderate" +; V60 cse2 [V60,T08] ( 9, 26.80) int -> [sp+0x54] spill-single-def "CSE - aggressive"
; TEMP_01 ref -> [r11-0x78] ; ; Lcl frame size = 108 @@ -149,7 +148,7 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b str r7, [sp+0x50] ; GC ptr vars +{V04} ;; size=40 bbWeight=1 PerfScore 14.00
-G_M53770_IG05: ; bbWeight=1, gcVars=0000001000000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG05: ; bbWeight=1, gcVars=0000000800000000 {V04}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff @@ -184,7 +183,7 @@ G_M53770_IG06: ; bbWeight=1, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0 str r6, [sp+0x4C] ; GC ptr vars +{V05} ;; size=22 bbWeight=1 PerfScore 8.00
-G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
+G_M53770_IG07: ; bbWeight=1.00, gcVars=0000000C00000000 {V04 V05}, gcrefRegs=01F0 {r4 r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
str r4, [sp] ; gcr arg write movs r2, 0 @@ -266,7 +265,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefR movw r0, 0xd1ff movt r0, 0xd1ff str r0, [r2+0x0C]
- ldr r9, [sp+0x54] // [V61 cse3]
+ ldr r9, [sp+0x54] // [V60 cse2]
add r0, r9, 152 movw r3, 0xd1ff movt r3, 0xd1ff @@ -331,7 +330,7 @@ G_M53770_IG07: ; bbWeight=1.00, gcVars=0000001800000000 {V04 V05}, gcrefR ; gcr arg pop 0 movs r4, 0 ;; size=262 bbWeight=1.00 PerfScore 94.15
-G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M53770_IG08: ; bbWeight=3.97, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
lsls r0, r4, 4 add r8, r0, 8 ldr r3, [r5+r8] @@ -377,7 +376,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V17 V19}
+ ; GC ptr vars -{V19}
blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1] ; byrRegs -[r0] @@ -401,7 +400,7 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 ; gcrRegs +[r1] movw r12, 0xd1ff movt r12, 0xd1ff
- ; GC ptr vars -{V20} +{V17}
+ ; GC ptr vars -{V20}
blx r12 // CORINFO_HELP_ASSIGN_REF ; gcrRegs -[r1-r2] ; byrRegs -[r0] @@ -449,11 +448,12 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- add r8, r5 - ; byrRegs +[r8] - ldr r3, [r8+0x08]
+ add r0, r5, r8 + ; byrRegs +[r0] + ldr r3, [r0+0x08]
str r3, [sp+0x60] // [V23 tmp16] movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff movw r2, 0xd1ff movt r2, 0xd1ff @@ -566,17 +566,21 @@ G_M53770_IG08: ; bbWeight=4.01, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- ldrb r3, [r8+0x04]
+ add r0, r5, r8 + ; byrRegs +[r0] + ldrb r3, [r0+0x04]
cmp r3, 0 bne SHORT G_M53770_IG12
- ldrh r3, [r8+0x0C]
+ add r0, r5, r8 + ldrh r3, [r0+0x0C]
str r3, [sp+0x5C] // [V33 tmp26] movw r0, 0xd1ff
+ ; byrRegs -[r0]
movt r0, 0xd1ff movw r2, 0xd1ff movt r2, 0xd1ff
- ;; size=426 bbWeight=4.01 PerfScore 592.92 -G_M53770_IG09: ; bbWeight=4.01, isz, extend
+ ;; size=430 bbWeight=3.97 PerfScore 594.92 +G_M53770_IG09: ; bbWeight=3.97, isz, extend
blx r2 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0] ; gcr arg pop 0 @@ -686,16 +690,18 @@ G_M53770_IG09: ; bbWeight=4.01, isz, extend blx r3 // <unknown method> ; gcrRegs -[r2] ; gcr arg pop 0
- ldrb r0, [r8+0x0E] - cmp r0, 0
+ add r0, r5, r8 + ; byrRegs +[r0] + ldrb r8, [r0+0x0E] + cmp r8, 0
beq SHORT G_M53770_IG13
- ;; size=180 bbWeight=4.01 PerfScore 260.40 -G_M53770_IG10: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r8]
+ ;; size=186 bbWeight=3.97 PerfScore 261.77 +G_M53770_IG10: ; bbWeight=3.96, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0]
adds r4, r4, 1 cmp r4, 12 blt G_M53770_IG08
- ;; size=8 bbWeight=4 PerfScore 12.00
+ ;; size=8 bbWeight=3.96 PerfScore 11.88
G_M53770_IG11: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[r5] b SHORT G_M53770_IG14 @@ -721,8 +727,7 @@ G_M53770_IG12: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r1, 1 strb r1, [sp+0x58] // [V56 tmp49]
- movs r1, 0 - strb r1, [sp+0x59] // [V56 tmp49+0x01]
+ strb r8, [sp+0x59] // [V56 tmp49+0x01]
ldrh r1, [sp+0x58] // [V56 tmp49] movs r0, 0 movw r3, 0xd1ff @@ -737,7 +742,7 @@ G_M53770_IG13: ; bbWeight=0, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, b ; gcrRegs -[r0] ; gcr arg pop 0 bkpt
- ;; size=42 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0 PerfScore 0.00
G_M53770_IG14: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0000 {}, byref movs r0, 0 strb r0, [r6+0x20] @@ -765,14 +770,14 @@ G_M53770_IG16: ; bbWeight=1, epilog, nogc, extend add sp, 108 pop {r4,r5,r6,r7,r8,r9,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M53770_IG17: ; bbWeight=0, gcVars=0000001800000000 {V04 V05}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc - ; GC ptr vars +{V04 V05 V36}
...

realworld.run.linux.arm.checked.mch

+70 (+3.09%) : 3405.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -8,14 +8,14 @@ ; 0 inlinees with PGO data; 25 single block inlinees; 46 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T03] ( 49,133.50) byref -> r5 this single-def
+; V00 this [V00,T02] ( 49,133.50) byref -> r5 this single-def
; V01 arg1 [V01,T34] ( 7, 11.50) ref -> [sp+0x48] class-hnd single-def <System.IFormatProvider> ; V02 arg2 [V02,T25] ( 5, 15 ) ref -> r6 class-hnd single-def <System.String> ; V03 arg3 [V03,T52] ( 4, 7 ) struct ( 8) [sp+0xAC] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T70] ( 3, 7 ) ref -> [sp+0x44] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> r10 ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [sp+0x84] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [sp+0x80]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> r10 ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [sp+0x84] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [sp+0x80]
; V08 loc4 [V08,T24] ( 5, 18 ) ubyte -> [sp+0x7C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> r9 @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T09] ( 10, 38 ) int -> r8 ; V16 loc12 [V16,T43] ( 3, 12 ) ushort -> r3
-; V17 loc13 [V17,T31] ( 7, 14 ) int -> r1
+; V17 loc13 [V17,T31] ( 7, 14 ) int -> lr
; V18 loc14 [V18,T38] ( 3, 12 ) ref -> [sp+0x3C] class-hnd spill-single-def <<unknown class>> ; V19 loc15 [V19 ] ( 4, 16 ) int -> [sp+0x78] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T71] ( 3, 6 ) ref -> [sp+0x38] class-hnd spill-single-def <<unknown class>> @@ -202,8 +202,8 @@ ; V191 cse3 [V191,T74] ( 3, 6 ) int -> r1 "CSE - conservative" ; V192 cse4 [V192,T75] ( 3, 6 ) int -> r2 "CSE - conservative" ; V193 cse5 [V193,T87] ( 3, 1.50) int -> r2 "CSE - conservative"
-; V194 cse6 [V194,T02] ( 19,144 ) int -> r4 "CSE - aggressive" -; V195 cse7 [V195,T04] ( 15,120 ) byref -> [sp+0x14] spill-single-def "CSE - aggressive"
+; V194 cse6 [V194,T03] ( 20,128.16) int -> r4 "CSE - aggressive" +; V195 cse7 [V195,T04] ( 16,120 ) byref -> [sp+0x14] spill-single-def "CSE - aggressive"
; V196 cse8 [V196,T06] ( 21, 58 ) int -> r4 "CSE - aggressive" ; V197 cse9 [V197,T12] ( 11, 29 ) byref -> [sp+0x10] multi-def "CSE - moderate" ; @@ -225,7 +225,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr r8, [sp+0xB0] str r8, [sp+0x4C] // [V187 tmp166] cmp r6, 0
- beq G_M36935_IG84
+ beq G_M36935_IG88
cmp r7, 0 bne SHORT G_M36935_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -263,7 +263,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000400000000000000000 {V04}, gcref ; gcrRegs -[r0] ldr r4, [r6+0x04] cmp r4, r10
- bls G_M36935_IG78
+ bls G_M36935_IG82
;; size=8 bbWeight=8 PerfScore 24.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, byref, isz add r3, r6, 8 @@ -312,10 +312,10 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ; gcr arg pop 0 mov r8, r0 cmp r8, 0
- blt G_M36935_IG79
+ blt G_M36935_IG83
ldr r3, [sp+0x50] // [V130 tmp109] cmp r8, r3
- bhi G_M36935_IG91
+ bhi G_M36935_IG95
cmp r8, 0 bge SHORT G_M36935_IG10 movs r0, 0 @@ -357,7 +357,7 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ldr r2, [r5+0x04] ldr r1, [r0+0x04] cmp r2, r1
- bhi G_M36935_IG91
+ bhi G_M36935_IG95
ldr r0, [r0] lsl lr, r2, 1 add lr, r0 @@ -384,7 +384,7 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, ; gcr arg pop 0 ldr r2, [sp+0x70] // [V63 tmp42] cmp r8, r2
- bhi G_M36935_IG92
+ bhi G_M36935_IG96
lsl r2, r8, 1 ldr r0, [sp+0x30] // [V64 tmp43] ; byrRegs +[r0] @@ -402,14 +402,14 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0020 {r5}, str r0, [r5+0x04] add r10, r8 cmp r10, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG87
lsl r0, r10, 1 ldr r8, [sp+0x14] // [V195 cse7] ; byrRegs +[r8] ldrh r3, [r8+r0] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1 ldrh r2, [r8+r0] cmp r3, r2 @@ -450,7 +450,7 @@ G_M36935_IG19: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V195 V1 ; byrRegs +[r8] ; GC ptr vars +{V04 V12 V195 V197} cmp r3, 123
- bne G_M36935_IG85
+ bne G_M36935_IG89
str r2, [sp+0x84] // [V06 loc2] movs r3, 0 str r3, [sp+0x80] // [V07 loc3] @@ -463,7 +463,7 @@ G_M36935_IG19: ; bbWeight=4, gcVars=000000400000000000001010 {V04 V195 V1 str r12, [sp+0x54] // [V122 tmp101] add r0, r10, -1 cmp r0, r4
- bhs G_M36935_IG83
+ bhs G_M36935_IG87
lsl r0, r10, 1 subs r0, r0, 2 ldrh r0, [r8+r0] @@ -499,175 +499,205 @@ G_M36935_IG23: ; bbWeight=4, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r ; gcr arg pop 0 sub r9, r9, 48 cmp r9, 10
- bhs G_M36935_IG86
+ bhs G_M36935_IG90
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1 ldrh r0, [r8+r0]
- cmp r0, 125 - beq G_M36935_IG43 - ;; size=48 bbWeight=4 PerfScore 56.00
+ mov r3, r0 + cmp r3, 125 + beq G_M36935_IG47 + ;; size=50 bbWeight=4 PerfScore 60.00
G_M36935_IG24: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz b SHORT G_M36935_IG26 ;; size=2 bbWeight=2 PerfScore 2.00 G_M36935_IG25: ; bbWeight=8, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- movs r3, 10 - mul r3, r9, r3 - adds r0, r3, r0 - sub r9, r0, 48
+ movs r0, 10 + mul r0, r9, r0 + adds r3, r0, r3 + sub r9, r3, 48
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87
+ bls G_M36935_IG91
lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ ldrh r3, [r8+r0]
;; size=30 bbWeight=8 PerfScore 72.00 G_M36935_IG26: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- sub r3, r0, 48 - cmp r3, 9
+ sub r0, r3, 48 + cmp r0, 9
bhi SHORT G_M36935_IG27
- movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r9, r3
+ movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r9, r0
blt SHORT G_M36935_IG25 ;; size=20 bbWeight=16 PerfScore 112.00 G_M36935_IG27: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 32
+ cmp r3, 32
bne SHORT G_M36935_IG29 ;; size=4 bbWeight=2 PerfScore 4.00 G_M36935_IG28: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32
+ bls G_M36935_IG91 + lsl r3, r10, 1 + ldrh r3, [r8+r3] + cmp r3, 32
beq SHORT G_M36935_IG28 ;; size=22 bbWeight=16 PerfScore 112.00 G_M36935_IG29: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 44 - ldr r2, [sp+0x80] // [V07 loc3] - bne SHORT G_M36935_IG36
+ cmp r3, 44 + mov r1, r3 + bne SHORT G_M36935_IG33
;; size=6 bbWeight=2 PerfScore 6.00 G_M36935_IG30: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32
+ bls G_M36935_IG91 + lsl r3, r10, 1 + ldrh r3, [r8+r3] + cmp r3, 32
beq SHORT G_M36935_IG30 ;; size=22 bbWeight=16 PerfScore 112.00 G_M36935_IG31: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- cmp r0, 45
+ cmp r3, 45
bne SHORT G_M36935_IG32 movs r1, 1 str r1, [sp+0x7C] // [V08 loc4] add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - lsl r0, r10, 1 - ldrh r0, [r8+r0]
+ bls G_M36935_IG91 + lsl r3, r10, 1 + ldrh r3, [r8+r3]
;; size=26 bbWeight=2 PerfScore 18.00 G_M36935_IG32: ; bbWeight=2, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz
- subs r0, 48 - mov r2, r0 - cmp r2, 10 - bhs G_M36935_IG86
+ subs r3, 48 + cmp r3, 10 + bhs G_M36935_IG90
add r10, r10, 1 cmp r4, r10
- bls G_M36935_IG87 - ;; size=20 bbWeight=2 PerfScore 14.00 -G_M36935_IG33: ; bbWeight=16, gcrefRegs=00C0 {r6 r7}, byrefRegs=0120 {r5 r8}, byref, isz - cmp r10, r4 - bhs G_M36935_IG83 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - sub r1, r0, 48 - cmp r1, 9 - bhi SHORT G_M36935_IG34
...

+70 (+3.40%) : 3169.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -13,9 +13,9 @@ ; V02 arg2 [V02,T36] ( 5, 15 ) ref -> [sp+0x34] class-hnd single-def <System.String> ; V03 arg3 [V03,T55] ( 4, 7 ) struct ( 8) [sp+0x84] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [sp+0x30] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> r10 ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [sp+0x5C] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [sp+0x58]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> r10 ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [sp+0x5C] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [sp+0x58]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [sp+0x54] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T16] ( 7, 48 ) int -> r9 @@ -25,7 +25,7 @@ ;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V15 loc11 [V15,T25] ( 6, 24 ) int -> r8 ; V16 loc12 [V16,T48] ( 3, 12 ) ushort -> r3
-; V17 loc13 [V17,T42] ( 7, 14 ) int -> r1
+; V17 loc13 [V17,T42] ( 7, 14 ) int -> lr
; V18 loc14 [V18,T46] ( 3, 12 ) ref -> r0 class-hnd <<unknown class>> ; V19 loc15 [V19 ] ( 5, 20 ) int -> [sp+0x50] do-not-enreg[X] addr-exposed ld-addr-op ; V20 loc16 [V20,T26] ( 3, 24 ) ref -> [sp+0x28] class-hnd spill-single-def <<unknown class>> @@ -159,8 +159,8 @@ ; V148 cse3 [V148,T47] ( 3, 12 ) ref -> r1 "CSE - conservative" ; V149 cse4 [V149,T49] ( 3, 12 ) int -> r3 "CSE - conservative" ; V150 cse5 [V150,T03] ( 6, 416 ) int -> r4 "CSE - aggressive"
-; V151 cse6 [V151,T12] ( 19, 144 ) int -> r4 "CSE - aggressive" -; V152 cse7 [V152,T13] ( 15, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
+; V151 cse6 [V151,T12] ( 20, 128.16) int -> r4 "CSE - moderate" +; V152 cse7 [V152,T13] ( 16, 120 ) byref -> [sp+0x14] spill-single-def "CSE - moderate"
; V153 cse8 [V153,T10] ( 4, 192 ) int -> r3 "CSE - moderate" ; V154 cse9 [V154,T20] ( 4, 32 ) int -> r3 "CSE - moderate" ; @@ -182,7 +182,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, ldr r8, [sp+0x88] str r8, [sp+0x38] // [V141 tmp119] cmp r7, 0
- beq G_M4730_IG76
+ beq G_M4730_IG80
cmp r6, 0 bne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 6.00 @@ -220,7 +220,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR ; gcrRegs -[r0] ldr r4, [r7+0x04] cmp r4, r10
- bls G_M4730_IG71
+ bls G_M4730_IG75
;; size=8 bbWeight=8 PerfScore 24.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz str r7, [sp+0x34] // [V02 arg2] @@ -272,10 +272,10 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by ; gcr arg pop 0 mov r8, r0 cmp r8, 0
- blt G_M4730_IG73
+ blt G_M4730_IG77
ldr r3, [sp+0x3C] // [V98 tmp76] cmp r8, r3
- bhi G_M4730_IG87
+ bhi G_M4730_IG91
cmp r8, 0 bge SHORT G_M4730_IG10 movs r0, 0 @@ -305,14 +305,14 @@ G_M4730_IG11: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by ; gcr arg pop 0 add r10, r8 cmp r10, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG79
lsl r0, r10, 1 ldr r8, [sp+0x14] // [V152 cse7] ; byrRegs +[r8] ldrh r3, [r8+r0] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1 ldrh r2, [r8+r0] cmp r3, r2 @@ -360,7 +360,7 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152 ; byrRegs +[r8] ; GC ptr vars +{V13 V152} cmp r3, 123
- bne G_M4730_IG77
+ bne G_M4730_IG81
str r2, [sp+0x5C] // [V06 loc2] movs r3, 0 str r3, [sp+0x58] // [V07 loc3] @@ -373,7 +373,7 @@ G_M4730_IG15: ; bbWeight=4, gcVars=000000020000001000002000 {V02 V04 V152 str r12, [sp+0x40] // [V88 tmp66] add r0, r10, -1 cmp r0, r4
- bhs G_M4730_IG75
+ bhs G_M4730_IG79
lsl r0, r10, 1 subs r0, r0, 2 ldrh r0, [r8+r0] @@ -409,175 +409,205 @@ G_M4730_IG19: ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, ; gcr arg pop 0 sub r9, r9, 48 cmp r9, 10
- bhs G_M4730_IG78
+ bhs G_M4730_IG82
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1 ldrh r0, [r8+r0]
- cmp r0, 125 - beq G_M4730_IG39 - ;; size=48 bbWeight=4 PerfScore 56.00
+ mov r3, r0 + cmp r3, 125 + beq G_M4730_IG43 + ;; size=50 bbWeight=4 PerfScore 60.00
G_M4730_IG20: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz b SHORT G_M4730_IG22 ;; size=2 bbWeight=2 PerfScore 2.00 G_M4730_IG21: ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- movs r3, 10 - mul r3, r9, r3 - adds r0, r3, r0 - sub r9, r0, 48
+ movs r0, 10 + mul r0, r9, r0 + adds r3, r0, r3 + sub r9, r3, 48
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79
+ bls G_M4730_IG83
lsl r0, r10, 1
- ldrh r0, [r8+r0]
+ ldrh r3, [r8+r0]
;; size=30 bbWeight=8 PerfScore 72.00 G_M4730_IG22: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- sub r3, r0, 48 - cmp r3, 9
+ sub r0, r3, 48 + cmp r0, 9
bhi SHORT G_M4730_IG23
- movw r3, 0xd1ff - movt r3, 0xd1ff - cmp r9, r3
+ movw r0, 0xd1ff + movt r0, 0xd1ff + cmp r9, r0
blt SHORT G_M4730_IG21 ;; size=20 bbWeight=16 PerfScore 112.00 G_M4730_IG23: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 32
+ cmp r3, 32
bne SHORT G_M4730_IG25 ;; size=4 bbWeight=2 PerfScore 4.00 G_M4730_IG24: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32
+ bls G_M4730_IG83 + lsl r3, r10, 1 + ldrh r3, [r8+r3] + cmp r3, 32
beq SHORT G_M4730_IG24 ;; size=22 bbWeight=16 PerfScore 112.00 G_M4730_IG25: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 44 - ldr r2, [sp+0x58] // [V07 loc3] - bne SHORT G_M4730_IG32
+ cmp r3, 44 + mov r1, r3 + bne SHORT G_M4730_IG29
;; size=6 bbWeight=2 PerfScore 6.00 G_M4730_IG26: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32
+ bls G_M4730_IG83 + lsl r3, r10, 1 + ldrh r3, [r8+r3] + cmp r3, 32
beq SHORT G_M4730_IG26 ;; size=22 bbWeight=16 PerfScore 112.00 G_M4730_IG27: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- cmp r0, 45
+ cmp r3, 45
bne SHORT G_M4730_IG28 movs r1, 1 str r1, [sp+0x54] // [V08 loc4] add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79 - lsl r0, r10, 1 - ldrh r0, [r8+r0]
+ bls G_M4730_IG83 + lsl r3, r10, 1 + ldrh r3, [r8+r3]
;; size=26 bbWeight=2 PerfScore 18.00 G_M4730_IG28: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz
- subs r0, 48 - mov r2, r0 - cmp r2, 10 - bhs G_M4730_IG78
+ subs r3, 48 + cmp r3, 10 + bhs G_M4730_IG82
add r10, r10, 1 cmp r4, r10
- bls G_M4730_IG79 - ;; size=20 bbWeight=2 PerfScore 14.00 -G_M4730_IG29: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - cmp r10, r4 - bhs G_M4730_IG75 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - sub r1, r0, 48 - cmp r1, 9 - bhi SHORT G_M4730_IG30 - movw r1, 0xd1ff - movt r1, 0xd1ff - cmp r2, r1 - blt SHORT G_M4730_IG35 - ;; size=34 bbWeight=16 PerfScore 176.00 -G_M4730_IG30: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - cmp r0, 32 - bne SHORT G_M4730_IG32 - ;; size=4 bbWeight=2 PerfScore 4.00 -G_M4730_IG31: ; bbWeight=16, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - add r10, r10, 1 - cmp r4, r10 - bls G_M4730_IG79 - lsl r0, r10, 1 - ldrh r0, [r8+r0] - cmp r0, 32 - beq SHORT G_M4730_IG31 - ;; size=22 bbWeight=16 PerfScore 112.00 -G_M4730_IG32: ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0100 {r8}, byref, isz - cmp r0, 125 - beq SHORT G_M4730_IG34 - cmp r0, 58 - bne G_M4730_IG80 - mov r1, r10
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 2 0 2 0 -0 +140
benchmarks.run_pgo.linux.arm.checked.mch 2 0 2 0 -0 +118
benchmarks.run_tiered.linux.arm.checked.mch 2 0 2 0 -0 +104
coreclr_tests.run.linux.arm.checked.mch 144 0 142 2 -0 +10,384
libraries.crossgen2.linux.arm.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm.checked.mch 2 1 1 0 -20 +224
libraries_tests.run.linux.arm.Release.mch 320 0 320 0 -0 +23,358
librariestestsnotieredcompilation.run.linux.arm.Release.mch 1 0 1 0 -0 +8
realworld.run.linux.arm.checked.mch 2 0 2 0 -0 +140
475 1 472 2 -20 +34,476

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 44,925 4,966 39,959 1,181 (2.56%) 1,181 (2.56%)
benchmarks.run_pgo.linux.arm.checked.mch 167,318 62,159 105,159 3,336 (1.95%) 3,336 (1.95%)
benchmarks.run_tiered.linux.arm.checked.mch 73,071 38,812 34,259 951 (1.28%) 951 (1.28%)
coreclr_tests.run.linux.arm.checked.mch 472,398 259,200 213,198 7,170 (1.50%) 7,171 (1.50%)
libraries.crossgen2.linux.arm.checked.mch 1,774 0 1,774 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,307 6 272,301 7,786 (2.78%) 7,786 (2.78%)
libraries_tests.run.linux.arm.Release.mch 710,649 443,197 267,452 16,293 (2.24%) 16,293 (2.24%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,641 21,604 253,037 33,244 (10.80%) 33,244 (10.80%)
realworld.run.linux.arm.checked.mch 36,411 157 36,254 1,407 (3.72%) 1,407 (3.72%)
2,053,494 830,101 1,223,393 71,368 (3.36%) 71,369 (3.36%)

jit-analyze output

benchmarks.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14772250 (overridden on cmd)
Total bytes of diff: 14772390 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


benchmarks.run_pgo.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 68605354 (overridden on cmd)
Total bytes of diff: 68605472 (overridden on cmd)
Total bytes of delta: 118 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


benchmarks.run_tiered.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 18108580 (overridden on cmd)
Total bytes of diff: 18108684 (overridden on cmd)
Total bytes of delta: 104 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321785900 (overridden on cmd)
Total bytes of diff: 321796284 (overridden on cmd)
Total bytes of delta: 10384 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.pmi.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49828568 (overridden on cmd)
Total bytes of diff: 49828772 (overridden on cmd)
Total bytes of delta: 204 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 244096990 (overridden on cmd)
Total bytes of diff: 244120348 (overridden on cmd)
Total bytes of delta: 23358 (0.01 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 94425864 (overridden on cmd)
Total bytes of diff: 94425872 (overridden on cmd)
Total bytes of delta: 8 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


realworld.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13618802 (overridden on cmd)
Total bytes of diff: 13618942 (overridden on cmd)
Total bytes of delta: 140 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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



windows x86

Diffs are based on 2,290,734 contexts (838,165 MinOpts, 1,452,569 FullOpts).

MISSED contexts: base: 808 (0.04%), diff: 815 (0.04%)

Overall (+28,904 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,212 +80
benchmarks.run_pgo.windows.x86.checked.mch 45,137,426 +81
benchmarks.run_tiered.windows.x86.checked.mch 9,472,425 +86
coreclr_tests.run.windows.x86.checked.mch 309,367,285 +10,748
libraries.crossgen2.windows.x86.checked.mch 31,673,137 +116
libraries.pmi.windows.x86.checked.mch 49,151,797 +220
libraries_tests.run.windows.x86.Release.mch 184,751,383 +17,496
librariestestsnotieredcompilation.run.windows.x86.Release.mch 103,727,320 -3
realworld.run.windows.x86.checked.mch 11,283,258 +80

FullOpts (+28,904 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,119,931 +80
benchmarks.run_pgo.windows.x86.checked.mch 38,525,060 +81
benchmarks.run_tiered.windows.x86.checked.mch 5,202,833 +86
coreclr_tests.run.windows.x86.checked.mch 107,571,708 +10,748
libraries.crossgen2.windows.x86.checked.mch 31,672,077 +116
libraries.pmi.windows.x86.checked.mch 49,056,564 +220
libraries_tests.run.windows.x86.Release.mch 87,451,343 +17,496
librariestestsnotieredcompilation.run.windows.x86.Release.mch 95,047,259 -3
realworld.run.windows.x86.checked.mch 10,987,544 +80

Example diffs

benchmarks.run.windows.x86.checked.mch

+28 (+1.28%) : 3344.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 33, 559.50) ref -> esi this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T35] ( 7, 17.50) ref -> [ebp-0x74] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T13] ( 16, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V02 arg2 [V02,T13] ( 17, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T66] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [ebp-0x78] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [ebp-0x18]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T16] ( 7, 48 ) int -> [ebp-0x20] @@ -165,7 +165,7 @@ ; V154 cse3 [V154,T46] ( 3, 12 ) ref -> edx "CSE - conservative" ; V155 cse4 [V155,T48] ( 3, 12 ) int -> [ebp-0x64] spill-single-def "CSE - conservative" ; V156 cse5 [V156,T03] ( 6, 416 ) int -> [ebp-0x68] spill-single-def "CSE - aggressive"
-; V157 cse6 [V157,T12] ( 19, 144 ) int -> [ebp-0x6C] spill-single-def "CSE - moderate"
+; V157 cse6 [V157,T12] ( 20, 128.16) int -> [ebp-0x6C] spill-single-def "CSE - moderate"
; V158 cse7 [V158,T10] ( 4, 192 ) int -> eax "CSE - moderate" ; V159 cse8 [V159,T20] ( 4, 32 ) int -> [ebp-0x70] spill-single-def "CSE - conservative" ; TEMP_01 int -> [ebp-0xA0] @@ -190,7 +190,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 mov eax, dword ptr [ebp+0x0C] mov dword ptr [ebp-0x5C], eax test edi, edi
- je G_M4730_IG78
+ je G_M4730_IG82
test ebx, ebx jne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 4.50 @@ -229,7 +229,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR mov ecx, dword ptr [edi+0x04] mov dword ptr [ebp-0x6C], ecx cmp ecx, edx
- jbe G_M4730_IG73
+ jbe G_M4730_IG77
;; size=14 bbWeight=8 PerfScore 34.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref lea eax, bword ptr [edi+2*edx+0x08] @@ -274,9 +274,9 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 ; byrRegs -[ecx] mov dword ptr [ebp-0x38], eax test eax, eax
- jl G_M4730_IG75
+ jl G_M4730_IG79
cmp eax, dword ptr [ebp-0x58]
- ja G_M4730_IG89
+ ja G_M4730_IG93
mov ecx, eax not ecx shr ecx, 31 @@ -294,7 +294,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 add edx, dword ptr [ebp-0x38] mov eax, dword ptr [ebp-0x6C] cmp edx, eax
- jae G_M4730_IG77
+ jae G_M4730_IG81
;; size=206 bbWeight=4 PerfScore 232.00 G_M4730_IG08: ; bbWeight=4, isz, extend movzx ecx, word ptr [edi+2*edx+0x08] @@ -328,7 +328,7 @@ G_M4730_IG10: ; bbWeight=2, gcVars=000000000000000000000000 {}, gcrefRegs ; gcrRegs -[eax esi] ; GC ptr vars -{V01 V04} mov ecx, edx
- jmp G_M4730_IG81
+ jmp G_M4730_IG85
;; size=7 bbWeight=2 PerfScore 4.50 G_M4730_IG11: ; bbWeight=2, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[esi] @@ -353,7 +353,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR ; gcrRegs -[edi] ; GC ptr vars -{V01 V35 V65} cmp dword ptr [ebp-0x24], 123
- jne G_M4730_IG79
+ jne G_M4730_IG83
mov dword ptr [ebp-0x14], ecx mov gword ptr [ebp-0x74], ebx ; GC ptr vars +{V01} @@ -371,7 +371,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR mov edx, dword ptr [ebp-0x10] lea edi, [edx-0x01] cmp edi, dword ptr [ebp-0x6C]
- jae G_M4730_IG77
+ jae G_M4730_IG81
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] mov dword ptr [ebp-0x10], edx @@ -387,16 +387,16 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR lea edx, [eax-0x30] mov dword ptr [ebp-0x20], edx cmp edx, 10
- jae G_M4730_IG80
+ jae G_M4730_IG84
mov ecx, dword ptr [ebp-0x10] inc ecx mov eax, dword ptr [ebp-0x6C] cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov gword ptr [ebp+0x10], edi movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 125
- je G_M4730_IG38
+ je G_M4730_IG42
;; size=139 bbWeight=4 PerfScore 162.00 G_M4730_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edi] @@ -408,7 +408,7 @@ G_M4730_IG15: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x20], edi inc ecx cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov edx, gword ptr [ebp+0x10] ; gcrRegs +[edx] movzx edi, word ptr [edx+2*ecx+0x08] @@ -427,28 +427,28 @@ G_M4730_IG16: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M4730_IG17: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov dword ptr [ebp-0x20], edi ;; size=3 bbWeight=8 PerfScore 8.00
-G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edx, 32
- jne G_M4730_IG35 - ;; size=9 bbWeight=2 PerfScore 2.50 -G_M4730_IG19: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M4730_IG27 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M4730_IG19: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ecx cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 32
- je G_M4730_IG34 - ;; size=26 bbWeight=16 PerfScore 92.00 -G_M4730_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG26 + ;; size=22 bbWeight=16 PerfScore 92.00 +G_M4730_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp edx, 44
- jne G_M4730_IG33 - ;; size=9 bbWeight=2 PerfScore 2.50
+ jne SHORT G_M4730_IG25 + ;; size=5 bbWeight=2 PerfScore 2.50
G_M4730_IG21: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz inc ecx cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 32 je SHORT G_M4730_IG21 @@ -459,124 +459,152 @@ G_M4730_IG22: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov ebx, 1 inc ecx cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
movzx edx, word ptr [edi+2*ecx+0x08] mov dword ptr [ebp-0x1C], ebx ;; size=27 bbWeight=2 PerfScore 12.00
-G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
add edx, -48 cmp edx, 10
- jae G_M4730_IG32
+ jae SHORT G_M4730_IG24
inc ecx cmp eax, ecx
- jbe G_M4730_IG81 - ;; size=21 bbWeight=2 PerfScore 6.00 -G_M4730_IG24: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - cmp ecx, eax - jae G_M4730_IG77 - mov gword ptr [ebp+0x10], edi - movzx edi, word ptr [edi+2*ecx+0x08] - ; gcrRegs -[edi] - lea eax, [edi-0x30] - cmp eax, 9 - ja SHORT G_M4730_IG25 - cmp edx, 0xD1FFAB1E - jl G_M4730_IG36 - ;; size=36 bbWeight=16 PerfScore 116.00 -G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, 32 - jne SHORT G_M4730_IG31 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M4730_IG26: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - inc ecx - mov eax, dword ptr [ebp-0x6C] - cmp eax, ecx - jbe G_M4730_IG81 - mov edi, gword ptr [ebp+0x10] - ; gcrRegs +[edi] - movzx edi, word ptr [edi+2*ecx+0x08] - ; gcrRegs -[edi] - cmp edi, 32 - je SHORT G_M4730_IG30 - ;; size=25 bbWeight=16 PerfScore 108.00 -G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, 125 - je SHORT G_M4730_IG29 - cmp edi, 58 - jne G_M4730_IG82 - mov dword ptr [ebp-0x28], ecx - ;; size=17 bbWeight=2 PerfScore 7.00 -G_M4730_IG28: ; bbWeight=16, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V93} - inc ecx - cmp eax, ecx - jbe G_M4730_IG81 - mov edi, gword ptr [ebp+0x10] - ; gcrRegs +[edi] - movzx edi, word ptr [edi+2*ecx+0x08] - ; gcrRegs -[edi] - cmp edi, 125 - je SHORT G_M4730_IG37 - cmp edi, 123 - je G_M4730_IG82 - mov eax, dword ptr [ebp-0x6C] - jmp SHORT G_M4730_IG28 - ;; size=36 bbWeight=16 PerfScore 160.00 -G_M4730_IG29: ; bbWeight=1, gcVars=000000020000000840000000 {V01 V04 V93}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V93} - mov ebx, edx - jmp G_M4730_IG38 - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M4730_IG30: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M4730_IG26 - ;; size=2 bbWeight=8 PerfScore 16.00 -G_M4730_IG31: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov eax, dword ptr [ebp-0x6C] - jmp SHORT G_M4730_IG27 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M4730_IG32: ; bbWeight=1, gcVars=000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi]
+ jbe G_M4730_IG85 + test ecx, ecx + jl SHORT G_M4730_IG33 + jmp SHORT G_M4730_IG30 + ;; size=23 bbWeight=2 PerfScore 12.50
...

benchmarks.run_pgo.windows.x86.checked.mch

+36 (+1.59%) : 7877.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (Tier0-FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 33, 559.50) ref -> esi this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T35] ( 7, 17.50) ref -> [ebp-0x7C] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T13] ( 16, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V02 arg2 [V02,T13] ( 17, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T66] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [ebp-0x80] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T07] ( 32, 260 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T07] ( 35, 260 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [ebp-0x18]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T16] ( 7, 48 ) int -> [ebp-0x20] @@ -175,7 +175,7 @@ ; V164 cse3 [V164,T46] ( 3, 12 ) ref -> edx "CSE - conservative" ; V165 cse4 [V165,T48] ( 3, 12 ) int -> [ebp-0x6C] spill-single-def "CSE - conservative" ; V166 cse5 [V166,T03] ( 6, 416 ) int -> [ebp-0x70] spill-single-def "CSE - aggressive"
-; V167 cse6 [V167,T12] ( 19, 144 ) int -> [ebp-0x74] spill-single-def "CSE - moderate"
+; V167 cse6 [V167,T12] ( 20, 128.16) int -> [ebp-0x74] spill-single-def "CSE - moderate"
; V168 cse7 [V168,T10] ( 4, 192 ) int -> eax "CSE - moderate" ; V169 cse8 [V169,T20] ( 4, 32 ) int -> [ebp-0x78] spill-single-def "CSE - conservative" ; TEMP_01 int -> [ebp-0xB0] @@ -200,7 +200,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 mov eax, dword ptr [ebp+0x0C] mov dword ptr [ebp-0x64], eax test edi, edi
- je G_M4730_IG80
+ je G_M4730_IG83
test ebx, ebx jne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 4.50 @@ -239,7 +239,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR mov edx, dword ptr [edi+0x04] mov dword ptr [ebp-0x74], edx cmp edx, ecx
- jbe G_M4730_IG75
+ jbe G_M4730_IG78
;; size=14 bbWeight=8 PerfScore 34.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref lea eax, bword ptr [edi+2*ecx+0x08] @@ -252,7 +252,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 sub eax, ecx mov dword ptr [ebp-0x30], eax test eax, eax
- jl G_M4730_IG81
+ jl G_M4730_IG84
;; size=28 bbWeight=4 PerfScore 23.00 G_M4730_IG08: ; bbWeight=2, gcVars=000000020000004000000000 {V04 V32}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref mov gword ptr [ebp-0x7C], ebx @@ -273,9 +273,9 @@ G_M4730_IG09: ; bbWeight=4, gcVars=000000020000004800000000 {V01 V04 V32} ; byrRegs -[ecx] mov dword ptr [ebp-0x34], eax test eax, eax
- jl G_M4730_IG77
+ jl G_M4730_IG80
cmp eax, dword ptr [ebp-0x58]
- ja G_M4730_IG97
+ ja G_M4730_IG100
push eax mov ecx, esi ; gcrRegs +[ecx] @@ -288,11 +288,11 @@ G_M4730_IG09: ; bbWeight=4, gcVars=000000020000004800000000 {V01 V04 V32} add ebx, dword ptr [ebp-0x34] mov eax, dword ptr [ebp-0x74] cmp ebx, eax
- jae G_M4730_IG79
+ jae G_M4730_IG82
movzx edx, word ptr [edi+2*ebx+0x08] inc ebx cmp eax, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov gword ptr [ebp+0x10], edi movzx ecx, word ptr [edi+2*ebx+0x08] cmp edx, ecx @@ -330,7 +330,7 @@ G_M4730_IG12: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M4730_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[ebx edi] cmp edx, 123
- jne G_M4730_IG87
+ jne G_M4730_IG90
xor edx, edx xor eax, eax xor edi, edi @@ -342,11 +342,11 @@ G_M4730_IG13: ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x54], edi lea edi, [ebx-0x01] cmp edi, dword ptr [ebp-0x74]
- jae G_M4730_IG79
+ jae G_M4730_IG82
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] cmp word ptr [edi+2*ebx+0x06], 123
- jne G_M4730_IG82
+ jne G_M4730_IG85
cmp ecx, 123 je SHORT G_M4730_IG16 ;; size=58 bbWeight=4 PerfScore 56.00 @@ -354,15 +354,15 @@ G_M4730_IG14: ; bbWeight=4, gcVars=000000020000000820000000 {V01 V04 V103 add ecx, -48 mov dword ptr [ebp-0x20], ecx cmp ecx, 10
- jae G_M4730_IG88
+ jae G_M4730_IG91
inc ebx cmp dword ptr [ebp-0x74], ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov gword ptr [ebp+0x10], edi movzx edi, word ptr [edi+2*ebx+0x08] ; gcrRegs -[edi] cmp edi, 125
- je G_M4730_IG40
+ je G_M4730_IG43
;; size=42 bbWeight=4 PerfScore 40.00 G_M4730_IG15: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz jmp SHORT G_M4730_IG18 @@ -372,7 +372,7 @@ G_M4730_IG16: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov dword ptr [ebp-0x1C], eax mov dword ptr [ebp-0x14], ecx mov dword ptr [ebp-0x18], edx
- jmp G_M4730_IG83
+ jmp G_M4730_IG86
;; size=14 bbWeight=2 PerfScore 10.00 G_M4730_IG17: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref ; gcrRegs -[edi] @@ -382,7 +382,7 @@ G_M4730_IG17: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 inc ebx mov ecx, dword ptr [ebp-0x74] cmp ecx, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edi, word ptr [edi+2*ebx+0x08] @@ -401,28 +401,28 @@ G_M4730_IG19: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ;; size=3 bbWeight=8 PerfScore 8.00 G_M4730_IG20: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp edi, 32
- jne G_M4730_IG36
+ jne G_M4730_IG28
;; size=9 bbWeight=2 PerfScore 2.50
-G_M4730_IG21: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG21: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ebx mov ecx, dword ptr [ebp-0x74] cmp ecx, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edi, word ptr [edi+2*ebx+0x08] ; gcrRegs -[edi] cmp edi, 32
- je G_M4730_IG35 - ;; size=29 bbWeight=16 PerfScore 108.00 -G_M4730_IG22: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG27 + ;; size=25 bbWeight=16 PerfScore 108.00 +G_M4730_IG22: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, 44
- jne G_M4730_IG34 - ;; size=9 bbWeight=2 PerfScore 2.50
+ jne SHORT G_M4730_IG26 + ;; size=5 bbWeight=2 PerfScore 2.50
G_M4730_IG23: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz inc ebx cmp ecx, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edx, word ptr [edi+2*ebx+0x08] @@ -438,7 +438,7 @@ G_M4730_IG24: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x1C], 1 inc ebx cmp ecx, ebx
- jbe G_M4730_IG89
+ jbe G_M4730_IG92
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edx, word ptr [edi+2*ebx+0x08] @@ -447,102 +447,126 @@ G_M4730_IG24: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ; gcrRegs -[edi] mov eax, dword ptr [ebp-0x1C] ;; size=39 bbWeight=2 PerfScore 18.50
-G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea edx, [edi-0x30] mov edi, edx cmp edi, 10
- jae G_M4730_IG88
+ jae G_M4730_IG91
inc ebx cmp ecx, ebx
- jbe G_M4730_IG89 - ;; size=23 bbWeight=2 PerfScore 7.00 -G_M4730_IG26: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp ebx, ecx - jae G_M4730_IG79
+ jbe G_M4730_IG92 + test ebx, ebx + jl SHORT G_M4730_IG33 + jmp SHORT G_M4730_IG30 + ;; size=29 bbWeight=2 PerfScore 13.50 +G_M4730_IG26: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + xchg edx, edi + jmp G_M4730_IG36 + ;; size=7 bbWeight=1 PerfScore 3.00 +G_M4730_IG27: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + jmp G_M4730_IG21 + ;; size=5 bbWeight=8 PerfScore 16.00 +G_M4730_IG28: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, dword ptr [ebp-0x74] + jmp SHORT G_M4730_IG22 + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M4730_IG29: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + lea ecx, [edi+4*edi] + lea edi, [edx+2*ecx-0x30] + inc ebx + mov ecx, dword ptr [ebp-0x74] + cmp ecx, ebx + jbe G_M4730_IG92 + ;; size=19 bbWeight=7.92 PerfScore 31.68 +G_M4730_IG30: ; bbWeight=15.84, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edx, gword ptr [ebp+0x10] ; gcrRegs +[edx] movzx edx, word ptr [edx+2*ebx+0x08] ; gcrRegs -[edx] lea ecx, [edx-0x30] cmp ecx, 9
- ja SHORT G_M4730_IG27
+ ja SHORT G_M4730_IG34
cmp edi, 0xD1FFAB1E
- jl SHORT G_M4730_IG37 - ;; size=32 bbWeight=16 PerfScore 116.00 -G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edx, 32 - jne SHORT G_M4730_IG33 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M4730_IG28: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - inc ebx - mov ecx, dword ptr [ebp-0x74] - cmp ecx, ebx - jbe G_M4730_IG89 - mov edx, gword ptr [ebp+0x10]
...

+45 (+1.88%) : 15636.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T02] ( 56,153.50) byref -> esi this single-def ; V01 arg1 [V01,T32] ( 7, 11.50) ref -> [ebp-0x6C] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 16,125 ) ref -> edi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 17,125 ) ref -> edi class-hnd single-def <System.String>
; V03 arg3 [V03,T76] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T69] ( 3, 7 ) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T01] ( 32,260 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T01] ( 35,260 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [ebp-0x18]
; V08 loc4 [V08,T23] ( 5, 18 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [ebp-0x20] @@ -229,7 +229,7 @@ ; V218 cse3 [V218,T73] ( 3, 6 ) int -> [ebp-0x5C] spill-single-def "CSE - conservative" ; V219 cse4 [V219,T74] ( 3, 6 ) int -> [ebp-0x60] spill-single-def "CSE - conservative" ; V220 cse5 [V220,T87] ( 3, 1.50) int -> edi "CSE - conservative"
-; V221 cse6 [V221,T03] ( 19,144 ) int -> [ebp-0x64] spill-single-def "CSE - aggressive"
+; V221 cse6 [V221,T03] ( 20,128.16) int -> [ebp-0x64] spill-single-def "CSE - aggressive"
; V222 cse7 [V222,T06] ( 21, 58 ) int -> [ebp-0x68] spill-single-def "CSE - moderate" ; ; Lcl frame size = 180 @@ -252,7 +252,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 mov eax, dword ptr [ebp+0x0C] mov dword ptr [ebp-0x54], eax test edi, edi
- je G_M36935_IG71
+ je G_M36935_IG74
test ebx, ebx jne SHORT G_M36935_IG04 ;; size=18 bbWeight=1 PerfScore 4.50 @@ -293,7 +293,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000200000000000000000 {V04}, gcref cmp edx, ecx mov gword ptr [ebp-0x6C], ebx ; GC ptr vars +{V01}
- jbe G_M36935_IG66
+ jbe G_M36935_IG69
;; size=17 bbWeight=8 PerfScore 42.00 G_M36935_IG07: ; bbWeight=4, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref ; gcrRegs -[ebx] @@ -304,7 +304,7 @@ G_M36935_IG07: ; bbWeight=4, gcVars=000000200000000100000000 {V01 V04}, g mov dword ptr [ebp-0x10], ecx mov ebx, edx sub ebx, ecx
- js G_M36935_IG72
+ js G_M36935_IG75
;; size=23 bbWeight=4 PerfScore 18.00 G_M36935_IG08: ; bbWeight=4, gcVars=000000200000000102000000 {V01 V04 V30}, gcrefRegs=00000080 {edi}, byrefRegs=00000041 {eax esi}, gcvars, byref, isz mov bword ptr [ebp-0xBC], eax @@ -319,9 +319,9 @@ G_M36935_IG08: ; bbWeight=4, gcVars=000000200000000102000000 {V01 V04 V30 ; byrRegs -[eax ecx] mov dword ptr [ebp-0x2C], eax test eax, eax
- jl G_M36935_IG67
+ jl G_M36935_IG70
cmp eax, ebx
- ja G_M36935_IG90
+ ja G_M36935_IG93
mov ecx, dword ptr [esi+0x04] mov edx, dword ptr [esi+0x0C] sub edx, eax @@ -342,17 +342,17 @@ G_M36935_IG10: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, dword ptr [esi+0x04] mov ebx, dword ptr [ecx+0x04] cmp edx, ebx
- ja G_M36935_IG90
+ ja G_M36935_IG93
mov ecx, bword ptr [ecx] lea ecx, bword ptr [ecx+2*edx] mov bword ptr [ebp-0x90], ecx ; GC ptr vars +{V75} sub ebx, edx
- js G_M36935_IG73
+ js G_M36935_IG76
;; size=36 bbWeight=4 PerfScore 42.00 G_M36935_IG11: ; bbWeight=4, gcVars=000000200000000304000000 {V01 V04 V75 V156}, gcrefRegs=00000080 {edi}, byrefRegs=00000042 {ecx esi}, gcvars, byref, isz cmp eax, ebx
- ja G_M36935_IG91
+ ja G_M36935_IG94
lea edx, [eax+eax] push edx mov edx, bword ptr [ebp-0xBC] @@ -366,11 +366,11 @@ G_M36935_IG11: ; bbWeight=4, gcVars=000000200000000304000000 {V01 V04 V75 add ecx, ebx mov ebx, dword ptr [ebp-0x64] cmp ecx, ebx
- jae G_M36935_IG70
+ jae G_M36935_IG73
movzx eax, word ptr [edi+2*ecx+0x08] inc ecx cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
mov dword ptr [ebp-0x10], ecx movzx edx, word ptr [edi+2*ecx+0x08] cmp eax, edx @@ -411,7 +411,7 @@ G_M36935_IG14: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 G_M36935_IG15: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz ; gcrRegs -[ebx] cmp eax, 123
- jne G_M36935_IG84
+ jne G_M36935_IG87
xor eax, eax mov dword ptr [ebp-0x18], eax xor eax, eax @@ -426,9 +426,9 @@ G_M36935_IG15: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov ecx, dword ptr [ebp-0x10] lea eax, [ecx-0x01] cmp eax, ebx
- jae G_M36935_IG70
+ jae G_M36935_IG73
cmp word ptr [edi+2*ecx+0x06], 123
- jne G_M36935_IG74
+ jne G_M36935_IG77
cmp edx, 123 je SHORT G_M36935_IG18 ;; size=63 bbWeight=4 PerfScore 57.00 @@ -436,13 +436,13 @@ G_M36935_IG16: ; bbWeight=4, gcVars=000000200000000180000000 {V01 V04 V14 lea eax, [edx-0x30] mov dword ptr [ebp-0x20], eax cmp eax, 10
- jae G_M36935_IG85
+ jae G_M36935_IG88
inc ecx cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 125
- je G_M36935_IG37
+ je G_M36935_IG40
;; size=38 bbWeight=4 PerfScore 30.00 G_M36935_IG17: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz jmp SHORT G_M36935_IG20 @@ -450,7 +450,7 @@ G_M36935_IG17: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 G_M36935_IG18: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref mov dword ptr [ebp-0x10], ecx mov dword ptr [ebp-0x14], edx
- jmp G_M36935_IG75
+ jmp G_M36935_IG78
;; size=11 bbWeight=2 PerfScore 8.00 G_M36935_IG19: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref lea eax, [eax+4*eax] @@ -458,7 +458,7 @@ G_M36935_IG19: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x20], eax inc ecx cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08] ;; size=24 bbWeight=8 PerfScore 48.00 G_M36935_IG20: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz @@ -479,7 +479,7 @@ G_M36935_IG22: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 G_M36935_IG23: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz inc ecx cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 32 je SHORT G_M36935_IG23 @@ -487,12 +487,12 @@ G_M36935_IG23: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000004 G_M36935_IG24: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref cmp edx, 44 mov eax, edx
- jne G_M36935_IG32
+ jne G_M36935_IG36
;; size=11 bbWeight=2 PerfScore 3.00 G_M36935_IG25: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz inc ecx cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 32 je SHORT G_M36935_IG25 @@ -503,108 +503,129 @@ G_M36935_IG26: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x1C], 1 inc ecx cmp ebx, ecx
- jbe G_M36935_IG86
+ jbe G_M36935_IG89
movzx edx, word ptr [edi+2*ecx+0x08] ;; size=26 bbWeight=2 PerfScore 11.50
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
add edx, -48 mov dword ptr [ebp-0x18], edx cmp edx, 10
- jae G_M36935_IG85
+ jae G_M36935_IG88
inc ecx cmp ebx, ecx
- jbe G_M36935_IG86 - ;; size=24 bbWeight=2 PerfScore 8.00 -G_M36935_IG28: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - cmp ecx, ebx - jae G_M36935_IG70 - movzx eax, word ptr [edi+2*ecx+0x08] - lea edx, [eax-0x30] - cmp edx, 9 - ja SHORT G_M36935_IG30 - mov edx, dword ptr [ebp-0x18] - cmp edx, 0xD1FFAB1E - jl SHORT G_M36935_IG34 - ;; size=32 bbWeight=16 PerfScore 116.00 -G_M36935_IG29: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - mov dword ptr [ebp-0x18], edx - ;; size=3 bbWeight=8 PerfScore 8.00 -G_M36935_IG30: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - cmp eax, 32 - jne SHORT G_M36935_IG32 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M36935_IG31: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - inc ecx - cmp ebx, ecx - jbe G_M36935_IG86 - movzx eax, word ptr [edi+2*ecx+0x08] - cmp eax, 32 - je SHORT G_M36935_IG31 - ;; size=19 bbWeight=16 PerfScore 76.00 -G_M36935_IG32: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - cmp eax, 125 - je G_M36935_IG37 - cmp eax, 58 - jne G_M36935_IG87 - mov dword ptr [ebp-0x24], ecx - ;; size=21 bbWeight=2 PerfScore 7.00 -G_M36935_IG33: ; bbWeight=16, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; GC ptr vars -{V148} - inc ecx - cmp ebx, ecx - jbe G_M36935_IG86 - movzx eax, word ptr [edi+2*ecx+0x08] - cmp eax, 125 - je SHORT G_M36935_IG35 - cmp eax, 123 - je G_M36935_IG87 - jmp SHORT G_M36935_IG33 - ;; size=30 bbWeight=16 PerfScore 128.00 -G_M36935_IG34: ; bbWeight=8, gcVars=000000200000000180000000 {V01 V04 V148}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref - ; GC ptr vars +{V148}
+ jbe G_M36935_IG89 + test ecx, ecx + jl SHORT G_M36935_IG32 + jmp SHORT G_M36935_IG29
...

benchmarks.run_tiered.windows.x86.checked.mch

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

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 33, 559.50) ref -> esi this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T35] ( 7, 17.50) ref -> [ebp-0x78] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T13] ( 16, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V02 arg2 [V02,T13] ( 17, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T66] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [ebp-0x7C] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [ebp-0x18]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T16] ( 7, 48 ) int -> [ebp-0x20] @@ -175,7 +175,7 @@ ; V164 cse3 [V164,T46] ( 3, 12 ) ref -> edx "CSE - conservative" ; V165 cse4 [V165,T48] ( 3, 12 ) int -> edi "CSE - conservative" ; V166 cse5 [V166,T03] ( 6, 416 ) int -> [ebp-0x6C] spill-single-def "CSE - aggressive"
-; V167 cse6 [V167,T12] ( 19, 144 ) int -> [ebp-0x70] spill-single-def "CSE - moderate"
+; V167 cse6 [V167,T12] ( 20, 128.16) int -> [ebp-0x70] spill-single-def "CSE - moderate"
; V168 cse7 [V168,T10] ( 4, 192 ) int -> eax "CSE - moderate" ; V169 cse8 [V169,T20] ( 4, 32 ) int -> [ebp-0x74] spill-single-def "CSE - conservative" ; TEMP_01 int -> [ebp-0xB4] @@ -200,7 +200,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 mov eax, dword ptr [ebp+0x0C] mov dword ptr [ebp-0x64], eax test edi, edi
- je G_M4730_IG84
+ je G_M4730_IG87
test ebx, ebx jne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 4.50 @@ -239,7 +239,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR mov ecx, dword ptr [edi+0x04] mov dword ptr [ebp-0x70], ecx cmp ecx, edx
- jbe G_M4730_IG79
+ jbe G_M4730_IG82
;; size=14 bbWeight=8 PerfScore 34.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz lea eax, bword ptr [edi+2*edx+0x08] @@ -287,9 +287,9 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 ; byrRegs -[ecx] mov dword ptr [ebp-0x34], eax test eax, eax
- jl G_M4730_IG81
+ jl G_M4730_IG84
cmp eax, dword ptr [ebp-0x54]
- ja G_M4730_IG95
+ ja G_M4730_IG98
push eax mov ecx, esi ; gcrRegs +[ecx] @@ -303,12 +303,12 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 add edx, dword ptr [ebp-0x34] mov eax, dword ptr [ebp-0x70] cmp edx, eax
- jae G_M4730_IG83
+ jae G_M4730_IG86
movzx ecx, word ptr [edi+2*edx+0x08] mov dword ptr [ebp-0x24], ecx inc edx cmp eax, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov gword ptr [ebp+0x10], edi mov dword ptr [ebp-0x10], edx movzx ecx, word ptr [edi+2*edx+0x08] @@ -353,7 +353,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR ; gcrRegs -[edi] ; GC ptr vars -{V01} cmp dword ptr [ebp-0x24], 123
- jne G_M4730_IG85
+ jne G_M4730_IG88
mov gword ptr [ebp-0x78], ebx ; GC ptr vars +{V01} xor ebx, ebx @@ -370,7 +370,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR mov edx, dword ptr [ebp-0x10] lea edi, [edx-0x01] cmp edi, dword ptr [ebp-0x70]
- jae G_M4730_IG83
+ jae G_M4730_IG86
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] mov dword ptr [ebp-0x10], edx @@ -409,12 +409,12 @@ G_M4730_IG17: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov edx, dword ptr [ebp-0x10] inc edx cmp dword ptr [ebp-0x70], edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov gword ptr [ebp+0x10], edi movzx edi, word ptr [edi+2*edx+0x08] ; gcrRegs -[edi] cmp edi, 125
- je G_M4730_IG43
+ je G_M4730_IG46
;; size=44 bbWeight=4 PerfScore 48.00 G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz jmp SHORT G_M4730_IG21 @@ -423,7 +423,7 @@ G_M4730_IG19: ; bbWeight=2, gcVars=000000000000000000000000 {}, gcrefRegs ; gcrRegs -[esi] ; GC ptr vars -{V01 V04 V103} mov edx, dword ptr [ebp-0x10]
- jmp G_M4730_IG86
+ jmp G_M4730_IG89
;; size=8 bbWeight=2 PerfScore 6.00 G_M4730_IG20: ; bbWeight=8, gcVars=000000020000000820000000 {V01 V04 V103}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[esi] @@ -434,7 +434,7 @@ G_M4730_IG20: ; bbWeight=8, gcVars=000000020000000820000000 {V01 V04 V103 inc edx mov ecx, dword ptr [ebp-0x70] cmp ecx, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edi, word ptr [edi+2*edx+0x08] @@ -453,28 +453,28 @@ G_M4730_IG22: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 ;; size=3 bbWeight=8 PerfScore 8.00 G_M4730_IG23: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref cmp edi, 32
- jne G_M4730_IG39
+ jne G_M4730_IG31
;; size=9 bbWeight=2 PerfScore 2.50
-G_M4730_IG24: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG24: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc edx mov ecx, dword ptr [ebp-0x70] cmp ecx, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edi, word ptr [edi+2*edx+0x08] ; gcrRegs -[edi] cmp edi, 32
- je G_M4730_IG38 - ;; size=29 bbWeight=16 PerfScore 108.00 -G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG30 + ;; size=25 bbWeight=16 PerfScore 108.00 +G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edi, 44
- jne G_M4730_IG37 - ;; size=9 bbWeight=2 PerfScore 2.50
+ jne SHORT G_M4730_IG29 + ;; size=5 bbWeight=2 PerfScore 2.50
G_M4730_IG26: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz inc edx cmp ecx, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx ebx, word ptr [edi+2*edx+0x08] @@ -490,7 +490,7 @@ G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x1C], 1 inc edx cmp ecx, edx
- jbe G_M4730_IG87
+ jbe G_M4730_IG90
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx ebx, word ptr [edi+2*edx+0x08] @@ -498,104 +498,127 @@ G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov edi, ebx ; gcrRegs -[edi] ;; size=36 bbWeight=2 PerfScore 16.50
-G_M4730_IG28: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG28: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
lea ebx, [edi-0x30] cmp ebx, 10
- jae G_M4730_IG86
+ jae G_M4730_IG89
inc edx cmp ecx, edx
- jbe G_M4730_IG87 - ;; size=21 bbWeight=2 PerfScore 6.50 -G_M4730_IG29: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edx, ecx - jae G_M4730_IG83
+ jbe G_M4730_IG90 + test edx, edx + jl SHORT G_M4730_IG36 + jmp SHORT G_M4730_IG33 + ;; size=27 bbWeight=2 PerfScore 13.00 +G_M4730_IG29: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + mov eax, ecx + mov ecx, edi + mov edi, eax + jmp G_M4730_IG39 + ;; size=11 bbWeight=1 PerfScore 2.75 +G_M4730_IG30: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + jmp G_M4730_IG24 + ;; size=5 bbWeight=8 PerfScore 16.00 +G_M4730_IG31: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz + mov ecx, dword ptr [ebp-0x70] + jmp SHORT G_M4730_IG25 + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M4730_IG32: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref + lea ecx, [ebx+4*ebx] + lea ebx, [edi+2*ecx-0x30] + inc edx + mov edi, dword ptr [ebp-0x70] + cmp edi, edx + jbe G_M4730_IG90 + ;; size=19 bbWeight=7.92 PerfScore 31.68 +G_M4730_IG33: ; bbWeight=15.84, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edi, word ptr [edi+2*edx+0x08] ; gcrRegs -[edi] lea ecx, [edi-0x30] cmp ecx, 9
- ja SHORT G_M4730_IG30
+ ja SHORT G_M4730_IG37
cmp ebx, 0xD1FFAB1E
- jl SHORT G_M4730_IG40 - ;; size=32 bbWeight=16 PerfScore 116.00 -G_M4730_IG30: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, 32 - mov ecx, edi - jne SHORT G_M4730_IG36 - ;; size=7 bbWeight=2 PerfScore 3.00 -G_M4730_IG31: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - inc edx - mov edi, dword ptr [ebp-0x70] - cmp edi, edx - jbe G_M4730_IG87 - mov ecx, gword ptr [ebp+0x10] - ; gcrRegs +[ecx] - movzx ecx, word ptr [ecx+2*edx+0x08] - ; gcrRegs -[ecx] - cmp ecx, 32 - je SHORT G_M4730_IG35 - ;; size=25 bbWeight=16 PerfScore 108.00 -G_M4730_IG32: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp ecx, 125 - je SHORT G_M4730_IG34 - cmp ecx, 58 - jne G_M4730_IG88 - mov dword ptr [ebp-0x28], edx - ;; size=17 bbWeight=2 PerfScore 7.00 -G_M4730_IG33: ; bbWeight=16, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V103}
...

+49 (+2.10%) : 9936.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier0-FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T02] ( 56,153.50) byref -> esi this single-def ; V01 arg1 [V01,T32] ( 7, 11.50) ref -> [ebp-0x6C] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 16,125 ) ref -> edi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 17,125 ) ref -> edi class-hnd single-def <System.String>
; V03 arg3 [V03,T76] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T69] ( 3, 7 ) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T05] ( 12, 62 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T05] ( 15, 62 ) int -> [ebp-0x18]
; V08 loc4 [V08,T23] ( 5, 18 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T07] ( 7, 48 ) int -> [ebp-0x20] @@ -230,7 +230,7 @@ ; V219 cse3 [V219,T73] ( 3, 6 ) int -> [ebp-0x5C] spill-single-def "CSE - conservative" ; V220 cse4 [V220,T74] ( 3, 6 ) int -> [ebp-0x60] spill-single-def "CSE - conservative" ; V221 cse5 [V221,T87] ( 3, 1.50) int -> edi "CSE - conservative"
-; V222 cse6 [V222,T03] ( 19,144 ) int -> [ebp-0x64] spill-single-def "CSE - aggressive"
+; V222 cse6 [V222,T03] ( 20,128.16) int -> [ebp-0x64] spill-single-def "CSE - aggressive"
; V223 cse7 [V223,T06] ( 21, 58 ) int -> [ebp-0x68] spill-single-def "CSE - moderate" ; ; Lcl frame size = 180 @@ -253,7 +253,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 mov eax, dword ptr [ebp+0x0C] mov dword ptr [ebp-0x54], eax test edi, edi
- je G_M36935_IG82
+ je G_M36935_IG85
test ebx, ebx jne SHORT G_M36935_IG04 ;; size=18 bbWeight=1 PerfScore 4.50 @@ -294,7 +294,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=000000200000000000000000 {V04}, gcref cmp ecx, edx mov gword ptr [ebp-0x6C], ebx ; GC ptr vars +{V01}
- jbe G_M36935_IG76
+ jbe G_M36935_IG79
;; size=17 bbWeight=8 PerfScore 42.00 G_M36935_IG07: ; bbWeight=4, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz ; gcrRegs -[ebx] @@ -331,9 +331,9 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; byrRegs -[eax ecx] mov dword ptr [ebp-0x2C], eax test eax, eax
- jl G_M36935_IG77
+ jl G_M36935_IG80
cmp eax, ebx
- ja G_M36935_IG89
+ ja G_M36935_IG92
mov ecx, dword ptr [esi+0x04] mov edx, dword ptr [esi+0x0C] sub edx, eax @@ -354,7 +354,7 @@ G_M36935_IG11: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, dword ptr [esi+0x04] mov ebx, dword ptr [ecx+0x04] cmp edx, ebx
- ja G_M36935_IG89
+ ja G_M36935_IG92
mov ecx, bword ptr [ecx] lea ecx, bword ptr [ecx+2*edx] mov bword ptr [ebp-0x90], ecx @@ -374,7 +374,7 @@ G_M36935_IG12: ; bbWeight=2, gcVars=000000200000000304000000 {V01 V04 V76 ;; size=19 bbWeight=2 PerfScore 9.00 G_M36935_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz cmp eax, ebx
- ja G_M36935_IG90
+ ja G_M36935_IG93
lea edx, [eax+eax] push edx mov ecx, bword ptr [ebp-0x90] @@ -390,11 +390,11 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 add edx, ebx mov ebx, dword ptr [ebp-0x64] cmp edx, ebx
- jae G_M36935_IG81
+ jae G_M36935_IG84
movzx eax, word ptr [edi+2*edx+0x08] inc edx cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
mov dword ptr [ebp-0x10], edx movzx ecx, word ptr [edi+2*edx+0x08] cmp eax, ecx @@ -437,7 +437,7 @@ G_M36935_IG16: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 G_M36935_IG17: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz ; gcrRegs -[ebx] cmp eax, 123
- jne G_M36935_IG83
+ jne G_M36935_IG86
xor eax, eax mov dword ptr [ebp-0x18], eax xor eax, eax @@ -452,7 +452,7 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, dword ptr [ebp-0x10] lea eax, [edx-0x01] cmp eax, ebx
- jae G_M36935_IG81
+ jae G_M36935_IG84
mov dword ptr [ebp-0x10], edx cmp word ptr [edi+2*edx+0x06], 123 je SHORT G_M36935_IG19 @@ -489,10 +489,10 @@ G_M36935_IG21: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov edx, dword ptr [ebp-0x10] inc edx cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08] cmp ecx, 125
- je G_M36935_IG42
+ je G_M36935_IG45
;; size=40 bbWeight=4 PerfScore 38.00 G_M36935_IG22: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz jmp SHORT G_M36935_IG25 @@ -502,7 +502,7 @@ G_M36935_IG23: ; bbWeight=2, gcVars=000000000000000000000000 {}, gcrefReg ; byrRegs -[esi] ; GC ptr vars -{V01 V04 V149} mov edx, dword ptr [ebp-0x10]
- jmp G_M36935_IG84
+ jmp G_M36935_IG87
;; size=8 bbWeight=2 PerfScore 6.00 G_M36935_IG24: ; bbWeight=8, gcVars=000000200000000180000000 {V01 V04 V149}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref ; gcrRegs +[edi] @@ -513,7 +513,7 @@ G_M36935_IG24: ; bbWeight=8, gcVars=000000200000000180000000 {V01 V04 V14 mov dword ptr [ebp-0x20], eax inc edx cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08] ;; size=24 bbWeight=8 PerfScore 48.00 G_M36935_IG25: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz @@ -534,7 +534,7 @@ G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 G_M36935_IG28: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz inc edx cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08] cmp ecx, 32 je SHORT G_M36935_IG28 @@ -542,12 +542,12 @@ G_M36935_IG28: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000004 G_M36935_IG29: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref cmp ecx, 44 mov eax, ecx
- jne G_M36935_IG37
+ jne G_M36935_IG41
;; size=11 bbWeight=2 PerfScore 3.00 G_M36935_IG30: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz inc edx cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08] cmp ecx, 32 je SHORT G_M36935_IG30 @@ -558,75 +558,96 @@ G_M36935_IG31: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x1C], 1 inc edx cmp ebx, edx
- jbe G_M36935_IG85
+ jbe G_M36935_IG88
movzx ecx, word ptr [edi+2*edx+0x08] ;; size=26 bbWeight=2 PerfScore 11.50
-G_M36935_IG32: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M36935_IG32: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
add ecx, -48 mov dword ptr [ebp-0x18], ecx cmp ecx, 10
- jae G_M36935_IG84
+ jae G_M36935_IG87
inc edx cmp ebx, edx
- jbe G_M36935_IG85 - ;; size=24 bbWeight=2 PerfScore 8.00 -G_M36935_IG33: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - cmp edx, ebx - jae G_M36935_IG81 - movzx eax, word ptr [edi+2*edx+0x08] - lea ecx, [eax-0x30] - cmp ecx, 9 - ja SHORT G_M36935_IG35 - mov ecx, dword ptr [ebp-0x18] - cmp ecx, 0xD1FFAB1E - jl SHORT G_M36935_IG39 - ;; size=32 bbWeight=16 PerfScore 116.00 -G_M36935_IG34: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - mov dword ptr [ebp-0x18], ecx - ;; size=3 bbWeight=8 PerfScore 8.00 -G_M36935_IG35: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - cmp eax, 32 - jne SHORT G_M36935_IG37 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M36935_IG36: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - inc edx - cmp ebx, edx - jbe G_M36935_IG85 - movzx eax, word ptr [edi+2*edx+0x08] - cmp eax, 32 - je SHORT G_M36935_IG36 - ;; size=19 bbWeight=16 PerfScore 76.00 -G_M36935_IG37: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref - cmp eax, 125 - je G_M36935_IG42 - cmp eax, 58 - jne G_M36935_IG86 - mov dword ptr [ebp-0x24], edx - ;; size=21 bbWeight=2 PerfScore 7.00 -G_M36935_IG38: ; bbWeight=16, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; GC ptr vars -{V149} - inc edx - cmp ebx, edx - jbe G_M36935_IG85 - movzx eax, word ptr [edi+2*edx+0x08] - cmp eax, 125 - je SHORT G_M36935_IG40 - cmp eax, 123 - je G_M36935_IG86 - jmp SHORT G_M36935_IG38 - ;; size=30 bbWeight=16 PerfScore 128.00 -G_M36935_IG39: ; bbWeight=8, gcVars=000000200000000180000000 {V01 V04 V149}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref - ; GC ptr vars +{V149}
+ jbe G_M36935_IG88 + test edx, edx + jl SHORT G_M36935_IG37 + jmp SHORT G_M36935_IG34 + ;; size=30 bbWeight=2 PerfScore 14.50 +G_M36935_IG33: ; bbWeight=7.92, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
lea ecx, [ecx+4*ecx] lea ecx, [eax+2*ecx-0x30] mov dword ptr [ebp-0x18], ecx inc edx cmp ebx, edx
- jbe G_M36935_IG85 - jmp G_M36935_IG33 - ;; size=24 bbWeight=8 PerfScore 48.00 -G_M36935_IG40: ; bbWeight=2, gcVars=000000200000000100000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz
+ jbe G_M36935_IG88 + ;; size=19 bbWeight=7.92 PerfScore 31.68 +G_M36935_IG34: ; bbWeight=15.84, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz + movzx eax, word ptr [edi+2*edx+0x08] + lea ecx, [eax-0x30] + cmp ecx, 9 + ja SHORT G_M36935_IG39 + mov ecx, dword ptr [ebp-0x18]
...

coreclr_tests.run.windows.x86.checked.mch

+17 (+0.62%) : 452845.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)

@@ -10,26 +10,26 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 56, 26.65) byref -> esi this single-def
-; V01 arg1 [V01,T21] ( 11, 4.71) ref -> [ebp-0x78] class-hnd single-def <System.IFormatProvider> -; V02 arg2 [V02,T04] ( 16, 25.33) ref -> edi class-hnd single-def <System.String>
+; V01 arg1 [V01,T21] ( 11, 4.71) ref -> [ebp-0x6C] class-hnd single-def <System.IFormatProvider> +; V02 arg2 [V02,T04] ( 17, 25.33) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T61] ( 2, 2 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]>
-; V04 loc0 [V04,T50] ( 3, 2.76) ref -> [ebp-0x7C] class-hnd spill-single-def <<unknown class>> -; V05 loc1 [V05,T00] ( 62, 72.53) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T01] ( 31, 37.40) ushort -> [ebp-0x14] -; V07 loc3 [V07,T25] ( 12, 5.40) int -> [ebp-0x18]
+; V04 loc0 [V04,T50] ( 3, 2.76) ref -> [ebp-0x70] class-hnd spill-single-def <<unknown class>> +; V05 loc1 [V05,T00] ( 67, 72.43) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T01] ( 34, 37.40) ushort -> [ebp-0x14] +; V07 loc3 [V07,T25] ( 15, 5.40) int -> [ebp-0x18]
; V08 loc4 [V08,T31] ( 5, 4.51) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T19] ( 7, 7.03) int -> [ebp-0x20]
-; V11 loc7 [V11,T05] ( 28, 15.06) ref -> [ebp-0x80] class-hnd <System.String> -; V12 loc8 [V12,T59] ( 7, 2.06) ref -> [ebp-0x84] class-hnd <System.String> -; V13 loc9 [V13,T17] ( 11, 7.28) ref -> [ebp-0x88] class-hnd spill-single-def <System.Object>
+; V11 loc7 [V11,T05] ( 28, 15.06) ref -> [ebp-0x74] class-hnd <System.String> +; V12 loc8 [V12,T59] ( 7, 2.06) ref -> [ebp-0x78] class-hnd <System.String> +; V13 loc9 [V13,T17] ( 11, 7.28) ref -> [ebp-0x7C] class-hnd spill-single-def <System.Object>
;* V14 loc10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ;* V15 loc11 [V15 ] ( 0, 0 ) int -> zero-ref ; V16 loc12 [V16,T26] ( 3, 5.28) ushort -> ecx ; V17 loc13 [V17,T13] ( 7, 9.36) int -> edx
-; V18 loc14 [V18,T30] ( 5, 4.69) ref -> [ebp-0x8C] class-hnd spill-single-def <System.ISpanFormattable>
+; V18 loc14 [V18,T30] ( 5, 4.69) ref -> [ebp-0x80] class-hnd spill-single-def <System.ISpanFormattable>
; V19 loc15 [V19 ] ( 5, 1.57) int -> [ebp-0x24] do-not-enreg[X] addr-exposed ld-addr-op
-; V20 loc16 [V20,T55] ( 5, 2.14) ref -> [ebp-0x90] class-hnd spill-single-def <System.IFormattable>
+; V20 loc16 [V20,T55] ( 5, 2.14) ref -> [ebp-0x84] class-hnd spill-single-def <System.IFormattable>
; V21 tmp0 [V21,T60] ( 3, 2.00) ref -> edx ;* V22 tmp1 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V23 tmp2 [V23,T63] ( 3, 1.74) ref -> edx @@ -48,7 +48,7 @@ ;* V36 tmp15 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V37 tmp16 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V38 tmp17 [V38,T09] ( 3, 12.67) int -> ebx "Inlining Arg"
-; V39 tmp18 [V39,T14] ( 2, 8.44) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
+; V39 tmp18 [V39,T14] ( 2, 8.44) byref -> [ebp-0x88] spill-single-def "Inlining Arg"
;* V40 tmp19 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp20 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V42 tmp21 [V42 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" @@ -75,7 +75,7 @@ ; V63 tmp42 [V63,T56] ( 3, 2.12) byref -> ecx single-def "Inlining Arg" ;* V64 tmp43 [V64 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V65 tmp44 [V65,T57] ( 3, 2.12) int -> edi "Inlining Arg"
-; V66 tmp45 [V66,T74] ( 2, 1.41) byref -> [ebp-0x98] spill-single-def "Inlining Arg"
+; V66 tmp45 [V66,T74] ( 2, 1.41) byref -> [ebp-0x8C] spill-single-def "Inlining Arg"
;* V67 tmp46 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V68 tmp47 [V68 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V69 tmp48 [V69 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -93,7 +93,7 @@ ; V81 tmp60 [V81,T11] ( 3, 10.55) byref -> ecx "Inlining Arg" ;* V82 tmp61 [V82 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V83 tmp62 [V83,T12] ( 3, 10.55) int -> ebx "Inlining Arg"
-; V84 tmp63 [V84,T20] ( 2, 7.03) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
+; V84 tmp63 [V84,T20] ( 2, 7.03) byref -> [ebp-0x90] spill-single-def "Inlining Arg"
;* V85 tmp64 [V85 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V86 tmp65 [V86 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V87 tmp66 [V87 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -117,7 +117,7 @@ ; V105 tmp84 [V105,T28] ( 3, 4.72) byref -> eax "Inlining Arg" ;* V106 tmp85 [V106 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V107 tmp86 [V107,T29] ( 3, 4.72) int -> [ebp-0x34] spill-single-def "Inlining Arg"
-; V108 tmp87 [V108,T45] ( 2, 3.15) byref -> [ebp-0xA0] spill-single-def "Inlining Arg"
+; V108 tmp87 [V108,T45] ( 2, 3.15) byref -> [ebp-0x94] spill-single-def "Inlining Arg"
;* V109 tmp88 [V109 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V110 tmp89 [V110 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V111 tmp90 [V111,T53] ( 2, 2.58) byref -> ecx "Inlining Arg" @@ -131,10 +131,10 @@ ; V119 tmp98 [V119,T90] ( 3, 0.45) byref -> edx "Span.get_Item ptrToSpan" ; V120 tmp99 [V120,T43] ( 5, 3.47) int -> [ebp-0x44] spill-single-def "Inline stloc first use temp" ;* V121 tmp100 [V121 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V122 tmp101 [V122,T38] ( 3, 4.16) byref -> eax "Inlining Arg"
+; V122 tmp101 [V122,T38] ( 3, 4.16) byref -> ecx "Inlining Arg"
;* V123 tmp102 [V123 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ; V124 tmp103 [V124,T39] ( 3, 4.16) int -> [ebp-0x48] spill-single-def "Inlining Arg"
-; V125 tmp104 [V125,T48] ( 2, 2.92) byref -> [ebp-0xA4] spill-single-def "Inlining Arg"
+; V125 tmp104 [V125,T48] ( 2, 2.92) byref -> [ebp-0x98] spill-single-def "Inlining Arg"
;* V126 tmp105 [V126 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V127 tmp106 [V127 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V128 tmp107 [V128 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -145,36 +145,36 @@ ; V133 tmp112 [V133,T102] ( 3, 0 ) byref -> ecx "Span.get_Item ptrToSpan" ; V134 tmp113 [V134,T24] ( 9, 5.16) int -> [ebp-0x50] spill-single-def "Inlining Arg" ;* V135 tmp114 [V135 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
-; V136 tmp115 [V136,T41] ( 6, 3.61) int -> ecx "Inline stloc first use temp" -; V137 tmp116 [V137,T65] ( 4, 1.62) int -> [ebp-0x54] spill-single-def "Inlining Arg" -; V138 tmp117 [V138,T75] ( 3, 1.22) byref -> [ebp-0xA8] spill-single-def "Inlining Arg"
+; V136 tmp115 [V136,T41] ( 6, 3.61) int -> edx "Inline stloc first use temp" +; V137 tmp116 [V137,T65] ( 4, 1.62) int -> edi "Inlining Arg" +; V138 tmp117 [V138,T75] ( 3, 1.22) byref -> [ebp-0x9C] spill-single-def "Inlining Arg"
;* V139 tmp118 [V139 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V140 tmp119 [V140,T82] ( 2, 0.81) byref -> [ebp-0xAC] spill-single-def "Inlining Arg"
+; V140 tmp119 [V140,T82] ( 2, 0.81) byref -> edi "Inlining Arg"
;* V141 tmp120 [V141 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V142 tmp121 [V142 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V143 tmp122 [V143,T93] ( 5, 0.28) int -> edx "Inline stloc first use temp" ; V144 tmp123 [V144,T98] ( 3, 0.12) byref -> eax "Span.get_Item ptrToSpan"
-; V145 tmp124 [V145,T80] ( 5, 0.92) int -> [ebp-0x58] spill-single-def "Inline stloc first use temp"
+; V145 tmp124 [V145,T80] ( 5, 0.92) int -> edi "Inline stloc first use temp"
;* V146 tmp125 [V146 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ; V147 tmp126 [V147,T76] ( 3, 1.10) byref -> ecx "Inlining Arg" ;* V148 tmp127 [V148 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V149 tmp128 [V149,T77] ( 3, 1.10) int -> [ebp-0x5C] spill-single-def "Inlining Arg" -; V150 tmp129 [V150,T83] ( 2, 0.73) byref -> [ebp-0xB0] spill-single-def "Inlining Arg"
+; V149 tmp128 [V149,T77] ( 3, 1.10) int -> edi "Inlining Arg" +; V150 tmp129 [V150,T83] ( 2, 0.73) byref -> [ebp-0xA0] spill-single-def "Inlining Arg"
;* V151 tmp130 [V151 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V152 tmp131 [V152 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V153 tmp132 [V153 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V154 tmp133 [V154 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V155 tmp134 [V155,T84] ( 2, 0.73) byref -> edx "Inlining Arg" ; V156 tmp135 [V156,T85] ( 2, 0.73) int -> ecx "Inlining Arg"
-; V157 tmp136 [V157,T44] ( 6, 3.37) byref -> [ebp-0xB4] "field V09._reference (fldOffset=0x0)" P-INDEP -; V158 tmp137 [V158,T42] ( 8, 3.47) int -> [ebp-0x60] "field V09._length (fldOffset=0x4)" P-INDEP
+; V157 tmp136 [V157,T44] ( 6, 3.37) byref -> [ebp-0xA4] "field V09._reference (fldOffset=0x0)" P-INDEP +; V158 tmp137 [V158,T42] ( 8, 3.47) int -> [ebp-0x54] "field V09._length (fldOffset=0x4)" P-INDEP
;* V159 tmp138 [V159 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP ;* V160 tmp139 [V160 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x4)" P-INDEP ;* V161 tmp140 [V161 ] ( 0, 0 ) byref -> zero-ref "field V22._reference (fldOffset=0x0)" P-INDEP ;* V162 tmp141 [V162 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x4)" P-INDEP ;* V163 tmp142 [V163 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP ;* V164 tmp143 [V164 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x4)" P-INDEP
-; V165 tmp144 [V165,T22] ( 4, 6.33) byref -> [ebp-0xB8] spill-single-def "field V34._reference (fldOffset=0x0)" P-INDEP
+; V165 tmp144 [V165,T22] ( 4, 6.33) byref -> [ebp-0xA8] spill-single-def "field V34._reference (fldOffset=0x0)" P-INDEP
; V166 tmp145 [V166,T16] ( 8, 7.40) int -> ebx "field V34._length (fldOffset=0x4)" P-INDEP ; V167 tmp146 [V167,T32] ( 2, 4.22) byref -> eax "field V36._reference (fldOffset=0x0)" P-INDEP ; V168 tmp147 [V168,T33] ( 2, 4.22) int -> ebx "field V36._length (fldOffset=0x4)" P-INDEP @@ -204,19 +204,19 @@ ;* V192 tmp171 [V192 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x4)" P-INDEP ;* V193 tmp172 [V193 ] ( 0, 0 ) byref -> zero-ref "field V87._reference (fldOffset=0x0)" P-INDEP ;* V194 tmp173 [V194 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x4)" P-INDEP
-; V195 tmp174 [V195,T103] ( 2, 0 ) byref -> [ebp-0xBC] spill-single-def "field V92._reference (fldOffset=0x0)" P-INDEP -; V196 tmp175 [V196,T104] ( 2, 0 ) int -> [ebp-0x64] spill-single-def "field V92._length (fldOffset=0x4)" P-INDEP
+; V195 tmp174 [V195,T103] ( 2, 0 ) byref -> [ebp-0xAC] spill-single-def "field V92._reference (fldOffset=0x0)" P-INDEP +; V196 tmp175 [V196,T104] ( 2, 0 ) int -> [ebp-0x58] spill-single-def "field V92._length (fldOffset=0x4)" P-INDEP
; V197 tmp176 [V197,T70] ( 2, 1.44) byref -> ebx "field V96._reference (fldOffset=0x0)" P-INDEP ; V198 tmp177 [V198,T72] ( 2, 1.44) int -> eax "field V96._length (fldOffset=0x4)" P-INDEP ; V199 tmp178 [V199,T71] ( 2, 1.44) byref -> ebx "field V98._reference (fldOffset=0x0)" P-INDEP ; V200 tmp179 [V200,T73] ( 2, 1.44) int -> eax "field V98._length (fldOffset=0x4)" P-INDEP ;* V201 tmp180 [V201 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP ;* V202 tmp181 [V202 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x4)" P-INDEP
-; V203 tmp182 [V203,T67] ( 3, 1.57) byref -> [ebp-0xC0] spill-single-def "field V106._reference (fldOffset=0x0)" P-INDEP
+; V203 tmp182 [V203,T67] ( 3, 1.57) byref -> [ebp-0xB0] spill-single-def "field V106._reference (fldOffset=0x0)" P-INDEP
; V204 tmp183 [V204,T69] ( 3, 1.57) int -> edx "field V106._length (fldOffset=0x4)" P-INDEP ;* V205 tmp184 [V205 ] ( 0, 0 ) byref -> zero-ref "field V112._reference (fldOffset=0x0)" P-INDEP ;* V206 tmp185 [V206 ] ( 0, 0 ) int -> zero-ref "field V112._length (fldOffset=0x4)" P-INDEP
-; V207 tmp186 [V207,T62] ( 3, 1.94) long -> [ebp-0x6C] do-not-enreg[F] "field V113._dateData (fldOffset=0x0)" P-INDEP
+; V207 tmp186 [V207,T62] ( 3, 1.94) long -> [ebp-0x60] do-not-enreg[F] "field V113._dateData (fldOffset=0x0)" P-INDEP
;* V208 tmp187 [V208,T86] ( 0, 0 ) long -> zero-ref "field V114._ticks (fldOffset=0x0)" P-INDEP ;* V209 tmp188 [V209 ] ( 0, 0 ) byref -> zero-ref "field V121._reference (fldOffset=0x0)" P-INDEP ;* V210 tmp189 [V210 ] ( 0, 0 ) int -> zero-ref "field V121._length (fldOffset=0x4)" P-INDEP @@ -224,9 +224,9 @@ ;* V212 tmp191 [V212 ] ( 0, 0 ) int -> zero-ref "field V123._length (fldOffset=0x4)" P-INDEP ;* V213 tmp192 [V213 ] ( 0, 0 ) byref -> zero-ref "field V128._reference (fldOffset=0x0)" P-INDEP ;* V214 tmp193 [V214 ] ( 0, 0 ) int -> zero-ref "field V128._length (fldOffset=0x4)" P-INDEP
-; V215 tmp194 [V215,T81] ( 2, 0.88) byref -> edx "field V135._reference (fldOffset=0x0)" P-INDEP
+; V215 tmp194 [V215,T81] ( 2, 0.88) byref -> edi "field V135._reference (fldOffset=0x0)" P-INDEP
;* V216 tmp195 [V216,T96] ( 0, 0 ) int -> zero-ref "field V135._length (fldOffset=0x4)" P-INDEP
-; V217 tmp196 [V217,T92] ( 2, 0.41) byref -> edx "field V139._reference (fldOffset=0x0)" P-INDEP
+; V217 tmp196 [V217,T92] ( 2, 0.41) byref -> edi "field V139._reference (fldOffset=0x0)" P-INDEP
;* V218 tmp197 [V218,T97] ( 0, 0 ) int -> zero-ref "field V139._length (fldOffset=0x4)" P-INDEP ;* V219 tmp198 [V219 ] ( 0, 0 ) byref -> zero-ref "field V146._reference (fldOffset=0x0)" P-INDEP ;* V220 tmp199 [V220 ] ( 0, 0 ) int -> zero-ref "field V146._length (fldOffset=0x4)" P-INDEP @@ -234,23 +234,23 @@ ;* V222 tmp201 [V222 ] ( 0, 0 ) int -> zero-ref "field V148._length (fldOffset=0x4)" P-INDEP ;* V223 tmp202 [V223 ] ( 0, 0 ) byref -> zero-ref "field V153._reference (fldOffset=0x0)" P-INDEP ;* V224 tmp203 [V224 ] ( 0, 0 ) int -> zero-ref "field V153._length (fldOffset=0x4)" P-INDEP
-; V225 tmp204 [V225,T51] ( 2, 2.76) byref -> [ebp-0xC4] spill-single-def "V03.[000..004)" -; V226 tmp205 [V226,T52] ( 2, 2.76) int -> [ebp-0x70] spill-single-def "V03.[004..008)"
+; V225 tmp204 [V225,T51] ( 2, 2.76) byref -> [ebp-0xB4] spill-single-def "V03.[000..004)" +; V226 tmp205 [V226,T52] ( 2, 2.76) int -> [ebp-0x64] spill-single-def "V03.[004..008)"
; V227 cse0 [V227,T79] ( 3, 1.06) int -> edi "CSE - conservative" ; V228 cse1 [V228,T87] ( 3, 0.61) int -> ecx "CSE - conservative" ; V229 cse2 [V229,T89] ( 3, 0.55) int -> eax "CSE - conservative" ; V230 cse3 [V230,T27] ( 3, 5.28) int -> ebx "CSE - conservative" ; V231 cse4 [V231,T54] ( 3, 2.36) int -> ecx "CSE - conservative"
-; V232 cse5 [V232,T58] ( 3, 2.08) int -> edx "CSE - conservative" -; V233 cse6 [V233,T88] ( 3, 0.59) int -> eax "CSE - conservative" -; V234 cse7 [V234,T03] ( 19, 28.11) int -> [ebp-0x74] spill-single-def "CSE - aggressive"
+; V232 cse5 [V232,T58] ( 3, 2.08) int -> eax "CSE - conservative" +; V233 cse6 [V233,T88] ( 3, 0.59) int -> edi "CSE - conservative" +; V234 cse7 [V234,T03] ( 20, 27.81) int -> [ebp-0x68] spill-single-def "CSE - aggressive"
; V235 rat0 [V235,T10] ( 5, 11.56) ref -> registers class-hnd "replacement local" <System.ISpanFormattable> ; V236 rat1 [V236,T15] ( 6, 7.77) ref -> eax class-hnd "replacement local" <System.IFormattable> ; V237 rat2 [V237,T40] ( 3, 3.87) byref -> ecx "ReplaceWithLclVar is creating a new local variable"
-; TEMP_02 byref -> [ebp-0xC8] -; TEMP_01 int -> [ebp-0xCC]
+; TEMP_02 byref -> [ebp-0xB8] +; TEMP_01 int -> [ebp-0xBC]
;
-; Lcl frame size = 192
+; Lcl frame size = 176
G_M36935_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -258,10 +258,10 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 192
+ sub esp, 176
vzeroupper xor eax, eax
- mov dword ptr [ebp-0xC8], eax
+ mov dword ptr [ebp-0xB8], eax
mov esi, ecx ; byrRegs +[esi] mov ebx, edx @@ -272,21 +272,21 @@ G_M36935_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} G_M36935_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref mov eax, bword ptr [ebp+0x08] ; byrRegs +[eax]
- mov bword ptr [ebp-0xC4], eax
+ mov bword ptr [ebp-0xB4], eax
; GC ptr vars +{V225} mov ecx, dword ptr [ebp+0x0C]
- mov dword ptr [ebp-0x70], ecx
+ mov dword ptr [ebp-0x64], ecx
test edi, edi
- je G_M36935_IG111
+ je G_M36935_IG100
test ebx, ebx je G_M36935_IG32 ;; size=31 bbWeight=1 PerfScore 6.50 G_M36935_IG03: ; bbWeight=0.80, gcVars=00000000000000000008000000000000 {V225}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, gcvars, byref ; byrRegs -[eax]
- mov gword ptr [ebp-0x78], ebx
+ mov gword ptr [ebp-0x6C], ebx
; GC ptr vars +{V01} cmp dword ptr [ebx], 0xD1FFAB1E
- jne G_M36935_IG112
+ jne G_M36935_IG101
xor edx, edx ; gcrRegs +[edx] ;; size=17 bbWeight=0.80 PerfScore 4.18 @@ -295,21 +295,21 @@ G_M36935_IG04: ; bbWeight=1, gcVars=00000000000000000008000000200000 {V01 mov ecx, 0xD1FFAB1E ; <unknown class> call [CORINFO_HELP_CHKCASTINTERFACE] ; gcrRegs -[edx] +[eax]
- mov gword ptr [ebp-0x7C], eax
+ mov gword ptr [ebp-0x70], eax
; GC ptr vars +{V04} xor edx, edx ...

libraries.crossgen2.windows.x86.checked.mch

-15 (-24.19%) : 80963.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -8,9 +8,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T02] ( 3, 10 ) ref -> esi class-hnd exact single-def <uint[]> -; V01 loc1 [V01,T00] ( 7, 49 ) int -> edi -; V02 loc2 [V02,T01] ( 2, 16 ) int -> eax
+; V00 loc0 [V00,T02] ( 3, 9.92) ref -> esi class-hnd exact single-def <uint[]> +; V01 loc1 [V01,T00] ( 6, 40.60) int -> edi +; V02 loc2 [V02,T01] ( 2, 15.84) int -> eax
; ; Lcl frame size = 0 @@ -28,17 +28,15 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] xor edi, edi ;; size=15 bbWeight=1 PerfScore 3.75
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov ecx, edi call [Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint]
- cmp edi, 256 - jae SHORT G_M39919_IG06
mov dword ptr [esi+4*edi+0x08], eax inc edi cmp edi, 255 jbe SHORT G_M39919_IG03
- ;; size=29 bbWeight=8 PerfScore 56.00
+ ;; size=21 bbWeight=7.92 PerfScore 45.54
G_M39919_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov eax, esi ; gcrRegs +[eax] @@ -49,12 +47,7 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=1 PerfScore 2.50
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax esi] - call [CORINFO_HELP_RNGCHKFAIL] - int3 - ;; size=7 bbWeight=0 PerfScore 0.00
-Total bytes of code 62, prolog size 5, PerfScore 65.75, instruction count 23, allocated bytes for code 62 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 47, prolog size 5, PerfScore 55.29, instruction count 19, allocated bytes for code 47 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================

+25 (+1.47%) : 20839.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (FullOpts)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T02] ( 30,250.50) byref -> esi this single-def ; V01 arg1 [V01,T30] ( 7, 11.50) ref -> [ebp-0x4C] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T04] ( 16,125 ) ref -> edi class-hnd single-def <System.String>
+; V02 arg2 [V02,T04] ( 17,125 ) ref -> edi class-hnd single-def <System.String>
; V03 arg3 [V03,T53] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T49] ( 3, 7 ) ref -> [ebp-0x50] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T01] ( 31,260 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T06] ( 12,102 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T01] ( 34,260 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T06] ( 15,102 ) int -> [ebp-0x18]
; V08 loc4 [V08,T13] ( 5, 46 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T10] ( 7, 48 ) int -> [ebp-0x20] @@ -125,7 +125,7 @@ ; V113 tmp92 [V113,T60] ( 2, 2 ) ref -> edx single-def "argument with side effect" ; V114 cse0 [V114,T14] ( 20, 40 ) ref -> registers multi-def "CSE - moderate" ; V115 cse1 [V115,T36] ( 3, 12 ) int -> eax "CSE - conservative"
-; V116 cse2 [V116,T03] ( 19,144 ) int -> [ebp-0x44] spill-single-def "CSE - aggressive"
+; V116 cse2 [V116,T03] ( 20,128.16) int -> [ebp-0x44] spill-single-def "CSE - aggressive"
; V117 cse3 [V117,T05] ( 7,108 ) int -> [ebp-0x48] spill-single-def "CSE - moderate" ; ; Lcl frame size = 112 @@ -148,7 +148,7 @@ G_M36935_IG02: ; bbWeight=1, gcrefRegs=00000088 {ebx edi}, byrefRegs=0000 mov eax, dword ptr [ebp+0x0C] mov dword ptr [ebp-0x40], eax test edi, edi
- je G_M36935_IG76
+ je G_M36935_IG79
test ebx, ebx jne SHORT G_M36935_IG04 ;; size=18 bbWeight=1 PerfScore 4.50 @@ -189,7 +189,7 @@ G_M36935_IG06: ; bbWeight=8, gcVars=0002000000000000 {V04}, gcrefRegs=000 mov ecx, dword ptr [edi+0x04] mov dword ptr [ebp-0x44], ecx cmp ecx, edx
- jbe G_M36935_IG72
+ jbe G_M36935_IG75
;; size=14 bbWeight=8 PerfScore 34.00 G_M36935_IG07: ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000040 {esi}, byref, isz mov gword ptr [ebp-0x4C], ebx @@ -231,9 +231,9 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 ; byrRegs -[eax ecx] mov dword ptr [ebp-0x2C], eax test eax, eax
- jl G_M36935_IG73
+ jl G_M36935_IG76
cmp eax, ebx
- ja G_M36935_IG83
+ ja G_M36935_IG86
mov ebx, bword ptr [ebp-0x78] ; byrRegs +[ebx] mov ecx, eax @@ -250,11 +250,11 @@ G_M36935_IG09: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 add ebx, dword ptr [ebp-0x2C] mov eax, dword ptr [ebp-0x44] cmp ebx, eax
- jae G_M36935_IG75
+ jae G_M36935_IG78
movzx edx, word ptr [edi+2*ebx+0x08] inc ebx cmp eax, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx ecx, word ptr [edi+2*ebx+0x08] cmp edx, ecx jne SHORT G_M36935_IG13 @@ -296,7 +296,7 @@ G_M36935_IG12: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 G_M36935_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz ; gcrRegs -[ebx] cmp edx, 123
- jne G_M36935_IG77
+ jne G_M36935_IG80
xor edx, edx mov dword ptr [ebp-0x18], edx xor eax, eax @@ -310,7 +310,7 @@ G_M36935_IG13: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x3C], eax lea eax, [ebx-0x01] cmp eax, dword ptr [ebp-0x44]
- jae G_M36935_IG75
+ jae G_M36935_IG78
cmp word ptr [edi+2*ebx+0x06], 123 je SHORT G_M36935_IG15 ;; size=49 bbWeight=4 PerfScore 55.00 @@ -348,13 +348,13 @@ G_M36935_IG17: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000040 lea eax, [ecx-0x30] mov dword ptr [ebp-0x20], eax cmp eax, 10
- jae G_M36935_IG78
+ jae G_M36935_IG81
inc ebx cmp dword ptr [ebp-0x44], ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx eax, word ptr [edi+2*ebx+0x08] cmp eax, 125
- je G_M36935_IG42
+ je G_M36935_IG45
;; size=42 bbWeight=4 PerfScore 41.00 G_M36935_IG18: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz jmp SHORT G_M36935_IG20 @@ -366,7 +366,7 @@ G_M36935_IG19: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 inc ebx mov eax, dword ptr [ebp-0x44] cmp eax, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx ecx, word ptr [edi+2*ebx+0x08] mov eax, ecx ;; size=29 bbWeight=8 PerfScore 58.00 @@ -381,28 +381,28 @@ G_M36935_IG20: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=0000004 G_M36935_IG21: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref mov dword ptr [ebp-0x20], ecx ;; size=3 bbWeight=8 PerfScore 8.00
-G_M36935_IG22: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M36935_IG22: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp eax, 32
- jne G_M36935_IG38 - ;; size=9 bbWeight=2 PerfScore 2.50 -G_M36935_IG23: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ jne SHORT G_M36935_IG30 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M36935_IG23: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
inc ebx mov ecx, dword ptr [ebp-0x44] cmp ecx, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx eax, word ptr [edi+2*ebx+0x08] cmp eax, 32
- je G_M36935_IG37 - ;; size=26 bbWeight=16 PerfScore 92.00 -G_M36935_IG24: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+ je SHORT G_M36935_IG29 + ;; size=22 bbWeight=16 PerfScore 92.00 +G_M36935_IG24: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
cmp eax, 44 mov edx, eax
- jne G_M36935_IG36 - ;; size=11 bbWeight=2 PerfScore 3.00
+ jne SHORT G_M36935_IG28 + ;; size=7 bbWeight=2 PerfScore 3.00
G_M36935_IG25: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz inc ebx cmp ecx, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx eax, word ptr [edi+2*ebx+0x08] cmp eax, 32 je SHORT G_M36935_IG25 @@ -413,95 +413,116 @@ G_M36935_IG26: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 mov dword ptr [ebp-0x1C], 1 inc ebx cmp ecx, ebx
- jbe G_M36935_IG79
+ jbe G_M36935_IG82
movzx eax, word ptr [edi+2*ebx+0x08] ;; size=26 bbWeight=2 PerfScore 11.50
-G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref
+G_M36935_IG27: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
add eax, -48 cmp eax, 10
- jae G_M36935_IG78
+ jae G_M36935_IG81
inc ebx cmp ecx, ebx
- jbe G_M36935_IG79 - ;; size=21 bbWeight=2 PerfScore 6.00 -G_M36935_IG28: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - cmp ebx, ecx - jae G_M36935_IG75
+ jbe G_M36935_IG82 + test ebx, ebx + jl SHORT G_M36935_IG35 + jmp SHORT G_M36935_IG32 + ;; size=27 bbWeight=2 PerfScore 12.50 +G_M36935_IG28: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref + mov eax, dword ptr [ebp-0x18] + jmp G_M36935_IG38 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M36935_IG29: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz + jmp SHORT G_M36935_IG23 + ;; size=2 bbWeight=8 PerfScore 16.00 +G_M36935_IG30: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz + mov ecx, dword ptr [ebp-0x44] + jmp SHORT G_M36935_IG24 + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M36935_IG31: ; bbWeight=7.92, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref + lea eax, [eax+4*eax] + lea eax, [edx+2*eax-0x30] + inc ebx + mov ecx, dword ptr [ebp-0x44] + cmp ecx, ebx + jbe G_M36935_IG82 + ;; size=19 bbWeight=7.92 PerfScore 31.68 +G_M36935_IG32: ; bbWeight=15.84, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
movzx edx, word ptr [edi+2*ebx+0x08] lea ecx, [edx-0x30] cmp ecx, 9
- ja SHORT G_M36935_IG29
+ ja SHORT G_M36935_IG36
cmp eax, 0xD1FFAB1E
- jl SHORT G_M36935_IG39 - ;; size=28 bbWeight=16 PerfScore 100.00 -G_M36935_IG29: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - cmp edx, 32 - jne SHORT G_M36935_IG35 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M36935_IG30: ; bbWeight=16, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - inc ebx - mov ecx, dword ptr [ebp-0x44] - cmp ecx, ebx - jbe G_M36935_IG79 - movzx edx, word ptr [edi+2*ebx+0x08] - cmp edx, 32 - je SHORT G_M36935_IG34 - ;; size=22 bbWeight=16 PerfScore 92.00 -G_M36935_IG31: ; bbWeight=2, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - cmp edx, 125 - je SHORT G_M36935_IG33 - cmp edx, 58 - jne G_M36935_IG80 - mov dword ptr [ebp-0x24], ebx - ;; size=17 bbWeight=2 PerfScore 7.00 -G_M36935_IG32: ; bbWeight=16, gcVars=0002000040000000 {V01 V04}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref, isz - ; GC ptr vars -{V80} - inc ebx - cmp ecx, ebx - jbe G_M36935_IG79 - movzx edx, word ptr [edi+2*ebx+0x08] - cmp edx, 125 - je SHORT G_M36935_IG40 - cmp edx, 123 - je G_M36935_IG80 - mov ecx, dword ptr [ebp-0x44] - jmp SHORT G_M36935_IG32 - ;; size=33 bbWeight=16 PerfScore 144.00 -G_M36935_IG33: ; bbWeight=1, gcVars=0002000060000000 {V01 V04 V80}, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, gcvars, byref - ; GC ptr vars +{V29 V80} - mov dword ptr [ebp-0x18], eax - jmp G_M36935_IG42 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M36935_IG34: ; bbWeight=8, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz - jmp SHORT G_M36935_IG30 - ;; size=2 bbWeight=8 PerfScore 16.00 -G_M36935_IG35: ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000040 {esi}, byref, isz
...

+25 (+1.58%) : 16861.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -11,12 +11,12 @@ ; ; V00 this [V00,T04] ( 17, 87.50) ref -> edi this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T28] ( 7, 11.50) ref -> [ebp-0x54] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T03] ( 16,125 ) ref -> esi class-hnd single-def <System.String>
+; V02 arg2 [V02,T03] ( 17,125 ) ref -> esi class-hnd single-def <System.String>
; V03 arg3 [V03,T50] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T47] ( 3, 7 ) ref -> [ebp-0x58] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T00] ( 62,459 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T01] ( 30,260 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T05] ( 12, 74 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T00] ( 67,445.16) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T01] ( 33,260 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T05] ( 15, 74 ) int -> [ebp-0x18]
; V08 loc4 [V08,T09] ( 5, 46 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T08] ( 7, 48 ) int -> [ebp-0x20] @@ -131,7 +131,7 @@ ; V119 cse2 [V119,T32] ( 3, 12 ) ref -> edx "CSE - conservative" ; V120 cse3 [V120,T35] ( 3, 12 ) int -> [ebp-0x48] spill-single-def "CSE - conservative" ; V121 cse4 [V121,T33] ( 3, 12 ) ref -> [ebp-0x80] spill-single-def "CSE - conservative"
-; V122 cse5 [V122,T02] ( 19,144 ) int -> [ebp-0x4C] spill-single-def "CSE - aggressive"
+; V122 cse5 [V122,T02] ( 20,128.16) int -> [ebp-0x4C] spill-single-def "CSE - aggressive"
; V123 cse6 [V123,T06] ( 6, 60 ) int -> [ebp-0x50] spill-single-def "CSE - moderate" ; ; Lcl frame size = 116 @@ -154,7 +154,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 mov eax, dword ptr [ebp+0x0C] mov dword ptr [ebp-0x40], eax test esi, esi
- je G_M4730_IG69
+ je G_M4730_IG72
test ebx, ebx jne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 4.50 @@ -195,7 +195,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=0000800000000000 {V04}, gcrefRegs=0000 mov ecx, dword ptr [esi+0x04] mov dword ptr [ebp-0x4C], ecx cmp ecx, edx
- jbe G_M4730_IG64
+ jbe G_M4730_IG67
;; size=14 bbWeight=8 PerfScore 34.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz mov gword ptr [ebp-0x54], ebx @@ -237,9 +237,9 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 ; byrRegs -[eax ecx] mov dword ptr [ebp-0x30], eax test eax, eax
- jl G_M4730_IG66
+ jl G_M4730_IG69
cmp eax, ebx
- ja G_M4730_IG76
+ ja G_M4730_IG79
push eax mov ecx, edi ; gcrRegs +[ecx] @@ -253,11 +253,11 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 add ebx, dword ptr [ebp-0x30] mov eax, dword ptr [ebp-0x4C] cmp ebx, eax
- jae G_M4730_IG68
+ jae G_M4730_IG71
movzx edx, word ptr [esi+2*ebx+0x08] inc ebx cmp eax, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx ecx, word ptr [esi+2*ebx+0x08] mov dword ptr [ebp-0x14], ecx cmp edx, ecx @@ -276,7 +276,7 @@ G_M4730_IG09: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 G_M4730_IG10: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[eax ebx] cmp edx, 123
- jne G_M4730_IG70
+ jne G_M4730_IG73
xor edx, edx mov dword ptr [ebp-0x18], edx xor eax, eax @@ -290,7 +290,7 @@ G_M4730_IG10: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov dword ptr [ebp-0x3C], eax lea eax, [ebx-0x01] cmp eax, dword ptr [ebp-0x4C]
- jae G_M4730_IG68
+ jae G_M4730_IG71
cmp word ptr [esi+2*ebx+0x06], 123 je SHORT G_M4730_IG12 ;; size=49 bbWeight=4 PerfScore 55.00 @@ -325,13 +325,13 @@ G_M4730_IG14: ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 lea eax, [ecx-0x30] mov dword ptr [ebp-0x20], eax cmp eax, 10
- jae G_M4730_IG71
+ jae G_M4730_IG74
inc ebx cmp dword ptr [ebp-0x4C], ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx eax, word ptr [esi+2*ebx+0x08] cmp eax, 125
- je G_M4730_IG39
+ je G_M4730_IG42
;; size=42 bbWeight=4 PerfScore 41.00 G_M4730_IG15: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz jmp SHORT G_M4730_IG17 @@ -343,7 +343,7 @@ G_M4730_IG16: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 inc ebx mov eax, dword ptr [ebp-0x4C] cmp eax, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx ecx, word ptr [esi+2*ebx+0x08] mov eax, ecx ;; size=29 bbWeight=8 PerfScore 58.00 @@ -358,28 +358,28 @@ G_M4730_IG17: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 G_M4730_IG18: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref mov dword ptr [ebp-0x20], ecx ;; size=3 bbWeight=8 PerfScore 8.00
-G_M4730_IG19: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG19: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 32
- jne G_M4730_IG35 - ;; size=9 bbWeight=2 PerfScore 2.50 -G_M4730_IG20: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M4730_IG27 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M4730_IG20: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
inc ebx mov ecx, dword ptr [ebp-0x4C] cmp ecx, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx eax, word ptr [esi+2*ebx+0x08] cmp eax, 32
- je G_M4730_IG34 - ;; size=26 bbWeight=16 PerfScore 92.00 -G_M4730_IG21: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG26 + ;; size=22 bbWeight=16 PerfScore 92.00 +G_M4730_IG21: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp eax, 44 mov edx, eax
- jne G_M4730_IG33 - ;; size=11 bbWeight=2 PerfScore 3.00
+ jne SHORT G_M4730_IG25 + ;; size=7 bbWeight=2 PerfScore 3.00
G_M4730_IG22: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz inc ebx cmp ecx, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx eax, word ptr [esi+2*ebx+0x08] cmp eax, 32 je SHORT G_M4730_IG22 @@ -390,95 +390,116 @@ G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov dword ptr [ebp-0x1C], 1 inc ebx cmp ecx, ebx
- jbe G_M4730_IG72
+ jbe G_M4730_IG75
movzx eax, word ptr [esi+2*ebx+0x08] ;; size=26 bbWeight=2 PerfScore 11.50
-G_M4730_IG24: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG24: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
add eax, -48 cmp eax, 10
- jae G_M4730_IG71
+ jae G_M4730_IG74
inc ebx cmp ecx, ebx
- jbe G_M4730_IG72 - ;; size=21 bbWeight=2 PerfScore 6.00 -G_M4730_IG25: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - cmp ebx, ecx - jae G_M4730_IG68
+ jbe G_M4730_IG75 + test ebx, ebx + jl SHORT G_M4730_IG32 + jmp SHORT G_M4730_IG29 + ;; size=27 bbWeight=2 PerfScore 12.50 +G_M4730_IG25: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + mov eax, dword ptr [ebp-0x18] + jmp G_M4730_IG35 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M4730_IG26: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + jmp SHORT G_M4730_IG20 + ;; size=2 bbWeight=8 PerfScore 16.00 +G_M4730_IG27: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz + mov ecx, dword ptr [ebp-0x4C] + jmp SHORT G_M4730_IG21 + ;; size=5 bbWeight=1 PerfScore 3.00 +G_M4730_IG28: ; bbWeight=7.92, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref + lea eax, [eax+4*eax] + lea eax, [edx+2*eax-0x30] + inc ebx + mov ecx, dword ptr [ebp-0x4C] + cmp ecx, ebx + jbe G_M4730_IG75 + ;; size=19 bbWeight=7.92 PerfScore 31.68 +G_M4730_IG29: ; bbWeight=15.84, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
movzx edx, word ptr [esi+2*ebx+0x08] lea ecx, [edx-0x30] cmp ecx, 9
- ja SHORT G_M4730_IG26
+ ja SHORT G_M4730_IG33
cmp eax, 0xD1FFAB1E
- jl SHORT G_M4730_IG36 - ;; size=28 bbWeight=16 PerfScore 100.00 -G_M4730_IG26: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - cmp edx, 32 - jne SHORT G_M4730_IG32 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M4730_IG27: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - inc ebx - mov ecx, dword ptr [ebp-0x4C] - cmp ecx, ebx - jbe G_M4730_IG72 - movzx edx, word ptr [esi+2*ebx+0x08] - cmp edx, 32 - je SHORT G_M4730_IG31 - ;; size=22 bbWeight=16 PerfScore 92.00 -G_M4730_IG28: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - cmp edx, 125 - je SHORT G_M4730_IG30 - cmp edx, 58 - jne G_M4730_IG73 - mov dword ptr [ebp-0x24], ebx - ;; size=17 bbWeight=2 PerfScore 7.00 -G_M4730_IG29: ; bbWeight=16, gcVars=0000800010000000 {V01 V04}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V77} - inc ebx - cmp ecx, ebx - jbe G_M4730_IG72 - movzx edx, word ptr [esi+2*ebx+0x08] - cmp edx, 125 - je SHORT G_M4730_IG37 - cmp edx, 123 - je G_M4730_IG73 - mov ecx, dword ptr [ebp-0x4C] - jmp SHORT G_M4730_IG29 - ;; size=33 bbWeight=16 PerfScore 144.00 -G_M4730_IG30: ; bbWeight=1, gcVars=0000800018000000 {V01 V04 V77}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V77} - mov dword ptr [ebp-0x18], eax - jmp G_M4730_IG39 - ;; size=8 bbWeight=1 PerfScore 3.00 -G_M4730_IG31: ; bbWeight=8, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M4730_IG27 - ;; size=2 bbWeight=8 PerfScore 16.00 -G_M4730_IG32: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
...

libraries.pmi.windows.x86.checked.mch

-14 (-21.54%) : 80517.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint

@@ -7,9 +7,9 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 loc0 [V00,T02] ( 3, 10 ) ref -> esi class-hnd exact single-def <uint[]> -; V01 loc1 [V01,T00] ( 7, 49 ) int -> edi -; V02 loc2 [V02,T01] ( 2, 16 ) int -> eax
+; V00 loc0 [V00,T02] ( 3, 9.92) ref -> esi class-hnd exact single-def <uint[]> +; V01 loc1 [V01,T00] ( 6, 40.60) int -> edi +; V02 loc2 [V02,T01] ( 2, 15.84) int -> eax
; ; Lcl frame size = 0 @@ -28,17 +28,15 @@ G_M39919_IG02: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} ; gcrRegs +[esi] xor edi, edi ;; size=19 bbWeight=1 PerfScore 2.00
-G_M39919_IG03: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M39919_IG03: ; bbWeight=7.92, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
; gcrRegs -[eax] mov ecx, edi call [Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:CalcEntry(uint):uint]
- cmp edi, 256 - jae SHORT G_M39919_IG06
mov dword ptr [esi+4*edi+0x08], eax inc edi cmp edi, 255 jbe SHORT G_M39919_IG03
- ;; size=29 bbWeight=8 PerfScore 56.00
+ ;; size=21 bbWeight=7.92 PerfScore 45.54
G_M39919_IG04: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov eax, esi ; gcrRegs +[eax] @@ -49,12 +47,7 @@ G_M39919_IG05: ; bbWeight=1, epilog, nogc, extend pop ebp ret ;; size=4 bbWeight=1 PerfScore 2.50
-G_M39919_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[eax esi] - call CORINFO_HELP_RNGCHKFAIL - int3 - ;; size=6 bbWeight=0 PerfScore 0.00
-Total bytes of code 65, prolog size 5, PerfScore 64.00, instruction count 24, allocated bytes for code 65 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
+Total bytes of code 51, prolog size 5, PerfScore 53.54, instruction count 20, allocated bytes for code 51 (MethodHash=b75d6410) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.CRC32:InitCrc32Table():uint[] (FullOpts)
; ============================================================

libraries_tests.run.windows.x86.Release.mch

-3 (-0.31%) : 291154.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (Tier0-FullOpts)

@@ -9,52 +9,52 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T27] ( 3, 5.96) ref -> esi class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T20] ( 4, 10 ) ref -> edi class-hnd exact single-def <<unknown class>> -; V02 loc2 [V02,T08] ( 8, 28.72) int -> ecx
+; V01 loc1 [V01,T13] ( 7, 21.80) ref -> edi class-hnd exact single-def <<unknown class>> +; V02 loc2 [V02,T07] ( 8, 28.72) int -> ecx
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x2C] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T01] ( 9, 33 ) int -> esi
+; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x34] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T08] ( 8, 28.72) int -> esi
; V07 tmp0 [V07,T21] ( 4, 8 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V08 tmp1 [V08,T19] ( 5, 10 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V08 tmp1 [V08,T20] ( 5, 10 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
; V09 tmp2 [V09,T28] ( 2, 4 ) int -> esi "Inlining Arg" ; V10 tmp3 [V10,T26] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T13] ( 2, 16 ) int -> ebx "Inlining Arg" -; V16 tmp9 [V16,T09] ( 3, 24 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T14] ( 2, 15.84) int -> [ebp-0x24] spill-single-def "Inlining Arg" +; V16 tmp9 [V16,T10] ( 3, 23.76) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp11 [V18,T16] ( 3, 12 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V19 tmp12 [V19,T02] ( 4, 32 ) ref -> [ebp-0x4C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V20 tmp13 [V20,T03] ( 4, 32 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp11 [V18,T17] ( 3, 11.88) ref -> [ebp-0x4C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V19 tmp12 [V19,T01] ( 4, 31.68) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V20 tmp13 [V20,T02] ( 4, 31.68) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V22 tmp15 [V22,T14] ( 2, 16 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" -; V23 tmp16 [V23,T10] ( 3, 24 ) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V22 tmp15 [V22,T15] ( 2, 15.84) int -> [ebp-0x28] spill-single-def "Inlining Arg" +; V23 tmp16 [V23,T11] ( 3, 23.76) ref -> [ebp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V25 tmp18 [V25,T17] ( 3, 12 ) ref -> [ebp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V26 tmp19 [V26,T04] ( 4, 32 ) ref -> [ebp-0x5C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V27 tmp20 [V27,T05] ( 4, 32 ) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp18 [V25,T18] ( 3, 11.88) ref -> [ebp-0x5C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V26 tmp19 [V26,T03] ( 4, 31.68) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V27 tmp20 [V27,T04] ( 4, 31.68) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V28 tmp21 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V32 tmp25 [V32,T15] ( 2, 16 ) ushort -> [ebp-0x28] spill-single-def "Inlining Arg" -; V33 tmp26 [V33,T11] ( 3, 24 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V32 tmp25 [V32,T16] ( 2, 15.84) ushort -> [ebp-0x2C] spill-single-def "Inlining Arg" +; V33 tmp26 [V33,T12] ( 3, 23.76) ref -> [ebp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V35 tmp28 [V35,T18] ( 3, 12 ) ref -> [ebp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V36 tmp29 [V36,T06] ( 4, 32 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V37 tmp30 [V37,T07] ( 4, 32 ) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V35 tmp28 [V35,T19] ( 3, 11.88) ref -> [ebp-0x6C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V36 tmp29 [V36,T05] ( 4, 31.68) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V37 tmp30 [V37,T06] ( 4, 31.68) ref -> [ebp-0x74] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp32 [V39 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41,T29] ( 0, 0 ) ubyte -> zero-ref "field V29.hasValue (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T24] ( 3, 8 ) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
+; V42 tmp35 [V42,T24] ( 3, 7.92) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V30.value (fldOffset=0x1)" P-INDEP ;* V45 tmp38 [V45,T30] ( 0, 0 ) ubyte -> zero-ref "field V39.hasValue (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T25] ( 2, 8 ) ubyte -> ecx "field V39.value (fldOffset=0x1)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 7.92) ubyte -> ebx "field V39.value (fldOffset=0x1)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V40.value (fldOffset=0x1)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,9 +64,9 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V54 tmp47 [V54,T00] ( 6, 47.52) byref -> eax "Spilling address for field-by-field copy" ; V55 EHSlots [V55 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V56 cse0 [V56,T12] ( 5, 20 ) byref -> ebx "CSE - moderate"
+; V56 cse0 [V56,T09] ( 6, 23.76) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 100
+; Lcl frame size = 104
G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -74,7 +74,7 @@ G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 100
+ sub esp, 104
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], eax @@ -123,14 +123,14 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov edx, 192 call [System.IO.Tests.TestSafeBuffer:.ctor(int):this] ; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x2C], ebx
+ mov gword ptr [ebp-0x30], ebx
; GC ptr vars +{V04} ;; size=28 bbWeight=1 PerfScore 6.00 G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref mov ecx, 0xD1FFAB1E ; System.IO.UnmanagedMemoryAccessor call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x34], eax
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V08} push 0 push 0 @@ -143,12 +143,12 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx ebx]
- mov ebx, gword ptr [ebp-0x34]
+ mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x30], ebx
+ mov gword ptr [ebp-0x34], ebx
; GC ptr vars +{V05} ;; size=42 bbWeight=1 PerfScore 12.75
-G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1, gcVars=0000000280100000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
push 0 push 0 push 0 @@ -178,7 +178,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref ; gcrRegs +[ebx] mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x38], eax
+ mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V12} xor ecx, ecx ; gcrRegs +[ecx] @@ -186,11 +186,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x3C], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V13} lea edx, bword ptr [eax+0x04] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x38]
+ mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx] ; GC ptr vars -{V12} call CORINFO_HELP_ASSIGN_REF_ECX @@ -199,11 +199,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref mov dword ptr [eax+0x0C], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x40], eax
+ mov gword ptr [ebp-0x44], eax
; GC ptr vars +{V14} lea edx, bword ptr [eax+0x08] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x3C]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx] ; GC ptr vars -{V13} call CORINFO_HELP_ASSIGN_REF_ECX @@ -213,7 +213,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x40]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x04] ; byrRegs +[edx] @@ -235,18 +235,19 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref ; gcr arg pop 1 xor esi, esi ;; size=171 bbWeight=1 PerfScore 43.00
-G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - mov ecx, esi - shl ecx, 4 - mov ebx, dword ptr [edi+ecx+0x08]
+G_M53770_IG07: ; bbWeight=3.96, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov ebx, esi + shl ebx, 4 + mov eax, dword ptr [edi+ebx+0x08] + mov dword ptr [ebp-0x24], eax
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int] call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x48], eax
; GC ptr vars +{V16} mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x48], eax
+ mov gword ptr [ebp-0x4C], eax
; GC ptr vars +{V18} xor ecx, ecx ; gcrRegs +[ecx] @@ -254,26 +255,26 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x4C], eax
+ mov gword ptr [ebp-0x50], eax
; GC ptr vars +{V19} lea edx, bword ptr [eax+0x04] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x48]
+ mov ecx, gword ptr [ebp-0x4C]
; gcrRegs +[ecx]
- ; GC ptr vars -{V16 V18}
+ ; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[ecx] ; byrRegs -[edx] mov dword ptr [eax+0x0C], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x50], eax
+ mov gword ptr [ebp-0x54], eax
; GC ptr vars +{V20} lea edx, bword ptr [eax+0x08] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x4C]
+ mov ecx, gword ptr [ebp-0x50]
; gcrRegs +[ecx]
- ; GC ptr vars -{V19} +{V16}
+ ; GC ptr vars -{V19}
call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[eax ecx] ; byrRegs -[edx] @@ -281,14 +282,14 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x50]
+ mov ecx, gword ptr [ebp-0x54]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x04] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx] ...

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-3 (-0.31%) : 136874.dasm - System.IO.Tests.UmaReadWriteStructArray:UmaReadWriteStructArrayMultiples() (FullOpts)

@@ -9,52 +9,52 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T27] ( 3, 5.96) ref -> esi class-hnd exact single-def <<unknown class>>
-; V01 loc1 [V01,T20] ( 4, 10 ) ref -> edi class-hnd exact single-def <<unknown class>> -; V02 loc2 [V02,T08] ( 8, 28.72) int -> ecx
+; V01 loc1 [V01,T13] ( 7, 21.80) ref -> edi class-hnd exact single-def <<unknown class>> +; V02 loc2 [V02,T07] ( 8, 28.72) int -> ecx
;* V03 loc3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.IO.Tests.Uma_TestStructs+UmaTestStruct>
-; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x2C] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> -; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> -; V06 loc6 [V06,T01] ( 9, 33 ) int -> esi
+; V04 loc4 [V04,T31] ( 7, 3 ) ref -> [ebp-0x30] class-hnd exact EH-live spill-single-def <System.IO.Tests.TestSafeBuffer> +; V05 loc5 [V05,T33] ( 5, 2 ) ref -> [ebp-0x34] class-hnd exact EH-live spill-single-def <System.IO.UnmanagedMemoryAccessor> +; V06 loc6 [V06,T08] ( 8, 28.72) int -> esi
; V07 tmp0 [V07,T21] ( 4, 8 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <System.IO.Tests.TestSafeBuffer>
-; V08 tmp1 [V08,T19] ( 5, 10 ) ref -> [ebp-0x34] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
+; V08 tmp1 [V08,T20] ( 5, 10 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.IO.UnmanagedMemoryAccessor>
; V09 tmp2 [V09,T28] ( 2, 4 ) int -> esi "Inlining Arg" ; V10 tmp3 [V10,T26] ( 3, 6 ) ref -> ebx class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]> ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x38] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V15 tmp8 [V15,T13] ( 2, 16 ) int -> ebx "Inlining Arg" -; V16 tmp9 [V16,T09] ( 3, 24 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V12 tmp5 [V12,T32] ( 3, 3 ) ref -> [ebp-0x3C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V13 tmp6 [V13,T22] ( 4, 8 ) ref -> [ebp-0x40] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V14 tmp7 [V14,T23] ( 4, 8 ) ref -> [ebp-0x44] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V15 tmp8 [V15,T14] ( 2, 15.84) int -> [ebp-0x24] spill-single-def "Inlining Arg" +; V16 tmp9 [V16,T10] ( 3, 23.76) ref -> [ebp-0x48] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V17 tmp10 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V18 tmp11 [V18,T16] ( 3, 12 ) ref -> [ebp-0x48] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V19 tmp12 [V19,T02] ( 4, 32 ) ref -> [ebp-0x4C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V20 tmp13 [V20,T03] ( 4, 32 ) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp11 [V18,T17] ( 3, 11.88) ref -> [ebp-0x4C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V19 tmp12 [V19,T01] ( 4, 31.68) ref -> [ebp-0x50] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V20 tmp13 [V20,T02] ( 4, 31.68) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V21 tmp14 [V21 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V22 tmp15 [V22,T14] ( 2, 16 ) int -> [ebp-0x24] spill-single-def "Inlining Arg" -; V23 tmp16 [V23,T10] ( 3, 24 ) ref -> [ebp-0x54] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
+; V22 tmp15 [V22,T15] ( 2, 15.84) int -> [ebp-0x28] spill-single-def "Inlining Arg" +; V23 tmp16 [V23,T11] ( 3, 23.76) ref -> [ebp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
;* V24 tmp17 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]>
-; V25 tmp18 [V25,T17] ( 3, 12 ) ref -> [ebp-0x58] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> -; V26 tmp19 [V26,T04] ( 4, 32 ) ref -> [ebp-0x5C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V27 tmp20 [V27,T05] ( 4, 32 ) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp18 [V25,T18] ( 3, 11.88) ref -> [ebp-0x5C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int]> +; V26 tmp19 [V26,T03] ( 4, 31.68) ref -> [ebp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V27 tmp20 [V27,T04] ( 4, 31.68) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V28 tmp21 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp22 [V29 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V30 tmp23 [V30 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V31 tmp24 [V31 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V32 tmp25 [V32,T15] ( 2, 16 ) ushort -> [ebp-0x28] spill-single-def "Inlining Arg" -; V33 tmp26 [V33,T11] ( 3, 24 ) ref -> [ebp-0x64] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
+; V32 tmp25 [V32,T16] ( 2, 15.84) ushort -> [ebp-0x2C] spill-single-def "Inlining Arg" +; V33 tmp26 [V33,T12] ( 3, 23.76) ref -> [ebp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[ushort]>
;* V34 tmp27 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]>
-; V35 tmp28 [V35,T18] ( 3, 12 ) ref -> [ebp-0x68] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> -; V36 tmp29 [V36,T06] ( 4, 32 ) ref -> [ebp-0x6C] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V37 tmp30 [V37,T07] ( 4, 32 ) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V35 tmp28 [V35,T19] ( 3, 11.88) ref -> [ebp-0x6C] class-hnd exact spill-single-def "Inline stloc first use temp" <Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[ushort]> +; V36 tmp29 [V36,T05] ( 4, 31.68) ref -> [ebp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V37 tmp30 [V37,T06] ( 4, 31.68) ref -> [ebp-0x74] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V38 tmp31 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp32 [V39 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]> ;* V40 tmp33 [V40 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "Inlining Arg" <System.Nullable`1[ubyte]> ;* V41 tmp34 [V41,T29] ( 0, 0 ) ubyte -> zero-ref "field V29.hasValue (fldOffset=0x0)" P-INDEP
-; V42 tmp35 [V42,T24] ( 3, 8 ) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
+; V42 tmp35 [V42,T24] ( 3, 7.92) ubyte -> eax "field V29.value (fldOffset=0x1)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ubyte -> zero-ref "field V30.hasValue (fldOffset=0x0)" P-INDEP ;* V44 tmp37 [V44 ] ( 0, 0 ) ubyte -> zero-ref "field V30.value (fldOffset=0x1)" P-INDEP ;* V45 tmp38 [V45,T30] ( 0, 0 ) ubyte -> zero-ref "field V39.hasValue (fldOffset=0x0)" P-INDEP
-; V46 tmp39 [V46,T25] ( 2, 8 ) ubyte -> ecx "field V39.value (fldOffset=0x1)" P-INDEP
+; V46 tmp39 [V46,T25] ( 3, 7.92) ubyte -> ebx "field V39.value (fldOffset=0x1)" P-INDEP
;* V47 tmp40 [V47 ] ( 0, 0 ) ubyte -> zero-ref "field V40.hasValue (fldOffset=0x0)" P-INDEP ;* V48 tmp41 [V48 ] ( 0, 0 ) ubyte -> zero-ref "field V40.value (fldOffset=0x1)" P-INDEP ;* V49 tmp42 [V49 ] ( 0, 0 ) int -> zero-ref "V03.[000..004)" @@ -64,9 +64,9 @@ ;* V53 tmp46 [V53 ] ( 0, 0 ) ubyte -> zero-ref "V03.[014..015)" ; V54 tmp47 [V54,T00] ( 6, 47.52) byref -> eax "Spilling address for field-by-field copy" ; V55 EHSlots [V55 ] ( 1, 1 ) struct (16) [ebp-0x20] do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-; V56 cse0 [V56,T12] ( 5, 20 ) byref -> ebx "CSE - moderate"
+; V56 cse0 [V56,T09] ( 6, 23.76) int -> ebx "CSE - moderate"
;
-; Lcl frame size = 100
+; Lcl frame size = 104
G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG push ebp @@ -74,7 +74,7 @@ G_M53770_IG01: ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {} push edi push esi push ebx
- sub esp, 100
+ sub esp, 104
xor eax, eax mov dword ptr [ebp-0x20], eax mov dword ptr [ebp-0x1C], eax @@ -123,14 +123,14 @@ G_M53770_IG04: ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000 mov edx, 192 call [System.IO.Tests.TestSafeBuffer:.ctor(int):this] ; gcrRegs -[eax ecx]
- mov gword ptr [ebp-0x2C], ebx
+ mov gword ptr [ebp-0x30], ebx
; GC ptr vars +{V04} ;; size=28 bbWeight=1 PerfScore 6.00 G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref mov ecx, 0xD1FFAB1E ; System.IO.UnmanagedMemoryAccessor call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x34], eax
+ mov gword ptr [ebp-0x38], eax
; GC ptr vars +{V08} push 0 push 0 @@ -143,12 +143,12 @@ G_M53770_IG05: ; bbWeight=1, gcVars=0000000080000000 {V04}, gcrefRegs=000 ; gcrRegs +[edx] call [<unknown method>] ; gcrRegs -[eax ecx edx ebx]
- mov ebx, gword ptr [ebp-0x34]
+ mov ebx, gword ptr [ebp-0x38]
; gcrRegs +[ebx]
- mov gword ptr [ebp-0x30], ebx
+ mov gword ptr [ebp-0x34], ebx
; GC ptr vars +{V05} ;; size=42 bbWeight=1 PerfScore 12.75
-G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M53770_IG06: ; bbWeight=1, gcVars=0000000280100000 {V04 V05 V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
push 0 push 0 push 0 @@ -178,7 +178,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref ; gcrRegs +[ebx] mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x38], eax
+ mov gword ptr [ebp-0x3C], eax
; GC ptr vars +{V12} xor ecx, ecx ; gcrRegs +[ecx] @@ -186,11 +186,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x3C], eax
+ mov gword ptr [ebp-0x40], eax
; GC ptr vars +{V13} lea edx, bword ptr [eax+0x04] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x38]
+ mov ecx, gword ptr [ebp-0x3C]
; gcrRegs +[ecx] ; GC ptr vars -{V12} call CORINFO_HELP_ASSIGN_REF_ECX @@ -199,11 +199,11 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref mov dword ptr [eax+0x0C], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x40], eax
+ mov gword ptr [ebp-0x44], eax
; GC ptr vars +{V14} lea edx, bword ptr [eax+0x08] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x3C]
+ mov ecx, gword ptr [ebp-0x40]
; gcrRegs +[ecx] ; GC ptr vars -{V13} call CORINFO_HELP_ASSIGN_REF_ECX @@ -213,7 +213,7 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x40]
+ mov ecx, gword ptr [ebp-0x44]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x04] ; byrRegs +[edx] @@ -235,18 +235,19 @@ G_M53770_IG06: ; bbWeight=1, gcVars=0000000280080000 {V04 V05 V08}, gcref ; gcr arg pop 1 xor esi, esi ;; size=171 bbWeight=1 PerfScore 43.00
-G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref - mov ecx, esi - shl ecx, 4 - mov ebx, dword ptr [edi+ecx+0x08]
+G_M53770_IG07: ; bbWeight=3.96, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref + mov ebx, esi + shl ebx, 4 + mov eax, dword ptr [edi+ebx+0x08] + mov dword ptr [ebp-0x24], eax
mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1[int] call CORINFO_HELP_NEWSFAST ; gcrRegs +[eax]
- mov gword ptr [ebp-0x44], eax
+ mov gword ptr [ebp-0x48], eax
; GC ptr vars +{V16} mov ecx, 0xD1FFAB1E ; Xunit.Sdk.AssertEqualityComparer`1+<>c__DisplayClass5_0[int] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x48], eax
+ mov gword ptr [ebp-0x4C], eax
; GC ptr vars +{V18} xor ecx, ecx ; gcrRegs +[ecx] @@ -254,26 +255,26 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 mov ecx, 0xD1FFAB1E ; <unknown class> ; gcrRegs -[ecx] call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x4C], eax
+ mov gword ptr [ebp-0x50], eax
; GC ptr vars +{V19} lea edx, bword ptr [eax+0x04] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x48]
+ mov ecx, gword ptr [ebp-0x4C]
; gcrRegs +[ecx]
- ; GC ptr vars -{V16 V18}
+ ; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[ecx] ; byrRegs -[edx] mov dword ptr [eax+0x0C], 0xD1FFAB1E mov ecx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWSFAST
- mov gword ptr [ebp-0x50], eax
+ mov gword ptr [ebp-0x54], eax
; GC ptr vars +{V20} lea edx, bword ptr [eax+0x08] ; byrRegs +[edx]
- mov ecx, gword ptr [ebp-0x4C]
+ mov ecx, gword ptr [ebp-0x50]
; gcrRegs +[ecx]
- ; GC ptr vars -{V19} +{V16}
+ ; GC ptr vars -{V19}
call CORINFO_HELP_ASSIGN_REF_ECX ; gcrRegs -[eax ecx] ; byrRegs -[edx] @@ -281,14 +282,14 @@ G_M53770_IG07: ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 xor edx, edx call [System.LazyHelper:Create(int,ubyte):System.LazyHelper] ; gcrRegs +[eax]
- mov ecx, gword ptr [ebp-0x50]
+ mov ecx, gword ptr [ebp-0x54]
; gcrRegs +[ecx] lea edx, bword ptr [ecx+0x04] ; byrRegs +[edx] call CORINFO_HELP_ASSIGN_REF_EAX ; gcrRegs -[eax] ; byrRegs -[edx] ...

realworld.run.windows.x86.checked.mch

+28 (+1.28%) : 2116.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

@@ -10,12 +10,12 @@ ; ; V00 this [V00,T01] ( 33, 559.50) ref -> esi this class-hnd single-def <System.Text.StringBuilder> ; V01 arg1 [V01,T35] ( 7, 17.50) ref -> [ebp-0x74] class-hnd single-def <System.IFormatProvider>
-; V02 arg2 [V02,T13] ( 16, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
+; V02 arg2 [V02,T13] ( 17, 125 ) ref -> [ebp+0x10] class-hnd single-def <System.String>
; V03 arg3 [V03,T66] ( 2, 5 ) struct ( 8) [ebp+0x08] do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[System.Object]> ; V04 loc0 [V04,T65] ( 3, 7 ) ref -> [ebp-0x78] class-hnd spill-single-def <<unknown class>>
-; V05 loc1 [V05,T02] ( 62, 459 ) int -> [ebp-0x10] ld-addr-op -; V06 loc2 [V06,T07] ( 31, 260 ) ushort -> [ebp-0x14] -; V07 loc3 [V07,T08] ( 12, 242 ) int -> [ebp-0x18]
+; V05 loc1 [V05,T02] ( 67, 445.16) int -> [ebp-0x10] ld-addr-op +; V06 loc2 [V06,T07] ( 34, 260 ) ushort -> [ebp-0x14] +; V07 loc3 [V07,T08] ( 15, 242 ) int -> [ebp-0x18]
; V08 loc4 [V08,T05] ( 5, 270 ) ubyte -> [ebp-0x1C] ;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]> ; V10 loc6 [V10,T16] ( 7, 48 ) int -> [ebp-0x20] @@ -165,7 +165,7 @@ ; V154 cse3 [V154,T46] ( 3, 12 ) ref -> edx "CSE - conservative" ; V155 cse4 [V155,T48] ( 3, 12 ) int -> [ebp-0x64] spill-single-def "CSE - conservative" ; V156 cse5 [V156,T03] ( 6, 416 ) int -> [ebp-0x68] spill-single-def "CSE - aggressive"
-; V157 cse6 [V157,T12] ( 19, 144 ) int -> [ebp-0x6C] spill-single-def "CSE - moderate"
+; V157 cse6 [V157,T12] ( 20, 128.16) int -> [ebp-0x6C] spill-single-def "CSE - moderate"
; V158 cse7 [V158,T10] ( 4, 192 ) int -> eax "CSE - moderate" ; V159 cse8 [V159,T20] ( 4, 32 ) int -> [ebp-0x70] spill-single-def "CSE - conservative" ; TEMP_01 int -> [ebp-0xA0] @@ -190,7 +190,7 @@ G_M4730_IG02: ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 mov eax, dword ptr [ebp+0x0C] mov dword ptr [ebp-0x5C], eax test edi, edi
- je G_M4730_IG78
+ je G_M4730_IG82
test ebx, ebx jne SHORT G_M4730_IG04 ;; size=18 bbWeight=1 PerfScore 4.50 @@ -229,7 +229,7 @@ G_M4730_IG06: ; bbWeight=8, gcVars=000000020000000000000000 {V04}, gcrefR mov ecx, dword ptr [edi+0x04] mov dword ptr [ebp-0x6C], ecx cmp ecx, edx
- jbe G_M4730_IG73
+ jbe G_M4730_IG77
;; size=14 bbWeight=8 PerfScore 34.00 G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref lea eax, bword ptr [edi+2*edx+0x08] @@ -274,9 +274,9 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 ; byrRegs -[ecx] mov dword ptr [ebp-0x38], eax test eax, eax
- jl G_M4730_IG75
+ jl G_M4730_IG79
cmp eax, dword ptr [ebp-0x58]
- ja G_M4730_IG89
+ ja G_M4730_IG93
mov ecx, eax not ecx shr ecx, 31 @@ -294,7 +294,7 @@ G_M4730_IG07: ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0 add edx, dword ptr [ebp-0x38] mov eax, dword ptr [ebp-0x6C] cmp edx, eax
- jae G_M4730_IG77
+ jae G_M4730_IG81
;; size=206 bbWeight=4 PerfScore 232.00 G_M4730_IG08: ; bbWeight=4, isz, extend movzx ecx, word ptr [edi+2*edx+0x08] @@ -328,7 +328,7 @@ G_M4730_IG10: ; bbWeight=2, gcVars=000000000000000000000000 {}, gcrefRegs ; gcrRegs -[eax esi] ; GC ptr vars -{V01 V04} mov ecx, edx
- jmp G_M4730_IG81
+ jmp G_M4730_IG85
;; size=7 bbWeight=2 PerfScore 4.50 G_M4730_IG11: ; bbWeight=2, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref ; gcrRegs +[esi] @@ -353,7 +353,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR ; gcrRegs -[edi] ; GC ptr vars -{V01 V35 V65} cmp dword ptr [ebp-0x24], 123
- jne G_M4730_IG79
+ jne G_M4730_IG83
mov dword ptr [ebp-0x14], ecx mov gword ptr [ebp-0x74], ebx ; GC ptr vars +{V01} @@ -371,7 +371,7 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR mov edx, dword ptr [ebp-0x10] lea edi, [edx-0x01] cmp edi, dword ptr [ebp-0x6C]
- jae G_M4730_IG77
+ jae G_M4730_IG81
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] mov dword ptr [ebp-0x10], edx @@ -387,16 +387,16 @@ G_M4730_IG13: ; bbWeight=4, gcVars=000000020000000000000000 {V04}, gcrefR lea edx, [eax-0x30] mov dword ptr [ebp-0x20], edx cmp edx, 10
- jae G_M4730_IG80
+ jae G_M4730_IG84
mov ecx, dword ptr [ebp-0x10] inc ecx mov eax, dword ptr [ebp-0x6C] cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov gword ptr [ebp+0x10], edi movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 125
- je G_M4730_IG38
+ je G_M4730_IG42
;; size=139 bbWeight=4 PerfScore 162.00 G_M4730_IG14: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz ; gcrRegs -[edi] @@ -408,7 +408,7 @@ G_M4730_IG15: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 mov dword ptr [ebp-0x20], edi inc ecx cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov edx, gword ptr [ebp+0x10] ; gcrRegs +[edx] movzx edi, word ptr [edx+2*ecx+0x08] @@ -427,28 +427,28 @@ G_M4730_IG16: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 G_M4730_IG17: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref mov dword ptr [ebp-0x20], edi ;; size=3 bbWeight=8 PerfScore 8.00
-G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M4730_IG18: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
cmp edx, 32
- jne G_M4730_IG35 - ;; size=9 bbWeight=2 PerfScore 2.50 -G_M4730_IG19: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+ jne SHORT G_M4730_IG27 + ;; size=5 bbWeight=2 PerfScore 2.50 +G_M4730_IG19: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
inc ecx cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
mov edi, gword ptr [ebp+0x10] ; gcrRegs +[edi] movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 32
- je G_M4730_IG34 - ;; size=26 bbWeight=16 PerfScore 92.00 -G_M4730_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+ je SHORT G_M4730_IG26 + ;; size=22 bbWeight=16 PerfScore 92.00 +G_M4730_IG20: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
cmp edx, 44
- jne G_M4730_IG33 - ;; size=9 bbWeight=2 PerfScore 2.50
+ jne SHORT G_M4730_IG25 + ;; size=5 bbWeight=2 PerfScore 2.50
G_M4730_IG21: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz inc ecx cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
movzx edx, word ptr [edi+2*ecx+0x08] cmp edx, 32 je SHORT G_M4730_IG21 @@ -459,124 +459,152 @@ G_M4730_IG22: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000 mov ebx, 1 inc ecx cmp eax, ecx
- jbe G_M4730_IG81
+ jbe G_M4730_IG85
movzx edx, word ptr [edi+2*ecx+0x08] mov dword ptr [ebp-0x1C], ebx ;; size=27 bbWeight=2 PerfScore 12.00
-G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M4730_IG23: ; bbWeight=2, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
add edx, -48 cmp edx, 10
- jae G_M4730_IG32
+ jae SHORT G_M4730_IG24
inc ecx cmp eax, ecx
- jbe G_M4730_IG81 - ;; size=21 bbWeight=2 PerfScore 6.00 -G_M4730_IG24: ; bbWeight=16, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz - cmp ecx, eax - jae G_M4730_IG77 - mov gword ptr [ebp+0x10], edi - movzx edi, word ptr [edi+2*ecx+0x08] - ; gcrRegs -[edi] - lea eax, [edi-0x30] - cmp eax, 9 - ja SHORT G_M4730_IG25 - cmp edx, 0xD1FFAB1E - jl G_M4730_IG36 - ;; size=36 bbWeight=16 PerfScore 116.00 -G_M4730_IG25: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, 32 - jne SHORT G_M4730_IG31 - ;; size=5 bbWeight=2 PerfScore 2.50 -G_M4730_IG26: ; bbWeight=16, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - inc ecx - mov eax, dword ptr [ebp-0x6C] - cmp eax, ecx - jbe G_M4730_IG81 - mov edi, gword ptr [ebp+0x10] - ; gcrRegs +[edi] - movzx edi, word ptr [edi+2*ecx+0x08] - ; gcrRegs -[edi] - cmp edi, 32 - je SHORT G_M4730_IG30 - ;; size=25 bbWeight=16 PerfScore 108.00 -G_M4730_IG27: ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - cmp edi, 125 - je SHORT G_M4730_IG29 - cmp edi, 58 - jne G_M4730_IG82 - mov dword ptr [ebp-0x28], ecx - ;; size=17 bbWeight=2 PerfScore 7.00 -G_M4730_IG28: ; bbWeight=16, gcVars=000000020000000800000000 {V01 V04}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz - ; GC ptr vars -{V93} - inc ecx - cmp eax, ecx - jbe G_M4730_IG81 - mov edi, gword ptr [ebp+0x10] - ; gcrRegs +[edi] - movzx edi, word ptr [edi+2*ecx+0x08] - ; gcrRegs -[edi] - cmp edi, 125 - je SHORT G_M4730_IG37 - cmp edi, 123 - je G_M4730_IG82 - mov eax, dword ptr [ebp-0x6C] - jmp SHORT G_M4730_IG28 - ;; size=36 bbWeight=16 PerfScore 160.00 -G_M4730_IG29: ; bbWeight=1, gcVars=000000020000000840000000 {V01 V04 V93}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref - ; GC ptr vars +{V93} - mov ebx, edx - jmp G_M4730_IG38 - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M4730_IG30: ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - jmp SHORT G_M4730_IG26 - ;; size=2 bbWeight=8 PerfScore 16.00 -G_M4730_IG31: ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz - mov eax, dword ptr [ebp-0x6C] - jmp SHORT G_M4730_IG27 - ;; size=5 bbWeight=1 PerfScore 3.00 -G_M4730_IG32: ; bbWeight=1, gcVars=000000000000000000000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref - ; gcrRegs -[esi]
+ jbe G_M4730_IG85 + test ecx, ecx + jl SHORT G_M4730_IG33 + jmp SHORT G_M4730_IG30 + ;; size=23 bbWeight=2 PerfScore 12.50
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 2 0 2 0 -0 +80
benchmarks.run_pgo.windows.x86.checked.mch 2 0 2 0 -0 +81
benchmarks.run_tiered.windows.x86.checked.mch 2 0 2 0 -0 +86
coreclr_tests.run.windows.x86.checked.mch 169 0 169 0 -0 +10,748
libraries.crossgen2.windows.x86.checked.mch 4 1 3 0 -15 +131
libraries.pmi.windows.x86.checked.mch 2 1 1 0 -14 +234
libraries_tests.run.windows.x86.Release.mch 256 1 255 0 -3 +17,499
librariestestsnotieredcompilation.run.windows.x86.Release.mch 1 1 0 0 -3 +0
realworld.run.windows.x86.checked.mch 2 0 2 0 -0 +80
440 4 436 0 -35 +28,939

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,485 4 24,481 3 (0.01%) 3 (0.01%)
benchmarks.run_pgo.windows.x86.checked.mch 118,206 42,036 76,170 35 (0.03%) 35 (0.03%)
benchmarks.run_tiered.windows.x86.checked.mch 48,024 28,739 19,285 3 (0.01%) 3 (0.01%)
coreclr_tests.run.windows.x86.checked.mch 574,596 319,944 254,652 76 (0.01%) 77 (0.01%)
libraries.crossgen2.windows.x86.checked.mch 242,536 15 242,521 47 (0.02%) 50 (0.02%)
libraries.pmi.windows.x86.checked.mch 305,641 6 305,635 72 (0.02%) 75 (0.02%)
libraries_tests.run.windows.x86.Release.mch 624,876 425,508 199,368 481 (0.08%) 481 (0.08%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,407 21,910 294,497 64 (0.02%) 64 (0.02%)
realworld.run.windows.x86.checked.mch 35,963 3 35,960 27 (0.08%) 27 (0.08%)
2,290,734 838,165 1,452,569 808 (0.04%) 815 (0.04%)

jit-analyze output

benchmarks.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7120212 (overridden on cmd)
Total bytes of diff: 7120292 (overridden on cmd)
Total bytes of delta: 80 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


benchmarks.run_pgo.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45137426 (overridden on cmd)
Total bytes of diff: 45137507 (overridden on cmd)
Total bytes of delta: 81 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


benchmarks.run_tiered.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9472425 (overridden on cmd)
Total bytes of diff: 9472511 (overridden on cmd)
Total bytes of delta: 86 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


coreclr_tests.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 309367285 (overridden on cmd)
Total bytes of diff: 309378033 (overridden on cmd)
Total bytes of delta: 10748 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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


libraries.crossgen2.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31673137 (overridden on cmd)
Total bytes of diff: 31673253 (overridden on cmd)
Total bytes of delta: 116 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


libraries.pmi.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49151797 (overridden on cmd)
Total bytes of diff: 49152017 (overridden on cmd)
Total bytes of delta: 220 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 184751383 (overridden on cmd)
Total bytes of diff: 184768879 (overridden on cmd)
Total bytes of delta: 17496 (0.01 % of base)
    relative diff is a regression.

Detail diffs



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


librariestestsnotieredcompilation.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 103727320 (overridden on cmd)
Total bytes of diff: 103727317 (overridden on cmd)
Total bytes of delta: -3 (-0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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


realworld.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11283258 (overridden on cmd)
Total bytes of diff: 11283338 (overridden on cmd)
Total bytes of delta: 80 (0.00 % of base)
    relative diff is a regression.

Detail diffs



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

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