Assembly Diffs

linux arm

Diffs are based on 2,238,104 contexts (829,328 MinOpts, 1,408,776 FullOpts).

MISSED contexts: base: 71,275 (3.08%), diff: 72,560 (3.14%)

Overall (-70,778 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,250,208 -792
benchmarks.run_pgo.linux.arm.checked.mch 63,745,626 -15,392
benchmarks.run_tiered.linux.arm.checked.mch 21,504,686 -512
coreclr_tests.run.linux.arm.checked.mch 321,630,642 -7,306
libraries.crossgen2.linux.arm.checked.mch 34,521,638 +546
libraries.pmi.linux.arm.checked.mch 49,769,404 -2,946
libraries_tests.run.linux.arm.Release.mch 243,597,156 -40,580
librariestestsnotieredcompilation.run.linux.arm.Release.mch 94,156,910 -3,088
realworld.run.linux.arm.checked.mch 13,589,492 -708

MinOpts (+2,774 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 11,199,966 +400
benchmarks.run_tiered.linux.arm.checked.mch 8,653,000 +252
coreclr_tests.run.linux.arm.checked.mch 212,477,588 +782
libraries_tests.run.linux.arm.Release.mch 120,969,132 +1,340

FullOpts (-73,552 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,861,006 -792
benchmarks.run_pgo.linux.arm.checked.mch 52,545,660 -15,792
benchmarks.run_tiered.linux.arm.checked.mch 12,851,686 -764
coreclr_tests.run.linux.arm.checked.mch 109,153,054 -8,088
libraries.crossgen2.linux.arm.checked.mch 34,520,408 +546
libraries.pmi.linux.arm.checked.mch 49,663,180 -2,946
libraries_tests.run.linux.arm.Release.mch 122,628,024 -41,920
librariestestsnotieredcompilation.run.linux.arm.Release.mch 84,086,174 -3,088
realworld.run.linux.arm.checked.mch 13,154,192 -708

Example diffs

benchmarks.run.linux.arm.checked.mch

-16 (-32.00%) : 13581.dasm - System.Threading.Tests.PerfInterlocked:Decrementint():int:this (FullOpts)

@@ -2,69 +2,60 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_Interlocked> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M52399_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M52399_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M52399_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 28 ; gcrRegs -[r0] ; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M52399_IG04 - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method>
+ dmb 15 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M52399_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M52399_IG03 + dmb 15 + subs r0, r1, 1
; byrRegs -[r0]
- subs r0, r0, 1 - ;; size=26 bbWeight=1 PerfScore 9.00 -G_M52399_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M52399_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M52399_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 50, prolog size 6, PerfScore 12.00, instruction count 17, allocated bytes for code 50 (MethodHash=3b923350) for method System.Threading.Tests.Perf_Interlocked:Decrement_int():int:this (FullOpts)
+; Total bytes of code 34, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (MethodHash=3b923350) for method System.Threading.Tests.Perf_Interlocked:Decrement_int():int:this (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 : 25 (0x00019) Actual length = 50 (0x000032) - ---- 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 : 17 (0x00011) Actual length = 34 (0x000022) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-14 (-29.17%) : 2985.dasm - System.Threading.Tests.PerfInterlocked:Incrementint():int:this (FullOpts)

@@ -2,69 +2,60 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_Interlocked> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M31305_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M31305_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M31305_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 28 ; gcrRegs -[r0] ; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M31305_IG04 - movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method>
+ dmb 15 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M31305_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + adds r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M31305_IG03 + dmb 15 + adds r0, r1, 1
; byrRegs -[r0]
- adds r0, r0, 1 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M31305_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M31305_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M31305_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 6, PerfScore 12.00, instruction count 17, allocated bytes for code 48 (MethodHash=a3c585b6) for method System.Threading.Tests.Perf_Interlocked:Increment_int():int:this (FullOpts)
+; Total bytes of code 34, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (MethodHash=a3c585b6) for method System.Threading.Tests.Perf_Interlocked:Increment_int():int:this (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 : 24 (0x00018) Actual length = 48 (0x000030) - ---- 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 : 17 (0x00011) Actual length = 34 (0x000022) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-14 (-29.17%) : 40843.dasm - System.Threading.Tests.PerfInterlocked:Addint():int:this (FullOpts)

@@ -2,69 +2,60 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_Interlocked> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M13801_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M13801_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M13801_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 28 ; gcrRegs -[r0] ; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M13801_IG04 - movs r1, 2 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method>
+ dmb 15 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M13801_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + adds r3, r1, 2 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M13801_IG03 + dmb 15 + adds r0, r1, 2
; byrRegs -[r0]
- adds r0, r0, 2 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M13801_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M13801_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M13801_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 6, PerfScore 12.00, instruction count 17, allocated bytes for code 48 (MethodHash=c78fca16) for method System.Threading.Tests.Perf_Interlocked:Add_int():int:this (FullOpts)
+; Total bytes of code 34, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (MethodHash=c78fca16) for method System.Threading.Tests.Perf_Interlocked:Add_int():int:this (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 : 24 (0x00018) Actual length = 48 (0x000030) - ---- 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 : 17 (0x00011) Actual length = 34 (0x000022) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+30 (+15.79%) : 27874.dasm - System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)

@@ -5,23 +5,22 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_SpinLock> ; V01 loc0 [V01 ] ( 8, 5.50) struct ( 4) [sp+0x04] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinLock> ; V02 loc1 [V02 ] ( 4, 3 ) ubyte -> [sp+0x00] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 3.50) int -> r4 single-def "Inline stloc first use temp"
+; V04 tmp1 [V04,T01] ( 6, 3.50) int -> r0 single-def "Inline stloc first use temp"
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V06 tmp3 [V06,T03] ( 3, 1.50) int -> r0 single-def "Inline stloc first use temp" -;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V08 tmp5 [V08,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp" -;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V11 tmp8 [V11 ] ( 8, 5.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V01._owner (fldOffset=0x0)" P-DEP -;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V13 cse0 [V13,T02] ( 2, 2 ) int -> r3 "CSE - aggressive"
+; V06 tmp3 [V06,T03] ( 3, 1.50) int -> lr single-def "Inline stloc first use temp" +;* V07 tmp4 [V07,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp" +;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V10 tmp7 [V10 ] ( 8, 5.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V01._owner (fldOffset=0x0)" P-DEP +;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V12 cse0 [V12,T02] ( 2, 2 ) int -> r3 "CSE - aggressive"
; ; Lcl frame size = 12 @@ -35,40 +34,50 @@ G_M27329_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=16 bbWeight=1 PerfScore 6.00 G_M27329_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0]
- ldr r1, [r0+0x04] - str r1, [sp+0x04] // [V11 tmp8] - ldr r4, [sp+0x04] // [V11 tmp8] - ldrb r1, [sp] // [V02 loc1] - cmp r1, 0 - bne SHORT G_M27329_IG06
+ ldr r0, [r0+0x04] + ; gcrRegs -[r0] + str r0, [sp+0x04] // [V10 tmp7] + ldr r0, [sp+0x04] // [V10 tmp7] + ldrb r2, [sp] // [V02 loc1] + cmp r2, 0 + bne SHORT G_M27329_IG08
;; size=14 bbWeight=1 PerfScore 6.00 G_M27329_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] - movw r1, 0xd1ff - movt r1, 0xd1ff - ands r1, r4 - cmp r1, 0x80000000 - bne SHORT G_M27329_IG06 - orr r1, r4, 1 - add r0, sp, 4 // [V11 tmp8] - mov r2, r4 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - cmp r0, r4 - beq SHORT G_M27329_IG04
+ movw r2, 0xd1ff + movt r2, 0xd1ff + ands r2, r0 + cmp r2, 0x80000000 + bne SHORT G_M27329_IG08 + add r2, sp, 4 // [V10 tmp7] + ; byrRegs +[r2] + orr r1, r0, 1 + dmb 15 + ;; size=26 bbWeight=0.50 PerfScore 4.00 +G_M27329_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz + ldrex lr, [r2] + cmp lr, r0 + bne SHORT G_M27329_IG05 + strex r3, r1, [r2] + cmp r3, 0 + bne SHORT G_M27329_IG04 + ;; size=16 bbWeight=0.50 PerfScore 3.00 +G_M27329_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz + dmb 15 + cmp lr, r0 + beq SHORT G_M27329_IG06
movs r2, 0
- b SHORT G_M27329_IG05 - ;; size=42 bbWeight=0.50 PerfScore 7.50 -G_M27329_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r2] + b SHORT G_M27329_IG07 + ;; size=12 bbWeight=0.50 PerfScore 2.50 +G_M27329_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r2, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M27329_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M27329_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
str r2, [sp] // [V02 loc1]
- cmp r0, r4 - beq SHORT G_M27329_IG07
+ cmp lr, r0 + beq SHORT G_M27329_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M27329_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M27329_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r0, sp, 4 // [V01 loc0] add r2, sp, 0 // [V02 loc1] mov r1, -1 @@ -77,43 +86,57 @@ G_M27329_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr r3, [r3] blx r3 // <unknown method> ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M27329_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp+0x04] // [V11 tmp8]
+G_M27329_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp+0x04] // [V10 tmp7]
ands r3, r3, 0x80000000 cmp r3, 0
- bne SHORT G_M27329_IG09
+ bne SHORT G_M27329_IG12
;; size=10 bbWeight=1 PerfScore 4.00
-G_M27329_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp+0x04] // [V11 tmp8]
+G_M27329_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp+0x04] // [V10 tmp7]
mvn r2, 0x80000000 and r4, r3, r2 movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method> cmp r4, r0
- bne SHORT G_M27329_IG12 - add r0, sp, 4 // [V11 tmp8] - movs r1, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - b SHORT G_M27329_IG10 - ;; size=40 bbWeight=0.50 PerfScore 7.00 -G_M27329_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add r0, sp, 4 // [V11 tmp8] - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M27329_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne SHORT G_M27329_IG16 + add r0, sp, 4 // [V10 tmp7] + ; byrRegs +[r0] + movs r3, 0 + dmb 15 + ;; size=32 bbWeight=0.50 PerfScore 5.50 +G_M27329_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M27329_IG11 + dmb 15 + b SHORT G_M27329_IG14 + ;; size=18 bbWeight=0.50 PerfScore 3.00 +G_M27329_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0] + add r0, sp, 4 // [V10 tmp7] + ; byrRegs +[r0] + dmb 15 + ;; size=6 bbWeight=0.50 PerfScore 1.00 +G_M27329_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M27329_IG13 + dmb 15 + ;; size=18 bbWeight=0.50 PerfScore 3.00 +G_M27329_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
ldrb r0, [sp] // [V02 loc1] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M27329_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M27329_IG15: ; bbWeight=1, epilog, nogc, extend
add sp, 12 pop {r4,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M27329_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M27329_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -121,7 +144,7 @@ G_M27329_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 190, prolog size 16, PerfScore 41.50, instruction count 69, allocated bytes for code 190 (MethodHash=7427953e) for method System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
+; Total bytes of code 220, prolog size 16, PerfScore 46.50, instruction count 79, allocated bytes for code 220 (MethodHash=7427953e) for method System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -133,7 +156,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 95 (0x0005f) Actual length = 190 (0x0000be)
+ Function Length : 110 (0x0006e) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+30 (+15.96%) : 29059.dasm - System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)

@@ -5,23 +5,22 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 6 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.Tests.Perf_SpinLock> ; V01 loc0 [V01 ] ( 8, 5.50) struct ( 4) [sp+0x04] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.SpinLock> ; V02 loc1 [V02 ] ( 4, 3 ) ubyte -> [sp+0x00] do-not-enreg[X] must-init addr-exposed ld-addr-op ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 6, 3.50) int -> r4 single-def "Inline stloc first use temp"
+; V04 tmp1 [V04,T01] ( 6, 3.50) int -> r0 single-def "Inline stloc first use temp"
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V06 tmp3 [V06,T03] ( 3, 1.50) int -> r0 single-def "Inline stloc first use temp" -;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V08 tmp5 [V08,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp" -;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" -;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>> -; V11 tmp8 [V11 ] ( 8, 5.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V01._owner (fldOffset=0x0)" P-DEP -;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" -; V13 cse0 [V13,T02] ( 2, 2 ) int -> r3 "CSE - aggressive"
+; V06 tmp3 [V06,T03] ( 3, 1.50) int -> lr single-def "Inline stloc first use temp" +;* V07 tmp4 [V07,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp" +;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" +;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>> +; V10 tmp7 [V10 ] ( 8, 5.50) int -> [sp+0x04] do-not-enreg[X] addr-exposed "field V01._owner (fldOffset=0x0)" P-DEP +;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" +; V12 cse0 [V12,T02] ( 2, 2 ) int -> r3 "CSE - aggressive"
; ; Lcl frame size = 12 @@ -35,40 +34,50 @@ G_M62046_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=16 bbWeight=1 PerfScore 6.00 G_M62046_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0]
- ldr r1, [r0+0x04] - str r1, [sp+0x04] // [V11 tmp8] - ldr r4, [sp+0x04] // [V11 tmp8] - ldrb r1, [sp] // [V02 loc1] - cmp r1, 0 - bne SHORT G_M62046_IG06
+ ldr r0, [r0+0x04] + ; gcrRegs -[r0] + str r0, [sp+0x04] // [V10 tmp7] + ldr r0, [sp+0x04] // [V10 tmp7] + ldrb r2, [sp] // [V02 loc1] + cmp r2, 0 + bne SHORT G_M62046_IG08
;; size=14 bbWeight=1 PerfScore 6.00 G_M62046_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r0] - movw r1, 0xd1ff - movt r1, 0xd1ff - ands r1, r4 - cmp r1, 0x80000000 - bne SHORT G_M62046_IG06 - orr r1, r4, 1 - add r0, sp, 4 // [V11 tmp8] - mov r2, r4 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - cmp r0, r4 - beq SHORT G_M62046_IG04
+ movw r2, 0xd1ff + movt r2, 0xd1ff + ands r2, r0 + cmp r2, 0x80000000 + bne SHORT G_M62046_IG08 + add r2, sp, 4 // [V10 tmp7] + ; byrRegs +[r2] + orr r1, r0, 1 + dmb 15 + ;; size=26 bbWeight=0.50 PerfScore 4.00 +G_M62046_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz + ldrex lr, [r2] + cmp lr, r0 + bne SHORT G_M62046_IG05 + strex r3, r1, [r2] + cmp r3, 0 + bne SHORT G_M62046_IG04 + ;; size=16 bbWeight=0.50 PerfScore 3.00 +G_M62046_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {r2}, byref, isz + dmb 15 + cmp lr, r0 + beq SHORT G_M62046_IG06
movs r2, 0
- b SHORT G_M62046_IG05 - ;; size=42 bbWeight=0.50 PerfScore 7.50 -G_M62046_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r2] + b SHORT G_M62046_IG07 + ;; size=12 bbWeight=0.50 PerfScore 2.50 +G_M62046_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r2, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M62046_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M62046_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
str r2, [sp] // [V02 loc1]
- cmp r0, r4 - beq SHORT G_M62046_IG07
+ cmp lr, r0 + beq SHORT G_M62046_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M62046_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62046_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add r0, sp, 4 // [V01 loc0] add r2, sp, 0 // [V02 loc1] movs r1, 0 @@ -77,43 +86,57 @@ G_M62046_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr r3, [r3] blx r3 // <unknown method> ;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M62046_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp+0x04] // [V11 tmp8]
+G_M62046_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp+0x04] // [V10 tmp7]
ands r3, r3, 0x80000000 cmp r3, 0
- bne SHORT G_M62046_IG09
+ bne SHORT G_M62046_IG12
;; size=10 bbWeight=1 PerfScore 4.00
-G_M62046_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ldr r3, [sp+0x04] // [V11 tmp8]
+G_M62046_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ldr r3, [sp+0x04] // [V10 tmp7]
mvn r2, 0x80000000 and r4, r3, r2 movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method> cmp r4, r0
- bne SHORT G_M62046_IG12 - add r0, sp, 4 // [V11 tmp8] - movs r1, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - b SHORT G_M62046_IG10 - ;; size=40 bbWeight=0.50 PerfScore 7.00 -G_M62046_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - add r0, sp, 4 // [V11 tmp8] - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ;; size=16 bbWeight=0.50 PerfScore 2.50 -G_M62046_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne SHORT G_M62046_IG16 + add r0, sp, 4 // [V10 tmp7] + ; byrRegs +[r0] + movs r3, 0 + dmb 15 + ;; size=32 bbWeight=0.50 PerfScore 5.50 +G_M62046_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M62046_IG11 + dmb 15 + b SHORT G_M62046_IG14 + ;; size=18 bbWeight=0.50 PerfScore 3.00 +G_M62046_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0] + add r0, sp, 4 // [V10 tmp7] + ; byrRegs +[r0] + dmb 15 + ;; size=6 bbWeight=0.50 PerfScore 1.00 +G_M62046_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M62046_IG13 + dmb 15 + ;; size=18 bbWeight=0.50 PerfScore 3.00 +G_M62046_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
ldrb r0, [sp] // [V02 loc1] ;; size=4 bbWeight=1 PerfScore 1.00
-G_M62046_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M62046_IG15: ; bbWeight=1, epilog, nogc, extend
add sp, 12 pop {r4,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-G_M62046_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62046_IG16: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -121,7 +144,7 @@ G_M62046_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 188, prolog size 16, PerfScore 41.50, instruction count 69, allocated bytes for code 188 (MethodHash=c5c10da1) for method System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
+; Total bytes of code 218, prolog size 16, PerfScore 46.50, instruction count 79, allocated bytes for code 218 (MethodHash=c5c10da1) for method System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -133,7 +156,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 94 (0x0005e) Actual length = 188 (0x0000bc)
+ Function Length : 109 (0x0006d) Actual length = 218 (0x0000da)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+19.05%) : 9496.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)

@@ -5,43 +5,47 @@ ; r11 based frame ; fully interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 3, 17 ) int -> r0
+; V00 loc0 [V00,T00] ( 3, 17 ) int -> r3
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 2, 9 ) byref -> r4 hoist "CSE - aggressive"
+; V02 cse0 [V02,T01] ( 2, 9 ) byref -> r0 hoist "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M34283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00
G_M34283_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r4, 0xd1ff - movt r4, 0xd1ff
+ movw r0, 0xd1ff + movt r0, 0xd1ff
;; size=8 bbWeight=1 PerfScore 2.00
-G_M34283_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - ; byrRegs +[r4] - mov r0, r4
+G_M34283_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - adds r0, r0, 1 - cmp r0, -1
+ dmb 15 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M34283_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + adds r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M34283_IG04 + dmb 15 + adds r3, r1, 1 + cmp r3, -1
beq SHORT G_M34283_IG03
- ;; size=22 bbWeight=8 PerfScore 64.00 -G_M34283_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r4] - pop {r3,r4,r11,pc}
+ ;; size=26 bbWeight=8 PerfScore 72.00 +G_M34283_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0] + mov r0, r3 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M34283_IG06: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 8, PerfScore 69.00, instruction count 13, allocated bytes for code 42 (MethodHash=0ac07a14) for method System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 86.00, instruction count 16, allocated bytes for code 50 (MethodHash=0ac07a14) for method System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
; ============================================================ Unwind Info: @@ -53,11 +57,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

benchmarks.run_pgo.linux.arm.checked.mch

-16 (-36.36%) : 13976.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)

@@ -2,64 +2,55 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M7936_IG04 - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - subs r0, r0, 1 - ;; size=20 bbWeight=1 PerfScore 7.00 -G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M7936_IG03 + dmb 15 + subs r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M7936_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 6, PerfScore 10.00, instruction count 15, allocated bytes for code 44 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
; ============================================================ 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 : 22 (0x00016) Actual length = 44 (0x00002c) - ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-26 (-34.21%) : 27642.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)

@@ -3,69 +3,53 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; fully interruptible ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> -; V01 loc0 [V01,T01] ( 4, 3 ) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> +; V01 loc0 [V01,T01] ( 3, 2 ) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0] - add r4, r0, 40 - ; byrRegs +[r4] - cmp r4, 0 - beq SHORT G_M3949_IG04 - mov r0, r4
+ adds r0, 40
; gcrRegs -[r0] ; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, 0
+ movs r3, 1 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M3949_IG03 + dmb 15 + cmp r1, 0
bne SHORT G_M3949_IG05
- ;; size=30 bbWeight=1 PerfScore 11.00 -G_M3949_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M3949_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[r4]
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M3949_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M3949_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs +[r4] - mov r0, r4 - ; byrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M3949_IG06: ; bbWeight=0, epilog, nogc, extend add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,11 +73,11 @@ Unwind Info: Epilog Start Index : 3 (0x03) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end ---- Epilog start at index 3 ---- 01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end FF end

-26 (-34.21%) : 132082.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)

@@ -3,69 +3,53 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; fully interruptible ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 13840
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> -; V01 loc0 [V01,T01] ( 4, 3 ) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> +; V01 loc0 [V01,T01] ( 3, 2 ) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0] - add r4, r0, 40 - ; byrRegs +[r4] - cmp r4, 0 - beq SHORT G_M3949_IG04 - mov r0, r4
+ adds r0, 40
; gcrRegs -[r0] ; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, 0
+ movs r3, 1 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M3949_IG03 + dmb 15 + cmp r1, 0
bne SHORT G_M3949_IG05
- ;; size=30 bbWeight=1 PerfScore 11.00 -G_M3949_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M3949_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[r4]
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M3949_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M3949_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs +[r4] - mov r0, r4 - ; byrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M3949_IG06: ; bbWeight=0, epilog, nogc, extend add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,11 +73,11 @@ Unwind Info: Epilog Start Index : 3 (0x03) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end ---- Epilog start at index 3 ---- 01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end FF end

+10 (+27.78%) : 8652.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)

@@ -18,22 +18,27 @@ G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r1, [sp] ;; size=12 bbWeight=1 PerfScore 4.00 G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x04] - ; byrRegs +[r0] - ldr r1, [sp] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0]
+ ldr r3, [sp+0x04] + ; byrRegs +[r3] + ldr r2, [sp] + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M51449_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex r4, [r3] + adds r1, r4, r2 + strex r0, r1, [r3] + cmp r0, 0 + bne SHORT G_M51449_IG03 + dmb 15
ldr r3, [sp]
- adds r0, r0, r3 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[r3] + adds r0, r4, r3 + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M51449_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 36, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 36 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)
+; Total bytes of code 46, prolog size 8, PerfScore 16.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)
; ============================================================ Unwind Info: @@ -45,7 +50,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 36 (0x000024)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+14 (+35.00%) : 241.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)

@@ -21,22 +21,30 @@ G_M59963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r2, [sp+0x04] ;; size=16 bbWeight=1 PerfScore 6.00 G_M59963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x0C] - ; byrRegs +[r0] - ldr r1, [sp+0x08] - ldr r2, [sp+0x04] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0] - ;; size=18 bbWeight=1 PerfScore 7.00 -G_M59963_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr r3, [sp+0x0C] + ; byrRegs +[r3] + ldr r2, [sp+0x08] + ldr r1, [sp+0x04] + dmb 15 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M59963_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex r4, [r3] + cmp r4, r1 + bne SHORT G_M59963_IG04 + strex r0, r2, [r3] + cmp r0, 0 + bne SHORT G_M59963_IG03 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M59963_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref + dmb 15 + mov r0, r4 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M59963_IG05: ; bbWeight=1, epilog, nogc, extend
add sp, 16 pop {r4,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 10, PerfScore 15.00, instruction count 15, allocated bytes for code 40 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
+; Total bytes of code 54, prolog size 10, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
; ============================================================ Unwind Info: @@ -48,7 +56,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+14 (+35.00%) : 994.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)

@@ -21,22 +21,30 @@ G_M59963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r2, [sp+0x04] ;; size=16 bbWeight=1 PerfScore 6.00 G_M59963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x0C] - ; byrRegs +[r0] - ldr r1, [sp+0x08] - ldr r2, [sp+0x04] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0] - ;; size=18 bbWeight=1 PerfScore 7.00 -G_M59963_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr r3, [sp+0x0C] + ; byrRegs +[r3] + ldr r2, [sp+0x08] + ldr r1, [sp+0x04] + dmb 15 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M59963_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex r4, [r3] + cmp r4, r1 + bne SHORT G_M59963_IG04 + strex r0, r2, [r3] + cmp r0, 0 + bne SHORT G_M59963_IG03 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M59963_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref + dmb 15 + mov r0, r4 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M59963_IG05: ; bbWeight=1, epilog, nogc, extend
add sp, 16 pop {r4,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 10, PerfScore 15.00, instruction count 15, allocated bytes for code 40 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
+; Total bytes of code 54, prolog size 10, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
; ============================================================ Unwind Info: @@ -48,7 +56,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

benchmarks.run_tiered.linux.arm.checked.mch

-16 (-36.36%) : 8584.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)

@@ -2,64 +2,55 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M7936_IG04 - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - subs r0, r0, 1 - ;; size=20 bbWeight=1 PerfScore 7.00 -G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M7936_IG03 + dmb 15 + subs r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M7936_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 6, PerfScore 10.00, instruction count 15, allocated bytes for code 44 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
; ============================================================ 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 : 22 (0x00016) Actual length = 44 (0x00002c) - ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-26 (-34.21%) : 20172.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)

@@ -2,68 +2,54 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; fully interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> -; V01 loc0 [V01,T01] ( 4, 3.50) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> +; V01 loc0 [V01,T01] ( 3, 2.50) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0] - add r4, r0, 40 - ; byrRegs +[r4] - cmp r4, 0 - beq SHORT G_M3949_IG06 - mov r0, r4
+ adds r0, 40
; gcrRegs -[r0] ; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, 0 - beq SHORT G_M3949_IG05 - ;; size=30 bbWeight=1 PerfScore 11.00 -G_M3949_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - mov r0, r4 - ; byrRegs +[r0]
+ movs r3, 1 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M3949_IG03 + dmb 15 + cmp r1, 0 + beq SHORT G_M3949_IG06 + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M3949_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- ;; size=12 bbWeight=0.50 PerfScore 2.00 -G_M3949_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=10 bbWeight=0.50 PerfScore 1.50 +G_M3949_IG05: ; bbWeight=0.50, epilog, nogc, extend
add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M3949_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r0 r4] - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M3949_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+G_M3949_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[r0] + pop {r3,pc} + ;; size=2 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 76, prolog size 8, PerfScore 17.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 50, prolog size 2, PerfScore 14.50, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================ Unwind Info: @@ -75,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -87,11 +73,11 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end ---- Epilog start at index 3 ---- 01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end FF end

-14 (-33.33%) : 7257.dasm - System.Threading.Interlocked:Increment(byref):int (Tier1)

@@ -2,64 +2,55 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M15654_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M15654_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M15654_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M15654_IG04 - movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - adds r0, r0, 1 - ;; size=18 bbWeight=1 PerfScore 7.00 -G_M15654_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M15654_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+G_M15654_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + adds r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M15654_IG03 + dmb 15 + adds r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M15654_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 6, PerfScore 10.00, instruction count 15, allocated bytes for code 42 (MethodHash=3af8c2d9) for method System.Threading.Interlocked:Increment(byref):int (Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=3af8c2d9) for method System.Threading.Interlocked:Increment(byref):int (Tier1)
; ============================================================ 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 : 21 (0x00015) Actual length = 42 (0x00002a) - ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+8 (+25.00%) : 3818.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier0)

@@ -18,20 +18,23 @@ G_M7811_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r1, [sp] ;; size=12 bbWeight=1 PerfScore 4.00 G_M7811_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x04] - ; byrRegs +[r0] - ldr r1, [sp] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0] - ;; size=16 bbWeight=1 PerfScore 6.00 -G_M7811_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr r3, [sp+0x04] + ; byrRegs +[r3] + ldr r2, [sp] + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M7811_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex r0, [r3] + strex r1, r2, [r3] + cmp r1, 0 + bne SHORT G_M7811_IG03 + dmb 15 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M7811_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 32, prolog size 8, PerfScore 11.00, instruction count 11, allocated bytes for code 32 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
+; Total bytes of code 40, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 40 (MethodHash=911fe17c) for method System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
; ============================================================ Unwind Info: @@ -43,7 +46,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 16 (0x00010) Actual length = 32 (0x000020)
+ Function Length : 20 (0x00014) Actual length = 40 (0x000028)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+10 (+27.78%) : 3512.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier0)

@@ -18,22 +18,27 @@ G_M51449_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r1, [sp] ;; size=12 bbWeight=1 PerfScore 4.00 G_M51449_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x04] - ; byrRegs +[r0] - ldr r1, [sp] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0]
+ ldr r3, [sp+0x04] + ; byrRegs +[r3] + ldr r2, [sp] + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M51449_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex r4, [r3] + adds r1, r4, r2 + strex r0, r1, [r3] + cmp r0, 0 + bne SHORT G_M51449_IG03 + dmb 15
ldr r3, [sp]
- adds r0, r0, r3 - ;; size=20 bbWeight=1 PerfScore 8.00 -G_M51449_IG03: ; bbWeight=1, epilog, nogc, extend
+ ; byrRegs -[r3] + adds r0, r4, r3 + ;; size=22 bbWeight=1 PerfScore 8.00 +G_M51449_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r2,r3,r4,r10,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 36, prolog size 8, PerfScore 13.00, instruction count 13, allocated bytes for code 36 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier0)
+; Total bytes of code 46, prolog size 8, PerfScore 16.00, instruction count 16, allocated bytes for code 46 (MethodHash=c2693706) for method System.Threading.Interlocked:Add(byref,int):int (Tier0)
; ============================================================ Unwind Info: @@ -45,7 +50,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 18 (0x00012) Actual length = 36 (0x000024)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+14 (+35.00%) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)

@@ -21,22 +21,30 @@ G_M59963_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str r2, [sp+0x04] ;; size=16 bbWeight=1 PerfScore 6.00 G_M59963_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr r0, [sp+0x0C] - ; byrRegs +[r0] - ldr r1, [sp+0x08] - ldr r2, [sp+0x04] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // <unknown method> - ; byrRegs -[r0] - ;; size=18 bbWeight=1 PerfScore 7.00 -G_M59963_IG03: ; bbWeight=1, epilog, nogc, extend
+ ldr r3, [sp+0x0C] + ; byrRegs +[r3] + ldr r2, [sp+0x08] + ldr r1, [sp+0x04] + dmb 15 + ;; size=10 bbWeight=1 PerfScore 4.00 +G_M59963_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex r4, [r3] + cmp r4, r1 + bne SHORT G_M59963_IG04 + strex r0, r2, [r3] + cmp r0, 0 + bne SHORT G_M59963_IG03 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M59963_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref + dmb 15 + mov r0, r4 + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M59963_IG05: ; bbWeight=1, epilog, nogc, extend
add sp, 16 pop {r4,r10,r11,pc} ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 40, prolog size 10, PerfScore 15.00, instruction count 15, allocated bytes for code 40 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
+; Total bytes of code 54, prolog size 10, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=599f15c4) for method System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
; ============================================================ Unwind Info: @@ -48,7 +56,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 20 (0x00014) Actual length = 40 (0x000028)
+ Function Length : 27 (0x0001b) Actual length = 54 (0x000036)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

coreclr_tests.run.linux.arm.checked.mch

-26 (-34.21%) : 1833.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)

@@ -3,69 +3,53 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; fully interruptible ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 126
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> -; V01 loc0 [V01,T01] ( 4, 3 ) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> +; V01 loc0 [V01,T01] ( 3, 2 ) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0] - add r4, r0, 40 - ; byrRegs +[r4] - cmp r4, 0 - beq SHORT G_M3949_IG04 - mov r0, r4
+ adds r0, 40
; gcrRegs -[r0] ; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, 0
+ movs r3, 1 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M3949_IG03 + dmb 15 + cmp r1, 0
bne SHORT G_M3949_IG05
- ;; size=30 bbWeight=1 PerfScore 11.00 -G_M3949_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M3949_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[r4]
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M3949_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M3949_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs +[r4] - mov r0, r4 - ; byrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M3949_IG06: ; bbWeight=0, epilog, nogc, extend add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,11 +73,11 @@ Unwind Info: Epilog Start Index : 3 (0x03) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end ---- Epilog start at index 3 ---- 01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end FF end

-26 (-34.21%) : 138457.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)

@@ -3,69 +3,53 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; fully interruptible ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> -; V01 loc0 [V01,T01] ( 4, 3 ) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> +; V01 loc0 [V01,T01] ( 3, 2 ) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0] - add r4, r0, 40 - ; byrRegs +[r4] - cmp r4, 0 - beq SHORT G_M3949_IG04 - mov r0, r4
+ adds r0, 40
; gcrRegs -[r0] ; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, 0
+ movs r3, 1 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M3949_IG03 + dmb 15 + cmp r1, 0
bne SHORT G_M3949_IG05
- ;; size=30 bbWeight=1 PerfScore 11.00 -G_M3949_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r4] - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1.00 PerfScore 1.00 -G_M3949_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M3949_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M3949_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs +[r4] - mov r0, r4 - ; byrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M3949_IG06: ; bbWeight=0, epilog, nogc, extend add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,11 +73,11 @@ Unwind Info: Epilog Start Index : 3 (0x03) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end ---- Epilog start at index 3 ---- 01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end FF end

-26 (-34.21%) : 31110.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)

@@ -3,69 +3,53 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; fully interruptible ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 8
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> -; V01 loc0 [V01,T01] ( 4, 3 ) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> +; V01 loc0 [V01,T01] ( 3, 2 ) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0] - add r4, r0, 40 - ; byrRegs +[r4] - cmp r4, 0 - beq SHORT G_M3949_IG04 - mov r0, r4
+ adds r0, 40
; gcrRegs -[r0] ; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, 0
+ movs r3, 1 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M3949_IG03 + dmb 15 + cmp r1, 0
bne SHORT G_M3949_IG05
- ;; size=30 bbWeight=1 PerfScore 11.00 -G_M3949_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M3949_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[r4]
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M3949_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M3949_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs +[r4] - mov r0, r4 - ; byrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M3949_IG06: ; bbWeight=0, epilog, nogc, extend add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,11 +73,11 @@ Unwind Info: Epilog Start Index : 3 (0x03) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end ---- Epilog start at index 3 ---- 01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end FF end

+14 (+87.50%) : 399176.dasm - InterlockedTest.Program+<>c:b_110():this (FullOpts)

@@ -5,7 +5,6 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <InterlockedTest.Program+<>c> @@ -13,19 +12,28 @@ ; ; Lcl frame size = 4
-G_M40308_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M40308_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00 -G_M40308_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M40308_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r3, 0 + movs r2, 0 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M40308_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ; byrRegs +[r3] + ldrexb r0, [r3] + strexb r1, r2, [r3] + cmp r1, 0 + bne SHORT G_M40308_IG03 + dmb 15 + sxtb r0, r0 + ;; size=18 bbWeight=1 PerfScore 6.00 +G_M40308_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=69c6628b) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_10():this (FullOpts)
+; Total bytes of code 30, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 30 (MethodHash=69c6628b) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_10():this (FullOpts)
; ============================================================ Unwind Info: @@ -34,13 +42,13 @@ Unwind Info: Code Words : 1 Epilog Count : 0 F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010) - ---- Epilog scopes ---- - No epilogs
+ Function Length : 15 (0x0000f) Actual length = 30 (0x00001e) + --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16 FF end FF end

+16 (+100.00%) : 399181.dasm - InterlockedTest.Program+<>c:b_115():this (FullOpts)

@@ -5,7 +5,6 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <InterlockedTest.Program+<>c> @@ -13,19 +12,31 @@ ; ; Lcl frame size = 4
-G_M10769_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M10769_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00 -G_M10769_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M10769_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r3, 0 + movs r2, 0 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M10769_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ; byrRegs +[r3] + ldrexh r0, [r3] + sxth r0, r0 + cbnz r0, SHORT G_M10769_IG04 + strexh r1, r2, [r3] + cmp r1, 0 + bne SHORT G_M10769_IG03 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M10769_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref + dmb 15 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M10769_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=da60d5ee) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=da60d5ee) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():this (FullOpts)
; ============================================================ Unwind Info: @@ -34,13 +45,13 @@ Unwind Info: Code Words : 1 Epilog Count : 0 F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010) - ---- Epilog scopes ---- - No epilogs
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020) + --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16 FF end FF end

+16 (+100.00%) : 399180.dasm - InterlockedTest.Program+<>c:b_114():this (FullOpts)

@@ -5,7 +5,6 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <InterlockedTest.Program+<>c> @@ -13,19 +12,31 @@ ; ; Lcl frame size = 4
-G_M36336_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M36336_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00 -G_M36336_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M36336_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r3, 0 + movs r2, 0 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M36336_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ; byrRegs +[r3] + ldrexb r0, [r3] + sxtb r0, r0 + cbnz r0, SHORT G_M36336_IG04 + strexb r1, r2, [r3] + cmp r1, 0 + bne SHORT G_M36336_IG03 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M36336_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref + dmb 15 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M36336_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=b8c3720f) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=b8c3720f) for method InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():this (FullOpts)
; ============================================================ Unwind Info: @@ -34,13 +45,13 @@ Unwind Info: Code Words : 1 Epilog Count : 0 F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010) - ---- Epilog scopes ---- - No epilogs
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020) + --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16 FF end FF end

libraries.crossgen2.linux.arm.checked.mch

-24 (-46.15%) : 6082.dasm - System.Threading.Interlocked:Decrement(byref):int (FullOpts)

@@ -3,67 +3,55 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4 G_M7936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M7936_IG04 - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - mov r1, -1 - ldr r3, [r4] - blx r3 // <unknown method> - ; byrRegs -[r0] - subs r0, r0, 1 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=16 bbWeight=0 PerfScore 0.00
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M7936_IG03 + dmb 15 + subs r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M7936_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 12.00, instruction count 18, allocated bytes for code 52 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (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 : 26 (0x0001a) Actual length = 52 (0x000034) - ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-24 (-46.15%) : 6100.dasm - System.Threading.Interlocked:Decrement(byref):uint (FullOpts)

@@ -3,67 +3,55 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4 G_M20501_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M20501_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M20501_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M20501_IG04 - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - mov r1, -1 - ldr r3, [r4] - blx r3 // <unknown method> - ; byrRegs -[r0] - subs r0, r0, 1 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M20501_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M20501_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=16 bbWeight=0 PerfScore 0.00
+G_M20501_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M20501_IG03 + dmb 15 + subs r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M20501_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 12.00, instruction count 18, allocated bytes for code 52 (MethodHash=b6ddafea) for method System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b6ddafea) for method System.Threading.Interlocked:Decrement(byref):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 : 26 (0x0001a) Actual length = 52 (0x000034) - ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-22 (-44.00%) : 6098.dasm - System.Threading.Interlocked:Increment(byref):uint (FullOpts)

@@ -3,67 +3,55 @@ ; FullOpts code ; ReadyToRun compilation ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4 G_M57779_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M57779_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M57779_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M57779_IG04 - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - movs r1, 1 - ldr r3, [r4] - blx r3 // <unknown method> - ; byrRegs -[r0] - adds r0, r0, 1 - ;; size=22 bbWeight=1 PerfScore 9.00 -G_M57779_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M57779_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - ldr r3, [r4] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=16 bbWeight=0 PerfScore 0.00
+G_M57779_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + adds r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M57779_IG03 + dmb 15 + adds r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M57779_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 50, prolog size 8, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=9a201e4c) for method System.Threading.Interlocked:Increment(byref):uint (FullOpts)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=9a201e4c) for method System.Threading.Interlocked:Increment(byref):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 : 25 (0x00019) Actual length = 50 (0x000032) - ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+8 (+18.18%) : 161101.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)

@@ -9,49 +9,53 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> r0 this class-hnd single-def <System.Net.LazyAsyncResult>
-; V01 loc0 [V01,T01] ( 4, 3.50) int -> r5
+; V01 loc0 [V01,T01] ( 4, 3.50) int -> r3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4 G_M21063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,lr}
+ push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00 G_M21063_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0]
- ldr r5, [r0+0x18] - cmp r5, 0 - bne SHORT G_M21063_IG04
+ ldr r3, [r0+0x18] + cmp r3, 0 + bne SHORT G_M21063_IG06
;; size=6 bbWeight=1 PerfScore 3.00 G_M21063_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
- adds r0, 24
+ add r3, r0, 24 + ; byrRegs +[r3] + mov r0, 0x80000000
; gcrRegs -[r0]
- ; byrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - mov r1, 0x80000000 - movs r2, 0 - ldr r3, [r4] - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - mov r5, r0 - ;; size=24 bbWeight=0.50 PerfScore 4.50 -G_M21063_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r5, 0 - bgt SHORT G_M21063_IG05
+ dmb 15 + ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M21063_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex r1, [r3] + cbnz r1, SHORT G_M21063_IG05 + strex r2, r0, [r3] + cmp r2, 0 + bne SHORT G_M21063_IG04 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M21063_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref + dmb 15 + mov r3, r1 + ; byrRegs -[r3] + ;; size=6 bbWeight=0.50 PerfScore 1.00 +G_M21063_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r3, 0 + bgt SHORT G_M21063_IG07
movs r0, 0
- b SHORT G_M21063_IG06
+ b SHORT G_M21063_IG08
;; size=8 bbWeight=1 PerfScore 4.00
-G_M21063_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21063_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M21063_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r3,r4,r5,pc}
+G_M21063_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 2, PerfScore 14.50, instruction count 19, allocated bytes for code 44 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 2, PerfScore 15.00, instruction count 20, allocated bytes for code 52 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -63,11 +67,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 38 pop {r3,r4,r5,lr} ; opsize 16
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+8 (+18.18%) : 100983.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)

@@ -9,49 +9,53 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> r0 this class-hnd single-def <System.Net.LazyAsyncResult>
-; V01 loc0 [V01,T01] ( 4, 3.50) int -> r5
+; V01 loc0 [V01,T01] ( 4, 3.50) int -> r3
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4 G_M21063_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,lr}
+ push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00 G_M21063_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0]
- ldr r5, [r0+0x18] - cmp r5, 0 - bne SHORT G_M21063_IG04
+ ldr r3, [r0+0x18] + cmp r3, 0 + bne SHORT G_M21063_IG06
;; size=6 bbWeight=1 PerfScore 3.00 G_M21063_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
- adds r0, 24
+ add r3, r0, 24 + ; byrRegs +[r3] + mov r0, 0x80000000
; gcrRegs -[r0]
- ; byrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - mov r1, 0x80000000 - movs r2, 0 - ldr r3, [r4] - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - mov r5, r0 - ;; size=24 bbWeight=0.50 PerfScore 4.50 -G_M21063_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r5, 0 - bgt SHORT G_M21063_IG05
+ dmb 15 + ;; size=12 bbWeight=0.50 PerfScore 1.50 +G_M21063_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex r1, [r3] + cbnz r1, SHORT G_M21063_IG05 + strex r2, r0, [r3] + cmp r2, 0 + bne SHORT G_M21063_IG04 + ;; size=14 bbWeight=0.50 PerfScore 2.50 +G_M21063_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref + dmb 15 + mov r3, r1 + ; byrRegs -[r3] + ;; size=6 bbWeight=0.50 PerfScore 1.00 +G_M21063_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r3, 0 + bgt SHORT G_M21063_IG07
movs r0, 0
- b SHORT G_M21063_IG06
+ b SHORT G_M21063_IG08
;; size=8 bbWeight=1 PerfScore 4.00
-G_M21063_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21063_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M21063_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r3,r4,r5,pc}
+G_M21063_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 2, PerfScore 14.50, instruction count 19, allocated bytes for code 44 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
+; Total bytes of code 52, prolog size 2, PerfScore 15.00, instruction count 20, allocated bytes for code 52 (MethodHash=d964adb8) for method System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -63,11 +67,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 22 (0x00016) Actual length = 44 (0x00002c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- ED 38 pop {r3,r4,r5,lr} ; opsize 16
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+8 (+28.57%) : 76266.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)

@@ -11,32 +11,35 @@ ; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M42395_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr}
+ push {r3,lr}
;; size=2 bbWeight=1 PerfScore 1.00 G_M42395_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref ; gcrRegs +[r0]
- ldrsb r1, [r0] - adds r0, 12
+ ldrsb r3, [r0] + add r3, r0, 12 + ; byrRegs +[r3] + movs r2, 1 + dmb 15 + ;; size=14 bbWeight=1 PerfScore 4.00 +G_M42395_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; gcrRegs -[r0]
- ; byrRegs +[r0] - movw r4, LOW RELOC 0xD1FFAB1E - movt r4, HIGH RELOC 0xD1FFAB1E - add r4, pc - movs r1, 1 - movs r2, 0 - ldr r3, [r4] - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M42395_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r4,pc}
+ ldrex r0, [r3] + cbnz r0, SHORT G_M42395_IG04 + strex r1, r2, [r3] + cmp r1, 0 + bne SHORT G_M42395_IG03 + ;; size=14 bbWeight=1 PerfScore 5.00 +G_M42395_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref + dmb 15 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M42395_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 28, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 28 (MethodHash=61665a64) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
+; Total bytes of code 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (MethodHash=61665a64) for method Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
; ============================================================ Unwind Info: @@ -48,12 +51,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 14 (0x0000e) Actual length = 28 (0x00001c)
+ Function Length : 18 (0x00012) Actual length = 36 (0x000024)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16 - FF end
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

libraries.pmi.linux.arm.checked.mch

-36 (-30.00%) : 151429.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)

@@ -2,101 +2,84 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.Build.BackEnd.Logging.LoggingService>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> r4 single-def -; V02 arg2 [V02,T05] ( 3, 3 ) int -> r5 single-def
+; V01 arg1 [V01,T03] ( 3, 3 ) int -> r4 single-def +; V02 arg2 [V02,T04] ( 3, 3 ) int -> r5 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 9, 18 ) ref -> r8 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.Framework.BuildEventContext> -; V05 tmp2 [V05,T02] ( 3, 6 ) byref -> r6 single-def "impAppendStmt" -; V06 tmp3 [V06,T03] ( 3, 6 ) int -> r7 "Inlining Arg" -; V07 tmp4 [V07,T06] ( 2, 4 ) int -> r0 "Inlining Arg"
+; V04 tmp1 [V04,T00] ( 9, 18 ) ref -> r0 class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.Framework.BuildEventContext> +; V05 tmp2 [V05,T05] ( 2, 4 ) byref -> r6 single-def "impAppendStmt" +; V06 tmp3 [V06,T02] ( 3, 6 ) int -> r7 "Inlining Arg" +; V07 tmp4 [V07,T06] ( 2, 4 ) int -> r3 "Inlining Arg"
; ; Lcl frame size = 4 G_M19602_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r7,r8,r11,lr} - add r11, sp, 24
+ push {r3,r4,r5,r6,r7,lr}
mov r4, r1 mov r5, r2
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M19602_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1 PerfScore 3.00 +G_M19602_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0] add r6, r0, 120 ; byrRegs +[r6] ldr r0, [r0+0x74] ; gcrRegs -[r0] adds r7, r0, 2
- cmp r6, 0 - beq SHORT G_M19602_IG04
movw r0, 0xd1ff movt r0, 0xd1ff movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // CORINFO_HELP_NEWSFAST ; gcrRegs +[r0]
- mov r8, r0 - ; gcrRegs +[r8] - mov r0, r6 - ; gcrRegs -[r0] - ; byrRegs +[r0] - mov r1, r7 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0 r6] - adds r0, r0, r7 - str r5, [r8+0x18] - str r4, [r8+0x04] - str r0, [r8+0x1C] - mov r0, -1 - str r0, [r8+0x08] - mvn r0, 1 - str r0, [r8+0x0C] - mov r0, -1 - str r0, [r8+0x10] - str r0, [r8+0x14] - mov r0, r8 - ; gcrRegs +[r0] - ;; size=90 bbWeight=1 PerfScore 28.00 -G_M19602_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r5,r6,r7,r8,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M19602_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0 r8] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ; gcr arg pop 0 + dmb 15 + ;; size=30 bbWeight=1 PerfScore 9.00 +G_M19602_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0040 {r6}, byref, isz + ldrex r1, [r6] + adds r3, r1, r7 + strex r2, r3, [r6] + cmp r2, 0 + bne SHORT G_M19602_IG03 + dmb 15 + adds r3, r1, r7 + str r5, [r0+0x18] + str r4, [r0+0x04] + str r3, [r0+0x1C] + mov r3, -1 + str r3, [r0+0x08] + mvn r3, 1 + str r3, [r0+0x0C] + mov r3, -1 + str r3, [r0+0x10] + str r3, [r0+0x14] + ;; size=46 bbWeight=1 PerfScore 17.00 +G_M19602_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,r4,r5,r6,r7,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 120, prolog size 8, PerfScore 33.00, instruction count 38, allocated bytes for code 120 (MethodHash=aa0eb36d) for method Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
+; Total bytes of code 84, prolog size 2, PerfScore 30.00, instruction count 30, allocated bytes for code 84 (MethodHash=aa0eb36d) for method Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (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 : 60 (0x0003c) Actual length = 120 (0x000078) - ---- 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 : 42 (0x0002a) Actual length = 84 (0x000054) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A9 F8 pop {r3,r4,r5,r6,r7,r8,r11,lr} ; opsize 32
+ ED F8 pop {r3,r4,r5,r6,r7,lr} ; opsize 16
FF end FF end

-16 (-29.63%) : 151345.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():int:this (FullOpts)

@@ -2,74 +2,61 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.Build.BackEnd.Logging.LoggingService> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r1 single-def "impAppendStmt" -; V03 tmp2 [V03,T02] ( 3, 6 ) int -> r4 "Inlining Arg"
+; V02 tmp1 [V02,T02] ( 2, 4 ) byref -> r3 single-def "impAppendStmt" +; V03 tmp2 [V03,T01] ( 3, 6 ) int -> r0 "Inlining Arg"
; ; Lcl frame size = 4 G_M52121_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M52121_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M52121_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- add r1, r0, 124 - ; byrRegs +[r1]
+ add r3, r0, 124 + ; byrRegs +[r3]
ldr r0, [r0+0x74] ; gcrRegs -[r0]
- adds r4, r0, 2
+ adds r0, r0, 2 + dmb 15 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M52121_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex lr, [r3] + add r2, lr, r0 + strex r1, r2, [r3]
cmp r1, 0
- beq SHORT G_M52121_IG04 - mov r0, r1 - ; byrRegs +[r0] - mov r1, r4 - ; byrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - adds r0, r0, r4 - ;; size=28 bbWeight=1 PerfScore 11.00 -G_M52121_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M52121_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ bne SHORT G_M52121_IG03 + dmb 15 + add r0, lr + ;; size=22 bbWeight=1 PerfScore 7.00 +G_M52121_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 14.00, instruction count 19, allocated bytes for code 54 (MethodHash=6f743466) for method Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():int:this (FullOpts)
+; Total bytes of code 38, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 38 (MethodHash=6f743466) for method Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():int:this (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 : 27 (0x0001b) Actual length = 54 (0x000036) - ---- 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 : 19 (0x00013) Actual length = 38 (0x000026) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-16 (-29.63%) : 151344.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (FullOpts)

@@ -2,74 +2,61 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <Microsoft.Build.BackEnd.Logging.LoggingService> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r1 single-def "impAppendStmt" -; V03 tmp2 [V03,T02] ( 3, 6 ) int -> r4 "Inlining Arg"
+; V02 tmp1 [V02,T02] ( 2, 4 ) byref -> r3 single-def "impAppendStmt" +; V03 tmp2 [V03,T01] ( 3, 6 ) int -> r0 "Inlining Arg"
; ; Lcl frame size = 4 G_M35322_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M35322_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M35322_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- add r1, r0, 120 - ; byrRegs +[r1]
+ add r3, r0, 120 + ; byrRegs +[r3]
ldr r0, [r0+0x74] ; gcrRegs -[r0]
- adds r4, r0, 2
+ adds r0, r0, 2 + dmb 15 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M35322_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz + ldrex lr, [r3] + add r2, lr, r0 + strex r1, r2, [r3]
cmp r1, 0
- beq SHORT G_M35322_IG04 - mov r0, r1 - ; byrRegs +[r0] - mov r1, r4 - ; byrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - adds r0, r0, r4 - ;; size=28 bbWeight=1 PerfScore 11.00 -G_M35322_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M35322_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ bne SHORT G_M35322_IG03 + dmb 15 + add r0, lr + ;; size=22 bbWeight=1 PerfScore 7.00 +G_M35322_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 54, prolog size 8, PerfScore 14.00, instruction count 19, allocated bytes for code 54 (MethodHash=8e0f7605) for method Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (FullOpts)
+; Total bytes of code 38, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 38 (MethodHash=8e0f7605) for method Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (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 : 27 (0x0001b) Actual length = 54 (0x000036) - ---- 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 : 19 (0x00013) Actual length = 38 (0x000026) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+18 (+21.43%) : 181374.dasm - System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)

@@ -5,88 +5,94 @@ ; r11 based frame ; fully interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 4 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T02] ( 6, 11 ) byref -> r4 this single-def -; V01 arg1 [V01,T05] ( 4, 6.50) int -> r5 single-def -; V02 arg2 [V02,T08] ( 3, 3 ) ubyte -> r2 single-def
+; V00 this [V00,T02] ( 6, 11 ) byref -> r0 this single-def +; V01 arg1 [V01,T05] ( 4, 6.50) int -> r1 single-def +; V02 arg2 [V02,T06] ( 3, 3 ) ubyte -> r2 single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T10] ( 2, 2 ) byref -> r0 single-def "Inlining Arg" -; V05 tmp2 [V05,T00] ( 5, 16.50) int -> r6 "Inline stloc first use temp" -; V06 tmp3 [V06,T06] ( 2, 8 ) int -> r1 "Inline stloc first use temp" -; V07 tmp4 [V07,T03] ( 3, 12 ) int -> r0 "Inline stloc first use temp" -; V08 tmp5 [V08,T11] ( 2, 2 ) byref -> r0 single-def "Inlining Arg" -; V09 tmp6 [V09,T01] ( 5, 16.50) int -> r6 "Inline stloc first use temp"
+; V04 tmp1 [V04,T08] ( 2, 2 ) byref -> r3 single-def "Inlining Arg" +; V05 tmp2 [V05,T00] ( 5, 16.50) int -> r3 "Inline stloc first use temp" +;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V07 tmp4 [V07,T03] ( 3, 12 ) int -> r12 "Inline stloc first use temp" +; V08 tmp5 [V08,T09] ( 2, 2 ) byref -> r3 single-def "Inlining Arg" +; V09 tmp6 [V09,T01] ( 5, 16.50) int -> r3 "Inline stloc first use temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V11 tmp8 [V11,T07] ( 2, 8 ) int -> r1 "Inline stloc first use temp" -; V12 tmp9 [V12,T04] ( 3, 12 ) int -> r0 "Inline stloc first use temp" -; V13 cse0 [V13,T09] ( 2, 4.50) int -> r5 hoist "CSE - aggressive"
+;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V12 tmp9 [V12,T04] ( 3, 12 ) int -> r12 "Inline stloc first use temp" +; V13 cse0 [V13,T07] ( 2, 4.50) int -> r2 hoist "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M16025_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16 - mov r4, r0 - ; byrRegs +[r4] - mov r5, r1 - ;; size=12 bbWeight=1 PerfScore 4.00 -G_M16025_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - uxtb r0, r2 - cmp r0, 0 - beq SHORT G_M16025_IG06
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M16025_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ; byrRegs +[r0] + uxtb r3, r2 + cmp r3, 0 + beq SHORT G_M16025_IG08
;; size=6 bbWeight=1 PerfScore 3.00
-G_M16025_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - mov r0, r4 - ; byrRegs +[r0] - ldr r6, [r0]
+G_M16025_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + mov r3, r0 + ; byrRegs +[r3] + ldr r3, [r3] + ; byrRegs -[r3]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M16025_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - ; byrRegs -[r0] - orr r1, r6, r5 - mov r0, r4 - ; byrRegs +[r0] - mov r2, r6 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, r6 - beq SHORT G_M16025_IG05 - mov r6, r0
+G_M16025_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + orr r2, r3, r1 + dmb 15 + ;; size=8 bbWeight=4 PerfScore 8.00 +G_M16025_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r12, [r0] + cmp r12, r3 + bne SHORT G_M16025_IG06 + strex lr, r2, [r0] + cmp lr, 0 + bne SHORT G_M16025_IG05 + ;; size=18 bbWeight=4 PerfScore 24.00 +G_M16025_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + dmb 15 + cmp r12, r3 + beq SHORT G_M16025_IG07 + mov r3, r12
b SHORT G_M16025_IG04
- ;; size=26 bbWeight=4 PerfScore 40.00 -G_M16025_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r4] - pop {r3,r4,r5,r6,r11,pc}
+ ;; size=12 bbWeight=4 PerfScore 20.00 +G_M16025_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[r0] + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-G_M16025_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref - ; byrRegs +[r4] - mov r0, r4
+G_M16025_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
; byrRegs +[r0]
- ldr r6, [r0] - mvns r5, r5
+ mov r3, r0 + ; byrRegs +[r3] + ldr r3, [r3] + ; byrRegs -[r3] + mvns r2, r1
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M16025_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - ; byrRegs -[r0] - and r1, r5, r6 - mov r0, r4 - ; byrRegs +[r0] - mov r2, r6 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, r6 - beq SHORT G_M16025_IG05 - mov r6, r0 - b SHORT G_M16025_IG07 - ;; size=26 bbWeight=4 PerfScore 40.00
+G_M16025_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + and r1, r2, r3 + dmb 15 + ;; size=8 bbWeight=4 PerfScore 8.00 +G_M16025_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r12, [r0] + cmp r12, r3 + bne SHORT G_M16025_IG11 + strex lr, r1, [r0] + cmp lr, 0 + bne SHORT G_M16025_IG10 + ;; size=18 bbWeight=4 PerfScore 24.00 +G_M16025_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + dmb 15 + cmp r12, r3 + beq SHORT G_M16025_IG07 + mov r3, r12 + b SHORT G_M16025_IG09 + ;; size=12 bbWeight=4 PerfScore 20.00
-; Total bytes of code 84, prolog size 12, PerfScore 90.50, instruction count 33, allocated bytes for code 84 (MethodHash=382bc166) for method System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)
+; Total bytes of code 102, prolog size 6, PerfScore 112.50, instruction count 37, allocated bytes for code 102 (MethodHash=382bc166) for method System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)
; ============================================================ Unwind Info: @@ -98,7 +104,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 51 (0x00033) Actual length = 102 (0x000066)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -106,7 +112,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+12 (+35.29%) : 87903.dasm - System.Data.DataRelationCollection:.ctor():this (FullOpts)

@@ -5,37 +5,42 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r4 this class-hnd single-def <System.Data.DataRelationCollection>
+; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Data.DataRelationCollection>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M34636_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r4,lr} - mov r4, r0 - ; gcrRegs +[r4] - ;; size=4 bbWeight=1 PerfScore 2.00 -G_M34636_IG02: ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref - movs r0, 1 - str r0, [r4+0x10] - movw r0, 0xd1ff - movt r0, 0xd1ff - movs r1, 1
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M34636_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref + ; gcrRegs +[r0] + movs r3, 1 + str r3, [r0+0x10]
movw r3, 0xd1ff movt r3, 0xd1ff
- blx r3 // <unknown method> - ; gcr arg pop 0 - adds r3, r0, 1 - str r3, [r4+0x14] - ;; size=28 bbWeight=1 PerfScore 10.00 -G_M34636_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r4,pc}
+ dmb 15 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M34636_IG03: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref, isz + ; byrRegs +[r3] + ldrex lr, [r3] + add r2, lr, 1 + strex r1, r2, [r3] + cmp r1, 0 + bne SHORT G_M34636_IG03 + dmb 15 + add r3, lr, 1 + ; byrRegs -[r3] + str r3, [r0+0x14] + ;; size=26 bbWeight=1 PerfScore 8.00 +G_M34636_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc}
;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 34, prolog size 2, PerfScore 13.00, instruction count 13, allocated bytes for code 34 (MethodHash=9fa878b3) for method System.Data.DataRelationCollection:.ctor():this (FullOpts)
+; Total bytes of code 46, prolog size 2, PerfScore 15.00, instruction count 15, allocated bytes for code 46 (MethodHash=9fa878b3) for method System.Data.DataRelationCollection:.ctor():this (FullOpts)
; ============================================================ Unwind Info: @@ -47,12 +52,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- D4 pop {r4,lr} ; opsize 16 - FF end
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+12 (+35.29%) : 21960.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)

@@ -2,10 +2,10 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def @@ -13,40 +13,44 @@ ; V02 arg2 [V02 ] ( 4, 4 ) struct ( 4) [sp+0x0C] single-def <System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 4) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks>
-;* V05 tmp2 [V05 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -;* V06 tmp3 [V06 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V07 tmp4 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V11 tmp8 [V11,T01] ( 4, 4 ) int -> [sp+0x08] do-not-enreg[] single-def "field V01._data (fldOffset=0x0)" P-DEP -; V12 tmp9 [V12,T02] ( 4, 4 ) int -> [sp+0x0C] do-not-enreg[] single-def "field V02._data (fldOffset=0x0)" P-DEP -; V13 tmp10 [V13,T03] ( 2, 2 ) int -> r0 "field V04._data (fldOffset=0x0)" P-INDEP
+; V05 tmp2 [V05,T03] ( 2, 4 ) int -> r0 "Inlining Arg" +; V06 tmp3 [V06,T01] ( 4, 4 ) int -> [sp+0x08] do-not-enreg[] single-def "field V01._data (fldOffset=0x0)" P-DEP +; V07 tmp4 [V07,T02] ( 4, 4 ) int -> [sp+0x0C] do-not-enreg[] single-def "field V02._data (fldOffset=0x0)" P-DEP +;* V08 tmp5 [V08 ] ( 0, 0 ) int -> zero-ref "field V04._data (fldOffset=0x0)" P-INDEP
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M62777_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2}
- push {r11,lr} - mov r11, sp - ;; size=8 bbWeight=1 PerfScore 3.00
+ push {r3,lr} + ;; size=4 bbWeight=1 PerfScore 2.00
G_M62777_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref ; byrRegs +[r0]
- ldrsb r1, [r0] - ldr r1, [sp+0x08]
+ ldrsb r3, [r0] + ldr r3, [sp+0x08]
ldr r2, [sp+0x0C]
- movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method>
+ dmb 15 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M62777_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex lr, [r0] + cmp lr, r2 + bne SHORT G_M62777_IG04 + strex r1, r3, [r0] + cmp r1, 0 + bne SHORT G_M62777_IG03 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M62777_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + dmb 15 + mov r0, lr
; byrRegs -[r0]
- ;; size=18 bbWeight=1 PerfScore 6.00 -G_M62777_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,lr}
+ ;; size=6 bbWeight=1 PerfScore 2.00 +G_M62777_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r3,lr}
add sp, 8 bx lr ;; size=8 bbWeight=1 PerfScore 3.00
-; Total bytes of code 34, prolog size 8, PerfScore 12.00, instruction count 12, allocated bytes for code 34 (MethodHash=dde70ac6) for method System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)
+; Total bytes of code 46, prolog size 4, PerfScore 17.00, instruction count 17, allocated bytes for code 46 (MethodHash=dde70ac6) for method System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)
; ============================================================ Unwind Info: @@ -58,18 +62,18 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 17 (0x00011) Actual length = 34 (0x000022)
+ Function Length : 23 (0x00017) Actual length = 46 (0x00002e)
---- 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 : 5 (0x05) ---- Unwind codes ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
EC 06 pop {r1,r2} ; opsize 16 FF end ---- Epilog start at index 5 ----
- A8 00 pop {r11,lr} ; opsize 32
+ A0 08 pop {r3,lr} ; opsize 32
02 add sp, sp, #8 ; opsize 16 FD end + nop ; opsize 16 FF end

libraries_tests.run.linux.arm.Release.mch

-16 (-36.36%) : 39610.dasm - System.Threading.Interlocked:Decrement(byref):int (Instrumented Tier1)

@@ -2,64 +2,55 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Instrumented Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M7936_IG04 - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - subs r0, r0, 1 - ;; size=20 bbWeight=1 PerfScore 7.00 -G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M7936_IG03 + dmb 15 + subs r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M7936_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 6, PerfScore 10.00, instruction count 15, allocated bytes for code 44 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Instrumented Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Instrumented Tier1)
; ============================================================ 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 : 22 (0x00016) Actual length = 44 (0x00002c) - ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-16 (-36.36%) : 54178.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)

@@ -2,64 +2,55 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; Tier1 code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 4, 4 ) byref -> r0 single-def
+; V00 arg0 [V00,T00] ( 3, 3 ) byref -> r0 single-def
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M7936_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M7936_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M7936_IG04 - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - subs r0, r0, 1 - ;; size=20 bbWeight=1 PerfScore 7.00 -G_M7936_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc}
+ dmb 15
;; size=4 bbWeight=1 PerfScore 1.00
-G_M7936_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+G_M7936_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + subs r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M7936_IG03 + dmb 15 + subs r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M7936_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 44, prolog size 6, PerfScore 10.00, instruction count 15, allocated bytes for code 44 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
+; Total bytes of code 28, prolog size 2, PerfScore 10.00, instruction count 10, allocated bytes for code 28 (MethodHash=b7f6e0ff) for method System.Threading.Interlocked:Decrement(byref):int (Tier1)
; ============================================================ 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 : 22 (0x00016) Actual length = 44 (0x00002c) - ---- 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 : 14 (0x0000e) Actual length = 28 (0x00001c) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-26 (-34.21%) : 75345.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)

@@ -3,69 +3,53 @@ ; Tier1 code ; optimized code ; optimized using Dynamic PGO
-; r11 based frame
+; sp based frame
; fully interruptible ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 374
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> -; V01 loc0 [V01,T01] ( 4, 3 ) byref -> r4 single-def
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <System.Threading.CancellationTokenSource+Registrations> +; V01 loc0 [V01,T01] ( 3, 2 ) byref -> r0 single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 4
-G_M3949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+G_M3949_IG01: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0] - add r4, r0, 40 - ; byrRegs +[r4] - cmp r4, 0 - beq SHORT G_M3949_IG04 - mov r0, r4
+ adds r0, 40
; gcrRegs -[r0] ; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, 0
+ movs r3, 1 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M3949_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M3949_IG03 + dmb 15 + cmp r1, 0
bne SHORT G_M3949_IG05
- ;; size=30 bbWeight=1 PerfScore 11.00 -G_M3949_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M3949_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[r4]
+ ;; size=20 bbWeight=1 PerfScore 7.00 +G_M3949_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3949_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3]
- blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M3949_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref - ; byrRegs +[r4] - mov r0, r4 - ; byrRegs +[r0] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
G_M3949_IG06: ; bbWeight=0, epilog, nogc, extend add sp, 4
- pop {r4,r11,lr}
+ pop lr
bx r3 // <unknown method> ; gcr arg pop 0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 14.00, instruction count 26, allocated bytes for code 76 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
+; Total bytes of code 50, prolog size 2, PerfScore 12.00, instruction count 18, allocated bytes for code 50 (MethodHash=522df092) for method System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
; ============================================================ Unwind Info: @@ -77,7 +61,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -89,11 +73,11 @@ Unwind Info: Epilog Start Index : 3 (0x03) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end ---- Epilog start at index 3 ---- 01 add sp, sp, #4 ; opsize 16
- A8 10 pop {r4,r11,lr} ; opsize 32
+ A0 00 pop {lr} ; opsize 32
FF end FF end

+10 (+38.46%) : 30636.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)

@@ -5,7 +5,7 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -18,18 +18,24 @@ G_M28066_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M28066_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; gcr arg pop 0 - adds r0, r0, 1 - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M28066_IG03: ; bbWeight=1, epilog, nogc, extend
+ dmb 15 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M28066_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ; byrRegs +[r0] + ldrex r1, [r0] + adds r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M28066_IG03 + dmb 15 + adds r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M28066_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 26, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 26 (MethodHash=3e0f925d) for method Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
+; Total bytes of code 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (MethodHash=3e0f925d) for method Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
; ============================================================ Unwind Info: @@ -41,7 +47,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
+ Function Length : 18 (0x00012) Actual length = 36 (0x000024)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+10 (+38.46%) : 162592.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)

@@ -5,7 +5,7 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -18,18 +18,24 @@ G_M28066_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M28066_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; gcr arg pop 0 - adds r0, r0, 1 - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M28066_IG03: ; bbWeight=1, epilog, nogc, extend
+ dmb 15 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M28066_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ; byrRegs +[r0] + ldrex r1, [r0] + adds r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M28066_IG03 + dmb 15 + adds r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M28066_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 26, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 26 (MethodHash=3e0f925d) for method Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
+; Total bytes of code 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (MethodHash=3e0f925d) for method Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
; ============================================================ Unwind Info: @@ -41,7 +47,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
+ Function Length : 18 (0x00012) Actual length = 36 (0x000024)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

+10 (+38.46%) : 338460.dasm - System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)

@@ -5,7 +5,7 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -18,18 +18,24 @@ G_M41951_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M41951_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movw r0, 0xd1ff movt r0, 0xd1ff
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; gcr arg pop 0 - adds r0, r0, 1 - ;; size=22 bbWeight=1 PerfScore 7.00 -G_M41951_IG03: ; bbWeight=1, epilog, nogc, extend
+ dmb 15 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M41951_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ; byrRegs +[r0] + ldrex r1, [r0] + adds r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M41951_IG03 + dmb 15 + adds r0, r1, 1 + ; byrRegs -[r0] + ;; size=20 bbWeight=1 PerfScore 7.00 +G_M41951_IG04: ; bbWeight=1, epilog, nogc, extend
pop {r3,pc} ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 26, prolog size 2, PerfScore 9.00, instruction count 9, allocated bytes for code 26 (MethodHash=f9f95c20) for method System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)
+; Total bytes of code 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (MethodHash=f9f95c20) for method System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)
; ============================================================ Unwind Info: @@ -41,7 +47,7 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 13 (0x0000d) Actual length = 26 (0x00001a)
+ Function Length : 18 (0x00012) Actual length = 36 (0x000024)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-24 (-31.58%) : 24037.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; fully interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext> -; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r5 class-hnd single-def <System.Threading.SendOrPostCallback> -; V02 arg2 [V02,T03] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> r0 this class-hnd single-def <System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Threading.SendOrPostCallback> +; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r2 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V04 tmp1 [V04 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M3300_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16 - mov r4, r0 - ; gcrRegs +[r4] - mov r5, r1 - ; gcrRegs +[r5] - mov r6, r2 - ; gcrRegs +[r6] - ;; size=14 bbWeight=1 PerfScore 5.00 -G_M3300_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ldrsb r0, [r4] - add r0, r4, 8 - ; byrRegs +[r0] - cmp r0, 0 - beq SHORT G_M3300_IG04 - movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - mov r0, r4 - ; gcrRegs +[r0] - mov r1, r5 - ; gcrRegs +[r1] - mov r2, r6 - ; gcrRegs +[r2]
+ push {r4,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3300_IG02: ; bbWeight=1, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref + ; gcrRegs +[r0-r2] + ldrsb r3, [r0] + add r3, r0, 8 + ; byrRegs +[r3] + dmb 15 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M3300_IG03: ; bbWeight=1, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0008 {r3}, byref, isz + ldrex r4, [r3] + add lr, r4, 1 + strex r12, lr, [r3] + cmp r12, 0 + bne SHORT G_M3300_IG03 + dmb 15
movw r3, 0xd1ff
+ ; byrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3]
- ;; size=40 bbWeight=1 PerfScore 14.00 -G_M3300_IG03: ; bbWeight=1, epilog, nogc, extend - add sp, 4 - pop {r4,r5,r6,r11,lr}
+ ;; size=32 bbWeight=1 PerfScore 9.00 +G_M3300_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r4,lr}
bx r3 // System.Threading.SynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this ; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 3.00 -G_M3300_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0-r2 r4-r6] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 14, PerfScore 22.00, instruction count 27, allocated bytes for code 76 (MethodHash=630ef31b) for method System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
+; Total bytes of code 52, prolog size 2, PerfScore 15.00, instruction count 15, allocated bytes for code 52 (MethodHash=630ef31b) for method System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
; ============================================================ Unwind Info: @@ -76,18 +56,19 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
---- 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 : 3 (0x03)
+ Epilog Start Index : 2 (0x02)
---- Unwind codes ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ D4 pop {r4,lr} ; opsize 16 + FF end + ---- Epilog start at index 2 ---- + A0 10 pop {r4,lr} ; opsize 32 + FF end
FF end
- ---- Epilog start at index 3 ---- - 01 add sp, sp, #4 ; opsize 16 - A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end FF end

-24 (-31.58%) : 300682.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)

@@ -2,69 +2,49 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; fully interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 5, 5 ) ref -> r4 this class-hnd single-def <System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext> -; V01 arg1 [V01,T02] ( 3, 3 ) ref -> r5 class-hnd single-def <System.Threading.SendOrPostCallback> -; V02 arg2 [V02,T03] ( 3, 3 ) ref -> r6 class-hnd single-def <System.Object>
+; V00 this [V00,T00] ( 5, 5 ) ref -> r0 this class-hnd single-def <System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext> +; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r1 class-hnd single-def <System.Threading.SendOrPostCallback> +; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r2 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V04 tmp1 [V04 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M3300_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16 - mov r4, r0 - ; gcrRegs +[r4] - mov r5, r1 - ; gcrRegs +[r5] - mov r6, r2 - ; gcrRegs +[r6] - ;; size=14 bbWeight=1 PerfScore 5.00 -G_M3300_IG02: ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz - ldrsb r0, [r4] - add r0, r4, 8 - ; byrRegs +[r0] - cmp r0, 0 - beq SHORT G_M3300_IG04 - movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - mov r0, r4 - ; gcrRegs +[r0] - mov r1, r5 - ; gcrRegs +[r1] - mov r2, r6 - ; gcrRegs +[r2]
+ push {r4,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M3300_IG02: ; bbWeight=1, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref + ; gcrRegs +[r0-r2] + ldrsb r3, [r0] + add r3, r0, 8 + ; byrRegs +[r3] + dmb 15 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M3300_IG03: ; bbWeight=1, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0008 {r3}, byref, isz + ldrex r4, [r3] + add lr, r4, 1 + strex r12, lr, [r3] + cmp r12, 0 + bne SHORT G_M3300_IG03 + dmb 15
movw r3, 0xd1ff
+ ; byrRegs -[r3]
movt r3, 0xd1ff ldr r3, [r3]
- ;; size=40 bbWeight=1 PerfScore 14.00 -G_M3300_IG03: ; bbWeight=1, epilog, nogc, extend - add sp, 4 - pop {r4,r5,r6,r11,lr}
+ ;; size=32 bbWeight=1 PerfScore 9.00 +G_M3300_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r4,lr}
bx r3 // System.Threading.SynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this ; gcr arg pop 0
- ;; size=8 bbWeight=1 PerfScore 3.00 -G_M3300_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[r0-r2 r4-r6] - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=1 PerfScore 2.00
-; Total bytes of code 76, prolog size 14, PerfScore 22.00, instruction count 27, allocated bytes for code 76 (MethodHash=630ef31b) for method System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
+; Total bytes of code 52, prolog size 2, PerfScore 15.00, instruction count 15, allocated bytes for code 52 (MethodHash=630ef31b) for method System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
; ============================================================ Unwind Info: @@ -76,18 +56,19 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 38 (0x00026) Actual length = 76 (0x00004c)
+ Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
---- 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 : 3 (0x03)
+ Epilog Start Index : 2 (0x02)
---- Unwind codes ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ D4 pop {r4,lr} ; opsize 16 + FF end + ---- Epilog start at index 2 ---- + A0 10 pop {r4,lr} ; opsize 32 + FF end
FF end
- ---- Epilog start at index 3 ---- - 01 add sp, sp, #4 ; opsize 16 - A8 70 pop {r4,r5,r6,r11,lr} ; opsize 32
FF end FF end

-16 (-30.77%) : 297901.dasm - System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):int:this (FullOpts)

@@ -2,71 +2,61 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Threading.RateLimiting.Tests.TestEquality>
-; V01 arg1 [V01,T02] ( 3, 3 ) int -> r4 ld-addr-op single-def
+; V01 arg1 [V01,T01] ( 3, 3 ) int -> r1 ld-addr-op single-def
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; ; Lcl frame size = 4 G_M17353_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - mov r4, r1 - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M17353_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M17353_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 8 ; gcrRegs -[r0] ; byrRegs +[r0]
- cmp r0, 0 - beq SHORT G_M17353_IG04 - movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method>
+ dmb 15 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M17353_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex lr, [r0] + add r3, lr, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M17353_IG03 + dmb 15 + mov r0, r1
; byrRegs -[r0]
- mov r0, r4 - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M17353_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r3,r4,r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M17353_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=1 PerfScore 7.00 +G_M17353_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 52, prolog size 8, PerfScore 13.00, instruction count 18, allocated bytes for code 52 (MethodHash=81b8bc36) for method System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):int:this (FullOpts)
+; Total bytes of code 36, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 36 (MethodHash=81b8bc36) for method System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):int:this (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 : 26 (0x0001a) Actual length = 52 (0x000034) - ---- 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 : 18 (0x00012) Actual length = 36 (0x000024) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+48 (+20.00%) : 24134.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan1[ubyte],System.ReadOnlySpan1[ubyte],System.Span`1[ubyte]):this (FullOpts)

@@ -5,40 +5,40 @@ ; r11 based frame ; fully interruptible ; No matching PGO data
-; 2 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
+; 2 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T00] ( 8, 8 ) ref -> [sp+0x1C] this class-hnd EH-live single-def <System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged> -; V01 arg1 [V01,T02] ( 4, 4 ) struct ( 8) [sp+0x2C] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> -; V02 arg2 [V02,T04] ( 3, 3 ) struct ( 8) [sp+0x34] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ubyte]> -; V03 arg3 [V03,T10] ( 1, 1 ) struct ( 8) [sp+0x3C] do-not-enreg[S] single-def <System.Span`1[ubyte]> -; V04 loc0 [V04,T05] ( 4, 3.81) ref -> r0 class-hnd single-def <ubyte[]>
+; V00 this [V00,T00] ( 11, 6 ) ref -> [sp+0x1C] this class-hnd EH-live single-def <System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged> +; V01 arg1 [V01,T01] ( 4, 4 ) struct ( 8) [sp+0x34] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> +; V02 arg2 [V02,T02] ( 3, 3 ) struct ( 8) [sp+0x3C] do-not-enreg[S] single-def <System.ReadOnlySpan`1[ubyte]> +; V03 arg3 [V03,T10] ( 1, 1 ) struct ( 8) [sp+0x44] do-not-enreg[S] single-def <System.Span`1[ubyte]> +; V04 loc0 [V04,T04] ( 4, 2.90) ref -> r0 class-hnd single-def <ubyte[]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (20) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]> ;* V07 tmp2 [V07 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V09 tmp4 [V09,T03] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+; V08 tmp3 [V08,T05] ( 4, 2 ) int -> r4 "Inline stloc first use temp" +;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V11 tmp6 [V11,T01] ( 4, 8.00) ref -> r0 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V11 tmp6 [V11,T03] ( 8, 4.00) ref -> r5 class-hnd "Inlining Arg" <ubyte[]>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct ( 8) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]> ;* V13 tmp8 [V13 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V14 tmp9 [V14 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x4)" P-INDEP
-; V15 tmp10 [V15,T06] ( 3, 2 ) byref -> registers "field V07._reference (fldOffset=0x0)" P-INDEP -; V16 tmp11 [V16,T08] ( 3, 2 ) int -> registers "field V07._length (fldOffset=0x4)" P-INDEP
+; V15 tmp10 [V15,T06] ( 3, 1.50) byref -> registers "field V07._reference (fldOffset=0x0)" P-INDEP +; V16 tmp11 [V16,T07] ( 3, 1.50) int -> registers "field V07._length (fldOffset=0x4)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP ;* V18 tmp13 [V18 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x4)" P-INDEP
-; V19 tmp14 [V19,T07] ( 3, 2 ) byref -> registers "field V12._reference (fldOffset=0x0)" P-INDEP -; V20 tmp15 [V20,T09] ( 3, 2 ) int -> registers "field V12._length (fldOffset=0x4)" P-INDEP
+; V19 tmp14 [V19,T08] ( 6, 1 ) byref -> r0 "field V12._reference (fldOffset=0x0)" P-INDEP +; V20 tmp15 [V20,T09] ( 6, 1 ) int -> r1 "field V12._length (fldOffset=0x4)" P-INDEP
; V21 PSPSym [V21,T11] ( 1, 1 ) int -> [sp+0x20] do-not-enreg[V] "PSPSym" ; ; Lcl frame size = 36 G_M63238_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push {r1,r2,r3}
- push {r11,lr}
+ push {r4,r5,r11,lr}
sub sp, 36
- add r11, sp, 36 - add r1, sp, 56
+ add r11, sp, 44 + add r1, sp, 64
str r1, [sp+0x20] str r0, [sp+0x1C] ; GC ptr vars +{V00} @@ -55,7 +55,7 @@ G_M63238_IG03: ; bbWeight=1.00, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b cmp r0, 0 bne SHORT G_M63238_IG05 ;; size=4 bbWeight=1.00 PerfScore 2.00
-G_M63238_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M63238_IG04: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r0] movs r0, 0 movs r1, 0 @@ -63,8 +63,8 @@ G_M63238_IG04: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov r1, r0 ; byrRegs +[r1] b SHORT G_M63238_IG06
- ;; size=10 bbWeight=0.10 PerfScore 0.48 -G_M63238_IG05: ; bbWeight=0.90, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+ ;; size=10 bbWeight=0.05 PerfScore 0.24 +G_M63238_IG05: ; bbWeight=0.45, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0] ; byrRegs -[r1] add r1, r0, 8 @@ -72,29 +72,29 @@ G_M63238_IG05: ; bbWeight=0.90, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, b ldr r0, [r0+0x04] ; gcrRegs -[r0] mov r3, r0
- ;; size=8 bbWeight=0.90 PerfScore 2.71
+ ;; size=8 bbWeight=0.45 PerfScore 1.35
G_M63238_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
- ldr r0, [sp+0x34]
+ ldr r0, [sp+0x3C]
; byrRegs +[r0] str r0, [sp+0x04] ; byr arg write
- ldr r0, [sp+0x38]
+ ldr r0, [sp+0x40]
; byrRegs -[r0] str r0, [sp+0x08]
- ldr r0, [sp+0x3C]
+ ldr r0, [sp+0x44]
; byrRegs +[r0] str r0, [sp+0x0C] ; byr arg write
- ldr r0, [sp+0x40]
+ ldr r0, [sp+0x48]
; byrRegs -[r0] str r0, [sp+0x10] mov r0, r1 ; byrRegs +[r0] mov r1, r3 ; byrRegs -[r1]
- ldr r3, [sp+0x2C]
+ ldr r3, [sp+0x34]
; byrRegs +[r3]
- ldr r2, [sp+0x30]
+ ldr r2, [sp+0x38]
str r2, [sp] ldr lr, [sp+0x1C] // [V00 this] ; gcrRegs +[lr] @@ -109,87 +109,104 @@ G_M63238_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byre ; gcr arg pop 0 ;; size=48 bbWeight=1 PerfScore 19.00 G_M63238_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- bl G_M63238_IG10 - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M63238_IG08: ; bbWeight=1, nogc, extend - nop - ;; size=2 bbWeight=1 PerfScore 1.00 -G_M63238_IG09: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
+ ldr lr, [sp+0x1C] // [V00 this] + ; gcrRegs +[lr] + add r0, lr, 8 + ; byrRegs +[r0] + dmb 15 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M63238_IG08: ; bbWeight=1, gcrefRegs=4000 {lr}, byrefRegs=0001 {r0}, byref, isz + ldrex r2, [r0] + subs r3, r2, 1 + strex r1, r3, [r0] + cmp r1, 0 + bne SHORT G_M63238_IG08 + dmb 15 + subs r4, r2, 1 + cmp r4, 0 + bne SHORT G_M63238_IG12 + ;; size=24 bbWeight=1 PerfScore 9.00 +G_M63238_IG09: ; bbWeight=0.50, gcrefRegs=4000 {lr}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[r0] + ldr r5, [lr+0x04] + ; gcrRegs +[r5] + cmp r5, 0 + beq SHORT G_M63238_IG13 + ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M63238_IG10: ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref + ; gcrRegs -[lr] + add r0, r5, 8 + ; byrRegs +[r0] + ldr r1, [r5+0x04] + ;; size=6 bbWeight=0.50 PerfScore 1.00 +G_M63238_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + ; gcrRegs -[r5] + movw r3, 0xd1ff + movt r3, 0xd1ff + ldr r3, [r3] + blx r3 // <unknown method> + ; byrRegs -[r0] + ; gcr arg pop 0 + movs r0, 0 + ldr lr, [sp+0x1C] + ; gcrRegs +[lr] + str r0, [lr+0x04] + ;; size=22 bbWeight=0.50 PerfScore 3.50 +G_M63238_IG12: ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc + ; gcrRegs -[lr]
; GC ptr vars -{V00} add sp, 36
- pop {r11,lr}
+ pop {r4,r5,r11,lr}
add sp, 12 bx lr ;; size=10 bbWeight=1 PerfScore 4.00
-G_M63238_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc - push {r11,lr}
+G_M63238_IG13: ; bbWeight=0.00, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars +{V00} + movs r0, 0 + movs r1, 0 + b SHORT G_M63238_IG11 + ;; size=6 bbWeight=0.00 PerfScore 0.00 +G_M63238_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc + push {r4,r5,r11,lr}
sub sp, 40 add r3, r11, 20 str r3, [sp+0x18]
- ;; size=12 bbWeight=1 PerfScore 4.00 -G_M63238_IG11: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; GC ptr vars +{V00} - ldr lr, [r11-0x08] // [V00 this]
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M63238_IG15: ; bbWeight=0, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ldr lr, [r11-0x10] // [V00 this]
; gcrRegs +[lr] ldrsb r0, [lr] add r0, lr, 8 ; byrRegs +[r0]
- cmp r0, 0 - bne SHORT G_M63238_IG13 - ;; size=16 bbWeight=1 PerfScore 5.00 -G_M63238_IG12: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[lr] - ; byrRegs -[r0] - ; GC ptr vars -{V00} - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00 -G_M63238_IG13: ; bbWeight=1, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz - ; byrRegs +[r0] - ; GC ptr vars +{V00} - mov r1, -1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - subs r0, r0, 1 - cmp r0, 0
+ dmb 15 + ;; size=16 bbWeight=0 PerfScore 0.00 +G_M63238_IG16: ; bbWeight=0, gcrefRegs=4000 {lr}, byrefRegs=0001 {r0}, byref, isz + ldrex r2, [r0] + subs r3, r2, 1 + strex r1, r3, [r0] + cmp r1, 0 + bne SHORT G_M63238_IG16 + dmb 15 + subs r4, r2, 1 + cmp r4, 0 + bne SHORT G_M63238_IG19 + ldr r5, [lr+0x04] + ; gcrRegs +[r5] + cmp r5, 0
bne SHORT G_M63238_IG17
- ldr lr, [r11-0x08] - ; gcrRegs +[lr] - ldr r0, [lr+0x04] - ; gcrRegs +[r0] - cmp r0, 0 - bne SHORT G_M63238_IG15 - ;; size=32 bbWeight=1 PerfScore 11.00 -G_M63238_IG14: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r0 lr]
...

+14 (+87.50%) : 303774.dasm - System.Threading.Tests.InterlockedTests+<>c:b_240():System.Object:this (FullOpts)

@@ -5,7 +5,6 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tests.InterlockedTests+<>c> @@ -13,19 +12,31 @@ ; ; Lcl frame size = 4
-G_M26382_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M26382_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00 -G_M26382_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M26382_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 0 + movs r3, 0 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M26382_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ; byrRegs +[r0] + ldrex r1, [r0] + ; gcrRegs +[r1] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M26382_IG03 + dmb 15 + mov r0, r1 + ; gcrRegs +[r0] + ; byrRegs -[r0] + ;; size=18 bbWeight=1 PerfScore 6.00 +G_M26382_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=ca9e98f1) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedExchange_Object>b__24_0():System.Object:this (FullOpts)
+; Total bytes of code 30, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 30 (MethodHash=ca9e98f1) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedExchange_Object>b__24_0():System.Object:this (FullOpts)
; ============================================================ Unwind Info: @@ -34,13 +45,13 @@ Unwind Info: Code Words : 1 Epilog Count : 0 F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010) - ---- Epilog scopes ---- - No epilogs
+ Function Length : 15 (0x0000f) Actual length = 30 (0x00001e) + --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16 FF end FF end

+16 (+100.00%) : 303789.dasm - System.Threading.Tests.InterlockedTests+<>c:b_380():System.Object:this (FullOpts)

@@ -5,7 +5,6 @@ ; sp based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Threading.Tests.InterlockedTests+<>c> @@ -13,19 +12,35 @@ ; ; Lcl frame size = 4
-G_M24868_IG01: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M24868_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push {r3,lr}
- ;; size=2 bbWeight=0 PerfScore 0.00 -G_M24868_IG02: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - ; gcr arg pop 0 - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ;; size=2 bbWeight=1 PerfScore 1.00 +G_M24868_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + movs r0, 0 + movs r3, 0 + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M24868_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ; byrRegs +[r0] + ldrex r1, [r0] + ; gcrRegs +[r1] + cbnz r1, SHORT G_M24868_IG04 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M24868_IG03 + ;; size=14 bbWeight=1 PerfScore 5.00 +G_M24868_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + ; gcrRegs -[r1] + dmb 15 + mov r0, r1 + ; gcrRegs +[r0] + ; byrRegs -[r0] + ;; size=6 bbWeight=1 PerfScore 2.00 +G_M24868_IG05: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 16, prolog size 2, PerfScore 0.00, instruction count 6, allocated bytes for code 16 (MethodHash=ccd39edb) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (FullOpts)
+; Total bytes of code 32, prolog size 2, PerfScore 12.00, instruction count 12, allocated bytes for code 32 (MethodHash=ccd39edb) for method System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (FullOpts)
; ============================================================ Unwind Info: @@ -34,13 +49,13 @@ Unwind Info: Code Words : 1 Epilog Count : 0 F bit : 0
- E bit : 0
+ E bit : 1
X bit : 0 Vers : 0
- Function Length : 8 (0x00008) Actual length = 16 (0x000010) - ---- Epilog scopes ---- - No epilogs
+ Function Length : 16 (0x00010) Actual length = 32 (0x000020) + --- One epilog, unwind codes at 0
---- Unwind codes ----
+ ---- Epilog start at index 0 ----
ED 08 pop {r3,lr} ; opsize 16 FF end FF end

realworld.run.linux.arm.checked.mch

-18 (-37.50%) : 16925.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)

@@ -2,70 +2,61 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 this [V00,T02] ( 3, 3 ) ref -> r0 this class-hnd single-def <SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]>
+; V00 this [V00,T00] ( 3, 3 ) ref -> r0 this class-hnd single-def <SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 3, 6 ) ref -> r0 class-hnd single-def "Inlining Arg" <<unknown class>> -; V03 tmp2 [V03,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
+; V02 tmp1 [V02,T01] ( 2, 4 ) ref -> r3 class-hnd single-def "Inlining Arg" <<unknown class>> +;* V03 tmp2 [V03 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M2256_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M2256_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M2256_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldr r0, [r0+0x04] - ldrsb r1, [r0] - adds r0, 8
+ ldr r3, [r0+0x04] + ; gcrRegs +[r3] + adds r3, 8 + ; gcrRegs -[r3] + ; byrRegs +[r3] + dmb 15 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M2256_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; gcrRegs -[r0]
- ; byrRegs +[r0] - cmp r0, 0 - beq SHORT G_M2256_IG04 - movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ;; size=24 bbWeight=1 PerfScore 9.00 -G_M2256_IG03: ; bbWeight=1, epilog, nogc, extend - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M2256_IG04: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ldrex r0, [r3] + adds r2, r0, 1 + strex r1, r2, [r3] + cmp r1, 0 + bne SHORT G_M2256_IG03 + dmb 15 + ;; size=18 bbWeight=1 PerfScore 6.00 +G_M2256_IG04: ; bbWeight=1, epilog, nogc, extend + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 48, prolog size 6, PerfScore 12.00, instruction count 17, allocated bytes for code 48 (MethodHash=e993f72f) for method SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)
+; Total bytes of code 30, prolog size 2, PerfScore 11.00, instruction count 11, allocated bytes for code 30 (MethodHash=e993f72f) for method SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (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 : 24 (0x00018) Actual length = 48 (0x000030) - ---- 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 : 15 (0x0000f) Actual length = 30 (0x00001e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-14 (-22.58%) : 25393.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)

@@ -2,81 +2,71 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 6, 4.50) ref -> r0 this class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 3 ) byref -> r1 single-def "impAppendStmt" -; V03 tmp2 [V03,T02] ( 2, 2 ) int -> r3 "Inlining Arg"
+; V02 tmp1 [V02,T01] ( 2, 2 ) byref -> r3 single-def "impAppendStmt" +; V03 tmp2 [V03,T02] ( 2, 2 ) int -> r2 "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M8978_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00
G_M8978_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[r0]
- ldrb r1, [r0+0x11] - cmp r1, 0 - bne SHORT G_M8978_IG04
+ ldrb r3, [r0+0x11] + cmp r3, 0 + bne SHORT G_M8978_IG05
;; size=6 bbWeight=1 PerfScore 3.00
-G_M8978_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz - movs r1, 1 - strb r1, [r0+0x11] - add r1, r0, 148 - ; byrRegs +[r1] - ldr r0, [r0+0x04] - ldr r0, [r0+0x04]
+G_M8978_IG03: ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref + movs r3, 1 + strb r3, [r0+0x11] + add r3, r0, 148 + ; byrRegs +[r3] + ldr r2, [r0+0x04] + ; gcrRegs +[r2] + ldr r2, [r2+0x04] + ; gcrRegs -[r2] + lsls r2, r2, 1 + dmb 15 + ;; size=18 bbWeight=0.50 PerfScore 3.50 +G_M8978_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
; gcrRegs -[r0]
- lsls r3, r0, 1 - cmp r1, 0 - beq SHORT G_M8978_IG05 - mov r0, r1 - ; byrRegs +[r0] - mov r1, r3 - ; byrRegs -[r1] - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ;; size=32 bbWeight=0.50 PerfScore 6.50 -G_M8978_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M8978_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+ ldrex lr, [r3] + add r1, lr, r2 + strex r0, r1, [r3] + cmp r0, 0 + bne SHORT G_M8978_IG04 + dmb 15 + ;; size=20 bbWeight=0.50 PerfScore 3.00 +G_M8978_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; byrRegs -[r3] + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 62, prolog size 6, PerfScore 12.50, instruction count 24, allocated bytes for code 62 (MethodHash=ffdcdced) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
+; Total bytes of code 48, prolog size 2, PerfScore 11.50, instruction count 18, allocated bytes for code 48 (MethodHash=ffdcdced) for method System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (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 : 31 (0x0001f) Actual length = 62 (0x00003e) - ---- 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 : 24 (0x00018) Actual length = 48 (0x000030) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

-12 (-20.69%) : 19709.dasm - System.Net.Http.HttpConnection:TryOwnReadAheadTaskCompletion():ubyte:this (FullOpts)

@@ -2,76 +2,68 @@ ; Emitting BLENDED_CODE for generic ARM - Unix ; FullOpts code ; optimized code
-; r11 based frame
+; sp based frame
; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) ref -> r0 this class-hnd single-def <System.Net.Http.HttpConnection> ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 3, 6 ) byref -> r0 single-def "Inlining Arg"
;
-; Lcl frame size = 0
+; Lcl frame size = 4
G_M56385_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r11,lr} - mov r11, sp - ;; size=6 bbWeight=1 PerfScore 2.00 -G_M56385_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+ push {r3,lr} + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M56385_IG02: ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
; gcrRegs +[r0]
- ldrsb r1, [r0]
+ ldrsb r3, [r0]
adds r0, 68 ; gcrRegs -[r0] ; byrRegs +[r0]
- cmp r0, 0
+ movs r3, 2 + dmb 15 + ;; size=12 bbWeight=1 PerfScore 4.00 +G_M56385_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + cmp r1, 1 + bne SHORT G_M56385_IG04 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M56385_IG03 + ;; size=16 bbWeight=1 PerfScore 6.00 +G_M56385_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + dmb 15 + cmp r1, 1
beq SHORT G_M56385_IG05
- movs r1, 2 - movs r2, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - cmp r0, 1 - beq SHORT G_M56385_IG03
movs r0, 0
- b SHORT G_M56385_IG04 - ;; size=32 bbWeight=1 PerfScore 13.00 -G_M56385_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r0] + b SHORT G_M56385_IG06 + ;; size=12 bbWeight=1 PerfScore 5.00 +G_M56385_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movs r0, 1 ;; size=2 bbWeight=1 PerfScore 1.00
-G_M56385_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - pop {r11,pc} - ;; size=4 bbWeight=1 PerfScore 1.00 -G_M56385_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - movw r3, 0xd1ff - movt r3, 0xd1ff - ldr r3, [r3] - blx r3 // System.ThrowHelper:ThrowNullReferenceException() - bkpt - ;; size=14 bbWeight=0 PerfScore 0.00
+G_M56385_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop {r3,pc} + ;; size=2 bbWeight=1 PerfScore 1.00
-; Total bytes of code 58, prolog size 6, PerfScore 17.00, instruction count 22, allocated bytes for code 58 (MethodHash=d5da23be) for method System.Net.Http.HttpConnection:TryOwnReadAheadTaskCompletion():ubyte:this (FullOpts)
+; Total bytes of code 46, prolog size 2, PerfScore 18.00, instruction count 18, allocated bytes for code 46 (MethodHash=d5da23be) for method System.Net.Http.HttpConnection:TryOwnReadAheadTaskCompletion():ubyte:this (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 : 29 (0x0001d) Actual length = 58 (0x00003a) - ---- 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 : 23 (0x00017) Actual length = 46 (0x00002e) + --- One epilog, unwind codes at 0
---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 00 pop {r11,lr} ; opsize 32
+ ED 08 pop {r3,lr} ; opsize 16
FF end FF end

+6 (+11.54%) : 23256.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)

@@ -5,57 +5,58 @@ ; r11 based frame ; fully interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ;
-; V00 arg0 [V00,T02] ( 4, 14 ) byref -> r4 single-def -; V01 arg1 [V01,T03] ( 3, 10 ) int -> r5 single-def -; V02 loc0 [V02,T00] ( 5, 32 ) int -> r6 -; V03 loc1 [V03,T01] ( 3, 20 ) int -> r1
+; V00 arg0 [V00,T02] ( 4, 14 ) byref -> r0 single-def +; V01 arg1 [V01,T03] ( 3, 10 ) int -> r1 single-def +; V02 loc0 [V02,T00] ( 5, 32 ) int -> r3 +; V03 loc1 [V03,T01] ( 3, 20 ) int -> r2
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M19701_IG01: ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push {r3,r4,r5,r6,r11,lr} - add r11, sp, 16 - mov r4, r0 - ; byrRegs +[r4] - mov r5, r1 - ;; size=12 bbWeight=8 PerfScore 32.00 -G_M19701_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - ldr r6, [r4] - orr r1, r6, r5 - cmp r1, r6 - beq SHORT G_M19701_IG06 - ;; size=10 bbWeight=8 PerfScore 32.00 -G_M19701_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - mov r0, r4
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=8 PerfScore 16.00 +G_M19701_IG02: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
; byrRegs +[r0]
- mov r2, r6 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - cmp r0, r6
+ ldr r3, [r0] + orr r2, r3, r1 + cmp r2, r3 + beq SHORT G_M19701_IG08 + ;; size=10 bbWeight=8 PerfScore 32.00 +G_M19701_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref + dmb 15 + ;; size=4 bbWeight=4 PerfScore 4.00 +G_M19701_IG04: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r12, [r0] + cmp r12, r3 + bne SHORT G_M19701_IG05 + strex lr, r2, [r0] + cmp lr, 0 + bne SHORT G_M19701_IG04 + ;; size=18 bbWeight=4 PerfScore 24.00 +G_M19701_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + dmb 15 + cmp r12, r3
bne SHORT G_M19701_IG02
- ;; size=18 bbWeight=4 PerfScore 28.00 -G_M19701_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[r4]
+ ;; size=8 bbWeight=4 PerfScore 12.00 +G_M19701_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0]
movs r0, 1 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M19701_IG05: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc}
+G_M19701_IG07: ; bbWeight=0.50, epilog, nogc, extend + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M19701_IG06: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M19701_IG08: ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movs r0, 0 ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M19701_IG07: ; bbWeight=0.50, epilog, nogc, extend - pop {r3,r4,r5,r6,r11,pc}
+G_M19701_IG09: ; bbWeight=0.50, epilog, nogc, extend + pop {r11,pc}
;; size=4 bbWeight=0.50 PerfScore 0.50
-; Total bytes of code 52, prolog size 12, PerfScore 94.00, instruction count 19, allocated bytes for code 52 (MethodHash=f281b30a) for method Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)
+; Total bytes of code 58, prolog size 6, PerfScore 90.00, instruction count 20, allocated bytes for code 58 (MethodHash=f281b30a) for method Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -67,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 52 (0x000034)
+ Function Length : 29 (0x0001d) Actual length = 58 (0x00003a)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -79,7 +80,7 @@ Unwind Info: Epilog Start Index : 0 (0x00) ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 78 pop {r3,r4,r5,r6,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

+10 (+11.90%) : 1370.dasm - System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)

@@ -5,16 +5,15 @@ ; r11 based frame ; partially interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 4 ) byref -> r0 this single-def
-; V01 loc0 [V01,T02] ( 3, 3 ) int -> r0
+; V01 loc0 [V01,T02] ( 3, 3 ) int -> r1
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" -;* V04 tmp2 [V04 ] ( 0, 0 ) int -> zero-ref ld-addr-op "NewObj constructor temp" -;* V05 tmp3 [V05 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -; V06 tmp4 [V06,T01] ( 3, 5 ) int -> r4 "Inlining Arg"
+;* V03 tmp1 [V03 ] ( 0, 0 ) int -> zero-ref ld-addr-op "NewObj constructor temp" +;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +; V05 tmp3 [V05,T01] ( 3, 5 ) int -> r4 "Inlining Arg"
; ; Lcl frame size = 4 @@ -22,36 +21,41 @@ G_M30629_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push {r3,r4,r11,lr} add r11, sp, 8 ;; size=8 bbWeight=1 PerfScore 2.00
-G_M30629_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+G_M30629_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- ldrsb r1, [r0] - movs r1, 0 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method>
+ ldrsb r3, [r0] + movs r3, 0 + dmb 15 + ;; size=10 bbWeight=1 PerfScore 3.00 +G_M30629_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M30629_IG03 + dmb 15 + cmp r1, 0 + beq SHORT G_M30629_IG06 + mvn r0, 1
; byrRegs -[r0]
- cmp r0, 0 - beq SHORT G_M30629_IG05 - mvn r3, 1 - and r4, r0, r3
+ and r4, r1, r0
mov r0, r4 movw r3, 0xd1ff movt r3, 0xd1ff blx r3 // <unknown method> cmp r0, 0
- bne SHORT G_M30629_IG04
+ bne SHORT G_M30629_IG05
;; size=44 bbWeight=1 PerfScore 15.00
-G_M30629_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M30629_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r0, r4 movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] blx r3 // <unknown method> ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M30629_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M30629_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
pop {r3,r4,r11,pc} ;; size=4 bbWeight=1 PerfScore 1.00
-G_M30629_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30629_IG06: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movw r3, 0xd1ff movt r3, 0xd1ff ldr r3, [r3] @@ -59,7 +63,7 @@ G_M30629_IG05: ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref bkpt ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 84, prolog size 8, PerfScore 20.50, instruction count 28, allocated bytes for code 84 (MethodHash=d6bc885a) for method System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
+; Total bytes of code 94, prolog size 8, PerfScore 23.50, instruction count 31, allocated bytes for code 94 (MethodHash=d6bc885a) for method System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
; ============================================================ Unwind Info: @@ -71,7 +75,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 42 (0x0002a) Actual length = 84 (0x000054)
+ Function Length : 47 (0x0002f) Actual length = 94 (0x00005e)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+19.05%) : 20800.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)

@@ -5,43 +5,47 @@ ; r11 based frame ; fully interruptible ; No matching PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments ;
-; V00 loc0 [V00,T00] ( 3, 17 ) int -> r0
+; V00 loc0 [V00,T00] ( 3, 17 ) int -> r3
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 2, 9 ) byref -> r4 hoist "CSE - aggressive"
+; V02 cse0 [V02,T01] ( 2, 9 ) byref -> r0 hoist "CSE - aggressive"
;
-; Lcl frame size = 4
+; Lcl frame size = 0
G_M34283_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push {r3,r4,r11,lr} - add r11, sp, 8 - ;; size=8 bbWeight=1 PerfScore 2.00
+ push {r11,lr} + mov r11, sp + ;; size=6 bbWeight=1 PerfScore 2.00
G_M34283_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movw r4, 0xd1ff - movt r4, 0xd1ff
+ movw r0, 0xd1ff + movt r0, 0xd1ff
;; size=8 bbWeight=1 PerfScore 2.00
-G_M34283_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz - ; byrRegs +[r4] - mov r0, r4
+G_M34283_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
; byrRegs +[r0]
- movs r1, 1 - movw r3, 0xd1ff - movt r3, 0xd1ff - blx r3 // <unknown method> - ; byrRegs -[r0] - ; gcr arg pop 0 - adds r0, r0, 1 - cmp r0, -1
+ dmb 15 + ;; size=4 bbWeight=8 PerfScore 8.00 +G_M34283_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz + ldrex r1, [r0] + adds r3, r1, 1 + strex r2, r3, [r0] + cmp r2, 0 + bne SHORT G_M34283_IG04 + dmb 15 + adds r3, r1, 1 + cmp r3, -1
beq SHORT G_M34283_IG03
- ;; size=22 bbWeight=8 PerfScore 64.00 -G_M34283_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; byrRegs -[r4] - pop {r3,r4,r11,pc}
+ ;; size=26 bbWeight=8 PerfScore 72.00 +G_M34283_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[r0] + mov r0, r3 + ;; size=2 bbWeight=1 PerfScore 1.00 +G_M34283_IG06: ; bbWeight=1, epilog, nogc, extend + pop {r11,pc}
;; size=4 bbWeight=1 PerfScore 1.00
-; Total bytes of code 42, prolog size 8, PerfScore 69.00, instruction count 13, allocated bytes for code 42 (MethodHash=0ac07a14) for method System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
+; Total bytes of code 50, prolog size 6, PerfScore 86.00, instruction count 16, allocated bytes for code 50 (MethodHash=0ac07a14) for method System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
; ============================================================ Unwind Info: @@ -53,11 +57,11 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 42 (0x00002a)
+ Function Length : 25 (0x00019) Actual length = 50 (0x000032)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ----
- A8 18 pop {r3,r4,r11,lr} ; opsize 32
+ A8 00 pop {r11,lr} ; opsize 32
FF end FF end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 317 162 81 74 -1,610 +818
benchmarks.run_pgo.linux.arm.checked.mch 1,948 1,472 419 57 -19,016 +3,624
benchmarks.run_tiered.linux.arm.checked.mch 350 164 131 55 -1,608 +1,096
coreclr_tests.run.linux.arm.checked.mch 2,572 1,711 844 17 -16,772 +9,466
libraries.crossgen2.linux.arm.checked.mch 378 117 234 27 -1,242 +1,788
libraries.pmi.linux.arm.checked.mch 1,540 969 518 53 -9,152 +6,206
libraries_tests.run.linux.arm.Release.mch 8,274 5,488 2,564 222 -77,728 +37,148
librariestestsnotieredcompilation.run.linux.arm.Release.mch 6,728 3,478 3,193 57 -29,230 +26,142
realworld.run.linux.arm.checked.mch 260 158 90 12 -1,676 +968
22,367 13,719 8,074 574 -158,034 +87,256

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 45,927 5,344 40,583 1,203 (2.55%) 1,240 (2.63%)
benchmarks.run_pgo.linux.arm.checked.mch 159,302 56,729 102,573 3,201 (1.97%) 3,412 (2.10%)
benchmarks.run_tiered.linux.arm.checked.mch 80,061 43,607 36,454 1,086 (1.34%) 1,124 (1.38%)
coreclr_tests.run.linux.arm.checked.mch 471,831 259,195 212,636 7,172 (1.50%) 7,332 (1.53%)
libraries.crossgen2.linux.arm.checked.mch 188,188 14 188,174 0 (0.00%) 3 (0.00%)
libraries.pmi.linux.arm.checked.mch 272,229 6 272,223 7,786 (2.78%) 7,917 (2.83%)
libraries_tests.run.linux.arm.Release.mch 709,943 442,672 267,271 16,195 (2.23%) 16,483 (2.27%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 274,235 21,604 252,631 33,224 (10.79%) 33,622 (10.92%)
realworld.run.linux.arm.checked.mch 36,388 157 36,231 1,408 (3.72%) 1,427 (3.77%)
2,238,104 829,328 1,408,776 71,275 (3.08%) 72,560 (3.14%)

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: 15250208 (overridden on cmd)
Total bytes of diff: 15249416 (overridden on cmd)
Total bytes of delta: -792 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          42 : 34405.dasm (3.29 % of base)
          32 : 25443.dasm (1.25 % of base)
          30 : 27874.dasm (15.79 % of base)
          30 : 29059.dasm (15.96 % of base)
          26 : 11811.dasm (3.75 % of base)
          26 : 9121.dasm (13.00 % of base)
          24 : 4001.dasm (1.82 % of base)
          18 : 28910.dasm (1.83 % of base)
          18 : 13832.dasm (3.00 % of base)
          16 : 5745.dasm (1.88 % of base)
          16 : 7977.dasm (3.94 % of base)
          16 : 25735.dasm (2.94 % of base)
          14 : 17273.dasm (1.68 % of base)
          14 : 5742.dasm (9.33 % of base)
          14 : 25673.dasm (3.43 % of base)
          12 : 20306.dasm (12.00 % of base)
          12 : 24967.dasm (1.31 % of base)
          12 : 2128.dasm (13.04 % of base)
          12 : 7092.dasm (2.88 % of base)
          12 : 6783.dasm (2.40 % of base)

Top file improvements (bytes):
         -30 : 25808.dasm (-5.23 % of base)
         -28 : 7313.dasm (-2.29 % of base)
         -28 : 25968.dasm (-0.45 % of base)
         -26 : 25805.dasm (-7.93 % of base)
         -26 : 7093.dasm (-1.86 % of base)
         -24 : 28146.dasm (-1.18 % of base)
         -22 : 25760.dasm (-0.94 % of base)
         -20 : 5746.dasm (-3.98 % of base)
         -20 : 5810.dasm (-20.83 % of base)
         -20 : 17978.dasm (-1.40 % of base)
         -18 : 29081.dasm (-4.55 % of base)
         -18 : 4015.dasm (-12.16 % of base)
         -18 : 4607.dasm (-0.79 % of base)
         -18 : 7189.dasm (-3.46 % of base)
         -16 : 17994.dasm (-20.51 % of base)
         -16 : 684.dasm (-1.49 % of base)
         -16 : 13581.dasm (-32.00 % of base)
         -16 : 16057.dasm (-1.50 % of base)
         -16 : 5817.dasm (-24.24 % of base)
         -14 : 2985.dasm (-29.17 % of base)

69 total files with Code Size differences (35 improved, 34 regressed), 20 unchanged.

Top method regressions (bytes):
          42 (3.29 % of base) : 34405.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (FullOpts)
          32 (1.25 % of base) : 25443.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          30 (15.79 % of base) : 27874.dasm - System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
          30 (15.96 % of base) : 29059.dasm - System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
          26 (13.00 % of base) : 9121.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
          26 (3.75 % of base) : 11811.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (FullOpts)
          24 (1.82 % of base) : 4001.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
          18 (1.83 % of base) : 28910.dasm - System.Diagnostics.Process:ForkAndExecProcess(System.Diagnostics.ProcessStartInfo,System.String,System.String[],System.String[],System.String,ubyte,uint,uint,uint[],byref,byref,byref,ubyte,ubyte):ubyte:this (FullOpts)
          18 (3.00 % of base) : 13832.dasm - System.Threading.SpinLock:ContinueTryEnter(int,byref):this (FullOpts)
          16 (2.94 % of base) : 25735.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbolBase:LazyAsyncMethodChecks(System.Threading.CancellationToken):this (FullOpts)
          16 (1.88 % of base) : 5745.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (FullOpts)
          16 (3.94 % of base) : 7977.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
          14 (3.43 % of base) : 25673.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:LazyMethodChecks():this (FullOpts)
          14 (1.68 % of base) : 17273.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:LocalPush(int,byref):this (FullOpts)
          14 (9.33 % of base) : 5742.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
          12 (1.31 % of base) : 24967.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          12 (13.04 % of base) : 2128.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
          12 (12.00 % of base) : 20306.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (FullOpts)
          12 (2.88 % of base) : 7092.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ConnectAsync(System.Net.Sockets.Socket):System.Threading.Tasks.ValueTask:this (FullOpts)
          12 (2.40 % of base) : 6783.dasm - System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(ubyte[],int,int):this (FullOpts)

Top method improvements (bytes):
         -30 (-5.23 % of base) : 25808.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -28 (-0.45 % of base) : 25968.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
         -28 (-2.29 % of base) : 7313.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
         -26 (-7.93 % of base) : 25805.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -26 (-1.86 % of base) : 7093.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (FullOpts)
         -24 (-1.18 % of base) : 28146.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (FullOpts)
         -22 (-0.94 % of base) : 25760.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -20 (-1.40 % of base) : 17978.dasm - System.Net.WebSockets.ManagedWebSocket:SendFrameLockAcquiredNonCancelableAsync(ubyte,ubyte,ubyte,System.ReadOnlyMemory`1[ubyte]):System.Threading.Tasks.ValueTask:this (FullOpts)
         -20 (-20.83 % of base) : 5810.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryOwnAndReset():ubyte:this (FullOpts)
         -20 (-3.98 % of base) : 5746.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (FullOpts)
         -18 (-4.55 % of base) : 29081.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:TrySteal(byref,ubyte):ubyte:this (FullOpts)
         -18 (-3.46 % of base) : 7189.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (FullOpts)
         -18 (-12.16 % of base) : 4015.dasm - System.Threading.ManualResetEventSlim:Reset():this (FullOpts)
         -18 (-0.79 % of base) : 4607.dasm - System.Threading.PortableThreadPool+GateThread:GateThreadStart() (FullOpts)
         -16 (-1.49 % of base) : 684.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (FullOpts)
         -16 (-1.50 % of base) : 16057.dasm - System.Formats.Tar.TarWriter+<WriteFinalRecordsAsync>d__23:MoveNext():this (FullOpts)
         -16 (-20.51 % of base) : 17994.dasm - System.Threading.AsyncMutex:Exit():this (FullOpts)
         -16 (-24.24 % of base) : 5817.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryReserveCompletionIfCancelable():ubyte:this (FullOpts)
         -16 (-32.00 % of base) : 13581.dasm - System.Threading.Tests.Perf_Interlocked:Decrement_int():int:this (FullOpts)
         -14 (-22.58 % of base) : 16888.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[int]:EnsureFrozenForEnqueues():this (FullOpts)

Top method regressions (percentages):
           8 (19.05 % of base) : 9496.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
          30 (15.96 % of base) : 29059.dasm - System.Threading.Tests.Perf_SpinLock:TryEnterExit():ubyte:this (FullOpts)
          30 (15.79 % of base) : 27874.dasm - System.Threading.Tests.Perf_SpinLock:EnterExit():ubyte:this (FullOpts)
          10 (15.15 % of base) : 10454.dasm - Jil.Deserialize.NameAutomata`1+Helper[int]:GetNextName():System.String (FullOpts)
          12 (13.04 % of base) : 2128.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
          26 (13.00 % of base) : 9121.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (FullOpts)
          12 (12.00 % of base) : 20306.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (FullOpts)
          10 (11.90 % of base) : 1354.dasm - System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
           6 (11.54 % of base) : 24886.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)
          14 (9.33 % of base) : 5742.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
           6 (6.67 % of base) : 3809.dasm - Microsoft.Extensions.Logging.EventSource.EventSourceLoggerProvider:.ctor(Microsoft.Extensions.Logging.EventSource.LoggingEventSource):this (FullOpts)
          10 (6.49 % of base) : 24750.dasm - Roslyn.Utilities.StringTable:AddSharedSlow(int,System.String) (FullOpts)
          10 (5.81 % of base) : 6806.dasm - System.Net.Sockets.SocketAsyncEngine:TryRegisterSocket(int,System.Net.Sockets.SocketAsyncContext,byref,byref):ubyte (FullOpts)
           6 (4.55 % of base) : 3976.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
          16 (3.94 % of base) : 7977.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
           6 (3.85 % of base) : 25113.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:RegisterDeclaredSpecialType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
           8 (3.81 % of base) : 7616.dasm - System.Threading.Tasks.Task`1[int]:TrySetResult(int):ubyte:this (FullOpts)
           8 (3.77 % of base) : 9117.dasm - System.Threading.Tasks.Task`1[ubyte]:TrySetResult(ubyte):ubyte:this (FullOpts)
          26 (3.75 % of base) : 11811.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (FullOpts)
           8 (3.70 % of base) : 25862.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)

Top method improvements (percentages):
         -16 (-32.00 % of base) : 13581.dasm - System.Threading.Tests.Perf_Interlocked:Decrement_int():int:this (FullOpts)
         -14 (-29.17 % of base) : 40843.dasm - System.Threading.Tests.Perf_Interlocked:Add_int():int:this (FullOpts)
         -14 (-29.17 % of base) : 2985.dasm - System.Threading.Tests.Perf_Interlocked:Increment_int():int:this (FullOpts)
         -12 (-26.09 % of base) : 44877.dasm - System.Threading.Tests.Perf_Interlocked:Exchange_int():int:this (FullOpts)
         -12 (-25.00 % of base) : 46342.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (FullOpts)
         -16 (-24.24 % of base) : 5817.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryReserveCompletionIfCancelable():ubyte:this (FullOpts)
         -14 (-22.58 % of base) : 16888.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[int]:EnsureFrozenForEnqueues():this (FullOpts)
         -14 (-22.58 % of base) : 20559.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
         -20 (-20.83 % of base) : 5810.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryOwnAndReset():ubyte:this (FullOpts)
         -16 (-20.51 % of base) : 17994.dasm - System.Threading.AsyncMutex:Exit():this (FullOpts)
         -12 (-19.35 % of base) : 7483.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():this (FullOpts)
         -14 (-17.50 % of base) : 7183.dasm - System.Net.Sockets.SocketAsyncEventArgs:Dispose():this (FullOpts)
         -10 (-12.50 % of base) : 4600.dasm - System.Threading.PortableThreadPool+WorkerThread:TakeActiveRequest(System.Threading.PortableThreadPool):ubyte (FullOpts)
         -12 (-12.24 % of base) : 27104.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:IsMetadataVirtual(ubyte):ubyte:this (FullOpts)
         -18 (-12.16 % of base) : 4015.dasm - System.Threading.ManualResetEventSlim:Reset():this (FullOpts)
         -12 (-11.76 % of base) : 34730.dasm - System.Threading.Tests.Perf_ThreadPool+<>c__DisplayClass1_0:<QueueUserWorkItem_WaitCallback_Throughput>b__0(System.Object):this (FullOpts)
          -8 (-10.53 % of base) : 25104.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:EnsureAllMembersLoaded():this (FullOpts)
         -12 (-9.68 % of base) : 30688.dasm - System.Threading.Tests.Perf_SpinLock:TryEnter_Fail():ubyte:this (FullOpts)
         -12 (-9.38 % of base) : 30686.dasm - System.Threading.Tests.Perf_SpinLock:AcquireAcquiredSpinLock():this (FullOpts)
         -10 (-8.62 % of base) : 4043.dasm - System.Threading.Tasks.Task+SetOnCountdownMres:Invoke(System.Threading.Tasks.Task):this (FullOpts)


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: 63745626 (overridden on cmd)
Total bytes of diff: 63730234 (overridden on cmd)
Total bytes of delta: -15392 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          90 : 69236.dasm (7.46 % of base)
          90 : 141537.dasm (7.46 % of base)
          82 : 27291.dasm (0.78 % of base)
          42 : 132081.dasm (3.47 % of base)
          42 : 124562.dasm (3.29 % of base)
          42 : 129950.dasm (3.47 % of base)
          42 : 148277.dasm (3.47 % of base)
          38 : 149659.dasm (0.74 % of base)
          26 : 100663.dasm (0.33 % of base)
          26 : 20166.dasm (12.50 % of base)
          24 : 14531.dasm (2.99 % of base)
          24 : 14452.dasm (1.82 % of base)
          24 : 76636.dasm (4.69 % of base)
          22 : 66639.dasm (1.40 % of base)
          20 : 134431.dasm (8.20 % of base)
          20 : 106478.dasm (8.20 % of base)
          20 : 118886.dasm (8.20 % of base)
          20 : 61950.dasm (8.20 % of base)
          20 : 128884.dasm (2.53 % of base)
          20 : 159181.dasm (0.99 % of base)

Top file improvements (bytes):
        -102 : 116770.dasm (-9.55 % of base)
        -102 : 127179.dasm (-9.12 % of base)
        -102 : 133878.dasm (-9.12 % of base)
        -102 : 160765.dasm (-9.12 % of base)
        -102 : 31184.dasm (-9.12 % of base)
        -102 : 56320.dasm (-9.12 % of base)
        -102 : 58029.dasm (-9.12 % of base)
        -102 : 129563.dasm (-9.12 % of base)
        -102 : 44198.dasm (-9.55 % of base)
        -102 : 64977.dasm (-9.12 % of base)
        -102 : 72556.dasm (-9.12 % of base)
        -102 : 77016.dasm (-9.55 % of base)
        -102 : 108701.dasm (-9.55 % of base)
        -102 : 132450.dasm (-9.12 % of base)
        -102 : 13951.dasm (-9.12 % of base)
        -102 : 68626.dasm (-9.12 % of base)
        -102 : 81160.dasm (-9.55 % of base)
        -102 : 118842.dasm (-9.55 % of base)
        -102 : 120655.dasm (-9.55 % of base)
        -102 : 124265.dasm (-9.55 % of base)

85 total files with Code Size differences (40 improved, 45 regressed), 20 unchanged.

Top method regressions (bytes):
          90 (7.46 % of base) : 69236.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          90 (7.46 % of base) : 141537.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          82 (0.78 % of base) : 27291.dasm - System.Net.Http.HttpConnection+<SendAsync>d__57:MoveNext():this (Tier0-FullOpts)
          42 (3.29 % of base) : 124562.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
          42 (3.47 % of base) : 132081.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          42 (3.47 % of base) : 129950.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          42 (3.47 % of base) : 148277.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          38 (0.74 % of base) : 149659.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
          26 (0.33 % of base) : 100663.dasm - Microsoft.CodeAnalysis.Compilation:Emit(System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ResourceDescription],Microsoft.CodeAnalysis.Emit.EmitOptions,Microsoft.CodeAnalysis.IMethodSymbol,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.RebuildData,Microsoft.CodeAnalysis.CodeGen.CompilationTestData,System.Threading.CancellationToken):Microsoft.CodeAnalysis.Emit.EmitResult:this (Tier1)
          26 (12.50 % of base) : 20166.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
          24 (2.99 % of base) : 14531.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:LocalPush(System.__Canon,byref):this (Tier1)
          24 (1.82 % of base) : 14452.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (Tier0-FullOpts)
          24 (4.69 % of base) : 76636.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
          22 (1.40 % of base) : 66639.dasm - System.Threading.PortableThreadPool:AdjustMaxWorkersActive():this (Tier1)
          20 (2.53 % of base) : 128884.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:LocalPush(int,byref):this (Tier1)
          20 (8.20 % of base) : 134431.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
          20 (8.20 % of base) : 106478.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
          20 (8.20 % of base) : 118886.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
          20 (8.20 % of base) : 61950.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)
          20 (0.99 % of base) : 159181.dasm - System.Threading.Tasks.Task:ExecuteWithThreadLocal(byref,System.Threading.Thread):this (Tier1)

Top method improvements (bytes):
        -102 (-9.55 % of base) : 116770.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 127179.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 133878.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 160765.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 31184.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 56320.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 58029.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 129563.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.55 % of base) : 44198.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 64977.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 72556.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.55 % of base) : 77016.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.55 % of base) : 108701.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 132450.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 13951.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.12 % of base) : 68626.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.55 % of base) : 81160.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.55 % of base) : 118842.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.55 % of base) : 120655.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)
        -102 (-9.55 % of base) : 124265.dasm - System.Runtime.CompilerServices.YieldAwaitable+YieldAwaiter:System.Runtime.CompilerServices.IStateMachineBoxAwareAwaiter.AwaitUnsafeOnCompleted(System.Runtime.CompilerServices.IAsyncStateMachineBox):this (Tier1)

Top method regressions (percentages):
          14 (35.00 % of base) : 994.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Instrumented Tier0)
          14 (35.00 % of base) : 241.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
          10 (27.78 % of base) : 8652.dasm - System.Threading.Interlocked:Add(byref,int):int (Instrumented Tier0)
          10 (27.78 % of base) : 4833.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier0)
           8 (25.00 % of base) : 17244.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Instrumented Tier0)
           8 (25.00 % of base) : 5023.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
           8 (19.05 % of base) : 28240.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (Tier0-FullOpts)
          12 (18.75 % of base) : 13897.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Instrumented Tier0)
          12 (18.75 % of base) : 12265.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier0)
           8 (16.67 % of base) : 111591.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Instrumented Tier0)
           8 (16.67 % of base) : 60085.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier0)
           6 (15.00 % of base) : 153073.dasm - System.Threading.Tests.Perf_Interlocked:Exchange_int():int:this (Tier0)
           6 (14.29 % of base) : 10178.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Instrumented Tier0)
           6 (14.29 % of base) : 10015.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
           6 (14.29 % of base) : 160170.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (Tier0)
          10 (13.51 % of base) : 12282.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier0)
           8 (13.33 % of base) : 100690.dasm - System.Reflection.Internal.NativeHeapMemoryBlock+DisposableData:Release():this (Tier0)
           6 (13.04 % of base) : 27106.dasm - System.Threading.Interlocked:Or(byref,int):int (Tier0-FullOpts)
           6 (13.04 % of base) : 54099.dasm - System.Threading.Interlocked:Or(byref,uint):uint (Tier1)
           8 (12.90 % of base) : 97217.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol+PackedFlags:SetHasRequiredMemberAttribute(ubyte):this (Tier1)

Top method improvements (percentages):
         -16 (-36.36 % of base) : 13976.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
         -26 (-34.21 % of base) : 129951.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 148262.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 27642.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 69232.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 141516.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 132082.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -14 (-33.33 % of base) : 9764.dasm - System.Threading.Interlocked:Increment(byref):int (Tier1)
         -12 (-31.58 % of base) : 17291.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
         -14 (-30.43 % of base) : 9765.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
         -12 (-25.00 % of base) : 10572.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier1)
         -16 (-24.24 % of base) : 118890.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -16 (-24.24 % of base) : 32535.dasm - System.Threading.Channels.AsyncOperation`1[int]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -16 (-24.24 % of base) : 153387.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -16 (-24.24 % of base) : 143609.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -16 (-24.24 % of base) : 152999.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -16 (-24.24 % of base) : 38782.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -16 (-24.24 % of base) : 107785.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -16 (-24.24 % of base) : 149258.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -16 (-24.24 % of base) : 157586.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)


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

Detail diffs



Top file regressions (bytes):
          42 : 64622.dasm (3.29 % of base)
          32 : 49878.dasm (1.25 % of base)
          26 : 54040.dasm (3.75 % of base)
          26 : 10177.dasm (13.00 % of base)
          24 : 15461.dasm (1.82 % of base)
          18 : 10367.dasm (3.00 % of base)
          18 : 21234.dasm (6.16 % of base)
          16 : 22449.dasm (1.88 % of base)
          14 : 34923.dasm (1.68 % of base)
          14 : 230.dasm (35.00 % of base)
          14 : 50617.dasm (3.43 % of base)
          14 : 13287.dasm (9.33 % of base)
          12 : 15483.dasm (1.41 % of base)
          12 : 26828.dasm (1.94 % of base)
          12 : 34920.dasm (1.47 % of base)
          12 : 48731.dasm (1.31 % of base)
          12 : 40624.dasm (12.00 % of base)
          12 : 10116.dasm (18.75 % of base)
          12 : 58438.dasm (2.40 % of base)
          12 : 69516.dasm (2.88 % of base)

Top file improvements (bytes):
         -50 : 1933.dasm (-19.69 % of base)
         -46 : 20091.dasm (-21.90 % of base)
         -30 : 50664.dasm (-5.23 % of base)
         -28 : 50935.dasm (-0.45 % of base)
         -28 : 20040.dasm (-2.29 % of base)
         -26 : 20172.dasm (-34.21 % of base)
         -26 : 50661.dasm (-7.93 % of base)
         -26 : 69517.dasm (-1.86 % of base)
         -24 : 61020.dasm (-1.18 % of base)
         -22 : 50584.dasm (-0.94 % of base)
         -20 : 10266.dasm (-20.41 % of base)
         -20 : 12567.dasm (-3.98 % of base)
         -18 : 10243.dasm (-23.68 % of base)
         -18 : 62375.dasm (-4.55 % of base)
         -18 : 8285.dasm (-0.81 % of base)
         -18 : 21192.dasm (-3.46 % of base)
         -18 : 28723.dasm (-12.16 % of base)
         -16 : 10280.dasm (-24.24 % of base)
         -16 : 8584.dasm (-36.36 % of base)
         -16 : 1914.dasm (-1.49 % of base)

76 total files with Code Size differences (35 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
          42 (3.29 % of base) : 64622.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
          32 (1.25 % of base) : 49878.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
          26 (13.00 % of base) : 10177.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
          26 (3.75 % of base) : 54040.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (Tier1)
          24 (1.82 % of base) : 15461.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (Tier0-FullOpts)
          18 (6.16 % of base) : 21234.dasm - System.Net.Security.SslStream:CloseInternal():this (Tier0)
          18 (3.00 % of base) : 10367.dasm - System.Threading.SpinLock:ContinueTryEnter(int,byref):this (Tier0-FullOpts)
          16 (1.88 % of base) : 22449.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (Tier0-FullOpts)
          14 (3.43 % of base) : 50617.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:LazyMethodChecks():this (Tier1)
          14 (1.68 % of base) : 34923.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:LocalPush(int,byref):this (Tier1)
          14 (35.00 % of base) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
          14 (9.33 % of base) : 13287.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (Tier1)
          12 (1.31 % of base) : 48731.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (Tier0-FullOpts)
          12 (1.47 % of base) : 34920.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:LocalPush(int,byref):this (Tier0)
          12 (1.41 % of base) : 15483.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:LocalPush(System.__Canon,byref):this (Tier0)
          12 (12.00 % of base) : 40624.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (Tier0-FullOpts)
          12 (2.88 % of base) : 69516.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ConnectAsync(System.Net.Sockets.Socket):System.Threading.Tasks.ValueTask:this (Tier1)
          12 (2.40 % of base) : 58438.dasm - System.Net.Sockets.SocketAsyncEventArgs:SetBuffer(ubyte[],int,int):this (Tier1)
          12 (18.75 % of base) : 10116.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier0)
          12 (1.94 % of base) : 26828.dasm - System.Threading.Tasks.RangeWorker:FindNewWork(byref,byref):ubyte:this (Tier0-FullOpts)

Top method improvements (bytes):
         -50 (-19.69 % of base) : 1933.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:Dispose():this (Tier0)
         -46 (-21.90 % of base) : 20091.dasm - System.IO.Enumeration.FileSystemEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier0)
         -30 (-5.23 % of base) : 50664.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (Tier0-FullOpts)
         -28 (-0.45 % of base) : 50935.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier0-FullOpts)
         -28 (-2.29 % of base) : 20040.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (Tier0-FullOpts)
         -26 (-7.93 % of base) : 50661.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (Tier0-FullOpts)
         -26 (-1.86 % of base) : 69517.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (Tier1)
         -26 (-34.21 % of base) : 20172.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -24 (-1.18 % of base) : 61020.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier0-FullOpts)
         -22 (-0.94 % of base) : 50584.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0-FullOpts)
         -20 (-20.41 % of base) : 10266.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (Tier1)
         -20 (-3.98 % of base) : 12567.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (Tier0-FullOpts)
         -18 (-4.55 % of base) : 62375.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:TrySteal(byref,ubyte):ubyte:this (Tier0-FullOpts)
         -18 (-3.46 % of base) : 21192.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (Tier1)
         -18 (-23.68 % of base) : 10243.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier1)
         -18 (-12.16 % of base) : 28723.dasm - System.Threading.ManualResetEventSlim:Reset():this (Tier1)
         -18 (-0.81 % of base) : 8285.dasm - System.Threading.PortableThreadPool+GateThread:GateThreadStart() (Tier0-FullOpts)
         -16 (-1.49 % of base) : 1914.dasm - System.Buffers.SharedArrayPool`1[ushort]:Trim():ubyte:this (Tier0-FullOpts)
         -16 (-20.51 % of base) : 37324.dasm - System.Threading.AsyncMutex:Exit():this (Tier1)
         -16 (-24.24 % of base) : 10280.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)

Top method regressions (percentages):
          14 (35.00 % of base) : 230.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)
          10 (27.78 % of base) : 3512.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier0)
           8 (25.00 % of base) : 3818.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier0)
           8 (19.05 % of base) : 21663.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (Tier0-FullOpts)
          12 (18.75 % of base) : 10116.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier0)
           8 (16.67 % of base) : 35445.dasm - System.Threading.ReaderWriterLockSlim+SpinLock:TryEnter():ubyte:this (Tier0)
          10 (15.15 % of base) : 25642.dasm - Jil.Deserialize.NameAutomata`1+Helper[int]:GetNextName():System.String (Tier1)
           6 (15.00 % of base) : 76940.dasm - System.Threading.Tests.Perf_Interlocked:Exchange_int():int:this (Tier0)
           6 (14.29 % of base) : 11304.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier0)
           6 (14.29 % of base) : 78062.dasm - System.Threading.Tests.Perf_Interlocked:CompareExchange_int():int:this (Tier0)
          10 (13.51 % of base) : 8467.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier0)
           8 (13.33 % of base) : 55155.dasm - System.Reflection.Internal.NativeHeapMemoryBlock+DisposableData:Release():this (Tier0)
           6 (13.04 % of base) : 52161.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsUnmanagedCallersOnlyAttributePopulated():this (Tier1)
           6 (13.04 % of base) : 20789.dasm - System.Threading.Interlocked:Or(byref,int):int (Tier0-FullOpts)
           6 (13.04 % of base) : 25860.dasm - System.Threading.Interlocked:Or(byref,uint):uint (Tier1)
          26 (13.00 % of base) : 10177.dasm - System.Threading.LowLevelSpinWaiter:SpinWaitForCondition(System.Func`2[System.Object,ubyte],System.Object,int,int):ubyte:this (Tier0-FullOpts)
           8 (12.50 % of base) : 18429.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier0)
          12 (12.00 % of base) : 40624.dasm - System.Diagnostics.Tracing.NameInfo:ReserveEventIDsBelow(int) (Tier0-FullOpts)
           6 (12.00 % of base) : 19694.dasm - System.Net.Sockets.SocketAsyncEventArgs+MultiConnectSocketAsyncEventArgs:ReachedCoordinationPointFirst():ubyte:this (Tier0)
          10 (11.90 % of base) : 10685.dasm - System.Runtime.InteropServices.GCHandle:Free():this (Tier1)

Top method improvements (percentages):
         -16 (-36.36 % of base) : 8584.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
         -26 (-34.21 % of base) : 20172.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -14 (-33.33 % of base) : 7257.dasm - System.Threading.Interlocked:Increment(byref):int (Tier1)
         -12 (-31.58 % of base) : 10686.dasm - System.Threading.Interlocked:Exchange(byref,int):int (Tier1)
         -14 (-30.43 % of base) : 7258.dasm - System.Threading.Interlocked:Add(byref,int):int (Tier1)
         -12 (-25.00 % of base) : 11398.dasm - ProtoBuf.Meta.RuntimeTypeModel:GetContention():int:this (Tier1)
         -16 (-24.24 % of base) : 10280.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryReserveCompletionIfCancelable():ubyte:this (Tier1)
         -14 (-24.14 % of base) : 46515.dasm - System.Net.Sockets.SafeSocketHandle:TryOwnClose():ubyte:this (Tier1)
         -14 (-24.14 % of base) : 10198.dasm - System.Threading.SpinLock:CompareExchange(byref,int,int,byref):int (Tier1)
         -18 (-23.68 % of base) : 10243.dasm - System.Threading.LowLevelLock:TryAcquire_NoFastPath(int):ubyte:this (Tier1)
         -14 (-22.58 % of base) : 52436.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (Tier1)
         -46 (-21.90 % of base) : 20091.dasm - System.IO.Enumeration.FileSystemEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this (Tier0)
          -8 (-21.05 % of base) : 959.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier1)
         -16 (-20.51 % of base) : 37324.dasm - System.Threading.AsyncMutex:Exit():this (Tier1)
         -20 (-20.41 % of base) : 10266.dasm - System.Threading.Channels.AsyncOperation`1[System.VoidResult]:TryOwnAndReset():ubyte:this (Tier1)
         -50 (-19.69 % of base) : 1933.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:Dispose():this (Tier0)
         -12 (-19.35 % of base) : 32596.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.ValueTuple`3[System.__Canon,System.__Canon,ubyte]]:CloseDirectoryHandle():this (Tier1)
         -14 (-17.95 % of base) : 8643.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartConfiguring():this (Tier1)
         -14 (-17.50 % of base) : 8727.dasm - System.Net.Sockets.SocketAsyncEventArgs:Dispose():this (Tier1)
         -10 (-12.50 % of base) : 8273.dasm - System.Threading.PortableThreadPool+WorkerThread:TakeActiveRequest(System.Threading.PortableThreadPool):ubyte (Tier0-FullOpts)


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

Detail diffs



Top file regressions (bytes):
         298 : 399159.dasm (5.45 % of base)
         270 : 159126.dasm (3.36 % of base)
         136 : 310983.dasm (26.56 % of base)
         132 : 306920.dasm (25.88 % of base)
          64 : 2120.dasm (2.50 % of base)
          58 : 276355.dasm (3.15 % of base)
          58 : 2564.dasm (3.15 % of base)
          58 : 117421.dasm (3.15 % of base)
          58 : 157193.dasm (3.15 % of base)
          50 : 294887.dasm (4.19 % of base)
          42 : 151737.dasm (3.29 % of base)
          42 : 382461.dasm (3.29 % of base)
          36 : 197951.dasm (1.08 % of base)
          36 : 328341.dasm (1.44 % of base)
          36 : 416229.dasm (1.08 % of base)
          34 : 121730.dasm (2.85 % of base)
          34 : 181700.dasm (2.85 % of base)
          34 : 70646.dasm (2.85 % of base)
          34 : 110766.dasm (2.85 % of base)
          34 : 194128.dasm (2.85 % of base)

Top file improvements (bytes):
         -64 : 198917.dasm (-5.41 % of base)
         -64 : 416072.dasm (-5.41 % of base)
         -48 : 153666.dasm (-3.81 % of base)
         -36 : 476700.dasm (-30.00 % of base)
         -36 : 206611.dasm (-6.69 % of base)
         -36 : 155703.dasm (-17.65 % of base)
         -34 : 166541.dasm (-2.68 % of base)
         -34 : 313040.dasm (-6.64 % of base)
         -32 : 313801.dasm (-6.25 % of base)
         -30 : 143744.dasm (-5.23 % of base)
         -30 : 379268.dasm (-5.23 % of base)
         -28 : 110816.dasm (-0.62 % of base)
         -28 : 70689.dasm (-0.62 % of base)
         -28 : 144082.dasm (-0.44 % of base)
         -28 : 379433.dasm (-0.45 % of base)
         -26 : 110747.dasm (-34.21 % of base)
         -26 : 138457.dasm (-34.21 % of base)
         -26 : 275620.dasm (-34.21 % of base)
         -26 : 155752.dasm (-34.21 % of base)
         -26 : 171039.dasm (-34.21 % of base)

96 total files with Code Size differences (38 improved, 58 regressed), 17 unchanged.

Top method regressions (bytes):
         298 (5.45 % of base) : 399159.dasm - InterlockedTest.Program:TestEntryPoint():int (FullOpts)
         270 (3.36 % of base) : 159126.dasm - InterlockedTest.Program:TestEntryPoint():int (Tier0)
         136 (26.56 % of base) : 310983.dasm - System.Threading.ThreadInt64PersistentCounter:get_Count():long:this (Tier1)
         132 (25.88 % of base) : 306920.dasm - System.Threading.ThreadInt64PersistentCounter:get_Count():long:this (Tier1)
          64 (2.50 % of base) : 2120.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Instrumented Tier1)
          58 (3.15 % of base) : 276355.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
          58 (3.15 % of base) : 2564.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
          58 (3.15 % of base) : 117421.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
          58 (3.15 % of base) : 157193.dasm - System.Threading.ReaderWriterLockSlim:TryEnterWriteLockCore(System.Threading.ReaderWriterLockSlim+TimeoutTracker):ubyte:this (Tier1)
          50 (4.19 % of base) : 294887.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          42 (3.29 % of base) : 382461.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (FullOpts)
          42 (3.29 % of base) : 151737.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
          36 (1.44 % of base) : 328341.dasm - IntrinsicTest:MainTest():ubyte (FullOpts)
          36 (1.08 % of base) : 416229.dasm - LOHPin.LOHPin:Main():int (FullOpts)
          36 (1.08 % of base) : 197951.dasm - LOHPin.LOHPin:Main():int (Tier0-FullOpts)
          34 (2.85 % of base) : 121730.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          34 (2.85 % of base) : 181700.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          34 (2.85 % of base) : 70646.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          34 (2.85 % of base) : 110766.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)
          34 (2.85 % of base) : 194128.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)

Top method improvements (bytes):
         -64 (-5.41 % of base) : 416072.dasm - DefaultNamespace.RootMem:Main():int (FullOpts)
         -64 (-5.41 % of base) : 198917.dasm - DefaultNamespace.RootMem:Main():int (Tier0-FullOpts)
         -48 (-3.81 % of base) : 153666.dasm - System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this (Tier1)
         -36 (-30.00 % of base) : 476700.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
         -36 (-6.69 % of base) : 206611.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         -36 (-17.65 % of base) : 155703.dasm - System.Threading.ManualResetEventSlim:Reset():this (Instrumented Tier1)
         -34 (-2.68 % of base) : 166541.dasm - System.Buffers.SharedArrayPool`1[int]:Trim():ubyte:this (Tier1)
         -34 (-6.64 % of base) : 313040.dasm - System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this (Tier1)
         -32 (-6.25 % of base) : 313801.dasm - System.Threading.ThreadPoolWorkQueue:EnqueueAtHighPriority(System.Object):this (Tier1)
         -30 (-5.23 % of base) : 379268.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -30 (-5.23 % of base) : 143744.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (Tier0-FullOpts)
         -28 (-0.45 % of base) : 379433.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
         -28 (-0.44 % of base) : 144082.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (Tier0-FullOpts)
         -28 (-0.62 % of base) : 110816.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
         -28 (-0.62 % of base) : 70689.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (Tier1)
         -26 (-7.93 % of base) : 379265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -26 (-1.69 % of base) : 333205.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (FullOpts)
         -26 (-34.21 % of base) : 110747.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 138457.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 275620.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)

Top method regressions (percentages):
          16 (100.00 % of base) : 399180.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_14():this (FullOpts)
          16 (100.00 % of base) : 399181.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_15():this (FullOpts)
          14 (87.50 % of base) : 399176.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_10():this (FullOpts)
          14 (87.50 % of base) : 399177.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_11():this (FullOpts)
          14 (87.50 % of base) : 399179.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_13():this (FullOpts)
          14 (87.50 % of base) : 399182.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_16():this (FullOpts)
          14 (87.50 % of base) : 474186.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (FullOpts)
          12 (75.00 % of base) : 399178.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_12():this (FullOpts)
          12 (75.00 % of base) : 399175.dasm - InterlockedTest.Program+<>c:<TestEntryPoint>b__1_9():this (FullOpts)
          10 (62.50 % of base) : 474302.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
          10 (41.67 % of base) : 313527.dasm - Gen`1[int]:Target() (Tier1)
          10 (41.67 % of base) : 477981.dasm - Gen`1[System.__Canon]:Target() (FullOpts)
          10 (41.67 % of base) : 313530.dasm - Gen`1[System.__Canon]:Target() (Tier1)
          10 (41.67 % of base) : 477817.dasm - Gen`1[System.__Canon]:Target():this (FullOpts)
          10 (41.67 % of base) : 477770.dasm - Gen`1[System.__Canon]:Target():this (FullOpts)
          10 (41.67 % of base) : 313321.dasm - Gen`1[System.__Canon]:Target():this (Tier1)
          10 (41.67 % of base) : 313214.dasm - Gen`1[System.__Canon]:Target():this (Tier1)
          10 (41.67 % of base) : 313272.dasm - Gen`1[System.Guid]:Target():this (Tier1)
          14 (35.00 % of base) : 26744.dasm - NCS:CompareExchange(byref,int,int):int (Tier0)
          14 (35.00 % of base) : 297308.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (Tier0)

Top method improvements (percentages):
         -26 (-34.21 % of base) : 110747.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 138457.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 275620.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 155752.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 171039.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 1833.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 276388.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 70587.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 173892.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 181670.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 187082.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 201548.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 205344.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 209708.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 213427.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 279102.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 312855.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 121714.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 157008.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 31110.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)


libraries.crossgen2.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34521638 (overridden on cmd)
Total bytes of diff: 34522184 (overridden on cmd)
Total bytes of delta: 546 (0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          26 : 145154.dasm (3.88 % of base)
          26 : 153852.dasm (3.29 % of base)
          24 : 185187.dasm (4.55 % of base)
          24 : 185185.dasm (1.58 % of base)
          24 : 185188.dasm (4.41 % of base)
          24 : 154316.dasm (2.86 % of base)
          24 : 154456.dasm (1.32 % of base)
          24 : 154311.dasm (3.32 % of base)
          22 : 101860.dasm (1.23 % of base)
          22 : 120013.dasm (9.24 % of base)
          18 : 186714.dasm (1.62 % of base)
          18 : 140411.dasm (4.64 % of base)
          18 : 177892.dasm (0.53 % of base)
          16 : 186716.dasm (1.81 % of base)
          16 : 186675.dasm (1.23 % of base)
          16 : 120110.dasm (2.66 % of base)
          16 : 132664.dasm (5.19 % of base)
          16 : 166963.dasm (5.26 % of base)
          16 : 169703.dasm (7.84 % of base)
          16 : 169620.dasm (5.26 % of base)

Top file improvements (bytes):
         -32 : 166783.dasm (-1.08 % of base)
         -32 : 169439.dasm (-1.10 % of base)
         -26 : 135698.dasm (-32.50 % of base)
         -24 : 6082.dasm (-46.15 % of base)
         -24 : 6455.dasm (-4.23 % of base)
         -24 : 6100.dasm (-46.15 % of base)
         -24 : 6674.dasm (-29.27 % of base)
         -22 : 6098.dasm (-44.00 % of base)
         -22 : 6080.dasm (-44.00 % of base)
         -22 : 6102.dasm (-44.00 % of base)
         -22 : 6106.dasm (-40.74 % of base)
         -22 : 6454.dasm (-2.89 % of base)
         -20 : 6094.dasm (-38.46 % of base)
         -20 : 6103.dasm (-40.00 % of base)
         -20 : 6104.dasm (-43.48 % of base)
         -20 : 6109.dasm (-43.48 % of base)
         -20 : 6118.dasm (-38.46 % of base)
         -20 : 6108.dasm (-43.48 % of base)
         -20 : 6453.dasm (-4.85 % of base)
         -18 : 6114.dasm (-31.03 % of base)

74 total files with Code Size differences (29 improved, 45 regressed), 20 unchanged.

Top method regressions (bytes):
          26 (3.29 % of base) : 153852.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GetMetadataViewFactory(System.Type):System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory (FullOpts)
          26 (3.88 % of base) : 145154.dasm - System.Data.ProviderBase.DbConnectionPool:WaitForPendingOpen():this (FullOpts)
          24 (3.32 % of base) : 154311.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Clear():this (FullOpts)
          24 (2.86 % of base) : 154316.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Remove(System.ComponentModel.Composition.Primitives.ComposablePartCatalog):ubyte:this (FullOpts)
          24 (1.32 % of base) : 154456.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Refresh():this (FullOpts)
          24 (1.58 % of base) : 185185.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:GetCustomAttributes(System.Reflection.MemberInfo,System.Collections.Generic.IEnumerable`1[System.Object]):System.Collections.Generic.IEnumerable`1[System.Object]:this (FullOpts)
          24 (4.55 % of base) : 185187.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadMemberCustomAttributes(System.Reflection.MemberInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
          24 (4.41 % of base) : 185188.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:ReadParameterCustomAttributes(System.Reflection.ParameterInfo):System.Collections.Generic.List`1[System.Attribute]:this (FullOpts)
          22 (1.23 % of base) : 101860.dasm - System.Net.TimerThread:ThreadProc() (FullOpts)
          22 (9.24 % of base) : 120013.dasm - System.Runtime.Caching.CacheUsage:FlushUnderUsedItems(int):int:this (FullOpts)
          18 (0.53 % of base) : 177892.dasm - System.Net.Http.Http3Connection+<ProcessServerStreamAsync>d__41:MoveNext():this (FullOpts)
          18 (4.64 % of base) : 140411.dasm - System.Net.Security.SslStream:CloseInternal():this (FullOpts)
          18 (1.62 % of base) : 186714.dasm - System.Threading.ReaderWriterLock:AcquireReaderLock(int):this (FullOpts)
          16 (5.19 % of base) : 132664.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
          16 (5.26 % of base) : 166963.dasm - System.Configuration.SectionInformation:set_OverrideMode(int):this (FullOpts)
          16 (5.26 % of base) : 169620.dasm - System.Configuration.SectionInformation:set_OverrideMode(int):this (FullOpts)
          16 (7.84 % of base) : 169703.dasm - System.Configuration.SectionRecord:ChangeLockSettings(int,int):this (FullOpts)
          16 (2.66 % of base) : 120110.dasm - System.Runtime.Caching.MemoryCacheStatistics:CacheManagerThread(int):long:this (FullOpts)
          16 (1.23 % of base) : 186675.dasm - System.Threading.Barrier:SignalAndWait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
          16 (1.81 % of base) : 186716.dasm - System.Threading.ReaderWriterLock:AcquireWriterLock(int):this (FullOpts)

Top method improvements (bytes):
         -32 (-1.08 % of base) : 166783.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
         -32 (-1.10 % of base) : 169439.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
         -26 (-32.50 % of base) : 135698.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
         -24 (-46.15 % of base) : 6082.dasm - System.Threading.Interlocked:Decrement(byref):int (FullOpts)
         -24 (-46.15 % of base) : 6100.dasm - System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
         -24 (-4.23 % of base) : 6455.dasm - System.Threading.ReaderWriterLockSlim:ExitUpgradeableReadLock():this (FullOpts)
         -24 (-29.27 % of base) : 6674.dasm - System.Threading.Tasks.Task:get_Id():int:this (FullOpts)
         -22 (-44.00 % of base) : 6102.dasm - System.Threading.Interlocked:Exchange(byref,byte):byte (FullOpts)
         -22 (-40.74 % of base) : 6106.dasm - System.Threading.Interlocked:Exchange(byref,float):float (FullOpts)
         -22 (-44.00 % of base) : 6080.dasm - System.Threading.Interlocked:Increment(byref):int (FullOpts)
         -22 (-44.00 % of base) : 6098.dasm - System.Threading.Interlocked:Increment(byref):uint (FullOpts)
         -22 (-2.89 % of base) : 6454.dasm - System.Threading.ReaderWriterLockSlim:ExitWriteLock():this (FullOpts)
         -20 (-38.46 % of base) : 6094.dasm - System.Threading.Interlocked:Add(byref,int):int (FullOpts)
         -20 (-38.46 % of base) : 6118.dasm - System.Threading.Interlocked:Add(byref,uint):uint (FullOpts)
         -20 (-43.48 % of base) : 6108.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
         -20 (-43.48 % of base) : 6104.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
         -20 (-43.48 % of base) : 6109.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
         -20 (-40.00 % of base) : 6103.dasm - System.Threading.Interlocked:Exchange(byref,ushort):ushort (FullOpts)
         -20 (-4.85 % of base) : 6453.dasm - System.Threading.ReaderWriterLockSlim:ExitReadLock():this (FullOpts)
         -18 (-0.73 % of base) : 169441.dasm - System.Configuration.MgmtConfigurationRecord:UpdateRecords():this (FullOpts)

Top method regressions (percentages):
           8 (28.57 % of base) : 76266.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
           8 (18.18 % of base) : 101653.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
           8 (18.18 % of base) : 100983.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
           8 (18.18 % of base) : 161101.dasm - System.Net.LazyAsyncResult:get_CompletedSynchronously():ubyte:this (FullOpts)
           6 (16.67 % of base) : 101598.dasm - System.Net.TimerThread+InfiniteTimer:Cancel():ubyte:this (FullOpts)
          10 (16.13 % of base) : 154607.dasm - Microsoft.Internal.ReadLock:Dispose():this (FullOpts)
          10 (16.13 % of base) : 154612.dasm - Microsoft.Internal.ReadWriteLock:Dispose():this (FullOpts)
          10 (16.13 % of base) : 154615.dasm - Microsoft.Internal.WriteLock:Dispose():this (FullOpts)
          10 (16.13 % of base) : 185132.dasm - System.Threading.ReadLock:Dispose():this (FullOpts)
          10 (16.13 % of base) : 185137.dasm - System.Threading.ReadWriteLock:Dispose():this (FullOpts)
          10 (16.13 % of base) : 185140.dasm - System.Threading.WriteLock:Dispose():this (FullOpts)
           8 (16.00 % of base) : 178760.dasm - System.Net.Http.HttpConnection:TryOwnReadAheadTaskCompletion():ubyte:this (FullOpts)
           8 (16.00 % of base) : 100984.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
           8 (16.00 % of base) : 101654.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
           8 (16.00 % of base) : 161102.dasm - System.Net.LazyAsyncResult:get_IsCompleted():ubyte:this (FullOpts)
           6 (15.79 % of base) : 158709.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
          10 (15.62 % of base) : 154378.dasm - System.ComponentModel.Composition.Hosting.CompositionLock:Dispose():this (FullOpts)
           6 (13.04 % of base) : 96844.dasm - Microsoft.CodeAnalysis.VisualBasic.WithBlockBinder+WithBlockInfo:RegisterAccessFromNestedLambda():this (FullOpts)
          10 (11.90 % of base) : 154747.dasm - System.ComponentModel.Composition.Hosting.CompositionLock+CompositionLockHolder:Dispose():this (FullOpts)
          10 (11.90 % of base) : 169643.dasm - System.Configuration.SectionInformation:set_ForceSave(ubyte):this (FullOpts)

Top method improvements (percentages):
         -24 (-46.15 % of base) : 6082.dasm - System.Threading.Interlocked:Decrement(byref):int (FullOpts)
         -24 (-46.15 % of base) : 6100.dasm - System.Threading.Interlocked:Decrement(byref):uint (FullOpts)
         -22 (-44.00 % of base) : 6102.dasm - System.Threading.Interlocked:Exchange(byref,byte):byte (FullOpts)
         -22 (-44.00 % of base) : 6080.dasm - System.Threading.Interlocked:Increment(byref):int (FullOpts)
         -22 (-44.00 % of base) : 6098.dasm - System.Threading.Interlocked:Increment(byref):uint (FullOpts)
         -20 (-43.48 % of base) : 6108.dasm - System.Threading.Interlocked:Exchange(byref,int):int (FullOpts)
         -20 (-43.48 % of base) : 6104.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
         -20 (-43.48 % of base) : 6109.dasm - System.Threading.Interlocked:Exchange(byref,uint):uint (FullOpts)
         -22 (-40.74 % of base) : 6106.dasm - System.Threading.Interlocked:Exchange(byref,float):float (FullOpts)
         -20 (-40.00 % of base) : 6103.dasm - System.Threading.Interlocked:Exchange(byref,ushort):ushort (FullOpts)
         -20 (-38.46 % of base) : 6094.dasm - System.Threading.Interlocked:Add(byref,int):int (FullOpts)
         -20 (-38.46 % of base) : 6118.dasm - System.Threading.Interlocked:Add(byref,uint):uint (FullOpts)
         -16 (-34.78 % of base) : 6116.dasm - System.Threading.Interlocked:CompareExchange(byref,int,int):int (FullOpts)
         -16 (-34.78 % of base) : 6112.dasm - System.Threading.Interlocked:CompareExchange(byref,uint,uint):uint (FullOpts)
         -16 (-34.78 % of base) : 6117.dasm - System.Threading.Interlocked:CompareExchange(byref,uint,uint):uint (FullOpts)
         -26 (-32.50 % of base) : 135698.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
         -18 (-31.03 % of base) : 6114.dasm - System.Threading.Interlocked:CompareExchange(byref,float,float):float (FullOpts)
         -16 (-30.77 % of base) : 6110.dasm - System.Threading.Interlocked:CompareExchange(byref,byte,byte):byte (FullOpts)
         -24 (-29.27 % of base) : 6674.dasm - System.Threading.Tasks.Task:get_Id():int:this (FullOpts)
         -12 (-23.08 % of base) : 6111.dasm - System.Threading.Interlocked:CompareExchange(byref,ushort,ushort):ushort (FullOpts)


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: 49769404 (overridden on cmd)
Total bytes of diff: 49766458 (overridden on cmd)
Total bytes of delta: -2946 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         162 : 242347.dasm (13.41 % of base)
         132 : 228835.dasm (5.35 % of base)
         128 : 242351.dasm (10.68 % of base)
         124 : 170289.dasm (32.80 % of base)
         122 : 242349.dasm (9.21 % of base)
         118 : 170172.dasm (35.98 % of base)
          56 : 87007.dasm (4.52 % of base)
          56 : 87232.dasm (5.34 % of base)
          56 : 86963.dasm (4.52 % of base)
          56 : 87235.dasm (4.09 % of base)
          56 : 87439.dasm (3.00 % of base)
          48 : 227545.dasm (20.00 % of base)
          48 : 227546.dasm (20.00 % of base)
          48 : 50560.dasm (2.75 % of base)
          44 : 176410.dasm (3.37 % of base)
          44 : 264793.dasm (3.37 % of base)
          42 : 219553.dasm (5.21 % of base)
          40 : 169660.dasm (4.31 % of base)
          40 : 170148.dasm (5.43 % of base)
          40 : 268712.dasm (2.87 % of base)

Top file improvements (bytes):
         -68 : 264578.dasm (-2.41 % of base)
         -68 : 176197.dasm (-2.42 % of base)
         -62 : 245777.dasm (-1.34 % of base)
         -58 : 209534.dasm (-1.39 % of base)
         -36 : 151429.dasm (-30.00 % of base)
         -32 : 85174.dasm (-3.38 % of base)
         -30 : 194560.dasm (-3.11 % of base)
         -30 : 21506.dasm (-2.85 % of base)
         -28 : 77533.dasm (-4.56 % of base)
         -28 : 249085.dasm (-1.71 % of base)
         -28 : 228725.dasm (-2.29 % of base)
         -28 : 53977.dasm (-0.43 % of base)
         -26 : 77530.dasm (-7.93 % of base)
         -26 : 118197.dasm (-14.13 % of base)
         -26 : 194693.dasm (-1.76 % of base)
         -26 : 241823.dasm (-1.66 % of base)
         -26 : 181472.dasm (-5.88 % of base)
         -24 : 249081.dasm (-1.06 % of base)
         -24 : 77665.dasm (-3.03 % of base)
         -24 : 209561.dasm (-0.50 % of base)

89 total files with Code Size differences (51 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         162 (13.41 % of base) : 242347.dasm - System.Net.Sockets.SocketPal:SysSend(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
         132 (5.35 % of base) : 228835.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:CopyWithPrivateKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.ICertificatePal:this (FullOpts)
         128 (10.68 % of base) : 242351.dasm - System.Net.Sockets.SocketPal:SysReceiveMessageFrom(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],System.Span`1[ubyte],byref,ubyte,ubyte,byref,byref,byref):int (FullOpts)
         124 (32.80 % of base) : 170289.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
         122 (9.21 % of base) : 242349.dasm - System.Net.Sockets.SocketPal:SysReceive(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],System.Span`1[ubyte],byref,byref,byref):int (FullOpts)
         118 (35.98 % of base) : 170172.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
          56 (5.34 % of base) : 87232.dasm - System.Data.ConstraintCollection:BaseRemove(System.Data.Constraint):this (FullOpts)
          56 (4.09 % of base) : 87235.dasm - System.Data.ConstraintCollection:Clear():this (FullOpts)
          56 (3.00 % of base) : 87439.dasm - System.Data.DataColumnCollection:CanRemove(System.Data.DataColumn,ubyte):ubyte:this (FullOpts)
          56 (4.52 % of base) : 87007.dasm - System.Data.XmlDataTreeWriter:CreateToplevelTables():System.Data.DataTable[]:this (FullOpts)
          56 (4.52 % of base) : 86963.dasm - System.Data.XmlTreeGen:CreateToplevelTables():System.Data.DataTable[]:this (FullOpts)
          48 (2.75 % of base) : 50560.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:MoreSpecificOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,byref):int:this (FullOpts)
          48 (20.00 % of base) : 227545.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):this (FullOpts)
          48 (20.00 % of base) : 227546.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
          44 (3.37 % of base) : 176410.dasm - System.Configuration.SectionInformation:SetRuntimeConfigurationInformation(System.Configuration.BaseConfigurationRecord,System.Configuration.FactoryRecord,System.Configuration.SectionRecord):this (FullOpts)
          44 (3.37 % of base) : 264793.dasm - System.Configuration.SectionInformation:SetRuntimeConfigurationInformation(System.Configuration.BaseConfigurationRecord,System.Configuration.FactoryRecord,System.Configuration.SectionRecord):this (FullOpts)
          42 (5.21 % of base) : 219553.dasm - Roslyn.Utilities.SerializationThreadPool+ImmediateBackgroundThreadPool+<>c:<QueueAsync>b__5_3():this (FullOpts)
          40 (5.43 % of base) : 170148.dasm - System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection:Clear():this (FullOpts)
          40 (4.31 % of base) : 169660.dasm - System.ComponentModel.Composition.MetadataViewGenerator:GetMetadataViewFactory(System.Type):System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory (FullOpts)
          40 (2.87 % of base) : 268712.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder:GetCustomAttributes(System.Reflection.MemberInfo,System.Collections.Generic.IEnumerable`1[System.Object]):System.Collections.Generic.IEnumerable`1[System.Object]:this (FullOpts)

Top method improvements (bytes):
         -68 (-2.41 % of base) : 264578.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
         -68 (-2.42 % of base) : 176197.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDefinitionUpdates(ubyte,int,ubyte,byref,byref):this (FullOpts)
         -62 (-1.34 % of base) : 245777.dasm - System.Net.Http.Http3Connection+<ProcessServerStreamAsync>d__41:MoveNext():this (FullOpts)
         -58 (-1.39 % of base) : 209534.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:<VisitForToLoop>g__initializeLoop|139_1(byref):this (FullOpts)
         -36 (-30.00 % of base) : 151429.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
         -32 (-3.38 % of base) : 85174.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
         -30 (-2.85 % of base) : 21506.dasm - System.Buffers.SharedArrayPool`1[short]:Trim():ubyte:this (FullOpts)
         -30 (-3.11 % of base) : 194560.dasm - System.Net.Quic.ResettableValueTaskSource:TryComplete(System.Exception,ubyte):ubyte:this (FullOpts)
         -28 (-0.43 % of base) : 53977.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
         -28 (-4.56 % of base) : 77533.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -28 (-1.71 % of base) : 249085.dasm - System.Net.WebSockets.ManagedWebSocket+<WaitForWriteTaskAsync>d__58:MoveNext():this (FullOpts)
         -28 (-2.29 % of base) : 228725.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
         -26 (-7.93 % of base) : 77530.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -26 (-14.13 % of base) : 118197.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:get_CoClassType():Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this (FullOpts)
         -26 (-5.88 % of base) : 181472.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ChangedEventValue():System.ComponentModel.EventDescriptor:this (FullOpts)
         -26 (-1.76 % of base) : 194693.dasm - System.Net.Quic.QuicListener+<AcceptConnectionAsync>d__15:MoveNext():this (FullOpts)
         -26 (-1.66 % of base) : 241823.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (FullOpts)
         -24 (-3.03 % of base) : 77665.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -24 (-0.50 % of base) : 209561.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:<VisitWith>g__handleAnonymousTypeWithExpression|257_0(Microsoft.CodeAnalysis.Operations.WithOperation,System.Nullable`1[int]):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
         -24 (-1.06 % of base) : 249081.dasm - System.Net.WebSockets.ManagedWebSocket+<SendFrameFallbackAsync>d__59:MoveNext():this (FullOpts)

Top method regressions (percentages):
         118 (35.98 % of base) : 170172.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
          12 (35.29 % of base) : 87903.dasm - System.Data.DataRelationCollection:.ctor():this (FullOpts)
          12 (35.29 % of base) : 21960.dasm - System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:InterlockedCompareExchange(System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks,System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks):System.Threading.PortableThreadPool+CountsOfThreadsProcessingUserCallbacks:this (FullOpts)
         124 (32.80 % of base) : 170289.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
          18 (21.43 % of base) : 181374.dasm - System.ComponentModel.InterlockedBitVector32:set_Item(int,ubyte):this (FullOpts)
          10 (20.00 % of base) : 243564.dasm - System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:GetObjectInfo(System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit):System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo (FullOpts)
          48 (20.00 % of base) : 227545.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):this (FullOpts)
          48 (20.00 % of base) : 227546.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
           8 (19.05 % of base) : 258568.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
          22 (17.19 % of base) : 196824.dasm - System.Data.Odbc.OdbcConnectionStringBuilder:.ctor(System.String):this (FullOpts)
           8 (15.38 % of base) : 203336.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Clear(byref,int):ubyte (FullOpts)
          20 (14.29 % of base) : 149153.dasm - Microsoft.Build.Execution.BuildManager:GetNewConfigurationId():int:this (FullOpts)
           8 (14.29 % of base) : 176351.dasm - System.Configuration.SafeBitVector32:set_Item(int,ubyte):this (FullOpts)
           8 (14.29 % of base) : 264730.dasm - System.Configuration.SafeBitVector32:set_Item(int,ubyte):this (FullOpts)
           8 (14.29 % of base) : 244007.dasm - System.Runtime.Caching.SafeBitVector32:set_Item(int,ubyte):this (FullOpts)
         162 (13.41 % of base) : 242347.dasm - System.Net.Sockets.SocketPal:SysSend(System.Net.Sockets.SafeSocketHandle,int,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,System.ReadOnlySpan`1[ubyte],byref):int (FullOpts)
          12 (13.33 % of base) : 88023.dasm - System.Data.DataRow:.ctor(System.Data.DataRowBuilder):this (FullOpts)
           6 (13.04 % of base) : 85544.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsCustomAttributesPopulated():this (FullOpts)
           6 (13.04 % of base) : 85056.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+Flags:SetFieldDefinitionsNoted():this (FullOpts)
           6 (13.04 % of base) : 140104.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol+PackedFlags:SetIsCustomAttributesPopulated():this (FullOpts)

Top method improvements (percentages):
         -36 (-30.00 % of base) : 151429.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:CreateEvaluationBuildEventContext(int,int):Microsoft.Build.Framework.BuildEventContext:this (FullOpts)
         -16 (-29.63 % of base) : 151344.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextEvaluationId():int:this (FullOpts)
         -16 (-29.63 % of base) : 151345.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextProjectId():int:this (FullOpts)
         -14 (-29.17 % of base) : 151346.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextTargetId():int:this (FullOpts)
         -14 (-29.17 % of base) : 151347.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:get_NextTaskId():int:this (FullOpts)
         -14 (-29.17 % of base) : 205107.dasm - Microsoft.CodeAnalysis.Compilation:UnregisterPossibleUpcomingEventEnqueue():this (FullOpts)
         -14 (-29.17 % of base) : 217638.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+CaptureIdDispenser:GetNextId():int:this (FullOpts)
         -14 (-29.17 % of base) : 270558.dasm - System.Net.WebClient:EndOperation():this (FullOpts)
         -16 (-26.67 % of base) : 266866.dasm - System.Threading.Tasks.Parallel+ForEachAsyncState`1[System.__Canon]:SignalWorkerCompletedIterating():ubyte:this (FullOpts)
         -16 (-26.67 % of base) : 266874.dasm - System.Threading.Tasks.Parallel+ForEachAsyncState`1[ubyte]:SignalWorkerCompletedIterating():ubyte:this (FullOpts)
         -12 (-26.09 % of base) : 205106.dasm - Microsoft.CodeAnalysis.Compilation:RegisterPossibleUpcomingEventEnqueue():this (FullOpts)
         -12 (-26.09 % of base) : 223058.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
         -12 (-26.09 % of base) : 161845.dasm - System.Net.Mime.MultiAsyncResult:Enter():this (FullOpts)
         -12 (-26.09 % of base) : 161849.dasm - System.Net.Mime.MultiAsyncResult:Increment():this (FullOpts)
         -12 (-26.09 % of base) : 143234.dasm - System.Transactions.CheapUnfairReaderWriterLock:ExitReadLock():this (FullOpts)
         -12 (-26.09 % of base) : 222187.dasm - Xunit.DelegatingExecutionSummarySink:<OnMessageWithTypes>b__13_0(Xunit.MessageHandlerArgs`1[Xunit.Abstractions.IErrorMessage]):this (FullOpts)
         -12 (-25.00 % of base) : 116802.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.EmbeddedSymbolManager:SealCollection():this (FullOpts)
         -14 (-25.00 % of base) : 242051.dasm - System.Net.Sockets.SocketAsyncEventArgs+MultiConnectSocketAsyncEventArgs:ReachedCoordinationPointFirst():ubyte:this (FullOpts)
         -14 (-25.00 % of base) : 180783.dasm - System.Net.TimerThread+InfiniteTimer:Cancel():ubyte:this (FullOpts)
         -18 (-24.32 % of base) : 209311.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder:GetNextCaptureId(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+RegionBuilder):int:this (FullOpts)


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: 243597156 (overridden on cmd)
Total bytes of diff: 243556576 (overridden on cmd)
Total bytes of delta: -40580 (-0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         178 : 713040.dasm (28.80 % of base)
         176 : 272454.dasm (21.89 % of base)
         172 : 713042.dasm (34.26 % of base)
         172 : 713031.dasm (11.53 % of base)
         172 : 713036.dasm (36.13 % of base)
         164 : 272441.dasm (11.17 % of base)
         164 : 713038.dasm (30.83 % of base)
         160 : 311888.dasm (33.06 % of base)
         158 : 332400.dasm (16.88 % of base)
         156 : 322963.dasm (25.08 % of base)
         156 : 391099.dasm (25.08 % of base)
         156 : 89821.dasm (25.08 % of base)
         156 : 396758.dasm (25.08 % of base)
         154 : 383104.dasm (26.01 % of base)
         154 : 404288.dasm (18.97 % of base)
         154 : 272497.dasm (30.31 % of base)
         152 : 404286.dasm (10.34 % of base)
         152 : 383043.dasm (9.71 % of base)
         152 : 130951.dasm (16.74 % of base)
         152 : 454924.dasm (20.77 % of base)

Top file improvements (bytes):
        -132 : 76347.dasm (-2.09 % of base)
        -104 : 183729.dasm (-2.22 % of base)
        -102 : 370058.dasm (-3.16 % of base)
        -100 : 222823.dasm (-3.05 % of base)
        -100 : 318476.dasm (-3.04 % of base)
        -100 : 605252.dasm (-3.04 % of base)
        -100 : 221369.dasm (-3.39 % of base)
        -100 : 318457.dasm (-3.39 % of base)
         -96 : 591173.dasm (-3.26 % of base)
         -96 : 605249.dasm (-3.03 % of base)
         -96 : 222799.dasm (-3.04 % of base)
         -96 : 318472.dasm (-3.03 % of base)
         -94 : 306161.dasm (-2.88 % of base)
         -94 : 578079.dasm (-2.88 % of base)
         -94 : 429321.dasm (-2.88 % of base)
         -92 : 264093.dasm (-2.83 % of base)
         -92 : 479943.dasm (-3.14 % of base)
         -92 : 261566.dasm (-3.17 % of base)
         -92 : 282553.dasm (-3.11 % of base)
         -92 : 568523.dasm (-3.14 % of base)

94 total files with Code Size differences (40 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         178 (28.80 % of base) : 713040.dasm - System.Threading.RegisteredWaitHandle:PerformCallbackPortableCore(ubyte):this (Tier1)
         176 (21.89 % of base) : 272454.dasm - System.Threading.PortableThreadPool+WaitThread:UnregisterWait(System.Threading.RegisteredWaitHandle,ubyte):this (Tier1)
         172 (11.53 % of base) : 713031.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
         172 (34.26 % of base) : 713042.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
         172 (36.13 % of base) : 713036.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
         164 (11.17 % of base) : 272441.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
         164 (30.83 % of base) : 713038.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
         160 (33.06 % of base) : 311888.dasm - System.Threading.PortableThreadPool:PerformBlockingAdjustment(ubyte):uint:this (Tier1)
         158 (16.88 % of base) : 332400.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
         156 (25.08 % of base) : 322963.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
         156 (25.08 % of base) : 391099.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
         156 (25.08 % of base) : 89821.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
         156 (25.08 % of base) : 396758.dasm - System.Threading.PortableThreadPool:NotifyThreadUnblocked():this (Tier1)
         154 (18.97 % of base) : 404288.dasm - System.Threading.PortableThreadPool+WaitThread:UnregisterWait(System.Threading.RegisteredWaitHandle,ubyte):this (Tier1)
         154 (30.31 % of base) : 272497.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
         154 (26.01 % of base) : 383104.dasm - System.Threading.RegisteredWaitHandle:PerformCallbackPortableCore(ubyte):this (Tier1)
         152 (16.74 % of base) : 130951.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
         152 (20.77 % of base) : 454924.dasm - System.Threading.PortableThreadPool:NotifyThreadBlocked():ubyte:this (Tier1)
         152 (10.34 % of base) : 404286.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)
         152 (9.71 % of base) : 383043.dasm - System.Threading.PortableThreadPool+WaitThread:ProcessRemovals():int:this (Tier1)

Top method improvements (bytes):
        -132 (-2.09 % of base) : 76347.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetAttribute(Microsoft.CodeAnalysis.CSharp.BoundAttribute,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:this (Tier1)
        -104 (-2.22 % of base) : 183729.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:CalculateUseSiteDiagnostic(byref):ubyte:this (Tier1)
        -102 (-3.16 % of base) : 370058.dasm - Xunit.Sdk.TestCaseRunner`1+<RunAsync>d__19[System.__Canon]:MoveNext():this (Tier1)
        -100 (-3.05 % of base) : 222823.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
        -100 (-3.04 % of base) : 318476.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
        -100 (-3.04 % of base) : 605252.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
        -100 (-3.39 % of base) : 221369.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
        -100 (-3.39 % of base) : 318457.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
         -96 (-3.03 % of base) : 605249.dasm - Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[System.__Canon]:MoveNext():this (Tier1)
         -96 (-3.04 % of base) : 222799.dasm - Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[System.__Canon]:MoveNext():this (Tier1)
         -96 (-3.03 % of base) : 318472.dasm - Xunit.Sdk.TestCollectionRunner`1+<RunAsync>d__27[System.__Canon]:MoveNext():this (Tier1)
         -96 (-3.26 % of base) : 591173.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
         -94 (-2.88 % of base) : 306161.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
         -94 (-2.88 % of base) : 578079.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
         -94 (-2.88 % of base) : 429321.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
         -92 (-2.83 % of base) : 264093.dasm - Xunit.Sdk.TestClassRunner`1+<RunAsync>d__37[System.__Canon]:MoveNext():this (Tier1)
         -92 (-3.14 % of base) : 479943.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
         -92 (-3.17 % of base) : 261566.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
         -92 (-3.11 % of base) : 282553.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)
         -92 (-3.14 % of base) : 568523.dasm - Xunit.Sdk.TestMethodRunner`1+<RunAsync>d__31[System.__Canon]:MoveNext():this (Tier1)

Top method regressions (percentages):
          10 (38.46 % of base) : 91971.dasm - Microsoft.CodeAnalysis.Internal.Log.CorrelationIdFactory:GetNextId():int (Tier1)
          10 (38.46 % of base) : 149293.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
          10 (38.46 % of base) : 162592.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
          10 (38.46 % of base) : 30636.dasm - Microsoft.CodeAnalysis.VersionStamp:GetNextGlobalVersion():int (Tier1)
          10 (38.46 % of base) : 338460.dasm - System.Linq.Parallel.PlinqEtwProvider:NextQueryId():int (Tier1)
         172 (36.13 % of base) : 713036.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
          12 (35.29 % of base) : 261948.dasm - System.Data.DataRelationCollection:.ctor():this (Tier1)
         172 (34.26 % of base) : 713042.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
         160 (33.06 % of base) : 311888.dasm - System.Threading.PortableThreadPool:PerformBlockingAdjustment(ubyte):uint:this (Tier1)
         146 (32.44 % of base) : 383101.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
         146 (31.60 % of base) : 273321.dasm - System.Threading.RegisteredWaitHandle:RequestCallback():this (Tier1)
         148 (31.09 % of base) : 383112.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
         164 (30.83 % of base) : 713038.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
         154 (30.31 % of base) : 272497.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
          98 (30.25 % of base) : 716198.dasm - Xunit.Sdk.AsyncTestSyncContext+<>c__DisplayClass7_0:<Post>b__0():this (Tier1)
         150 (30.24 % of base) : 383102.dasm - System.Threading.RegisteredWaitHandle:OnRemoveWait():this (Tier1)
          12 (30.00 % of base) : 508472.dasm - System.Xml.Schema.XmlSchema:get_SchemaId():int:this (Tier1)
          12 (30.00 % of base) : 437093.dasm - System.Xml.Schema.XmlSchema:get_SchemaId():int:this (Tier1)
         146 (29.92 % of base) : 273328.dasm - System.Threading.RegisteredWaitHandle:CompleteCallbackRequest():this (Tier1)
         178 (28.80 % of base) : 713040.dasm - System.Threading.RegisteredWaitHandle:PerformCallbackPortableCore(ubyte):this (Tier1)

Top method improvements (percentages):
         -16 (-36.36 % of base) : 39610.dasm - System.Threading.Interlocked:Decrement(byref):int (Instrumented Tier1)
         -16 (-36.36 % of base) : 54178.dasm - System.Threading.Interlocked:Decrement(byref):int (Tier1)
         -26 (-34.21 % of base) : 322314.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 47530.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 576789.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 110894.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 338288.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 707267.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 75345.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 331670.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 710262.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 164446.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 202939.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 311063.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 315305.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 451588.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -26 (-34.21 % of base) : 93898.dasm - System.Threading.CancellationTokenSource+Registrations:EnterLock():this (Tier1)
         -46 (-33.82 % of base) : 36627.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (Tier0)
         -46 (-33.82 % of base) : 108660.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (Tier0)
         -14 (-33.33 % of base) : 12328.dasm - System.Threading.Interlocked:Increment(byref):int (Instrumented Tier1)


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 94156910 (overridden on cmd)
Total bytes of diff: 94153822 (overridden on cmd)
Total bytes of delta: -3088 (-0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         380 : 144443.dasm (18.77 % of base)
         380 : 144458.dasm (23.34 % of base)
         142 : 144256.dasm (13.84 % of base)
         140 : 144272.dasm (14.08 % of base)
         138 : 144271.dasm (14.41 % of base)
         132 : 153298.dasm (5.35 % of base)
         126 : 142876.dasm (17.70 % of base)
         124 : 82098.dasm (32.80 % of base)
         122 : 144928.dasm (22.34 % of base)
         118 : 142913.dasm (22.01 % of base)
         118 : 79984.dasm (35.98 % of base)
         116 : 203405.dasm (22.31 % of base)
         116 : 203289.dasm (22.14 % of base)
          94 : 21012.dasm (0.90 % of base)
          82 : 302621.dasm (3.08 % of base)
          62 : 36156.dasm (10.40 % of base)
          56 : 157969.dasm (5.10 % of base)
          56 : 158290.dasm (5.16 % of base)
          56 : 158326.dasm (5.16 % of base)
          56 : 36116.dasm (8.72 % of base)

Top file improvements (bytes):
         -32 : 7120.dasm (-5.61 % of base)
         -32 : 5951.dasm (-3.38 % of base)
         -30 : 153013.dasm (-3.11 % of base)
         -30 : 7136.dasm (-5.23 % of base)
         -28 : 297006.dasm (-3.09 % of base)
         -28 : 157819.dasm (-1.61 % of base)
         -28 : 157821.dasm (-1.57 % of base)
         -28 : 157870.dasm (-1.51 % of base)
         -28 : 157876.dasm (-1.44 % of base)
         -28 : 157939.dasm (-1.89 % of base)
         -28 : 157980.dasm (-1.65 % of base)
         -28 : 158252.dasm (-1.41 % of base)
         -28 : 158253.dasm (-1.72 % of base)
         -28 : 158287.dasm (-1.89 % of base)
         -28 : 158383.dasm (-1.11 % of base)
         -28 : 158591.dasm (-1.88 % of base)
         -28 : 20825.dasm (-2.29 % of base)
         -28 : 7336.dasm (-0.42 % of base)
         -26 : 153389.dasm (-1.84 % of base)
         -26 : 7123.dasm (-7.93 % of base)

85 total files with Code Size differences (53 improved, 32 regressed), 20 unchanged.

Top method regressions (bytes):
         380 (18.77 % of base) : 144443.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[int](System.ReadOnlyMemory`1[int],ubyte) (FullOpts)
         380 (23.34 % of base) : 144458.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[System.__Canon](System.ReadOnlyMemory`1[System.__Canon],ubyte) (FullOpts)
         142 (13.84 % of base) : 144256.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPin(int) (FullOpts)
         140 (14.08 % of base) : 144272.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPinOffsetAtEnd() (FullOpts)
         138 (14.41 % of base) : 144271.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolSpan() (FullOpts)
         132 (5.35 % of base) : 153298.dasm - System.Security.Cryptography.X509Certificates.OpenSslX509CertificateReader:CopyWithPrivateKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.ICertificatePal:this (FullOpts)
         126 (17.70 % of base) : 142876.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_StartAndLength(System.String,int,int) (FullOpts)
         124 (32.80 % of base) : 82098.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
         122 (22.34 % of base) : 144928.dasm - System.MemoryTests.MemoryTests:Memory_Pin_ExpectedPointerValue() (FullOpts)
         118 (35.98 % of base) : 79984.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
         118 (22.01 % of base) : 142913.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_Pin_ExpectedPointerValue() (FullOpts)
         116 (22.14 % of base) : 203289.dasm - System.Tests.StringTests:Ctor_CharPtr_DoesNotAccessInvalidPage() (FullOpts)
         116 (22.31 % of base) : 203405.dasm - System.Tests.StringTests:Ctor_SBytePtr_DoesNotAccessInvalidPage() (FullOpts)
          94 (0.90 % of base) : 21012.dasm - System.Net.Http.HttpConnection+<SendAsync>d__57:MoveNext():this (FullOpts)
          82 (3.08 % of base) : 302621.dasm - TaskCoverage.Coverage+<Task_WhenAny_TwoTasks_WakesOnFirstCompletion>d__8:MoveNext():this (FullOpts)
          62 (10.40 % of base) : 36156.dasm - Stashbox.StashboxContainer:RegisterInstance(System.Object,System.Type,System.Object,ubyte):Stashbox.IStashboxContainer:this (FullOpts)
          56 (8.72 % of base) : 36116.dasm - Stashbox.StashboxContainer:Register(System.Type,System.Type,System.Action`1[Stashbox.Registration.Fluent.RegistrationConfigurator]):Stashbox.IStashboxContainer:this (FullOpts)
          56 (5.16 % of base) : 158290.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionSupported_NoSsl_Success>b__5_0>d:MoveNext():this (FullOpts)
          56 (5.16 % of base) : 158326.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionSupported_WithSsl_Success>b__6_0>d:MoveNext():this (FullOpts)
          56 (5.10 % of base) : 157969.dasm - System.Net.WebSockets.Client.Tests.ConnectTest+<<ConnectAsync_NonStandardRequestHeaders_HeadersAddedWithoutValidation>b__9_0>d:MoveNext():this (FullOpts)

Top method improvements (bytes):
         -32 (-5.61 % of base) : 7120.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureRefKindAttributesExist(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -32 (-3.38 % of base) : 5951.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
         -30 (-5.23 % of base) : 7136.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -30 (-3.11 % of base) : 153013.dasm - System.Net.Quic.ResettableValueTaskSource:TryComplete(System.Exception,ubyte):ubyte:this (FullOpts)
         -28 (-0.42 % of base) : 7336.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
         -28 (-1.44 % of base) : 157876.dasm - System.Net.WebSockets.Client.Tests.CloseTest+<>c__DisplayClass15_0+<<CloseAsync_CancelableEvenWhenPendingReceive_Throws>b__0>d:MoveNext():this (FullOpts)
         -28 (-1.89 % of base) : 157939.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionNotSupported_NoSsl_Throws>b__1_0>d:MoveNext():this (FullOpts)
         -28 (-1.89 % of base) : 158287.dasm - System.Net.WebSockets.Client.Tests.ConnectTest_Http2+<<ConnectAsync_VersionNotSupported_WithSsl_Throws>b__2_0>d:MoveNext():this (FullOpts)
         -28 (-1.72 % of base) : 158253.dasm - System.Net.WebSockets.Client.Tests.ConnectTest+<<ConnectAsync_HttpResponseDetailsCollectedOnFailure_CustomHeader>b__15_0>d:MoveNext():this (FullOpts)
         -28 (-1.41 % of base) : 158252.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass1_0+<<PerMessageDeflateHeaders>b__0>d:MoveNext():this (FullOpts)
         -28 (-1.57 % of base) : 157821.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass2_0+<<ThrowsWhenContinuationHasDifferentCompressionFlags>b__0>d:MoveNext():this (FullOpts)
         -28 (-1.51 % of base) : 157870.dasm - System.Net.WebSockets.Client.Tests.DeflateTests+<>c__DisplayClass3_0+<<SendHelloWithDisableCompression>b__0>d:MoveNext():this (FullOpts)
         -28 (-1.11 % of base) : 158383.dasm - System.Net.WebSockets.Client.Tests.InvokerConnectTest+<ConnectAsync_CustomInvokerWithIncompatibleWebSocketOptions_ThrowsArgumentException>d__4:MoveNext():this (FullOpts)
         -28 (-1.61 % of base) : 157819.dasm - System.Net.WebSockets.Client.Tests.SendReceiveTest_Http2+<>c__DisplayClass1_0+<<ReceiveNoThrowAfterSend_NoSsl>b__0>d:MoveNext():this (FullOpts)
         -28 (-1.65 % of base) : 157980.dasm - System.Net.WebSockets.Client.Tests.SendReceiveTest_Http2+<>c__DisplayClass2_0+<<ReceiveNoThrowAfterSend_WithSsl>b__0>d:MoveNext():this (FullOpts)
         -28 (-1.88 % of base) : 158591.dasm - System.Net.WebSockets.ManagedWebSocket+<WaitForWriteTaskAsync>d__58:MoveNext():this (FullOpts)
         -28 (-2.29 % of base) : 20825.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
         -28 (-3.09 % of base) : 297006.dasm - ThreadPoolBoundHandleTests:PreAllocatedOverlapped_BlittableTypeAsPinData_DoesNotThrow():this (FullOpts)
         -26 (-7.93 % of base) : 7123.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -26 (-1.84 % of base) : 153389.dasm - System.Net.Quic.QuicListener+<AcceptConnectionAsync>d__15:MoveNext():this (FullOpts)

Top method regressions (percentages):
          16 (100.00 % of base) : 303789.dasm - System.Threading.Tests.InterlockedTests+<>c:<InterlockedCompareExchange_Object>b__38_0():System.Object:this (FullOpts)
          14 (87.50 % of base) : 303774.dasm - System.Threading.Tests.InterlockedTests+<>c:<InterlockedExchange_Object>b__24_0():System.Object:this (FullOpts)
         118 (35.98 % of base) : 79984.dasm - System.ComponentModel.Composition.Hosting.ComposablePartExportProvider:Dispose(ubyte):this (FullOpts)
         124 (32.80 % of base) : 82098.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:Dispose(ubyte):this (FullOpts)
         380 (23.34 % of base) : 144458.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[System.__Canon](System.ReadOnlyMemory`1[System.__Canon],ubyte) (FullOpts)
         122 (22.34 % of base) : 144928.dasm - System.MemoryTests.MemoryTests:Memory_Pin_ExpectedPointerValue() (FullOpts)
         116 (22.31 % of base) : 203405.dasm - System.Tests.StringTests:Ctor_SBytePtr_DoesNotAccessInvalidPage() (FullOpts)
         116 (22.14 % of base) : 203289.dasm - System.Tests.StringTests:Ctor_CharPtr_DoesNotAccessInvalidPage() (FullOpts)
         118 (22.01 % of base) : 142913.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_Pin_ExpectedPointerValue() (FullOpts)
          10 (20.00 % of base) : 40073.dasm - System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo:GetObjectInfo(System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit):System.Runtime.Serialization.Formatters.Binary.ReadObjectInfo (FullOpts)
          48 (20.00 % of base) : 24134.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):this (FullOpts)
          48 (20.00 % of base) : 24153.dasm - System.Security.Cryptography.SP800108HmacCounterKdfImplementationManaged:DeriveBytes(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):this (FullOpts)
           8 (19.05 % of base) : 2330.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
         380 (18.77 % of base) : 144443.dasm - System.MemoryTests.MemoryMarshalTests:AsMemory_Roundtrips_Core[int](System.ReadOnlyMemory`1[int],ubyte) (FullOpts)
         126 (17.70 % of base) : 142876.dasm - System.MemoryTests.ReadOnlyMemoryTests:AsMemory_StartAndLength(System.String,int,int) (FullOpts)
          10 (15.15 % of base) : 48145.dasm - Microsoft.CodeAnalysis.SolutionState:GetBranchId():Microsoft.CodeAnalysis.BranchId:this (FullOpts)
          10 (15.15 % of base) : 42512.dasm - Microsoft.CodeAnalysis.SolutionState:GetBranchId():Microsoft.CodeAnalysis.BranchId:this (FullOpts)
         138 (14.41 % of base) : 144271.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolSpan() (FullOpts)
         140 (14.08 % of base) : 144272.dasm - System.MemoryTests.MemoryPoolTests:MemoryPoolPinOffsetAtEnd() (FullOpts)
          42 (14.00 % of base) : 36215.dasm - Stashbox.Registration.ServiceRegistrations.RegistrationFactory:FromOpenGeneric(System.Type,Stashbox.Registration.ServiceRegistrations.ServiceRegistration):Stashbox.Registration.ServiceRegistrations.ServiceRegistration (FullOpts)

Top method improvements (percentages):
         -24 (-31.58 % of base) : 24037.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
         -24 (-31.58 % of base) : 300682.dasm - System.Threading.Tasks.Sources.Tests.ManualResetValueTaskSourceTests+TrackingSynchronizationContext:Post(System.Threading.SendOrPostCallback,System.Object):this (FullOpts)
         -16 (-30.77 % of base) : 297901.dasm - System.Threading.RateLimiting.Tests.TestEquality:GetHashCode(int):int:this (FullOpts)
         -14 (-29.17 % of base) : 122142.dasm - System.IO.Tests.StreamConformanceTests+NativeMemoryManager:Unpin():this (FullOpts)
         -14 (-29.17 % of base) : 157366.dasm - System.Net.WebClient:EndOperation():this (FullOpts)
         -14 (-29.17 % of base) : 297344.dasm - System.Threading.RateLimiting.Tests.TrackingRateLimiter:GetStatistics():System.Threading.RateLimiting.RateLimiterStatistics:this (FullOpts)
         -14 (-29.17 % of base) : 302981.dasm - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests+TrackOperationsSynchronizationContext:OperationCompleted():this (FullOpts)
         -18 (-29.03 % of base) : 297903.dasm - System.Threading.RateLimiting.Tests.TestEquality:Equals(int,int):ubyte:this (FullOpts)
         -12 (-26.09 % of base) : 128295.dasm - System.IO.Pipelines.SequencePipeReader:CancelPendingRead():this (FullOpts)
         -12 (-26.09 % of base) : 297252.dasm - System.Threading.RateLimiting.Tests.TrackingRateLimiter:Dispose(ubyte):this (FullOpts)
         -12 (-26.09 % of base) : 300001.dasm - System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests+<>c__DisplayClass55_0:<TestChoose_ManyConcurrent>b__1(int):this (FullOpts)
         -12 (-26.09 % of base) : 298225.dasm - System.Threading.Tasks.Dataflow.Tests.SimpleNetworkTests+<>c__DisplayClass9_0:<BroadcastToActions>b__2(int):this (FullOpts)
         -12 (-26.09 % of base) : 299184.dasm - System.Threading.Tasks.Dataflow.Tests.WriteOnceBlockTests+<>c__DisplayClass3_0:<TestLinkToOptions>b__4(int):this (FullOpts)
         -12 (-26.09 % of base) : 302979.dasm - System.Threading.Tasks.Tests.AsyncTaskMethodBuilderTests+TrackOperationsSynchronizationContext:OperationStarted():this (FullOpts)
         -12 (-26.09 % of base) : 303274.dasm - System.Threading.Tasks.Tests.CancellationTokenTests+<>c__DisplayClass35_1:<DerivedCancellationTokenSource>b__1():this (FullOpts)
         -12 (-26.09 % of base) : 301205.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass2_0:<RunSimpleParallelDoTest>b__1():this (FullOpts)
         -12 (-26.09 % of base) : 301390.dasm - System.Threading.Tasks.Tests.ParallelForTests+<>c__DisplayClass3_0:<RunSimpleParallelForIncrementTest>b__2(int):this (FullOpts)
         -12 (-26.09 % of base) : 304805.dasm - System.Threading.Tests.TimerFiringTests+<>c__DisplayClass19_0:<TimersCreatedConcurrentlyOnDifferentThreadsAllFire>b__0(System.Object):this (FullOpts)
         -18 (-25.71 % of base) : 300745.dasm - System.Threading.Tasks.Tests.ParallelForTest:ThreadLocalFinally(System.Collections.Generic.List`1[int]):this (FullOpts)
         -18 (-25.71 % of base) : 302017.dasm - System.Threading.Tasks.Tests.TaskAwaiterTests+QUWITaskScheduler:TryExecuteTaskInline(System.Threading.Tasks.Task,ubyte):ubyte:this (FullOpts)


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: 13589492 (overridden on cmd)
Total bytes of diff: 13588784 (overridden on cmd)
Total bytes of delta: -708 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          48 : 30392.dasm (2.75 % of base)
          48 : 27166.dasm (1.15 % of base)
          32 : 24847.dasm (1.25 % of base)
          26 : 16804.dasm (3.75 % of base)
          24 : 28619.dasm (0.75 % of base)
          24 : 24880.dasm (8.05 % of base)
          22 : 34807.dasm (7.75 % of base)
          22 : 25803.dasm (2.68 % of base)
          20 : 30046.dasm (1.69 % of base)
          20 : 29331.dasm (1.63 % of base)
          18 : 17421.dasm (7.83 % of base)
          18 : 36052.dasm (4.64 % of base)
          16 : 34765.dasm (2.79 % of base)
          16 : 25330.dasm (2.94 % of base)
          16 : 37738.dasm (3.94 % of base)
          16 : 7063.dasm (1.96 % of base)
          14 : 16795.dasm (0.92 % of base)
          14 : 19504.dasm (1.38 % of base)
          14 : 25103.dasm (3.63 % of base)
          14 : 25791.dasm (0.66 % of base)

Top file improvements (bytes):
         -44 : 17601.dasm (-2.80 % of base)
         -30 : 24435.dasm (-3.21 % of base)
         -30 : 25624.dasm (-5.23 % of base)
         -28 : 27445.dasm (-0.45 % of base)
         -28 : 18514.dasm (-2.36 % of base)
         -26 : 25611.dasm (-7.93 % of base)
         -24 : 25668.dasm (-3.22 % of base)
         -24 : 27240.dasm (-3.17 % of base)
         -24 : 32199.dasm (-1.74 % of base)
         -22 : 20060.dasm (-6.83 % of base)
         -22 : 25458.dasm (-0.94 % of base)
         -22 : 25750.dasm (-6.83 % of base)
         -20 : 12655.dasm (-12.35 % of base)
         -20 : 19130.dasm (-3.98 % of base)
         -18 : 12671.dasm (-3.86 % of base)
         -18 : 16071.dasm (-7.50 % of base)
         -18 : 25677.dasm (-2.88 % of base)
         -18 : 16925.dasm (-37.50 % of base)
         -18 : 17898.dasm (-3.60 % of base)
         -18 : 25605.dasm (-4.79 % of base)

75 total files with Code Size differences (40 improved, 35 regressed), 12 unchanged.

Top method regressions (bytes):
          48 (1.15 % of base) : 27166.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
          48 (2.75 % of base) : 30392.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:MoreSpecificOperator(Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature,byref):int:this (FullOpts)
          32 (1.25 % of base) : 24847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          26 (3.75 % of base) : 16804.dasm - System.Threading.Tasks.Task:InternalRunSynchronously(System.Threading.Tasks.TaskScheduler,ubyte):this (FullOpts)
          24 (8.05 % of base) : 24880.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
          24 (0.75 % of base) : 28619.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (FullOpts)
          22 (7.75 % of base) : 34807.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.GrowingCollection`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
          22 (2.68 % of base) : 25803.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:get_DefaultSyntaxValue():Microsoft.CodeAnalysis.ConstantValue:this (FullOpts)
          20 (1.69 % of base) : 30046.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:CreateDecisionDagForSwitchExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundSwitchExpressionArm]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
          20 (1.63 % of base) : 29331.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:CreateDecisionDagForSwitchStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundSwitchSection]):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
          18 (7.83 % of base) : 17421.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedMemoryHandle:Free():this (FullOpts)
          18 (4.64 % of base) : 36052.dasm - System.Threading.Tasks.Task+DelayPromiseWithCancellation+<>c:<.ctor>b__1_0(System.Object,System.Threading.CancellationToken):this (FullOpts)
          16 (2.79 % of base) : 34765.dasm - Microsoft.ApplicationInsights.Metrics.DefaultAggregationPeriodCycle:Run():this (FullOpts)
          16 (2.94 % of base) : 25330.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbolBase:LazyAsyncMethodChecks(System.Threading.CancellationToken):this (FullOpts)
          16 (1.96 % of base) : 7063.dasm - System.Threading.SemaphoreSlim:Release(int):int:this (FullOpts)
          16 (3.94 % of base) : 37738.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
          14 (3.63 % of base) : 25103.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:LazyMethodChecks():this (FullOpts)
          14 (0.66 % of base) : 25791.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          14 (9.33 % of base) : 17093.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
          14 (1.38 % of base) : 19504.dasm - System.Threading.Tasks.Dataflow.Internal.Common:.cctor() (FullOpts)

Top method improvements (bytes):
         -44 (-2.80 % of base) : 17601.dasm - Microsoft.ML.Data.TextLoader+Cursor+LineReader:ThreadProc():this (FullOpts)
         -30 (-5.23 % of base) : 25624.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNullableAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -30 (-3.21 % of base) : 24435.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+AliasesAndUsings:Complete(Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol,Microsoft.CodeAnalysis.SyntaxReference,System.Threading.CancellationToken):this (FullOpts)
         -28 (-0.45 % of base) : 27445.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,byref,Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,Microsoft.CodeAnalysis.CSharp.TypeCompilationState):this (FullOpts)
         -28 (-2.36 % of base) : 18514.dasm - System.Security.Cryptography.X509Certificates.OpenSslCachedSystemStoreProvider:<LoadMachineStores>g__ProcessFile|26_1(System.String,byref,byref):ubyte (FullOpts)
         -26 (-7.93 % of base) : 25611.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureScopedRefAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -24 (-1.74 % of base) : 32199.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitLocalFunctionStatement(Microsoft.CodeAnalysis.CSharp.BoundLocalFunctionStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -24 (-3.22 % of base) : 25668.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbolBase:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -24 (-3.17 % of base) : 27240.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -22 (-6.83 % of base) : 25750.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureIsReadOnlyAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -22 (-0.94 % of base) : 25458.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AfterMembersChecks(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -22 (-6.83 % of base) : 20060.dasm - Microsoft.ML.Data.TextLoader+Cursor+ParallelState:ThreadProc(System.Object):this (FullOpts)
         -20 (-12.35 % of base) : 12655.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
         -20 (-3.98 % of base) : 19130.dasm - System.Threading.ThreadPoolWorkQueue+WorkStealingQueue:LocalPopCore():System.Object:this (FullOpts)
         -18 (-7.50 % of base) : 16071.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
         -18 (-4.79 % of base) : 25605.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:EnsureNativeIntegerAttributeExists(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder) (FullOpts)
         -18 (-2.88 % of base) : 25677.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbol:AfterAddingTypeMembersChecks(Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
         -18 (-37.50 % of base) : 16925.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)
         -18 (-3.60 % of base) : 17898.dasm - System.Net.WebClient:OpenRead(System.Uri):System.IO.Stream:this (FullOpts)
         -18 (-3.86 % of base) : 12671.dasm - System.Threading.CancellationTokenSource+Registrations:Unregister(long,System.Threading.CancellationTokenSource+CallbackNode):ubyte:this (FullOpts)

Top method regressions (percentages):
           8 (19.05 % of base) : 20800.dasm - System.Collections.Immutable.SecureObjectPool:NewId():int (FullOpts)
          10 (11.90 % of base) : 1370.dasm - System.Runtime.InteropServices.GCHandle:Free():this (FullOpts)
           6 (11.54 % of base) : 23256.dasm - Roslyn.Utilities.ThreadSafeFlagOperations:Set(byref,int):ubyte (FullOpts)
           6 (11.11 % of base) : 16436.dasm - SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:IncrementTotalUndisposedAllocationCount() (FullOpts)
          14 (9.33 % of base) : 17093.dasm - System.Threading.SpinLock:ExitSlowPath(ubyte):this (FullOpts)
          10 (8.62 % of base) : 35351.dasm - System.Management.Automation.MshLog:get_NextSequenceNumber():System.String (FullOpts)
          24 (8.05 % of base) : 24880.dasm - Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts:Add(Microsoft.CodeAnalysis.Collections.SmallConcurrentSetOfInts,int):ubyte (FullOpts)
          18 (7.83 % of base) : 17421.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedMemoryHandle:Free():this (FullOpts)
          22 (7.75 % of base) : 34807.dasm - Microsoft.ApplicationInsights.Metrics.ConcurrentDatastructures.GrowingCollection`1[System.__Canon]:Add(System.__Canon):this (FullOpts)
           4 (7.14 % of base) : 16447.dasm - SixLabors.ImageSharp.Diagnostics.MemoryDiagnostics:DecrementTotalUndisposedAllocationCount() (FullOpts)
          10 (6.49 % of base) : 22974.dasm - Roslyn.Utilities.StringTable:AddSharedSlow(int,System.String) (FullOpts)
          10 (5.81 % of base) : 18792.dasm - System.Net.Sockets.SocketAsyncEngine:TryRegisterSocket(int,System.Net.Sockets.SocketAsyncContext,byref,byref):ubyte (FullOpts)
          10 (4.90 % of base) : 17403.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32]]:Allocate(int):SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.Processing.Processors.Quantization.WuQuantizer`1+Moment[SixLabors.ImageSharp.PixelFormats.Rgba32]] (FullOpts)
          18 (4.64 % of base) : 36052.dasm - System.Threading.Tasks.Task+DelayPromiseWithCancellation+<>c:<.ctor>b__1_0(System.Object,System.Threading.CancellationToken):this (FullOpts)
           8 (4.60 % of base) : 25623.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:GetMembers():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
           6 (4.55 % of base) : 5864.dasm - System.Threading.Tasks.TaskScheduler:get_Id():int:this (FullOpts)
          16 (3.94 % of base) : 37738.dasm - System.Threading.Tasks.Task:TrySetException(System.Object):ubyte:this (FullOpts)
           8 (3.88 % of base) : 25966.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceFieldSymbolWithSyntaxReference:SetLazyConstantValue(Microsoft.CodeAnalysis.ConstantValue,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):this (FullOpts)
           6 (3.85 % of base) : 23645.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MetadataOrSourceAssemblySymbol:RegisterDeclaredSpecialType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):this (FullOpts)
           8 (3.81 % of base) : 18896.dasm - System.Threading.Tasks.Task`1[int]:TrySetResult(int):ubyte:this (FullOpts)

Top method improvements (percentages):
         -18 (-37.50 % of base) : 16925.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:AddRef():this (FullOpts)
         -14 (-22.58 % of base) : 25393.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:EnsureFrozenForEnqueues():this (FullOpts)
         -12 (-20.69 % of base) : 19709.dasm - System.Net.Http.HttpConnection:TryOwnReadAheadTaskCompletion():ubyte:this (FullOpts)
         -16 (-20.51 % of base) : 30391.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:get_DeclaredAccessibility():int:this (FullOpts)
         -12 (-19.35 % of base) : 2693.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CloseDirectoryHandle():this (FullOpts)
         -12 (-17.65 % of base) : 25801.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberFieldSymbol:get_FixedSize():int:this (FullOpts)
         -12 (-15.79 % of base) : 25665.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceSimpleParameterSymbol:GetAttributesBag():Microsoft.CodeAnalysis.CustomAttributesBag`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
         -14 (-15.56 % of base) : 19629.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1+<>c__DisplayClass12_1[System.__Canon]:<TrainWithoutLock>b__1(long,byref):this (FullOpts)
         -14 (-15.56 % of base) : 20089.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+<>c__DisplayClass19_1[System.__Canon,System.__Canon,System.__Canon]:<TrainWithoutLock>b__1(long,byref):this (FullOpts)
         -10 (-15.15 % of base) : 29288.dasm - Microsoft.CodeAnalysis.Shared.Collections.TemporaryArray`1[System.__Canon]:Dispose():this (FullOpts)
         -12 (-14.29 % of base) : 16509.dasm - SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[short]:Pin(int):System.Buffers.MemoryHandle:this (FullOpts)
         -10 (-12.50 % of base) : 3294.dasm - System.Threading.PortableThreadPool+WorkerThread:TakeActiveRequest(System.Threading.PortableThreadPool):ubyte (FullOpts)
         -20 (-12.35 % of base) : 12655.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
         -12 (-12.24 % of base) : 25512.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol:IsMetadataVirtual(ubyte):ubyte:this (FullOpts)
          -8 (-10.53 % of base) : 23634.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENestedNamespaceSymbol:EnsureAllMembersLoaded():this (FullOpts)
         -12 (-10.34 % of base) : 18042.dasm - System.Net.Http.HttpClient:CheckRequestMessage(System.Net.Http.HttpRequestMessage) (FullOpts)
         -10 (-8.93 % of base) : 17609.dasm - Microsoft.ML.Data.TextLoader+Cursor+LineReader:Release():this (FullOpts)
         -12 (-8.82 % of base) : 16924.dasm - SixLabors.ImageSharp.Memory.MemoryGroup`1+Owned[SixLabors.ImageSharp.PixelFormats.Rgba32]:IncreaseRefCounts():this (FullOpts)
         -10 (-8.62 % of base) : 19801.dasm - System.Threading.Tasks.Task+SetOnCountdownMres:Invoke(System.Threading.Tasks.Task):this (FullOpts)
          -8 (-8.51 % of base) : 19137.dasm - System.Collections.Concurrent.Partitioner+DynamicPartitionerForIEnumerable`1+InternalPartitionEnumerator[System.__Canon]:Dispose():this (FullOpts)



windows x86

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

MISSED contexts: 47 (0.00%)

No diffs found.

Details

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,492 4 24,488 1 (0.00%) 1 (0.00%)
benchmarks.run_pgo.windows.x86.checked.mch 117,805 41,904 75,901 2 (0.00%) 2 (0.00%)
benchmarks.run_tiered.windows.x86.checked.mch 47,882 28,747 19,135 1 (0.00%) 1 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 574,646 319,847 254,799 22 (0.00%) 22 (0.00%)
libraries.crossgen2.windows.x86.checked.mch 242,615 15 242,600 4 (0.00%) 4 (0.00%)
libraries.pmi.windows.x86.checked.mch 305,766 6 305,760 7 (0.00%) 7 (0.00%)
libraries_tests.run.windows.x86.Release.mch 627,827 427,222 200,605 6 (0.00%) 6 (0.00%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 316,432 21,910 294,522 3 (0.00%) 3 (0.00%)
realworld.run.windows.x86.checked.mch 35,984 3 35,981 1 (0.00%) 1 (0.00%)
2,293,449 839,658 1,453,791 47 (0.00%) 47 (0.00%)