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).