Assembly Diffs

linux arm64

Diffs are based on 2,528,526 contexts (1,004,573 MinOpts, 1,523,953 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 25 (0.00%)

Overall (-388 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm64.Release.mch 381,227,132 -240
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 164,772,920 -148

FullOpts (-388 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm64.Release.mch 166,376,500 -240
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 151,370,120 -148

Example diffs

libraries_tests.run.linux.arm64.Release.mch

-36 (-10.98%) : 578757.dasm - Moq.Match1[System.Memory1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; fp based frame ; fully interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 22
-; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <Moq.Match`1[System.Memory`1[ubyte]]> @@ -99,16 +99,6 @@ G_M16199_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M16199_IG03 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -133,7 +123,7 @@ G_M16199_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 cset x1, eq cbz w1, G_M16199_IG07 b G_M16199_IG03
- ;; size=132 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M16199_IG10: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] ldp x1, x2, [fp, #0x10] // [V06 tmp3], [V06 tmp3+0x08] @@ -149,7 +139,7 @@ G_M16199_IG11: ; bbWeight=0, epilog, nogc, extend ; gcr arg pop 0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 24, PerfScore 39.50, instruction count 82, allocated bytes for code 328 (MethodHash=97c3c0b8) for method Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 292, prolog size 24, PerfScore 39.50, instruction count 73, allocated bytes for code 292 (MethodHash=97c3c0b8) for method Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -160,7 +150,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-10.98%) : 579322.dasm - Moq.Match1[System.ReadOnlyMemory1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; fp based frame ; fully interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
-; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]> @@ -99,16 +99,6 @@ G_M6273_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M6273_IG03 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -133,7 +123,7 @@ G_M6273_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 cset x1, eq cbz w1, G_M6273_IG07 b G_M6273_IG03
- ;; size=132 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M6273_IG10: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] ldp x1, x2, [fp, #0x10] // [V06 tmp3], [V06 tmp3+0x08] @@ -149,7 +139,7 @@ G_M6273_IG11: ; bbWeight=0, epilog, nogc, extend ; gcr arg pop 0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 24, PerfScore 39.50, instruction count 82, allocated bytes for code 328 (MethodHash=cc09e77e) for method Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 292, prolog size 24, PerfScore 39.50, instruction count 73, allocated bytes for code 292 (MethodHash=cc09e77e) for method Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -160,7 +150,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-9.47%) : 578746.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -4,7 +4,7 @@ ; optimized code ; fp based frame ; fully interruptible
-; 2 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 2 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 3.50) ref -> x20 this class-hnd single-def <Moq.Match> @@ -124,16 +124,6 @@ G_M33676_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M33676_IG04 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -159,7 +149,7 @@ G_M33676_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ; gcrRegs -[x0] cbz w0, G_M33676_IG10 b G_M33676_IG04
- ;; size=132 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M33676_IG14: ; bbWeight=0, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs +[x2] mov x0, x20 @@ -177,7 +167,7 @@ G_M33676_IG15: ; bbWeight=0, epilog, nogc, extend ; gcr arg pop 0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 380, prolog size 24, PerfScore 35.00, instruction count 95, allocated bytes for code 380 (MethodHash=72e57c73) for method Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 344, prolog size 24, PerfScore 35.00, instruction count 86, allocated bytes for code 344 (MethodHash=72e57c73) for method Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -188,7 +178,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
+ Function Length : 86 (0x00056) Actual length = 344 (0x000158)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-36 (-13.64%) : 40054.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

@@ -5,7 +5,7 @@ ; fp 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; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> x20 this class-hnd single-def <Moq.Match`1[System.Threading.CancellationToken]> @@ -13,23 +13,21 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> x20 class-hnd single-def "impAppendStmt" <System.Predicate`1[System.Threading.CancellationToken]>
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp4 [V07,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken> -; V08 cse0 [V08,T03] ( 4, 2 ) ref -> x21 "CSE - aggressive"
+;* V07 tmp4 [V07,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M42274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M42274_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M42274_IG05 ;; size=4 bbWeight=1 PerfScore 1.00 @@ -47,44 +45,32 @@ G_M42274_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=4 bbWeight=0.25 PerfScore 0.25 G_M42274_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19-x20]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - mov x0, x21 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0] +[x21] - ; gcr arg pop 0 - cbz w0, G_M42274_IG06 - mov x0, x21 - ; gcrRegs +[x0]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x0]
; gcr arg pop 0 cbz w0, G_M42274_IG10
- mov x0, x21 - ; gcrRegs +[x0]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x21]
+ ; gcrRegs +[x0]
; gcr arg pop 0 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1 bne G_M42274_IG10
- ;; size=112 bbWeight=0.50 PerfScore 12.25
+ ;; size=88 bbWeight=0.50 PerfScore 9.00
G_M42274_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr x20, [x20, #0x10] @@ -113,24 +99,22 @@ G_M42274_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x2, [x20, #0x18] ;; size=12 bbWeight=0.50 PerfScore 4.50 G_M42274_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M42274_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1 x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M42274_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 264, prolog size 24, PerfScore 36.00, instruction count 66, allocated bytes for code 264 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
+; Total bytes of code 228, prolog size 20, PerfScore 29.75, instruction count 57, allocated bytes for code 228 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -141,7 +125,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 66 (0x00042) Actual length = 264 (0x000108)
+ Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -152,9 +136,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.arm64.Release.mch 4 4 0 0 -240 +0
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 2 2 0 0 -148 +0
realworld.run.linux.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
6 6 0 0 -388 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 35,076 3,186 31,890 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.arm64.checked.mch 149,856 59,275 90,581 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.linux.arm64.checked.mch 55,568 41,186 14,382 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch 636,681 390,902 245,779 0 (0.00%) 0 (0.00%)
libraries.crossgen2.linux.arm64.checked.mch 265,498 15 265,483 0 (0.00%) 1 (0.00%)
libraries.pmi.linux.arm64.checked.mch 297,246 6 297,240 0 (0.00%) 8 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 731,081 488,229 242,852 0 (0.00%) 10 (0.00%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 305,134 21,620 283,514 0 (0.00%) 6 (0.00%)
realworld.run.linux.arm64.checked.mch 33,345 147 33,198 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,041 7 19,034 0 (0.00%) 0 (0.00%)
2,528,526 1,004,573 1,523,953 0 (0.00%) 25 (0.00%)

jit-analyze output

libraries_tests.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 381227132 (overridden on cmd)
Total bytes of diff: 381226892 (overridden on cmd)
Total bytes of delta: -240 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -132 : 578729.dasm (-3.29 % of base)
         -36 : 579322.dasm (-10.98 % of base)
         -36 : 578757.dasm (-10.98 % of base)
         -36 : 578746.dasm (-9.47 % of base)

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

Top method improvements (bytes):
        -132 (-3.29 % of base) : 578729.dasm - Moq.SetupCollection:FindLast(System.Func`2[Moq.Setup,ubyte]):Moq.Setup:this (Tier1)
         -36 (-9.47 % of base) : 578746.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 578757.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 579322.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

Top method improvements (percentages):
         -36 (-10.98 % of base) : 578757.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 579322.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-9.47 % of base) : 578746.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
        -132 (-3.29 % of base) : 578729.dasm - Moq.SetupCollection:FindLast(System.Func`2[Moq.Setup,ubyte]):Moq.Setup:this (Tier1)

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


librariestestsnotieredcompilation.run.linux.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 164772920 (overridden on cmd)
Total bytes of diff: 164772772 (overridden on cmd)
Total bytes of delta: -148 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -112 : 33039.dasm (-41.18 % of base)
         -36 : 40054.dasm (-13.64 % of base)

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

Top method improvements (bytes):
        -112 (-41.18 % of base) : 33039.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -36 (-13.64 % of base) : 40054.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

Top method improvements (percentages):
        -112 (-41.18 % of base) : 33039.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -36 (-13.64 % of base) : 40054.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

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



linux x64

Diffs are based on 2,531,951 contexts (984,928 MinOpts, 1,547,023 FullOpts).

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

Overall (-154 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.x64.Release.mch 328,194,239 -64
librariestestsnotieredcompilation.run.linux.x64.Release.mch 132,492,281 -90

FullOpts (-154 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.x64.Release.mch 146,291,195 -64
librariestestsnotieredcompilation.run.linux.x64.Release.mch 121,920,132 -90

Example diffs

libraries_tests.run.linux.x64.Release.mch

-20 (-7.81%) : 593141.dasm - Moq.Match1[System.Memory1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; rbp based frame ; fully interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 27
-; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <Moq.Match`1[System.Memory`1[ubyte]]> @@ -97,13 +97,6 @@ G_M16199_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { ; gcrRegs +[rbx r15] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M16199_IG03 - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rdi] ; gcr arg pop 0 @@ -123,7 +116,7 @@ G_M16199_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { test esi, esi je SHORT G_M16199_IG07 jmp G_M16199_IG03
- ;; size=86 bbWeight=0 PerfScore 0.00
+ ;; size=66 bbWeight=0 PerfScore 0.00
G_M16199_IG10: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rsi, gword ptr [rbp-0x20] @@ -142,7 +135,7 @@ G_M16199_IG11: ; bbWeight=0, epilog, nogc, extend tail.jmp [rax+0x18]System.Predicate`1[System.Memory`1[ubyte]]:Invoke(System.Memory`1[ubyte]):ubyte:this ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 256, prolog size 25, PerfScore 34.25, instruction count 68, allocated bytes for code 256 (MethodHash=97c3c0b8) for method Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 236, prolog size 25, PerfScore 34.25, instruction count 64, allocated bytes for code 236 (MethodHash=97c3c0b8) for method Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info:

-20 (-7.81%) : 593633.dasm - Moq.Match1[System.ReadOnlyMemory1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; rbp based frame ; fully interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
-; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> r15 this class-hnd single-def <Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]> @@ -97,13 +97,6 @@ G_M6273_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {r ; gcrRegs +[rbx r15] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M6273_IG03 - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rdi] ; gcr arg pop 0 @@ -123,7 +116,7 @@ G_M6273_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 {r test esi, esi je SHORT G_M6273_IG07 jmp G_M6273_IG03
- ;; size=86 bbWeight=0 PerfScore 0.00
+ ;; size=66 bbWeight=0 PerfScore 0.00
G_M6273_IG10: ; bbWeight=0, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rax rbx] mov rsi, gword ptr [rbp-0x20] @@ -142,7 +135,7 @@ G_M6273_IG11: ; bbWeight=0, epilog, nogc, extend tail.jmp [rax+0x18]System.Predicate`1[System.ReadOnlyMemory`1[ubyte]]:Invoke(System.ReadOnlyMemory`1[ubyte]):ubyte:this ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 256, prolog size 25, PerfScore 34.25, instruction count 68, allocated bytes for code 256 (MethodHash=cc09e77e) for method Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 236, prolog size 25, PerfScore 34.25, instruction count 64, allocated bytes for code 236 (MethodHash=cc09e77e) for method Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info:

-24 (-7.38%) : 593129.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -4,7 +4,7 @@ ; optimized code ; rbp based frame ; fully interruptible
-; 2 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 2 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 3.50) ref -> r15 this class-hnd single-def <Moq.Match> @@ -123,13 +123,6 @@ G_M33676_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { ; gcrRegs +[rbx r15] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - test eax, eax - je G_M33676_IG05 - mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rdi] ; gcr arg pop 0 @@ -149,7 +142,7 @@ G_M33676_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8008 { test edi, edi je G_M33676_IG04 jmp G_M33676_IG05
- ;; size=98 bbWeight=0 PerfScore 0.00
+ ;; size=74 bbWeight=0 PerfScore 0.00
G_M33676_IG13: ; bbWeight=0, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] +[rdx] mov rdi, r15 @@ -168,7 +161,7 @@ G_M33676_IG14: ; bbWeight=0, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=14 bbWeight=0 PerfScore 0.00
-; Total bytes of code 325, prolog size 27, PerfScore 31.88, instruction count 82, allocated bytes for code 325 (MethodHash=72e57c73) for method Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 301, prolog size 27, PerfScore 31.88, instruction count 78, allocated bytes for code 301 (MethodHash=72e57c73) for method Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-24 (-13.71%) : 40212.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

@@ -5,7 +5,7 @@ ; rbp 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; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> r15 this class-hnd single-def <Moq.Match`1[System.Threading.CancellationToken]> @@ -13,25 +13,22 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> r15 class-hnd single-def "impAppendStmt" <System.Predicate`1[System.Threading.CancellationToken]>
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp4 [V07,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken> -; V08 cse0 [V08,T03] ( 4, 2 ) ref -> r14 "CSE - aggressive"
+;* V07 tmp4 [V07,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M42274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG push rbp push r15
- push r14
push rbx
- push rax - lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov r15, rdi ; gcrRegs +[r15] mov rbx, rsi ; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M42274_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz test rbx, rbx je SHORT G_M42274_IG05 @@ -47,32 +44,23 @@ G_M42274_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=2 bbWeight=0.25 PerfScore 0.50 G_M42274_IG05: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx r15]
- mov r14, 0xD1FFAB1E - ; gcrRegs +[r14] - mov rdi, r14 - ; gcrRegs +[rdi] - call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rdi] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M42274_IG06 - mov rdi, r14
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi] call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rdi] ; gcr arg pop 0 test eax, eax je SHORT G_M42274_IG10
- mov rdi, r14
+ mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi] call [System.RuntimeType:GetGenericTypeDefinition():System.Type:this]
- ; gcrRegs -[rdi r14] +[rax]
+ ; gcrRegs -[rdi] +[rax]
; gcr arg pop 0 mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] cmp rax, rsi jne SHORT G_M42274_IG10
- ;; size=60 bbWeight=0.50 PerfScore 7.00
+ ;; size=51 bbWeight=0.50 PerfScore 4.62
G_M42274_IG06: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax rsi] mov r15, gword ptr [r15+0x10] @@ -97,27 +85,23 @@ G_M42274_IG08: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 ; gcrRegs +[rax] ;; size=11 bbWeight=0.50 PerfScore 2.12 G_M42274_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp tail.jmp [rax+0x18]<unknown method>
- ;; size=14 bbWeight=0.50 PerfScore 2.12
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
G_M42274_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rbx rsi rdi r15] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M42274_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 8
pop rbx
- pop r14
pop r15 pop rbp ret
- ;; size=11 bbWeight=0.50 PerfScore 1.62
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
-; Total bytes of code 175, prolog size 18, PerfScore 26.38, instruction count 51, allocated bytes for code 175 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
+; Total bytes of code 151, prolog size 15, PerfScore 21.25, instruction count 40, allocated bytes for code 151 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -125,13 +109,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 5
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.linux.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.linux.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.linux.x64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.linux.x64.Release.mch 3 3 0 0 -64 +0
librariestestsnotieredcompilation.run.linux.x64.Release.mch 2 2 0 0 -90 +0
realworld.run.linux.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
5 5 0 0 -154 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 36,348 3,562 32,786 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch 158,911 63,100 95,811 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.linux.x64.checked.mch 60,464 45,377 15,087 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 598,649 355,935 242,714 1 (0.00%) 1 (0.00%)
libraries.crossgen2.linux.x64.checked.mch 265,328 15 265,313 0 (0.00%) 1 (0.00%)
libraries.pmi.linux.x64.checked.mch 298,293 6 298,287 0 (0.00%) 8 (0.00%)
libraries_tests.run.linux.x64.Release.mch 747,336 494,873 252,463 0 (0.00%) 12 (0.00%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 305,731 21,933 283,798 0 (0.00%) 6 (0.00%)
realworld.run.linux.x64.checked.mch 33,450 117 33,333 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,441 10 27,431 0 (0.00%) 0 (0.00%)
2,531,951 984,928 1,547,023 1 (0.00%) 28 (0.00%)

jit-analyze output

libraries_tests.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 328194239 (overridden on cmd)
Total bytes of diff: 328194175 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 593129.dasm (-7.38 % of base)
         -20 : 593633.dasm (-7.81 % of base)
         -20 : 593141.dasm (-7.81 % of base)

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

Top method improvements (bytes):
         -24 (-7.38 % of base) : 593129.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -20 (-7.81 % of base) : 593141.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -20 (-7.81 % of base) : 593633.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

Top method improvements (percentages):
         -20 (-7.81 % of base) : 593141.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -20 (-7.81 % of base) : 593633.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -24 (-7.38 % of base) : 593129.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)

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


librariestestsnotieredcompilation.run.linux.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 132492281 (overridden on cmd)
Total bytes of diff: 132492191 (overridden on cmd)
Total bytes of delta: -90 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -66 : 33072.dasm (-32.04 % of base)
         -24 : 40212.dasm (-13.71 % of base)

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

Top method improvements (bytes):
         -66 (-32.04 % of base) : 33072.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -24 (-13.71 % of base) : 40212.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

Top method improvements (percentages):
         -66 (-32.04 % of base) : 33072.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -24 (-13.71 % of base) : 40212.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

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



osx arm64

Diffs are based on 2,298,729 contexts (931,660 MinOpts, 1,367,069 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 24 (0.00%)

Overall (-256 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.osx.arm64.Release.mch 314,003,048 -108
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 160,846,280 -148

FullOpts (-256 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.osx.arm64.Release.mch 113,365,136 -108
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 147,787,464 -148

Example diffs

libraries_tests.run.osx.arm64.Release.mch

-36 (-10.98%) : 491726.dasm - Moq.Match1[System.Memory1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; fp based frame ; fully interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 43
-; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <Moq.Match`1[System.Memory`1[ubyte]]> @@ -99,16 +99,6 @@ G_M16199_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M16199_IG03 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -133,7 +123,7 @@ G_M16199_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 cset x1, eq cbz w1, G_M16199_IG07 b G_M16199_IG03
- ;; size=132 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M16199_IG10: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] ldp x1, x2, [fp, #0x10] // [V06 tmp3], [V06 tmp3+0x08] @@ -149,7 +139,7 @@ G_M16199_IG11: ; bbWeight=0, epilog, nogc, extend ; gcr arg pop 0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 24, PerfScore 39.50, instruction count 82, allocated bytes for code 328 (MethodHash=97c3c0b8) for method Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 292, prolog size 24, PerfScore 39.50, instruction count 73, allocated bytes for code 292 (MethodHash=97c3c0b8) for method Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -160,7 +150,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-10.98%) : 492435.dasm - Moq.Match1[System.ReadOnlyMemory1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; fp based frame ; fully interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
-; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> x20 this class-hnd single-def <Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]> @@ -99,16 +99,6 @@ G_M6273_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M6273_IG03 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -133,7 +123,7 @@ G_M6273_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 cset x1, eq cbz w1, G_M6273_IG07 b G_M6273_IG03
- ;; size=132 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M6273_IG10: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref ; gcrRegs -[x0 x19] ldp x1, x2, [fp, #0x10] // [V06 tmp3], [V06 tmp3+0x08] @@ -149,7 +139,7 @@ G_M6273_IG11: ; bbWeight=0, epilog, nogc, extend ; gcr arg pop 0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 328, prolog size 24, PerfScore 39.50, instruction count 82, allocated bytes for code 328 (MethodHash=cc09e77e) for method Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 292, prolog size 24, PerfScore 39.50, instruction count 73, allocated bytes for code 292 (MethodHash=cc09e77e) for method Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -160,7 +150,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 82 (0x00052) Actual length = 328 (0x000148)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-9.00%) : 491711.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -4,7 +4,7 @@ ; optimized code ; fp based frame ; fully interruptible
-; 2 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 2 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 3.50) ref -> x20 this class-hnd single-def <Moq.Match> @@ -127,16 +127,6 @@ G_M33676_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcr arg pop 0 - cbz w0, G_M33676_IG05 - movz x0, #0xD1FFAB1E - movk x0, #0xD1FFAB1E LSL #16 - movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -162,7 +152,7 @@ G_M33676_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=180000 ; gcrRegs -[x0] cbz w0, G_M33676_IG04 b G_M33676_IG05
- ;; size=132 bbWeight=0 PerfScore 0.00
+ ;; size=96 bbWeight=0 PerfScore 0.00
G_M33676_IG13: ; bbWeight=0, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref ; gcrRegs +[x2] mov x0, x20 @@ -181,7 +171,7 @@ G_M33676_IG14: ; bbWeight=0, epilog, nogc, extend ; gcr arg pop 0 ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 28, PerfScore 38.50, instruction count 100, allocated bytes for code 400 (MethodHash=72e57c73) for method Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 364, prolog size 28, PerfScore 38.50, instruction count 91, allocated bytes for code 364 (MethodHash=72e57c73) for method Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info: @@ -192,7 +182,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-36 (-13.64%) : 40014.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

@@ -5,7 +5,7 @@ ; fp 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; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> x20 this class-hnd single-def <Moq.Match`1[System.Threading.CancellationToken]> @@ -13,23 +13,21 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> x20 class-hnd single-def "impAppendStmt" <System.Predicate`1[System.Threading.CancellationToken]>
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp4 [V07,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken> -; V08 cse0 [V08,T03] ( 4, 2 ) ref -> x21 "CSE - aggressive"
+;* V07 tmp4 [V07,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M42274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M42274_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M42274_IG05 ;; size=4 bbWeight=1 PerfScore 1.00 @@ -47,44 +45,32 @@ G_M42274_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=4 bbWeight=0.25 PerfScore 0.25 G_M42274_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19-x20]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #1 LSL #32 - mov x0, x21 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #1 LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0] +[x21] - ; gcr arg pop 0 - cbz w0, G_M42274_IG06 - mov x0, x21 - ; gcrRegs +[x0]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x0]
; gcr arg pop 0 cbz w0, G_M42274_IG10
- mov x0, x21 - ; gcrRegs +[x0]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #1 LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x21]
+ ; gcrRegs +[x0]
; gcr arg pop 0 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1 bne G_M42274_IG10
- ;; size=112 bbWeight=0.50 PerfScore 12.25
+ ;; size=88 bbWeight=0.50 PerfScore 9.00
G_M42274_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr x20, [x20, #0x10] @@ -113,24 +99,22 @@ G_M42274_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x2, [x20, #0x18] ;; size=12 bbWeight=0.50 PerfScore 4.50 G_M42274_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M42274_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1 x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M42274_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 264, prolog size 24, PerfScore 36.00, instruction count 66, allocated bytes for code 264 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
+; Total bytes of code 228, prolog size 20, PerfScore 29.75, instruction count 57, allocated bytes for code 228 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -141,7 +125,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 66 (0x00042) Actual length = 264 (0x000108)
+ Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -152,9 +136,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.osx.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.osx.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.osx.arm64.Release.mch 3 3 0 0 -108 +0
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 2 2 0 0 -148 +0
realworld.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
5 5 0 0 -256 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,930 4 24,926 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.osx.arm64.checked.mch 83,913 48,370 35,543 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,330 37,457 10,873 0 (0.00%) 0 (0.00%)
coreclr_tests.run.osx.arm64.checked.mch 595,802 363,976 231,826 0 (0.00%) 0 (0.00%)
libraries.crossgen2.osx.arm64.checked.mch 265,076 15 265,061 0 (0.00%) 1 (0.00%)
libraries.pmi.osx.arm64.checked.mch 317,893 18 317,875 0 (0.00%) 8 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 630,817 460,208 170,609 0 (0.00%) 9 (0.00%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 300,371 21,609 278,762 0 (0.00%) 6 (0.00%)
realworld.run.osx.arm64.checked.mch 31,597 3 31,594 0 (0.00%) 0 (0.00%)
2,298,729 931,660 1,367,069 0 (0.00%) 24 (0.00%)

jit-analyze output

libraries_tests.run.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 314003048 (overridden on cmd)
Total bytes of diff: 314002940 (overridden on cmd)
Total bytes of delta: -108 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -36 : 492435.dasm (-10.98 % of base)
         -36 : 491726.dasm (-10.98 % of base)
         -36 : 491711.dasm (-9.00 % of base)

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

Top method improvements (bytes):
         -36 (-9.00 % of base) : 491711.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 491726.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 492435.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

Top method improvements (percentages):
         -36 (-10.98 % of base) : 491726.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 492435.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-9.00 % of base) : 491711.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)

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


librariestestsnotieredcompilation.run.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 160846280 (overridden on cmd)
Total bytes of diff: 160846132 (overridden on cmd)
Total bytes of delta: -148 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -112 : 32902.dasm (-41.18 % of base)
         -36 : 40014.dasm (-13.64 % of base)

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

Top method improvements (bytes):
        -112 (-41.18 % of base) : 32902.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -36 (-13.64 % of base) : 40014.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

Top method improvements (percentages):
        -112 (-41.18 % of base) : 32902.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -36 (-13.64 % of base) : 40014.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

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



windows arm64

Diffs are based on 2,380,829 contexts (948,159 MinOpts, 1,432,670 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 23 (0.00%)

Overall (-148 bytes)

Collection Base size (bytes) Diff size (bytes)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 171,283,108 -148

FullOpts (-148 bytes)

Collection Base size (bytes) Diff size (bytes)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 158,223,720 -148

Example diffs

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-36 (-13.64%) : 40559.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

@@ -5,7 +5,7 @@ ; fp 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; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> x20 this class-hnd single-def <Moq.Match`1[System.Threading.CancellationToken]> @@ -13,23 +13,21 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> x20 class-hnd single-def "impAppendStmt" <System.Predicate`1[System.Threading.CancellationToken]>
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp4 [V07,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken> -; V08 cse0 [V08,T03] ( 4, 2 ) ref -> x21 "CSE - aggressive"
+;* V07 tmp4 [V07,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken>
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M42274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp mov x20, x0 ; gcrRegs +[x20] mov x19, x1 ; gcrRegs +[x19]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M42274_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x19, G_M42274_IG05 ;; size=4 bbWeight=1 PerfScore 1.00 @@ -47,44 +45,32 @@ G_M42274_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=4 bbWeight=0.25 PerfScore 0.25 G_M42274_IG05: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19-x20]
- movz x21, #0xD1FFAB1E - movk x21, #0xD1FFAB1E LSL #16 - movk x21, #0xD1FFAB1E LSL #32 - mov x0, x21 - ; gcrRegs +[x0] - movz x1, #0xD1FFAB1E // code for System.RuntimeType:IsValueTypeImpl():ubyte:this - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - ldr x1, [x1] - blr x1 - ; gcrRegs -[x0] +[x21] - ; gcr arg pop 0 - cbz w0, G_M42274_IG06 - mov x0, x21 - ; gcrRegs +[x0]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:get_IsGenericType():ubyte:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x0]
; gcr arg pop 0 cbz w0, G_M42274_IG10
- mov x0, x21 - ; gcrRegs +[x0]
+ movz x0, #0xD1FFAB1E + movk x0, #0xD1FFAB1E LSL #16 + movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for System.RuntimeType:GetGenericTypeDefinition():System.Type:this movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x21]
+ ; gcrRegs +[x0]
; gcr arg pop 0 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 cmp x0, x1 bne G_M42274_IG10
- ;; size=112 bbWeight=0.50 PerfScore 12.25
+ ;; size=88 bbWeight=0.50 PerfScore 9.00
G_M42274_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] ldr x20, [x20, #0x10] @@ -113,24 +99,22 @@ G_M42274_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000 ldr x2, [x20, #0x18] ;; size=12 bbWeight=0.50 PerfScore 4.50 G_M42274_IG09: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M42274_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[x0-x1 x19-x20] mov w0, wzr ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M42274_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 264, prolog size 24, PerfScore 36.00, instruction count 66, allocated bytes for code 264 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
+; Total bytes of code 228, prolog size 20, PerfScore 29.75, instruction count 57, allocated bytes for code 228 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -141,7 +125,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 66 (0x00042) Actual length = 264 (0x000108)
+ Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -152,9 +136,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- D0 85 save_reg X#2 Z#5 (0x05); str x21, [sp, #40] - C8 03 save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24] - 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.windows.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.arm64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.arm64.Release.mch 0 0 0 0 -0 +0
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 2 2 0 0 -148 +0
realworld.run.windows.arm64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
2 2 0 0 -148 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,522 4 24,518 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch 95,441 48,737 46,704 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,837 36,804 12,033 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 605,285 369,873 235,412 0 (0.00%) 0 (0.00%)
libraries.crossgen2.windows.arm64.checked.mch 275,145 15 275,130 0 (0.00%) 1 (0.00%)
libraries.pmi.windows.arm64.checked.mch 307,049 6 307,043 0 (0.00%) 8 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 649,771 471,090 178,681 0 (0.00%) 8 (0.00%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 317,264 21,619 295,645 0 (0.00%) 6 (0.00%)
realworld.run.windows.arm64.checked.mch 33,303 3 33,300 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,212 8 24,204 0 (0.00%) 0 (0.00%)
2,380,829 948,159 1,432,670 0 (0.00%) 23 (0.00%)

jit-analyze output

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 171283108 (overridden on cmd)
Total bytes of diff: 171282960 (overridden on cmd)
Total bytes of delta: -148 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -112 : 33491.dasm (-41.18 % of base)
         -36 : 40559.dasm (-13.64 % of base)

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

Top method improvements (bytes):
        -112 (-41.18 % of base) : 33491.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -36 (-13.64 % of base) : 40559.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

Top method improvements (percentages):
        -112 (-41.18 % of base) : 33491.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -36 (-13.64 % of base) : 40559.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

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



windows x64

Diffs are based on 2,804,143 contexts (1,155,868 MinOpts, 1,648,275 FullOpts).

MISSED contexts: base: 3,198 (0.11%), diff: 3,226 (0.11%)

Overall (-427 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.windows.x64.Release.mch 313,414,947 -271
librariestestsnotieredcompilation.run.windows.x64.Release.mch 149,398,279 -156

FullOpts (-427 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.windows.x64.Release.mch 111,740,408 -271
librariestestsnotieredcompilation.run.windows.x64.Release.mch 138,769,766 -156

Example diffs

libraries_tests.run.windows.x64.Release.mch

-23 (-9.27%) : 622828.dasm - Moq.Match1[System.Memory1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; rsp based frame ; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 41
-; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd single-def <Moq.Match`1[System.Memory`1[ubyte]]> @@ -100,13 +100,6 @@ G_M16199_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 { ; gcrRegs +[rbx rsi] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M16199_IG03 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -126,8 +119,8 @@ G_M16199_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 { test edx, edx je SHORT G_M16199_IG08 jmp G_M16199_IG03
- ;; size=84 bbWeight=0 PerfScore 0.00 -G_M16199_IG11: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=64 bbWeight=0 PerfScore 0.00 +G_M16199_IG11: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbx] +[rdi] mov gword ptr [rsp+0x28], rdi mov dword ptr [rsp+0x30], ebp @@ -139,10 +132,10 @@ G_M16199_IG11: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ; gcrRegs -[rcx rsi rdi] ; gcr arg pop 0 mov edx, eax
- jmp G_M16199_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M16199_IG06 + ;; size=29 bbWeight=0 PerfScore 0.00
-; Total bytes of code 248, prolog size 15, PerfScore 32.50, instruction count 67, allocated bytes for code 248 (MethodHash=97c3c0b8) for method Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 225, prolog size 15, PerfScore 32.50, instruction count 63, allocated bytes for code 225 (MethodHash=97c3c0b8) for method Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info:

-23 (-9.27%) : 623880.dasm - Moq.Match1[System.ReadOnlyMemory1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; rsp based frame ; partially interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
-; 1 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 1 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rsi this class-hnd single-def <Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]> @@ -100,13 +100,6 @@ G_M6273_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {r ; gcrRegs +[rbx rsi] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M6273_IG03 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -126,8 +119,8 @@ G_M6273_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {r test edx, edx je SHORT G_M6273_IG08 jmp G_M6273_IG03
- ;; size=84 bbWeight=0 PerfScore 0.00 -G_M6273_IG11: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=64 bbWeight=0 PerfScore 0.00 +G_M6273_IG11: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax rbx] +[rdi] mov gword ptr [rsp+0x28], rdi mov dword ptr [rsp+0x30], ebp @@ -139,10 +132,10 @@ G_M6273_IG11: ; bbWeight=0, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0000 {}, ; gcrRegs -[rcx rsi rdi] ; gcr arg pop 0 mov edx, eax
- jmp G_M6273_IG06 - ;; size=32 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M6273_IG06 + ;; size=29 bbWeight=0 PerfScore 0.00
-; Total bytes of code 248, prolog size 15, PerfScore 32.50, instruction count 67, allocated bytes for code 248 (MethodHash=cc09e77e) for method Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 225, prolog size 15, PerfScore 32.50, instruction count 63, allocated bytes for code 225 (MethodHash=cc09e77e) for method Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info:

-24 (-8.11%) : 622815.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)

@@ -4,7 +4,7 @@ ; optimized code ; rsp based frame ; fully interruptible
-; 2 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
+; 2 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 6, 3.50) ref -> rsi this class-hnd single-def <Moq.Match> @@ -112,13 +112,6 @@ G_M33676_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 { ; gcrRegs +[rbx rsi] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je G_M33676_IG05 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -138,7 +131,7 @@ G_M33676_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 { test ecx, ecx je G_M33676_IG04 jmp G_M33676_IG05
- ;; size=96 bbWeight=0 PerfScore 0.00
+ ;; size=72 bbWeight=0 PerfScore 0.00
G_M33676_IG12: ; bbWeight=0, gcrefRegs=0148 {rbx rsi r8}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] +[r8] mov rcx, rsi @@ -156,7 +149,7 @@ G_M33676_IG13: ; bbWeight=0, epilog, nogc, extend tail.jmp [rax+0x20]<unknown method> ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 296, prolog size 20, PerfScore 28.75, instruction count 72, allocated bytes for code 296 (MethodHash=72e57c73) for method Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
+; Total bytes of code 272, prolog size 20, PerfScore 28.75, instruction count 68, allocated bytes for code 272 (MethodHash=72e57c73) for method Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
; ============================================================ Unwind Info:

-48 (-3.55%) : 622798.dasm - Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; rsp based frame ; fully interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1943
-; 8 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data
+; 8 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T07] ( 7, 5.96) ref -> rbx this class-hnd single-def <Moq.MethodExpectation> @@ -546,13 +546,6 @@ G_M62220_IG52: ; bbWeight=0, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefR ; gcrRegs -[rax r8] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je G_M62220_IG24 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -572,7 +565,7 @@ G_M62220_IG52: ; bbWeight=0, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefR test eax, eax je SHORT G_M62220_IG54 jmp G_M62220_IG24
- ;; size=88 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
G_M62220_IG53: ; bbWeight=0, gcrefRegs=40A9 {rax rbx rbp rdi r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rsi r12] +[rax rdi] mov gword ptr [rsp+0x28], rax @@ -608,13 +601,6 @@ G_M62220_IG56: ; bbWeight=0, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefR ; gcrRegs -[rax r8] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je G_M62220_IG39 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -634,7 +620,7 @@ G_M62220_IG56: ; bbWeight=0, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefR test eax, eax je SHORT G_M62220_IG58 jmp G_M62220_IG39
- ;; size=88 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
G_M62220_IG57: ; bbWeight=0, gcrefRegs=40A9 {rax rbx rbp rdi r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rsi r12] +[rax rdi] mov gword ptr [rsp+0x28], rax @@ -654,7 +640,7 @@ G_M62220_IG58: ; bbWeight=0, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 jmp G_M62220_IG43 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1351, prolog size 34, PerfScore 158.85, instruction count 325, allocated bytes for code 1351 (MethodHash=064b0cf3) for method Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)
+; Total bytes of code 1303, prolog size 34, PerfScore 158.85, instruction count 317, allocated bytes for code 1303 (MethodHash=064b0cf3) for method Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)
; ============================================================ Unwind Info:

-48 (-3.03%) : 622797.dasm - Moq.Setup:Matches(Moq.Invocation):ubyte:this (Tier1)

@@ -6,7 +6,7 @@ ; rsp based frame ; fully interruptible ; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 144
-; 9 inlinees with PGO data; 12 single block inlinees; 1 inlinees without PGO data
+; 9 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T10] ( 9, 5 ) ref -> rsi this class-hnd single-def <Moq.Setup> @@ -623,13 +623,6 @@ G_M3322_IG53: ; bbWeight=0, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byr ; gcrRegs -[rax r8] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je G_M3322_IG20 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -649,7 +642,7 @@ G_M3322_IG53: ; bbWeight=0, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byr test eax, eax je SHORT G_M3322_IG55 jmp G_M3322_IG20
- ;; size=88 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
G_M3322_IG54: ; bbWeight=0, gcrefRegs=A0E1 {rax rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rbx] +[rax] mov gword ptr [rsp+0x38], rax @@ -686,13 +679,6 @@ G_M3322_IG57: ; bbWeight=0, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byr ; gcrRegs -[rax r8] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je G_M3322_IG29 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -712,7 +698,7 @@ G_M3322_IG57: ; bbWeight=0, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byr test eax, eax je SHORT G_M3322_IG59 jmp G_M3322_IG29
- ;; size=88 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
G_M3322_IG58: ; bbWeight=0, gcrefRegs=A0E1 {rax rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rbx] +[rax] mov gword ptr [rsp+0x38], rax @@ -761,7 +747,7 @@ G_M3322_IG62: ; bbWeight=0, epilog, nogc, extend ret ;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1584, prolog size 29, PerfScore 178.06, instruction count 379, allocated bytes for code 1584 (MethodHash=4fbcf305) for method Moq.Setup:Matches(Moq.Invocation):ubyte:this (Tier1)
+; Total bytes of code 1536, prolog size 29, PerfScore 178.06, instruction count 371, allocated bytes for code 1536 (MethodHash=4fbcf305) for method Moq.Setup:Matches(Moq.Invocation):ubyte:this (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-12 (-7.36%) : 71993.dasm - Moq.Match`1[int]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

@@ -5,7 +5,7 @@ ; rsp 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; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> rsi this class-hnd single-def <Moq.Match`1[int]> @@ -13,23 +13,21 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> rsi class-hnd single-def "impAppendStmt" <System.Predicate`1[int]>
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp4 [V07,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Diagnostics.TraceEventType> -; V08 cse0 [V08,T03] ( 4, 2 ) ref -> rdi "CSE - aggressive"
+;* V07 tmp4 [V07,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Diagnostics.TraceEventType>
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M9654_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rdi
push rsi push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=12 bbWeight=1 PerfScore 2.75
G_M9654_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz test rbx, rbx je SHORT G_M9654_IG05 @@ -45,32 +43,23 @@ G_M9654_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre ;; size=2 bbWeight=0.25 PerfScore 0.50 G_M9654_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx rsi]
- mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - mov rcx, rdi - ; gcrRegs +[rcx] - call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M9654_IG06 - mov rcx, rdi
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax je SHORT G_M9654_IG10
- mov rcx, rdi
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] call [System.RuntimeType:GetGenericTypeDefinition():System.Type:this]
- ; gcrRegs -[rcx rdi] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] cmp rax, rdx jne SHORT G_M9654_IG10
- ;; size=60 bbWeight=0.50 PerfScore 7.00
+ ;; size=51 bbWeight=0.50 PerfScore 4.62
G_M9654_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax rdx] mov rsi, gword ptr [rsi+0x10] @@ -94,25 +83,23 @@ G_M9654_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 { ; gcrRegs +[rax] ;; size=10 bbWeight=0.50 PerfScore 2.12 G_M9654_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rsi
- pop rdi
tail.jmp [rax+0x18]<unknown method>
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M9654_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rcx rbx rsi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M9654_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 163, prolog size 13, PerfScore 23.62, instruction count 47, allocated bytes for code 163 (MethodHash=7193da49) for method Moq.Match`1[int]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
+; Total bytes of code 151, prolog size 12, PerfScore 19.75, instruction count 39, allocated bytes for code 151 (MethodHash=7193da49) for method Moq.Match`1[int]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -120,12 +107,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

-12 (-7.32%) : 57471.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

@@ -5,7 +5,7 @@ ; rsp 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; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments ; ; V00 this [V00,T01] ( 3, 2.50) ref -> rsi this class-hnd single-def <Moq.Match`1[System.Threading.CancellationToken]> @@ -13,23 +13,21 @@ ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type> ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> rsi class-hnd single-def "impAppendStmt" <System.Predicate`1[System.Threading.CancellationToken]>
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
-;* V07 tmp4 [V07,T04] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken> -; V08 cse0 [V08,T03] ( 4, 2 ) ref -> rdi "CSE - aggressive"
+;* V07 tmp4 [V07,T03] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Threading.CancellationToken>
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M42274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- push rdi
push rsi push rbx
- sub rsp, 32
+ sub rsp, 40
mov rsi, rcx ; gcrRegs +[rsi] mov rbx, rdx ; gcrRegs +[rbx]
- ;; size=13 bbWeight=1 PerfScore 3.75
+ ;; size=12 bbWeight=1 PerfScore 2.75
G_M42274_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz test rbx, rbx je SHORT G_M42274_IG05 @@ -45,32 +43,23 @@ G_M42274_IG04: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ;; size=2 bbWeight=0.25 PerfScore 0.50 G_M42274_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rbx rsi]
- mov rdi, 0xD1FFAB1E - ; gcrRegs +[rdi] - mov rcx, rdi - ; gcrRegs +[rcx] - call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M42274_IG06 - mov rcx, rdi
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 test eax, eax je SHORT G_M42274_IG10
- mov rcx, rdi
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx] call [System.RuntimeType:GetGenericTypeDefinition():System.Type:this]
- ; gcrRegs -[rcx rdi] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; gcr arg pop 0 mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] cmp rax, rdx jne SHORT G_M42274_IG10
- ;; size=60 bbWeight=0.50 PerfScore 7.00
+ ;; size=51 bbWeight=0.50 PerfScore 4.62
G_M42274_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax rdx] mov rsi, gword ptr [rsi+0x10] @@ -95,25 +84,23 @@ G_M42274_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcrRegs +[rax] ;; size=11 bbWeight=0.50 PerfScore 2.12 G_M42274_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rsi
- pop rdi
tail.jmp [rax+0x18]<unknown method>
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=10 bbWeight=0.50 PerfScore 1.62
G_M42274_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[rax rcx rdx rbx rsi] xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M42274_IG11: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 32
+ add rsp, 40
pop rbx pop rsi
- pop rdi
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 164, prolog size 13, PerfScore 23.62, instruction count 47, allocated bytes for code 164 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
+; Total bytes of code 152, prolog size 12, PerfScore 19.75, instruction count 39, allocated bytes for code 152 (MethodHash=f8335add) for method Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -121,12 +108,11 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x06 + CountOfUnwindCodes: 3
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_pgo.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries_tests.run.windows.x64.Release.mch 6 6 0 0 -271 +0
librariestestsnotieredcompilation.run.windows.x64.Release.mch 4 4 0 0 -156 +0
realworld.run.windows.x64.checked.mch 0 0 0 0 -0 +0
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
10 10 0 0 -427 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 126,092 61,702 64,390 3,198 (2.47%) 3,198 (2.47%)
benchmarks.run.windows.x64.checked.mch 40,686 7 40,679 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 132,953 76,184 56,769 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.x64.checked.mch 53,971 37,023 16,948 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 645,310 387,764 257,546 0 (0.00%) 0 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 274,712 15 274,697 0 (0.00%) 1 (0.00%)
libraries.pmi.windows.x64.checked.mch 310,562 6 310,556 0 (0.00%) 8 (0.00%)
libraries_tests.run.windows.x64.Release.mch 790,811 570,715 220,096 0 (0.00%) 11 (0.00%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 359,533 22,438 337,095 0 (0.00%) 8 (0.00%)
realworld.run.windows.x64.checked.mch 36,907 3 36,904 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,606 11 32,595 0 (0.00%) 0 (0.00%)
2,804,143 1,155,868 1,648,275 3,198 (0.11%) 3,226 (0.11%)

jit-analyze output

libraries_tests.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 313414947 (overridden on cmd)
Total bytes of diff: 313414676 (overridden on cmd)
Total bytes of delta: -271 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -105 : 622805.dasm (-2.74 % of base)
         -48 : 622798.dasm (-3.55 % of base)
         -48 : 622797.dasm (-3.03 % of base)
         -24 : 622815.dasm (-8.11 % of base)
         -23 : 623880.dasm (-9.27 % of base)
         -23 : 622828.dasm (-9.27 % of base)

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

Top method improvements (bytes):
        -105 (-2.74 % of base) : 622805.dasm - Moq.SetupCollection:FindLast(System.Func`2[Moq.Setup,ubyte]):Moq.Setup:this (Tier1)
         -48 (-3.55 % of base) : 622798.dasm - Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)
         -48 (-3.03 % of base) : 622797.dasm - Moq.Setup:Matches(Moq.Invocation):ubyte:this (Tier1)
         -24 (-8.11 % of base) : 622815.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -23 (-9.27 % of base) : 622828.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -23 (-9.27 % of base) : 623880.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)

Top method improvements (percentages):
         -23 (-9.27 % of base) : 622828.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -23 (-9.27 % of base) : 623880.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -24 (-8.11 % of base) : 622815.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -48 (-3.55 % of base) : 622798.dasm - Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)
         -48 (-3.03 % of base) : 622797.dasm - Moq.Setup:Matches(Moq.Invocation):ubyte:this (Tier1)
        -105 (-2.74 % of base) : 622805.dasm - Moq.SetupCollection:FindLast(System.Func`2[Moq.Setup,ubyte]):Moq.Setup:this (Tier1)

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


librariestestsnotieredcompilation.run.windows.x64.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 149398279 (overridden on cmd)
Total bytes of diff: 149398123 (overridden on cmd)
Total bytes of delta: -156 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -66 : 54300.dasm (-34.74 % of base)
         -66 : 48819.dasm (-34.74 % of base)
         -12 : 57471.dasm (-7.32 % of base)
         -12 : 71993.dasm (-7.36 % of base)

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

Top method improvements (bytes):
         -66 (-34.74 % of base) : 54300.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -66 (-34.74 % of base) : 48819.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -12 (-7.36 % of base) : 71993.dasm - Moq.Match`1[int]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -12 (-7.32 % of base) : 57471.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

Top method improvements (percentages):
         -66 (-34.74 % of base) : 54300.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -66 (-34.74 % of base) : 48819.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -12 (-7.36 % of base) : 71993.dasm - Moq.Match`1[int]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -12 (-7.32 % of base) : 57471.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

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