Assembly Diffs

osx arm64

Diffs are based on 2,293,419 contexts (933,869 MinOpts, 1,359,550 FullOpts).

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

Overall (-260 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.osx.arm64.Release.mch 313,596,116 -108
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 161,380,836 -152

FullOpts (-260 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.osx.arm64.Release.mch 110,668,672 -108
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 148,332,748 -152

Example diffs

libraries_tests.run.osx.arm64.Release.mch

-36 (-10.98%) : 492801.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 49
-; 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, #2 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, #2 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%) : 493497.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, #2 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, #2 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%) : 492785.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, #2 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, #2 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%) : 39290.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 -152 +0
realworld.run.osx.arm64.checked.mch 0 0 0 0 -0 +0
5 5 0 0 -260 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 25,053 4 25,049 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.osx.arm64.checked.mch 83,954 48,224 35,730 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,600 37,748 10,852 0 (0.00%) 0 (0.00%)
coreclr_tests.run.osx.arm64.checked.mch 587,982 360,346 227,636 0 (0.00%) 0 (0.00%)
libraries.crossgen2.osx.arm64.checked.mch 265,043 15 265,028 0 (0.00%) 1 (0.00%)
libraries.pmi.osx.arm64.checked.mch 318,217 18 318,199 0 (0.00%) 8 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 632,606 465,976 166,630 0 (0.00%) 9 (0.00%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 300,364 21,535 278,829 0 (0.00%) 6 (0.00%)
realworld.run.osx.arm64.checked.mch 31,600 3 31,597 0 (0.00%) 0 (0.00%)
2,293,419 933,869 1,359,550 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: 313596116 (overridden on cmd)
Total bytes of diff: 313596008 (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 : 492785.dasm (-9.00 % of base)
         -36 : 493497.dasm (-10.98 % of base)
         -36 : 492801.dasm (-10.98 % of base)

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

Top method improvements (bytes):
         -36 (-9.00 % of base) : 492785.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 492801.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 493497.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) : 492801.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 493497.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-9.00 % of base) : 492785.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: 161380836 (overridden on cmd)
Total bytes of diff: 161380684 (overridden on cmd)
Total bytes of delta: -152 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -116 : 32083.dasm (-42.03 % of base)
         -36 : 39290.dasm (-13.64 % of base)

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

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

Top method improvements (percentages):
        -116 (-42.03 % of base) : 32083.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -36 (-13.64 % of base) : 39290.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,376,907 contexts (945,143 MinOpts, 1,431,764 FullOpts).

MISSED contexts: base: 5 (0.00%), diff: 29 (0.00%)

Overall (-260 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.windows.arm64.Release.mch 321,613,268 -108
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 171,355,492 -152

FullOpts (-260 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.windows.arm64.Release.mch 117,556,728 -108
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 158,296,296 -152

Example diffs

libraries_tests.run.windows.arm64.Release.mch

-36 (-10.98%) : 512827.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 51
-; 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%) : 513891.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.00%) : 512814.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, #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_IG05 - 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 @@ -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.windows.arm64.Release.mch

-36 (-13.64%) : 40566.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 3 3 0 0 -108 +0
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 2 2 0 0 -152 +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
5 5 0 0 -260 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,654 4 24,650 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch 96,699 49,319 47,380 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.arm64.checked.mch 49,429 37,113 12,316 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 605,280 369,845 235,435 5 (0.00%) 5 (0.00%)
libraries.crossgen2.windows.arm64.checked.mch 275,112 15 275,097 0 (0.00%) 1 (0.00%)
libraries.pmi.windows.arm64.checked.mch 307,374 6 307,368 0 (0.00%) 8 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 643,558 467,212 176,346 0 (0.00%) 9 (0.00%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 317,383 21,618 295,765 0 (0.00%) 6 (0.00%)
realworld.run.windows.arm64.checked.mch 33,259 3 33,256 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,159 8 24,151 0 (0.00%) 0 (0.00%)
2,376,907 945,143 1,431,764 5 (0.00%) 29 (0.00%)

jit-analyze output

libraries_tests.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: 321613268 (overridden on cmd)
Total bytes of diff: 321613160 (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 : 513891.dasm (-10.98 % of base)
         -36 : 512827.dasm (-10.98 % of base)
         -36 : 512814.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) : 512814.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 512827.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 513891.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) : 512827.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-10.98 % of base) : 513891.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -36 (-9.00 % of base) : 512814.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.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: 171355492 (overridden on cmd)
Total bytes of diff: 171355340 (overridden on cmd)
Total bytes of delta: -152 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -116 : 33490.dasm (-42.03 % of base)
         -36 : 40566.dasm (-13.64 % of base)

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

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

Top method improvements (percentages):
        -116 (-42.03 % of base) : 33490.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -36 (-13.64 % of base) : 40566.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,416,952 contexts (937,064 MinOpts, 1,479,888 FullOpts).

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

Overall (-354 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.windows.x64.Release.mch 281,663,453 -273
librariestestsnotieredcompilation.run.windows.x64.Release.mch 136,467,122 -81

FullOpts (-354 bytes)

Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.windows.x64.Release.mch 106,974,625 -273
librariestestsnotieredcompilation.run.windows.x64.Release.mch 126,174,325 -81

Example diffs

libraries_tests.run.windows.x64.Release.mch

-23 (-9.27%) : 537053.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:

-23 (-9.27%) : 536063.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 20
-; 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:

-24 (-8.11%) : 536050.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.53%) : 536035.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 1755
-; 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.95) ref -> rbx this class-hnd single-def <Moq.MethodExpectation> @@ -476,13 +476,6 @@ G_M62220_IG44: ; 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_IG16 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -502,7 +495,7 @@ G_M62220_IG44: ; bbWeight=0, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefR test eax, eax je SHORT G_M62220_IG46 jmp G_M62220_IG16
- ;; size=88 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
G_M62220_IG45: ; bbWeight=0, gcrefRegs=40A9 {rax rbx rbp rdi r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rsi r12] +[rax rdi] mov gword ptr [rsp+0x28], rax @@ -584,13 +577,6 @@ G_M62220_IG51: ; 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_IG28 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -610,7 +596,7 @@ G_M62220_IG51: ; bbWeight=0, gcrefRegs=5068 {rbx rbp rsi r12 r14}, byrefR test eax, eax je SHORT G_M62220_IG53 jmp G_M62220_IG28
- ;; size=88 bbWeight=0 PerfScore 0.00
+ ;; size=64 bbWeight=0 PerfScore 0.00
G_M62220_IG52: ; bbWeight=0, gcrefRegs=40A9 {rax rbx rbp rdi r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rdx rsi r12] +[rax rdi] mov gword ptr [rsp+0x28], rax @@ -630,7 +616,7 @@ G_M62220_IG53: ; bbWeight=0, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000 jmp G_M62220_IG32 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1361, prolog size 34, PerfScore 157.26, instruction count 323, allocated bytes for code 1361 (MethodHash=064b0cf3) for method Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)
+; Total bytes of code 1313, prolog size 34, PerfScore 157.26, instruction count 315, allocated bytes for code 1313 (MethodHash=064b0cf3) for method Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)
; ============================================================ Unwind Info:

-44 (-2.83%) : 536034.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 40
-; 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> @@ -370,14 +370,7 @@ G_M3322_IG33: ; bbWeight=0.01, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, test rbx, rbx jne G_M3322_IG41 ;; size=9 bbWeight=0.01 PerfScore 0.01
-G_M3322_IG34: ; bbWeight=0, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - call [System.RuntimeType:IsValueTypeImpl():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M3322_IG35
+G_M3322_IG34: ; bbWeight=0, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] call [System.RuntimeType:get_IsGenericType():ubyte:this] @@ -398,7 +391,7 @@ G_M3322_IG34: ; bbWeight=0, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byr movzx rax, al test eax, eax je G_M3322_IG43
- ;; size=87 bbWeight=0 PerfScore 0.00
+ ;; size=67 bbWeight=0 PerfScore 0.00
G_M3322_IG35: ; bbWeight=0.01, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx] mov rbp, gword ptr [rbp+0x10] @@ -627,13 +620,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_IG16 - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx]
call [System.RuntimeType:get_IsGenericType():ubyte:this] ; gcrRegs -[rcx] ; gcr arg pop 0 @@ -653,7 +639,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_IG16
- ;; 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 @@ -746,7 +732,7 @@ G_M3322_IG63: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=A0E9 {r jmp G_M3322_IG29 ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1557, prolog size 29, PerfScore 179.55, instruction count 378, allocated bytes for code 1557 (MethodHash=4fbcf305) for method Moq.Setup:Matches(Moq.Invocation):ubyte:this (Tier1)
+; Total bytes of code 1513, prolog size 29, PerfScore 179.55, instruction count 370, allocated bytes for code 1513 (MethodHash=4fbcf305) for method Moq.Setup:Matches(Moq.Invocation):ubyte:this (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-12 (-7.32%) : 40885.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)
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 -273 +0
librariestestsnotieredcompilation.run.windows.x64.Release.mch 2 2 0 0 -81 +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
8 8 0 0 -354 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x64.checked.mch 27,982 4 27,978 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 96,695 48,836 47,859 0 (0.00%) 0 (0.00%)
benchmarks.run_tiered.windows.x64.checked.mch 54,111 37,293 16,818 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 584,001 348,100 235,901 0 (0.00%) 0 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 274,685 15 274,670 0 (0.00%) 1 (0.00%)
libraries.pmi.windows.x64.checked.mch 310,920 6 310,914 0 (0.00%) 8 (0.00%)
libraries_tests.run.windows.x64.Release.mch 678,233 480,852 197,381 0 (0.00%) 9 (0.00%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 320,857 21,944 298,913 0 (0.00%) 6 (0.00%)
realworld.run.windows.x64.checked.mch 36,896 3 36,893 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,572 11 32,561 0 (0.00%) 0 (0.00%)
2,416,952 937,064 1,479,888 0 (0.00%) 24 (0.00%)

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

Detail diffs



Top file improvements (bytes):
        -111 : 536042.dasm (-2.96 % of base)
         -48 : 536035.dasm (-3.53 % of base)
         -44 : 536034.dasm (-2.83 % of base)
         -24 : 536050.dasm (-8.11 % of base)
         -23 : 536063.dasm (-9.27 % of base)
         -23 : 537053.dasm (-9.27 % of base)

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

Top method improvements (bytes):
        -111 (-2.96 % of base) : 536042.dasm - Moq.SetupCollection:FindLast(System.Func`2[Moq.Setup,ubyte]):Moq.Setup:this (Tier1)
         -48 (-3.53 % of base) : 536035.dasm - Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)
         -44 (-2.83 % of base) : 536034.dasm - Moq.Setup:Matches(Moq.Invocation):ubyte:this (Tier1)
         -24 (-8.11 % of base) : 536050.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -23 (-9.27 % of base) : 536063.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -23 (-9.27 % of base) : 537053.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) : 536063.dasm - Moq.Match`1[System.Memory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -23 (-9.27 % of base) : 537053.dasm - Moq.Match`1[System.ReadOnlyMemory`1[ubyte]]:Matches(System.Object,System.Type):ubyte:this (Tier1)
         -24 (-8.11 % of base) : 536050.dasm - Moq.Match:Moq.IMatcher.Matches(System.Object,System.Type):ubyte:this (Tier1)
         -48 (-3.53 % of base) : 536035.dasm - Moq.MethodExpectation:IsMatch(Moq.Invocation):ubyte:this (Tier1)
        -111 (-2.96 % of base) : 536042.dasm - Moq.SetupCollection:FindLast(System.Func`2[Moq.Setup,ubyte]):Moq.Setup:this (Tier1)
         -44 (-2.83 % of base) : 536034.dasm - Moq.Setup:Matches(Moq.Invocation):ubyte: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: 136467122 (overridden on cmd)
Total bytes of diff: 136467041 (overridden on cmd)
Total bytes of delta: -81 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -69 : 33653.dasm (-35.75 % of base)
         -12 : 40885.dasm (-7.32 % of base)

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

Top method improvements (bytes):
         -69 (-35.75 % of base) : 33653.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -12 (-7.32 % of base) : 40885.dasm - Moq.Match`1[System.Threading.CancellationToken]:Matches(System.Object,System.Type):ubyte:this (FullOpts)

Top method improvements (percentages):
         -69 (-35.75 % of base) : 33653.dasm - Moq.Match`1[System.__Canon]:Matches(System.Object,System.Type):ubyte:this (FullOpts)
         -12 (-7.32 % of base) : 40885.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).