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.Memory
1[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.ReadOnlyMemory
1[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.Memory
1[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.ReadOnlyMemory
1[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.Memory
1[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.ReadOnlyMemory
1[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.Memory
1[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.ReadOnlyMemory
1[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).