Assembly Diffs
linux arm64
Diffs are based on 2,544,350 contexts (1,012,496 MinOpts, 1,531,854 FullOpts).
Overall (-64 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.linux.arm64.checked.mch |
518,928,384 |
-64 |
FullOpts (-64 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.linux.arm64.checked.mch |
167,326,840 |
-64 |
Example diffs
coreclr_tests.run.linux.arm64.checked.mch
-64 (-55.17%) : 252405.dasm - Test_b18049:main():int (FullOpts)
@@ -7,9 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 13 ) long -> x1
+;* V00 loc0 [V00,T00] ( 0, 0 ) long -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 3, 6 ) long -> x0 "CSE - aggressive"
+;* V02 cse0 [V02,T01] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 0
@@ -17,27 +17,7 @@ G_M6588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- add x2, x0, #4
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
- bls G_M6588_IG04
- ;; size=48 bbWeight=1 PerfScore 6.50
-G_M6588_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, x1, #4
- add x2, x0, #4
- cmp x1, x2
- blo G_M6588_IG03
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -49,12 +29,12 @@ G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov w0, #100
;; size=36 bbWeight=1 PerfScore 7.50
-G_M6588_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M6588_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 8, PerfScore 27.50, instruction count 29, allocated bytes for code 116 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +45,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
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 |
1 |
1 |
0 |
0 |
-64 |
+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 |
0 |
0 |
0 |
0 |
-0 |
+0 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+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 |
|
1 |
1 |
0 |
0 |
-64 |
+0 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm64.checked.mch |
36,750 |
3,694 |
33,056 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.linux.arm64.checked.mch |
150,824 |
57,618 |
93,206 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_tiered.linux.arm64.checked.mch |
64,740 |
48,874 |
15,866 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.linux.arm64.checked.mch |
636,247 |
390,444 |
245,803 |
0 (0.00%) |
0 (0.00%) |
libraries.crossgen2.linux.arm64.checked.mch |
265,473 |
15 |
265,458 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.arm64.checked.mch |
297,587 |
6 |
297,581 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.linux.arm64.Release.mch |
735,172 |
490,071 |
245,101 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
305,215 |
21,620 |
283,595 |
0 (0.00%) |
0 (0.00%) |
realworld.run.linux.arm64.checked.mch |
33,342 |
147 |
33,195 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.linux.arm64.checked.mch |
19,000 |
7 |
18,993 |
0 (0.00%) |
0 (0.00%) |
|
2,544,350 |
1,012,496 |
1,531,854 |
0 (0.00%) |
0 (0.00%) |
jit-analyze output
coreclr_tests.run.linux.arm64.checked.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: 518928384 (overridden on cmd)
Total bytes of diff: 518928320 (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):
-64 : 252405.dasm (-55.17 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-64 (-55.17 % of base) : 252405.dasm - Test_b18049:main():int (FullOpts)
Top method improvements (percentages):
-64 (-55.17 % of base) : 252405.dasm - Test_b18049:main():int (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
linux x64
Diffs are based on 2,535,371 contexts (984,668 MinOpts, 1,550,703 FullOpts).
Overall (-44 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.linux.x64.checked.mch |
418,408,742 |
-44 |
FullOpts (-44 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.linux.x64.checked.mch |
130,639,266 |
-44 |
Example diffs
coreclr_tests.run.linux.x64.checked.mch
-44 (-61.97%) : 237738.dasm - Test_b18049:main():int (FullOpts)
@@ -7,9 +7,8 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 13 ) long -> rdi
+;* V00 loc0 [V00,T00] ( 0, 0 ) long -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 3, 6 ) long -> rax "CSE - aggressive"
;
; Lcl frame size = 0
@@ -17,19 +16,7 @@ G_M6588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
mov rbp, rsp
;; size=4 bbWeight=1 PerfScore 1.25
-G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, 0xD1FFAB1E ; global ptr
- mov rax, 0xD1FFAB1E ; static handle
- mov rcx, 0xD1FFAB1E ; global ptr
- cmp rax, rcx
- jbe SHORT G_M6588_IG04
- ;; size=35 bbWeight=1 PerfScore 2.00
-G_M6588_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add rdi, 4
- cmp rdi, rax
- jb SHORT G_M6588_IG03
- ;; size=9 bbWeight=4 PerfScore 6.00
-G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
call [<unknown method>]
@@ -37,12 +24,12 @@ G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov eax, 100
;; size=21 bbWeight=1 PerfScore 3.50
-G_M6588_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M6588_IG03: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 71, prolog size 4, PerfScore 14.25, instruction count 15, allocated bytes for code 71 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
+; Total bytes of code 27, prolog size 4, PerfScore 6.25, instruction count 7, allocated bytes for code 27 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
; ============================================================
Unwind Info:
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 |
1 |
1 |
0 |
0 |
-44 |
+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 |
0 |
0 |
0 |
0 |
-0 |
+0 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+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 |
|
1 |
1 |
0 |
0 |
-44 |
+0 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.x64.checked.mch |
31,764 |
2,052 |
29,712 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.linux.x64.checked.mch |
155,049 |
57,390 |
97,659 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_tiered.linux.x64.checked.mch |
58,135 |
43,840 |
14,295 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.linux.x64.checked.mch |
608,390 |
362,472 |
245,918 |
0 (0.00%) |
0 (0.00%) |
libraries.crossgen2.linux.x64.checked.mch |
265,301 |
15 |
265,286 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.linux.x64.checked.mch |
298,707 |
6 |
298,701 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.linux.x64.Release.mch |
751,536 |
496,905 |
254,631 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
305,837 |
21,933 |
283,904 |
0 (0.00%) |
0 (0.00%) |
realworld.run.linux.x64.checked.mch |
33,245 |
45 |
33,200 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.linux.x64.checked.mch |
27,407 |
10 |
27,397 |
0 (0.00%) |
0 (0.00%) |
|
2,535,371 |
984,668 |
1,550,703 |
0 (0.00%) |
0 (0.00%) |
jit-analyze output
coreclr_tests.run.linux.x64.checked.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: 418408742 (overridden on cmd)
Total bytes of diff: 418408698 (overridden on cmd)
Total bytes of delta: -44 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-44 : 237738.dasm (-61.97 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-44 (-61.97 % of base) : 237738.dasm - Test_b18049:main():int (FullOpts)
Top method improvements (percentages):
-44 (-61.97 % of base) : 237738.dasm - Test_b18049:main():int (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
osx arm64
Diffs are based on 2,293,443 contexts (933,876 MinOpts, 1,359,567 FullOpts).
Overall (-64 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.osx.arm64.checked.mch |
491,746,024 |
-64 |
FullOpts (-64 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.osx.arm64.checked.mch |
153,251,180 |
-64 |
Example diffs
coreclr_tests.run.osx.arm64.checked.mch
-64 (-55.17%) : 248062.dasm - Test_b18049:main():int (FullOpts)
@@ -7,9 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 13 ) long -> x1
+;* V00 loc0 [V00,T00] ( 0, 0 ) long -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 3, 6 ) long -> x0 "CSE - aggressive"
+;* V02 cse0 [V02,T01] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 0
@@ -17,27 +17,7 @@ G_M6588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- add x2, x0, #4
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
- bls G_M6588_IG04
- ;; size=48 bbWeight=1 PerfScore 6.50
-G_M6588_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, x1, #4
- add x2, x0, #4
- cmp x1, x2
- blo G_M6588_IG03
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -49,12 +29,12 @@ G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov w0, #100
;; size=36 bbWeight=1 PerfScore 7.50
-G_M6588_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M6588_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 8, PerfScore 27.50, instruction count 29, allocated bytes for code 116 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +45,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
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 |
1 |
1 |
0 |
0 |
-64 |
+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 |
0 |
0 |
0 |
0 |
-0 |
+0 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.osx.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
|
1 |
1 |
0 |
0 |
-64 |
+0 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.osx.arm64.checked.mch |
25,053 |
4 |
25,049 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.osx.arm64.checked.mch |
83,954 |
48,224 |
35,730 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_tiered.osx.arm64.checked.mch |
48,600 |
37,748 |
10,852 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.osx.arm64.checked.mch |
587,982 |
360,346 |
227,636 |
0 (0.00%) |
0 (0.00%) |
libraries.crossgen2.osx.arm64.checked.mch |
265,044 |
15 |
265,029 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.osx.arm64.checked.mch |
318,225 |
18 |
318,207 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.osx.arm64.Release.mch |
632,615 |
465,983 |
166,632 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
300,370 |
21,535 |
278,835 |
0 (0.00%) |
0 (0.00%) |
realworld.run.osx.arm64.checked.mch |
31,600 |
3 |
31,597 |
0 (0.00%) |
0 (0.00%) |
|
2,293,443 |
933,876 |
1,359,567 |
0 (0.00%) |
0 (0.00%) |
jit-analyze output
coreclr_tests.run.osx.arm64.checked.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: 491746024 (overridden on cmd)
Total bytes of diff: 491745960 (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):
-64 : 248062.dasm (-55.17 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-64 (-55.17 % of base) : 248062.dasm - Test_b18049:main():int (FullOpts)
Top method improvements (percentages):
-64 (-55.17 % of base) : 248062.dasm - Test_b18049:main():int (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
windows arm64
Diffs are based on 2,376,931 contexts (945,150 MinOpts, 1,431,781 FullOpts).
MISSED contexts: 5 (0.00%)
Overall (-64 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.windows.arm64.checked.mch |
505,264,984 |
-64 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
3,995,200 |
+0 |
FullOpts (-64 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.windows.arm64.checked.mch |
163,807,860 |
-64 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
3,994,188 |
+0 |
Example diffs
coreclr_tests.run.windows.arm64.checked.mch
-64 (-55.17%) : 254488.dasm - Test_b18049:main():int (FullOpts)
@@ -7,9 +7,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 13 ) long -> x1
+;* V00 loc0 [V00,T00] ( 0, 0 ) long -> zero-ref
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 3, 6 ) long -> x0 "CSE - aggressive"
+;* V02 cse0 [V02,T01] ( 0, 0 ) long -> zero-ref "CSE - aggressive"
;
; Lcl frame size = 0
@@ -17,27 +17,7 @@ G_M6588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
-G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- add x2, x0, #4
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, x3
- bls G_M6588_IG04
- ;; size=48 bbWeight=1 PerfScore 6.50
-G_M6588_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, x1, #4
- add x2, x0, #4
- cmp x1, x2
- blo G_M6588_IG03
- ;; size=16 bbWeight=4 PerfScore 10.00
-G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -49,12 +29,12 @@ G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov w0, #100
;; size=36 bbWeight=1 PerfScore 7.50
-G_M6588_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M6588_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 8, PerfScore 27.50, instruction count 29, allocated bytes for code 116 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
+; Total bytes of code 52, prolog size 8, PerfScore 11.00, instruction count 13, allocated bytes for code 52 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +45,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
smoke_tests.nativeaot.windows.arm64.checked.mch
+0 (0.00%) : 14102.dasm - System.Threading.Win32ThreadPoolNativeOverlapped:AllocateNew():ulong (FullOpts)
@@ -7,19 +7,19 @@
; fully interruptible
; Final local variable assignments
;
-; V00 loc0 [V00,T05] ( 9, 23 ) long -> x0
-; V01 loc1 [V01,T15] ( 4, 2 ) long -> x20
-; V02 loc2 [V02,T13] ( 3, 5 ) ref -> x21 class-hnd exact single-def <System.Threading.Win32ThreadPoolNativeOverlapped+OverlappedData>
+; V00 loc0 [V00,T05] ( 9, 23 ) long -> x1
+; V01 loc1 [V01,T16] ( 4, 2 ) long -> x20
+; V02 loc2 [V02,T14] ( 3, 5 ) ref -> x21 class-hnd exact single-def <System.Threading.Win32ThreadPoolNativeOverlapped+OverlappedData>
; V03 loc3 [V03,T02] ( 10, 34.75) int -> x19
; V04 loc4 [V04,T03] ( 11, 33 ) ref -> x25 class-hnd <<unknown class>>
;* V05 loc5 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc6 [V06,T01] ( 8, 66 ) int -> x2
; V07 loc7 [V07 ] ( 4, 14 ) ref -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T06] ( 4, 20 ) long -> x0 "dup spill"
+; V09 tmp1 [V09,T06] ( 4, 20 ) long -> x1 "dup spill"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.Win32ThreadPoolNativeOverlapped+OverlappedData>
; V11 tmp3 [V11,T08] ( 4, 12 ) int -> x2
-; V12 tmp4 [V12,T16] ( 3, 1.50) long -> x20 "Inline stloc first use temp"
+; V12 tmp4 [V12,T17] ( 3, 1.50) long -> x20 "Inline stloc first use temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V15 tmp7 [V15,T07] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
@@ -27,14 +27,15 @@
;* V17 tmp9 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "updating class info" <System.Threading.Win32ThreadPoolNativeOverlapped+OverlappedData>
;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp12 [V20,T14] ( 3, 4 ) long -> x0 "Single return block return value"
+; V20 tmp12 [V20,T15] ( 3, 4 ) long -> x1 "Single return block return value"
; V21 PInvokeFrame [V21 ] ( 3, 2 ) struct (40) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V22 tmp14 [V22,T04] ( 3, 24 ) ref -> x0 "arr expr"
-; V23 cse0 [V23,T11] ( 3, 8.75) long -> x23 hoist "CSE - aggressive"
-; V24 cse1 [V24,T12] ( 3, 5.50) long -> x22 "CSE - aggressive"
-; V25 cse2 [V25,T09] ( 5, 10.50) long -> x19 "CSE - aggressive"
-; V26 cse3 [V26,T10] ( 4, 9.25) long -> x24 hoist "CSE - aggressive"
-; V27 rat0 [V27,T00] ( 3, 96 ) int -> x2 "ReplaceWithLclVar is creating a new local variable"
+; V23 cse0 [V23,T10] ( 3, 8.75) long -> x23 hoist "CSE - aggressive"
+; V24 cse1 [V24,T13] ( 3, 5.50) long -> x22 "CSE - aggressive"
+; V25 cse2 [V25,T12] ( 3, 6 ) long -> x0 "CSE - aggressive"
+; V26 cse3 [V26,T11] ( 4, 6.50) long -> x19 "CSE - aggressive"
+; V27 cse4 [V27,T09] ( 4, 9.25) long -> x24 hoist "CSE - aggressive"
+; V28 rat0 [V28,T00] ( 3, 96 ) int -> x2 "ReplaceWithLclVar is creating a new local variable"
; TEMP_01 long -> [fp+0x40]
;
; Lcl frame size = 64
@@ -53,20 +54,19 @@ G_M59694_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
adrp x19, [HIGH RELOC #0xD1FFAB1E]
add x19, x19, [LOW RELOC #0xD1FFAB1E]
add x0, x19, #8
- ldar x0, [x0]
- cbz x0, G_M59694_IG04
+ ldar x1, [x0]
+ cbz x1, G_M59694_IG04
;; size=20 bbWeight=1 PerfScore 5.50
G_M59694_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, x19, #8
- ldr x2, [x0, #0x20]
- mov x3, x0
- casal x3, x2, [x1]
- cmp x3, x0
+ add x2, x19, #8
+ ldr x3, [x1, #0x20]
+ mov x4, x1
+ casal x4, x3, [x2]
+ cmp x4, x1
beq G_M59694_IG17
- add x0, x19, #8
- ldar x0, [x0]
- cbnz x0, G_M59694_IG03
- ;; size=36 bbWeight=4 PerfScore 52.00
+ ldar x1, [x0]
+ cbnz x1, G_M59694_IG03
+ ;; size=32 bbWeight=4 PerfScore 50.00
G_M59694_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, #48
str x0, [fp, #0x40] // [TEMP_01]
@@ -84,7 +84,7 @@ G_M59694_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
add x0, fp, #24 // [V21 PInvokeFrame]
bl CORINFO_HELP_JIT_PINVOKE_END
; gcr arg pop 0
- cbz x20, G_M59694_IG23
+ cbz x20, G_M59694_IG24
stp xzr, xzr, [x20]
stp xzr, xzr, [x20, #0x10]
stp xzr, xzr, [x20, #0x20]
@@ -176,7 +176,7 @@ G_M59694_IG16: ; bbWeight=4, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w19, w1
- bhs G_M59694_IG22
+ bhs G_M59694_IG23
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -187,7 +187,7 @@ G_M59694_IG16: ; bbWeight=4, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000
ldr w0, [x25, #0x08]
; gcrRegs -[x0]
cmp w19, w0
- bhs G_M59694_IG22
+ bhs G_M59694_IG23
add x0, x25, #16
; byrRegs +[x0]
lsl x1, x24, #3
@@ -202,7 +202,7 @@ G_M59694_IG16: ; bbWeight=4, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000
;; size=64 bbWeight=4 PerfScore 84.00
G_M59694_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x21]
- str xzr, [x0, #0x20]
+ str xzr, [x1, #0x20]
b G_M59694_IG21
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M59694_IG18: ; bbWeight=2, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000 {}, byref
@@ -213,7 +213,7 @@ G_M59694_IG18: ; bbWeight=2, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000
G_M59694_IG19: ; bbWeight=0.50, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000 {}, byref, isz
ldr w0, [x25, #0x08]
cmp w19, w0
- bhs G_M59694_IG22
+ bhs G_M59694_IG23
add x0, x25, #16
; byrRegs +[x0]
ldr x0, [x0, x24, LSL #3]
@@ -234,9 +234,12 @@ G_M59694_IG19: ; bbWeight=0.50, gcrefRegs=2200000 {x21 x25}, byrefRegs=00
;; size=48 bbWeight=0.50 PerfScore 6.25
G_M59694_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w19, [x20, #0x28]
- mov x0, x20
+ mov x1, x20
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M59694_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M59694_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M59694_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x90]
ldp x25, x26, [sp, #0x80]
ldp x23, x24, [sp, #0x70]
@@ -245,17 +248,17 @@ G_M59694_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0xA0
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M59694_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M59694_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M59694_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59694_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl System.ThrowHelper:ThrowOutOfMemoryException()
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 504, prolog size 32, PerfScore 357.50, instruction count 126, allocated bytes for code 504 (MethodHash=d28416d1) for method System.Threading.Win32ThreadPoolNativeOverlapped:AllocateNew():ulong (FullOpts)
+; Total bytes of code 504, prolog size 32, PerfScore 356.00, instruction count 126, allocated bytes for code 504 (MethodHash=d28416d1) for method System.Threading.Win32ThreadPoolNativeOverlapped:AllocateNew():ulong (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 8651.dasm - System.Threading.Win32ThreadPoolNativeOverlapped:AllocateNew():ulong (FullOpts)
@@ -8,19 +8,19 @@
; control-flow guard enabled
; Final local variable assignments
;
-; V00 loc0 [V00,T05] ( 9, 23 ) long -> x0
-; V01 loc1 [V01,T15] ( 4, 2 ) long -> x20
-; V02 loc2 [V02,T13] ( 3, 5 ) ref -> x21 class-hnd exact single-def <System.Threading.Win32ThreadPoolNativeOverlapped+OverlappedData>
+; V00 loc0 [V00,T05] ( 9, 23 ) long -> x1
+; V01 loc1 [V01,T16] ( 4, 2 ) long -> x20
+; V02 loc2 [V02,T14] ( 3, 5 ) ref -> x21 class-hnd exact single-def <System.Threading.Win32ThreadPoolNativeOverlapped+OverlappedData>
; V03 loc3 [V03,T02] ( 10, 34.75) int -> x19
; V04 loc4 [V04,T03] ( 11, 33 ) ref -> x25 class-hnd <<unknown class>>
;* V05 loc5 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc6 [V06,T01] ( 8, 66 ) int -> x2
; V07 loc7 [V07 ] ( 4, 14 ) ref -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T06] ( 4, 20 ) long -> x0 "dup spill"
+; V09 tmp1 [V09,T06] ( 4, 20 ) long -> x1 "dup spill"
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Threading.Win32ThreadPoolNativeOverlapped+OverlappedData>
; V11 tmp3 [V11,T08] ( 4, 12 ) int -> x2
-; V12 tmp4 [V12,T16] ( 3, 1.50) long -> x20 "Inline stloc first use temp"
+; V12 tmp4 [V12,T17] ( 3, 1.50) long -> x20 "Inline stloc first use temp"
;* V13 tmp5 [V13 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V14 tmp6 [V14 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V15 tmp7 [V15,T07] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
@@ -28,14 +28,15 @@
;* V17 tmp9 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "updating class info" <System.Threading.Win32ThreadPoolNativeOverlapped+OverlappedData>
;* V19 tmp11 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp12 [V20,T14] ( 3, 4 ) long -> x0 "Single return block return value"
+; V20 tmp12 [V20,T15] ( 3, 4 ) long -> x1 "Single return block return value"
; V21 PInvokeFrame [V21 ] ( 3, 2 ) struct (40) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V22 tmp14 [V22,T04] ( 3, 24 ) ref -> x0 "arr expr"
-; V23 cse0 [V23,T11] ( 3, 8.75) long -> x23 hoist "CSE - aggressive"
-; V24 cse1 [V24,T12] ( 3, 5.50) long -> x22 "CSE - aggressive"
-; V25 cse2 [V25,T09] ( 5, 10.50) long -> x19 "CSE - aggressive"
-; V26 cse3 [V26,T10] ( 4, 9.25) long -> x24 hoist "CSE - aggressive"
-; V27 rat0 [V27,T00] ( 3, 96 ) int -> x2 "ReplaceWithLclVar is creating a new local variable"
+; V23 cse0 [V23,T10] ( 3, 8.75) long -> x23 hoist "CSE - aggressive"
+; V24 cse1 [V24,T13] ( 3, 5.50) long -> x22 "CSE - aggressive"
+; V25 cse2 [V25,T12] ( 3, 6 ) long -> x0 "CSE - aggressive"
+; V26 cse3 [V26,T11] ( 4, 6.50) long -> x19 "CSE - aggressive"
+; V27 cse4 [V27,T09] ( 4, 9.25) long -> x24 hoist "CSE - aggressive"
+; V28 rat0 [V28,T00] ( 3, 96 ) int -> x2 "ReplaceWithLclVar is creating a new local variable"
; TEMP_01 long -> [fp+0x40]
;
; Lcl frame size = 64
@@ -54,20 +55,19 @@ G_M59694_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
adrp x19, [HIGH RELOC #0xD1FFAB1E]
add x19, x19, [LOW RELOC #0xD1FFAB1E]
add x0, x19, #8
- ldar x0, [x0]
- cbz x0, G_M59694_IG04
+ ldar x1, [x0]
+ cbz x1, G_M59694_IG04
;; size=20 bbWeight=1 PerfScore 5.50
G_M59694_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add x1, x19, #8
- ldr x2, [x0, #0x20]
- mov x3, x0
- casal x3, x2, [x1]
- cmp x3, x0
+ add x2, x19, #8
+ ldr x3, [x1, #0x20]
+ mov x4, x1
+ casal x4, x3, [x2]
+ cmp x4, x1
beq G_M59694_IG17
- add x0, x19, #8
- ldar x0, [x0]
- cbnz x0, G_M59694_IG03
- ;; size=36 bbWeight=4 PerfScore 52.00
+ ldar x1, [x0]
+ cbnz x1, G_M59694_IG03
+ ;; size=32 bbWeight=4 PerfScore 50.00
G_M59694_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, #48
str x0, [fp, #0x40] // [TEMP_01]
@@ -85,7 +85,7 @@ G_M59694_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
add x0, fp, #24 // [V21 PInvokeFrame]
bl CORINFO_HELP_JIT_PINVOKE_END
; gcr arg pop 0
- cbz x20, G_M59694_IG23
+ cbz x20, G_M59694_IG24
stp xzr, xzr, [x20]
stp xzr, xzr, [x20, #0x10]
stp xzr, xzr, [x20, #0x20]
@@ -177,7 +177,7 @@ G_M59694_IG16: ; bbWeight=4, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w19, w1
- bhs G_M59694_IG22
+ bhs G_M59694_IG23
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -188,7 +188,7 @@ G_M59694_IG16: ; bbWeight=4, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000
ldr w0, [x25, #0x08]
; gcrRegs -[x0]
cmp w19, w0
- bhs G_M59694_IG22
+ bhs G_M59694_IG23
add x0, x25, #16
; byrRegs +[x0]
lsl x1, x24, #3
@@ -203,7 +203,7 @@ G_M59694_IG16: ; bbWeight=4, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000
;; size=64 bbWeight=4 PerfScore 84.00
G_M59694_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x21]
- str xzr, [x0, #0x20]
+ str xzr, [x1, #0x20]
b G_M59694_IG21
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M59694_IG18: ; bbWeight=2, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000 {}, byref
@@ -214,7 +214,7 @@ G_M59694_IG18: ; bbWeight=2, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000
G_M59694_IG19: ; bbWeight=0.50, gcrefRegs=2200000 {x21 x25}, byrefRegs=0000 {}, byref, isz
ldr w0, [x25, #0x08]
cmp w19, w0
- bhs G_M59694_IG22
+ bhs G_M59694_IG23
add x0, x25, #16
; byrRegs +[x0]
ldr x0, [x0, x24, LSL #3]
@@ -235,9 +235,12 @@ G_M59694_IG19: ; bbWeight=0.50, gcrefRegs=2200000 {x21 x25}, byrefRegs=00
;; size=48 bbWeight=0.50 PerfScore 6.25
G_M59694_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str w19, [x20, #0x28]
- mov x0, x20
+ mov x1, x20
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M59694_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M59694_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M59694_IG22: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x90]
ldp x25, x26, [sp, #0x80]
ldp x23, x24, [sp, #0x70]
@@ -246,17 +249,17 @@ G_M59694_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldp fp, lr, [sp], #0xA0
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M59694_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M59694_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M59694_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M59694_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl System.ThrowHelper:ThrowOutOfMemoryException()
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 504, prolog size 32, PerfScore 357.50, instruction count 126, allocated bytes for code 504 (MethodHash=d28416d1) for method System.Threading.Win32ThreadPoolNativeOverlapped:AllocateNew():ulong (FullOpts)
+; Total bytes of code 504, prolog size 32, PerfScore 356.00, instruction count 126, allocated bytes for code 504 (MethodHash=d28416d1) for method System.Threading.Win32ThreadPoolNativeOverlapped:AllocateNew():ulong (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 14103.dasm - System.Threading.Win32ThreadPoolNativeOverlapped:Free(ulong) (FullOpts)
@@ -8,11 +8,12 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 6, 20 ) long -> x19 single-def
-; V01 loc0 [V01,T00] ( 4, 32 ) long -> x1
+; V01 loc0 [V01,T00] ( 4, 32 ) long -> x2
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V04 tmp2 [V04,T04] ( 3, 6 ) int -> x1 "index expr"
-; V05 cse0 [V05,T02] ( 3, 17 ) long -> x0 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T04] ( 3, 6 ) ref -> x0 single-def "arr expr"
+; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr"
+; V05 cse0 [V05,T03] ( 2, 9 ) long -> x1 hoist "CSE - aggressive"
+; V06 cse1 [V06,T02] ( 3, 10 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -46,17 +47,17 @@ G_M14785_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, xzr, [x19, #0x10]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ;; size=64 bbWeight=1 PerfScore 25.00
-G_M14785_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x1, x0, #8
- ldar x1, [x1]
- str x1, [x19, #0x20]
- add x2, x0, #8
- mov x3, x1
- casal x3, x19, [x2]
- cmp x3, x1
+ ;; size=68 bbWeight=1 PerfScore 25.50
+G_M14785_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldar x2, [x1]
+ str x2, [x19, #0x20]
+ add x3, x0, #8
+ mov x4, x2
+ casal x4, x19, [x3]
+ cmp x4, x2
bne G_M14785_IG03
- ;; size=32 bbWeight=8 PerfScore 80.00
+ ;; size=28 bbWeight=8 PerfScore 76.00
G_M14785_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -68,7 +69,7 @@ G_M14785_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 16, PerfScore 112.00, instruction count 33, allocated bytes for code 132 (MethodHash=edc3c63e) for method System.Threading.Win32ThreadPoolNativeOverlapped:Free(ulong) (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 108.50, instruction count 33, allocated bytes for code 132 (MethodHash=edc3c63e) for method System.Threading.Win32ThreadPoolNativeOverlapped:Free(ulong) (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 8652.dasm - System.Threading.Win32ThreadPoolNativeOverlapped:Free(ulong) (FullOpts)
@@ -9,11 +9,12 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 6, 20 ) long -> x19 single-def
-; V01 loc0 [V01,T00] ( 4, 32 ) long -> x1
+; V01 loc0 [V01,T00] ( 4, 32 ) long -> x2
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T03] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V04 tmp2 [V04,T04] ( 3, 6 ) int -> x1 "index expr"
-; V05 cse0 [V05,T02] ( 3, 17 ) long -> x0 hoist "CSE - aggressive"
+; V03 tmp1 [V03,T04] ( 3, 6 ) ref -> x0 single-def "arr expr"
+; V04 tmp2 [V04,T05] ( 3, 6 ) int -> x1 "index expr"
+; V05 cse0 [V05,T03] ( 2, 9 ) long -> x1 hoist "CSE - aggressive"
+; V06 cse1 [V06,T02] ( 3, 10 ) long -> x0 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -47,17 +48,17 @@ G_M14785_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, xzr, [x19, #0x10]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ;; size=64 bbWeight=1 PerfScore 25.00
-G_M14785_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x1, x0, #8
- ldar x1, [x1]
- str x1, [x19, #0x20]
- add x2, x0, #8
- mov x3, x1
- casal x3, x19, [x2]
- cmp x3, x1
+ ;; size=68 bbWeight=1 PerfScore 25.50
+G_M14785_IG03: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldar x2, [x1]
+ str x2, [x19, #0x20]
+ add x3, x0, #8
+ mov x4, x2
+ casal x4, x19, [x3]
+ cmp x4, x2
bne G_M14785_IG03
- ;; size=32 bbWeight=8 PerfScore 80.00
+ ;; size=28 bbWeight=8 PerfScore 76.00
G_M14785_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -69,7 +70,7 @@ G_M14785_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 16, PerfScore 112.00, instruction count 33, allocated bytes for code 132 (MethodHash=edc3c63e) for method System.Threading.Win32ThreadPoolNativeOverlapped:Free(ulong) (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 108.50, instruction count 33, allocated bytes for code 132 (MethodHash=edc3c63e) for method System.Threading.Win32ThreadPoolNativeOverlapped:Free(ulong) (FullOpts)
; ============================================================
Unwind Info:
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 |
1 |
1 |
0 |
0 |
-64 |
+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 |
0 |
0 |
0 |
0 |
-0 |
+0 |
realworld.run.windows.arm64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
4 |
0 |
0 |
4 |
-0 |
+0 |
|
5 |
1 |
0 |
4 |
-64 |
+0 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.arm64.checked.mch |
24,654 |
4 |
24,650 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.windows.arm64.checked.mch |
96,699 |
49,319 |
47,380 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_tiered.windows.arm64.checked.mch |
49,429 |
37,113 |
12,316 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.windows.arm64.checked.mch |
605,280 |
369,845 |
235,435 |
5 (0.00%) |
5 (0.00%) |
libraries.crossgen2.windows.arm64.checked.mch |
275,113 |
15 |
275,098 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.arm64.checked.mch |
307,382 |
6 |
307,376 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.windows.arm64.Release.mch |
643,567 |
467,219 |
176,348 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
317,389 |
21,618 |
295,771 |
0 (0.00%) |
0 (0.00%) |
realworld.run.windows.arm64.checked.mch |
33,259 |
3 |
33,256 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.windows.arm64.checked.mch |
24,159 |
8 |
24,151 |
0 (0.00%) |
0 (0.00%) |
|
2,376,931 |
945,150 |
1,431,781 |
5 (0.00%) |
5 (0.00%) |
jit-analyze output
coreclr_tests.run.windows.arm64.checked.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: 505264984 (overridden on cmd)
Total bytes of diff: 505264920 (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):
-64 : 254488.dasm (-55.17 % of base)
1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-64 (-55.17 % of base) : 254488.dasm - Test_b18049:main():int (FullOpts)
Top method improvements (percentages):
-64 (-55.17 % of base) : 254488.dasm - Test_b18049:main():int (FullOpts)
1 total methods with Code Size differences (1 improved, 0 regressed).
smoke_tests.nativeaot.windows.arm64.checked.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: 3995200 (overridden on cmd)
Total bytes of diff: 3995200 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 4 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
windows x64
Diffs are based on 2,416,976 contexts (937,071 MinOpts, 1,479,905 FullOpts).
Overall (-196 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.windows.x64.checked.mch |
407,341,578 |
-196 |
FullOpts (-196 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
coreclr_tests.run.windows.x64.checked.mch |
126,875,214 |
-196 |
Example diffs
coreclr_tests.run.windows.x64.checked.mch
-44 (-59.46%) : 521668.dasm - Test_b18049:main():int (FullOpts)
@@ -7,28 +7,15 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T00] ( 4, 13 ) long -> rcx
+;* V00 loc0 [V00,T00] ( 0, 0 ) long -> zero-ref
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 cse0 [V02,T01] ( 3, 6 ) long -> rax "CSE - aggressive"
;
; Lcl frame size = 40
G_M6588_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
;; size=4 bbWeight=1 PerfScore 0.25
-G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rcx, 0xD1FFAB1E ; global ptr
- mov rax, 0xD1FFAB1E ; static handle
- mov rdx, 0xD1FFAB1E ; global ptr
- cmp rax, rdx
- jbe SHORT G_M6588_IG04
- ;; size=35 bbWeight=1 PerfScore 2.00
-G_M6588_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add rcx, 4
- cmp rcx, rax
- jb SHORT G_M6588_IG03
- ;; size=9 bbWeight=4 PerfScore 6.00
-G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M6588_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
call [<unknown method>]
@@ -36,12 +23,12 @@ G_M6588_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov eax, 100
;; size=21 bbWeight=1 PerfScore 3.50
-G_M6588_IG05: ; bbWeight=1, epilog, nogc, extend
+G_M6588_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 74, prolog size 4, PerfScore 13.00, instruction count 14, allocated bytes for code 74 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
+; Total bytes of code 30, prolog size 4, PerfScore 5.00, instruction count 6, allocated bytes for code 30 (MethodHash=1b81e643) for method Test_b18049:main():int (FullOpts)
; ============================================================
Unwind Info:
-23 (-2.80%) : 473897.dasm - :.LanguageSupport.InitializeNative(ulong) (FullOpts)
@@ -21,13 +21,13 @@
; V10 tmp9 [V10,T13] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V12 tmp11 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T08] ( 4, 7 ) int -> r14 "Inline stloc first use temp"
-; V14 tmp13 [V14,T00] ( 6, 34 ) long -> rdi "Inlining Arg"
+; V13 tmp12 [V13,T08] ( 4, 7 ) int -> r15 "Inline stloc first use temp"
+; V14 tmp13 [V14,T01] ( 5, 29 ) long -> r14 "Inlining Arg"
;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V16 tmp15 [V16,T06] ( 2, 8 ) long -> rax "impImportIndirectCall"
; V17 tmp16 [V17,T15] ( 2, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
; V18 tmp17 [V18,T14] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<CrtImplementationDetails>.ModuleLoadException>
-; V19 tmp18 [V19,T01] ( 6, 34 ) long -> rbx "Inlining Arg"
+; V19 tmp18 [V19,T00] ( 5, 33 ) long -> rbx "Inlining Arg"
; V20 tmp19 [V20,T07] ( 2, 8 ) long -> rax "impImportIndirectCall"
; V21 FramesRoot [V21,T02] ( 14, 22 ) long -> rsi "Pinvoke FrameListRoot"
; V22 PInvokeFrame [V22 ] ( 14, 20 ) struct (72) [rbp-0x80] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
@@ -35,11 +35,11 @@
;* V24 tmp23 [V24 ] ( 0, 0 ) long -> zero-ref "field V08._handle (fldOffset=0x0)" P-INDEP
; V25 tmp24 [V25,T16] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V26 tmp25 [V26,T17] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V27 cse0 [V27,T12] ( 3, 2.50) int -> rdi "CSE - aggressive"
-; V28 cse1 [V28,T10] ( 3, 5 ) long -> rdi "CSE - aggressive"
-; V29 cse2 [V29,T11] ( 3, 5 ) long -> r15 "CSE - aggressive"
-; V30 cse3 [V30,T03] ( 3, 10 ) long -> rax "CSE - aggressive"
-; V31 cse4 [V31,T04] ( 3, 10 ) long -> rax "CSE - aggressive"
+; V27 cse0 [V27,T12] ( 3, 2.50) int -> r14 "CSE - aggressive"
+; V28 cse1 [V28,T10] ( 2, 4.50) long -> r14 hoist "CSE - aggressive"
+; V29 cse2 [V29,T03] ( 3, 10 ) long -> rax "CSE - aggressive"
+; V30 cse3 [V30,T04] ( 3, 10 ) long -> rax "CSE - aggressive"
+; V31 cse4 [V31,T11] ( 4, 3 ) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 104
@@ -141,80 +141,77 @@ G_M57797_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
;; size=5 bbWeight=0.50 PerfScore 0.50
G_M57797_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov edi, dword ptr [rax]
- cmp edi, 1
+ mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov r14d, dword ptr [rdi]
+ cmp r14d, 1
jne SHORT G_M57797_IG14
- ;; size=17 bbWeight=1 PerfScore 3.50
+ ;; size=19 bbWeight=1 PerfScore 3.50
G_M57797_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call <unknown method>
; gcr arg pop 0
jmp G_M57797_IG30
;; size=10 bbWeight=0.50 PerfScore 1.50
G_M57797_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test edi, edi
+ test r14d, r14d
jne G_M57797_IG30
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov dword ptr [rax], 1
- mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov dword ptr [rax], 1
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- xor r14d, r14d
- mov r15, 0xD1FFAB1E ; static handle
- cmp rdi, r15
+ mov dword ptr [rdi], 1
+ mov r14, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ xor r15d, r15d
+ jmp SHORT G_M57797_IG16
+ ;; size=46 bbWeight=0.50 PerfScore 3.00
+G_M57797_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; static handle
+ cmp r14, rax
jae SHORT G_M57797_IG22
- ;; size=68 bbWeight=0.50 PerfScore 2.88
-G_M57797_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test r14d, r14d
- jne SHORT G_M57797_IG21
- mov rax, qword ptr [rdi]
+ ;; size=15 bbWeight=2 PerfScore 3.00
+G_M57797_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test r15d, r15d
+ jne SHORT G_M57797_IG22
+ mov rax, qword ptr [r14]
test rax, rax
- je SHORT G_M57797_IG20
+ je SHORT G_M57797_IG21
;; size=13 bbWeight=4 PerfScore 18.00
-G_M57797_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, G_M57797_IG18
+G_M57797_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rcx, G_M57797_IG19
mov qword ptr [rbp-0x50], rcx
lea rcx, bword ptr [rbp-0x78]
; byrRegs +[rcx]
mov qword ptr [rsi+0x10], rcx
mov byte ptr [rsi+0x0C], 0
;; size=23 bbWeight=2 PerfScore 9.00
-G_M57797_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57797_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
call rax
; gcr arg pop 0
;; size=2 bbWeight=2 PerfScore 6.00
-G_M57797_IG18: ; bbWeight=2, isz, extend
+G_M57797_IG19: ; bbWeight=2, isz, extend
mov byte ptr [rsi+0x0C], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
- je SHORT G_M57797_IG19
+ je SHORT G_M57797_IG20
mov rdx, 0xD1FFAB1E
call [rdx]CORINFO_HELP_STOP_FOR_GC
; gcr arg pop 0
;; size=31 bbWeight=2 PerfScore 17.00
-G_M57797_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57797_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, bword ptr [rbp-0x70]
; byrRegs +[rcx]
mov qword ptr [rsi+0x10], rcx
- mov r14d, eax
+ mov r15d, eax
;; size=11 bbWeight=2 PerfScore 4.50
-G_M57797_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57797_IG21: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
- add rdi, 8
- cmp rdi, r15
- jb SHORT G_M57797_IG15
- ;; size=9 bbWeight=4 PerfScore 6.00
-G_M57797_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- test r14d, r14d
+ add r14, 8
+ jmp SHORT G_M57797_IG15
+ ;; size=6 bbWeight=4 PerfScore 9.00
+G_M57797_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test r15d, r15d
jne G_M57797_IG33
- ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M57797_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdi, 0xD1FFAB1E ; static handle
- cmp rbx, rdi
- jae SHORT G_M57797_IG29
- ;; size=25 bbWeight=0.50 PerfScore 0.88
+ mov r14, 0xD1FFAB1E ; static handle
+ ;; size=29 bbWeight=0.50 PerfScore 0.88
G_M57797_IG23: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rbx]
test rax, rax
@@ -250,17 +247,16 @@ G_M57797_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M57797_IG28: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
add rbx, 8
- cmp rbx, rdi
+ cmp rbx, r14
jb SHORT G_M57797_IG23
;; size=9 bbWeight=4 PerfScore 6.00
G_M57797_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov dword ptr [rax], 2
+ mov dword ptr [rdi], 2
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov byte ptr [rax], 1
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov dword ptr [rax], 2
- ;; size=45 bbWeight=0.50 PerfScore 1.88
+ ;; size=35 bbWeight=0.50 PerfScore 1.75
G_M57797_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 104
pop rbx
@@ -352,7 +348,7 @@ G_M57797_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=63 bbWeight=0 PerfScore 0.00
-; Total bytes of code 821, prolog size 30, PerfScore 184.62, instruction count 180, allocated bytes for code 821 (MethodHash=2abb1e3a) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
+; Total bytes of code 798, prolog size 30, PerfScore 190.00, instruction count 176, allocated bytes for code 798 (MethodHash=2abb1e3a) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
; ============================================================
Unwind Info:
-23 (-2.77%) : 474313.dasm - :.LanguageSupport.InitializeNative(ulong) (FullOpts)
@@ -21,13 +21,13 @@
; V10 tmp9 [V10,T14] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V12 tmp11 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T08] ( 4, 7 ) int -> r14 "Inline stloc first use temp"
-; V14 tmp13 [V14,T00] ( 6, 34 ) long -> rdi "Inlining Arg"
+; V13 tmp12 [V13,T08] ( 4, 7 ) int -> r15 "Inline stloc first use temp"
+; V14 tmp13 [V14,T01] ( 5, 29 ) long -> r14 "Inlining Arg"
;* V15 tmp14 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V16 tmp15 [V16,T06] ( 2, 8 ) long -> rax "impImportIndirectCall"
; V17 tmp16 [V17,T15] ( 2, 0 ) ref -> rbx class-hnd exact single-def "Inlining Arg" <System.String>
; V18 tmp17 [V18,T13] ( 4, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<CrtImplementationDetails>.ModuleLoadException>
-; V19 tmp18 [V19,T01] ( 6, 34 ) long -> rbx "Inlining Arg"
+; V19 tmp18 [V19,T00] ( 5, 33 ) long -> rbx "Inlining Arg"
; V20 tmp19 [V20,T07] ( 2, 8 ) long -> rax "impImportIndirectCall"
; V21 FramesRoot [V21,T02] ( 14, 22 ) long -> rsi "Pinvoke FrameListRoot"
; V22 PInvokeFrame [V22 ] ( 14, 20 ) struct (72) [rbp-0x80] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
@@ -35,11 +35,11 @@
;* V24 tmp23 [V24 ] ( 0, 0 ) long -> zero-ref "field V08._handle (fldOffset=0x0)" P-INDEP
; V25 tmp24 [V25,T16] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V26 tmp25 [V26,T17] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V27 cse0 [V27,T12] ( 3, 2.50) int -> rdi "CSE - aggressive"
-; V28 cse1 [V28,T10] ( 3, 5 ) long -> rdi "CSE - aggressive"
-; V29 cse2 [V29,T11] ( 3, 5 ) long -> r15 "CSE - aggressive"
-; V30 cse3 [V30,T03] ( 3, 10 ) long -> rax "CSE - aggressive"
-; V31 cse4 [V31,T04] ( 3, 10 ) long -> rax "CSE - aggressive"
+; V27 cse0 [V27,T12] ( 3, 2.50) int -> r14 "CSE - aggressive"
+; V28 cse1 [V28,T10] ( 2, 4.50) long -> r14 hoist "CSE - aggressive"
+; V29 cse2 [V29,T03] ( 3, 10 ) long -> rax "CSE - aggressive"
+; V30 cse3 [V30,T04] ( 3, 10 ) long -> rax "CSE - aggressive"
+; V31 cse4 [V31,T11] ( 4, 3 ) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 104
@@ -141,80 +141,77 @@ G_M57797_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
;; size=5 bbWeight=0.50 PerfScore 0.50
G_M57797_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov edi, dword ptr [rax]
- cmp edi, 1
+ mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov r14d, dword ptr [rdi]
+ cmp r14d, 1
jne SHORT G_M57797_IG14
- ;; size=17 bbWeight=1 PerfScore 3.50
+ ;; size=19 bbWeight=1 PerfScore 3.50
G_M57797_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call <unknown method>
; gcr arg pop 0
jmp G_M57797_IG30
;; size=10 bbWeight=0.50 PerfScore 1.50
G_M57797_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test edi, edi
+ test r14d, r14d
jne G_M57797_IG30
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov dword ptr [rax], 1
- mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov dword ptr [rax], 1
- mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- xor r14d, r14d
- mov r15, 0xD1FFAB1E ; static handle
- cmp rdi, r15
+ mov dword ptr [rdi], 1
+ mov r14, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ xor r15d, r15d
+ jmp SHORT G_M57797_IG16
+ ;; size=46 bbWeight=0.50 PerfScore 3.00
+G_M57797_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rax, 0xD1FFAB1E ; static handle
+ cmp r14, rax
jae SHORT G_M57797_IG22
- ;; size=68 bbWeight=0.50 PerfScore 2.88
-G_M57797_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test r14d, r14d
- jne SHORT G_M57797_IG21
- mov rax, qword ptr [rdi]
+ ;; size=15 bbWeight=2 PerfScore 3.00
+G_M57797_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test r15d, r15d
+ jne SHORT G_M57797_IG22
+ mov rax, qword ptr [r14]
test rax, rax
- je SHORT G_M57797_IG20
+ je SHORT G_M57797_IG21
;; size=13 bbWeight=4 PerfScore 18.00
-G_M57797_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, G_M57797_IG18
+G_M57797_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rcx, G_M57797_IG19
mov qword ptr [rbp-0x50], rcx
lea rcx, bword ptr [rbp-0x78]
; byrRegs +[rcx]
mov qword ptr [rsi+0x10], rcx
mov byte ptr [rsi+0x0C], 0
;; size=23 bbWeight=2 PerfScore 9.00
-G_M57797_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57797_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
call rax
; gcr arg pop 0
;; size=2 bbWeight=2 PerfScore 6.00
-G_M57797_IG18: ; bbWeight=2, isz, extend
+G_M57797_IG19: ; bbWeight=2, isz, extend
mov byte ptr [rsi+0x0C], 1
mov rcx, 0xD1FFAB1E ; function address
cmp dword ptr [rcx], 0
- je SHORT G_M57797_IG19
+ je SHORT G_M57797_IG20
mov rdx, 0xD1FFAB1E
call [rdx]CORINFO_HELP_STOP_FOR_GC
; gcr arg pop 0
;; size=31 bbWeight=2 PerfScore 17.00
-G_M57797_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M57797_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, bword ptr [rbp-0x70]
; byrRegs +[rcx]
mov qword ptr [rsi+0x10], rcx
- mov r14d, eax
+ mov r15d, eax
;; size=11 bbWeight=2 PerfScore 4.50
-G_M57797_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M57797_IG21: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
- add rdi, 8
- cmp rdi, r15
- jb SHORT G_M57797_IG15
- ;; size=9 bbWeight=4 PerfScore 6.00
-G_M57797_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- test r14d, r14d
+ add r14, 8
+ jmp SHORT G_M57797_IG15
+ ;; size=6 bbWeight=4 PerfScore 9.00
+G_M57797_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ test r15d, r15d
jne G_M57797_IG33
- ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M57797_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rbx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdi, 0xD1FFAB1E ; static handle
- cmp rbx, rdi
- jae SHORT G_M57797_IG29
- ;; size=25 bbWeight=0.50 PerfScore 0.88
+ mov r14, 0xD1FFAB1E ; static handle
+ ;; size=29 bbWeight=0.50 PerfScore 0.88
G_M57797_IG23: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, qword ptr [rbx]
test rax, rax
@@ -250,17 +247,16 @@ G_M57797_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M57797_IG28: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rax]
add rbx, 8
- cmp rbx, rdi
+ cmp rbx, r14
jb SHORT G_M57797_IG23
;; size=9 bbWeight=4 PerfScore 6.00
G_M57797_IG29: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov dword ptr [rax], 2
+ mov dword ptr [rdi], 2
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov byte ptr [rax], 1
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov dword ptr [rax], 2
- ;; size=45 bbWeight=0.50 PerfScore 1.88
+ ;; size=35 bbWeight=0.50 PerfScore 1.75
G_M57797_IG30: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 104
pop rbx
@@ -357,7 +353,7 @@ G_M57797_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=72 bbWeight=0 PerfScore 0.00
-; Total bytes of code 830, prolog size 30, PerfScore 184.62, instruction count 182, allocated bytes for code 830 (MethodHash=2abb1e3a) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
+; Total bytes of code 807, prolog size 30, PerfScore 190.00, instruction count 178, allocated bytes for code 807 (MethodHash=2abb1e3a) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
; ============================================================
Unwind Info:
-5 (-1.48%) : 473862.dasm - :.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
@@ -8,7 +8,7 @@
; 3 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 3, 3 ) long -> rbx single-def
+; V00 arg0 [V00,T03] ( 3, 3 ) long -> rbx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
@@ -21,13 +21,13 @@
; V10 tmp9 [V10,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V12 tmp11 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T00] ( 6, 36 ) long -> rsi "Inlining Arg"
+; V13 tmp12 [V13,T00] ( 5, 34 ) long -> rsi "Inlining Arg"
; V14 tmp13 [V14,T05] ( 2, 4 ) long -> rax "Inline stloc first use temp"
;* V15 tmp14 [V15 ] ( 0, 0 ) long -> zero-ref "field V04._handle (fldOffset=0x0)" P-INDEP
;* V16 tmp15 [V16 ] ( 0, 0 ) long -> zero-ref "field V08._handle (fldOffset=0x0)" P-INDEP
; V17 tmp16 [V17,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V18 tmp17 [V18,T09] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V19 cse0 [V19,T03] ( 3, 6 ) long -> rdi "CSE - aggressive"
+; V19 cse0 [V19,T04] ( 2, 5 ) long -> rdi hoist "CSE - aggressive"
; V20 cse1 [V20,T01] ( 3, 10 ) long -> rcx "CSE - aggressive"
; V21 cse2 [V21,T06] ( 3, 3.00) long -> rbx "CSE - aggressive"
;
@@ -64,7 +64,7 @@ G_M43336_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
test bl, 1
jne G_M43336_IG13
;; size=9 bbWeight=1.00 PerfScore 1.25
-G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, rbx
and rcx, -2
mov rdx, 0xD1FFAB1E
@@ -79,9 +79,7 @@ G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdi, 0xD1FFAB1E ; static handle
- cmp rsi, rdi
- jae SHORT G_M43336_IG10
- ;; size=75 bbWeight=1.00 PerfScore 8.00
+ ;; size=70 bbWeight=1.00 PerfScore 6.75
G_M43336_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rsi]
test rcx, rcx
@@ -162,7 +160,7 @@ G_M43336_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=113 bbWeight=0 PerfScore 0.00
-; Total bytes of code 337, prolog size 10, PerfScore 58.62, instruction count 71, allocated bytes for code 337 (MethodHash=7d5a56b7) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
+; Total bytes of code 332, prolog size 10, PerfScore 57.38, instruction count 69, allocated bytes for code 332 (MethodHash=7d5a56b7) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
; ============================================================
Unwind Info:
-5 (-1.48%) : 473899.dasm - :.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
@@ -8,7 +8,7 @@
; 3 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 3, 3 ) long -> rbx single-def
+; V00 arg0 [V00,T03] ( 3, 3 ) long -> rbx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
@@ -21,13 +21,13 @@
; V10 tmp9 [V10,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V12 tmp11 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T00] ( 6, 36 ) long -> rsi "Inlining Arg"
+; V13 tmp12 [V13,T00] ( 5, 34 ) long -> rsi "Inlining Arg"
; V14 tmp13 [V14,T05] ( 2, 4 ) long -> rax "Inline stloc first use temp"
;* V15 tmp14 [V15 ] ( 0, 0 ) long -> zero-ref "field V04._handle (fldOffset=0x0)" P-INDEP
;* V16 tmp15 [V16 ] ( 0, 0 ) long -> zero-ref "field V08._handle (fldOffset=0x0)" P-INDEP
; V17 tmp16 [V17,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V18 tmp17 [V18,T09] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V19 cse0 [V19,T03] ( 3, 6 ) long -> rdi "CSE - aggressive"
+; V19 cse0 [V19,T04] ( 2, 5 ) long -> rdi hoist "CSE - aggressive"
; V20 cse1 [V20,T01] ( 3, 10 ) long -> rcx "CSE - aggressive"
; V21 cse2 [V21,T06] ( 3, 3.00) long -> rbx "CSE - aggressive"
;
@@ -64,7 +64,7 @@ G_M43336_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
test bl, 1
jne G_M43336_IG13
;; size=9 bbWeight=1.00 PerfScore 1.25
-G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, rbx
and rcx, -2
mov rdx, 0xD1FFAB1E
@@ -79,9 +79,7 @@ G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdi, 0xD1FFAB1E ; static handle
- cmp rsi, rdi
- jae SHORT G_M43336_IG10
- ;; size=75 bbWeight=1.00 PerfScore 8.00
+ ;; size=70 bbWeight=1.00 PerfScore 6.75
G_M43336_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rsi]
test rcx, rcx
@@ -162,7 +160,7 @@ G_M43336_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=113 bbWeight=0 PerfScore 0.00
-; Total bytes of code 337, prolog size 10, PerfScore 58.62, instruction count 71, allocated bytes for code 337 (MethodHash=7d5a56b7) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
+; Total bytes of code 332, prolog size 10, PerfScore 57.38, instruction count 69, allocated bytes for code 332 (MethodHash=7d5a56b7) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
; ============================================================
Unwind Info:
-5 (-1.48%) : 474315.dasm - :.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
@@ -8,7 +8,7 @@
; 3 inlinees with PGO data; 9 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 3, 3 ) long -> rbx single-def
+; V00 arg0 [V00,T03] ( 3, 3 ) long -> rbx single-def
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V03 tmp2 [V03 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp"
@@ -21,13 +21,13 @@
; V10 tmp9 [V10,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V11 tmp10 [V11 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V12 tmp11 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V13 tmp12 [V13,T00] ( 6, 36 ) long -> rsi "Inlining Arg"
+; V13 tmp12 [V13,T00] ( 5, 34 ) long -> rsi "Inlining Arg"
; V14 tmp13 [V14,T05] ( 2, 4 ) long -> rax "Inline stloc first use temp"
;* V15 tmp14 [V15 ] ( 0, 0 ) long -> zero-ref "field V04._handle (fldOffset=0x0)" P-INDEP
;* V16 tmp15 [V16 ] ( 0, 0 ) long -> zero-ref "field V08._handle (fldOffset=0x0)" P-INDEP
; V17 tmp16 [V17,T08] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
; V18 tmp17 [V18,T09] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
-; V19 cse0 [V19,T03] ( 3, 6 ) long -> rdi "CSE - aggressive"
+; V19 cse0 [V19,T04] ( 2, 5 ) long -> rdi hoist "CSE - aggressive"
; V20 cse1 [V20,T01] ( 3, 10 ) long -> rcx "CSE - aggressive"
; V21 cse2 [V21,T06] ( 3, 3.00) long -> rbx "CSE - aggressive"
;
@@ -64,7 +64,7 @@ G_M43336_IG05: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
test bl, 1
jne G_M43336_IG13
;; size=9 bbWeight=1.00 PerfScore 1.25
-G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, rbx
and rcx, -2
mov rdx, 0xD1FFAB1E
@@ -79,9 +79,7 @@ G_M43336_IG06: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rdi, 0xD1FFAB1E ; static handle
- cmp rsi, rdi
- jae SHORT G_M43336_IG10
- ;; size=75 bbWeight=1.00 PerfScore 8.00
+ ;; size=70 bbWeight=1.00 PerfScore 6.75
G_M43336_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, qword ptr [rsi]
test rcx, rcx
@@ -162,7 +160,7 @@ G_M43336_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=113 bbWeight=0 PerfScore 0.00
-; Total bytes of code 337, prolog size 10, PerfScore 58.62, instruction count 71, allocated bytes for code 337 (MethodHash=7d5a56b7) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
+; Total bytes of code 332, prolog size 10, PerfScore 57.38, instruction count 69, allocated bytes for code 332 (MethodHash=7d5a56b7) for method <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
; ============================================================
Unwind Info:
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_pgo.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
benchmarks.run_tiered.windows.x64.checked.mch |
0 |
0 |
0 |
0 |
-0 |
+0 |
coreclr_tests.run.windows.x64.checked.mch |
17 |
17 |
0 |
0 |
-196 |
+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 |
0 |
0 |
0 |
0 |
-0 |
+0 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
0 |
0 |
0 |
0 |
-0 |
+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 |
|
17 |
17 |
0 |
0 |
-196 |
+0 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.x64.checked.mch |
27,982 |
4 |
27,978 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch |
96,695 |
48,836 |
47,859 |
0 (0.00%) |
0 (0.00%) |
benchmarks.run_tiered.windows.x64.checked.mch |
54,111 |
37,293 |
16,818 |
0 (0.00%) |
0 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch |
584,001 |
348,100 |
235,901 |
0 (0.00%) |
0 (0.00%) |
libraries.crossgen2.windows.x64.checked.mch |
274,686 |
15 |
274,671 |
0 (0.00%) |
0 (0.00%) |
libraries.pmi.windows.x64.checked.mch |
310,928 |
6 |
310,922 |
0 (0.00%) |
0 (0.00%) |
libraries_tests.run.windows.x64.Release.mch |
678,242 |
480,859 |
197,383 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
320,863 |
21,944 |
298,919 |
0 (0.00%) |
0 (0.00%) |
realworld.run.windows.x64.checked.mch |
36,896 |
3 |
36,893 |
0 (0.00%) |
0 (0.00%) |
smoke_tests.nativeaot.windows.x64.checked.mch |
32,572 |
11 |
32,561 |
0 (0.00%) |
0 (0.00%) |
|
2,416,976 |
937,071 |
1,479,905 |
0 (0.00%) |
0 (0.00%) |
jit-analyze output
coreclr_tests.run.windows.x64.checked.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: 407341578 (overridden on cmd)
Total bytes of diff: 407341382 (overridden on cmd)
Total bytes of delta: -196 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
-44 : 521668.dasm (-59.46 % of base)
-23 : 473860.dasm (-2.77 % of base)
-23 : 473897.dasm (-2.80 % of base)
-23 : 474313.dasm (-2.77 % of base)
-23 : 471971.dasm (-2.77 % of base)
-5 : 471979.dasm (-1.82 % of base)
-5 : 473868.dasm (-1.82 % of base)
-5 : 471973.dasm (-1.48 % of base)
-5 : 473896.dasm (-1.97 % of base)
-5 : 473899.dasm (-1.48 % of base)
-5 : 473905.dasm (-1.82 % of base)
-5 : 474312.dasm (-1.97 % of base)
-5 : 474315.dasm (-1.48 % of base)
-5 : 474321.dasm (-1.82 % of base)
-5 : 473859.dasm (-1.97 % of base)
-5 : 471970.dasm (-1.97 % of base)
-5 : 473862.dasm (-1.48 % of base)
17 total files with Code Size differences (17 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
-44 (-59.46 % of base) : 521668.dasm - Test_b18049:main():int (FullOpts)
-23 (-2.77 % of base) : 473860.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
-23 (-2.80 % of base) : 473897.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
-23 (-2.77 % of base) : 474313.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
-23 (-2.77 % of base) : 471971.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
-5 (-1.82 % of base) : 471979.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(ulong) (FullOpts)
-5 (-1.82 % of base) : 473868.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(ulong) (FullOpts)
-5 (-1.82 % of base) : 473905.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(ulong) (FullOpts)
-5 (-1.82 % of base) : 474321.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(ulong) (FullOpts)
-5 (-1.48 % of base) : 471973.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
-5 (-1.48 % of base) : 473899.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
-5 (-1.48 % of base) : 474315.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
-5 (-1.48 % of base) : 473862.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
-5 (-1.97 % of base) : 473896.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeVtables(ulong) (FullOpts)
-5 (-1.97 % of base) : 474312.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeVtables(ulong) (FullOpts)
-5 (-1.97 % of base) : 473859.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeVtables(ulong) (FullOpts)
-5 (-1.97 % of base) : 471970.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeVtables(ulong) (FullOpts)
Top method improvements (percentages):
-44 (-59.46 % of base) : 521668.dasm - Test_b18049:main():int (FullOpts)
-23 (-2.80 % of base) : 473897.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
-23 (-2.77 % of base) : 473860.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
-23 (-2.77 % of base) : 474313.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
-23 (-2.77 % of base) : 471971.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeNative(ulong) (FullOpts)
-5 (-1.97 % of base) : 473896.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeVtables(ulong) (FullOpts)
-5 (-1.97 % of base) : 474312.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeVtables(ulong) (FullOpts)
-5 (-1.97 % of base) : 473859.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeVtables(ulong) (FullOpts)
-5 (-1.97 % of base) : 471970.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializeVtables(ulong) (FullOpts)
-5 (-1.82 % of base) : 471979.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(ulong) (FullOpts)
-5 (-1.82 % of base) : 473868.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(ulong) (FullOpts)
-5 (-1.82 % of base) : 473905.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(ulong) (FullOpts)
-5 (-1.82 % of base) : 474321.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerAppDomain(ulong) (FullOpts)
-5 (-1.48 % of base) : 471973.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
-5 (-1.48 % of base) : 473899.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
-5 (-1.48 % of base) : 474315.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
-5 (-1.48 % of base) : 473862.dasm - <Module>:<CrtImplementationDetails>.LanguageSupport.InitializePerProcess(ulong) (FullOpts)
17 total methods with Code Size differences (17 improved, 0 regressed).