Diffs are based on 2,547,495 contexts (1,000,952 MinOpts, 1,546,543 FullOpts).
MISSED contexts: base: 708 (0.03%), diff: 755 (0.03%)
Base JIT options: JitCloneLoops=0
Diff JIT options: JitCloneLoops=0
Overall (-469,945 bytes)
Collection | Base size (bytes) | Diff size (bytes) | PerfScore in Diffs |
---|---|---|---|
benchmarks.run.windows.x64.checked.mch | 11,237,019 | -8,959 | -2.23% |
benchmarks.run_pgo.windows.x64.checked.mch | 41,427,466 | -28,650 | -0.65% |
benchmarks.run_tiered.windows.x64.checked.mch | 12,523,564 | -1,799 | -2.17% |
coreclr_tests.run.windows.x64.checked.mch | 392,958,880 | -74,967 | -1.85% |
libraries.crossgen2.windows.x64.checked.mch | 44,314,196 | -57,806 | -4.08% |
libraries.pmi.windows.x64.checked.mch | 62,545,380 | -50,826 | -2.26% |
libraries_tests.run.windows.x64.Release.mch | 309,473,340 | -126,040 | -1.35% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 146,141,887 | -101,374 | -2.08% |
realworld.run.windows.x64.checked.mch | 12,139,986 | -18,970 | -2.33% |
smoke_tests.nativeaot.windows.x64.checked.mch | 4,970,147 | -554 | -2.28% |
MinOpts (-5,017 bytes)
Collection | Base size (bytes) | Diff size (bytes) | PerfScore in Diffs |
---|---|---|---|
benchmarks.run_pgo.windows.x64.checked.mch | 19,602,172 | -577 | -1.71% |
benchmarks.run_tiered.windows.x64.checked.mch | 9,311,128 | -227 | -2.12% |
coreclr_tests.run.windows.x64.checked.mch | 273,210,262 | -2,249 | -5.16% |
libraries_tests.run.windows.x64.Release.mch | 188,078,429 | -1,964 | -1.52% |
FullOpts (-464,928 bytes)
Collection | Base size (bytes) | Diff size (bytes) | PerfScore in Diffs |
---|---|---|---|
benchmarks.run.windows.x64.checked.mch | 11,236,407 | -8,959 | -2.23% |
benchmarks.run_pgo.windows.x64.checked.mch | 21,825,294 | -28,073 | -0.63% |
benchmarks.run_tiered.windows.x64.checked.mch | 3,212,436 | -1,572 | -2.17% |
coreclr_tests.run.windows.x64.checked.mch | 119,748,618 | -72,718 | -1.80% |
libraries.crossgen2.windows.x64.checked.mch | 44,312,491 | -57,806 | -4.08% |
libraries.pmi.windows.x64.checked.mch | 62,432,419 | -50,826 | -2.26% |
libraries_tests.run.windows.x64.Release.mch | 121,394,911 | -124,076 | -1.34% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 135,295,105 | -101,374 | -2.08% |
realworld.run.windows.x64.checked.mch | 11,726,883 | -18,970 | -2.33% |
smoke_tests.nativeaot.windows.x64.checked.mch | 4,969,176 | -554 | -2.28% |
Example diffs
benchmarks.run.windows.x64.checked.mch
-45 (-36.89%) : 32037.dasm - System.Collections.IterateForEach`1[int]:FrozenSet():int:this (FullOpts)
@@ -8,19 +8,17 @@
; 0 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Collections.IterateForEach`1[int]>
-; V01 loc0 [V01,T04] ( 3, 18 ) int -> rbx ld-addr-op
+; V00 this [V00,T06] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Collections.IterateForEach`1[int]>
+; V01 loc0 [V01,T02] ( 3, 18 ) int -> rbx ld-addr-op
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Frozen.FrozenSet`1[int]>
-; V03 loc2 [V03 ] ( 8, 66 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Frozen.FrozenSet`1+Enumerator[int]>
+; V03 loc2 [V03,T07] ( 3, 3 ) struct (16) [rsp+0x20] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.Collections.Frozen.FrozenSet`1+Enumerator[int]>
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V07 tmp2 [V07,T07] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
-; V08 tmp3 [V08,T00] ( 3, 96 ) ref -> rax "arr expr"
-; V09 tmp4 [V09,T01] ( 3, 96 ) int -> rcx "index expr"
-; V10 cse0 [V10,T02] ( 3, 48 ) ref -> rax "CSE #01: aggressive"
-; V11 cse1 [V11,T03] ( 3, 48 ) int -> rcx "CSE #02: aggressive"
-; V12 cse2 [V12,T05] ( 3, 17 ) ref -> rcx "CSE #03: aggressive"
+;* V06 tmp1 [V06,T03] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V07 tmp2 [V07,T01] ( 3, 18 ) ref -> rax single-def "V03.[000..008)"
+; V08 tmp3 [V08,T00] ( 5, 41 ) int -> rcx "V03.[008..012)"
+; V09 tmp4 [V09,T05] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V10 cse0 [V10,T04] ( 2, 9 ) int -> rdx hoist "CSE #01: aggressive"
;
; Lcl frame size = 48
@@ -41,59 +39,32 @@ G_M13750_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
call [rax+0x38]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M13750_IG04
- ;; size=26 bbWeight=1 PerfScore 11.75
-G_M13750_IG03: ; bbWeight=16, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
- cmp ecx, dword ptr [rax+0x08]
- jae SHORT G_M13750_IG09
- mov ecx, ecx
- mov ebx, dword ptr [rax+4*rcx+0x10]
- ;; size=11 bbWeight=16 PerfScore 100.00
-G_M13750_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov eax, dword ptr [rsp+0x28]
- inc eax
- mov dword ptr [rsp+0x28], eax
- mov eax, dword ptr [rsp+0x28]
- mov rcx, gword ptr [rsp+0x20]
- ; gcrRegs +[rcx]
- cmp eax, dword ptr [rcx+0x08]
- jae SHORT G_M13750_IG06
- ;; size=24 bbWeight=8 PerfScore 66.00
-G_M13750_IG05: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov ecx, dword ptr [rsp+0x28]
mov rax, gword ptr [rsp+0x20]
; gcrRegs +[rax]
- cmp ecx, dword ptr [rax+0x08]
- jb SHORT G_M13750_IG03
- jmp SHORT G_M13750_IG08
- ;; size=16 bbWeight=16 PerfScore 128.00
-G_M13750_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rcx]
- mov eax, dword ptr [rcx+0x08]
- mov dword ptr [rsp+0x28], eax
+ mov ecx, dword ptr [rsp+0x28]
+ mov edx, dword ptr [rax+0x08]
+ jmp SHORT G_M13750_IG04
+ ;; size=38 bbWeight=1 PerfScore 15.75
+G_M13750_IG03: ; bbWeight=16, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ mov r8d, ecx
+ mov ebx, dword ptr [rax+4*r8+0x10]
+ ;; size=8 bbWeight=16 PerfScore 36.00
+G_M13750_IG04: ; bbWeight=8, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ inc ecx
+ cmp edx, ecx
+ ja SHORT G_M13750_IG03
+ ;; size=6 bbWeight=8 PerfScore 12.00
+G_M13750_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov eax, ebx
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M13750_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M13750_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-G_M13750_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx]
- call [System.Collections.ThrowHelper:ThrowInvalidOperationException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M13750_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 17, PerfScore 314.25, instruction count 38, allocated bytes for code 122 (MethodHash=1dfeca49) for method System.Collections.IterateForEach`1[int]:FrozenSet():int:this (FullOpts)
+; Total bytes of code 77, prolog size 17, PerfScore 69.25, instruction count 24, allocated bytes for code 77 (MethodHash=1dfeca49) for method System.Collections.IterateForEach`1[int]:FrozenSet():int:this (FullOpts)
; ============================================================
Unwind Info:
-41 (-29.71%) : 31689.dasm - System.Collections.IterateForEach`1[int]:FrozenDictionary():int:this (FullOpts)
@@ -8,28 +8,25 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Collections.IterateForEach`1[int]>
-; V01 loc0 [V01,T07] ( 3, 18 ) int -> rbx ld-addr-op
+; V00 this [V00,T08] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Collections.IterateForEach`1[int]>
+; V01 loc0 [V01,T04] ( 3, 18 ) int -> rbx ld-addr-op
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Frozen.FrozenDictionary`2[int,int]>
-; V03 loc2 [V03 ] ( 9, 82 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Frozen.FrozenDictionary`2+Enumerator[int,int]>
+; V03 loc2 [V03,T03] ( 4, 19 ) struct (24) [rsp+0x28] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.Collections.Frozen.FrozenDictionary`2+Enumerator[int,int]>
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,int]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V08 tmp3 [V08,T04] ( 2, 64 ) int -> rbx "Inlining Arg"
-;* V09 tmp4 [V09,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V08 tmp3 [V08,T01] ( 2, 64 ) int -> rbx "Inlining Arg"
+;* V09 tmp4 [V09,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) int -> zero-ref "field V04.key (fldOffset=0x0)" P-INDEP
;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref "field V04.value (fldOffset=0x4)" P-INDEP
;* V12 tmp7 [V12 ] ( 0, 0 ) int -> zero-ref "field V06.key (fldOffset=0x0)" P-INDEP
;* V13 tmp8 [V13 ] ( 0, 0 ) int -> zero-ref "field V06.value (fldOffset=0x4)" P-INDEP
-; V14 tmp9 [V14,T10] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
-; V15 tmp10 [V15,T03] ( 2, 64 ) ref -> rax "arr expr"
-; V16 tmp11 [V16,T05] ( 2, 64 ) int -> rdx "index expr"
-; V17 tmp12 [V17,T00] ( 3, 96 ) ref -> rax "arr expr"
-; V18 tmp13 [V18,T01] ( 3, 96 ) int -> rcx "index expr"
-; V19 cse0 [V19,T02] ( 4, 64 ) int -> rcx "CSE #02: aggressive"
-; V20 cse1 [V20,T06] ( 3, 48 ) ref -> rax "CSE #01: aggressive"
-; V21 cse2 [V21,T08] ( 3, 17 ) ref -> rcx "CSE #03: aggressive"
+; V14 tmp9 [V14,T09] ( 2, 2 ) ref -> rax single-def "V03.[000..008)"
+; V15 tmp10 [V15,T02] ( 6, 57 ) int -> rcx "V03.[016..020)"
+; V16 tmp11 [V16,T07] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V17 tmp12 [V17,T00] ( 3, 96 ) ref -> rdx "arr expr"
+; V18 cse0 [V18,T06] ( 2, 9 ) int -> rax hoist "CSE #01: aggressive"
;
; Lcl frame size = 64
@@ -51,63 +48,42 @@ G_M2124_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre
call [rax]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- jmp SHORT G_M2124_IG04
- ;; size=25 bbWeight=1 PerfScore 11.75
-G_M2124_IG03: ; bbWeight=16, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
- mov edx, ecx
- cmp edx, dword ptr [rax+0x08]
- jae SHORT G_M2124_IG09
- mov rax, gword ptr [rsp+0x30]
- cmp ecx, dword ptr [rax+0x08]
- jae SHORT G_M2124_IG09
- mov ecx, ecx
- mov ebx, dword ptr [rax+4*rcx+0x10]
- ;; size=23 bbWeight=16 PerfScore 184.00
-G_M2124_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov eax, dword ptr [rsp+0x38]
- inc eax
- mov dword ptr [rsp+0x38], eax
- mov eax, dword ptr [rsp+0x38]
- mov rcx, gword ptr [rsp+0x28]
- ; gcrRegs +[rcx]
- cmp eax, dword ptr [rcx+0x08]
- jae SHORT G_M2124_IG06
- ;; size=24 bbWeight=8 PerfScore 66.00
-G_M2124_IG05: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rcx]
- mov ecx, dword ptr [rsp+0x38]
mov rax, gword ptr [rsp+0x28]
; gcrRegs +[rax]
- cmp ecx, dword ptr [rax+0x08]
- jb SHORT G_M2124_IG03
- jmp SHORT G_M2124_IG08
- ;; size=16 bbWeight=16 PerfScore 128.00
-G_M2124_IG06: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax] +[rcx]
- mov eax, dword ptr [rcx+0x08]
- mov dword ptr [rsp+0x38], eax
+ mov ecx, dword ptr [rsp+0x38]
+ mov eax, dword ptr [rax+0x08]
+ ; gcrRegs -[rax]
+ jmp SHORT G_M2124_IG04
+ ;; size=37 bbWeight=1 PerfScore 15.75
+G_M2124_IG03: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rdx, gword ptr [rsp+0x30]
+ ; gcrRegs +[rdx]
+ cmp ecx, dword ptr [rdx+0x08]
+ jae SHORT G_M2124_IG07
+ mov r8d, ecx
+ mov ebx, dword ptr [rdx+4*r8+0x10]
+ ;; size=18 bbWeight=16 PerfScore 116.00
+G_M2124_IG04: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ inc ecx
+ cmp eax, ecx
+ ja SHORT G_M2124_IG03
+ ;; size=6 bbWeight=8 PerfScore 12.00
+G_M2124_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebx
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M2124_IG07: ; bbWeight=1, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M2124_IG06: ; bbWeight=1, epilog, nogc, extend
add rsp, 64
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-G_M2124_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rcx]
- call [System.Collections.ThrowHelper:ThrowInvalidOperationException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M2124_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2124_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 138, prolog size 22, PerfScore 399.58, instruction count 43, allocated bytes for code 138 (MethodHash=a179f7b3) for method System.Collections.IterateForEach`1[int]:FrozenDictionary():int:this (FullOpts)
+; Total bytes of code 97, prolog size 22, PerfScore 150.58, instruction count 30, allocated bytes for code 97 (MethodHash=a179f7b3) for method System.Collections.IterateForEach`1[int]:FrozenDictionary():int:this (FullOpts)
; ============================================================
Unwind Info:
-16 (-14.41%) : 34483.dasm - HardwareIntrinsics.RayTracer.Packet256Tracer:TestRay(HardwareIntrinsics.RayTracer.RayPacket256,HardwareIntrinsics.RayTracer.Scene):System.Runtime.Intrinsics.Vector256`1[float]:this (FullOpts)
@@ -12,27 +12,24 @@
; V01 RetBuf [V01,T00] ( 6, 4 ) byref -> rbx single-def
; V02 arg1 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <HardwareIntrinsics.RayTracer.RayPacket256>
; V03 arg2 [V03,T03] ( 3, 3 ) ref -> r9 class-hnd single-def <HardwareIntrinsics.RayTracer.Scene>
-; V04 loc0 [V04 ] ( 2, 2 ) struct (64) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <HardwareIntrinsics.RayTracer.Intersections>
+; V04 loc0 [V04,T04] ( 2, 2 ) struct (64) [rsp+0x20] do-not-enreg[HS] hidden-struct-arg ld-addr-op <HardwareIntrinsics.RayTracer.Intersections>
;* V05 loc1 [V05 ] ( 0, 0 ) simd32 -> zero-ref <System.Runtime.Intrinsics.Vector256`1[float]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) simd32 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector256`1[float]>
-; V08 tmp2 [V08,T06] ( 2, 2 ) simd32 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[float]>
-;* V09 tmp3 [V09,T07] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[int]>
+; V08 tmp2 [V08,T07] ( 2, 2 ) simd32 -> mm2 "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[float]>
+;* V09 tmp3 [V09,T08] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[int]>
;* V10 tmp4 [V10 ] ( 0, 0 ) simd32 -> zero-ref "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector256`1[int]>
-; V11 cse0 [V11,T04] ( 3, 2.50) simd32 -> mm1 "CSE #03: aggressive"
-; V12 cse1 [V12,T05] ( 3, 2.50) simd32 -> mm0 "CSE #01: aggressive"
+; V11 tmp5 [V11,T05] ( 3, 2.50) simd32 -> mm0 "V04.[000..032)"
+; V12 cse0 [V12,T06] ( 3, 2.50) simd32 -> mm1 "CSE #02: aggressive"
;
; Lcl frame size = 96
G_M55887_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbx
sub rsp, 96
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x20], ymm4
- vmovdqu ymmword ptr [rsp+0x40], ymm4
mov rbx, rdx
; byrRegs +[rbx]
- ;; size=24 bbWeight=1 PerfScore 5.83
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M55887_IG02: ; bbWeight=1, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[rcx r8-r9]
lea rdx, [rsp+0x20]
@@ -75,7 +72,7 @@ G_M55887_IG06: ; bbWeight=0.50, epilog, nogc, extend
RWD00 dq 7F7FFFFF7F7FFFFFh, 7F7FFFFF7F7FFFFFh, 7F7FFFFF7F7FFFFFh, 7F7FFFFF7F7FFFFFh
-; Total bytes of code 111, prolog size 21, PerfScore 27.92, instruction count 29, allocated bytes for code 111 (MethodHash=676b25b0) for method HardwareIntrinsics.RayTracer.Packet256Tracer:TestRay(HardwareIntrinsics.RayTracer.RayPacket256,HardwareIntrinsics.RayTracer.Scene):System.Runtime.Intrinsics.Vector256`1[float]:this (FullOpts)
+; Total bytes of code 95, prolog size 5, PerfScore 23.58, instruction count 26, allocated bytes for code 95 (MethodHash=676b25b0) for method HardwareIntrinsics.RayTracer.Packet256Tracer:TestRay(HardwareIntrinsics.RayTracer.RayPacket256,HardwareIntrinsics.RayTracer.Scene):System.Runtime.Intrinsics.Vector256`1[float]:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+4.96%) : 22831.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:g__EmitUncaptureUntilPopped|31():this (FullOpts)
@@ -8,51 +8,60 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0>
-; V01 loc0 [V01 ] ( 9, 3 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder>
+; V00 this [V00,T00] ( 7, 5 ) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0>
+; V01 loc0 [V01,T06] ( 3, 1.50) struct (16) [rbp-0x18] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T04] ( 2, 2 ) ref -> rcx class-hnd single-def "impAppendStmt" <System.Text.RegularExpressions.RegexCompiler>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder>
-; V06 tmp4 [V06,T00] ( 14, 7 ) ref -> rbx class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.Reflection.Emit.LocalBuilder]>
-; V07 tmp5 [V07,T03] ( 8, 2 ) int -> rsi "Inline stloc first use temp"
-; V08 tmp6 [V08,T05] ( 6, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V09 tmp7 [V09,T02] ( 6, 3 ) ref -> r8 class-hnd "Inlining Arg" <System.Reflection.Emit.LocalBuilder>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref "field V04._pool (fldOffset=0x0)" P-INDEP
-; V11 tmp9 [V11,T06] ( 2, 1 ) ref -> rdx single-def "field V04._local (fldOffset=0x8)" P-INDEP
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref "field V05._pool (fldOffset=0x0)" P-INDEP
-; V13 tmp11 [V13,T07] ( 2, 1 ) ref -> rdx single-def "field V05._local (fldOffset=0x8)" P-INDEP
-; V14 PSPSym [V14,T08] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.Reflection.Emit.LocalBuilder]>
+; V07 tmp5 [V07,T02] ( 8, 2 ) int -> rbx "Inline stloc first use temp"
+; V08 tmp6 [V08,T05] ( 6, 1.50) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Emit.LocalBuilder>
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._pool (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._local (fldOffset=0x8)" P-INDEP
+;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._pool (fldOffset=0x0)" P-INDEP
+;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._local (fldOffset=0x8)" P-INDEP
+; V14 tmp12 [V14,T01] ( 13, 3 ) ref -> [rbp-0x20] EH-live spill-single-def "V01.[000..008)"
+; V15 tmp13 [V15,T03] ( 7, 2 ) ref -> [rbp-0x28] EH-live spill-single-def "V01.[008..016)"
+; V16 PSPSym [V16,T07] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M1354_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rsi
push rbx
- sub rsp, 64
+ sub rsp, 72
lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x18], rax
+ mov qword ptr [rbp-0x10], rax
mov qword ptr [rbp-0x30], rsp
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=29 bbWeight=1 PerfScore 7.25
-G_M1354_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=1 PerfScore 6.25
+G_M1354_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x3C], 0
- je SHORT G_M1354_IG08
- ;; size=6 bbWeight=1 PerfScore 4.00
+ je G_M1354_IG07
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M1354_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
- lea rdx, [rbp-0x20]
+ lea rdx, [rbp-0x18]
call [System.Text.RegularExpressions.RegexCompiler:RentInt32Local():System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- nop
- ;; size=15 bbWeight=0.50 PerfScore 2.88
-G_M1354_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp-0x18]
+ ; gcrRegs +[rcx]
+ mov gword ptr [rbp-0x20], rcx
+ ; GC ptr vars +{V14}
+ mov rdx, gword ptr [rbp-0x10]
+ ; gcrRegs +[rdx]
+ mov gword ptr [rbp-0x28], rdx
+ ; GC ptr vars +{V15}
+ ;; size=30 bbWeight=0.50 PerfScore 4.75
+G_M1354_IG04: ; bbWeight=0.50, gcVars=000000000000000A {V14 V15}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx rdx]
mov rcx, rbx
; gcrRegs +[rcx]
call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitStackPop|34():this]
@@ -60,111 +69,117 @@ G_M1354_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x18]
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov rdx, gword ptr [rbp-0x18]
- ; gcrRegs +[rdx]
mov rcx, rbx
; gcrRegs +[rcx]
+ mov rdx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
nop
;; size=37 bbWeight=0.50 PerfScore 6.88
G_M1354_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rbx, gword ptr [rbp-0x20]
- ; gcrRegs +[rbx]
- mov r8, gword ptr [rbp-0x18]
- ; gcrRegs +[r8]
- mov esi, dword ptr [rbx+0x10]
- mov rcx, gword ptr [rbx+0x08]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x08], esi
+ mov ebx, dword ptr [rcx+0x10]
+ mov rax, gword ptr [rcx+0x08]
+ ; gcrRegs +[rax]
+ cmp dword ptr [rax+0x08], ebx
jbe SHORT G_M1354_IG06
- movsxd rdx, esi
- call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx r8]
- ; gcr arg pop 0
- inc dword ptr [rbx+0x14]
- inc esi
- mov dword ptr [rbx+0x10], esi
- jmp SHORT G_M1354_IG07
- ;; size=38 bbWeight=0.50 PerfScore 8.75
-G_M1354_IG06: ; bbWeight=0.50, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref
+ movsxd rdx, ebx
+ mov rcx, rax
+ mov r8, gword ptr [rbp-0x28]
; gcrRegs +[r8]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rdx, r8
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx r8]
+ ; GC ptr vars -{V15}
+ call CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rax rcx r8]
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M1354_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x20], xmm0
- ;; size=9 bbWeight=0.50 PerfScore 0.67
-G_M1354_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 64
+ mov rcx, gword ptr [rbp-0x20]
+ ; gcrRegs +[rcx]
+ inc dword ptr [rcx+0x14]
+ inc ebx
+ mov dword ptr [rcx+0x10], ebx
+ jmp SHORT G_M1354_IG07
+ ;; size=45 bbWeight=0.50 PerfScore 9.38
+G_M1354_IG06: ; bbWeight=0.50, gcVars=000000000000000A {V14 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx]
+ ; GC ptr vars +{V03 V15}
+ mov rcx, gword ptr [rbp-0x20]
+ ; gcrRegs +[rcx]
+ mov rdx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rdx]
+ ; GC ptr vars -{V03 V14 V15}
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M1354_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M1354_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 72
pop rbx
- pop rsi
pop rbp
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
-G_M1354_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M1354_IG09: ; bbWeight=0, gcVars=000000000000000A {V14 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V01 V03 V14 V15}
push rbp
- push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x50]
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M1354_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rbx, gword ptr [rbp-0x20]
- ; gcrRegs +[rbx]
- mov r8, gword ptr [rbp-0x18]
- ; gcrRegs +[r8]
- mov esi, dword ptr [rbx+0x10]
- mov rcx, gword ptr [rbx+0x08]
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M1354_IG10: ; bbWeight=0, gcVars=000000000000000A {V14 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x08], esi
+ mov ebx, dword ptr [rcx+0x10]
+ mov rax, gword ptr [rcx+0x08]
+ ; gcrRegs +[rax]
+ cmp dword ptr [rax+0x08], ebx
ja SHORT G_M1354_IG11
- mov rcx, rbx
- mov rdx, r8
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx]
+ ; GC ptr vars -{V01 V03 V14 V15}
call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx r8]
+ ; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
jmp SHORT G_M1354_IG12
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M1354_IG11: ; bbWeight=0, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rcx rbx r8]
- movsxd rdx, esi
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M1354_IG11: ; bbWeight=0, gcVars=000000000000000A {V14 V15}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax]
+ ; GC ptr vars +{V01 V03 V14 V15}
+ movsxd rdx, ebx
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov r8, gword ptr [rbp-0x28]
+ ; gcrRegs +[r8]
+ ; GC ptr vars -{V01 V03 V15}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx r8]
+ ; gcrRegs -[rax rcx r8]
; gcr arg pop 0
- inc dword ptr [rbx+0x14]
- lea eax, [rsi+0x01]
- mov dword ptr [rbx+0x10], eax
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M1354_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x20], xmm0
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M1354_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 48
+ mov rcx, gword ptr [rbp-0x20]
...
+12 (+4.96%) : 2451.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:g__EmitUncaptureUntilPopped|31():this (FullOpts)
@@ -8,51 +8,60 @@
; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 5 ) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0>
-; V01 loc0 [V01 ] ( 9, 3 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder>
+; V00 this [V00,T00] ( 7, 5 ) ref -> rbx this class-hnd single-def <System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0>
+; V01 loc0 [V01,T06] ( 3, 1.50) struct (16) [rbp-0x18] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T04] ( 2, 2 ) ref -> rcx class-hnd single-def "impAppendStmt" <System.Text.RegularExpressions.RegexCompiler>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder>
-; V06 tmp4 [V06,T00] ( 14, 7 ) ref -> rbx class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.Reflection.Emit.LocalBuilder]>
-; V07 tmp5 [V07,T03] ( 8, 2 ) int -> rsi "Inline stloc first use temp"
-; V08 tmp6 [V08,T05] ( 6, 1.50) ref -> rcx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V09 tmp7 [V09,T02] ( 6, 3 ) ref -> r8 class-hnd "Inlining Arg" <System.Reflection.Emit.LocalBuilder>
-;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref "field V04._pool (fldOffset=0x0)" P-INDEP
-; V11 tmp9 [V11,T06] ( 2, 1 ) ref -> rdx single-def "field V04._local (fldOffset=0x8)" P-INDEP
-;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref "field V05._pool (fldOffset=0x0)" P-INDEP
-; V13 tmp11 [V13,T07] ( 2, 1 ) ref -> rdx single-def "field V05._local (fldOffset=0x8)" P-INDEP
-; V14 PSPSym [V14,T08] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.Reflection.Emit.LocalBuilder]>
+; V07 tmp5 [V07,T02] ( 8, 2 ) int -> rbx "Inline stloc first use temp"
+; V08 tmp6 [V08,T05] ( 6, 1.50) ref -> rax class-hnd "Inline stloc first use temp" <<unknown class>>
+;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Emit.LocalBuilder>
+;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._pool (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "field V04._local (fldOffset=0x8)" P-INDEP
+;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._pool (fldOffset=0x0)" P-INDEP
+;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._local (fldOffset=0x8)" P-INDEP
+; V14 tmp12 [V14,T01] ( 13, 3 ) ref -> [rbp-0x20] EH-live spill-single-def "V01.[000..008)"
+; V15 tmp13 [V15,T03] ( 7, 2 ) ref -> [rbp-0x28] EH-live spill-single-def "V01.[008..016)"
+; V16 PSPSym [V16,T07] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M1354_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rsi
push rbx
- sub rsp, 64
+ sub rsp, 72
lea rbp, [rsp+0x50]
xor eax, eax
- mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x18], rax
+ mov qword ptr [rbp-0x10], rax
mov qword ptr [rbp-0x30], rsp
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=29 bbWeight=1 PerfScore 7.25
-G_M1354_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=1 PerfScore 6.25
+G_M1354_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x3C], 0
- je SHORT G_M1354_IG08
- ;; size=6 bbWeight=1 PerfScore 4.00
+ je G_M1354_IG07
+ ;; size=10 bbWeight=1 PerfScore 4.00
G_M1354_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
- lea rdx, [rbp-0x20]
+ lea rdx, [rbp-0x18]
call [System.Text.RegularExpressions.RegexCompiler:RentInt32Local():System.Text.RegularExpressions.RegexCompiler+RentedLocalBuilder:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- nop
- ;; size=15 bbWeight=0.50 PerfScore 2.88
-G_M1354_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov rcx, gword ptr [rbp-0x18]
+ ; gcrRegs +[rcx]
+ mov gword ptr [rbp-0x20], rcx
+ ; GC ptr vars +{V14}
+ mov rdx, gword ptr [rbp-0x10]
+ ; gcrRegs +[rdx]
+ mov gword ptr [rbp-0x28], rdx
+ ; GC ptr vars +{V15}
+ ;; size=30 bbWeight=0.50 PerfScore 4.75
+G_M1354_IG04: ; bbWeight=0.50, gcVars=000000000000000A {V14 V15}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx rdx]
mov rcx, rbx
; gcrRegs +[rcx]
call [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitStackPop|34():this]
@@ -60,111 +69,117 @@ G_M1354_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
; gcr arg pop 0
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x18]
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov rdx, gword ptr [rbp-0x18]
- ; gcrRegs +[rdx]
mov rcx, rbx
; gcrRegs +[rcx]
+ mov rdx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx rbx]
; gcr arg pop 0
nop
;; size=37 bbWeight=0.50 PerfScore 6.88
G_M1354_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rbx, gword ptr [rbp-0x20]
- ; gcrRegs +[rbx]
- mov r8, gword ptr [rbp-0x18]
- ; gcrRegs +[r8]
- mov esi, dword ptr [rbx+0x10]
- mov rcx, gword ptr [rbx+0x08]
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x08], esi
+ mov ebx, dword ptr [rcx+0x10]
+ mov rax, gword ptr [rcx+0x08]
+ ; gcrRegs +[rax]
+ cmp dword ptr [rax+0x08], ebx
jbe SHORT G_M1354_IG06
- movsxd rdx, esi
- call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx r8]
- ; gcr arg pop 0
- inc dword ptr [rbx+0x14]
- inc esi
- mov dword ptr [rbx+0x10], esi
- jmp SHORT G_M1354_IG07
- ;; size=38 bbWeight=0.50 PerfScore 8.75
-G_M1354_IG06: ; bbWeight=0.50, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref
+ movsxd rdx, ebx
+ mov rcx, rax
+ mov r8, gword ptr [rbp-0x28]
; gcrRegs +[r8]
- mov rcx, rbx
- ; gcrRegs +[rcx]
- mov rdx, r8
- ; gcrRegs +[rdx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx r8]
+ ; GC ptr vars -{V15}
+ call CORINFO_HELP_ARRADDR_ST
+ ; gcrRegs -[rax rcx r8]
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M1354_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x20], xmm0
- ;; size=9 bbWeight=0.50 PerfScore 0.67
-G_M1354_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 64
+ mov rcx, gword ptr [rbp-0x20]
+ ; gcrRegs +[rcx]
+ inc dword ptr [rcx+0x14]
+ inc ebx
+ mov dword ptr [rcx+0x10], ebx
+ jmp SHORT G_M1354_IG07
+ ;; size=45 bbWeight=0.50 PerfScore 9.38
+G_M1354_IG06: ; bbWeight=0.50, gcVars=000000000000000A {V14 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rcx]
+ ; GC ptr vars +{V03 V15}
+ mov rcx, gword ptr [rbp-0x20]
+ ; gcrRegs +[rcx]
+ mov rdx, gword ptr [rbp-0x28]
+ ; gcrRegs +[rdx]
+ ; GC ptr vars -{V03 V14 V15}
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M1354_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M1354_IG08: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 72
pop rbx
- pop rsi
pop rbp
ret
- ;; size=8 bbWeight=1 PerfScore 2.75
-G_M1354_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=7 bbWeight=1 PerfScore 2.25
+G_M1354_IG09: ; bbWeight=0, gcVars=000000000000000A {V14 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V01 V03 V14 V15}
push rbp
- push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
lea rbp, [rbp+0x50]
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M1354_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rbx, gword ptr [rbp-0x20]
- ; gcrRegs +[rbx]
- mov r8, gword ptr [rbp-0x18]
- ; gcrRegs +[r8]
- mov esi, dword ptr [rbx+0x10]
- mov rcx, gword ptr [rbx+0x08]
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M1354_IG10: ; bbWeight=0, gcVars=000000000000000A {V14 V15}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rcx, gword ptr [rbp-0x20]
; gcrRegs +[rcx]
- cmp dword ptr [rcx+0x08], esi
+ mov ebx, dword ptr [rcx+0x10]
+ mov rax, gword ptr [rcx+0x08]
+ ; gcrRegs +[rax]
+ cmp dword ptr [rax+0x08], ebx
ja SHORT G_M1354_IG11
- mov rcx, rbx
- mov rdx, r8
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx]
+ ; GC ptr vars -{V01 V03 V14 V15}
call [<unknown method>]
- ; gcrRegs -[rcx rdx rbx r8]
+ ; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
jmp SHORT G_M1354_IG12
- ;; size=34 bbWeight=0 PerfScore 0.00
-G_M1354_IG11: ; bbWeight=0, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rcx rbx r8]
- movsxd rdx, esi
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M1354_IG11: ; bbWeight=0, gcVars=000000000000000A {V14 V15}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax]
+ ; GC ptr vars +{V01 V03 V14 V15}
+ movsxd rdx, ebx
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov r8, gword ptr [rbp-0x28]
+ ; gcrRegs +[r8]
+ ; GC ptr vars -{V01 V03 V15}
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx r8]
+ ; gcrRegs -[rax rcx r8]
; gcr arg pop 0
- inc dword ptr [rbx+0x14]
- lea eax, [rsi+0x01]
- mov dword ptr [rbx+0x10], eax
- ;; size=17 bbWeight=0 PerfScore 0.00
-G_M1354_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rbp-0x20], xmm0
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M1354_IG13: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 48
+ mov rcx, gword ptr [rbp-0x20]
...
+35 (+6.84%) : 24520.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[int]:ReadAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
@@ -9,49 +9,53 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 5, 3.50) ref -> rdi this class-hnd single-def <System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[int]>
-; V01 RetBuf [V01,T00] ( 9, 5.50) byref -> rbx single-def
+; V01 RetBuf [V01,T00] ( 12, 7 ) byref -> rbx single-def
;* V02 arg1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Threading.CancellationToken>
; V03 loc0 [V03,T04] ( 7, 3.50) ref -> r14 class-hnd exact single-def <System.Threading.Channels.BoundedChannel`1[int]>
-; V04 loc1 [V04,T13] ( 4, 1 ) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <System.Collections.Generic.Deque`1[int]>
-; V05 loc2 [V05 ] ( 6, 2.50) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
+; V04 loc1 [V04,T18] ( 4, 1 ) ref -> [rbp-0x58] class-hnd exact EH-live spill-single-def <System.Collections.Generic.Deque`1[int]>
+; V05 loc2 [V05 ] ( 6, 2.50) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Threading.Channels.AsyncOperation`1[int]>
-; V07 loc4 [V07 ] ( 14, 7 ) struct (16) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed <System.Threading.Tasks.ValueTask`1[int]>
-; V08 loc5 [V08,T06] ( 5, 2.50) ref -> rdi class-hnd single-def <System.Threading.Channels.AsyncOperation`1[int]>
+; V07 loc4 [V07,T08] ( 5, 2.50) struct (16) [rbp-0x50] do-not-enreg[HS] must-init hidden-struct-arg <System.Threading.Tasks.ValueTask`1[int]>
+; V08 loc5 [V08,T06] ( 5, 2.50) ref -> r13 class-hnd single-def <System.Threading.Channels.AsyncOperation`1[int]>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T07] ( 2, 2 ) int -> rdi "impAppendStmt"
+; V10 tmp1 [V10,T12] ( 2, 2 ) int -> r13 "impAppendStmt"
; V11 tmp2 [V11,T03] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Channels.AsyncOperation`1[int]>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V13 tmp4 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
;* V14 tmp5 [V14,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
; V16 tmp7 [V16,T05] ( 3, 3 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[int]>
-; V17 tmp8 [V17,T08] ( 2, 2 ) ubyte -> rcx "Inlining Arg"
+; V17 tmp8 [V17,T13] ( 2, 2 ) ubyte -> rcx "Inlining Arg"
;* V18 tmp9 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.Deque`1[int]>
;* V19 tmp10 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
-; V21 tmp12 [V21,T09] ( 2, 2 ) short -> rcx "Inlining Arg"
+; V21 tmp12 [V21,T14] ( 2, 2 ) short -> r12 "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask`1[int]>
-; V23 tmp14 [V23,T10] ( 2, 2 ) short -> rcx "Inlining Arg"
+; V23 tmp14 [V23,T15] ( 2, 2 ) short -> r12 "Inlining Arg"
; V24 tmp15 [V24,T01] ( 7, 4.50) ref -> rsi single-def "field V02._source (fldOffset=0x0)" P-INDEP
-;* V25 tmp16 [V25,T21] ( 0, 0 ) ref -> zero-ref single-def "field V12._obj (fldOffset=0x0)" P-INDEP
-; V26 tmp17 [V26,T17] ( 2, 1 ) int -> rax "field V12._result (fldOffset=0x8)" P-INDEP
-;* V27 tmp18 [V27,T23] ( 0, 0 ) short -> zero-ref "field V12._token (fldOffset=0xc)" P-INDEP
-;* V28 tmp19 [V28,T24] ( 0, 0 ) ubyte -> zero-ref "field V12._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-; V29 tmp20 [V29,T14] ( 2, 1 ) ref -> rdx single-def "field V13._obj (fldOffset=0x0)" P-INDEP
-;* V30 tmp21 [V30,T25] ( 0, 0 ) int -> zero-ref "field V13._result (fldOffset=0x8)" P-INDEP
-;* V31 tmp22 [V31,T26] ( 0, 0 ) short -> zero-ref "field V13._token (fldOffset=0xc)" P-INDEP
-;* V32 tmp23 [V32,T27] ( 0, 0 ) ubyte -> zero-ref "field V13._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-; V33 tmp24 [V33,T15] ( 2, 1 ) ref -> rdi single-def "field V20._obj (fldOffset=0x0)" P-INDEP
-;* V34 tmp25 [V34,T28] ( 0, 0 ) int -> zero-ref "field V20._result (fldOffset=0x8)" P-INDEP
-; V35 tmp26 [V35,T18] ( 2, 1 ) short -> rcx "field V20._token (fldOffset=0xc)" P-INDEP
-;* V36 tmp27 [V36,T29] ( 0, 0 ) ubyte -> zero-ref "field V20._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-; V37 tmp28 [V37,T16] ( 2, 1 ) ref -> r15 single-def "field V22._obj (fldOffset=0x0)" P-INDEP
-;* V38 tmp29 [V38,T30] ( 0, 0 ) int -> zero-ref "field V22._result (fldOffset=0x8)" P-INDEP
-; V39 tmp30 [V39,T19] ( 2, 1 ) short -> rcx "field V22._token (fldOffset=0xc)" P-INDEP
-;* V40 tmp31 [V40,T31] ( 0, 0 ) ubyte -> zero-ref "field V22._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
-; V41 PSPSym [V41,T20] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T11] ( 3, 1.50) ref -> rdx "CSE #02: moderate"
-; V43 cse1 [V43,T12] ( 3, 1.50) ref -> rdx "CSE #01: moderate"
+;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._obj (fldOffset=0x0)" P-INDEP
+; V26 tmp17 [V26,T20] ( 2, 1 ) int -> r15 "field V12._result (fldOffset=0x8)" P-INDEP
+;* V27 tmp18 [V27 ] ( 0, 0 ) short -> zero-ref "field V12._token (fldOffset=0xc)" P-INDEP
+;* V28 tmp19 [V28 ] ( 0, 0 ) ubyte -> zero-ref "field V12._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+; V29 tmp20 [V29,T19] ( 2, 1 ) ref -> rdx single-def "field V13._obj (fldOffset=0x0)" P-INDEP
+;* V30 tmp21 [V30,T23] ( 0, 0 ) int -> zero-ref "field V13._result (fldOffset=0x8)" P-INDEP
+;* V31 tmp22 [V31,T24] ( 0, 0 ) short -> zero-ref "field V13._token (fldOffset=0xc)" P-INDEP
+;* V32 tmp23 [V32,T25] ( 0, 0 ) ubyte -> zero-ref "field V13._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+;* V33 tmp24 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._obj (fldOffset=0x0)" P-INDEP
+;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref "field V20._result (fldOffset=0x8)" P-INDEP
+;* V35 tmp26 [V35 ] ( 0, 0 ) short -> zero-ref "field V20._token (fldOffset=0xc)" P-INDEP
+;* V36 tmp27 [V36 ] ( 0, 0 ) ubyte -> zero-ref "field V20._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._obj (fldOffset=0x0)" P-INDEP
+;* V38 tmp29 [V38 ] ( 0, 0 ) int -> zero-ref "field V22._result (fldOffset=0x8)" P-INDEP
+;* V39 tmp30 [V39 ] ( 0, 0 ) short -> zero-ref "field V22._token (fldOffset=0xc)" P-INDEP
+;* V40 tmp31 [V40 ] ( 0, 0 ) ubyte -> zero-ref "field V22._continueOnCapturedContext (fldOffset=0xe)" P-INDEP
+; V41 tmp32 [V41,T07] ( 5, 2.50) ref -> r13 "V07.[000..008)"
+; V42 tmp33 [V42,T09] ( 5, 2.50) int -> r15 "V07.[008..012)"
+; V43 tmp34 [V43,T10] ( 5, 2.50) short -> r12 "V07.[012..014)"
+; V44 tmp35 [V44,T11] ( 5, 2.50) ubyte -> rdi "V07.[014..015)"
+; V45 PSPSym [V45,T21] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V46 cse0 [V46,T16] ( 3, 1.50) ref -> rdx "CSE #02: moderate"
+; V47 cse1 [V47,T17] ( 3, 1.50) ref -> rdx "CSE #01: moderate"
;
; Lcl frame size = 72
@@ -59,21 +63,23 @@ G_M19570_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbp
push r15
push r14
+ push r13
+ push r12
push rdi
push rsi
push rbx
sub rsp, 72
- lea rbp, [rsp+0x70]
+ lea rbp, [rsp+0x80]
xor eax, eax
- mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x50], rsp
+ mov qword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0x60], rsp
mov rdi, rcx
; gcrRegs +[rdi]
mov rbx, rdx
; byrRegs +[rbx]
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=36 bbWeight=1 PerfScore 9.75
+ ;; size=43 bbWeight=1 PerfScore 11.75
G_M19570_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
test rsi, rsi
je SHORT G_M19570_IG04
@@ -98,10 +104,10 @@ G_M19570_IG04: ; bbWeight=0.50, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008
; gcrRegs +[r14]
mov rcx, gword ptr [r14+0x28]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x48], rcx
+ mov gword ptr [rbp-0x58], rcx
; GC ptr vars +{V04}
xor edx, edx
- mov dword ptr [rbp-0x30], edx
+ mov dword ptr [rbp-0x40], edx
jmp SHORT G_M19570_IG07
;; size=19 bbWeight=0.50 PerfScore 4.12
G_M19570_IG05: ; bbWeight=0.50, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref
@@ -124,22 +130,24 @@ G_M19570_IG06: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
pop rsi
pop rdi
+ pop r12
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=13 bbWeight=0.50 PerfScore 2.12
-G_M19570_IG07: ; bbWeight=0.50, gcVars=0000000000002000 {V04}, gcrefRegs=40C2 {rcx rsi rdi r14}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ;; size=17 bbWeight=0.50 PerfScore 2.62
+G_M19570_IG07: ; bbWeight=0.50, gcVars=0000000000040000 {V04}, gcrefRegs=40C2 {rcx rsi rdi r14}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs +[rcx rsi rdi r14]
; byrRegs -[rax]
; GC ptr vars +{V04}
- cmp byte ptr [rbp-0x30], 0
+ cmp byte ptr [rbp-0x40], 0
jne G_M19570_IG12
- lea rdx, [rbp-0x30]
+ lea rdx, [rbp-0x40]
call <unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- movzx rcx, byte ptr [rbp-0x30]
+ movzx rcx, byte ptr [rbp-0x40]
test ecx, ecx
jne SHORT G_M19570_IG08
mov rdx, 0xD1FFAB1E
@@ -159,58 +167,60 @@ G_M19570_IG08: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rcx rsi rdi r14]
; gcr arg pop 0
- xor rdx, rdx
- ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x40], rdx
- mov dword ptr [rbp-0x38], eax
- mov word ptr [rbp-0x34], 0
- mov byte ptr [rbp-0x32], 1
+ mov r15d, eax
+ xor r13, r13
+ ; gcrRegs +[r13]
+ xor r12d, r12d
+ mov edi, 1
jmp G_M19570_IG13
- ;; size=43 bbWeight=0.50 PerfScore 7.75
+ ;; size=38 bbWeight=0.50 PerfScore 6.12
G_M19570_IG09: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rdx] +[rsi rdi r14]
+ ; gcrRegs -[r13] +[rsi rdi r14]
mov rdx, gword ptr [r14+0x50]
; gcrRegs +[rdx]
test rdx, rdx
je SHORT G_M19570_IG10
- lea rcx, [rbp-0x40]
+ lea rcx, [rbp-0x50]
call [System.Threading.Channels.ChannelUtilities:GetInvalidCompletionValueTask[int](System.Exception):System.Threading.Tasks.ValueTask`1[int]]
; gcrRegs -[rdx rsi rdi r14]
; gcr arg pop 0
+ mov r13, gword ptr [rbp-0x50]
+ ; gcrRegs +[r13]
+ mov r15d, dword ptr [rbp-0x48]
+ movsx r12, word ptr [rbp-0x44]
+ movzx rdi, byte ptr [rbp-0x42]
jmp G_M19570_IG13
- ;; size=24 bbWeight=0.50 PerfScore 4.38
+ ;; size=42 bbWeight=0.50 PerfScore 7.38
G_M19570_IG10: ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs +[rsi rdi r14]
+ ; gcrRegs -[r13] +[rsi rdi r14]
test rsi, rsi
jne SHORT G_M19570_IG11
- mov rdi, gword ptr [rdi+0x10]
- mov rcx, rdi
+ mov r13, gword ptr [rdi+0x10]
+ ; gcrRegs +[r13]
+ mov rcx, r13
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
call [System.Threading.Channels.AsyncOperation`1[int]:TryOwnAndReset():ubyte:this]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rcx rdi]
; gcr arg pop 0
test eax, eax
je SHORT G_M19570_IG11
mov rcx, gword ptr [r14+0x30]
; gcrRegs +[rcx]
- mov rdx, rdi
+ mov rdx, r13
; gcrRegs +[rdx]
cmp dword ptr [rcx], ecx
call [System.Collections.Generic.Deque`1[System.__Canon]:EnqueueTail(System.__Canon):this]
; gcrRegs -[rcx rdx rsi r14]
; gcr arg pop 0
- movsx rcx, word ptr [rdi+0x40]
- mov gword ptr [rbp-0x40], rdi
- xor eax, eax
- mov dword ptr [rbp-0x38], eax
- mov word ptr [rbp-0x34], cx
- mov byte ptr [rbp-0x32], 1
+ movsx r12, word ptr [r13+0x40]
+ xor r15d, r15d
+ mov edi, 1
jmp SHORT G_M19570_IG13
- ;; size=63 bbWeight=0.50 PerfScore 14.62
+ ;; size=54 bbWeight=0.50 PerfScore 12.75
G_M19570_IG11: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0008 {rbx}, byref, isz
- ; gcrRegs -[rdi] +[rsi r14]
- movzx rdi, byte ptr [r14+0x60]
+ ; gcrRegs -[r13] +[rsi r14]
+ movzx r13, byte ptr [r14+0x60]
mov rcx, 0xD1FFAB1E ; System.Threading.Channels.AsyncOperation`1[int]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -220,7 +230,7 @@ G_M19570_IG11: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0008
test rsi, rsi
setne dl
movzx rdx, dl
- or edx, edi
+ or edx, r13d
movzx rdx, dl
mov rcx, r15
; gcrRegs +[rcx]
@@ -238,76 +248,85 @@ G_M19570_IG11: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0008
call [System.Collections.Generic.Deque`1[System.__Canon]:EnqueueTail(System.__Canon):this]
; gcrRegs -[rcx rdx r14]
...
benchmarks.run_pgo.windows.x64.checked.mch
-27 (-20.77%) : 95691.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
@@ -10,28 +10,26 @@
;
; V00 this [V00,T00] ( 6, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol>
; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> rbp single-def
-; V02 loc0 [V02 ] ( 2, 0 ) struct (24) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V02 loc0 [V02 ] ( 2, 0 ) struct (24) [rsp+0x20] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 0 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 88
+; Lcl frame size = 56
G_M32568_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
push rbx
- sub rsp, 88
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
+ sub rsp, 56
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x30], ymm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqa xmmword ptr [rsp+0x20], xmm4
+ xor eax, eax
+ mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rbp, rdx
; byrRegs +[rbp]
- ;; size=36 bbWeight=1 PerfScore 9.33
+ ;; size=31 bbWeight=1 PerfScore 8.33
G_M32568_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
cmp gword ptr [rbx+0x28], 0
je SHORT G_M32568_IG05
@@ -52,40 +50,32 @@ G_M32568_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp},
; byrRegs +[rax]
;; size=26 bbWeight=1 PerfScore 5.75
G_M32568_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
+ add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M32568_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M32568_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs +[rbx]
; byrRegs -[rax rsi rdi]
- lea rdx, [rsp+0x40]
+ lea rdx, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:GetTypeSymbol():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M32568_IG06: ; bbWeight=0, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x40]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- mov rdx, qword ptr [rsp+0x50]
- mov qword ptr [rsp+0x38], rdx
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M32568_IG07: ; bbWeight=0, isz, extend
- lea rdx, [rsp+0x28]
+ lea rdx, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:SetTypeWithAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this]
; gcrRegs -[rcx]
; gcr arg pop 0
jmp SHORT G_M32568_IG03
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 30, PerfScore 22.33, instruction count 38, allocated bytes for code 130 (MethodHash=d87180c7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
+; Total bytes of code 103, prolog size 25, PerfScore 21.33, instruction count 33, allocated bytes for code 103 (MethodHash=d87180c7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
; ============================================================
Unwind Info:
@@ -98,7 +88,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-49 (-13.10%) : 48764.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteConditionalExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
@@ -10,9 +10,9 @@
; V02 arg1 [V02 ] ( 1, 1 ) ref -> [rbp+0x20] do-not-enreg[] class-hnd <System.Linq.Expressions.Expression>
; V03 arg2 [V03 ] ( 1, 1 ) int -> [rbp+0x28] do-not-enreg[]
; V04 loc0 [V04 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init class-hnd <<unknown class>>
-; V05 loc1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed <System.Linq.Expressions.Compiler.StackSpiller+Result>
-; V06 loc2 [V06 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed <System.Linq.Expressions.Compiler.StackSpiller+Result>
-; V07 loc3 [V07 ] ( 1, 1 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V05 loc1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x28] do-not-enreg[HS] must-init hidden-struct-arg <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V06 loc2 [V06 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[HS] must-init hidden-struct-arg <System.Linq.Expressions.Compiler.StackSpiller+Result>
+; V07 loc3 [V07 ] ( 1, 1 ) struct (16) [rbp-0x48] do-not-enreg[HS] must-init hidden-struct-arg <System.Linq.Expressions.Compiler.StackSpiller+Result>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V09 tmp1 [V09 ] ( 1, 1 ) int -> [rbp-0x4C] do-not-enreg[] "DUP instruction"
; V10 tmp2 [V10 ] ( 1, 1 ) int -> [rbp-0x50] do-not-enreg[]
@@ -21,28 +21,25 @@
; V13 tmp5 [V13 ] ( 1, 1 ) ref -> [rbp-0x70] do-not-enreg[] must-init "argument with side effect"
; V14 tmp6 [V14 ] ( 1, 1 ) ref -> [rbp-0x78] do-not-enreg[] must-init "argument with side effect"
; V15 tmp7 [V15 ] ( 1, 1 ) ref -> [rbp-0x80] do-not-enreg[] must-init "argument with side effect"
-; V16 tmp8 [V16 ] ( 1, 1 ) ref -> [rbp-0x88] do-not-enreg[] must-init "argument with side effect"
-; V17 tmp9 [V17 ] ( 1, 1 ) ref -> [rbp-0x90] do-not-enreg[] must-init "argument with side effect"
-; V18 tmp10 [V18 ] ( 1, 1 ) ref -> [rbp-0x98] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 176
+; Lcl frame size = 144
G_M33374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push rdi
push rsi
- sub rsp, 176
- lea rbp, [rsp+0xC0]
- xor eax, eax
- mov qword ptr [rbp-0x98], rax
+ sub rsp, 144
+ lea rbp, [rsp+0xA0]
vxorps xmm4, xmm4, xmm4
- vmovdqu32 zmmword ptr [rbp-0x90], zmm4
- vmovdqu32 zmmword ptr [rbp-0x50], zmm4
+ vmovdqu32 zmmword ptr [rbp-0x80], zmm4
+ vmovdqa xmmword ptr [rbp-0x40], xmm4
+ vmovdqa xmmword ptr [rbp-0x30], xmm4
+ vmovdqa xmmword ptr [rbp-0x20], xmm4
mov gword ptr [rbp+0x10], rcx
mov bword ptr [rbp+0x18], rdx
mov gword ptr [rbp+0x20], r8
mov dword ptr [rbp+0x28], r9d
- ;; size=67 bbWeight=1 PerfScore 13.33
+ ;; size=60 bbWeight=1 PerfScore 16.08
G_M33374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbp+0x20]
; gcrRegs +[rdx]
@@ -100,16 +97,10 @@ G_M33374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov dword ptr [rbp-0x50], eax
cmp dword ptr [rbp-0x4C], 0
je SHORT G_M33374_IG03
- mov rax, gword ptr [rbp-0x28]
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x98], rax
- mov rax, gword ptr [rbp-0x38]
- mov gword ptr [rbp-0x88], rax
- mov rax, gword ptr [rbp-0x48]
- mov gword ptr [rbp-0x90], rax
mov rcx, gword ptr [rbp-0x18]
; gcrRegs +[rcx]
mov rax, gword ptr [rbp-0x18]
+ ; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x48]
@@ -118,16 +109,16 @@ G_M33374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov gword ptr [rbp-0x80], rax
mov r9, gword ptr [rbp-0x80]
; gcrRegs +[r9]
- mov rdx, gword ptr [rbp-0x88]
+ mov rdx, gword ptr [rbp-0x38]
; gcrRegs +[rdx]
- mov r8, gword ptr [rbp-0x90]
+ mov r8, gword ptr [rbp-0x48]
; gcrRegs +[r8]
- mov rcx, gword ptr [rbp-0x98]
+ mov rcx, gword ptr [rbp-0x28]
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rdx r8-r9]
mov gword ptr [rbp+0x20], rax
- ;; size=251 bbWeight=1 PerfScore 81.75
+ ;; size=209 bbWeight=1 PerfScore 75.75
G_M33374_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
vxorps xmm0, xmm0, xmm0
@@ -148,14 +139,14 @@ G_M33374_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs +[rax]
;; size=45 bbWeight=1 PerfScore 11.33
G_M33374_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 176
+ add rsp, 144
pop rsi
pop rdi
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 2.75
-; Total bytes of code 374, prolog size 51, PerfScore 109.17, instruction count 87, allocated bytes for code 374 (MethodHash=9c6c7da1) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteConditionalExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
+; Total bytes of code 325, prolog size 44, PerfScore 105.92, instruction count 81, allocated bytes for code 325 (MethodHash=9c6c7da1) for method System.Linq.Expressions.Compiler.StackSpiller:RewriteConditionalExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
; ============================================================
Unwind Info:
@@ -169,7 +160,7 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 22 * 8 = 176 = 0x000B0
+ Size: 18 * 8 = 144 = 0x00090
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-18 (-12.16%) : 95803.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundRoot():Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -10,29 +10,30 @@
; V00 this [V00,T00] ( 7, 6.83) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
-; V03 tmp2 [V03,T03] ( 3, 2.17) ref -> rdx "guarded devirt return temp"
+; V03 tmp2 [V03,T05] ( 3, 2.17) ref -> rdx "guarded devirt return temp"
;* V04 tmp3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.MethodBodySemanticModel>
-; V05 tmp4 [V05,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V05 tmp4 [V05,T06] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
;* V06 tmp5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
-; V07 tmp6 [V07 ] ( 5, 3.83) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]>
-; V08 tmp7 [V08,T06] ( 2, 0.00) int -> rcx "Inline return value spill temp"
-; V09 tmp8 [V09,T05] ( 3, 1 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V10 tmp9 [V10,T01] ( 2, 6.67) ref -> r8 single-def "argument with side effect"
-; V11 tmp10 [V11,T07] ( 3, 0 ) ref -> rax single-def "arr expr"
-; V12 cse0 [V12,T02] ( 4, 3.67) long -> rsi "CSE #01: aggressive"
+; V07 tmp6 [V07,T02] ( 3, 3.83) struct (16) [rsp+0x20] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op "Inline stloc first use temp" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]>
+; V08 tmp7 [V08,T08] ( 2, 0.00) int -> rcx "Inline return value spill temp"
+; V09 tmp8 [V09,T07] ( 3, 1 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
+; V10 tmp9 [V10,T04] ( 4, 3.33) ref -> rdi single-def "V07.[008..016)"
+; V11 tmp10 [V11,T01] ( 2, 6.67) ref -> r8 single-def "argument with side effect"
+; V12 cse0 [V12,T03] ( 4, 3.67) long -> rsi "CSE #01: aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M51810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rdi
push rsi
push rbx
- sub rsp, 56
+ sub rsp, 48
xor eax, eax
+ mov qword ptr [rsp+0x20], rax
mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=21 bbWeight=1 PerfScore 4.75
+ ;; size=22 bbWeight=1 PerfScore 5.75
G_M51810_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [rbx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.MethodBodySemanticModel
@@ -52,37 +53,38 @@ G_M51810_IG04: ; bbWeight=1.67, gcrefRegs=000C {rdx rbx}, byrefRegs=0000
; gcr arg pop 0
mov r8, rax
; gcrRegs +[r8]
- lea rdx, [rsp+0x28]
+ lea rdx, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax rcx rbx r8]
; gcr arg pop 0
- cmp gword ptr [rsp+0x30], 0
+ mov rdi, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
jne SHORT G_M51810_IG07
- ;; size=37 bbWeight=1.67 PerfScore 20.42
+ ;; size=39 bbWeight=1.67 PerfScore 19.17
G_M51810_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, gword ptr [rsp+0x28]
+ ; gcrRegs -[rdi]
+ mov rax, gword ptr [rsp+0x20]
; gcrRegs +[rax]
;; size=5 bbWeight=0.50 PerfScore 0.50
G_M51810_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 56
+ add rsp, 48
pop rbx
pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
-G_M51810_IG07: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- mov rcx, gword ptr [rsp+0x30]
- ; gcrRegs +[rcx]
- mov ecx, dword ptr [rcx+0x08]
- ; gcrRegs -[rcx]
+ ;; size=8 bbWeight=1 PerfScore 2.75
+G_M51810_IG07: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rdi]
+ mov ecx, dword ptr [rdi+0x08]
test ecx, ecx
jne SHORT G_M51810_IG09
jmp SHORT G_M51810_IG10
- ;; size=14 bbWeight=0.00 PerfScore 0.00
+ ;; size=9 bbWeight=0.00 PerfScore 0.00
G_M51810_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+ ; gcrRegs -[rdi] +[rbx]
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rsi+0x78]
@@ -93,29 +95,20 @@ G_M51810_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rdx]
jmp SHORT G_M51810_IG04
;; size=15 bbWeight=0 PerfScore 0.00
-G_M51810_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdx rbx]
- mov rax, gword ptr [rsp+0x30]
+G_M51810_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rdx rbx] +[rdi]
+ mov rax, gword ptr [rdi+0x10]
; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], 0
- jbe SHORT G_M51810_IG11
- mov rax, gword ptr [rax+0x10]
jmp SHORT G_M51810_IG06
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0 PerfScore 0.00
G_M51810_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
+ ; gcrRegs -[rax rdi]
xor rax, rax
; gcrRegs +[rax]
jmp SHORT G_M51810_IG06
;; size=4 bbWeight=0 PerfScore 0.00
-G_M51810_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 148, prolog size 18, PerfScore 32.42, instruction count 45, allocated bytes for code 148 (MethodHash=bae0359d) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundRoot():Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
+; Total bytes of code 130, prolog size 19, PerfScore 32.67, instruction count 42, allocated bytes for code 130 (MethodHash=bae0359d) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundRoot():Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
; ============================================================
Unwind Info:
@@ -123,11 +116,12 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07
+ CountOfUnwindCodes: 4
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+39 (+10.29%) : 107735.dasm - System.Buffers.Text.FormattingHelpers:TryFormat[double](double,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (Tier1)
@@ -9,11 +9,11 @@
; 4 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T18] ( 3, 3 ) double -> [rsp+0x90] ld-addr-op single-def
+; V00 arg0 [V00,T16] ( 3, 3 ) double -> [rsp+0x90] ld-addr-op single-def
; V01 arg1 [V01,T01] ( 3, 6 ) byref -> rbx single-def
; V02 arg2 [V02,T02] ( 3, 3 ) byref -> r8 single-def
; V03 arg3 [V03 ] ( 5, 4 ) struct ( 8) [rsp+0xA8] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.Buffers.StandardFormat>
-; V04 loc0 [V04 ] ( 4, 3 ) struct (16) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
+; V04 loc0 [V04,T17] ( 3, 0 ) struct (16) [rsp+0x50] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.Span`1[ushort]>
;* V05 loc1 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V06 loc2 [V06 ] ( 0, 0 ) double -> zero-ref ld-addr-op
; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -23,35 +23,37 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp7 [V14,T04] ( 2, 4 ) int -> rbp "Inlining Arg"
-; V15 tmp8 [V15,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+;* V14 tmp7 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V18 tmp11 [V18,T00] ( 9, 9.75) ref -> rax class-hnd single-def "Inlining Arg" <System.Globalization.CultureInfo>
;* V19 tmp12 [V19 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
-; V20 tmp13 [V20,T08] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V21 tmp14 [V21,T09] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V20 tmp13 [V20,T07] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V21 tmp14 [V21,T08] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V22 tmp15 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ptr "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V23 tmp16 [V23,T06] ( 2, 3 ) ref -> r8 class-hnd "spilling qmarkNull" <System.Globalization.NumberFormatInfo>
-; V24 tmp17 [V24,T05] ( 6, 3.19) ref -> r8
-; V25 tmp18 [V25,T07] ( 4, 2.06) ref -> rax single-def "ISINST eval op1"
-; V26 tmp19 [V26,T15] ( 3, 1.31) ref -> r8 class-hnd "spilling qmarkNull" <System.Globalization.NumberFormatInfo>
-; V27 tmp20 [V27,T16] ( 2, 1 ) ref -> r8 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
-; V28 tmp21 [V28,T17] ( 4, 0.88) ref -> r8
+; V23 tmp16 [V23,T05] ( 2, 3 ) ref -> r8 class-hnd "spilling qmarkNull" <System.Globalization.NumberFormatInfo>
+; V24 tmp17 [V24,T03] ( 6, 3.19) ref -> r8
+; V25 tmp18 [V25,T06] ( 4, 2.06) ref -> rax single-def "ISINST eval op1"
+; V26 tmp19 [V26,T13] ( 3, 1.31) ref -> r8 class-hnd "spilling qmarkNull" <System.Globalization.NumberFormatInfo>
+; V27 tmp20 [V27,T14] ( 2, 1 ) ref -> r8 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+; V28 tmp21 [V28,T15] ( 4, 0.88) ref -> r8
;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp25 [V32 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V33 tmp26 [V33,T19] ( 2, 0 ) byref -> r8 single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V34 tmp27 [V34,T20] ( 0, 0 ) int -> zero-ref ptr "field V11._length (fldOffset=0x8)" P-INDEP
-; V35 tmp28 [V35,T10] ( 2, 2 ) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V36 tmp29 [V36,T13] ( 2, 2 ) int -> rbp "field V12._length (fldOffset=0x8)" P-INDEP
-; V37 tmp30 [V37,T11] ( 2, 2 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-; V38 tmp31 [V38,T14] ( 2, 2 ) int -> rbp "field V13._length (fldOffset=0x8)" P-INDEP
-; V39 tmp32 [V39 ] ( 3, 0 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed ptr "by-value struct argument" <System.Span`1[ushort]>
-; V40 tmp33 [V40 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V41 GsCookie [V41 ] ( 1, 1 ) long -> [rsp+0x60] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V42 tmp35 [V42,T12] ( 2, 2 ) byref -> rsi single-def "shadowVar"
+; V33 tmp26 [V33,T18] ( 2, 0 ) byref -> r8 single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+;* V34 tmp27 [V34,T19] ( 0, 0 ) int -> zero-ref ptr "field V11._length (fldOffset=0x8)" P-INDEP
+;* V35 tmp28 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
+; V37 tmp30 [V37,T10] ( 2, 2 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp31 [V38,T12] ( 2, 2 ) int -> rbp "field V13._length (fldOffset=0x8)" P-INDEP
+; V39 tmp32 [V39,T09] ( 3, 2 ) byref -> rdi "V04.[000..008)"
+; V40 tmp33 [V40,T04] ( 4, 3 ) int -> rbp "V04.[008..012)"
+; V41 tmp34 [V41 ] ( 3, 0 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed ptr "by-value struct argument" <System.Span`1[ushort]>
+; V42 tmp35 [V42 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V43 GsCookie [V43 ] ( 1, 1 ) long -> [rsp+0x60] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V44 tmp37 [V44,T11] ( 2, 2 ) byref -> rsi single-def "shadowVar"
;
; Lcl frame size = 104
@@ -75,35 +77,37 @@ G_M7166_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0108 {rbx r8}, b
; byrRegs +[r8]
mov rsi, r8
; byrRegs +[rsi]
- vxorps xmm1, xmm1, xmm1
- vmovdqu xmmword ptr [rsp+0x50], xmm1
+ xor rdi, rdi
+ ; byrRegs +[rdi]
+ xor ebp, ebp
movzx rax, byte ptr [rsp+0xA8]
movzx rcx, byte ptr [rsp+0xA9]
or eax, ecx
- jne G_M7166_IG18
- ;; size=37 bbWeight=1 PerfScore 4.83
-G_M7166_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ jne G_M7166_IG19
+ ;; size=31 bbWeight=1 PerfScore 4.00
+G_M7166_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
; byrRegs -[r8]
- mov rdi, bword ptr [rsp+0x50]
- ; byrRegs +[rdi]
- mov ebp, dword ptr [rsp+0x58]
+ test ebp, ebp
+ jl G_M7166_IG20
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M7166_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
call [System.Globalization.CultureInfo:get_InvariantCulture():System.Globalization.CultureInfo]
; gcrRegs +[rax]
; gcr arg pop 0
test rax, rax
- je G_M7166_IG19
- ;; size=24 bbWeight=1 PerfScore 6.25
-G_M7166_IG04: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+ je G_M7166_IG21
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M7166_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
cmp byte ptr [rax+0x61], 0
- jne SHORT G_M7166_IG08
+ jne SHORT G_M7166_IG09
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M7166_IG05: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG06: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
mov r8, gword ptr [rax+0x18]
; gcrRegs +[r8]
test r8, r8
- jne SHORT G_M7166_IG07
+ jne SHORT G_M7166_IG08
;; size=9 bbWeight=0.25 PerfScore 0.81
-G_M7166_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref
+G_M7166_IG07: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref
; gcrRegs -[r8]
mov rcx, rax
; gcrRegs +[rcx]
@@ -116,11 +120,11 @@ G_M7166_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx
mov r8, rax
; gcrRegs +[r8]
;; size=16 bbWeight=0.12 PerfScore 0.94
-G_M7166_IG07: ; bbWeight=0.25, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG08: ; bbWeight=0.25, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M7166_IG13
+ jmp SHORT G_M7166_IG14
;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M7166_IG08: ; bbWeight=0.75, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG09: ; bbWeight=0.75, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[r8] +[rax]
mov rcx, 0xD1FFAB1E ; System.Globalization.NumberFormatInfo
xor r11, r11
@@ -130,9 +134,9 @@ G_M7166_IG08: ; bbWeight=0.75, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx
; gcrRegs +[r8]
cmove r8, rax
test r8, r8
- jne SHORT G_M7166_IG13
+ jne SHORT G_M7166_IG14
;; size=28 bbWeight=0.75 PerfScore 3.94
-G_M7166_IG09: ; bbWeight=0.38, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG10: ; bbWeight=0.38, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[r8 r11]
mov rcx, rax
; gcrRegs +[rcx]
@@ -143,18 +147,18 @@ G_M7166_IG09: ; bbWeight=0.38, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M7166_IG16
+ jne SHORT G_M7166_IG17
;; size=31 bbWeight=0.38 PerfScore 1.88
-G_M7166_IG10: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
+G_M7166_IG11: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
; gcrRegs -[rax]
xor r8, r8
; gcrRegs +[r8]
;; size=3 bbWeight=0.19 PerfScore 0.05
-G_M7166_IG11: ; bbWeight=0.38, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG12: ; bbWeight=0.38, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
test r8, r8
- jne SHORT G_M7166_IG13
+ jne SHORT G_M7166_IG14
;; size=5 bbWeight=0.38 PerfScore 0.47
-G_M7166_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
+G_M7166_IG13: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
; gcrRegs -[r8]
call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
; gcrRegs +[rax]
@@ -162,7 +166,7 @@ G_M7166_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi
mov r8, rax
; gcrRegs +[r8]
;; size=9 bbWeight=0.19 PerfScore 0.61
-G_M7166_IG13: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG14: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[rax]
mov bword ptr [rsp+0x30], rdi
mov dword ptr [rsp+0x38], ebp
@@ -178,13 +182,13 @@ G_M7166_IG13: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi
; gcr arg pop 0
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0x60], rcx
- je SHORT G_M7166_IG14
+ je SHORT G_M7166_IG15
call CORINFO_HELP_FAIL_FAST
;; size=59 bbWeight=1 PerfScore 14.00
-G_M7166_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7166_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M7166_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M7166_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 104
pop rbx
pop rbp
@@ -192,19 +196,19 @@ G_M7166_IG15: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M7166_IG16: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, gcvars, byref, isz
+G_M7166_IG17: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, gcvars, byref, isz
; gcrRegs +[rax]
; byrRegs +[rbx rsi rdi]
mov r8, 0xD1FFAB1E ; System.Globalization.NumberFormatInfo
cmp qword ptr [rax], r8
- jne SHORT G_M7166_IG10
+ jne SHORT G_M7166_IG11
;; size=15 bbWeight=0.19 PerfScore 0.80
-G_M7166_IG17: ; bbWeight=0.09, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG18: ; bbWeight=0.09, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
mov r8, rax
; gcrRegs +[r8]
- jmp SHORT G_M7166_IG11
+ jmp SHORT G_M7166_IG12
;; size=5 bbWeight=0.09 PerfScore 0.21
-G_M7166_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M7166_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; gcrRegs -[rax r8]
; byrRegs -[rdi]
lea r8, [rsp+0x28]
@@ -215,19 +219,32 @@ G_M7166_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
lea rcx, [rsp+0xA8]
call [System.Buffers.StandardFormat:Format(System.Span`1[ushort]):System.Span`1[ushort]:this]
; gcr arg pop 0
- jmp G_M7166_IG03
- ;; size=47 bbWeight=0 PerfScore 0.00
-G_M7166_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
+ mov rdi, bword ptr [rsp+0x50]
; byrRegs +[rdi]
+ mov ebp, dword ptr [rsp+0x58]
+ jmp G_M7166_IG03
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M7166_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; code for <unknown method>
+ call [rax]<unknown method>
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ jmp G_M7166_IG04
+ ;; size=37 bbWeight=0 PerfScore 0.00
...
+39 (+10.29%) : 22430.dasm - System.Buffers.Text.FormattingHelpers:TryFormat[double](double,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (Tier1)
@@ -9,11 +9,11 @@
; 4 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T18] ( 3, 3 ) double -> [rsp+0x90] ld-addr-op single-def
+; V00 arg0 [V00,T16] ( 3, 3 ) double -> [rsp+0x90] ld-addr-op single-def
; V01 arg1 [V01,T01] ( 3, 6 ) byref -> rbx single-def
; V02 arg2 [V02,T02] ( 3, 3 ) byref -> r8 single-def
; V03 arg3 [V03 ] ( 5, 4 ) struct ( 8) [rsp+0xA8] do-not-enreg[XSF] addr-exposed ld-addr-op single-def <System.Buffers.StandardFormat>
-; V04 loc0 [V04 ] ( 4, 3 ) struct (16) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Span`1[ushort]>
+; V04 loc0 [V04,T17] ( 3, 0 ) struct (16) [rsp+0x50] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.Span`1[ushort]>
;* V05 loc1 [V05 ] ( 0, 0 ) struct (16) zero-ref <System.Span`1[ushort]>
;* V06 loc2 [V06 ] ( 0, 0 ) double -> zero-ref ld-addr-op
; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -23,35 +23,37 @@
;* V11 tmp4 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V14 tmp7 [V14,T04] ( 2, 4 ) int -> rbp "Inlining Arg"
-; V15 tmp8 [V15,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+;* V14 tmp7 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V15 tmp8 [V15 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V18 tmp11 [V18,T00] ( 9, 9.75) ref -> rax class-hnd single-def "Inlining Arg" <System.Globalization.CultureInfo>
;* V19 tmp12 [V19 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
-; V20 tmp13 [V20,T08] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
-; V21 tmp14 [V21,T09] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V20 tmp13 [V20,T07] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+; V21 tmp14 [V21,T08] ( 3, 2 ) ref -> r8 class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
;* V22 tmp15 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ptr "Inline stloc first use temp" <System.Globalization.CultureInfo>
-; V23 tmp16 [V23,T06] ( 2, 3 ) ref -> r8 class-hnd "spilling qmarkNull" <System.Globalization.NumberFormatInfo>
-; V24 tmp17 [V24,T05] ( 6, 3.19) ref -> r8
-; V25 tmp18 [V25,T07] ( 4, 2.06) ref -> rax single-def "ISINST eval op1"
-; V26 tmp19 [V26,T15] ( 3, 1.31) ref -> r8 class-hnd "spilling qmarkNull" <System.Globalization.NumberFormatInfo>
-; V27 tmp20 [V27,T16] ( 2, 1 ) ref -> r8 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
-; V28 tmp21 [V28,T17] ( 4, 0.88) ref -> r8
+; V23 tmp16 [V23,T05] ( 2, 3 ) ref -> r8 class-hnd "spilling qmarkNull" <System.Globalization.NumberFormatInfo>
+; V24 tmp17 [V24,T03] ( 6, 3.19) ref -> r8
+; V25 tmp18 [V25,T06] ( 4, 2.06) ref -> rax single-def "ISINST eval op1"
+; V26 tmp19 [V26,T13] ( 3, 1.31) ref -> r8 class-hnd "spilling qmarkNull" <System.Globalization.NumberFormatInfo>
+; V27 tmp20 [V27,T14] ( 2, 1 ) ref -> r8 class-hnd exact single-def "dup spill" <System.Globalization.NumberFormatInfo>
+; V28 tmp21 [V28,T15] ( 4, 0.88) ref -> r8
;* V29 tmp22 [V29 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp23 [V30 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V31 tmp24 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V32 tmp25 [V32 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V33 tmp26 [V33,T19] ( 2, 0 ) byref -> r8 single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V34 tmp27 [V34,T20] ( 0, 0 ) int -> zero-ref ptr "field V11._length (fldOffset=0x8)" P-INDEP
-; V35 tmp28 [V35,T10] ( 2, 2 ) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V36 tmp29 [V36,T13] ( 2, 2 ) int -> rbp "field V12._length (fldOffset=0x8)" P-INDEP
-; V37 tmp30 [V37,T11] ( 2, 2 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-; V38 tmp31 [V38,T14] ( 2, 2 ) int -> rbp "field V13._length (fldOffset=0x8)" P-INDEP
-; V39 tmp32 [V39 ] ( 3, 0 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed ptr "by-value struct argument" <System.Span`1[ushort]>
-; V40 tmp33 [V40 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V41 GsCookie [V41 ] ( 1, 1 ) long -> [rsp+0x60] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V42 tmp35 [V42,T12] ( 2, 2 ) byref -> rsi single-def "shadowVar"
+; V33 tmp26 [V33,T18] ( 2, 0 ) byref -> r8 single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+;* V34 tmp27 [V34,T19] ( 0, 0 ) int -> zero-ref ptr "field V11._length (fldOffset=0x8)" P-INDEP
+;* V35 tmp28 [V35 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;* V36 tmp29 [V36 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
+; V37 tmp30 [V37,T10] ( 2, 2 ) byref -> rdi single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V38 tmp31 [V38,T12] ( 2, 2 ) int -> rbp "field V13._length (fldOffset=0x8)" P-INDEP
+; V39 tmp32 [V39,T09] ( 3, 2 ) byref -> rdi "V04.[000..008)"
+; V40 tmp33 [V40,T04] ( 4, 3 ) int -> rbp "V04.[008..012)"
+; V41 tmp34 [V41 ] ( 3, 0 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed ptr "by-value struct argument" <System.Span`1[ushort]>
+; V42 tmp35 [V42 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V43 GsCookie [V43 ] ( 1, 1 ) long -> [rsp+0x60] do-not-enreg[X] addr-exposed "GSSecurityCookie"
+; V44 tmp37 [V44,T11] ( 2, 2 ) byref -> rsi single-def "shadowVar"
;
; Lcl frame size = 104
@@ -75,35 +77,37 @@ G_M7166_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0108 {rbx r8}, b
; byrRegs +[r8]
mov rsi, r8
; byrRegs +[rsi]
- vxorps xmm1, xmm1, xmm1
- vmovdqu xmmword ptr [rsp+0x50], xmm1
+ xor rdi, rdi
+ ; byrRegs +[rdi]
+ xor ebp, ebp
movzx rax, byte ptr [rsp+0xA8]
movzx rcx, byte ptr [rsp+0xA9]
or eax, ecx
- jne G_M7166_IG18
- ;; size=37 bbWeight=1 PerfScore 4.83
-G_M7166_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ jne G_M7166_IG19
+ ;; size=31 bbWeight=1 PerfScore 4.00
+G_M7166_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
; byrRegs -[r8]
- mov rdi, bword ptr [rsp+0x50]
- ; byrRegs +[rdi]
- mov ebp, dword ptr [rsp+0x58]
+ test ebp, ebp
+ jl G_M7166_IG20
+ ;; size=8 bbWeight=1 PerfScore 1.25
+G_M7166_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
call [System.Globalization.CultureInfo:get_InvariantCulture():System.Globalization.CultureInfo]
; gcrRegs +[rax]
; gcr arg pop 0
test rax, rax
- je G_M7166_IG19
- ;; size=24 bbWeight=1 PerfScore 6.25
-G_M7166_IG04: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+ je G_M7166_IG21
+ ;; size=15 bbWeight=1 PerfScore 4.25
+G_M7166_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
cmp byte ptr [rax+0x61], 0
- jne SHORT G_M7166_IG08
+ jne SHORT G_M7166_IG09
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M7166_IG05: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG06: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
mov r8, gword ptr [rax+0x18]
; gcrRegs +[r8]
test r8, r8
- jne SHORT G_M7166_IG07
+ jne SHORT G_M7166_IG08
;; size=9 bbWeight=0.25 PerfScore 0.81
-G_M7166_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref
+G_M7166_IG07: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref
; gcrRegs -[r8]
mov rcx, rax
; gcrRegs +[rcx]
@@ -116,11 +120,11 @@ G_M7166_IG06: ; bbWeight=0.12, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx
mov r8, rax
; gcrRegs +[r8]
;; size=16 bbWeight=0.12 PerfScore 0.94
-G_M7166_IG07: ; bbWeight=0.25, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG08: ; bbWeight=0.25, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[rax]
- jmp SHORT G_M7166_IG13
+ jmp SHORT G_M7166_IG14
;; size=2 bbWeight=0.25 PerfScore 0.50
-G_M7166_IG08: ; bbWeight=0.75, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG09: ; bbWeight=0.75, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[r8] +[rax]
mov rcx, 0xD1FFAB1E ; System.Globalization.NumberFormatInfo
xor r11, r11
@@ -130,9 +134,9 @@ G_M7166_IG08: ; bbWeight=0.75, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx
; gcrRegs +[r8]
cmove r8, rax
test r8, r8
- jne SHORT G_M7166_IG13
+ jne SHORT G_M7166_IG14
;; size=28 bbWeight=0.75 PerfScore 3.94
-G_M7166_IG09: ; bbWeight=0.38, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG10: ; bbWeight=0.38, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[r8 r11]
mov rcx, rax
; gcrRegs +[rcx]
@@ -143,18 +147,18 @@ G_M7166_IG09: ; bbWeight=0.38, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test rax, rax
- jne SHORT G_M7166_IG16
+ jne SHORT G_M7166_IG17
;; size=31 bbWeight=0.38 PerfScore 1.88
-G_M7166_IG10: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
+G_M7166_IG11: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
; gcrRegs -[rax]
xor r8, r8
; gcrRegs +[r8]
;; size=3 bbWeight=0.19 PerfScore 0.05
-G_M7166_IG11: ; bbWeight=0.38, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG12: ; bbWeight=0.38, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
test r8, r8
- jne SHORT G_M7166_IG13
+ jne SHORT G_M7166_IG14
;; size=5 bbWeight=0.38 PerfScore 0.47
-G_M7166_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
+G_M7166_IG13: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
; gcrRegs -[r8]
call [System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo]
; gcrRegs +[rax]
@@ -162,7 +166,7 @@ G_M7166_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi
mov r8, rax
; gcrRegs +[r8]
;; size=9 bbWeight=0.19 PerfScore 0.61
-G_M7166_IG13: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG14: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
; gcrRegs -[rax]
mov bword ptr [rsp+0x30], rdi
mov dword ptr [rsp+0x38], ebp
@@ -178,13 +182,13 @@ G_M7166_IG13: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=00C8 {rbx rsi
; gcr arg pop 0
mov rcx, 0xD1FFAB1E
cmp qword ptr [rsp+0x60], rcx
- je SHORT G_M7166_IG14
+ je SHORT G_M7166_IG15
call CORINFO_HELP_FAIL_FAST
;; size=59 bbWeight=1 PerfScore 14.00
-G_M7166_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7166_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M7166_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M7166_IG16: ; bbWeight=1, epilog, nogc, extend
add rsp, 104
pop rbx
pop rbp
@@ -192,19 +196,19 @@ G_M7166_IG15: ; bbWeight=1, epilog, nogc, extend
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M7166_IG16: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, gcvars, byref, isz
+G_M7166_IG17: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, gcvars, byref, isz
; gcrRegs +[rax]
; byrRegs +[rbx rsi rdi]
mov r8, 0xD1FFAB1E ; System.Globalization.NumberFormatInfo
cmp qword ptr [rax], r8
- jne SHORT G_M7166_IG10
+ jne SHORT G_M7166_IG11
;; size=15 bbWeight=0.19 PerfScore 0.80
-G_M7166_IG17: ; bbWeight=0.09, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
+G_M7166_IG18: ; bbWeight=0.09, gcrefRegs=0001 {rax}, byrefRegs=00C8 {rbx rsi rdi}, byref, isz
mov r8, rax
; gcrRegs +[r8]
- jmp SHORT G_M7166_IG11
+ jmp SHORT G_M7166_IG12
;; size=5 bbWeight=0.09 PerfScore 0.21
-G_M7166_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+G_M7166_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; gcrRegs -[rax r8]
; byrRegs -[rdi]
lea r8, [rsp+0x28]
@@ -215,19 +219,32 @@ G_M7166_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
lea rcx, [rsp+0xA8]
call [System.Buffers.StandardFormat:Format(System.Span`1[ushort]):System.Span`1[ushort]:this]
; gcr arg pop 0
- jmp G_M7166_IG03
- ;; size=47 bbWeight=0 PerfScore 0.00
-G_M7166_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
+ mov rdi, bword ptr [rsp+0x50]
; byrRegs +[rdi]
+ mov ebp, dword ptr [rsp+0x58]
+ jmp G_M7166_IG03
+ ;; size=56 bbWeight=0 PerfScore 0.00
+G_M7166_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=00C8 {rbx rsi rdi}, byref
+ mov rcx, 0xD1FFAB1E
+ ; gcrRegs +[rcx]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rax, 0xD1FFAB1E ; code for <unknown method>
+ call [rax]<unknown method>
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ jmp G_M7166_IG04
+ ;; size=37 bbWeight=0 PerfScore 0.00
...
+15 (+12.82%) : 91176.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
@@ -8,20 +8,20 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 3.50) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
-; V01 loc0 [V01 ] ( 3, 1.50) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V01 loc0 [V01 ] ( 6, 2 ) struct (24) [rsp+0x20] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]>
-; V07 tmp5 [V07,T01] ( 5, 5 ) ref -> rcx single-def "guarded devirt arg temp"
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]>
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]>
-; V12 tmp10 [V12 ] ( 2, 0.50) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V01.DefaultType (fldOffset=0x0)" P-DEP
-; V13 tmp11 [V13 ] ( 3, 1.50) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V01._extensions (fldOffset=0x8)" P-DEP
-; V14 tmp12 [V14 ] ( 2, 0.50) ubyte -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V01.DefaultNullableAnnotation (fldOffset=0x10)" P-DEP
+; V12 tmp10 [V12,T03] ( 2, 0.50) ref -> [rsp+0x20] do-not-enreg[H] hidden-struct-arg "field V01.DefaultType (fldOffset=0x0)" P-DEP
+; V13 tmp11 [V13,T01] ( 6, 2 ) ref -> [rsp+0x28] do-not-enreg[H] hidden-struct-arg "field V01._extensions (fldOffset=0x8)" P-DEP
+; V14 tmp12 [V14,T04] ( 2, 0.50) ubyte -> [rsp+0x30] do-not-enreg[H] hidden-struct-arg "field V01.DefaultNullableAnnotation (fldOffset=0x10)" P-DEP
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP
; V16 tmp14 [V16,T02] ( 3, 1.50) ref -> rax single-def "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
@@ -50,18 +50,19 @@ G_M54628_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
;; size=20 bbWeight=0.50 PerfScore 4.00
G_M54628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- mov rcx, gword ptr [rsp+0x28]
- ; gcrRegs +[rcx]
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType
- cmp qword ptr [rcx], rax
+ mov rax, gword ptr [rsp+0x28]
+ ; gcrRegs +[rax]
+ mov rdx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType
+ cmp qword ptr [rax], rdx
jne SHORT G_M54628_IG08
;; size=20 bbWeight=1 PerfScore 5.25
-G_M54628_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov rax, gword ptr [rcx+0x08]
+G_M54628_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rsp+0x28]
; gcrRegs +[rax]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ mov rax, gword ptr [rax+0x08]
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
G_M54628_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
add rsp, 56
ret
;; size=5 bbWeight=1 PerfScore 1.25
@@ -75,17 +76,21 @@ G_M54628_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {
; gcr arg pop 0
jmp SHORT G_M54628_IG04
;; size=20 bbWeight=0 PerfScore 0.00
-G_M54628_IG08: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M54628_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rsp+0x28]
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
+ mov rax, gword ptr [rsp+0x28]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
jmp SHORT G_M54628_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 117, prolog size 21, PerfScore 19.58, instruction count 28, allocated bytes for code 117 (MethodHash=6a052a9b) for method Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
+; Total bytes of code 132, prolog size 21, PerfScore 20.08, instruction count 31, allocated bytes for code 132 (MethodHash=6a052a9b) for method Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.windows.x64.checked.mch
-23 (-11.86%) : 44013.dasm - Microsoft.CodeAnalysis.SyntaxNode:FindTokenInternal(int):Microsoft.CodeAnalysis.SyntaxToken:this (Tier1)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 5, 4 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
-; V01 RetBuf [V01,T01] ( 7, 7 ) byref -> rbx single-def
-; V02 arg1 [V02,T02] ( 3, 6 ) int -> rsi single-def
-; V03 loc0 [V03 ] ( 12, 21 ) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+; V00 this [V00,T06] ( 5, 4 ) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V01 RetBuf [V01,T03] ( 7, 7 ) byref -> rbx single-def
+; V02 arg1 [V02,T04] ( 3, 6 ) int -> rsi single-def
+; V03 loc0 [V03,T01] ( 5, 20 ) struct (24) [rsp+0x28] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
@@ -20,52 +20,57 @@
; V09 tmp4 [V09,T00] ( 5, 20 ) ref -> rcx class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxToken>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxToken>
-; V12 tmp7 [V12,T11] ( 2, 2 ) ref -> rdx class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
-; V13 tmp8 [V13,T12] ( 2, 2 ) ref -> rsi class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
+;* V12 tmp7 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
+;* V13 tmp8 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.GreenNode>
;* V14 tmp9 [V14 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxToken>
-; V15 tmp10 [V15,T13] ( 2, 2 ) int -> rdi "Inlining Arg"
-; V16 tmp11 [V16,T14] ( 2, 2 ) int -> rbp "Inlining Arg"
+;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V17 tmp12 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._nodeOrParent (fldOffset=0x0)" P-INDEP
;* V18 tmp13 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._token (fldOffset=0x8)" P-INDEP
-; V19 tmp14 [V19,T15] ( 2, 1 ) int -> r8 single-def "field V07._position (fldOffset=0x10)" P-INDEP
+; V19 tmp14 [V19,T16] ( 2, 1 ) int -> rdi single-def "field V07._position (fldOffset=0x10)" P-INDEP
;* V20 tmp15 [V20 ] ( 0, 0 ) int -> zero-ref single-def "field V07._tokenIndex (fldOffset=0x14)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V14.<Parent>k__BackingField (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V14.<Node>k__BackingField (fldOffset=0x8)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref single-def "field V14.<Index>k__BackingField (fldOffset=0x10)" P-INDEP
;* V24 tmp19 [V24 ] ( 0, 0 ) int -> zero-ref single-def "field V14.<Position>k__BackingField (fldOffset=0x14)" P-INDEP
-; V25 tmp20 [V25,T04] ( 3, 2 ) ref -> rdx "V06.[000..008)"
-;* V26 tmp21 [V26 ] ( 0, 0 ) ref -> zero-ref "V06.[008..016)"
-; V27 tmp22 [V27,T07] ( 3, 2 ) int -> r8 "V06.[016..020)"
-; V28 tmp23 [V28,T08] ( 3, 2 ) int -> rax "V06.[020..024)"
-; V29 tmp24 [V29,T05] ( 3, 2 ) ref -> rdx "V10.[000..008)"
-; V30 tmp25 [V30,T06] ( 3, 2 ) ref -> rsi "V10.[008..016)"
-; V31 tmp26 [V31,T09] ( 3, 2 ) int -> rbp "V10.[016..020)"
-; V32 tmp27 [V32,T10] ( 3, 2 ) int -> rdi "V10.[020..024)"
-;* V33 tmp28 [V33 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[000..008)"
-;* V34 tmp29 [V34 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[008..016)"
-;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref single-def "V08.[016..020)"
-;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref single-def "V08.[020..024)"
-;* V37 tmp32 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "V11.[000..008)"
-;* V38 tmp33 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "V11.[008..016)"
-;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref single-def "V11.[016..020)"
-;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref single-def "V11.[020..024)"
+; V25 tmp20 [V25,T05] ( 4, 7.50) ref -> rdx "V03.[000..008)"
+; V26 tmp21 [V26,T02] ( 5, 14.50) ref -> r14 "V03.[008..016)"
+; V27 tmp22 [V27,T07] ( 3, 5.50) int -> rdi "V03.[016..020)"
+; V28 tmp23 [V28,T08] ( 3, 5.50) int -> rbp "V03.[020..024)"
+; V29 tmp24 [V29,T09] ( 3, 2 ) ref -> rdx "V06.[000..008)"
+;* V30 tmp25 [V30 ] ( 0, 0 ) ref -> zero-ref "V06.[008..016)"
+; V31 tmp26 [V31,T12] ( 3, 2 ) int -> rdi "V06.[016..020)"
+; V32 tmp27 [V32,T13] ( 3, 2 ) int -> rbp "V06.[020..024)"
+; V33 tmp28 [V33,T10] ( 3, 2 ) ref -> rdx "V10.[000..008)"
+; V34 tmp29 [V34,T11] ( 3, 2 ) ref -> r14 "V10.[008..016)"
+; V35 tmp30 [V35,T14] ( 3, 2 ) int -> rbp "V10.[016..020)"
+; V36 tmp31 [V36,T15] ( 3, 2 ) int -> rdi "V10.[020..024)"
+;* V37 tmp32 [V37 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[000..008)"
+;* V38 tmp33 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "V08.[008..016)"
+;* V39 tmp34 [V39 ] ( 0, 0 ) int -> zero-ref single-def "V08.[016..020)"
+;* V40 tmp35 [V40 ] ( 0, 0 ) int -> zero-ref single-def "V08.[020..024)"
+;* V41 tmp36 [V41 ] ( 0, 0 ) ref -> zero-ref single-def "V11.[000..008)"
+;* V42 tmp37 [V42 ] ( 0, 0 ) ref -> zero-ref single-def "V11.[008..016)"
+;* V43 tmp38 [V43 ] ( 0, 0 ) int -> zero-ref single-def "V11.[016..020)"
+;* V44 tmp39 [V44 ] ( 0, 0 ) int -> zero-ref single-def "V11.[020..024)"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M41910_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 64
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x20], xmm4
+ vmovdqu xmmword ptr [rsp+0x28], xmm4
xor eax, eax
- mov qword ptr [rsp+0x30], rax
+ mov qword ptr [rsp+0x38], rax
mov rbx, rdx
; byrRegs +[rbx]
mov esi, r8d
- ;; size=31 bbWeight=1 PerfScore 8.33
+ ;; size=33 bbWeight=1 PerfScore 9.33
G_M41910_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs +[rcx]
test rcx, rcx
@@ -75,78 +80,75 @@ G_M41910_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; gcrRegs -[rcx]
xor rdx, rdx
; gcrRegs +[rdx]
- xor r8d, r8d
- xor eax, eax
+ xor edi, edi
+ xor ebp, ebp
jmp SHORT G_M41910_IG05
- ;; size=9 bbWeight=0.50 PerfScore 1.38
+ ;; size=8 bbWeight=0.50 PerfScore 1.38
G_M41910_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rdx] +[rcx]
- mov r8d, dword ptr [rcx+0x20]
+ mov edi, dword ptr [rcx+0x20]
mov rdx, rcx
; gcrRegs +[rdx]
- mov eax, -1
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ mov ebp, -1
+ ;; size=11 bbWeight=0.50 PerfScore 1.25
G_M41910_IG05: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rcx]
- mov gword ptr [rsp+0x20], rdx
- xor rdx, rdx
- mov gword ptr [rsp+0x28], rdx
- mov dword ptr [rsp+0x30], r8d
- mov dword ptr [rsp+0x34], eax
+ xor r14, r14
+ ; gcrRegs +[r14]
jmp SHORT G_M41910_IG07
- ;; size=23 bbWeight=1 PerfScore 6.25
+ ;; size=5 bbWeight=1 PerfScore 2.25
G_M41910_IG06: ; bbWeight=4, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rdx] +[rcx]
- lea rdx, [rsp+0x20]
+ ; gcrRegs -[rdx r14] +[rcx]
+ lea rdx, [rsp+0x28]
mov r8d, esi
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x50]
call [rax+0x10]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- ;; size=18 bbWeight=4 PerfScore 31.00
-G_M41910_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- cmp gword ptr [rsp+0x28], 0
+ mov rdx, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdx]
+ mov r14, gword ptr [rsp+0x30]
+ ; gcrRegs +[r14]
+ mov edi, dword ptr [rsp+0x38]
+ mov ebp, dword ptr [rsp+0x3C]
+ ;; size=36 bbWeight=4 PerfScore 47.00
+G_M41910_IG07: ; bbWeight=8, gcrefRegs=4004 {rdx r14}, byrefRegs=0008 {rbx}, byref, isz
+ test r14, r14
je SHORT G_M41910_IG09
- ;; size=8 bbWeight=8 PerfScore 24.00
-G_M41910_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=5 bbWeight=8 PerfScore 10.00
+G_M41910_IG08: ; bbWeight=2, gcrefRegs=4004 {rdx r14}, byrefRegs=0008 {rbx}, byref, isz
xor rcx, rcx
; gcrRegs +[rcx]
jmp SHORT G_M41910_IG10
;; size=4 bbWeight=2 PerfScore 4.50
-G_M41910_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M41910_IG09: ; bbWeight=2, gcrefRegs=4004 {rdx r14}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rcx]
- mov rcx, gword ptr [rsp+0x20]
+ mov rcx, rdx
; gcrRegs +[rcx]
- ;; size=5 bbWeight=2 PerfScore 2.00
-G_M41910_IG10: ; bbWeight=8, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=3 bbWeight=2 PerfScore 0.50
+G_M41910_IG10: ; bbWeight=8, gcrefRegs=4006 {rcx rdx r14}, byrefRegs=0008 {rbx}, byref, isz
test rcx, rcx
jne SHORT G_M41910_IG06
;; size=5 bbWeight=8 PerfScore 10.00
-G_M41910_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M41910_IG11: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rcx]
- cmp gword ptr [rsp+0x28], 0
+ test r14, r14
je SHORT G_M41910_IG13
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M41910_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- mov rdx, gword ptr [rsp+0x20]
- ; gcrRegs +[rdx]
- mov rsi, gword ptr [rsp+0x28]
- ; gcrRegs +[rsi]
- mov edi, dword ptr [rsp+0x30]
- mov ebp, dword ptr [rsp+0x34]
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M41910_IG12: ; bbWeight=0.50, gcrefRegs=4004 {rdx r14}, byrefRegs=0008 {rbx}, byref, isz
jmp SHORT G_M41910_IG14
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M41910_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rdx rsi]
+ ; gcrRegs -[rdx r14]
xor rdx, rdx
; gcrRegs +[rdx]
- xor rsi, rsi
- ; gcrRegs +[rsi]
+ xor r14, r14
+ ; gcrRegs +[r14]
xor ebp, ebp
xor edi, edi
- ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M41910_IG14: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+ ;; size=9 bbWeight=0.50 PerfScore 0.50
+G_M41910_IG14: ; bbWeight=1, gcrefRegs=4004 {rdx r14}, byrefRegs=0008 {rbx}, byref
mov rcx, rbx
; byrRegs +[rcx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
@@ -154,10 +156,10 @@ G_M41910_IG14: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rb
; byrRegs -[rcx]
lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
- mov rdx, rsi
+ mov rdx, r14
; gcrRegs +[rdx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rdx rsi]
+ ; gcrRegs -[rdx r14]
; byrRegs -[rcx]
mov dword ptr [rbx+0x10], ebp
mov dword ptr [rbx+0x14], edi
@@ -165,15 +167,16 @@ G_M41910_IG14: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rb
; byrRegs +[rax]
;; size=29 bbWeight=1 PerfScore 5.25
G_M41910_IG15: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ add rsp, 64
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
+ ;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 194, prolog size 25, PerfScore 104.96, instruction count 63, allocated bytes for code 194 (MethodHash=9c055c49) for method Microsoft.CodeAnalysis.SyntaxNode:FindTokenInternal(int):Microsoft.CodeAnalysis.SyntaxToken:this (Tier1)
+; Total bytes of code 171, prolog size 27, PerfScore 99.21, instruction count 61, allocated bytes for code 171 (MethodHash=9c055c49) for method Microsoft.CodeAnalysis.SyntaxNode:FindTokenInternal(int):Microsoft.CodeAnalysis.SyntaxToken:this (Tier1)
; ============================================================
Unwind Info:
@@ -181,13 +184,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
...
-12 (-10.26%) : 43108.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetUpperBoundNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -11,12 +11,12 @@
; V00 this [V00,T00] ( 5, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel>
; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rax class-hnd <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
; V02 arg2 [V02,T02] ( 3, 3 ) ubyte -> r8 single-def
-; V03 loc0 [V03 ] ( 3, 2.50) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]>
+; V03 loc0 [V03,T04] ( 3, 2.50) struct (16) [rsp+0x20] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T06] ( 2, 1 ) int -> rax "Inline return value spill temp"
; V06 tmp2 [V06,T05] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V07 tmp3 [V07,T04] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V08 cse0 [V08,T03] ( 4, 3 ) ref -> rcx "CSE #01: aggressive"
+; V07 tmp3 [V07,T03] ( 4, 3 ) ref -> rcx single-def "V03.[008..016)"
+; V08 cse0 [V08,T07] ( 2, 1 ) int -> rax "CSE #01: moderate"
;
; Lcl frame size = 48
@@ -79,27 +79,19 @@ G_M57241_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rax]
jmp SHORT G_M57241_IG09
;; size=7 bbWeight=0.50 PerfScore 1.50
-G_M57241_IG08: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M57241_IG08: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] +[rcx]
- cmp dword ptr [rcx+0x08], 0
- jbe SHORT G_M57241_IG10
mov rax, gword ptr [rcx+0x10]
; gcrRegs +[rax]
- ;; size=10 bbWeight=0.50 PerfScore 3.00
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M57241_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rcx]
add rsp, 48
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M57241_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 117, prolog size 17, PerfScore 23.25, instruction count 38, allocated bytes for code 117 (MethodHash=18ae2066) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetUpperBoundNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
+; Total bytes of code 105, prolog size 17, PerfScore 21.25, instruction count 34, allocated bytes for code 105 (MethodHash=18ae2066) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetUpperBoundNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
; ============================================================
Unwind Info:
-12 (-10.26%) : 43315.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundRoot():Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
@@ -12,14 +12,14 @@
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T06] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
;* V03 tmp2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
-; V04 tmp3 [V04 ] ( 3, 2.50) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]>
+; V04 tmp3 [V04,T05] ( 3, 2.50) struct (16) [rsp+0x28] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op "Inline stloc first use temp" <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]>
; V05 tmp4 [V05,T08] ( 2, 1 ) int -> rcx "Inline return value spill temp"
; V06 tmp5 [V06,T07] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.BoundNode>
-; V07 tmp6 [V07,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V08 tmp7 [V08,T02] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V09 tmp8 [V09,T04] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V10 cse0 [V10,T03] ( 4, 3 ) ref -> rax "CSE #02: aggressive"
-; V11 cse1 [V11,T05] ( 3, 3 ) long -> rsi "CSE #01: aggressive"
+; V07 tmp6 [V07,T03] ( 4, 3 ) ref -> rax single-def "V04.[008..016)"
+; V08 tmp7 [V08,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V09 tmp8 [V09,T02] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
+; V10 cse0 [V10,T04] ( 3, 3 ) long -> rsi "CSE #01: aggressive"
+; V11 cse1 [V11,T09] ( 2, 1 ) int -> rcx "CSE #02: moderate"
;
; Lcl frame size = 56
@@ -76,25 +76,17 @@ G_M51810_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
jmp SHORT G_M51810_IG06
;; size=7 bbWeight=0.50 PerfScore 1.50
-G_M51810_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rax+0x08], 0
- jbe SHORT G_M51810_IG07
+G_M51810_IG05: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rax+0x10]
- ;; size=10 bbWeight=0.50 PerfScore 3.00
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M51810_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 56
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-G_M51810_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 117, prolog size 18, PerfScore 33.25, instruction count 38, allocated bytes for code 117 (MethodHash=bae0359d) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundRoot():Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
+; Total bytes of code 105, prolog size 18, PerfScore 31.25, instruction count 34, allocated bytes for code 105 (MethodHash=bae0359d) for method Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundRoot():Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
; ============================================================
Unwind Info:
+29 (+2.96%) : 43111.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundNodes(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
@@ -8,88 +8,86 @@
; 0 inlinees with PGO data; 48 single block inlinees; 16 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 24, 14.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel>
-; V01 RetBuf [V01,T05] ( 5, 4 ) byref -> r15 single-def
-; V02 arg1 [V02,T01] ( 12, 8 ) ref -> r14 class-hnd <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
-; V03 loc0 [V03 ] ( 10, 6 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]>
-; V04 loc1 [V04,T23] ( 3, 1.50) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
-; V05 loc2 [V05,T12] ( 4, 2 ) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
-; V06 loc3 [V06,T13] ( 4, 2 ) ref -> r13 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V07 loc4 [V07,T14] ( 4, 2 ) ref -> rdi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
+; V00 this [V00,T00] ( 24, 14.50) ref -> rsi this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel>
+; V01 RetBuf [V01,T06] ( 6, 4.50) byref -> rbx single-def
+; V02 arg1 [V02,T01] ( 12, 8 ) ref -> rdi class-hnd <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
+; V03 loc0 [V03,T07] ( 9, 5.50) struct (16) [rbp-0x48] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]>
+; V04 loc1 [V04,T25] ( 3, 1.50) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode>
+; V05 loc2 [V05,T14] ( 4, 2 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
+; V06 loc3 [V06,T15] ( 4, 2 ) ref -> r13 class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V07 loc4 [V07,T16] ( 4, 2 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
;* V08 loc5 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter>
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter>
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.BoundNode>
;* V11 loc8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.BoundNode>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T03] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel+IncrementalBinder>
-; V14 tmp2 [V14,T04] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel+IncrementalBinder>
-; V15 tmp3 [V15,T07] ( 2, 4 ) ref -> rsi class-hnd single-def "Inlining Arg" <System.Threading.ReaderWriterLockSlim>
+; V13 tmp1 [V13,T04] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel+IncrementalBinder>
+; V14 tmp2 [V14,T05] ( 7, 7 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.MemberSemanticModel+IncrementalBinder>
+; V15 tmp3 [V15,T09] ( 2, 4 ) ref -> r14 class-hnd single-def "Inlining Arg" <System.Threading.ReaderWriterLockSlim>
;* V16 tmp4 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter>
;* V17 tmp5 [V17 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V18 tmp6 [V18,T21] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V19 tmp7 [V19,T34] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V18 tmp6 [V18,T23] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V19 tmp7 [V19,T33] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V20 tmp8 [V20 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V21 tmp9 [V21,T28] ( 2, 1 ) int -> rax "Inline return value spill temp"
-; V22 tmp10 [V22,T15] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.ReaderWriterLockSlim>
+; V21 tmp9 [V21,T27] ( 2, 1 ) int -> rcx "Inline return value spill temp"
+; V22 tmp10 [V22,T17] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Threading.ReaderWriterLockSlim>
;* V23 tmp11 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter>
;* V24 tmp12 [V24 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V25 tmp13 [V25,T35] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V26 tmp14 [V26,T41] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V25 tmp13 [V25,T34] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V26 tmp14 [V26,T40] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V27 tmp15 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V28 tmp16 [V28,T29] ( 2, 1 ) int -> rcx "Inline return value spill temp"
-; V29 tmp17 [V29,T16] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.ReaderWriterLockSlim>
+; V28 tmp16 [V28,T28] ( 2, 1 ) int -> rcx "Inline return value spill temp"
+; V29 tmp17 [V29,T18] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Threading.ReaderWriterLockSlim>
;* V30 tmp18 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter>
;* V31 tmp19 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V32 tmp20 [V32,T36] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V33 tmp21 [V33,T42] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V32 tmp20 [V32,T35] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V33 tmp21 [V33,T41] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V34 tmp22 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V35 tmp23 [V35,T30] ( 2, 1 ) int -> rdx "Inline return value spill temp"
-; V36 tmp24 [V36,T17] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Threading.ReaderWriterLockSlim>
+; V35 tmp23 [V35,T29] ( 2, 1 ) int -> rdx "Inline return value spill temp"
+; V36 tmp24 [V36,T19] ( 2, 2 ) ref -> r15 class-hnd single-def "Inlining Arg" <System.Threading.ReaderWriterLockSlim>
;* V37 tmp25 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter>
;* V38 tmp26 [V38 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V39 tmp27 [V39,T37] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V40 tmp28 [V40,T43] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
+;* V39 tmp27 [V39,T36] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V40 tmp28 [V40,T42] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
;* V41 tmp29 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V42 tmp30 [V42,T31] ( 2, 1 ) int -> rax "Inline return value spill temp"
-; V43 tmp31 [V43,T08] ( 2, 4 ) byref -> rax single-def "Single return block return value"
-; V44 tmp32 [V44,T22] ( 4, 1.50) ref -> [rbp-0x58] do-not-enreg[M] EH-live "field V08._lock (fldOffset=0x0)" P-INDEP
-; V45 tmp33 [V45,T33] ( 4, 1 ) ref -> [rbp-0x60] do-not-enreg[M] EH-live "field V09._lock (fldOffset=0x0)" P-INDEP
-; V46 tmp34 [V46,T06] ( 5, 5 ) ref -> rsi single-def "field V16._lock (fldOffset=0x0)" P-INDEP
-;* V47 tmp35 [V47,T38] ( 0, 0 ) int -> zero-ref single-def "field V17._total (fldOffset=0x0)" P-INDEP
-;* V48 tmp36 [V48,T39] ( 0, 0 ) int -> zero-ref single-def "field V17._start (fldOffset=0x4)" P-INDEP
+; V42 tmp30 [V42,T30] ( 2, 1 ) int -> rax "Inline return value spill temp"
+; V43 tmp31 [V43,T10] ( 2, 4 ) byref -> rax single-def "Single return block return value"
+; V44 tmp32 [V44,T24] ( 4, 1.50) ref -> [rbp-0x58] do-not-enreg[M] EH-live "field V08._lock (fldOffset=0x0)" P-INDEP
+; V45 tmp33 [V45,T32] ( 4, 1 ) ref -> [rbp-0x60] do-not-enreg[M] EH-live "field V09._lock (fldOffset=0x0)" P-INDEP
+; V46 tmp34 [V46,T08] ( 5, 5 ) ref -> r14 single-def "field V16._lock (fldOffset=0x0)" P-INDEP
+;* V47 tmp35 [V47,T37] ( 0, 0 ) int -> zero-ref single-def "field V17._total (fldOffset=0x0)" P-INDEP
+;* V48 tmp36 [V48,T38] ( 0, 0 ) int -> zero-ref single-def "field V17._start (fldOffset=0x4)" P-INDEP
;* V49 tmp37 [V49 ] ( 0, 0 ) int -> zero-ref "field V20._total (fldOffset=0x0)" P-INDEP
;* V50 tmp38 [V50 ] ( 0, 0 ) int -> zero-ref "field V20._start (fldOffset=0x4)" P-INDEP
-; V51 tmp39 [V51,T09] ( 5, 2.50) ref -> rdi single-def "field V23._lock (fldOffset=0x0)" P-INDEP
-;* V52 tmp40 [V52,T44] ( 0, 0 ) int -> zero-ref single-def "field V24._total (fldOffset=0x0)" P-INDEP
-;* V53 tmp41 [V53,T45] ( 0, 0 ) int -> zero-ref single-def "field V24._start (fldOffset=0x4)" P-INDEP
+; V51 tmp39 [V51,T11] ( 5, 2.50) ref -> r15 single-def "field V23._lock (fldOffset=0x0)" P-INDEP
+;* V52 tmp40 [V52,T43] ( 0, 0 ) int -> zero-ref single-def "field V24._total (fldOffset=0x0)" P-INDEP
+;* V53 tmp41 [V53,T44] ( 0, 0 ) int -> zero-ref single-def "field V24._start (fldOffset=0x4)" P-INDEP
;* V54 tmp42 [V54 ] ( 0, 0 ) int -> zero-ref "field V27._total (fldOffset=0x0)" P-INDEP
;* V55 tmp43 [V55 ] ( 0, 0 ) int -> zero-ref "field V27._start (fldOffset=0x4)" P-INDEP
-; V56 tmp44 [V56,T10] ( 5, 2.50) ref -> rdi single-def "field V30._lock (fldOffset=0x0)" P-INDEP
-;* V57 tmp45 [V57,T46] ( 0, 0 ) int -> zero-ref single-def "field V31._total (fldOffset=0x0)" P-INDEP
-;* V58 tmp46 [V58,T47] ( 0, 0 ) int -> zero-ref single-def "field V31._start (fldOffset=0x4)" P-INDEP
+; V56 tmp44 [V56,T12] ( 5, 2.50) ref -> r15 single-def "field V30._lock (fldOffset=0x0)" P-INDEP
+;* V57 tmp45 [V57,T45] ( 0, 0 ) int -> zero-ref single-def "field V31._total (fldOffset=0x0)" P-INDEP
+;* V58 tmp46 [V58,T46] ( 0, 0 ) int -> zero-ref single-def "field V31._start (fldOffset=0x4)" P-INDEP
;* V59 tmp47 [V59 ] ( 0, 0 ) int -> zero-ref "field V34._total (fldOffset=0x0)" P-INDEP
;* V60 tmp48 [V60 ] ( 0, 0 ) int -> zero-ref "field V34._start (fldOffset=0x4)" P-INDEP
-; V61 tmp49 [V61,T11] ( 5, 2.50) ref -> rdi single-def "field V37._lock (fldOffset=0x0)" P-INDEP
-;* V62 tmp50 [V62,T48] ( 0, 0 ) int -> zero-ref single-def "field V38._total (fldOffset=0x0)" P-INDEP
-;* V63 tmp51 [V63,T49] ( 0, 0 ) int -> zero-ref single-def "field V38._start (fldOffset=0x4)" P-INDEP
+; V61 tmp49 [V61,T13] ( 5, 2.50) ref -> r15 single-def "field V37._lock (fldOffset=0x0)" P-INDEP
+;* V62 tmp50 [V62,T47] ( 0, 0 ) int -> zero-ref single-def "field V38._total (fldOffset=0x0)" P-INDEP
+;* V63 tmp51 [V63,T48] ( 0, 0 ) int -> zero-ref single-def "field V38._start (fldOffset=0x4)" P-INDEP
;* V64 tmp52 [V64 ] ( 0, 0 ) int -> zero-ref "field V41._total (fldOffset=0x0)" P-INDEP
;* V65 tmp53 [V65 ] ( 0, 0 ) int -> zero-ref "field V41._start (fldOffset=0x4)" P-INDEP
-; V66 tmp54 [V66,T18] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-;* V67 tmp55 [V67 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V68 tmp56 [V68,T02] ( 6, 9 ) struct ( 8) [rbp-0x50] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V69 tmp57 [V69 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V70 tmp58 [V70,T19] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-;* V71 tmp59 [V71 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V66 tmp54 [V66,T03] ( 13, 7.50) ref -> [rbp-0x68] "V03.[008..016)"
+; V67 tmp55 [V67,T20] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+;* V68 tmp56 [V68 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V69 tmp57 [V69,T02] ( 6, 9 ) struct ( 8) [rbp-0x50] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
+;* V70 tmp58 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V71 tmp59 [V71,T21] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
;* V72 tmp60 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V73 tmp61 [V73,T20] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V74 PSPSym [V74,T40] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym"
-; V75 cse0 [V75,T32] ( 3, 1.50) long -> rsi "CSE #07: moderate"
-; V76 cse1 [V76,T24] ( 3, 1.50) ref -> r12 "CSE #06: moderate"
-; V77 cse2 [V77,T25] ( 3, 1.50) ref -> rcx "CSE #03: moderate"
-; V78 cse3 [V78,T26] ( 3, 1.50) ref -> rdx "CSE #05: moderate"
-; V79 cse4 [V79,T27] ( 3, 1.50) ref -> rax "CSE #08: moderate"
+;* V73 tmp61 [V73 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V74 tmp62 [V74,T22] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V75 PSPSym [V75,T39] ( 1, 1 ) long -> [rbp-0x78] do-not-enreg[V] "PSPSym"
+; V76 cse0 [V76,T31] ( 3, 1.50) long -> r14 "CSE #04: moderate"
+; V77 cse1 [V77,T26] ( 3, 1.50) ref -> r12 "CSE #03: moderate"
;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M18301_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
@@ -100,127 +98,132 @@ G_M18301_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
push rdi
push rsi
push rbx
- sub rsp, 88
- lea rbp, [rsp+0x90]
+ sub rsp, 104
+ lea rbp, [rsp+0xA0]
xor eax, eax
mov qword ptr [rbp-0x48], rax
mov qword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x68], rsp
- mov rbx, rcx
- ; gcrRegs +[rbx]
- mov r15, rdx
- ; byrRegs +[r15]
- mov r14, r8
- ; gcrRegs +[r14]
+ mov qword ptr [rbp-0x78], rsp
+ mov rsi, rcx
+ ; gcrRegs +[rsi]
+ mov rbx, rdx
+ ; byrRegs +[rbx]
+ mov rdi, r8
+ ; gcrRegs +[rdi]
;; size=47 bbWeight=1 PerfScore 12.75
-G_M18301_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref, isz
- test r14, r14
+G_M18301_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref, isz
+ test rdi, rdi
jne SHORT G_M18301_IG04
;; size=5 bbWeight=1 PerfScore 1.25
-G_M18301_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- ; gcrRegs -[r14]
- mov rcx, rbx
+G_M18301_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rdi]
+ mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rsi]
mov rax, qword ptr [rax+0x78]
call [rax+0x08]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, rbx
+ mov rcx, rsi
; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [rsi]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0xC8]
call [rax]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
;; size=34 bbWeight=0.50 PerfScore 7.50
-G_M18301_IG04: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=8000 {r15}, byref
+G_M18301_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rax]
- mov rcx, rbx
+ mov rcx, rsi
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov rsi, gword ptr [rbx+0x18]
- ; gcrRegs +[rsi]
- cmp byte ptr [rsi], sil
+ mov r14, gword ptr [rsi+0x18]
+ ; gcrRegs +[r14]
+ cmp byte ptr [r14], r14b
mov dword ptr [rbp-0x50], -1
xor edx, edx
mov dword ptr [rbp-0x4C], edx
mov rdx, qword ptr [rbp-0x50]
- mov rcx, rsi
+ mov rcx, r14
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov gword ptr [rbp-0x58], rsi
+ mov gword ptr [rbp-0x58], r14
; GC ptr vars +{V44}
;; size=45 bbWeight=1 PerfScore 15.75
-G_M18301_IG05: ; bbWeight=1, gcVars=0000000000400000 {V44}, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=8000 {r15}, gcvars, byref
+G_M18301_IG05: ; bbWeight=1, gcVars=0000000001000000 {V44}, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0008 {rbx}, gcvars, byref
lea rdx, [rbp-0x48]
- mov rcx, rbx
+ mov rcx, rsi
; gcrRegs +[rcx]
- mov r8, r14
+ mov r8, rdi
; gcrRegs +[r8]
call [Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GuardedGetBoundNodesFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this]
; gcrRegs -[rcx r8]
; gcr arg pop 0
- nop
- ;; size=17 bbWeight=1 PerfScore 4.25
-G_M18301_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ mov r15, gword ptr [rbp-0x40]
+ ; gcrRegs +[r15]
...
+21 (+3.11%) : 40523.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.TupleTypeDecoder:DecodeTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (Tier1)
@@ -8,18 +8,18 @@
; 0 inlinees with PGO data; 12 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T19] ( 3, 6 ) byref -> rsi this single-def
+; V00 this [V00,T20] ( 3, 6 ) byref -> rsi this single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V02 loc0 [V02,T22] ( 5, 6 ) ref -> r14 class-hnd exact single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V02 loc0 [V02,T26] ( 5, 6 ) ref -> r14 class-hnd exact single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V03 loc1 [V03,T18] ( 4, 9 ) ubyte -> rbp
-; V04 loc2 [V04,T29] ( 2, 1 ) int -> rcx
+; V04 loc2 [V04,T33] ( 2, 1 ) int -> rcx
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;* V06 loc4 [V06 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T25] ( 3, 3 ) ref -> r14 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V09 tmp2 [V09,T27] ( 3, 3 ) int -> rbp "Inlining Arg"
+; V08 tmp1 [V08,T29] ( 3, 3 ) ref -> r14 class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V09 tmp2 [V09,T31] ( 3, 3 ) int -> rbp "Inlining Arg"
;* V10 tmp3 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
-; V11 tmp4 [V11 ] ( 7, 20 ) struct (24) [rsp+0x60] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V11 tmp4 [V11,T19] ( 4, 8 ) struct (24) [rsp+0x60] do-not-enreg[HS] must-init hidden-struct-arg "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;* V12 tmp5 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V14 tmp7 [V14,T14] ( 3, 10 ) ref -> [rsp+0x48] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
@@ -30,14 +30,14 @@
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref
;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref
-; V22 tmp15 [V22,T20] ( 3, 8 ) ubyte -> rcx "Inline return value spill temp"
+; V22 tmp15 [V22,T23] ( 3, 8 ) ubyte -> rcx "Inline return value spill temp"
;* V23 tmp16 [V23 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V24 tmp17 [V24,T00] ( 8, 56 ) ref -> r13 class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V25 tmp18 [V25,T07] ( 5, 16 ) int -> r12 "Inline stloc first use temp"
;* V26 tmp19 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V27 tmp20 [V27,T23] ( 3, 6 ) int -> rdx "Inline return value spill temp"
+; V27 tmp20 [V27,T27] ( 3, 6 ) int -> rdx "Inline return value spill temp"
; V28 tmp21 [V28,T12] ( 3, 12 ) int -> rdx "Inlining Arg"
-; V29 tmp22 [V29,T26] ( 3, 3 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
+; V29 tmp22 [V29,T30] ( 3, 3 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]>
; V30 tmp23 [V30,T17] ( 5, 7 ) ref -> rbx single-def "field V01.array (fldOffset=0x0)" P-INDEP
; V31 tmp24 [V31,T09] ( 4, 12 ) ref -> r13 "field V05.DefaultType (fldOffset=0x0)" P-INDEP
; V32 tmp25 [V32,T03] ( 11, 26 ) ref -> r12 "field V05._extensions (fldOffset=0x8)" P-INDEP
@@ -48,17 +48,20 @@
;* V37 tmp30 [V37 ] ( 0, 0 ) ref -> zero-ref "field V12.DefaultType (fldOffset=0x0)" P-INDEP
;* V38 tmp31 [V38 ] ( 0, 0 ) ref -> zero-ref "field V12._extensions (fldOffset=0x8)" P-INDEP
;* V39 tmp32 [V39 ] ( 0, 0 ) ubyte -> zero-ref "field V12.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
-; V40 tmp33 [V40,T24] ( 2, 4 ) ref -> r9 "field V16.array (fldOffset=0x0)" P-INDEP
+; V40 tmp33 [V40,T28] ( 2, 4 ) ref -> r9 "field V16.array (fldOffset=0x0)" P-INDEP
;* V41 tmp34 [V41 ] ( 0, 0 ) ref -> zero-ref "field V23.DefaultType (fldOffset=0x0)" P-INDEP
;* V42 tmp35 [V42 ] ( 0, 0 ) ref -> zero-ref "field V23._extensions (fldOffset=0x8)" P-INDEP
;* V43 tmp36 [V43 ] ( 0, 0 ) ubyte -> zero-ref "field V23.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
-; V44 tmp37 [V44,T01] ( 4, 32 ) byref -> rcx "BlockOp address local"
-; V45 tmp38 [V45,T04] ( 3, 24 ) ref -> rcx "arr expr"
-; V46 tmp39 [V46,T05] ( 3, 24 ) int -> rdx "index expr"
-; V47 tmp40 [V47,T02] ( 4, 32 ) byref -> [rsp+0x28] spill-single-def "BlockOp address local"
-; V48 cse0 [V48,T28] ( 3, 1.50) ref -> rcx "CSE #02: moderate"
-; V49 cse1 [V49,T21] ( 5, 7 ) int -> rdi "CSE #01: moderate"
-; V50 rat0 [V50,T06] ( 7, 21 ) long -> r15 "Widened IV V04"
+; V44 tmp37 [V44,T21] ( 3, 8 ) ref -> registers "V11.[000..008)"
+; V45 tmp38 [V45,T22] ( 3, 8 ) ref -> registers "V11.[008..016)"
+; V46 tmp39 [V46,T24] ( 3, 8 ) ubyte -> registers "V11.[016..017)"
+; V47 tmp40 [V47,T01] ( 4, 32 ) byref -> rcx "BlockOp address local"
+; V48 tmp41 [V48,T04] ( 3, 24 ) ref -> rcx "arr expr"
+; V49 tmp42 [V49,T05] ( 3, 24 ) int -> rdx "index expr"
+; V50 tmp43 [V50,T02] ( 4, 32 ) byref -> [rsp+0x28] spill-single-def "BlockOp address local"
+; V51 cse0 [V51,T32] ( 3, 1.50) ref -> rcx "CSE #02: conservative"
+; V52 cse1 [V52,T25] ( 5, 7 ) int -> rdi "CSE #01: moderate"
+; V53 rat0 [V53,T06] ( 7, 21 ) long -> r15 "Widened IV V04"
;
; Lcl frame size = 120
@@ -204,18 +207,21 @@ G_M15152_IG12: ; bbWeight=2, gcVars=0000000000004000 {V14}, gcrefRegs=700
;; size=15 bbWeight=2 PerfScore 9.00
G_M15152_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; GC ptr vars -{V14}
- mov gword ptr [rsp+0x60], r13
- mov gword ptr [rsp+0x68], r12
- movzx r10, byte ptr [rsp+0x58]
- mov byte ptr [rsp+0x70], r10b
+ mov r10, r13
+ ; gcrRegs +[r10]
+ mov r9, r12
+ ; gcrRegs +[r9]
+ movzx r11, byte ptr [rsp+0x58]
+ mov edx, r11d
jmp SHORT G_M15152_IG16
- ;; size=23 bbWeight=2 PerfScore 12.00
+ ;; size=17 bbWeight=2 PerfScore 7.50
G_M15152_IG14: ; bbWeight=2, gcVars=0000000000004000 {V14}, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0040 {rsi}, gcvars, byref
+ ; gcrRegs -[r9-r10]
; GC ptr vars +{V14}
- movzx r10, byte ptr [rsp+0x58]
+ movzx r11, byte ptr [rsp+0x58]
mov rcx, r12
; gcrRegs +[rcx]
- mov edx, r10d
+ mov edx, r11d
mov r8, qword ptr [r12]
mov r8, qword ptr [r8+0x48]
call [r8+0x30]<unknown method>
@@ -241,26 +247,43 @@ G_M15152_IG15: ; bbWeight=2, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=
call [<unknown method>]
; gcrRegs -[rax rdx r9]
; gcr arg pop 0
- movzx r10, byte ptr [rsp+0x58]
- ;; size=44 bbWeight=2 PerfScore 28.00
-G_M15152_IG16: ; bbWeight=4, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0040 {rsi}, byref, isz
- mov rax, gword ptr [rsp+0x60]
+ mov r10, gword ptr [rsp+0x60]
+ ; gcrRegs +[r10]
+ mov rax, r10
+ ; gcrRegs +[rax]
+ mov r9, gword ptr [rsp+0x68]
+ ; gcrRegs +[r9]
+ mov r8, r9
+ ; gcrRegs +[r8]
+ movzx rdx, byte ptr [rsp+0x70]
+ mov r10d, edx
+ ; gcrRegs -[r10]
+ mov edx, r10d
+ mov r9, r8
+ mov r10, rax
+ ; gcrRegs +[r10]
+ movzx r11, byte ptr [rsp+0x58]
+ ;; size=77 bbWeight=2 PerfScore 37.00
+G_M15152_IG16: ; bbWeight=4, gcrefRegs=7608 {rbx r9 r10 r12 r13 r14}, byrefRegs=0040 {rsi}, byref, isz
+ ; gcrRegs -[rax r8]
+ mov rax, r10
; gcrRegs +[rax]
mov gword ptr [rsp+0x38], rax
; GC ptr vars +{V34}
- mov r8, gword ptr [rsp+0x68]
+ mov r8, r9
; gcrRegs +[r8]
mov gword ptr [rsp+0x30], r8
; GC ptr vars +{V35}
- movzx r9, byte ptr [rsp+0x70]
- mov byte ptr [rsp+0x54], r9b
+ movzx r10, dl
+ ; gcrRegs -[r10]
+ mov byte ptr [rsp+0x54], r10b
cmp rax, r13
mov rax, gword ptr [rsp+0x38]
jne SHORT G_M15152_IG19
- ;; size=41 bbWeight=4 PerfScore 33.00
+ ;; size=35 bbWeight=4 PerfScore 24.00
G_M15152_IG17: ; bbWeight=2, gcVars=0000000000008400 {V34 V35}, gcrefRegs=5109 {rax rbx r8 r12 r14}, byrefRegs=0040 {rsi}, gcvars, byref, isz
- ; gcrRegs -[r13]
- cmp r9b, r10b
+ ; gcrRegs -[r9 r13]
+ cmp r10b, r11b
jne SHORT G_M15152_IG18
cmp r8, r12
sete cl
@@ -269,7 +292,7 @@ G_M15152_IG17: ; bbWeight=2, gcVars=0000000000008400 {V34 V35}, gcrefRegs
;; size=16 bbWeight=2 PerfScore 9.50
G_M15152_IG18: ; bbWeight=1, gcrefRegs=4109 {rax rbx r8 r14}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[r12]
- movzx r9, byte ptr [rsp+0x54]
+ movzx r10, byte ptr [rsp+0x54]
;; size=6 bbWeight=1 PerfScore 1.00
G_M15152_IG19: ; bbWeight=2, gcrefRegs=4109 {rax rbx r8 r14}, byrefRegs=0040 {rsi}, byref
xor ecx, ecx
@@ -317,19 +340,19 @@ G_M15152_IG23: ; bbWeight=4, gcrefRegs=6009 {rax rbx r13 r14}, byrefRegs=
cmp edx, dword ptr [rcx+0x08]
jae G_M15152_IG30
lea rdx, [rdx+2*rdx]
- lea r10, bword ptr [rcx+8*rdx+0x10]
- ; byrRegs +[r10]
- mov rcx, r10
+ lea r9, bword ptr [rcx+8*rdx+0x10]
+ ; byrRegs +[r9]
+ mov rcx, r9
; gcrRegs -[rcx]
; byrRegs +[rcx]
mov bword ptr [rsp+0x28], rcx
- ; GC ptr vars +{V47}
+ ; GC ptr vars +{V50}
mov rdx, rax
; gcrRegs +[rdx]
; GC ptr vars -{V34}
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
- ; byrRegs -[rcx r10]
+ ; byrRegs -[rcx r9]
mov rax, bword ptr [rsp+0x28]
; byrRegs +[rax]
lea rcx, bword ptr [rax+0x08]
@@ -342,8 +365,8 @@ G_M15152_IG23: ; bbWeight=4, gcrefRegs=6009 {rax rbx r13 r14}, byrefRegs=
; byrRegs -[rax rcx]
mov rcx, bword ptr [rsp+0x28]
; byrRegs +[rcx]
- movzx r9, byte ptr [rsp+0x54]
- mov byte ptr [rcx+0x10], r9b
+ movzx r10, byte ptr [rsp+0x54]
+ mov byte ptr [rcx+0x10], r10b
mov dword ptr [r13+0x10], r12d
dec r15d
jns G_M15152_IG08
@@ -351,7 +374,7 @@ G_M15152_IG23: ; bbWeight=4, gcrefRegs=6009 {rax rbx r13 r14}, byrefRegs=
G_M15152_IG24: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r13]
; byrRegs -[rcx rsi]
- ; GC ptr vars -{V47}
+ ; GC ptr vars -{V50}
test ebp, ebp
jne SHORT G_M15152_IG27
;; size=4 bbWeight=0.50 PerfScore 0.62
@@ -423,7 +446,7 @@ G_M15152_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 676, prolog size 33, PerfScore 404.96, instruction count 197, allocated bytes for code 676 (MethodHash=c73fc4cf) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.TupleTypeDecoder:DecodeTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (Tier1)
+; Total bytes of code 697, prolog size 33, PerfScore 400.46, instruction count 206, allocated bytes for code 697 (MethodHash=c73fc4cf) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.TupleTypeDecoder:DecodeTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (Tier1)
; ============================================================
Unwind Info:
+18 (+3.89%) : 23733.dasm - System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
@@ -9,17 +9,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 arg1 [V01,T03] ( 10, 6 ) byref -> rbx single-def
-; V02 loc0 [V02,T06] ( 4, 2 ) ubyte -> rax
-; V03 loc1 [V03,T09] ( 3, 1.50) ushort -> rcx
+; V01 arg1 [V01,T01] ( 10, 6 ) byref -> rbx single-def
+; V02 loc0 [V02,T08] ( 4, 2 ) ubyte -> rax
+; V03 loc1 [V03,T11] ( 3, 1.50) ushort -> rcx
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T10] ( 3, 1.50) int -> rax
-; V06 tmp2 [V06,T11] ( 3, 1.50) int -> rax
-; V07 tmp3 [V07 ] ( 5, 3.50) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V05 tmp1 [V05,T12] ( 3, 1.50) int -> rax
+; V06 tmp2 [V06,T13] ( 3, 1.50) int -> rax
+; V07 tmp3 [V07,T14] ( 3, 1.50) struct (16) [rsp+0x38] do-not-enreg[HS] must-init hidden-struct-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V09 tmp5 [V09,T08] ( 2, 2 ) int -> rcx "Span.get_Item index"
-; V10 tmp6 [V10,T16] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V11 tmp7 [V11,T04] ( 4, 4 ) ushort -> rcx "Inlining Arg"
+; V09 tmp5 [V09,T10] ( 2, 2 ) int -> rcx "Span.get_Item index"
+; V10 tmp6 [V10,T19] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V11 tmp7 [V11,T05] ( 4, 4 ) ushort -> rcx "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V14 tmp10 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -27,8 +27,8 @@
;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V17 tmp13 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V19 tmp15 [V19,T17] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
-; V20 tmp16 [V20,T05] ( 4, 4 ) ushort -> rcx "Inlining Arg"
+; V19 tmp15 [V19,T20] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
+; V20 tmp16 [V20,T06] ( 4, 4 ) ushort -> rcx "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V22 tmp18 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -36,18 +36,18 @@
;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V26 tmp22 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp23 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V28 tmp24 [V28,T12] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V28 tmp24 [V28,T15] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V29 tmp25 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp27 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp28 [V32 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V33 tmp29 [V33,T13] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V33 tmp29 [V33,T16] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V35 tmp31 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V36 tmp32 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp33 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V38 tmp34 [V38,T01] ( 16, 9 ) byref -> rsi "field V00._reference (fldOffset=0x0)" P-INDEP
-; V39 tmp35 [V39,T02] ( 12, 8 ) int -> rdi "field V00._length (fldOffset=0x8)" P-INDEP
+; V38 tmp34 [V38,T02] ( 12, 7 ) byref -> registers "field V00._reference (fldOffset=0x0)" P-INDEP
+; V39 tmp35 [V39,T03] ( 10, 7 ) int -> registers "field V00._length (fldOffset=0x8)" P-INDEP
;* V40 tmp36 [V40 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp37 [V41 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V42 tmp38 [V42 ] ( 0, 0 ) byref -> zero-ref "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -78,21 +78,25 @@
;* V67 tmp63 [V67 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V68 tmp64 [V68 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp65 [V69 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-; V70 tmp66 [V70,T14] ( 2, 1 ) byref -> rsi single-def "field V31._reference (fldOffset=0x0)" P-INDEP
-;* V71 tmp67 [V71,T18] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
+; V70 tmp66 [V70,T17] ( 2, 1 ) byref -> rsi single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V71 tmp67 [V71,T21] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V72 tmp68 [V72 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP
;* V73 tmp69 [V73 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V74 tmp70 [V74 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
;* V75 tmp71 [V75 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
-; V76 tmp72 [V76,T15] ( 2, 1 ) byref -> rcx single-def "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V77 tmp73 [V77,T19] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
-;* V78 tmp74 [V78 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V79 tmp75 [V79 ] ( 18, 18 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V80 cse0 [V80,T07] ( 4, 2 ) int -> rbp "CSE #03: moderate"
+; V76 tmp72 [V76,T18] ( 2, 1 ) byref -> rcx single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp73 [V77,T22] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
+; V78 tmp74 [V78,T04] ( 7, 4 ) byref -> rsi "V07.[000..008)"
+; V79 tmp75 [V79,T07] ( 5, 3 ) int -> rdi "V07.[008..012)"
+;* V80 tmp76 [V80 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
+; V81 tmp77 [V81 ] ( 18, 18 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V82 cse0 [V82,T09] ( 4, 2 ) int -> r15 "CSE #03: moderate"
;
; Lcl frame size = 72
G_M61906_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
push rbp
@@ -105,7 +109,7 @@ G_M61906_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rsp+0x40], rax
mov rbx, rdx
; byrRegs +[rbx]
- ;; size=33 bbWeight=1 PerfScore 9.08
+ ;; size=37 bbWeight=1 PerfScore 11.08
G_M61906_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=000A {rcx rbx}, byref, isz
; byrRegs +[rcx]
mov rsi, bword ptr [rcx]
@@ -142,10 +146,8 @@ G_M61906_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
jne SHORT G_M61906_IG08
;; size=25 bbWeight=0.50 PerfScore 4.00
G_M61906_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov bword ptr [rsp+0x38], rsi
- mov dword ptr [rsp+0x40], edi
jmp SHORT G_M61906_IG09
- ;; size=11 bbWeight=0.50 PerfScore 2.00
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M61906_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
mov edx, ecx
mov rcx, 0xD1FFAB1E ; static handle
@@ -160,16 +162,19 @@ G_M61906_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
call [<unknown method>]
; byrRegs -[rsi]
; gcr arg pop 0
- ;; size=25 bbWeight=0.50 PerfScore 3.00
-G_M61906_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rsi, bword ptr [rsp+0x38]
; byrRegs +[rsi]
mov edi, dword ptr [rsp+0x40]
- cmp edi, 32
+ ;; size=34 bbWeight=0.50 PerfScore 4.00
+G_M61906_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
+ mov rbp, rsi
+ ; byrRegs +[rbp]
+ mov r14d, edi
+ cmp r14d, 32
jge SHORT G_M61906_IG12
- ;; size=14 bbWeight=1 PerfScore 3.25
+ ;; size=12 bbWeight=1 PerfScore 1.75
G_M61906_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rsi]
+ ; byrRegs -[rbp rsi]
mov rcx, rbx
; byrRegs +[rcx]
mov edx, 9
@@ -184,37 +189,39 @@ G_M61906_IG11: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M61906_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
- ; byrRegs +[rbx rsi]
- movzx rbp, word ptr [rsi]
- mov ecx, ebp
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M61906_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, gcvars, byref, isz
+ ; byrRegs +[rbx rbp rsi]
+ movzx r15, word ptr [rbp]
+ mov ecx, r15d
cmp ecx, 40
je SHORT G_M61906_IG13
cmp ecx, 123
je SHORT G_M61906_IG17
- cmp word ptr [rsi+0x10], 45
+ cmp word ptr [rbp+0x10], 45
je G_M61906_IG22
- mov bword ptr [rsp+0x28], rsi
- mov dword ptr [rsp+0x30], edi
+ mov bword ptr [rsp+0x28], rbp
+ mov dword ptr [rsp+0x30], r14d
lea rcx, [rsp+0x28]
mov rdx, rbx
; byrRegs +[rdx]
call [<unknown method>]
- ; byrRegs -[rdx rbx rsi]
+ ; byrRegs -[rdx rbx rbp rsi]
; gcr arg pop 0
jmp G_M61906_IG23
- ;; size=54 bbWeight=0.50 PerfScore 8.25
+ ;; size=58 bbWeight=0.50 PerfScore 8.25
G_M61906_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs +[rbx rsi]
cmp edi, 38
jne SHORT G_M61906_IG14
- cmp ebp, 40
+ cmp r15d, 40
jne SHORT G_M61906_IG14
cmp word ptr [rsi+0x4A], 41
je SHORT G_M61906_IG15
- ;; size=17 bbWeight=0.50 PerfScore 3.25
+ ;; size=18 bbWeight=0.50 PerfScore 3.25
G_M61906_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[rsi]
mov rcx, rbx
@@ -241,29 +248,29 @@ G_M61906_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
G_M61906_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
jmp G_M61906_IG23
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M61906_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- ; byrRegs +[rbx rsi]
- cmp word ptr [rsi+0x12], 45
+G_M61906_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0068 {rbx rbp rsi}, byref, isz
+ ; byrRegs +[rbx rbp rsi]
+ cmp word ptr [rbp+0x12], 45
je SHORT G_M61906_IG18
- mov bword ptr [rsp+0x28], rsi
- mov dword ptr [rsp+0x30], edi
+ mov bword ptr [rsp+0x28], rbp
+ mov dword ptr [rsp+0x30], r14d
lea rcx, [rsp+0x28]
mov rdx, rbx
; byrRegs +[rdx]
call [<unknown method>]
- ; byrRegs -[rdx rbx rsi]
+ ; byrRegs -[rdx rbx rbp rsi]
; gcr arg pop 0
jmp SHORT G_M61906_IG21
- ;; size=32 bbWeight=0.50 PerfScore 5.88
+ ;; size=33 bbWeight=0.50 PerfScore 5.88
G_M61906_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
; byrRegs +[rbx rsi]
cmp edi, 38
jne SHORT G_M61906_IG19
- cmp ebp, 123
+ cmp r15d, 123
jne SHORT G_M61906_IG19
cmp word ptr [rsi+0x4A], 125
je SHORT G_M61906_IG20
- ;; size=17 bbWeight=0.50 PerfScore 3.25
+ ;; size=18 bbWeight=0.50 PerfScore 3.25
G_M61906_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs -[rsi]
mov rcx, rbx
@@ -293,17 +300,17 @@ G_M61906_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
movzx rax, al
jmp SHORT G_M61906_IG23
;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M61906_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
- ; byrRegs +[rbx rsi]
- mov bword ptr [rsp+0x28], rsi
- mov dword ptr [rsp+0x30], edi
+G_M61906_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0028 {rbx rbp}, byref
+ ; byrRegs +[rbx rbp]
+ mov bword ptr [rsp+0x28], rbp
+ mov dword ptr [rsp+0x30], r14d
lea rcx, [rsp+0x28]
mov rdx, rbx
; byrRegs +[rdx]
call [<unknown method>]
- ; byrRegs -[rdx rbx rsi]
+ ; byrRegs -[rdx rbx rbp]
; gcr arg pop 0
...
coreclr_tests.run.windows.x64.checked.mch
-39 (-26.71%) : 585393.dasm - MCCTest.MyClass:Main():int (FullOpts)
@@ -9,27 +9,26 @@
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <MCCTest.MyClass>
-; V01 loc1 [V01 ] ( 2, 2 ) struct (144) [rsp+0xB8] do-not-enreg[XS] must-init addr-exposed <MCCTest.VType5>
+; V01 loc1 [V01 ] ( 2, 2 ) struct (144) [rsp+0x28] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <MCCTest.VType5>
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <MCCTest.MyClass>
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V06 tmp3 [V06,T00] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V07 tmp4 [V07 ] ( 2, 4 ) struct (144) [rsp+0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <MCCTest.VType5>
;
-; Lcl frame size = 328
+; Lcl frame size = 184
G_M32108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 328
+ sub rsp, 184
xor eax, eax
- mov qword ptr [rsp+0xB8], rax
+ mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0xC0], ymm4
- vmovdqu ymmword ptr [rsp+0xE0], ymm4
- vmovdqu ymmword ptr [rsp+0x100], ymm4
- vmovdqu ymmword ptr [rsp+0x120], ymm4
- mov qword ptr [rsp+0x140], rax
- ;; size=65 bbWeight=1 PerfScore 10.83
+ vmovdqu ymmword ptr [rsp+0x30], ymm4
+ vmovdqu ymmword ptr [rsp+0x50], ymm4
+ vmovdqu ymmword ptr [rsp+0x70], ymm4
+ vmovdqu ymmword ptr [rsp+0x90], ymm4
+ mov qword ptr [rsp+0xB0], rax
+ ;; size=53 bbWeight=1 PerfScore 10.83
G_M32108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; MCCTest.MyClass
call CORINFO_HELP_NEWSFAST
@@ -37,29 +36,22 @@ G_M32108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- lea rdx, [rsp+0xB8]
+ lea rdx, [rsp+0x28]
call [<unknown method>]
; gcrRegs -[rax rcx]
; gcr arg pop 0
- lea rcx, bword ptr [rsp+0x28]
- ; byrRegs +[rcx]
- lea rdx, [rsp+0xB8]
- mov r8d, 144
- call CORINFO_HELP_MEMCPY
- ; byrRegs -[rcx]
- ; gcr arg pop 0
lea rcx, [rsp+0x28]
mov edx, 12
call [<unknown method>]
; gcr arg pop 0
nop
- ;; size=73 bbWeight=1 PerfScore 11.25
+ ;; size=46 bbWeight=1 PerfScore 9.00
G_M32108_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 328
+ add rsp, 184
ret
;; size=8 bbWeight=1 PerfScore 1.25
-; Total bytes of code 146, prolog size 65, PerfScore 23.33, instruction count 24, allocated bytes for code 146 (MethodHash=b0d68293) for method MCCTest.MyClass:Main():int (FullOpts)
+; Total bytes of code 107, prolog size 53, PerfScore 21.08, instruction count 20, allocated bytes for code 107 (MethodHash=b0d68293) for method MCCTest.MyClass:Main():int (FullOpts)
; ============================================================
Unwind Info:
@@ -73,4 +65,4 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 41 * 8 = 328 = 0x00148
+ Size: 23 * 8 = 184 = 0x000B8
-39 (-26.71%) : 585376.dasm - MCCTest.MyClass:Main():int (FullOpts)
@@ -9,27 +9,26 @@
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <MCCTest.MyClass>
-; V01 loc1 [V01 ] ( 2, 2 ) struct (144) [rsp+0xB8] do-not-enreg[XS] must-init addr-exposed <MCCTest.VType5>
+; V01 loc1 [V01 ] ( 2, 2 ) struct (144) [rsp+0x28] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <MCCTest.VType5>
;* V02 loc2 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <MCCTest.MyClass>
;* V05 tmp2 [V05 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V06 tmp3 [V06,T00] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V07 tmp4 [V07 ] ( 2, 4 ) struct (144) [rsp+0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <MCCTest.VType5>
;
-; Lcl frame size = 328
+; Lcl frame size = 184
G_M32108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 328
+ sub rsp, 184
xor eax, eax
- mov qword ptr [rsp+0xB8], rax
+ mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0xC0], ymm4
- vmovdqu ymmword ptr [rsp+0xE0], ymm4
- vmovdqu ymmword ptr [rsp+0x100], ymm4
- vmovdqu ymmword ptr [rsp+0x120], ymm4
- mov qword ptr [rsp+0x140], rax
- ;; size=65 bbWeight=1 PerfScore 10.83
+ vmovdqu ymmword ptr [rsp+0x30], ymm4
+ vmovdqu ymmword ptr [rsp+0x50], ymm4
+ vmovdqu ymmword ptr [rsp+0x70], ymm4
+ vmovdqu ymmword ptr [rsp+0x90], ymm4
+ mov qword ptr [rsp+0xB0], rax
+ ;; size=53 bbWeight=1 PerfScore 10.83
G_M32108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; MCCTest.MyClass
call CORINFO_HELP_NEWSFAST
@@ -37,29 +36,22 @@ G_M32108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- lea rdx, [rsp+0xB8]
+ lea rdx, [rsp+0x28]
call [<unknown method>]
; gcrRegs -[rax rcx]
; gcr arg pop 0
- lea rcx, bword ptr [rsp+0x28]
- ; byrRegs +[rcx]
- lea rdx, [rsp+0xB8]
- mov r8d, 144
- call CORINFO_HELP_MEMCPY
- ; byrRegs -[rcx]
- ; gcr arg pop 0
lea rcx, [rsp+0x28]
mov edx, 12
call [<unknown method>]
; gcr arg pop 0
nop
- ;; size=73 bbWeight=1 PerfScore 11.25
+ ;; size=46 bbWeight=1 PerfScore 9.00
G_M32108_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 328
+ add rsp, 184
ret
;; size=8 bbWeight=1 PerfScore 1.25
-; Total bytes of code 146, prolog size 65, PerfScore 23.33, instruction count 24, allocated bytes for code 146 (MethodHash=b0d68293) for method MCCTest.MyClass:Main():int (FullOpts)
+; Total bytes of code 107, prolog size 53, PerfScore 21.08, instruction count 20, allocated bytes for code 107 (MethodHash=b0d68293) for method MCCTest.MyClass:Main():int (FullOpts)
; ============================================================
Unwind Info:
@@ -73,4 +65,4 @@ Unwind Info:
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 41 * 8 = 328 = 0x00148
+ Size: 23 * 8 = 184 = 0x000B8
-25 (-26.60%) : 541719.dasm - N.Repro2:RunTest():int (FullOpts)
@@ -7,42 +7,36 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00 ] ( 5, 5 ) struct (40) [rsp+0x50] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <N.Outer>
+; V00 loc0 [V00 ] ( 5, 5 ) struct (40) [rsp+0x20] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg ld-addr-op <N.Outer>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 2, 4 ) struct (40) [rsp+0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <N.Outer>
;
-; Lcl frame size = 120
+; Lcl frame size = 72
G_M59487_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 120
+ sub rsp, 72
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x50], ymm4
+ vmovdqu ymmword ptr [rsp+0x20], ymm4
xor eax, eax
- mov qword ptr [rsp+0x70], rax
+ mov qword ptr [rsp+0x40], rax
;; size=21 bbWeight=1 PerfScore 3.83
G_M59487_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rcx, [rsp+0x58]
- call [<unknown method>]
- ; gcr arg pop 0
- vmovups xmm0, xmmword ptr [rsp+0x58]
- vmovups xmmword ptr [rsp+0x68], xmm0
- mov dword ptr [rsp+0x50], 20
- vmovdqu ymm0, ymmword ptr [rsp+0x50]
- vmovdqu ymmword ptr [rsp+0x28], ymm0
- mov rcx, qword ptr [rsp+0x70]
- mov qword ptr [rsp+0x48], rcx
lea rcx, [rsp+0x28]
call [<unknown method>]
; gcr arg pop 0
+ vmovups xmm0, xmmword ptr [rsp+0x28]
+ vmovups xmmword ptr [rsp+0x38], xmm0
+ mov dword ptr [rsp+0x20], 20
+ lea rcx, [rsp+0x20]
+ call [<unknown method>]
+ ; gcr arg pop 0
nop
- ;; size=65 bbWeight=1 PerfScore 19.25
+ ;; size=43 bbWeight=1 PerfScore 12.25
G_M59487_IG03: ; bbWeight=1, epilog, nogc, extend
- vzeroupper
- add rsp, 120
+ add rsp, 72
ret
- ;; size=8 bbWeight=1 PerfScore 2.25
+ ;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 94, prolog size 21, PerfScore 25.33, instruction count 20, allocated bytes for code 94 (MethodHash=28ea17a0) for method N.Repro2:RunTest():int (FullOpts)
+; Total bytes of code 69, prolog size 21, PerfScore 17.33, instruction count 15, allocated bytes for code 69 (MethodHash=28ea17a0) for method N.Repro2:RunTest():int (FullOpts)
; ============================================================
Unwind Info:
@@ -55,4 +49,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 14 * 8 + 8 = 120 = 0x78
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+48 (+15.34%) : 475190.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplySubtractScalarSingle:RunStructFldScenario():this (FullOpts)
@@ -9,31 +9,37 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 4, 4 ) ref -> rbx this class-hnd single-def <JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplySubtractScalarSingle>
-; V01 loc0 [V01 ] ( 7, 7 ) struct (48) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplySubtractScalarSingle+TestStruct>
+; V01 loc0 [V01,T05] ( 4, 4 ) struct (48) [rbp-0xA0] do-not-enreg[HS] hidden-struct-arg ld-addr-op <JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplySubtractScalarSingle+TestStruct>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V04 tmp2 [V04,T13] ( 2, 2 ) simd16 -> mm6 single-def "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[float]>
-; V05 tmp3 [V05 ] ( 2, 4 ) simd16 -> [rbp-0x80] do-not-enreg[XS] addr-exposed "impAppendStmt"
-; V06 tmp4 [V06 ] ( 2, 4 ) simd16 -> [rbp-0x90] do-not-enreg[XS] addr-exposed "impAppendStmt"
-; V07 tmp5 [V07 ] ( 2, 4 ) simd16 -> [rbp-0xA0] do-not-enreg[XS] addr-exposed "impAppendStmt"
+; V04 tmp2 [V04,T17] ( 2, 2 ) simd16 -> mm9 single-def "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[float]>
+;* V05 tmp3 [V05 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
+;* V06 tmp4 [V06 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
+;* V07 tmp5 [V07 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[float]>
-; V09 tmp7 [V09,T06] ( 2, 4 ) long -> rdx "impAppendStmt"
+; V09 tmp7 [V09,T07] ( 2, 4 ) long -> rdx "impAppendStmt"
; V10 tmp8 [V10,T00] ( 4, 8 ) byref -> r14 single-def "Inlining Arg"
;* V11 tmp9 [V11 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V12 tmp10 [V12,T07] ( 2, 4 ) long -> rax "Inlining Arg"
+; V12 tmp10 [V12,T08] ( 2, 4 ) long -> rax "Inlining Arg"
; V13 tmp11 [V13,T02] ( 3, 6 ) long -> rcx "Inlining Arg"
-; V14 tmp12 [V14,T05] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V14 tmp12 [V14,T06] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V16 tmp14 [V16,T08] ( 2, 4 ) long -> rax "Inlining Arg"
+; V16 tmp14 [V16,T09] ( 2, 4 ) long -> rax "Inlining Arg"
; V17 tmp15 [V17,T03] ( 3, 6 ) long -> rdx "Inlining Arg"
-;* V18 tmp16 [V18,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V19 tmp17 [V19,T14] ( 0, 0 ) float -> zero-ref single-def "field V08.value (fldOffset=0x4)" P-INDEP
-; V20 tmp18 [V20,T04] ( 3, 6 ) struct ( 8) [rbp-0xA8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[float]>
-; V21 cse0 [V21,T09] ( 3, 3 ) byref -> rdi "CSE #01: aggressive"
-; V22 cse1 [V22,T10] ( 3, 3 ) byref -> r15 "CSE #02: aggressive"
-; V23 cse2 [V23,T11] ( 3, 3 ) ref -> rsi "CSE #03: aggressive"
+;* V18 tmp16 [V18,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V19 tmp17 [V19,T18] ( 0, 0 ) float -> zero-ref single-def "field V08.value (fldOffset=0x4)" P-INDEP
+; V20 tmp18 [V20,T14] ( 3, 3 ) simd16 -> mm6 single-def "V01.[000..016)"
+; V21 tmp19 [V21,T15] ( 3, 3 ) simd16 -> mm7 single-def "V01.[016..032)"
+; V22 tmp20 [V22,T16] ( 3, 3 ) simd16 -> mm8 single-def "V01.[032..048)"
+; V23 tmp21 [V23 ] ( 2, 4 ) simd16 -> [rbp-0xB0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V24 tmp22 [V24 ] ( 2, 4 ) simd16 -> [rbp-0xC0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V25 tmp23 [V25 ] ( 2, 4 ) simd16 -> [rbp-0xD0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V26 tmp24 [V26,T04] ( 3, 6 ) struct ( 8) [rbp-0xD8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[float]>
+; V27 cse0 [V27,T10] ( 3, 3 ) byref -> rdi "CSE #01: aggressive"
+; V28 cse1 [V28,T11] ( 3, 3 ) byref -> r15 "CSE #02: aggressive"
+; V29 cse2 [V29,T12] ( 3, 3 ) ref -> rsi "CSE #03: aggressive"
;
-; Lcl frame size = 200
+; Lcl frame size = 248
G_M17940_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -42,15 +48,15 @@ G_M17940_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 200
- vmovaps xmmword ptr [rsp+0xB0], xmm6
- lea rbp, [rsp+0xF0]
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x70], ymm4
- vmovdqa xmmword ptr [rbp-0x50], xmm4
+ sub rsp, 248
+ vmovaps xmmword ptr [rsp+0xE0], xmm6
+ vmovaps xmmword ptr [rsp+0xD0], xmm7
+ vmovaps xmmword ptr [rsp+0xC0], xmm8
+ vmovaps xmmword ptr [rsp+0xB0], xmm9
+ lea rbp, [rsp+0x120]
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=49 bbWeight=1 PerfScore 13.33
+ ;; size=62 bbWeight=1 PerfScore 15.00
G_M17940_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -64,11 +70,13 @@ G_M17940_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax rcx]
- lea rcx, [rbp-0x70]
+ lea rcx, [rbp-0xA0]
call [<unknown method>]
- vmovups xmm6, xmmword ptr [rbp-0x70]
- vmovups xmm0, xmmword ptr [rbp-0x60]
- vfmsub213ss xmm6, xmm0, dword ptr [rbp-0x50]
+ vmovups xmm6, xmmword ptr [rbp-0xA0]
+ vmovups xmm7, xmmword ptr [rbp-0x90]
+ vmovups xmm8, xmmword ptr [rbp-0x80]
+ vmovaps xmm9, xmm6
+ vfmsub213ss xmm9, xmm7, xmm8
lea rdi, bword ptr [rbx+0x48]
; byrRegs +[rdi]
mov r14, rdi
@@ -84,13 +92,7 @@ G_M17940_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
lea rax, [rax+rcx-0x01]
dec rcx
andn rcx, rcx, rax
- vmovups xmmword ptr [rcx], xmm6
- vmovups xmm0, xmmword ptr [rbp-0x70]
- vmovaps xmmword ptr [rbp-0x80], xmm0
- vmovups xmm0, xmmword ptr [rbp-0x60]
- vmovaps xmmword ptr [rbp-0x90], xmm0
- vmovups xmm0, xmmword ptr [rbp-0x50]
- vmovaps xmmword ptr [rbp-0xA0], xmm0
+ vmovups xmmword ptr [rcx], xmm9
mov rcx, r15
; byrRegs +[rcx]
call [<unknown method>]
@@ -99,29 +101,35 @@ G_M17940_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
lea r8, [rax+rdx-0x01]
dec rdx
andn rdx, rdx, r8
+ vmovaps xmmword ptr [rbp-0xB0], xmm6
+ vmovaps xmmword ptr [rbp-0xC0], xmm7
+ vmovaps xmmword ptr [rbp-0xD0], xmm8
mov qword ptr [rsp+0x20], rdx
xor edx, edx
mov dword ptr [rsp+0x28], edx
- mov byte ptr [rbp-0xA8], 0
- ;; size=188 bbWeight=1 PerfScore 57.00
+ mov byte ptr [rbp-0xD8], 0
+ ;; size=193 bbWeight=1 PerfScore 49.25
G_M17940_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
- mov dword ptr [rbp-0xA4], edx
+ mov dword ptr [rbp-0xD4], edx
mov gword ptr [rsp+0x38], rsi
- mov rdx, qword ptr [rbp-0xA8]
- mov qword ptr [rsp+0x30], rdx
- lea rdx, [rbp-0x80]
- lea r8, [rbp-0x90]
- lea r9, [rbp-0xA0]
+ lea rdx, [rbp-0xB0]
+ lea r8, [rbp-0xC0]
+ lea r9, [rbp-0xD0]
+ mov rcx, qword ptr [rbp-0xD8]
+ mov qword ptr [rsp+0x30], rcx
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rbx rsi]
nop
- ;; size=51 bbWeight=1 PerfScore 9.00
+ ;; size=54 bbWeight=1 PerfScore 9.00
G_M17940_IG04: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0xB0]
- add rsp, 200
+ vmovaps xmm6, xmmword ptr [rsp+0xE0]
+ vmovaps xmm7, xmmword ptr [rsp+0xD0]
+ vmovaps xmm8, xmmword ptr [rsp+0xC0]
+ vmovaps xmm9, xmmword ptr [rsp+0xB0]
+ add rsp, 248
pop rbx
pop rsi
pop rdi
@@ -129,9 +137,9 @@ G_M17940_IG04: ; bbWeight=1, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=52 bbWeight=1 PerfScore 20.25
-; Total bytes of code 313, prolog size 46, PerfScore 87.58, instruction count 70, allocated bytes for code 313 (MethodHash=977fb9eb) for method JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplySubtractScalarSingle:RunStructFldScenario():this (FullOpts)
+; Total bytes of code 361, prolog size 59, PerfScore 93.50, instruction count 72, allocated bytes for code 361 (MethodHash=977fb9eb) for method JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplySubtractScalarSingle:RunStructFldScenario():this (FullOpts)
; ============================================================
Unwind Info:
@@ -139,15 +147,21 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x18
- CountOfUnwindCodes: 10
+ SizeOfProlog : 0x33
+ CountOfUnwindCodes: 16
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x18 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x33 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM9 (9)
Scaled Small Offset: 11 * 16 = 176 = 0x000B0
+ CodeOffset: 0x2A UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM8 (8)
+ Scaled Small Offset: 12 * 16 = 192 = 0x000C0
+ CodeOffset: 0x21 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
+ Scaled Small Offset: 13 * 16 = 208 = 0x000D0
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ Scaled Small Offset: 14 * 16 = 224 = 0x000E0
CodeOffset: 0x0F UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 25 * 8 = 200 = 0x000C8
+ Size: 31 * 8 = 248 = 0x000F8
CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+48 (+15.34%) : 474910.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplyAddNegatedScalarSingle:RunStructFldScenario():this (FullOpts)
@@ -9,31 +9,37 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 4, 4 ) ref -> rbx this class-hnd single-def <JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplyAddNegatedScalarSingle>
-; V01 loc0 [V01 ] ( 7, 7 ) struct (48) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplyAddNegatedScalarSingle+TestStruct>
+; V01 loc0 [V01,T05] ( 4, 4 ) struct (48) [rbp-0xA0] do-not-enreg[HS] hidden-struct-arg ld-addr-op <JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplyAddNegatedScalarSingle+TestStruct>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V04 tmp2 [V04,T13] ( 2, 2 ) simd16 -> mm6 single-def "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[float]>
-; V05 tmp3 [V05 ] ( 2, 4 ) simd16 -> [rbp-0x80] do-not-enreg[XS] addr-exposed "impAppendStmt"
-; V06 tmp4 [V06 ] ( 2, 4 ) simd16 -> [rbp-0x90] do-not-enreg[XS] addr-exposed "impAppendStmt"
-; V07 tmp5 [V07 ] ( 2, 4 ) simd16 -> [rbp-0xA0] do-not-enreg[XS] addr-exposed "impAppendStmt"
+; V04 tmp2 [V04,T17] ( 2, 2 ) simd16 -> mm9 single-def "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[float]>
+;* V05 tmp3 [V05 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
+;* V06 tmp4 [V06 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
+;* V07 tmp5 [V07 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[float]>
-; V09 tmp7 [V09,T06] ( 2, 4 ) long -> rdx "impAppendStmt"
+; V09 tmp7 [V09,T07] ( 2, 4 ) long -> rdx "impAppendStmt"
; V10 tmp8 [V10,T00] ( 4, 8 ) byref -> r14 single-def "Inlining Arg"
;* V11 tmp9 [V11 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V12 tmp10 [V12,T07] ( 2, 4 ) long -> rax "Inlining Arg"
+; V12 tmp10 [V12,T08] ( 2, 4 ) long -> rax "Inlining Arg"
; V13 tmp11 [V13,T02] ( 3, 6 ) long -> rcx "Inlining Arg"
-; V14 tmp12 [V14,T05] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V14 tmp12 [V14,T06] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V16 tmp14 [V16,T08] ( 2, 4 ) long -> rax "Inlining Arg"
+; V16 tmp14 [V16,T09] ( 2, 4 ) long -> rax "Inlining Arg"
; V17 tmp15 [V17,T03] ( 3, 6 ) long -> rdx "Inlining Arg"
-;* V18 tmp16 [V18,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V19 tmp17 [V19,T14] ( 0, 0 ) float -> zero-ref single-def "field V08.value (fldOffset=0x4)" P-INDEP
-; V20 tmp18 [V20,T04] ( 3, 6 ) struct ( 8) [rbp-0xA8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[float]>
-; V21 cse0 [V21,T09] ( 3, 3 ) byref -> rdi "CSE #01: aggressive"
-; V22 cse1 [V22,T10] ( 3, 3 ) byref -> r15 "CSE #02: aggressive"
-; V23 cse2 [V23,T11] ( 3, 3 ) ref -> rsi "CSE #03: aggressive"
+;* V18 tmp16 [V18,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V19 tmp17 [V19,T18] ( 0, 0 ) float -> zero-ref single-def "field V08.value (fldOffset=0x4)" P-INDEP
+; V20 tmp18 [V20,T14] ( 3, 3 ) simd16 -> mm6 single-def "V01.[000..016)"
+; V21 tmp19 [V21,T15] ( 3, 3 ) simd16 -> mm7 single-def "V01.[016..032)"
+; V22 tmp20 [V22,T16] ( 3, 3 ) simd16 -> mm8 single-def "V01.[032..048)"
+; V23 tmp21 [V23 ] ( 2, 4 ) simd16 -> [rbp-0xB0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V24 tmp22 [V24 ] ( 2, 4 ) simd16 -> [rbp-0xC0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V25 tmp23 [V25 ] ( 2, 4 ) simd16 -> [rbp-0xD0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V26 tmp24 [V26,T04] ( 3, 6 ) struct ( 8) [rbp-0xD8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[float]>
+; V27 cse0 [V27,T10] ( 3, 3 ) byref -> rdi "CSE #01: aggressive"
+; V28 cse1 [V28,T11] ( 3, 3 ) byref -> r15 "CSE #02: aggressive"
+; V29 cse2 [V29,T12] ( 3, 3 ) ref -> rsi "CSE #03: aggressive"
;
-; Lcl frame size = 200
+; Lcl frame size = 248
G_M13817_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -42,15 +48,15 @@ G_M13817_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 200
- vmovaps xmmword ptr [rsp+0xB0], xmm6
- lea rbp, [rsp+0xF0]
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x70], ymm4
- vmovdqa xmmword ptr [rbp-0x50], xmm4
+ sub rsp, 248
+ vmovaps xmmword ptr [rsp+0xE0], xmm6
+ vmovaps xmmword ptr [rsp+0xD0], xmm7
+ vmovaps xmmword ptr [rsp+0xC0], xmm8
+ vmovaps xmmword ptr [rsp+0xB0], xmm9
+ lea rbp, [rsp+0x120]
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=49 bbWeight=1 PerfScore 13.33
+ ;; size=62 bbWeight=1 PerfScore 15.00
G_M13817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -64,11 +70,13 @@ G_M13817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax rcx]
- lea rcx, [rbp-0x70]
+ lea rcx, [rbp-0xA0]
call [<unknown method>]
- vmovups xmm6, xmmword ptr [rbp-0x70]
- vmovups xmm0, xmmword ptr [rbp-0x60]
- vfnmadd213ss xmm6, xmm0, dword ptr [rbp-0x50]
+ vmovups xmm6, xmmword ptr [rbp-0xA0]
+ vmovups xmm7, xmmword ptr [rbp-0x90]
+ vmovups xmm8, xmmword ptr [rbp-0x80]
+ vmovaps xmm9, xmm6
+ vfnmadd213ss xmm9, xmm7, xmm8
lea rdi, bword ptr [rbx+0x48]
; byrRegs +[rdi]
mov r14, rdi
@@ -84,13 +92,7 @@ G_M13817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
lea rax, [rax+rcx-0x01]
dec rcx
andn rcx, rcx, rax
- vmovups xmmword ptr [rcx], xmm6
- vmovups xmm0, xmmword ptr [rbp-0x70]
- vmovaps xmmword ptr [rbp-0x80], xmm0
- vmovups xmm0, xmmword ptr [rbp-0x60]
- vmovaps xmmword ptr [rbp-0x90], xmm0
- vmovups xmm0, xmmword ptr [rbp-0x50]
- vmovaps xmmword ptr [rbp-0xA0], xmm0
+ vmovups xmmword ptr [rcx], xmm9
mov rcx, r15
; byrRegs +[rcx]
call [<unknown method>]
@@ -99,29 +101,35 @@ G_M13817_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
lea r8, [rax+rdx-0x01]
dec rdx
andn rdx, rdx, r8
+ vmovaps xmmword ptr [rbp-0xB0], xmm6
+ vmovaps xmmword ptr [rbp-0xC0], xmm7
+ vmovaps xmmword ptr [rbp-0xD0], xmm8
mov qword ptr [rsp+0x20], rdx
xor edx, edx
mov dword ptr [rsp+0x28], edx
- mov byte ptr [rbp-0xA8], 0
- ;; size=188 bbWeight=1 PerfScore 57.00
+ mov byte ptr [rbp-0xD8], 0
+ ;; size=193 bbWeight=1 PerfScore 49.25
G_M13817_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
- mov dword ptr [rbp-0xA4], edx
+ mov dword ptr [rbp-0xD4], edx
mov gword ptr [rsp+0x38], rsi
- mov rdx, qword ptr [rbp-0xA8]
- mov qword ptr [rsp+0x30], rdx
- lea rdx, [rbp-0x80]
- lea r8, [rbp-0x90]
- lea r9, [rbp-0xA0]
+ lea rdx, [rbp-0xB0]
+ lea r8, [rbp-0xC0]
+ lea r9, [rbp-0xD0]
+ mov rcx, qword ptr [rbp-0xD8]
+ mov qword ptr [rsp+0x30], rcx
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rbx rsi]
nop
- ;; size=51 bbWeight=1 PerfScore 9.00
+ ;; size=54 bbWeight=1 PerfScore 9.00
G_M13817_IG04: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0xB0]
- add rsp, 200
+ vmovaps xmm6, xmmword ptr [rsp+0xE0]
+ vmovaps xmm7, xmmword ptr [rsp+0xD0]
+ vmovaps xmm8, xmmword ptr [rsp+0xC0]
+ vmovaps xmm9, xmmword ptr [rsp+0xB0]
+ add rsp, 248
pop rbx
pop rsi
pop rdi
@@ -129,9 +137,9 @@ G_M13817_IG04: ; bbWeight=1, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=52 bbWeight=1 PerfScore 20.25
-; Total bytes of code 313, prolog size 46, PerfScore 87.58, instruction count 70, allocated bytes for code 313 (MethodHash=4c45ca06) for method JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplyAddNegatedScalarSingle:RunStructFldScenario():this (FullOpts)
+; Total bytes of code 361, prolog size 59, PerfScore 93.50, instruction count 72, allocated bytes for code 361 (MethodHash=4c45ca06) for method JIT.HardwareIntrinsics.X86._Fma_Vector128.SimpleTernaryOpTest__MultiplyAddNegatedScalarSingle:RunStructFldScenario():this (FullOpts)
; ============================================================
Unwind Info:
@@ -139,15 +147,21 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x18
- CountOfUnwindCodes: 10
+ SizeOfProlog : 0x33
+ CountOfUnwindCodes: 16
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x18 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x33 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM9 (9)
Scaled Small Offset: 11 * 16 = 176 = 0x000B0
+ CodeOffset: 0x2A UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM8 (8)
+ Scaled Small Offset: 12 * 16 = 192 = 0x000C0
+ CodeOffset: 0x21 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
+ Scaled Small Offset: 13 * 16 = 208 = 0x000D0
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ Scaled Small Offset: 14 * 16 = 224 = 0x000E0
CodeOffset: 0x0F UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 25 * 8 = 200 = 0x000C8
+ Size: 31 * 8 = 248 = 0x000F8
CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+48 (+15.34%) : 475070.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddSingle:RunStructFldScenario():this (FullOpts)
@@ -9,31 +9,37 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 4, 4 ) ref -> rbx this class-hnd single-def <JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddSingle>
-; V01 loc0 [V01 ] ( 7, 7 ) struct (48) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op <JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddSingle+TestStruct>
+; V01 loc0 [V01,T05] ( 4, 4 ) struct (48) [rbp-0xA0] do-not-enreg[HS] hidden-struct-arg ld-addr-op <JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddSingle+TestStruct>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V04 tmp2 [V04,T13] ( 2, 2 ) simd16 -> mm6 single-def "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[float]>
-; V05 tmp3 [V05 ] ( 2, 4 ) simd16 -> [rbp-0x80] do-not-enreg[XS] addr-exposed "impAppendStmt"
-; V06 tmp4 [V06 ] ( 2, 4 ) simd16 -> [rbp-0x90] do-not-enreg[XS] addr-exposed "impAppendStmt"
-; V07 tmp5 [V07 ] ( 2, 4 ) simd16 -> [rbp-0xA0] do-not-enreg[XS] addr-exposed "impAppendStmt"
+; V04 tmp2 [V04,T17] ( 2, 2 ) simd16 -> mm9 single-def "Inline stloc first use temp" <System.Runtime.Intrinsics.Vector128`1[float]>
+;* V05 tmp3 [V05 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
+;* V06 tmp4 [V06 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
+;* V07 tmp5 [V07 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[float]>
-; V09 tmp7 [V09,T06] ( 2, 4 ) long -> rdx "impAppendStmt"
+; V09 tmp7 [V09,T07] ( 2, 4 ) long -> rdx "impAppendStmt"
; V10 tmp8 [V10,T00] ( 4, 8 ) byref -> r14 single-def "Inlining Arg"
;* V11 tmp9 [V11 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V12 tmp10 [V12,T07] ( 2, 4 ) long -> rax "Inlining Arg"
+; V12 tmp10 [V12,T08] ( 2, 4 ) long -> rax "Inlining Arg"
; V13 tmp11 [V13,T02] ( 3, 6 ) long -> rcx "Inlining Arg"
-; V14 tmp12 [V14,T05] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V14 tmp12 [V14,T06] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
;* V15 tmp13 [V15 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline stloc first use temp"
-; V16 tmp14 [V16,T08] ( 2, 4 ) long -> rax "Inlining Arg"
+; V16 tmp14 [V16,T09] ( 2, 4 ) long -> rax "Inlining Arg"
; V17 tmp15 [V17,T03] ( 3, 6 ) long -> rdx "Inlining Arg"
-;* V18 tmp16 [V18,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V19 tmp17 [V19,T14] ( 0, 0 ) float -> zero-ref single-def "field V08.value (fldOffset=0x4)" P-INDEP
-; V20 tmp18 [V20,T04] ( 3, 6 ) struct ( 8) [rbp-0xA8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[float]>
-; V21 cse0 [V21,T09] ( 3, 3 ) byref -> rdi "CSE #01: aggressive"
-; V22 cse1 [V22,T10] ( 3, 3 ) byref -> r15 "CSE #02: aggressive"
-; V23 cse2 [V23,T11] ( 3, 3 ) ref -> rsi "CSE #03: aggressive"
+;* V18 tmp16 [V18,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V19 tmp17 [V19,T18] ( 0, 0 ) float -> zero-ref single-def "field V08.value (fldOffset=0x4)" P-INDEP
+; V20 tmp18 [V20,T14] ( 3, 3 ) simd16 -> mm6 single-def "V01.[000..016)"
+; V21 tmp19 [V21,T15] ( 3, 3 ) simd16 -> mm7 single-def "V01.[016..032)"
+; V22 tmp20 [V22,T16] ( 3, 3 ) simd16 -> mm8 single-def "V01.[032..048)"
+; V23 tmp21 [V23 ] ( 2, 4 ) simd16 -> [rbp-0xB0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V24 tmp22 [V24 ] ( 2, 4 ) simd16 -> [rbp-0xC0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V25 tmp23 [V25 ] ( 2, 4 ) simd16 -> [rbp-0xD0] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Runtime.Intrinsics.Vector128`1[float]>
+; V26 tmp24 [V26,T04] ( 3, 6 ) struct ( 8) [rbp-0xD8] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[float]>
+; V27 cse0 [V27,T10] ( 3, 3 ) byref -> rdi "CSE #01: aggressive"
+; V28 cse1 [V28,T11] ( 3, 3 ) byref -> r15 "CSE #02: aggressive"
+; V29 cse2 [V29,T12] ( 3, 3 ) ref -> rsi "CSE #03: aggressive"
;
-; Lcl frame size = 200
+; Lcl frame size = 248
G_M40192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -42,15 +48,15 @@ G_M40192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 200
- vmovaps xmmword ptr [rsp+0xB0], xmm6
- lea rbp, [rsp+0xF0]
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x70], ymm4
- vmovdqa xmmword ptr [rbp-0x50], xmm4
+ sub rsp, 248
+ vmovaps xmmword ptr [rsp+0xE0], xmm6
+ vmovaps xmmword ptr [rsp+0xD0], xmm7
+ vmovaps xmmword ptr [rsp+0xC0], xmm8
+ vmovaps xmmword ptr [rsp+0xB0], xmm9
+ lea rbp, [rsp+0x120]
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=49 bbWeight=1 PerfScore 13.33
+ ;; size=62 bbWeight=1 PerfScore 15.00
G_M40192_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
@@ -64,11 +70,13 @@ G_M40192_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax rcx]
- lea rcx, [rbp-0x70]
+ lea rcx, [rbp-0xA0]
call [<unknown method>]
- vmovups xmm6, xmmword ptr [rbp-0x70]
- vmovups xmm0, xmmword ptr [rbp-0x60]
- vfmsubadd213ps xmm6, xmm0, xmmword ptr [rbp-0x50]
+ vmovups xmm6, xmmword ptr [rbp-0xA0]
+ vmovups xmm7, xmmword ptr [rbp-0x90]
+ vmovups xmm8, xmmword ptr [rbp-0x80]
+ vmovaps xmm9, xmm6
+ vfmsubadd213ps xmm9, xmm7, xmm8
lea rdi, bword ptr [rbx+0x48]
; byrRegs +[rdi]
mov r14, rdi
@@ -84,13 +92,7 @@ G_M40192_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
lea rax, [rax+rcx-0x01]
dec rcx
andn rcx, rcx, rax
- vmovups xmmword ptr [rcx], xmm6
- vmovups xmm0, xmmword ptr [rbp-0x70]
- vmovaps xmmword ptr [rbp-0x80], xmm0
- vmovups xmm0, xmmword ptr [rbp-0x60]
- vmovaps xmmword ptr [rbp-0x90], xmm0
- vmovups xmm0, xmmword ptr [rbp-0x50]
- vmovaps xmmword ptr [rbp-0xA0], xmm0
+ vmovups xmmword ptr [rcx], xmm9
mov rcx, r15
; byrRegs +[rcx]
call [<unknown method>]
@@ -99,29 +101,35 @@ G_M40192_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
lea r8, [rax+rdx-0x01]
dec rdx
andn rdx, rdx, r8
+ vmovaps xmmword ptr [rbp-0xB0], xmm6
+ vmovaps xmmword ptr [rbp-0xC0], xmm7
+ vmovaps xmmword ptr [rbp-0xD0], xmm8
mov qword ptr [rsp+0x20], rdx
xor edx, edx
mov dword ptr [rsp+0x28], edx
- mov byte ptr [rbp-0xA8], 0
- ;; size=188 bbWeight=1 PerfScore 57.00
+ mov byte ptr [rbp-0xD8], 0
+ ;; size=193 bbWeight=1 PerfScore 49.25
G_M40192_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
- mov dword ptr [rbp-0xA4], edx
+ mov dword ptr [rbp-0xD4], edx
mov gword ptr [rsp+0x38], rsi
- mov rdx, qword ptr [rbp-0xA8]
- mov qword ptr [rsp+0x30], rdx
- lea rdx, [rbp-0x80]
- lea r8, [rbp-0x90]
- lea r9, [rbp-0xA0]
+ lea rdx, [rbp-0xB0]
+ lea r8, [rbp-0xC0]
+ lea r9, [rbp-0xD0]
+ mov rcx, qword ptr [rbp-0xD8]
+ mov qword ptr [rsp+0x30], rcx
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx rbx rsi]
nop
- ;; size=51 bbWeight=1 PerfScore 9.00
+ ;; size=54 bbWeight=1 PerfScore 9.00
G_M40192_IG04: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0xB0]
- add rsp, 200
+ vmovaps xmm6, xmmword ptr [rsp+0xE0]
+ vmovaps xmm7, xmmword ptr [rsp+0xD0]
+ vmovaps xmm8, xmmword ptr [rsp+0xC0]
+ vmovaps xmm9, xmmword ptr [rsp+0xB0]
+ add rsp, 248
pop rbx
pop rsi
pop rdi
@@ -129,9 +137,9 @@ G_M40192_IG04: ; bbWeight=1, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=25 bbWeight=1 PerfScore 8.25
+ ;; size=52 bbWeight=1 PerfScore 20.25
-; Total bytes of code 313, prolog size 46, PerfScore 87.58, instruction count 70, allocated bytes for code 313 (MethodHash=3b3a62ff) for method JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddSingle:RunStructFldScenario():this (FullOpts)
+; Total bytes of code 361, prolog size 59, PerfScore 93.50, instruction count 72, allocated bytes for code 361 (MethodHash=3b3a62ff) for method JIT.HardwareIntrinsics.X86._Fma_Vector128.AlternatingTernaryOpTest__MultiplySubtractAddSingle:RunStructFldScenario():this (FullOpts)
; ============================================================
Unwind Info:
@@ -139,15 +147,21 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x18
- CountOfUnwindCodes: 10
+ SizeOfProlog : 0x33
+ CountOfUnwindCodes: 16
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x18 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x33 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM9 (9)
Scaled Small Offset: 11 * 16 = 176 = 0x000B0
+ CodeOffset: 0x2A UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM8 (8)
+ Scaled Small Offset: 12 * 16 = 192 = 0x000C0
+ CodeOffset: 0x21 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
+ Scaled Small Offset: 13 * 16 = 208 = 0x000D0
+ CodeOffset: 0x18 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ Scaled Small Offset: 14 * 16 = 224 = 0x000E0
CodeOffset: 0x0F UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 25 * 8 = 200 = 0x000C8
+ Size: 31 * 8 = 248 = 0x000F8
CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
libraries.crossgen2.windows.x64.checked.mch
-48 (-33.10%) : 169830.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
@@ -11,34 +11,31 @@
; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriver>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r9 class-hnd single-def <Microsoft.CodeAnalysis.Compilation>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03 ] ( 2, 2 ) struct (80) [rsp+0x80] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.GeneratorDriverState>
+; V03 loc0 [V03 ] ( 2, 2 ) struct (80) [rsp+0x30] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <Microsoft.CodeAnalysis.GeneratorDriverState>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T02] ( 2, 2 ) ref -> r8 single-def "field V02._source (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06 ] ( 2, 4 ) struct (80) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.GeneratorDriverState>
;
-; Lcl frame size = 208
+; Lcl frame size = 128
G_M23079_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 208
+ sub rsp, 128
xorps xmm4, xmm4
movaps xmmword ptr [rsp+0x30], xmm4
- mov rax, -144
- movaps xmmword ptr [rsp+rax+0xD0], xmm4
- movaps xmmword ptr [rsp+rax+0xE0], xmm4
- movaps xmmword ptr [rsp+rax+0xF0], xmm4
- add rax, 48
- jne SHORT -5 instr
+ movaps xmmword ptr [rsp+0x40], xmm4
+ movaps xmmword ptr [rsp+0x50], xmm4
+ movaps xmmword ptr [rsp+0x60], xmm4
+ movaps xmmword ptr [rsp+0x70], xmm4
mov rbx, rcx
; gcrRegs +[rbx]
mov r9, rdx
; gcrRegs +[r9]
- ;; size=62 bbWeight=1 PerfScore 11.58
+ ;; size=42 bbWeight=1 PerfScore 12.08
G_M23079_IG02: ; bbWeight=1, gcrefRegs=0308 {rbx r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
mov gword ptr [rsp+0x20], r8
; gcr arg write
- lea rdx, [rsp+0x80]
+ lea rdx, [rsp+0x30]
mov rcx, rbx
; gcrRegs +[rcx]
mov r8, r9
@@ -46,13 +43,6 @@ G_M23079_IG02: ; bbWeight=1, gcrefRegs=0308 {rbx r8 r9}, byrefRegs=0000 {
call [<unknown method>]
; gcrRegs -[rcx r8-r9]
; gcr arg pop 0
- lea rcx, bword ptr [rsp+0x30]
- ; byrRegs +[rcx]
- lea rdx, [rsp+0x80]
- mov r8d, 80
- call [CORINFO_HELP_BULK_WRITEBARRIER]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
lea rdx, [rsp+0x30]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -62,14 +52,14 @@ G_M23079_IG02: ; bbWeight=1, gcrefRegs=0308 {rbx r8 r9}, byrefRegs=0000 {
; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
nop
- ;; size=74 bbWeight=1 PerfScore 17.00
+ ;; size=46 bbWeight=1 PerfScore 12.75
G_M23079_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 208
+ add rsp, 128
pop rbx
ret
;; size=9 bbWeight=1 PerfScore 1.75
-; Total bytes of code 145, prolog size 56, PerfScore 30.33, instruction count 31, allocated bytes for code 145 (MethodHash=0fc5a5d8) for method Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
+; Total bytes of code 97, prolog size 36, PerfScore 26.58, instruction count 25, allocated bytes for code 97 (MethodHash=0fc5a5d8) for method Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
; ============================================================
Unwind Info:
@@ -78,10 +68,9 @@ Unwind Info:
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
- CountOfUnwindCodes: 3
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 26 * 8 = 208 = 0x000D0
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-12 (-26.67%) : 226716.dasm - System.CommandLine.Help.HelpBuilder:g__IsOptional|16_0(System.CommandLine.CliArgument):ubyte (FullOpts)
@@ -10,17 +10,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd single-def <System.CommandLine.CliArgument>
-; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.CommandLine.ArgumentArity>
+; V01 loc0 [V01,T01] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[HS] hidden-struct-arg ld-addr-op <System.CommandLine.ArgumentArity>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 56
G_M2446_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 56
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rax
- ;; size=16 bbWeight=1 PerfScore 2.50
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M2446_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
lea rdx, [rsp+0x28]
@@ -37,7 +34,7 @@ G_M2446_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 45, prolog size 16, PerfScore 13.50, instruction count 12, allocated bytes for code 45 (MethodHash=dfa0f671) for method System.CommandLine.Help.HelpBuilder:<FormatArgumentUsage>g__IsOptional|16_0(System.CommandLine.CliArgument):ubyte (FullOpts)
+; Total bytes of code 33, prolog size 4, PerfScore 11.25, instruction count 9, allocated bytes for code 33 (MethodHash=dfa0f671) for method System.CommandLine.Help.HelpBuilder:<FormatArgumentUsage>g__IsOptional|16_0(System.CommandLine.CliArgument):ubyte (FullOpts)
; ============================================================
Unwind Info:
-15 (-25.00%) : 92774.dasm - Microsoft.Diagnostics.Tracing.Stacks.Formats.ChromiumStackSourceWriter+<>c:b__2_0(System.Collections.Generic.KeyValuePair`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.IReadOnlyList`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ProfileEvent]]):double:this (FullOpts)
@@ -11,7 +11,7 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Diagnostics.Tracing.Stacks.Formats.ChromiumStackSourceWriter+<>c>
; V01 arg1 [V01,T00] ( 3, 6 ) byref -> rcx ld-addr-op single-def
-; V02 loc0 [V02 ] ( 2, 2 ) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ProfileEvent>
+; V02 loc0 [V02,T02] ( 2, 2 ) struct (24) [rsp+0x20] do-not-enreg[HS] hidden-struct-arg ld-addr-op <Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ProfileEvent>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T01] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
;
@@ -19,13 +19,9 @@
G_M29351_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 56
- xorps xmm4, xmm4
- movaps xmmword ptr [rsp+0x20], xmm4
- xor eax, eax
- mov qword ptr [rsp+0x30], rax
mov rcx, rdx
; byrRegs +[rcx]
- ;; size=22 bbWeight=1 PerfScore 4.08
+ ;; size=7 bbWeight=1 PerfScore 0.50
G_M29351_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
mov rdx, qword ptr [(reloc)] ; System.Collections.Generic.KeyValuePair`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.IReadOnlyList`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ProfileEvent]]
call [<unknown method>]
@@ -45,7 +41,7 @@ G_M29351_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 60, prolog size 19, PerfScore 17.08, instruction count 14, allocated bytes for code 60 (MethodHash=3a378d58) for method Microsoft.Diagnostics.Tracing.Stacks.Formats.ChromiumStackSourceWriter+<>c:<WriteToFile>b__2_0(System.Collections.Generic.KeyValuePair`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.IReadOnlyList`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ProfileEvent]]):double:this (FullOpts)
+; Total bytes of code 45, prolog size 4, PerfScore 13.50, instruction count 10, allocated bytes for code 45 (MethodHash=3a378d58) for method Microsoft.Diagnostics.Tracing.Stacks.Formats.ChromiumStackSourceWriter+<>c:<WriteToFile>b__2_0(System.Collections.Generic.KeyValuePair`2[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ThreadInfo,System.Collections.Generic.IReadOnlyList`1[Microsoft.Diagnostics.Tracing.Stacks.StackSourceWriterHelper+ProfileEvent]]):double:this (FullOpts)
; ============================================================
Unwind Info:
+41 (+10.10%) : 256549.dasm - System.Drawing.ColorConverterCommon:PossibleKnownColor(System.Drawing.Color):System.Drawing.Color (FullOpts)
@@ -9,54 +9,56 @@
; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T05] ( 6, 6 ) byref -> [rbp+0x10] EH-live single-def
-; V01 arg0 [V01,T03] ( 6, 12 ) byref -> rsi ld-addr-op single-def
-; V02 loc0 [V02,T04] ( 2, 9 ) int -> rdi
-; V03 loc1 [V03 ] ( 5, 19 ) struct (40) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.String,System.Drawing.Color]>
-; V04 loc2 [V04 ] ( 5, 25 ) struct (24) [rbp-0x60] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Drawing.Color>
-; V05 loc3 [V05,T11] ( 2, 2 ) struct (24) [rbp-0x78] do-not-enreg[SZ] must-init EH-live <System.Drawing.Color>
+; V00 RetBuf [V00,T05] ( 7, 7 ) byref -> [rbp+0x10] EH-live single-def
+; V01 arg0 [V01,T04] ( 6, 12 ) byref -> rsi ld-addr-op single-def
+; V02 loc0 [V02,T06] ( 2, 9 ) int -> rdi
+; V03 loc1 [V03 ] ( 5, 19 ) struct (40) [rbp-0x50] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg ld-addr-op <System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.String,System.Drawing.Color]>
+; V04 loc2 [V04,T01] ( 5, 25 ) struct (24) [rbp-0x68] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.Drawing.Color>
+; V05 loc3 [V05,T12] ( 2, 2 ) struct (24) [rbp-0x80] do-not-enreg[SZ] must-init EH-live <System.Drawing.Color>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T06] ( 4, 4 ) long -> rdi "Inline return value spill temp"
-; V08 tmp2 [V08,T01] ( 4, 20 ) long -> r14 "Inline return value spill temp"
+; V07 tmp1 [V07,T07] ( 4, 4 ) long -> rdi "Inline return value spill temp"
+; V08 tmp2 [V08,T03] ( 4, 20 ) long -> r15 "Inline return value spill temp"
;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref "field V01.name (fldOffset=0x0)" P-INDEP
;* V10 tmp4 [V10 ] ( 0, 0 ) long -> zero-ref "field V01.value (fldOffset=0x8)" P-INDEP
;* V11 tmp5 [V11 ] ( 0, 0 ) short -> zero-ref "field V01.knownColor (fldOffset=0x10)" P-INDEP
;* V12 tmp6 [V12 ] ( 0, 0 ) short -> zero-ref "field V01.state (fldOffset=0x12)" P-INDEP
-;* V13 tmp7 [V13 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" <System.Drawing.Color>
-; V14 tmp8 [V14,T07] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V15 tmp9 [V15,T08] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V16 tmp10 [V16,T09] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V17 PSPSym [V17,T12] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
-; V18 cse0 [V18,T10] ( 3, 3 ) int -> rcx "CSE #01: aggressive"
-; V19 cse1 [V19,T02] ( 3, 20 ) int -> rcx "CSE #03: aggressive"
-; V20 cse2 [V20,T00] ( 6, 27 ) long -> r14 multi-def "CSE #02: aggressive"
+; V13 tmp7 [V13,T02] ( 4, 21 ) short -> r14 "V04.[018..020)"
+; V14 tmp8 [V14,T13] ( 2, 2 ) short -> [rbp-0x84] do-not-enreg[Z] EH-live "V05.[018..020)"
+;* V15 tmp9 [V15 ] ( 0, 0 ) struct (24) zero-ref "Promoted implicit byref" <System.Drawing.Color>
+; V16 tmp10 [V16,T08] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
+; V17 tmp11 [V17,T09] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
+; V18 tmp12 [V18,T10] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
+; V19 PSPSym [V19,T14] ( 1, 1 ) long -> [rbp-0x90] do-not-enreg[V] "PSPSym"
+; V20 cse0 [V20,T11] ( 3, 3 ) int -> rcx "CSE #01: aggressive"
+; V21 cse1 [V21,T00] ( 6, 27 ) long -> r14 multi-def "CSE #02: aggressive"
;
-; Lcl frame size = 128
+; Lcl frame size = 136
G_M37917_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
+ push r15
push r14
push rdi
push rsi
push rbx
- sub rsp, 128
- lea rbp, [rsp+0xA0]
- xor eax, eax
- mov qword ptr [rbp-0x78], rax
+ sub rsp, 136
+ lea rbp, [rsp+0xB0]
xorps xmm4, xmm4
+ movaps xmmword ptr [rbp-0x80], xmm4
movaps xmmword ptr [rbp-0x70], xmm4
movaps xmmword ptr [rbp-0x60], xmm4
movaps xmmword ptr [rbp-0x50], xmm4
movaps xmmword ptr [rbp-0x40], xmm4
- movaps xmmword ptr [rbp-0x30], xmm4
- mov qword ptr [rbp-0x80], rsp
+ xor eax, eax
+ mov qword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x90], rsp
mov bword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
mov rbx, rcx
; byrRegs +[rbx]
mov rsi, rdx
; byrRegs +[rsi]
- ;; size=64 bbWeight=1 PerfScore 19.83
+ ;; size=69 bbWeight=1 PerfScore 20.83
G_M37917_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref, isz
movsx rcx, word ptr [rsi+0x12]
test cl, 2
@@ -97,7 +99,7 @@ G_M37917_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- lea rdx, [rbp-0x48]
+ lea rdx, [rbp-0x50]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
@@ -106,80 +108,87 @@ G_M37917_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
nop
;; size=56 bbWeight=1 PerfScore 25.75
G_M37917_IG06: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- lea rcx, [rbp-0x48]
+ lea rcx, [rbp-0x50]
mov r14, qword ptr [(reloc)] ; System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.String,System.Drawing.Color]
mov rdx, r14
call [<unknown method>]
; gcr arg pop 0
test eax, eax
- je SHORT G_M37917_IG16
- lea rcx, [rbp-0x48]
- lea rdx, [rbp-0x60]
+ je G_M37917_IG17
+ lea rcx, [rbp-0x50]
+ lea rdx, [rbp-0x68]
mov r8, r14
call [<unknown method>]
; gcr arg pop 0
- movsx rcx, word ptr [rbp-0x4E]
- test cl, 2
+ movsx r14, word ptr [rbp-0x56]
+ test r14b, 2
je SHORT G_M37917_IG08
- ;; size=51 bbWeight=8 PerfScore 124.00
+ ;; size=56 bbWeight=8 PerfScore 124.00
G_M37917_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov r14, qword ptr [rbp-0x58]
+ mov r15, qword ptr [rbp-0x60]
jmp SHORT G_M37917_IG10
;; size=6 bbWeight=4 PerfScore 12.00
G_M37917_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- test cl, 1
+ test r14b, 1
je SHORT G_M37917_IG09
- movsx rcx, word ptr [rbp-0x50]
+ movsx rcx, word ptr [rbp-0x58]
call [System.Drawing.KnownColorTable:KnownColorToArgb(int):uint]
; gcr arg pop 0
- mov r14d, eax
+ mov r15d, eax
jmp SHORT G_M37917_IG10
- ;; size=21 bbWeight=4 PerfScore 38.00
+ ;; size=22 bbWeight=4 PerfScore 38.00
G_M37917_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
- xor r14d, r14d
+ xor r15d, r15d
;; size=3 bbWeight=4 PerfScore 1.00
G_M37917_IG10: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- cmp r14d, edi
+ cmp r15d, edi
jne SHORT G_M37917_IG06
;; size=5 bbWeight=8 PerfScore 10.00
G_M37917_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, nogc
; byrRegs -[rsi]
- movups xmm0, xmmword ptr [rbp-0x60]
- movups xmmword ptr [rbp-0x78], xmm0
- mov rcx, qword ptr [rbp-0x50]
- mov qword ptr [rbp-0x68], rcx
+ movups xmm0, xmmword ptr [rbp-0x68]
+ movups xmmword ptr [rbp-0x80], xmm0
+ mov rcx, qword ptr [rbp-0x58]
+ mov qword ptr [rbp-0x70], rcx
;; size=16 bbWeight=1 PerfScore 6.00
-G_M37917_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M37917_IG12: ; bbWeight=1, extend
+ mov dword ptr [rbp-0x84], r14d
+ ;; size=7 bbWeight=1 PerfScore 1.00
+G_M37917_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rcx, rsp
;; size=3 bbWeight=1 PerfScore 0.25
-G_M37917_IG13: ; bbWeight=1, nogc, extend
- call G_M37917_IG18
+G_M37917_IG14: ; bbWeight=1, nogc, extend
+ call G_M37917_IG19
; byrRegs -[rbx]
nop
;; size=6 bbWeight=1 PerfScore 1.25
-G_M37917_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37917_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, bword ptr [rbp+0x10]
; byrRegs +[rdi]
- lea rsi, bword ptr [rbp-0x78]
+ lea rsi, bword ptr [rbp-0x80]
; byrRegs +[rsi]
call [CORINFO_HELP_ASSIGN_BYREF]
movsq
movsq
- mov rax, bword ptr [rbp+0x10]
+ movsx rax, word ptr [rbp-0x84]
+ mov rdi, bword ptr [rbp+0x10]
+ mov word ptr [rdi+0x12], ax
+ mov rax, rdi
; byrRegs +[rax]
- ;; size=22 bbWeight=1 PerfScore 7.50
-G_M37917_IG15: ; bbWeight=1, epilog, nogc, extend
- add rsp, 128
+ ;; size=37 bbWeight=1 PerfScore 11.75
+G_M37917_IG16: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 136
pop rbx
pop rsi
pop rdi
pop r14
+ pop r15
pop rbp
ret
- ;; size=14 bbWeight=1 PerfScore 3.75
-G_M37917_IG16: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 4.25
+G_M37917_IG17: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, gcvars, byref
; byrRegs -[rax rdi] +[rbx]
- lea rcx, [rbp-0x48]
+ lea rcx, [rbp-0x50]
mov rdx, r14
call [<unknown method>]
; gcr arg pop 0
@@ -191,46 +200,49 @@ G_M37917_IG16: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=000
mov rax, rbx
; byrRegs +[rax]
;; size=29 bbWeight=1 PerfScore 9.25
-G_M37917_IG17: ; bbWeight=1, epilog, nogc, extend
- add rsp, 128
+G_M37917_IG18: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 136
pop rbx
pop rsi
pop rdi
pop r14
+ pop r15
pop rbp
ret
- ;; size=14 bbWeight=1 PerfScore 3.75
-G_M37917_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=16 bbWeight=1 PerfScore 4.25
+G_M37917_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; byrRegs -[rax rbx rsi rdi]
push rbp
+ push r15
push r14
push rdi
push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0xA0]
- ;; size=26 bbWeight=1 PerfScore 8.75
-G_M37917_IG19: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- lea rcx, [rbp-0x48]
+ lea rbp, [rbp+0xB0]
+ ;; size=28 bbWeight=1 PerfScore 9.75
+G_M37917_IG20: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ lea rcx, [rbp-0x50]
mov r14, qword ptr [(reloc)] ; System.Collections.Generic.Dictionary`2+ValueCollection+Enumerator[System.String,System.Drawing.Color]
mov rdx, r14
call [<unknown method>]
; gcr arg pop 0
...
+23 (+12.11%) : 245573.dasm - System.Formats.Cbor.CborWriter:WriteBigInteger(System.Numerics.BigInteger):this (FullOpts)
@@ -10,22 +10,24 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 4, 4 ) ref -> rsi this class-hnd single-def <System.Formats.Cbor.CborWriter>
-; V01 arg1 [V01,T00] ( 5, 8 ) byref -> rbx ld-addr-op single-def
-; V02 loc0 [V02,T02] ( 3, 3 ) ubyte -> rdi single-def
-; V03 loc1 [V03,T03] ( 2, 2 ) ref -> rbx class-hnd single-def <ubyte[]>
+; V01 arg1 [V01,T00] ( 7, 10 ) byref -> rbx ld-addr-op single-def
+; V02 loc0 [V02,T03] ( 3, 3 ) ubyte -> rdi single-def
+; V03 loc1 [V03,T06] ( 2, 2 ) ref -> rbx class-hnd single-def <ubyte[]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 3, 2 ) struct (16) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed <System.Numerics.BigInteger>
+; V05 tmp1 [V05,T02] ( 5, 3 ) struct (16) [rsp+0x50] do-not-enreg[HS] must-init hidden-struct-arg <System.Numerics.BigInteger>
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
-; V08 tmp4 [V08,T04] ( 2, 2 ) long -> rdx
+; V08 tmp4 [V08,T07] ( 2, 2 ) long -> rdx
; V09 tmp5 [V09 ] ( 2, 2 ) struct (16) [rsp+0x40] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "spilled call-like call argument" <System.Numerics.BigInteger>
-; V10 tmp6 [V10 ] ( 2, 4 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Numerics.BigInteger>
+; V10 tmp6 [V10 ] ( 4, 8 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Numerics.BigInteger>
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[] "field V01._bits (fldOffset=0x0)" P-DEP
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V01._sign (fldOffset=0x8)" P-DEP
-; V13 tmp9 [V13 ] ( 2, 4 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V10._bits (fldOffset=0x0)" P-DEP
-; V14 tmp10 [V14 ] ( 2, 4 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V10._sign (fldOffset=0x8)" P-DEP
-;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <System.Numerics.BigInteger>
-; V16 tmp12 [V16 ] ( 2, 2 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Numerics.BigInteger>
+; V13 tmp9 [V13 ] ( 3, 5 ) ref -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V10._bits (fldOffset=0x0)" P-DEP
+; V14 tmp10 [V14 ] ( 3, 5 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V10._sign (fldOffset=0x8)" P-DEP
+; V15 tmp11 [V15,T04] ( 3, 2 ) ref -> rcx "V05.[000..008)"
+; V16 tmp12 [V16,T05] ( 3, 2 ) int -> rdx "V05.[008..012)"
+;* V17 tmp13 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "Promoted implicit byref" <System.Numerics.BigInteger>
+; V18 tmp14 [V18 ] ( 2, 2 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Numerics.BigInteger>
;
; Lcl frame size = 96
@@ -72,19 +74,27 @@ G_M54633_IG05: ; bbWeight=0.50, isz, extend
call [<unknown method>]
; byrRegs -[rbx]
; gcr arg pop 0
+ mov rcx, gword ptr [rsp+0x50]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rsp+0x58]
jmp SHORT G_M54633_IG07
- ;; size=23 bbWeight=0.50 PerfScore 3.25
-G_M54633_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, nogc
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M54633_IG06: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs -[rcx]
; byrRegs +[rbx]
- movups xmm0, xmmword ptr [rbx]
- movups xmmword ptr [rsp+0x50], xmm0
- ;; size=8 bbWeight=0.50 PerfScore 2.50
-G_M54633_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, nogc
+ mov rcx, gword ptr [rbx]
+ ; gcrRegs +[rcx]
+ mov edx, dword ptr [rbx+0x08]
+ mov r8d, dword ptr [rbx+0x0C]
+ mov dword ptr [rsp+0x5C], r8d
+ ;; size=15 bbWeight=0.50 PerfScore 3.50
+G_M54633_IG07: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
- movups xmm0, xmmword ptr [rsp+0x50]
- movups xmmword ptr [rsp+0x30], xmm0
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M54633_IG08: ; bbWeight=1, extend
+ mov gword ptr [rsp+0x30], rcx
+ mov dword ptr [rsp+0x38], edx
+ mov ecx, dword ptr [rsp+0x5C]
+ ; gcrRegs -[rcx]
+ mov dword ptr [rsp+0x3C], ecx
lea rcx, [rsp+0x30]
mov edx, 1
mov r8d, 1
@@ -110,8 +120,8 @@ G_M54633_IG08: ; bbWeight=1, extend
; gcrRegs -[rcx rdx rbx rsi]
; gcr arg pop 0
nop
- ;; size=63 bbWeight=1 PerfScore 12.25
-G_M54633_IG09: ; bbWeight=1, epilog, nogc, extend
+ ;; size=80 bbWeight=1 PerfScore 16.25
+G_M54633_IG08: ; bbWeight=1, epilog, nogc, extend
add rsp, 96
pop rbx
pop rsi
@@ -119,7 +129,7 @@ G_M54633_IG09: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 190, prolog size 30, PerfScore 46.46, instruction count 51, allocated bytes for code 190 (MethodHash=68a92a96) for method System.Formats.Cbor.CborWriter:WriteBigInteger(System.Numerics.BigInteger):this (FullOpts)
+; Total bytes of code 213, prolog size 30, PerfScore 48.46, instruction count 57, allocated bytes for code 213 (MethodHash=68a92a96) for method System.Formats.Cbor.CborWriter:WriteBigInteger(System.Numerics.BigInteger):this (FullOpts)
; ============================================================
Unwind Info:
+49 (+15.51%) : 261701.dasm - System.Threading.Channels.ChannelWriter`1[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
@@ -8,50 +8,52 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 5, 5 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.Channels.ChannelWriter`1[System.__Canon]>
-; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> [rbp+0x18] EH-live single-def
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> rsi class-hnd single-def <System.__Canon>
+; V00 this [V00,T01] ( 5, 5 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Threading.Channels.ChannelWriter`1[System.__Canon]>
+; V01 RetBuf [V01,T02] ( 4, 4 ) byref -> [rbp+0x18] EH-live single-def
+; V02 arg1 [V02,T03] ( 4, 4 ) ref -> rsi class-hnd single-def <System.__Canon>
; V03 arg2 [V03 ] ( 6, 6 ) struct ( 8) [rbp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
-; V04 loc0 [V04 ] ( 4, 3 ) struct (16) [rbp-0x38] do-not-enreg[SB] must-init ld-addr-op <System.Threading.Tasks.ValueTask>
+; V04 loc0 [V04 ] ( 7, 6 ) struct (16) [rbp-0x40] do-not-enreg[SB] must-init ld-addr-op <System.Threading.Tasks.ValueTask>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 3, 6 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
-; V07 tmp2 [V07 ] ( 4, 4 ) struct (16) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed <System.Threading.Tasks.ValueTask>
-; V08 tmp3 [V08,T09] ( 2, 0 ) ref -> rcx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V09 tmp4 [V09 ] ( 3, 0 ) struct (16) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
+; V06 tmp1 [V06 ] ( 6, 12 ) struct (16) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
+; V07 tmp2 [V07,T00] ( 7, 7 ) struct (16) [rbp-0x60] do-not-enreg[HS] must-init hidden-struct-arg <System.Threading.Tasks.ValueTask>
+; V08 tmp3 [V08,T13] ( 2, 0 ) ref -> rcx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V09 tmp4 [V09 ] ( 3, 0 ) struct (16) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Threading.Tasks.ValueTask>
; V10 tmp5 [V10 ] ( 6, 6 ) ref -> [rbp+0x28] do-not-enreg[X] addr-exposed single-def "field V03._source (fldOffset=0x0)" P-DEP
-; V11 tmp6 [V11,T05] ( 4, 3 ) ref -> [rbp-0x38] do-not-enreg[H] EH-live "field V04._obj (fldOffset=0x0)" P-DEP
-; V12 tmp7 [V12,T06] ( 4, 3 ) short -> [rbp-0x30] do-not-enreg[H] EH-live "field V04._token (fldOffset=0x8)" P-DEP
-; V13 tmp8 [V13,T07] ( 4, 3 ) ubyte -> [rbp-0x2E] do-not-enreg[H] EH-live "field V04._continueOnCapturedContext (fldOffset=0xa)" P-DEP
-; V14 tmp9 [V14 ] ( 3, 6 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V06._obj (fldOffset=0x0)" P-DEP
-; V15 tmp10 [V15 ] ( 3, 6 ) short -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V06._token (fldOffset=0x8)" P-DEP
-; V16 tmp11 [V16 ] ( 3, 6 ) ubyte -> [rbp-0x3E] do-not-enreg[X] addr-exposed "field V06._continueOnCapturedContext (fldOffset=0xa)" P-DEP
-; V17 tmp12 [V17 ] ( 3, 0 ) ref -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V09._obj (fldOffset=0x0)" P-DEP
-; V18 tmp13 [V18 ] ( 3, 0 ) short -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V09._token (fldOffset=0x8)" P-DEP
-; V19 tmp14 [V19 ] ( 3, 0 ) ubyte -> [rbp-0x5E] do-not-enreg[X] addr-exposed "field V09._continueOnCapturedContext (fldOffset=0xa)" P-DEP
-; V20 tmp15 [V20,T04] ( 2, 4 ) long -> rcx "argument with side effect"
-; V21 tmp16 [V21,T03] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V22 tmp17 [V22,T10] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V23 PSPSym [V23,T08] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[V] "PSPSym"
+; V11 tmp6 [V11,T04] ( 5, 4 ) ref -> [rbp-0x40] do-not-enreg[Z] EH-live "field V04._obj (fldOffset=0x0)" P-DEP
+; V12 tmp7 [V12,T05] ( 5, 4 ) short -> [rbp-0x38] do-not-enreg[Z] EH-live "field V04._token (fldOffset=0x8)" P-DEP
+; V13 tmp8 [V13,T06] ( 5, 4 ) ubyte -> [rbp-0x36] do-not-enreg[Z] EH-live "field V04._continueOnCapturedContext (fldOffset=0xa)" P-DEP
+; V14 tmp9 [V14 ] ( 4, 7 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V06._obj (fldOffset=0x0)" P-DEP
+; V15 tmp10 [V15 ] ( 4, 7 ) short -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V06._token (fldOffset=0x8)" P-DEP
+; V16 tmp11 [V16 ] ( 4, 7 ) ubyte -> [rbp-0x46] do-not-enreg[X] addr-exposed "field V06._continueOnCapturedContext (fldOffset=0xa)" P-DEP
+; V17 tmp12 [V17 ] ( 3, 0 ) ref -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V09._obj (fldOffset=0x0)" P-DEP
+; V18 tmp13 [V18 ] ( 3, 0 ) short -> [rbp-0x68] do-not-enreg[X] addr-exposed "field V09._token (fldOffset=0x8)" P-DEP
+; V19 tmp14 [V19 ] ( 3, 0 ) ubyte -> [rbp-0x66] do-not-enreg[X] addr-exposed "field V09._continueOnCapturedContext (fldOffset=0xa)" P-DEP
+; V20 tmp15 [V20,T07] ( 4, 4 ) ref -> rsi "V07.[000..008)"
+; V21 tmp16 [V21,T08] ( 4, 4 ) short -> rdi "V07.[008..010)"
+; V22 tmp17 [V22,T09] ( 4, 4 ) ubyte -> r15 "V07.[010..011)"
+; V23 tmp18 [V23,T11] ( 2, 4 ) long -> rcx "argument with side effect"
+; V24 tmp19 [V24,T10] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V25 tmp20 [V25,T14] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V26 PSPSym [V26,T12] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 112
+; Lcl frame size = 120
G_M40388_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbp
+ push r15
push r14
push rdi
push rsi
push rbx
- sub rsp, 112
- lea rbp, [rsp+0x90]
- xor eax, eax
- mov qword ptr [rbp-0x68], rax
+ sub rsp, 120
+ lea rbp, [rsp+0xA0]
xorps xmm4, xmm4
+ movaps xmmword ptr [rbp-0x70], xmm4
movaps xmmword ptr [rbp-0x60], xmm4
movaps xmmword ptr [rbp-0x50], xmm4
movaps xmmword ptr [rbp-0x40], xmm4
- mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x70], rsp
- mov qword ptr [rbp-0x28], rcx
+ mov qword ptr [rbp-0x80], rsp
+ mov qword ptr [rbp-0x30], rcx
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
mov bword ptr [rbp+0x18], rdx
@@ -63,8 +65,8 @@ G_M40388_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; byrRegs +[r14]
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=72 bbWeight=1 PerfScore 20.08
-G_M40388_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0048 {rbx rsi}, byrefRegs=4000 {r14}, gcvars, byref, isz
+ ;; size=68 bbWeight=1 PerfScore 20.83
+G_M40388_IG02: ; bbWeight=1, gcVars=0000000000000006 {V00 V01}, gcrefRegs=0048 {rbx rsi}, byrefRegs=4000 {r14}, gcvars, byref, isz
lea rcx, [rbp+0x28]
call [<unknown method>]
; gcr arg pop 0
@@ -81,7 +83,7 @@ G_M40388_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs
; gcr arg pop 0
test eax, eax
jne SHORT G_M40388_IG06
- lea rdx, [rbp-0x58]
+ lea rdx, [rbp-0x60]
mov rcx, rbx
; gcrRegs +[rcx]
mov r8, rsi
@@ -91,11 +93,16 @@ G_M40388_IG02: ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs
call [System.Threading.Channels.ChannelWriter`1[System.__Canon]:WriteAsyncCore(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this]
; gcrRegs -[rcx rsi r8-r9]
; gcr arg pop 0
+ mov rsi, gword ptr [rbp-0x60]
+ ; gcrRegs +[rsi]
+ movsx rdi, word ptr [rbp-0x58]
+ movzx r15, byte ptr [rbp-0x56]
jmp SHORT G_M40388_IG07
- ;; size=58 bbWeight=1 PerfScore 20.00
+ ;; size=72 bbWeight=1 PerfScore 25.00
G_M40388_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref
+ ; gcrRegs -[rsi]
xorps xmm0, xmm0
- movups xmmword ptr [rbp-0x48], xmm0
+ movups xmmword ptr [rbp-0x50], xmm0
mov rcx, qword ptr [rbx]
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
; gcr arg pop 0
@@ -107,95 +114,112 @@ G_M40388_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14},
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- lea rcx, [rbp-0x48]
+ lea rcx, [rbp-0x50]
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
- ;; size=42 bbWeight=1 PerfScore 14.33
+ mov rsi, gword ptr [rbp-0x50]
+ ; gcrRegs +[rsi]
+ movsx rdi, word ptr [rbp-0x48]
+ movzx r15, byte ptr [rbp-0x46]
+ ;; size=56 bbWeight=1 PerfScore 19.33
G_M40388_IG04: ; bbWeight=1, nogc, extend
- movups xmm0, xmmword ptr [rbp-0x48]
- movups xmmword ptr [rbp-0x58], xmm0
+ movups xmm0, xmmword ptr [rbp-0x50]
+ movups xmmword ptr [rbp-0x60], xmm0
;; size=8 bbWeight=1 PerfScore 4.00
G_M40388_IG05: ; bbWeight=1, isz, extend
jmp SHORT G_M40388_IG07
;; size=2 bbWeight=1 PerfScore 2.00
G_M40388_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref
+ ; gcrRegs -[rsi]
xorps xmm0, xmm0
- movups xmmword ptr [rbp-0x38], xmm0
+ movups xmmword ptr [rbp-0x40], xmm0
+ xor rsi, rsi
+ ; gcrRegs +[rsi]
+ xor edi, edi
+ xor r15d, r15d
xorps xmm0, xmm0
- movups xmmword ptr [rbp-0x58], xmm0
- ;; size=14 bbWeight=1 PerfScore 2.67
-G_M40388_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4000 {r14}, byref, nogc
- movups xmm0, xmmword ptr [rbp-0x58]
- movups xmmword ptr [rbp-0x38], xmm0
+ movups xmmword ptr [rbp-0x60], xmm0
+ ;; size=21 bbWeight=1 PerfScore 3.42
+G_M40388_IG07: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=4000 {r14}, byref, nogc
+ movups xmm0, xmmword ptr [rbp-0x60]
+ movups xmmword ptr [rbp-0x40], xmm0
;; size=8 bbWeight=1 PerfScore 4.00
-G_M40388_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
+G_M40388_IG08: ; bbWeight=1, extend
+ mov gword ptr [rbp-0x40], rsi
+ mov word ptr [rbp-0x38], di
+ mov byte ptr [rbp-0x36], r15b
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M40388_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi]
; byrRegs -[r14]
mov rdi, bword ptr [rbp+0x18]
; byrRegs +[rdi]
- lea rsi, bword ptr [rbp-0x38]
+ lea rsi, bword ptr [rbp-0x40]
; byrRegs +[rsi]
call [CORINFO_HELP_ASSIGN_BYREF]
movsq
mov rax, bword ptr [rbp+0x18]
; byrRegs +[rax]
;; size=20 bbWeight=1 PerfScore 6.50
-G_M40388_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 112
+G_M40388_IG10: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 120
pop rbx
pop rsi
pop rdi
pop r14
+ pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M40388_IG10: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+ ;; size=13 bbWeight=1 PerfScore 4.25
+G_M40388_IG11: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, funclet prolog, nogc
; gcrRegs +[rdx]
; byrRegs -[rax rsi rdi]
push rbp
+ push r15
push r14
push rdi
push rsi
push rbx
- sub rsp, 48
+ sub rsp, 40
mov rbp, qword ptr [rcx+0x20]
mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x90]
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M40388_IG11: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
+ lea rbp, [rbp+0xA0]
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M40388_IG12: ; bbWeight=0, gcVars=0000000000000006 {V00 V01}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
mov rcx, rdx
; gcrRegs +[rcx]
xorps xmm0, xmm0
- movups xmmword ptr [rbp-0x68], xmm0
+ movups xmmword ptr [rbp-0x70], xmm0
call [<unknown method>]
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- lea rcx, [rbp-0x68]
+ lea rcx, [rbp-0x70]
call [<unknown method>]
; gcrRegs -[rax rdx]
; gcr arg pop 0
;; size=29 bbWeight=0 PerfScore 0.00
-G_M40388_IG12: ; bbWeight=0, nogc, extend
- movups xmm0, xmmword ptr [rbp-0x68]
- movups xmmword ptr [rbp-0x38], xmm0
+G_M40388_IG13: ; bbWeight=0, nogc, extend
+ movups xmm0, xmmword ptr [rbp-0x70]
+ movups xmmword ptr [rbp-0x40], xmm0
;; size=8 bbWeight=0 PerfScore 0.00
-G_M40388_IG13: ; bbWeight=0, extend
- lea rax, G_M40388_IG08
+G_M40388_IG14: ; bbWeight=0, extend
+ lea rax, G_M40388_IG09
;; size=7 bbWeight=0 PerfScore 0.00
-G_M40388_IG14: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 48
+G_M40388_IG15: ; bbWeight=0, funclet epilog, nogc, extend
...
libraries.pmi.windows.x64.checked.mch
-42 (-38.89%) : 293711.dasm - System.Numerics.Tensors.TensorPrimitives+LogBaseOperator`1[double]:Invoke(System.Runtime.Intrinsics.Vector256`1[double],System.Runtime.Intrinsics.Vector256`1[double]):System.Runtime.Intrinsics.Vector256`1[double] (FullOpts)
@@ -12,58 +12,52 @@
; V01 arg0 [V01,T00] ( 3, 6 ) byref -> rdx single-def
; V02 arg1 [V02,T01] ( 3, 6 ) byref -> rbx single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 4 ) simd32 -> mm6 "impAppendStmt"
+;* V04 tmp1 [V04 ] ( 0, 0 ) simd32 -> zero-ref "impAppendStmt"
;* V05 tmp2 [V05 ] ( 0, 0 ) simd32 -> zero-ref "spilled call-like call argument"
;* V06 tmp3 [V06 ] ( 0, 0 ) simd32 -> zero-ref "spilled call-like call argument"
-; V07 tmp4 [V07 ] ( 2, 2 ) simd32 -> [rsp+0x40] do-not-enreg[XS] addr-exposed "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]>
+; V07 tmp4 [V07,T03] ( 2, 2 ) simd32 -> [rsp+0x40] do-not-enreg[HS] hidden-struct-arg "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]>
;* V08 tmp5 [V08 ] ( 0, 0 ) simd32 -> zero-ref "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]>
;* V09 tmp6 [V09 ] ( 0, 0 ) simd32 -> zero-ref "spilled call-like call argument"
-; V10 tmp7 [V10 ] ( 2, 2 ) simd32 -> [rsp+0x20] do-not-enreg[XS] addr-exposed "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]>
+; V10 tmp7 [V10,T04] ( 2, 2 ) simd32 -> [rsp+0x20] do-not-enreg[HS] hidden-struct-arg "Inline return value spill temp" <System.Runtime.Intrinsics.Vector256`1[double]>
;
-; Lcl frame size = 136
+; Lcl frame size = 104
G_M63676_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rsi
push rbx
- sub rsp, 136
- vmovaps xmmword ptr [rsp+0x70], xmm6
- vmovaps xmmword ptr [rsp+0x60], xmm7
+ sub rsp, 104
mov rsi, rcx
; byrRegs +[rsi]
mov rbx, r8
; byrRegs +[rbx]
- ;; size=27 bbWeight=1 PerfScore 6.75
+ ;; size=12 bbWeight=1 PerfScore 2.75
G_M63676_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=004C {rdx rbx rsi}, byref
; byrRegs +[rdx]
lea rcx, [rsp+0x40]
call [<unknown method>]
; byrRegs -[rdx]
; gcr arg pop 0
- vmovups ymm6, ymmword ptr [rsp+0x40]
lea rcx, [rsp+0x20]
mov rdx, rbx
; byrRegs +[rdx]
- vextractf128 xmm7, ymm6, 1
call [<unknown method>]
; byrRegs -[rdx rbx]
; gcr arg pop 0
- vinsertf128 ymm6, ymm6, xmm7, 1
- vdivpd ymm0, ymm6, ymmword ptr [rsp+0x20]
+ vmovups ymm0, ymmword ptr [rsp+0x40]
+ vdivpd ymm0, ymm0, ymmword ptr [rsp+0x20]
vmovups ymmword ptr [rsi], ymm0
mov rax, rsi
; byrRegs +[rax]
- ;; size=56 bbWeight=1 PerfScore 31.50
+ ;; size=44 bbWeight=1 PerfScore 27.50
G_M63676_IG03: ; bbWeight=1, epilog, nogc, extend
vzeroupper
- vmovaps xmm6, xmmword ptr [rsp+0x70]
- vmovaps xmm7, xmmword ptr [rsp+0x60]
- add rsp, 136
+ add rsp, 104
pop rbx
pop rsi
ret
- ;; size=25 bbWeight=1 PerfScore 11.25
+ ;; size=10 bbWeight=1 PerfScore 3.25
-; Total bytes of code 108, prolog size 21, PerfScore 49.50, instruction count 25, allocated bytes for code 108 (MethodHash=d2500743) for method System.Numerics.Tensors.TensorPrimitives+LogBaseOperator`1[double]:Invoke(System.Runtime.Intrinsics.Vector256`1[double],System.Runtime.Intrinsics.Vector256`1[double]):System.Runtime.Intrinsics.Vector256`1[double] (FullOpts)
+; Total bytes of code 66, prolog size 6, PerfScore 33.50, instruction count 19, allocated bytes for code 66 (MethodHash=d2500743) for method System.Numerics.Tensors.TensorPrimitives+LogBaseOperator`1[double]:Invoke(System.Runtime.Intrinsics.Vector256`1[double],System.Runtime.Intrinsics.Vector256`1[double]):System.Runtime.Intrinsics.Vector256`1[double] (FullOpts)
; ============================================================
Unwind Info:
@@ -71,16 +65,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x15
- CountOfUnwindCodes: 8
+ SizeOfProlog : 0x06
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x15 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
- Scaled Small Offset: 6 * 16 = 96 = 0x00060
- CodeOffset: 0x0F UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
- Scaled Small Offset: 7 * 16 = 112 = 0x00070
- CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 17 * 8 = 136 = 0x00088
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 12 * 8 + 8 = 104 = 0x68
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-46 (-34.07%) : 139603.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
@@ -10,32 +10,29 @@
; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriver>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> r9 class-hnd single-def <Microsoft.CodeAnalysis.Compilation>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V03 loc0 [V03 ] ( 2, 2 ) struct (80) [rsp+0x80] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.GeneratorDriverState>
+; V03 loc0 [V03 ] ( 2, 2 ) struct (80) [rsp+0x30] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <Microsoft.CodeAnalysis.GeneratorDriverState>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T02] ( 2, 2 ) ref -> r8 single-def "field V02._source (fldOffset=0x0)" P-INDEP
-; V06 tmp2 [V06 ] ( 2, 4 ) struct (80) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.GeneratorDriverState>
;
-; Lcl frame size = 208
+; Lcl frame size = 128
G_M23079_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 208
+ sub rsp, 128
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x30], ymm4
vmovdqu ymmword ptr [rsp+0x50], ymm4
- vmovdqu ymmword ptr [rsp+0x70], ymm4
- vmovdqu ymmword ptr [rsp+0x90], ymm4
- vmovdqu ymmword ptr [rsp+0xB0], ymm4
+ vmovdqa xmmword ptr [rsp+0x70], xmm4
mov rbx, rcx
; gcrRegs +[rbx]
mov r9, rdx
; gcrRegs +[r9]
- ;; size=54 bbWeight=1 PerfScore 12.08
+ ;; size=36 bbWeight=1 PerfScore 8.08
G_M23079_IG02: ; bbWeight=1, gcrefRegs=0308 {rbx r8 r9}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
mov gword ptr [rsp+0x20], r8
; gcr arg write
- lea rdx, [rsp+0x80]
+ lea rdx, [rsp+0x30]
mov rcx, rbx
; gcrRegs +[rcx]
mov r8, r9
@@ -43,13 +40,6 @@ G_M23079_IG02: ; bbWeight=1, gcrefRegs=0308 {rbx r8 r9}, byrefRegs=0000 {
call [<unknown method>]
; gcrRegs -[rcx r8-r9]
; gcr arg pop 0
- lea rcx, bword ptr [rsp+0x30]
- ; byrRegs +[rcx]
- lea rdx, [rsp+0x80]
- mov r8d, 80
- call [CORINFO_HELP_BULK_WRITEBARRIER]
- ; byrRegs -[rcx]
- ; gcr arg pop 0
lea rdx, [rsp+0x30]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -59,14 +49,14 @@ G_M23079_IG02: ; bbWeight=1, gcrefRegs=0308 {rbx r8 r9}, byrefRegs=0000 {
; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0
nop
- ;; size=72 bbWeight=1 PerfScore 17.50
+ ;; size=44 bbWeight=1 PerfScore 13.25
G_M23079_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 208
+ add rsp, 128
pop rbx
ret
;; size=9 bbWeight=1 PerfScore 1.75
-; Total bytes of code 135, prolog size 48, PerfScore 31.33, instruction count 29, allocated bytes for code 135 (MethodHash=0fc5a5d8) for method Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
+; Total bytes of code 89, prolog size 30, PerfScore 23.08, instruction count 23, allocated bytes for code 89 (MethodHash=0fc5a5d8) for method Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
; ============================================================
Unwind Info:
@@ -75,10 +65,9 @@ Unwind Info:
Version : 1
Flags : 0x00
SizeOfProlog : 0x08
- CountOfUnwindCodes: 3
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 26 * 8 = 208 = 0x000D0
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-12 (-26.67%) : 250801.dasm - System.CommandLine.Help.HelpBuilder:g__IsOptional|16_0(System.CommandLine.CliArgument):ubyte (FullOpts)
@@ -9,17 +9,14 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd single-def <System.CommandLine.CliArgument>
-; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.CommandLine.ArgumentArity>
+; V01 loc0 [V01,T01] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[HS] hidden-struct-arg ld-addr-op <System.CommandLine.ArgumentArity>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 56
G_M2446_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 56
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rax
- ;; size=16 bbWeight=1 PerfScore 2.50
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M2446_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
lea rdx, [rsp+0x28]
@@ -36,7 +33,7 @@ G_M2446_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 45, prolog size 16, PerfScore 13.50, instruction count 12, allocated bytes for code 45 (MethodHash=dfa0f671) for method System.CommandLine.Help.HelpBuilder:<FormatArgumentUsage>g__IsOptional|16_0(System.CommandLine.CliArgument):ubyte (FullOpts)
+; Total bytes of code 33, prolog size 4, PerfScore 11.25, instruction count 9, allocated bytes for code 33 (MethodHash=dfa0f671) for method System.CommandLine.Help.HelpBuilder:<FormatArgumentUsage>g__IsOptional|16_0(System.CommandLine.CliArgument):ubyte (FullOpts)
; ============================================================
Unwind Info:
+38 (+19.39%) : 276211.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (FullOpts)
@@ -9,55 +9,57 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Reflection.Metadata.TypeName>
-; V01 arg1 [V01,T01] ( 3, 3 ) int -> rsi single-def
-; V02 loc0 [V02 ] ( 5, 5 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ushort]>
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def
+; V02 loc0 [V02,T11] ( 3, 3 ) struct (16) [rsp+0x40] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ArraySegment`1[ushort]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp4 [V07,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
+; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
-;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
+; V09 tmp6 [V09 ] ( 11, 12 ) struct (16) [rsp+0x30] do-not-enreg[SF] must-init ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ushort[]>
;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V15 tmp12 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp13 [V16,T06] ( 2, 4 ) int -> rsi "Inlining Arg"
-; V17 tmp14 [V17,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V16 tmp13 [V16,T07] ( 2, 4 ) int -> rdi "Inlining Arg"
+; V17 tmp14 [V17,T04] ( 2, 4 ) byref -> rsi single-def "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp17 [V20 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V24 tmp21 [V24,T07] ( 4, 3 ) ref -> rcx single-def "field V09._array (fldOffset=0x0)" P-INDEP
-; V25 tmp22 [V25,T08] ( 4, 2 ) int -> rbx single-def "field V09._offset (fldOffset=0x8)" P-INDEP
-; V26 tmp23 [V26,T09] ( 4, 2 ) int -> rsi single-def "field V09._count (fldOffset=0xc)" P-INDEP
-; V27 tmp24 [V27,T12] ( 3, 1.50) byref -> rdi "field V12._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp25 [V28,T13] ( 3, 1.50) int -> rsi "field V12._length (fldOffset=0x8)" P-INDEP
+; V24 tmp21 [V24,T01] ( 5, 5 ) ref -> [rsp+0x30] do-not-enreg[] single-def "field V09._array (fldOffset=0x0)" P-DEP
+; V25 tmp22 [V25,T08] ( 4, 3 ) int -> [rsp+0x38] do-not-enreg[] "field V09._offset (fldOffset=0x8)" P-DEP
+; V26 tmp23 [V26,T09] ( 4, 3 ) int -> [rsp+0x3C] do-not-enreg[] "field V09._count (fldOffset=0xc)" P-DEP
+; V27 tmp24 [V27,T14] ( 3, 1.50) byref -> rsi "field V12._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp25 [V28,T15] ( 3, 1.50) int -> rdi "field V12._length (fldOffset=0x8)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref single-def "field V14._length (fldOffset=0x8)" P-INDEP
-; V31 tmp28 [V31,T10] ( 2, 2 ) byref -> rdi single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp29 [V32,T11] ( 2, 2 ) int -> rsi single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V33 tmp30 [V33,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V34 tmp31 [V34,T05] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V35 tmp32 [V35 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V31 tmp28 [V31,T12] ( 2, 2 ) byref -> rsi single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp29 [V32,T13] ( 2, 2 ) int -> rdi single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V33 tmp30 [V33,T10] ( 3, 3 ) ref -> rbx single-def "V02.[000..008)"
+; V34 tmp31 [V34,T05] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
+; V35 tmp32 [V35,T06] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
+; V36 tmp33 [V36 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M6715_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
+ sub rsp, 80
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, edx
- ;; size=22 bbWeight=1 PerfScore 6.08
+ ;; size=28 bbWeight=1 PerfScore 8.08
G_M6715_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -77,79 +79,88 @@ G_M6715_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs +[r8]
mov rdx, rdi
; gcrRegs +[rdx]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x40]
mov r9d, esi
call [<unknown method>]
; gcrRegs -[rax rdx rdi r8]
; gcr arg pop 0
+ mov rbx, gword ptr [rsp+0x40]
+ ; gcrRegs +[rbx]
+ mov gword ptr [rsp+0x30], rbx
+ mov rcx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x38], rcx
+ cmp gword ptr [rsp+0x30], 0
+ je SHORT G_M6715_IG06
+ ;; size=74 bbWeight=1 PerfScore 25.75
+G_M6715_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x38]
+ mov edx, dword ptr [rsp+0x3C]
+ add rcx, rdx
+ mov rdx, gword ptr [rsp+0x30]
+ ; gcrRegs +[rdx]
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
+ cmp rcx, rdx
+ ja SHORT G_M6715_IG07
mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
- mov ebx, dword ptr [rsp+0x38]
- mov esi, dword ptr [rsp+0x3C]
- test rcx, rcx
- je SHORT G_M6715_IG06
- ;; size=64 bbWeight=1 PerfScore 23.00
-G_M6715_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov edx, ebx
- mov r8d, esi
- add rdx, r8
- mov r8d, dword ptr [rcx+0x08]
- cmp rdx, r8
- ja SHORT G_M6715_IG07
- mov edx, ebx
- lea rdi, bword ptr [rcx+2*rdx+0x10]
- ; byrRegs +[rdi]
- ;; size=24 bbWeight=0.50 PerfScore 2.62
-G_M6715_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov edx, dword ptr [rsp+0x38]
+ lea rsi, bword ptr [rcx+2*rdx+0x10]
+ ; byrRegs +[rsi]
+ mov edi, dword ptr [rsp+0x3C]
+ ;; size=42 bbWeight=0.50 PerfScore 5.25
+G_M6715_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
- mov bword ptr [rsp+0x20], rdi
- mov dword ptr [rsp+0x28], esi
+ mov bword ptr [rsp+0x20], rsi
+ mov dword ptr [rsp+0x28], edi
lea rcx, [rsp+0x20]
mov edx, 1
xor r8, r8
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[r8] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rsi]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, rbx
; gcrRegs +[rdx]
xor r8d, r8d
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=61 bbWeight=1 PerfScore 13.00
+ ;; size=59 bbWeight=1 PerfScore 12.25
G_M6715_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M6715_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rbx]
- or ebx, esi
+G_M6715_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov eax, dword ptr [rsp+0x38]
+ or eax, dword ptr [rsp+0x3C]
jne SHORT G_M6715_IG07
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor esi, esi
+ xor rsi, rsi
+ ; byrRegs +[rsi]
+ xor edi, edi
jmp SHORT G_M6715_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M6715_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 17, PerfScore 47.46, instruction count 58, allocated bytes for code 196 (MethodHash=48a4e5c4) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (FullOpts)
+; Total bytes of code 234, prolog size 23, PerfScore 54.08, instruction count 64, allocated bytes for code 234 (MethodHash=48a4e5c4) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (FullOpts)
; ============================================================
Unwind Info:
@@ -162,7 +173,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+38 (+20.65%) : 276210.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (FullOpts)
@@ -9,51 +9,53 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 3, 3 ) int -> rbx single-def
-; V02 loc0 [V02 ] ( 5, 5 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ushort]>
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> rbx single-def
+; V02 loc0 [V02,T10] ( 3, 3 ) struct (16) [rsp+0x40] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ArraySegment`1[ushort]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp3 [V06,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
+; V06 tmp3 [V06,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
-;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
+; V08 tmp5 [V08 ] ( 11, 12 ) struct (16) [rsp+0x30] do-not-enreg[SF] must-init ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ushort[]>
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V15 tmp12 [V15,T05] ( 2, 4 ) int -> rsi "Inlining Arg"
-; V16 tmp13 [V16,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V15 tmp12 [V15,T06] ( 2, 4 ) int -> rdi "Inlining Arg"
+; V16 tmp13 [V16,T04] ( 2, 4 ) byref -> rsi single-def "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V23 tmp20 [V23,T06] ( 4, 3 ) ref -> rcx single-def "field V08._array (fldOffset=0x0)" P-INDEP
-; V24 tmp21 [V24,T07] ( 4, 2 ) int -> rbx single-def "field V08._offset (fldOffset=0x8)" P-INDEP
-; V25 tmp22 [V25,T08] ( 4, 2 ) int -> rsi single-def "field V08._count (fldOffset=0xc)" P-INDEP
-; V26 tmp23 [V26,T11] ( 3, 1.50) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T12] ( 3, 1.50) int -> rsi "field V11._length (fldOffset=0x8)" P-INDEP
+; V23 tmp20 [V23,T01] ( 5, 5 ) ref -> [rsp+0x30] do-not-enreg[] single-def "field V08._array (fldOffset=0x0)" P-DEP
+; V24 tmp21 [V24,T07] ( 4, 3 ) int -> [rsp+0x38] do-not-enreg[] "field V08._offset (fldOffset=0x8)" P-DEP
+; V25 tmp22 [V25,T08] ( 4, 3 ) int -> [rsp+0x3C] do-not-enreg[] "field V08._count (fldOffset=0xc)" P-DEP
+; V26 tmp23 [V26,T13] ( 3, 1.50) byref -> rsi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp24 [V27,T14] ( 3, 1.50) int -> rdi "field V11._length (fldOffset=0x8)" P-INDEP
;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T09] ( 2, 2 ) byref -> rdi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T10] ( 2, 2 ) int -> rsi single-def "field V14._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V33 tmp30 [V33 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V30 tmp27 [V30,T11] ( 2, 2 ) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp28 [V31,T12] ( 2, 2 ) int -> rdi single-def "field V14._length (fldOffset=0x8)" P-INDEP
+; V32 tmp29 [V32,T09] ( 3, 3 ) ref -> rbx single-def "V02.[000..008)"
+; V33 tmp30 [V33,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V34 tmp31 [V34 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M9354_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
+ sub rsp, 80
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
mov ebx, edx
- ;; size=19 bbWeight=1 PerfScore 5.83
+ ;; size=25 bbWeight=1 PerfScore 7.83
G_M9354_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -63,81 +65,90 @@ G_M9354_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x40]
mov r9d, ebx
mov r8, 0xD1FFAB1E
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[rax rdx r8]
; gcr arg pop 0
+ mov rbx, gword ptr [rsp+0x40]
+ ; gcrRegs +[rbx]
+ mov gword ptr [rsp+0x30], rbx
+ mov rcx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x38], rcx
+ cmp gword ptr [rsp+0x30], 0
+ je SHORT G_M9354_IG06
+ ;; size=65 bbWeight=1 PerfScore 18.25
+G_M9354_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x38]
+ mov edx, dword ptr [rsp+0x3C]
+ add rcx, rdx
+ mov rdx, gword ptr [rsp+0x30]
+ ; gcrRegs +[rdx]
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
+ cmp rcx, rdx
+ ja SHORT G_M9354_IG07
mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
- mov ebx, dword ptr [rsp+0x38]
- mov esi, dword ptr [rsp+0x3C]
- test rcx, rcx
- je SHORT G_M9354_IG06
- ;; size=55 bbWeight=1 PerfScore 15.50
-G_M9354_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov edx, ebx
- mov r8d, esi
- add rdx, r8
- mov r8d, dword ptr [rcx+0x08]
- cmp rdx, r8
- ja SHORT G_M9354_IG07
- mov edx, ebx
- lea rdi, bword ptr [rcx+2*rdx+0x10]
- ; byrRegs +[rdi]
- ;; size=24 bbWeight=0.50 PerfScore 2.62
-G_M9354_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov edx, dword ptr [rsp+0x38]
+ lea rsi, bword ptr [rcx+2*rdx+0x10]
+ ; byrRegs +[rsi]
+ mov edi, dword ptr [rsp+0x3C]
+ ;; size=42 bbWeight=0.50 PerfScore 5.25
+G_M9354_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
- mov bword ptr [rsp+0x20], rdi
- mov dword ptr [rsp+0x28], esi
+ mov bword ptr [rsp+0x20], rsi
+ mov dword ptr [rsp+0x28], edi
lea rcx, [rsp+0x20]
mov edx, 1
xor r8, r8
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[r8] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rsi]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, rbx
; gcrRegs +[rdx]
xor r8d, r8d
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=61 bbWeight=1 PerfScore 13.00
+ ;; size=59 bbWeight=1 PerfScore 12.25
G_M9354_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M9354_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rbx]
- or ebx, esi
+G_M9354_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov eax, dword ptr [rsp+0x38]
+ or eax, dword ptr [rsp+0x3C]
jne SHORT G_M9354_IG07
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor esi, esi
+ xor rsi, rsi
+ ; byrRegs +[rsi]
+ xor edi, edi
jmp SHORT G_M9354_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M9354_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 17, PerfScore 39.71, instruction count 53, allocated bytes for code 184 (MethodHash=2c99db75) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (FullOpts)
+; Total bytes of code 222, prolog size 23, PerfScore 46.33, instruction count 59, allocated bytes for code 222 (MethodHash=2c99db75) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (FullOpts)
; ============================================================
Unwind Info:
@@ -150,7 +161,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+38 (+21.59%) : 276209.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:WithAssemblyName(System.Reflection.Metadata.TypeName,System.String):System.Reflection.Metadata.TypeName (FullOpts)
@@ -8,53 +8,55 @@
; 1 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Metadata.TypeName>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.String>
-; V02 loc0 [V02 ] ( 5, 5 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ushort]>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Metadata.TypeName>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.String>
+; V02 loc0 [V02,T10] ( 3, 3 ) struct (16) [rsp+0x40] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ArraySegment`1[ushort]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp3 [V06,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
+; V06 tmp3 [V06,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
-;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
+; V08 tmp5 [V08 ] ( 11, 12 ) struct (16) [rsp+0x30] do-not-enreg[SF] must-init ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ushort[]>
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V15 tmp12 [V15,T05] ( 2, 4 ) int -> rsi "Inlining Arg"
-; V16 tmp13 [V16,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V15 tmp12 [V15,T06] ( 2, 4 ) int -> rdi "Inlining Arg"
+; V16 tmp13 [V16,T04] ( 2, 4 ) byref -> rsi single-def "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V23 tmp20 [V23,T06] ( 4, 3 ) ref -> rcx single-def "field V08._array (fldOffset=0x0)" P-INDEP
-; V24 tmp21 [V24,T07] ( 4, 2 ) int -> rbx single-def "field V08._offset (fldOffset=0x8)" P-INDEP
-; V25 tmp22 [V25,T08] ( 4, 2 ) int -> rsi single-def "field V08._count (fldOffset=0xc)" P-INDEP
-; V26 tmp23 [V26,T11] ( 3, 1.50) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T12] ( 3, 1.50) int -> rsi "field V11._length (fldOffset=0x8)" P-INDEP
+; V23 tmp20 [V23,T00] ( 5, 5 ) ref -> [rsp+0x30] do-not-enreg[] single-def "field V08._array (fldOffset=0x0)" P-DEP
+; V24 tmp21 [V24,T07] ( 4, 3 ) int -> [rsp+0x38] do-not-enreg[] "field V08._offset (fldOffset=0x8)" P-DEP
+; V25 tmp22 [V25,T08] ( 4, 3 ) int -> [rsp+0x3C] do-not-enreg[] "field V08._count (fldOffset=0xc)" P-DEP
+; V26 tmp23 [V26,T13] ( 3, 1.50) byref -> rsi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp24 [V27,T14] ( 3, 1.50) int -> rdi "field V11._length (fldOffset=0x8)" P-INDEP
;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T09] ( 2, 2 ) byref -> rdi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T10] ( 2, 2 ) int -> rsi single-def "field V14._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V33 tmp30 [V33 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V30 tmp27 [V30,T11] ( 2, 2 ) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp28 [V31,T12] ( 2, 2 ) int -> rdi single-def "field V14._length (fldOffset=0x8)" P-INDEP
+; V32 tmp29 [V32,T09] ( 3, 3 ) ref -> rbx single-def "V02.[000..008)"
+; V33 tmp30 [V33,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V34 tmp31 [V34 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M2877_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
+ sub rsp, 80
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.83
+ ;; size=26 bbWeight=1 PerfScore 7.83
G_M2877_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -63,81 +65,90 @@ G_M2877_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x40]
mov r8, rbx
; gcrRegs +[r8]
xor r9d, r9d
call [<unknown method>]
; gcrRegs -[rax rdx rbx r8]
; gcr arg pop 0
+ mov rbx, gword ptr [rsp+0x40]
+ ; gcrRegs +[rbx]
+ mov gword ptr [rsp+0x30], rbx
+ mov rcx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x38], rcx
+ cmp gword ptr [rsp+0x30], 0
+ je SHORT G_M2877_IG06
+ ;; size=56 bbWeight=1 PerfScore 17.25
+G_M2877_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x38]
+ mov edx, dword ptr [rsp+0x3C]
+ add rcx, rdx
+ mov rdx, gword ptr [rsp+0x30]
+ ; gcrRegs +[rdx]
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
+ cmp rcx, rdx
+ ja SHORT G_M2877_IG07
mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
- mov ebx, dword ptr [rsp+0x38]
- mov esi, dword ptr [rsp+0x3C]
- test rcx, rcx
- je SHORT G_M2877_IG06
- ;; size=46 bbWeight=1 PerfScore 14.50
-G_M2877_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov edx, ebx
- mov r8d, esi
- add rdx, r8
- mov r8d, dword ptr [rcx+0x08]
- cmp rdx, r8
- ja SHORT G_M2877_IG07
- mov edx, ebx
- lea rdi, bword ptr [rcx+2*rdx+0x10]
- ; byrRegs +[rdi]
- ;; size=24 bbWeight=0.50 PerfScore 2.62
-G_M2877_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov edx, dword ptr [rsp+0x38]
+ lea rsi, bword ptr [rcx+2*rdx+0x10]
+ ; byrRegs +[rsi]
+ mov edi, dword ptr [rsp+0x3C]
+ ;; size=42 bbWeight=0.50 PerfScore 5.25
+G_M2877_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
- mov bword ptr [rsp+0x20], rdi
- mov dword ptr [rsp+0x28], esi
+ mov bword ptr [rsp+0x20], rsi
+ mov dword ptr [rsp+0x28], edi
lea rcx, [rsp+0x20]
mov edx, 1
xor r8, r8
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[r8] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rsi]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, rbx
; gcrRegs +[rdx]
xor r8d, r8d
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=61 bbWeight=1 PerfScore 13.00
+ ;; size=59 bbWeight=1 PerfScore 12.25
G_M2877_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M2877_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rbx]
- or ebx, esi
+G_M2877_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov eax, dword ptr [rsp+0x38]
+ or eax, dword ptr [rsp+0x3C]
jne SHORT G_M2877_IG07
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor esi, esi
+ xor rsi, rsi
+ ; byrRegs +[rsi]
+ xor edi, edi
jmp SHORT G_M2877_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M2877_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 17, PerfScore 38.71, instruction count 52, allocated bytes for code 176 (MethodHash=1ac7f4c2) for method System.Formats.Nrbf.Utils.TypeNameExtensions:WithAssemblyName(System.Reflection.Metadata.TypeName,System.String):System.Reflection.Metadata.TypeName (FullOpts)
+; Total bytes of code 214, prolog size 23, PerfScore 45.33, instruction count 58, allocated bytes for code 214 (MethodHash=1ac7f4c2) for method System.Formats.Nrbf.Utils.TypeNameExtensions:WithAssemblyName(System.Reflection.Metadata.TypeName,System.String):System.Reflection.Metadata.TypeName (FullOpts)
; ============================================================
Unwind Info:
@@ -150,7 +161,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
libraries_tests.run.windows.x64.Release.mch
-21 (-24.42%) : 674631.dasm - Microsoft.Cci.MetadataWriter+<>c:b__257_0(Microsoft.Cci.ILocalDefinition):ubyte:this (Tier1)
@@ -9,52 +9,50 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.Cci.MetadataWriter+<>c>
; V01 arg1 [V01,T00] ( 5, 3.50) ref -> rcx class-hnd single-def <Microsoft.Cci.ILocalDefinition>
-; V02 loc0 [V02 ] ( 3, 1.50) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo>
+; V02 loc0 [V02,T02] ( 2, 0 ) struct (16) [rsp+0x20] do-not-enreg[HS] hidden-struct-arg ld-addr-op <Microsoft.CodeAnalysis.CodeGen.LocalSlotDebugInfo>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CodeGen.LocalDefinition>
+; V05 tmp2 [V05,T01] ( 3, 1.50) int -> rbx "V02.[008..012)"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M15405_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rax
+ push rbx
+ sub rsp, 48
mov rcx, rdx
; gcrRegs +[rcx]
- ;; size=19 bbWeight=1 PerfScore 2.75
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M15405_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CodeGen.LocalDefinition
cmp qword ptr [rcx], rax
jne SHORT G_M15405_IG06
;; size=15 bbWeight=1 PerfScore 4.25
G_M15405_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov rax, qword ptr [rcx+0x2C]
- mov qword ptr [rsp+0x28], rax
- mov eax, dword ptr [rcx+0x34]
- mov dword ptr [rsp+0x30], eax
- ;; size=16 bbWeight=0.50 PerfScore 3.00
+ mov ebx, dword ptr [rcx+0x34]
+ ;; size=3 bbWeight=0.50 PerfScore 1.00
G_M15405_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
- cmp dword ptr [rsp+0x30], -1
+ cmp ebx, -1
setne al
movzx rax, al
- ;; size=11 bbWeight=1 PerfScore 3.25
+ ;; size=9 bbWeight=1 PerfScore 1.50
G_M15405_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ add rsp, 48
+ pop rbx
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
G_M15405_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
- lea rdx, [rsp+0x28]
+ lea rdx, [rsp+0x20]
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
+ mov ebx, dword ptr [rsp+0x28]
jmp SHORT G_M15405_IG04
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 86, prolog size 16, PerfScore 14.50, instruction count 21, allocated bytes for code 86 (MethodHash=0343c3d2) for method Microsoft.Cci.MetadataWriter+<>c:<GetLocalSlotDebugInfos>b__257_0(Microsoft.Cci.ILocalDefinition):ubyte:this (Tier1)
+; Total bytes of code 65, prolog size 5, PerfScore 10.00, instruction count 18, allocated bytes for code 65 (MethodHash=0343c3d2) for method Microsoft.Cci.MetadataWriter+<>c:<GetLocalSlotDebugInfos>b__257_0(Microsoft.Cci.ILocalDefinition):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -62,9 +60,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-27 (-20.77%) : 670567.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
@@ -10,28 +10,26 @@
;
; V00 this [V00,T00] ( 6, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol>
; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> rbp single-def
-; V02 loc0 [V02 ] ( 2, 0 ) struct (24) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V02 loc0 [V02 ] ( 2, 0 ) struct (24) [rsp+0x20] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 0 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 88
+; Lcl frame size = 56
G_M32568_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
push rbx
- sub rsp, 88
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
+ sub rsp, 56
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x30], ymm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqa xmmword ptr [rsp+0x20], xmm4
+ xor eax, eax
+ mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rbp, rdx
; byrRegs +[rbp]
- ;; size=36 bbWeight=1 PerfScore 9.33
+ ;; size=31 bbWeight=1 PerfScore 8.33
G_M32568_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
cmp gword ptr [rbx+0x28], 0
je SHORT G_M32568_IG05
@@ -52,40 +50,32 @@ G_M32568_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp},
; byrRegs +[rax]
;; size=26 bbWeight=1 PerfScore 5.75
G_M32568_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
+ add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M32568_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M32568_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs +[rbx]
; byrRegs -[rax rsi rdi]
- lea rdx, [rsp+0x40]
+ lea rdx, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:GetTypeSymbol():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M32568_IG06: ; bbWeight=0, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x40]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- mov rdx, qword ptr [rsp+0x50]
- mov qword ptr [rsp+0x38], rdx
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M32568_IG07: ; bbWeight=0, isz, extend
- lea rdx, [rsp+0x28]
+ lea rdx, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:SetTypeWithAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this]
; gcrRegs -[rcx]
; gcr arg pop 0
jmp SHORT G_M32568_IG03
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 30, PerfScore 22.33, instruction count 38, allocated bytes for code 130 (MethodHash=d87180c7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
+; Total bytes of code 103, prolog size 25, PerfScore 21.33, instruction count 33, allocated bytes for code 103 (MethodHash=d87180c7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
; ============================================================
Unwind Info:
@@ -98,7 +88,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-27 (-20.77%) : 185864.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
@@ -10,28 +10,26 @@
;
; V00 this [V00,T00] ( 6, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol>
; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> rbp single-def
-; V02 loc0 [V02 ] ( 2, 0 ) struct (24) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V02 loc0 [V02 ] ( 2, 0 ) struct (24) [rsp+0x20] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 0 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 88
+; Lcl frame size = 56
G_M32568_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
push rbx
- sub rsp, 88
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
+ sub rsp, 56
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x30], ymm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqa xmmword ptr [rsp+0x20], xmm4
+ xor eax, eax
+ mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rbp, rdx
; byrRegs +[rbp]
- ;; size=36 bbWeight=1 PerfScore 9.33
+ ;; size=31 bbWeight=1 PerfScore 8.33
G_M32568_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
cmp gword ptr [rbx+0x28], 0
je SHORT G_M32568_IG05
@@ -52,40 +50,32 @@ G_M32568_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp},
; byrRegs +[rax]
;; size=26 bbWeight=1 PerfScore 5.75
G_M32568_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
+ add rsp, 56
pop rbx
pop rbp
pop rsi
pop rdi
ret
;; size=9 bbWeight=1 PerfScore 3.25
-G_M32568_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref
+G_M32568_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs +[rbx]
; byrRegs -[rax rsi rdi]
- lea rdx, [rsp+0x40]
+ lea rdx, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:GetTypeSymbol():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M32568_IG06: ; bbWeight=0, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x40]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- mov rdx, qword ptr [rsp+0x50]
- mov qword ptr [rsp+0x38], rdx
- ;; size=22 bbWeight=0 PerfScore 0.00
-G_M32568_IG07: ; bbWeight=0, isz, extend
- lea rdx, [rsp+0x28]
+ lea rdx, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:SetTypeWithAnnotations(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this]
; gcrRegs -[rcx]
; gcr arg pop 0
jmp SHORT G_M32568_IG03
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=30 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 30, PerfScore 22.33, instruction count 38, allocated bytes for code 130 (MethodHash=d87180c7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
+; Total bytes of code 103, prolog size 25, PerfScore 21.33, instruction count 33, allocated bytes for code 103 (MethodHash=d87180c7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
; ============================================================
Unwind Info:
@@ -98,7 +88,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+15 (+12.82%) : 186700.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
@@ -8,20 +8,20 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 6, 3.54) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
-; V01 loc0 [V01 ] ( 3, 1.50) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V01 loc0 [V01 ] ( 6, 2 ) struct (24) [rsp+0x20] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "spilling ret_expr" <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]>
-; V07 tmp5 [V07,T01] ( 5, 5 ) ref -> rcx single-def "guarded devirt arg temp"
+;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "guarded devirt arg temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType>
;* V09 tmp7 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]>
;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V11 tmp9 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]>
-; V12 tmp10 [V12 ] ( 2, 0.50) ref -> [rsp+0x20] do-not-enreg[X] addr-exposed "field V01.DefaultType (fldOffset=0x0)" P-DEP
-; V13 tmp11 [V13 ] ( 3, 1.50) ref -> [rsp+0x28] do-not-enreg[X] addr-exposed "field V01._extensions (fldOffset=0x8)" P-DEP
-; V14 tmp12 [V14 ] ( 2, 0.50) ubyte -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V01.DefaultNullableAnnotation (fldOffset=0x10)" P-DEP
+; V12 tmp10 [V12,T03] ( 2, 0.50) ref -> [rsp+0x20] do-not-enreg[H] hidden-struct-arg "field V01.DefaultType (fldOffset=0x0)" P-DEP
+; V13 tmp11 [V13,T01] ( 6, 2 ) ref -> [rsp+0x28] do-not-enreg[H] hidden-struct-arg "field V01._extensions (fldOffset=0x8)" P-DEP
+; V14 tmp12 [V14,T04] ( 2, 0.50) ubyte -> [rsp+0x30] do-not-enreg[H] hidden-struct-arg "field V01.DefaultNullableAnnotation (fldOffset=0x10)" P-DEP
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V04.array (fldOffset=0x0)" P-INDEP
; V16 tmp14 [V16,T02] ( 3, 1.50) ref -> rax single-def "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
@@ -50,18 +50,19 @@ G_M54628_IG03: ; bbWeight=0.46, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
;; size=20 bbWeight=0.46 PerfScore 3.64
G_M54628_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- mov rcx, gword ptr [rsp+0x28]
- ; gcrRegs +[rcx]
- mov rax, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType
- cmp qword ptr [rcx], rax
+ mov rax, gword ptr [rsp+0x28]
+ ; gcrRegs +[rax]
+ mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+NonLazyType
+ cmp qword ptr [rax], rcx
jne SHORT G_M54628_IG08
;; size=20 bbWeight=1 PerfScore 5.25
-G_M54628_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- mov rax, gword ptr [rcx+0x08]
+G_M54628_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rsp+0x28]
; gcrRegs +[rax]
- ;; size=4 bbWeight=0.50 PerfScore 1.00
+ mov rax, gword ptr [rax+0x08]
+ ;; size=9 bbWeight=0.50 PerfScore 1.50
G_M54628_IG06: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rcx]
add rsp, 56
ret
;; size=5 bbWeight=1 PerfScore 1.25
@@ -75,17 +76,21 @@ G_M54628_IG07: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=000
; gcr arg pop 0
jmp SHORT G_M54628_IG04
;; size=20 bbWeight=0.04 PerfScore 0.43
-G_M54628_IG08: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M54628_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rcx, gword ptr [rsp+0x28]
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
+ mov rax, gword ptr [rsp+0x28]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
jmp SHORT G_M54628_IG06
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 117, prolog size 21, PerfScore 19.65, instruction count 28, allocated bytes for code 117 (MethodHash=6a052a9b) for method Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
+; Total bytes of code 132, prolog size 21, PerfScore 20.15, instruction count 31, allocated bytes for code 132 (MethodHash=6a052a9b) for method Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
; ============================================================
Unwind Info:
+42 (+17.36%) : 306192.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (Tier1)
@@ -8,17 +8,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 6, 3.50) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 3, 3 ) int -> rbx single-def
-; V02 loc0 [V02 ] ( 5, 5 ) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ushort]>
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> rbx single-def
+; V02 loc0 [V02,T07] ( 3, 3 ) struct (16) [rsp+0x48] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ArraySegment`1[ushort]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp3 [V06,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
+; V06 tmp3 [V06,T03] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling ret_expr" <ushort[]>
-; V09 tmp6 [V09,T08] ( 3, 1.50) ref -> rax "guarded devirt return temp"
+; V09 tmp6 [V09,T10] ( 3, 1.50) ref -> rax "guarded devirt return temp"
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
+; V11 tmp8 [V11 ] ( 11, 12 ) struct (16) [rsp+0x38] do-not-enreg[SF] must-init ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ushort[]>
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -31,30 +31,31 @@
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V24 tmp21 [V24,T03] ( 4, 3 ) ref -> rcx single-def "field V11._array (fldOffset=0x0)" P-INDEP
-; V25 tmp22 [V25,T04] ( 4, 2 ) int -> rsi single-def "field V11._offset (fldOffset=0x8)" P-INDEP
-; V26 tmp23 [V26,T05] ( 4, 2 ) int -> rdi single-def "field V11._count (fldOffset=0xc)" P-INDEP
-; V27 tmp24 [V27,T09] ( 3, 1.50) byref -> rbp "field V14._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp25 [V28,T10] ( 3, 1.50) int -> rdi "field V14._length (fldOffset=0x8)" P-INDEP
+; V24 tmp21 [V24,T01] ( 5, 5 ) ref -> [rsp+0x38] do-not-enreg[] single-def "field V11._array (fldOffset=0x0)" P-DEP
+; V25 tmp22 [V25,T04] ( 4, 3 ) int -> [rsp+0x40] do-not-enreg[] "field V11._offset (fldOffset=0x8)" P-DEP
+; V26 tmp23 [V26,T05] ( 4, 3 ) int -> [rsp+0x44] do-not-enreg[] "field V11._count (fldOffset=0xc)" P-DEP
+; V27 tmp24 [V27,T11] ( 3, 1.50) byref -> rdi "field V14._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp25 [V28,T12] ( 3, 1.50) int -> rbp "field V14._length (fldOffset=0x8)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref single-def "field V16._length (fldOffset=0x8)" P-INDEP
-; V31 tmp28 [V31,T06] ( 2, 2 ) byref -> rbp single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp29 [V32,T07] ( 2, 2 ) int -> rdi single-def "field V17._length (fldOffset=0x8)" P-INDEP
-; V33 tmp30 [V33 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V31 tmp28 [V31,T08] ( 2, 2 ) byref -> rdi single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp29 [V32,T09] ( 2, 2 ) int -> rbp single-def "field V17._length (fldOffset=0x8)" P-INDEP
+; V33 tmp30 [V33,T06] ( 3, 3 ) ref -> rsi single-def "V02.[000..008)"
+; V34 tmp31 [V34 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 72
+; Lcl frame size = 88
G_M9354_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
push rbx
- sub rsp, 72
+ sub rsp, 88
xor eax, eax
mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x30], xmm4
- mov qword ptr [rsp+0x40], rax
+ vmovdqu ymmword ptr [rsp+0x30], ymm4
+ mov qword ptr [rsp+0x50], rax
mov ebx, edx
;; size=32 bbWeight=1 PerfScore 9.08
G_M9354_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
@@ -69,8 +70,8 @@ G_M9354_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, b
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M9354_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- lea rcx, [rsp+0x38]
+G_M9354_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
+ lea rcx, [rsp+0x48]
mov rdx, rax
; gcrRegs +[rdx]
mov r9d, ebx
@@ -79,55 +80,62 @@ G_M9354_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byre
call [<unknown method>]
; gcrRegs -[rax rdx r8]
; gcr arg pop 0
+ mov rsi, gword ptr [rsp+0x48]
+ ; gcrRegs +[rsi]
+ mov gword ptr [rsp+0x38], rsi
+ mov rcx, qword ptr [rsp+0x50]
+ mov qword ptr [rsp+0x40], rcx
+ cmp gword ptr [rsp+0x38], 0
+ je G_M9354_IG09
+ ;; size=59 bbWeight=1 PerfScore 11.25
+G_M9354_IG05: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ mov ecx, dword ptr [rsp+0x40]
+ mov eax, dword ptr [rsp+0x44]
+ add rcx, rax
+ mov rax, gword ptr [rsp+0x38]
+ ; gcrRegs +[rax]
+ mov eax, dword ptr [rax+0x08]
+ ; gcrRegs -[rax]
+ cmp rcx, rax
+ ja G_M9354_IG10
mov rcx, gword ptr [rsp+0x38]
; gcrRegs +[rcx]
- mov esi, dword ptr [rsp+0x40]
- mov edi, dword ptr [rsp+0x44]
- test rcx, rcx
- je SHORT G_M9354_IG09
- ;; size=45 bbWeight=1 PerfScore 8.50
-G_M9354_IG05: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, esi
- mov edx, edi
- add rax, rdx
- mov edx, dword ptr [rcx+0x08]
- cmp rax, rdx
- ja SHORT G_M9354_IG10
- mov eax, esi
- lea rbp, bword ptr [rcx+2*rax+0x10]
- ; byrRegs +[rbp]
- ;; size=22 bbWeight=0.50 PerfScore 2.62
-G_M9354_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref
+ mov eax, dword ptr [rsp+0x40]
+ lea rdi, bword ptr [rcx+2*rax+0x10]
+ ; byrRegs +[rdi]
+ mov ebp, dword ptr [rsp+0x44]
+ ;; size=46 bbWeight=0.50 PerfScore 5.25
+G_M9354_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref
; gcrRegs -[rcx]
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
- mov bword ptr [rsp+0x28], rbp
- mov dword ptr [rsp+0x30], edi
+ mov bword ptr [rsp+0x28], rdi
+ mov dword ptr [rsp+0x30], ebp
lea rcx, [rsp+0x28]
mov edx, 1
xor r8, r8
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[r8] +[rax]
- ; byrRegs -[rbp]
+ ; byrRegs -[rdi]
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x38]
+ mov rdx, rsi
; gcrRegs +[rdx]
xor r8d, r8d
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rsi]
; gcr arg pop 0
mov rax, rbx
; gcrRegs +[rax]
- ;; size=72 bbWeight=1 PerfScore 16.25
+ ;; size=70 bbWeight=1 PerfScore 15.50
G_M9354_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 72
+ add rsp, 88
pop rbx
pop rbp
pop rsi
@@ -143,23 +151,25 @@ G_M9354_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {r
; gcr arg pop 0
jmp G_M9354_IG04
;; size=15 bbWeight=0 PerfScore 0.00
-G_M9354_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- or esi, edi
+G_M9354_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax] +[rsi]
+ mov eax, dword ptr [rsp+0x40]
+ or eax, dword ptr [rsp+0x44]
jne SHORT G_M9354_IG10
- xor rbp, rbp
- ; byrRegs +[rbp]
- xor edi, edi
+ xor rdi, rdi
+ ; byrRegs +[rdi]
+ xor ebp, ebp
jmp SHORT G_M9354_IG06
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M9354_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rbp]
+ ; gcrRegs -[rsi]
+ ; byrRegs -[rdi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 242, prolog size 30, PerfScore 45.58, instruction count 66, allocated bytes for code 242 (MethodHash=2c99db75) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (Tier1)
+; Total bytes of code 284, prolog size 30, PerfScore 50.21, instruction count 71, allocated bytes for code 284 (MethodHash=2c99db75) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (Tier1)
; ============================================================
Unwind Info:
@@ -172,7 +182,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+40 (+19.51%) : 306154.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (Tier1)
@@ -8,16 +8,16 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Reflection.Metadata.TypeName>
-; V01 arg1 [V01,T01] ( 3, 3 ) int -> rsi single-def
-; V02 loc0 [V02 ] ( 5, 5 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ushort]>
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def
+; V02 loc0 [V02,T09] ( 3, 3 ) struct (16) [rsp+0x40] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ArraySegment`1[ushort]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp4 [V07,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
+; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling ret_expr" <ushort[]>
-;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
+; V10 tmp7 [V10 ] ( 11, 12 ) struct (16) [rsp+0x30] do-not-enreg[SF] must-init ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ushort[]>
;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -30,32 +30,34 @@
;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V23 tmp20 [V23,T05] ( 4, 3 ) ref -> rcx single-def "field V10._array (fldOffset=0x0)" P-INDEP
-; V24 tmp21 [V24,T06] ( 4, 2 ) int -> rbx single-def "field V10._offset (fldOffset=0x8)" P-INDEP
-; V25 tmp22 [V25,T07] ( 4, 2 ) int -> rsi single-def "field V10._count (fldOffset=0xc)" P-INDEP
-; V26 tmp23 [V26,T10] ( 3, 1.50) byref -> rdi "field V13._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T11] ( 3, 1.50) int -> rsi "field V13._length (fldOffset=0x8)" P-INDEP
+; V23 tmp20 [V23,T01] ( 5, 5 ) ref -> [rsp+0x30] do-not-enreg[] single-def "field V10._array (fldOffset=0x0)" P-DEP
+; V24 tmp21 [V24,T06] ( 4, 3 ) int -> [rsp+0x38] do-not-enreg[] "field V10._offset (fldOffset=0x8)" P-DEP
+; V25 tmp22 [V25,T07] ( 4, 3 ) int -> [rsp+0x3C] do-not-enreg[] "field V10._count (fldOffset=0xc)" P-DEP
+; V26 tmp23 [V26,T12] ( 3, 1.50) byref -> rsi "field V13._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp24 [V27,T13] ( 3, 1.50) int -> rdi "field V13._length (fldOffset=0x8)" P-INDEP
;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T08] ( 2, 2 ) byref -> rdi single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T09] ( 2, 2 ) int -> rsi single-def "field V16._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T03] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V33 tmp30 [V33,T04] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V34 tmp31 [V34 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V30 tmp27 [V30,T10] ( 2, 2 ) byref -> rsi single-def "field V16._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp28 [V31,T11] ( 2, 2 ) int -> rdi single-def "field V16._length (fldOffset=0x8)" P-INDEP
+; V32 tmp29 [V32,T08] ( 3, 3 ) ref -> rbx single-def "V02.[000..008)"
+; V33 tmp30 [V33,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
+; V34 tmp31 [V34,T05] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
+; V35 tmp32 [V35 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M6715_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
+ sub rsp, 80
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, edx
- ;; size=22 bbWeight=1 PerfScore 6.08
+ ;; size=28 bbWeight=1 PerfScore 8.08
G_M6715_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -75,82 +77,91 @@ G_M6715_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs +[r8]
mov rdx, rdi
; gcrRegs +[rdx]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x40]
mov r9d, esi
call [<unknown method>]
; gcrRegs -[rax rdx rdi r8]
; gcr arg pop 0
+ mov rbx, gword ptr [rsp+0x40]
+ ; gcrRegs +[rbx]
+ mov gword ptr [rsp+0x30], rbx
+ mov rcx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x38], rcx
+ cmp gword ptr [rsp+0x30], 0
+ je SHORT G_M6715_IG06
+ ;; size=74 bbWeight=1 PerfScore 25.75
+G_M6715_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x38]
+ mov eax, dword ptr [rsp+0x3C]
+ add rcx, rax
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ mov eax, dword ptr [rax+0x08]
+ ; gcrRegs -[rax]
+ cmp rcx, rax
+ ja SHORT G_M6715_IG07
mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
- mov ebx, dword ptr [rsp+0x38]
- mov esi, dword ptr [rsp+0x3C]
- test rcx, rcx
- je SHORT G_M6715_IG06
- ;; size=64 bbWeight=1 PerfScore 23.00
-G_M6715_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, ebx
- mov edx, esi
- add rax, rdx
- mov edx, dword ptr [rcx+0x08]
- cmp rax, rdx
- ja SHORT G_M6715_IG07
- mov eax, ebx
- lea rdi, bword ptr [rcx+2*rax+0x10]
- ; byrRegs +[rdi]
- ;; size=22 bbWeight=0.50 PerfScore 2.62
-G_M6715_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov eax, dword ptr [rsp+0x38]
+ lea rsi, bword ptr [rcx+2*rax+0x10]
+ ; byrRegs +[rsi]
+ mov edi, dword ptr [rsp+0x3C]
+ ;; size=42 bbWeight=0.50 PerfScore 5.25
+G_M6715_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
mov ecx, 1
call [<unknown method>]
; gcr arg pop 0
- mov bword ptr [rsp+0x20], rdi
- mov dword ptr [rsp+0x28], esi
+ mov bword ptr [rsp+0x20], rsi
+ mov dword ptr [rsp+0x28], edi
lea rcx, [rsp+0x20]
mov edx, 1
xor r8, r8
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[r8] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rsi]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, rbx
; gcrRegs +[rdx]
xor r8d, r8d
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=72 bbWeight=1 PerfScore 16.25
+ ;; size=70 bbWeight=1 PerfScore 15.50
G_M6715_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M6715_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rbx]
- or ebx, esi
+G_M6715_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov eax, dword ptr [rsp+0x38]
+ or eax, dword ptr [rsp+0x3C]
jne SHORT G_M6715_IG07
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor esi, esi
+ xor rsi, rsi
+ ; byrRegs +[rsi]
+ xor edi, edi
jmp SHORT G_M6715_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M6715_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 205, prolog size 17, PerfScore 50.71, instruction count 60, allocated bytes for code 205 (MethodHash=48a4e5c4) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (Tier1)
+; Total bytes of code 245, prolog size 23, PerfScore 57.33, instruction count 66, allocated bytes for code 245 (MethodHash=48a4e5c4) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (Tier1)
; ============================================================
Unwind Info:
@@ -163,7 +174,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
-28 (-47.46%) : 110931.dasm - System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass14_0:b__1():long:this (FullOpts)
@@ -9,20 +9,14 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass14_0>
-; V01 loc0 [V01 ] ( 2, 2 ) struct (64) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.CounterSample>
+; V01 loc0 [V01,T01] ( 2, 2 ) struct (64) [rsp+0x28] do-not-enreg[HS] hidden-struct-arg ld-addr-op <System.Diagnostics.CounterSample>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 104
G_M34473_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 104
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x30], ymm4
- vmovdqa xmmword ptr [rsp+0x50], xmm4
- mov qword ptr [rsp+0x60], rax
- ;; size=32 bbWeight=1 PerfScore 6.83
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M34473_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x08]
@@ -38,7 +32,7 @@ G_M34473_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 59, prolog size 32, PerfScore 17.58, instruction count 14, allocated bytes for code 59 (MethodHash=a6847956) for method System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass14_0:<PerformanceCounter_Increment>b__1():long:this (FullOpts)
+; Total bytes of code 31, prolog size 4, PerfScore 11.00, instruction count 8, allocated bytes for code 31 (MethodHash=a6847956) for method System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass14_0:<PerformanceCounter_Increment>b__1():long:this (FullOpts)
; ============================================================
Unwind Info:
-28 (-47.46%) : 110970.dasm - System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass15_0:b__1():long:this (FullOpts)
@@ -9,20 +9,14 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass15_0>
-; V01 loc0 [V01 ] ( 2, 2 ) struct (64) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Diagnostics.CounterSample>
+; V01 loc0 [V01,T01] ( 2, 2 ) struct (64) [rsp+0x28] do-not-enreg[HS] hidden-struct-arg ld-addr-op <System.Diagnostics.CounterSample>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 104
G_M10308_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 104
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x30], ymm4
- vmovdqa xmmword ptr [rsp+0x50], xmm4
- mov qword ptr [rsp+0x60], rax
- ;; size=32 bbWeight=1 PerfScore 6.83
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M10308_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x08]
@@ -38,7 +32,7 @@ G_M10308_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 59, prolog size 32, PerfScore 17.58, instruction count 14, allocated bytes for code 59 (MethodHash=b0bed7bb) for method System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass15_0:<PerformanceCounter_IncrementBy_IncrementBy2>b__1():long:this (FullOpts)
+; Total bytes of code 31, prolog size 4, PerfScore 11.00, instruction count 8, allocated bytes for code 31 (MethodHash=b0bed7bb) for method System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass15_0:<PerformanceCounter_IncrementBy_IncrementBy2>b__1():long:this (FullOpts)
; ============================================================
Unwind Info:
-27 (-24.55%) : 13386.dasm - Microsoft.CodeAnalysis.CSharp.Simplification.CSharpEscapingReducer+Rewriter:VisitToken(Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
@@ -10,66 +10,56 @@
; V00 this [V00,T01] ( 4, 4 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Simplification.CSharpEscapingReducer+Rewriter>
; V01 RetBuf [V01,T02] ( 4, 4 ) byref -> rsi single-def
; V02 arg1 [V02,T00] ( 3, 6 ) byref -> r8 single-def
-; V03 loc0 [V03 ] ( 2, 2 ) struct (24) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.SyntaxToken>
+; V03 loc0 [V03 ] ( 2, 2 ) struct (24) [rsp+0x20] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <Microsoft.CodeAnalysis.SyntaxToken>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 2, 4 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
;
-; Lcl frame size = 88
+; Lcl frame size = 56
G_M61200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rsi
push rbx
- sub rsp, 88
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
+ sub rsp, 56
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x30], ymm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqa xmmword ptr [rsp+0x20], xmm4
+ xor eax, eax
+ mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; byrRegs +[rsi]
- ;; size=34 bbWeight=1 PerfScore 7.33
+ ;; size=29 bbWeight=1 PerfScore 6.33
G_M61200_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0140 {rsi r8}, byref
; byrRegs +[r8]
- lea rdx, [rsp+0x40]
+ lea rdx, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; byrRegs -[r8]
; gcr arg pop 0
- ;; size=14 bbWeight=1 PerfScore 3.75
-G_M61200_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x40]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- mov r8, qword ptr [rsp+0x50]
- mov qword ptr [rsp+0x38], r8
- ;; size=22 bbWeight=1 PerfScore 6.00
-G_M61200_IG04: ; bbWeight=1, extend
- lea r8, [rsp+0x28]
mov r9, 0xD1FFAB1E ; const ptr
mov r9, gword ptr [r9]
; gcrRegs +[r9]
- mov rdx, rsi
- ; byrRegs +[rdx]
+ lea r8, [rsp+0x20]
mov rcx, rbx
; gcrRegs +[rcx]
+ mov rdx, rsi
+ ; byrRegs +[rdx]
call [Microsoft.CodeAnalysis.CSharp.Simplification.AbstractCSharpReducer+AbstractReductionRewriter:SimplifyToken(Microsoft.CodeAnalysis.SyntaxToken,System.Func`5[Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.CSharp.Simplification.CSharpSimplifierOptions,System.Threading.CancellationToken,Microsoft.CodeAnalysis.SyntaxToken]):Microsoft.CodeAnalysis.SyntaxToken:this]
; gcrRegs -[rcx rbx r9]
; byrRegs -[rdx]
; gcr arg pop 0
mov rax, rsi
; byrRegs +[rax]
- ;; size=33 bbWeight=1 PerfScore 6.50
-G_M61200_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
+ ;; size=47 bbWeight=1 PerfScore 10.25
+G_M61200_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 56
pop rbx
pop rsi
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 110, prolog size 28, PerfScore 25.83, instruction count 28, allocated bytes for code 110 (MethodHash=08db10ef) for method Microsoft.CodeAnalysis.CSharp.Simplification.CSharpEscapingReducer+Rewriter:VisitToken(Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
+; Total bytes of code 83, prolog size 23, PerfScore 18.83, instruction count 23, allocated bytes for code 83 (MethodHash=08db10ef) for method Microsoft.CodeAnalysis.CSharp.Simplification.CSharpEscapingReducer+Rewriter:VisitToken(Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
; ============================================================
Unwind Info:
@@ -82,6 +72,6 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+38 (+19.39%) : 131863.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (FullOpts)
@@ -9,55 +9,57 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rbx class-hnd single-def <System.Reflection.Metadata.TypeName>
-; V01 arg1 [V01,T01] ( 3, 3 ) int -> rsi single-def
-; V02 loc0 [V02 ] ( 5, 5 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ushort]>
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def
+; V02 loc0 [V02,T11] ( 3, 3 ) struct (16) [rsp+0x40] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ArraySegment`1[ushort]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp4 [V07,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
+; V07 tmp4 [V07,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
-;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
+; V09 tmp6 [V09 ] ( 11, 12 ) struct (16) [rsp+0x30] do-not-enreg[SF] must-init ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
;* V10 tmp7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ushort[]>
;* V11 tmp8 [V11 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V13 tmp10 [V13 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V15 tmp12 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp13 [V16,T06] ( 2, 4 ) int -> rsi "Inlining Arg"
-; V17 tmp14 [V17,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V16 tmp13 [V16,T07] ( 2, 4 ) int -> rdi "Inlining Arg"
+; V17 tmp14 [V17,T04] ( 2, 4 ) byref -> rsi single-def "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp17 [V20 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V24 tmp21 [V24,T07] ( 4, 3 ) ref -> rcx single-def "field V09._array (fldOffset=0x0)" P-INDEP
-; V25 tmp22 [V25,T08] ( 4, 2 ) int -> rbx single-def "field V09._offset (fldOffset=0x8)" P-INDEP
-; V26 tmp23 [V26,T09] ( 4, 2 ) int -> rsi single-def "field V09._count (fldOffset=0xc)" P-INDEP
-; V27 tmp24 [V27,T12] ( 3, 1.50) byref -> rdi "field V12._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp25 [V28,T13] ( 3, 1.50) int -> rsi "field V12._length (fldOffset=0x8)" P-INDEP
+; V24 tmp21 [V24,T01] ( 5, 5 ) ref -> [rsp+0x30] do-not-enreg[] single-def "field V09._array (fldOffset=0x0)" P-DEP
+; V25 tmp22 [V25,T08] ( 4, 3 ) int -> [rsp+0x38] do-not-enreg[] "field V09._offset (fldOffset=0x8)" P-DEP
+; V26 tmp23 [V26,T09] ( 4, 3 ) int -> [rsp+0x3C] do-not-enreg[] "field V09._count (fldOffset=0xc)" P-DEP
+; V27 tmp24 [V27,T14] ( 3, 1.50) byref -> rsi "field V12._reference (fldOffset=0x0)" P-INDEP
+; V28 tmp25 [V28,T15] ( 3, 1.50) int -> rdi "field V12._length (fldOffset=0x8)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) int -> zero-ref single-def "field V14._length (fldOffset=0x8)" P-INDEP
-; V31 tmp28 [V31,T10] ( 2, 2 ) byref -> rdi single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp29 [V32,T11] ( 2, 2 ) int -> rsi single-def "field V15._length (fldOffset=0x8)" P-INDEP
-; V33 tmp30 [V33,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V34 tmp31 [V34,T05] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V35 tmp32 [V35 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V31 tmp28 [V31,T12] ( 2, 2 ) byref -> rsi single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp29 [V32,T13] ( 2, 2 ) int -> rdi single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V33 tmp30 [V33,T10] ( 3, 3 ) ref -> rbx single-def "V02.[000..008)"
+; V34 tmp31 [V34,T05] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
+; V35 tmp32 [V35,T06] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
+; V36 tmp33 [V36 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M6715_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
+ sub rsp, 80
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, edx
- ;; size=22 bbWeight=1 PerfScore 6.08
+ ;; size=28 bbWeight=1 PerfScore 8.08
G_M6715_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -77,79 +79,88 @@ G_M6715_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
; gcrRegs +[r8]
mov rdx, rdi
; gcrRegs +[rdx]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x40]
mov r9d, esi
call [<unknown method>]
; gcrRegs -[rax rdx rdi r8]
; gcr arg pop 0
+ mov rbx, gword ptr [rsp+0x40]
+ ; gcrRegs +[rbx]
+ mov gword ptr [rsp+0x30], rbx
+ mov rcx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x38], rcx
+ cmp gword ptr [rsp+0x30], 0
+ je SHORT G_M6715_IG06
+ ;; size=74 bbWeight=1 PerfScore 25.75
+G_M6715_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x38]
+ mov edx, dword ptr [rsp+0x3C]
+ add rcx, rdx
+ mov rdx, gword ptr [rsp+0x30]
+ ; gcrRegs +[rdx]
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
+ cmp rcx, rdx
+ ja SHORT G_M6715_IG07
mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
- mov ebx, dword ptr [rsp+0x38]
- mov esi, dword ptr [rsp+0x3C]
- test rcx, rcx
- je SHORT G_M6715_IG06
- ;; size=64 bbWeight=1 PerfScore 23.00
-G_M6715_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov edx, ebx
- mov r8d, esi
- add rdx, r8
- mov r8d, dword ptr [rcx+0x08]
- cmp rdx, r8
- ja SHORT G_M6715_IG07
- mov edx, ebx
- lea rdi, bword ptr [rcx+2*rdx+0x10]
- ; byrRegs +[rdi]
- ;; size=24 bbWeight=0.50 PerfScore 2.62
-G_M6715_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov edx, dword ptr [rsp+0x38]
+ lea rsi, bword ptr [rcx+2*rdx+0x10]
+ ; byrRegs +[rsi]
+ mov edi, dword ptr [rsp+0x3C]
+ ;; size=42 bbWeight=0.50 PerfScore 5.25
+G_M6715_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
- mov bword ptr [rsp+0x20], rdi
- mov dword ptr [rsp+0x28], esi
+ mov bword ptr [rsp+0x20], rsi
+ mov dword ptr [rsp+0x28], edi
lea rcx, [rsp+0x20]
mov edx, 1
xor r8, r8
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[r8] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rsi]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, rbx
; gcrRegs +[rdx]
xor r8d, r8d
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=61 bbWeight=1 PerfScore 13.00
+ ;; size=59 bbWeight=1 PerfScore 12.25
G_M6715_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M6715_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rbx]
- or ebx, esi
+G_M6715_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov eax, dword ptr [rsp+0x38]
+ or eax, dword ptr [rsp+0x3C]
jne SHORT G_M6715_IG07
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor esi, esi
+ xor rsi, rsi
+ ; byrRegs +[rsi]
+ xor edi, edi
jmp SHORT G_M6715_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M6715_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 17, PerfScore 47.46, instruction count 58, allocated bytes for code 196 (MethodHash=48a4e5c4) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (FullOpts)
+; Total bytes of code 234, prolog size 23, PerfScore 54.08, instruction count 64, allocated bytes for code 234 (MethodHash=48a4e5c4) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (FullOpts)
; ============================================================
Unwind Info:
@@ -162,7 +173,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+38 (+20.65%) : 131917.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (FullOpts)
@@ -9,51 +9,53 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T01] ( 3, 3 ) int -> rbx single-def
-; V02 loc0 [V02 ] ( 5, 5 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ushort]>
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> rbx single-def
+; V02 loc0 [V02,T10] ( 3, 3 ) struct (16) [rsp+0x40] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ArraySegment`1[ushort]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp3 [V06,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
+; V06 tmp3 [V06,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
-;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
+; V08 tmp5 [V08 ] ( 11, 12 ) struct (16) [rsp+0x30] do-not-enreg[SF] must-init ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ushort[]>
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V15 tmp12 [V15,T05] ( 2, 4 ) int -> rsi "Inlining Arg"
-; V16 tmp13 [V16,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V15 tmp12 [V15,T06] ( 2, 4 ) int -> rdi "Inlining Arg"
+; V16 tmp13 [V16,T04] ( 2, 4 ) byref -> rsi single-def "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V23 tmp20 [V23,T06] ( 4, 3 ) ref -> rcx single-def "field V08._array (fldOffset=0x0)" P-INDEP
-; V24 tmp21 [V24,T07] ( 4, 2 ) int -> rbx single-def "field V08._offset (fldOffset=0x8)" P-INDEP
-; V25 tmp22 [V25,T08] ( 4, 2 ) int -> rsi single-def "field V08._count (fldOffset=0xc)" P-INDEP
-; V26 tmp23 [V26,T11] ( 3, 1.50) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T12] ( 3, 1.50) int -> rsi "field V11._length (fldOffset=0x8)" P-INDEP
+; V23 tmp20 [V23,T01] ( 5, 5 ) ref -> [rsp+0x30] do-not-enreg[] single-def "field V08._array (fldOffset=0x0)" P-DEP
+; V24 tmp21 [V24,T07] ( 4, 3 ) int -> [rsp+0x38] do-not-enreg[] "field V08._offset (fldOffset=0x8)" P-DEP
+; V25 tmp22 [V25,T08] ( 4, 3 ) int -> [rsp+0x3C] do-not-enreg[] "field V08._count (fldOffset=0xc)" P-DEP
+; V26 tmp23 [V26,T13] ( 3, 1.50) byref -> rsi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp24 [V27,T14] ( 3, 1.50) int -> rdi "field V11._length (fldOffset=0x8)" P-INDEP
;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T09] ( 2, 2 ) byref -> rdi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T10] ( 2, 2 ) int -> rsi single-def "field V14._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V33 tmp30 [V33 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V30 tmp27 [V30,T11] ( 2, 2 ) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp28 [V31,T12] ( 2, 2 ) int -> rdi single-def "field V14._length (fldOffset=0x8)" P-INDEP
+; V32 tmp29 [V32,T09] ( 3, 3 ) ref -> rbx single-def "V02.[000..008)"
+; V33 tmp30 [V33,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V34 tmp31 [V34 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M9354_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
+ sub rsp, 80
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
mov ebx, edx
- ;; size=19 bbWeight=1 PerfScore 5.83
+ ;; size=25 bbWeight=1 PerfScore 7.83
G_M9354_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
@@ -63,81 +65,90 @@ G_M9354_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byre
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x40]
mov r9d, ebx
mov r8, 0xD1FFAB1E
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[rax rdx r8]
; gcr arg pop 0
+ mov rbx, gword ptr [rsp+0x40]
+ ; gcrRegs +[rbx]
+ mov gword ptr [rsp+0x30], rbx
+ mov rcx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x38], rcx
+ cmp gword ptr [rsp+0x30], 0
+ je SHORT G_M9354_IG06
+ ;; size=65 bbWeight=1 PerfScore 18.25
+G_M9354_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x38]
+ mov edx, dword ptr [rsp+0x3C]
+ add rcx, rdx
+ mov rdx, gword ptr [rsp+0x30]
+ ; gcrRegs +[rdx]
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
+ cmp rcx, rdx
+ ja SHORT G_M9354_IG07
mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
- mov ebx, dword ptr [rsp+0x38]
- mov esi, dword ptr [rsp+0x3C]
- test rcx, rcx
- je SHORT G_M9354_IG06
- ;; size=55 bbWeight=1 PerfScore 15.50
-G_M9354_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov edx, ebx
- mov r8d, esi
- add rdx, r8
- mov r8d, dword ptr [rcx+0x08]
- cmp rdx, r8
- ja SHORT G_M9354_IG07
- mov edx, ebx
- lea rdi, bword ptr [rcx+2*rdx+0x10]
- ; byrRegs +[rdi]
- ;; size=24 bbWeight=0.50 PerfScore 2.62
-G_M9354_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov edx, dword ptr [rsp+0x38]
+ lea rsi, bword ptr [rcx+2*rdx+0x10]
+ ; byrRegs +[rsi]
+ mov edi, dword ptr [rsp+0x3C]
+ ;; size=42 bbWeight=0.50 PerfScore 5.25
+G_M9354_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
- mov bword ptr [rsp+0x20], rdi
- mov dword ptr [rsp+0x28], esi
+ mov bword ptr [rsp+0x20], rsi
+ mov dword ptr [rsp+0x28], edi
lea rcx, [rsp+0x20]
mov edx, 1
xor r8, r8
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[r8] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rsi]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, rbx
; gcrRegs +[rdx]
xor r8d, r8d
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=61 bbWeight=1 PerfScore 13.00
+ ;; size=59 bbWeight=1 PerfScore 12.25
G_M9354_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M9354_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rbx]
- or ebx, esi
+G_M9354_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov eax, dword ptr [rsp+0x38]
+ or eax, dword ptr [rsp+0x3C]
jne SHORT G_M9354_IG07
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor esi, esi
+ xor rsi, rsi
+ ; byrRegs +[rsi]
+ xor edi, edi
jmp SHORT G_M9354_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M9354_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 184, prolog size 17, PerfScore 39.71, instruction count 53, allocated bytes for code 184 (MethodHash=2c99db75) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (FullOpts)
+; Total bytes of code 222, prolog size 23, PerfScore 46.33, instruction count 59, allocated bytes for code 222 (MethodHash=2c99db75) for method System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (FullOpts)
; ============================================================
Unwind Info:
@@ -150,7 +161,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+38 (+21.59%) : 132070.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:WithAssemblyName(System.Reflection.Metadata.TypeName,System.String):System.Reflection.Metadata.TypeName (FullOpts)
@@ -8,53 +8,55 @@
; 1 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Metadata.TypeName>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rbx class-hnd single-def <System.String>
-; V02 loc0 [V02 ] ( 5, 5 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ArraySegment`1[ushort]>
+; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Reflection.Metadata.TypeName>
+; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rbx class-hnd single-def <System.String>
+; V02 loc0 [V02,T10] ( 3, 3 ) struct (16) [rsp+0x40] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ArraySegment`1[ushort]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp3 [V06,T02] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
+; V06 tmp3 [V06,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <System.Reflection.Metadata.TypeName>
;* V07 tmp4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
-;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
+; V08 tmp5 [V08 ] ( 11, 12 ) struct (16) [rsp+0x30] do-not-enreg[SF] must-init ld-addr-op "Inlining Arg" <System.ArraySegment`1[ushort]>
;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <ushort[]>
;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V12 tmp9 [V12 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V15 tmp12 [V15,T05] ( 2, 4 ) int -> rsi "Inlining Arg"
-; V16 tmp13 [V16,T03] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
+; V15 tmp12 [V15,T06] ( 2, 4 ) int -> rdi "Inlining Arg"
+; V16 tmp13 [V16,T04] ( 2, 4 ) byref -> rsi single-def "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp17 [V20 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-; V23 tmp20 [V23,T06] ( 4, 3 ) ref -> rcx single-def "field V08._array (fldOffset=0x0)" P-INDEP
-; V24 tmp21 [V24,T07] ( 4, 2 ) int -> rbx single-def "field V08._offset (fldOffset=0x8)" P-INDEP
-; V25 tmp22 [V25,T08] ( 4, 2 ) int -> rsi single-def "field V08._count (fldOffset=0xc)" P-INDEP
-; V26 tmp23 [V26,T11] ( 3, 1.50) byref -> rdi "field V11._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp24 [V27,T12] ( 3, 1.50) int -> rsi "field V11._length (fldOffset=0x8)" P-INDEP
+; V23 tmp20 [V23,T00] ( 5, 5 ) ref -> [rsp+0x30] do-not-enreg[] single-def "field V08._array (fldOffset=0x0)" P-DEP
+; V24 tmp21 [V24,T07] ( 4, 3 ) int -> [rsp+0x38] do-not-enreg[] "field V08._offset (fldOffset=0x8)" P-DEP
+; V25 tmp22 [V25,T08] ( 4, 3 ) int -> [rsp+0x3C] do-not-enreg[] "field V08._count (fldOffset=0xc)" P-DEP
+; V26 tmp23 [V26,T13] ( 3, 1.50) byref -> rsi "field V11._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp24 [V27,T14] ( 3, 1.50) int -> rdi "field V11._length (fldOffset=0x8)" P-INDEP
;* V28 tmp25 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp26 [V29 ] ( 0, 0 ) int -> zero-ref single-def "field V13._length (fldOffset=0x8)" P-INDEP
-; V30 tmp27 [V30,T09] ( 2, 2 ) byref -> rdi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp28 [V31,T10] ( 2, 2 ) int -> rsi single-def "field V14._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V33 tmp30 [V33 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V30 tmp27 [V30,T11] ( 2, 2 ) byref -> rsi single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V31 tmp28 [V31,T12] ( 2, 2 ) int -> rdi single-def "field V14._length (fldOffset=0x8)" P-INDEP
+; V32 tmp29 [V32,T09] ( 3, 3 ) ref -> rbx single-def "V02.[000..008)"
+; V33 tmp30 [V33,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V34 tmp31 [V34 ] ( 3, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M2877_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
+ sub rsp, 80
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=20 bbWeight=1 PerfScore 5.83
+ ;; size=26 bbWeight=1 PerfScore 7.83
G_M2877_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
@@ -63,81 +65,90 @@ G_M2877_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- lea rcx, [rsp+0x30]
+ lea rcx, [rsp+0x40]
mov r8, rbx
; gcrRegs +[r8]
xor r9d, r9d
call [<unknown method>]
; gcrRegs -[rax rdx rbx r8]
; gcr arg pop 0
+ mov rbx, gword ptr [rsp+0x40]
+ ; gcrRegs +[rbx]
+ mov gword ptr [rsp+0x30], rbx
+ mov rcx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x38], rcx
+ cmp gword ptr [rsp+0x30], 0
+ je SHORT G_M2877_IG06
+ ;; size=56 bbWeight=1 PerfScore 17.25
+G_M2877_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x38]
+ mov edx, dword ptr [rsp+0x3C]
+ add rcx, rdx
+ mov rdx, gword ptr [rsp+0x30]
+ ; gcrRegs +[rdx]
+ mov edx, dword ptr [rdx+0x08]
+ ; gcrRegs -[rdx]
+ cmp rcx, rdx
+ ja SHORT G_M2877_IG07
mov rcx, gword ptr [rsp+0x30]
; gcrRegs +[rcx]
- mov ebx, dword ptr [rsp+0x38]
- mov esi, dword ptr [rsp+0x3C]
- test rcx, rcx
- je SHORT G_M2877_IG06
- ;; size=46 bbWeight=1 PerfScore 14.50
-G_M2877_IG03: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov edx, ebx
- mov r8d, esi
- add rdx, r8
- mov r8d, dword ptr [rcx+0x08]
- cmp rdx, r8
- ja SHORT G_M2877_IG07
- mov edx, ebx
- lea rdi, bword ptr [rcx+2*rdx+0x10]
- ; byrRegs +[rdi]
- ;; size=24 bbWeight=0.50 PerfScore 2.62
-G_M2877_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+ mov edx, dword ptr [rsp+0x38]
+ lea rsi, bword ptr [rcx+2*rdx+0x10]
+ ; byrRegs +[rsi]
+ mov edi, dword ptr [rsp+0x3C]
+ ;; size=42 bbWeight=0.50 PerfScore 5.25
+G_M2877_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rcx]
- mov bword ptr [rsp+0x20], rdi
- mov dword ptr [rsp+0x28], esi
+ mov bword ptr [rsp+0x20], rsi
+ mov dword ptr [rsp+0x28], edi
lea rcx, [rsp+0x20]
mov edx, 1
xor r8, r8
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[r8] +[rax]
- ; byrRegs -[rdi]
+ ; byrRegs -[rsi]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
mov rcx, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x30]
+ mov rdx, rbx
; gcrRegs +[rdx]
xor r8d, r8d
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
- mov rax, rbx
+ mov rax, rsi
; gcrRegs +[rax]
- ;; size=61 bbWeight=1 PerfScore 13.00
+ ;; size=59 bbWeight=1 PerfScore 12.25
G_M2877_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M2877_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax rbx]
- or ebx, esi
+G_M2877_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rsi] +[rbx]
+ mov eax, dword ptr [rsp+0x38]
+ or eax, dword ptr [rsp+0x3C]
jne SHORT G_M2877_IG07
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor esi, esi
+ xor rsi, rsi
+ ; byrRegs +[rsi]
+ xor edi, edi
jmp SHORT G_M2877_IG04
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M2877_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rdi]
+ ; gcrRegs -[rbx]
+ ; byrRegs -[rsi]
call [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 17, PerfScore 38.71, instruction count 52, allocated bytes for code 176 (MethodHash=1ac7f4c2) for method System.Formats.Nrbf.Utils.TypeNameExtensions:WithAssemblyName(System.Reflection.Metadata.TypeName,System.String):System.Reflection.Metadata.TypeName (FullOpts)
+; Total bytes of code 214, prolog size 23, PerfScore 45.33, instruction count 58, allocated bytes for code 214 (MethodHash=1ac7f4c2) for method System.Formats.Nrbf.Utils.TypeNameExtensions:WithAssemblyName(System.Reflection.Metadata.TypeName,System.String):System.Reflection.Metadata.TypeName (FullOpts)
; ============================================================
Unwind Info:
@@ -150,7 +161,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
realworld.run.windows.x64.checked.mch
-22 (-15.94%) : 20007.dasm - Microsoft.CodeAnalysis.CSharp.ControlFlowPass:VisitTryBlock(Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.BoundTryStatement,byref):this (FullOpts)
@@ -12,28 +12,25 @@
; V01 arg1 [V01,T01] ( 4, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundStatement>
; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundTryStatement>
;* V03 arg3 [V03 ] ( 0, 0 ) byref -> zero-ref single-def
-; V04 loc0 [V04 ] ( 2, 1 ) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+SavedPending[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalFunctionState]>
+; V04 loc0 [V04 ] ( 2, 1 ) struct (16) [rsp+0x28] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+SavedPending[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalFunctionState]>
;* V05 loc1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundCatchBlock]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T03] ( 2, 2 ) ref -> rcx single-def "field V05.array (fldOffset=0x0)" P-INDEP
-; V08 tmp2 [V08 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+SavedPending[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalFunctionState]>
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M53845_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rsi
push rbx
- sub rsp, 72
+ sub rsp, 56
xor eax, eax
mov qword ptr [rsp+0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x30], xmm4
- mov qword ptr [rsp+0x40], rax
+ mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=34 bbWeight=1 PerfScore 7.33
+ ;; size=24 bbWeight=1 PerfScore 5.00
G_M53845_IG02: ; bbWeight=1, gcrefRegs=0148 {rbx rsi r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r8]
mov rcx, gword ptr [r8+0x30]
@@ -55,14 +52,14 @@ G_M53845_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
nop
;; size=20 bbWeight=0.50 PerfScore 3.88
G_M53845_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 72
+ add rsp, 56
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M53845_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rsi]
- lea rdx, [rsp+0x38]
+ lea rdx, [rsp+0x28]
mov rcx, rbx
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:SavePending():Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+SavedPending[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:this]
@@ -77,12 +74,6 @@ G_M53845_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=004
call [rax+0x18]<unknown method>
; gcrRegs -[rcx rdx rsi]
; gcr arg pop 0
- ;; size=33 bbWeight=0.50 PerfScore 5.62
-G_M53845_IG06: ; bbWeight=0.50, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x38]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M53845_IG07: ; bbWeight=0.50, extend
lea rdx, [rsp+0x28]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -90,15 +81,15 @@ G_M53845_IG07: ; bbWeight=0.50, extend
; gcrRegs -[rcx rbx]
; gcr arg pop 0
nop
- ;; size=15 bbWeight=0.50 PerfScore 2.00
-G_M53845_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 72
+ ;; size=48 bbWeight=0.50 PerfScore 7.62
+G_M53845_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 56
pop rbx
pop rsi
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 138, prolog size 28, PerfScore 29.08, instruction count 41, allocated bytes for code 138 (MethodHash=8afb2daa) for method Microsoft.CodeAnalysis.CSharp.ControlFlowPass:VisitTryBlock(Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.BoundTryStatement,byref):this (FullOpts)
+; Total bytes of code 116, prolog size 18, PerfScore 24.75, instruction count 37, allocated bytes for code 116 (MethodHash=8afb2daa) for method Microsoft.CodeAnalysis.CSharp.ControlFlowPass:VisitTryBlock(Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.BoundTryStatement,byref):this (FullOpts)
; ============================================================
Unwind Info:
@@ -111,6 +102,6 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
-12 (-15.19%) : 7646.dasm - SixLabors.ImageSharp.Processing.DefaultImageProcessorContext`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:GetCurrentSize():SixLabors.ImageSharp.Size:this (FullOpts)
@@ -11,7 +11,7 @@
; V00 this [V00,T00] ( 4, 3.50) ref -> rcx this class-hnd single-def <SixLabors.ImageSharp.Processing.DefaultImageProcessorContext`1[SixLabors.ImageSharp.PixelFormats.Rgba32]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <SixLabors.ImageSharp.Rectangle>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 4, 3 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <SixLabors.ImageSharp.Rectangle>
+; V03 tmp1 [V03,T02] ( 4, 3 ) struct (16) [rsp+0x28] do-not-enreg[HS] hidden-struct-arg "Inline return value spill temp" <SixLabors.ImageSharp.Rectangle>
; V04 tmp2 [V04,T01] ( 3, 5 ) ref -> rdx class-hnd exact single-def "dup spill" <SixLabors.ImageSharp.Image`1[SixLabors.ImageSharp.PixelFormats.Rgba32]>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
@@ -19,19 +19,16 @@
;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V01.<X>k__BackingField (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V01.<Y>k__BackingField (fldOffset=0x4)" P-INDEP
-; V11 tmp9 [V11,T04] ( 2, 2 ) int -> rax single-def "field V01.<Width>k__BackingField (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T05] ( 2, 2 ) int -> rcx single-def "field V01.<Height>k__BackingField (fldOffset=0xc)" P-INDEP
-; V13 tmp11 [V13,T02] ( 2, 3 ) int -> [rsp+0x20] do-not-enreg[] "field V07.<Width>k__BackingField (fldOffset=0x0)" P-DEP
-; V14 tmp12 [V14,T03] ( 2, 3 ) int -> [rsp+0x24] do-not-enreg[] "field V07.<Height>k__BackingField (fldOffset=0x4)" P-DEP
+; V11 tmp9 [V11,T05] ( 2, 2 ) int -> rax single-def "field V01.<Width>k__BackingField (fldOffset=0x8)" P-INDEP
+; V12 tmp10 [V12,T06] ( 2, 2 ) int -> rcx single-def "field V01.<Height>k__BackingField (fldOffset=0xc)" P-INDEP
+; V13 tmp11 [V13,T03] ( 2, 3 ) int -> [rsp+0x20] do-not-enreg[] "field V07.<Width>k__BackingField (fldOffset=0x0)" P-DEP
+; V14 tmp12 [V14,T04] ( 2, 3 ) int -> [rsp+0x24] do-not-enreg[] "field V07.<Height>k__BackingField (fldOffset=0x4)" P-DEP
;
; Lcl frame size = 56
G_M14834_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 56
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
- mov qword ptr [rsp+0x30], rax
- ;; size=16 bbWeight=1 PerfScore 2.50
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M14834_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x10]
@@ -69,7 +66,7 @@ G_M14834_IG06: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 79, prolog size 16, PerfScore 17.50, instruction count 20, allocated bytes for code 79 (MethodHash=e8efc60d) for method SixLabors.ImageSharp.Processing.DefaultImageProcessorContext`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:GetCurrentSize():SixLabors.ImageSharp.Size:this (FullOpts)
+; Total bytes of code 67, prolog size 4, PerfScore 15.25, instruction count 17, allocated bytes for code 67 (MethodHash=e8efc60d) for method SixLabors.ImageSharp.Processing.DefaultImageProcessorContext`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:GetCurrentSize():SixLabors.ImageSharp.Size:this (FullOpts)
; ============================================================
Unwind Info:
-38 (-14.07%) : 19901.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol:EffectiveInterfacesWithDefinitionUseSiteDiagnostics(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
@@ -17,7 +17,7 @@
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]>
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
; V08 tmp4 [V08,T00] ( 4, 24 ) ref -> rax class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-; V09 tmp5 [V09 ] ( 4, 10 ) struct (24) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V09 tmp5 [V09 ] ( 3, 6 ) struct (24) [rsp+0x38] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg "Inline stloc first use temp" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
; V10 tmp6 [V10,T03] ( 4, 13 ) int -> rbp "Inline stloc first use temp"
; V11 tmp7 [V11,T05] ( 4, 7 ) ref -> rsi "field V02.array (fldOffset=0x0)" P-INDEP
;* V12 tmp8 [V12,T10] ( 0, 0 ) ref -> zero-ref single-def "field V03._array (fldOffset=0x0)" P-INDEP
@@ -26,7 +26,7 @@
;* V15 tmp11 [V15,T11] ( 0, 0 ) ref -> zero-ref single-def "field V06._array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16,T12] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
; V17 tmp13 [V17,T01] ( 3, 24 ) ref -> rcx "argument with side effect"
-; V18 tmp14 [V18 ] ( 4, 16 ) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
+; V18 tmp14 [V18 ] ( 2, 8 ) struct (24) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.UseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]>
; V19 cse0 [V19,T09] ( 3, 3 ) long -> rdi "CSE #02: aggressive"
; V20 cse1 [V20,T07] ( 3, 6 ) int -> rdi "CSE #03: aggressive"
; V21 cse2 [V21,T08] ( 3, 6 ) long -> rbp "CSE #04: aggressive"
@@ -70,7 +70,7 @@ G_M46519_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
xor ebp, ebp
xor r14d, r14d
test edi, edi
- jle G_M46519_IG10
+ jle G_M46519_IG08
;; size=53 bbWeight=1 PerfScore 16.75
G_M46519_IG03: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax]
@@ -82,15 +82,12 @@ G_M46519_IG03: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
call [rax]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- vxorps xmm0, xmm0, xmm0
- vmovdqu xmmword ptr [rsp+0x38], xmm0
- vmovdqu xmmword ptr [rsp+0x40], xmm0
test rax, rax
- je SHORT G_M46519_IG09
- ;; size=40 bbWeight=4 PerfScore 51.33
+ je SHORT G_M46519_IG07
+ ;; size=24 bbWeight=4 PerfScore 42.00
G_M46519_IG04: ; bbWeight=2, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, byref, isz
cmp byte ptr [rbx+0x19], 2
- je SHORT G_M46519_IG09
+ je SHORT G_M46519_IG07
lea rdx, [rsp+0x38]
mov rcx, rax
; gcrRegs +[rcx]
@@ -116,34 +113,26 @@ G_M46519_IG06: ; bbWeight=2, extend
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
- ;; size=27 bbWeight=2 PerfScore 8.50
-G_M46519_IG07: ; bbWeight=2, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x38]
- vmovdqu xmmword ptr [rsp+0x20], xmm0
- mov r8, qword ptr [rsp+0x48]
- mov qword ptr [rsp+0x30], r8
- ;; size=22 bbWeight=2 PerfScore 12.00
-G_M46519_IG08: ; bbWeight=2, extend
- lea r8, [rsp+0x20]
+ lea r8, [rsp+0x38]
mov rcx, rbx
; byrRegs +[rcx]
mov rdx, rbp
call [<unknown method>]
; byrRegs -[rcx]
; gcr arg pop 0
- ;; size=17 bbWeight=2 PerfScore 8.00
-G_M46519_IG09: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ ;; size=44 bbWeight=2 PerfScore 16.50
+G_M46519_IG07: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
lea ebp, [r14+0x01]
mov r14d, ebp
cmp edi, r14d
jg G_M46519_IG03
;; size=16 bbWeight=4 PerfScore 8.00
-G_M46519_IG10: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M46519_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
mov rax, rsi
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M46519_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M46519_IG09: ; bbWeight=1, epilog, nogc, extend
add rsp, 80
pop rbx
pop rbp
@@ -153,7 +142,7 @@ G_M46519_IG11: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 270, prolog size 26, PerfScore 154.17, instruction count 71, allocated bytes for code 270 (MethodHash=f5564a48) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol:EffectiveInterfacesWithDefinitionUseSiteDiagnostics(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
+; Total bytes of code 232, prolog size 26, PerfScore 132.83, instruction count 64, allocated bytes for code 232 (MethodHash=f5564a48) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol:EffectiveInterfacesWithDefinitionUseSiteDiagnostics(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
; ============================================================
Unwind Info:
+11 (+6.29%) : 16160.dasm - Microsoft.CodeAnalysis.MetadataTypeName:FromNamespaceAndTypeName(System.String,System.String,ubyte,int):Microsoft.CodeAnalysis.MetadataTypeName (FullOpts)
@@ -7,20 +7,29 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T00] ( 4, 4 ) byref -> rbx single-def
-; V01 arg0 [V01,T01] ( 4, 4 ) ref -> rdx class-hnd single-def <System.String>
-; V02 arg1 [V02,T02] ( 4, 4 ) ref -> rsi class-hnd single-def <System.String>
-; V03 arg2 [V03,T04] ( 3, 3 ) ubyte -> rdi single-def
-; V04 arg3 [V04,T05] ( 1, 1 ) int -> [rsp+0xD0] single-def
-; V05 loc0 [V05 ] ( 12, 12 ) struct (104) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.MetadataTypeName>
+; V00 RetBuf [V00,T00] ( 7, 7 ) byref -> rbx single-def
+; V01 arg0 [V01,T02] ( 4, 4 ) ref -> rsi class-hnd single-def <System.String>
+; V02 arg1 [V02,T03] ( 4, 4 ) ref -> rdi class-hnd single-def <System.String>
+; V03 arg2 [V03,T05] ( 3, 3 ) ubyte -> rbp single-def
+; V04 arg3 [V04,T08] ( 1, 1 ) int -> [rsp+0xE0] single-def
+; V05 loc0 [V05,T01] ( 8, 8 ) struct (104) [rsp+0x28] do-not-enreg[HSF] must-init hidden-struct-arg ld-addr-op <Microsoft.CodeAnalysis.MetadataTypeName>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 rat0 [V07,T03] ( 3, 6 ) byref -> rcx "ReplaceWithLclVar is creating a new local variable"
+;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[000..008)"
+;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[008..016)"
+;* V09 tmp3 [V09 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[016..024)"
+;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref single-def "V05.[024..032)"
+;* V11 tmp5 [V11 ] ( 0, 0 ) short -> zero-ref single-def "V05.[032..034)"
+; V12 tmp6 [V12,T06] ( 2, 2 ) short -> r14 single-def "V05.[034..036)"
+; V13 tmp7 [V13,T07] ( 2, 2 ) ubyte -> rbp single-def "V05.[036..037)"
+; V14 rat0 [V14,T04] ( 3, 6 ) byref -> rcx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 144
G_M8058_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
+ push rbp
push rbx
sub rsp, 144
xor eax, eax
@@ -31,60 +40,62 @@ G_M8058_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vmovdqu ymmword ptr [rsp+0x70], ymm4
mov rbx, rcx
; byrRegs +[rbx]
- mov rsi, r8
+ mov rsi, rdx
; gcrRegs +[rsi]
- mov edi, r9d
- ;; size=48 bbWeight=1 PerfScore 11.58
-G_M8058_IG02: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs +[rdx]
- mov gword ptr [rsp+0x30], rdx
+ mov rdi, r8
+ ; gcrRegs +[rdi]
+ mov ebp, r9d
+ ;; size=54 bbWeight=1 PerfScore 13.83
+G_M8058_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
lea rcx, [rsp+0x50]
- call [System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort]]
- ; gcrRegs -[rdx]
- ; gcr arg pop 0
- mov gword ptr [rsp+0x38], rsi
- lea rcx, [rsp+0x60]
mov rdx, rsi
; gcrRegs +[rdx]
call [System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort]]
- ; gcrRegs -[rdx rsi]
+ ; gcrRegs -[rdx]
+ ; gcr arg pop 0
+ lea rcx, [rsp+0x60]
+ mov rdx, rdi
+ ; gcrRegs +[rdx]
+ call [System.MemoryExtensions:AsMemory(System.String):System.ReadOnlyMemory`1[ushort]]
+ ; gcrRegs -[rdx]
; gcr arg pop 0
- xor rcx, rcx
- ; gcrRegs +[rcx]
- mov gword ptr [rsp+0x40], rcx
vxorps xmm0, xmm0, xmm0
vmovdqu xmmword ptr [rsp+0x70], xmm0
- mov word ptr [rsp+0x48], -1
- mov byte ptr [rsp+0x4C], dil
- mov esi, dword ptr [rsp+0xD0]
- mov word ptr [rsp+0x4A], si
- ;; size=76 bbWeight=1 PerfScore 15.83
-G_M8058_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rcx]
+ movzx rbp, bpl
+ movsx r14, word ptr [rsp+0xE0]
+ xor ecx, ecx
mov qword ptr [rsp+0x80], rcx
- ;; size=8 bbWeight=1 PerfScore 1.00
-G_M8058_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=61 bbWeight=1 PerfScore 13.33
+G_M8058_IG03: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0008 {rbx}, byref
mov qword ptr [rsp+0x88], rcx
+ mov gword ptr [rsp+0x30], rsi
+ mov gword ptr [rsp+0x38], rdi
mov rcx, rbx
; byrRegs +[rcx]
cmp byte ptr [rcx], cl
lea rdx, [rsp+0x28]
mov r8d, 104
call CORINFO_HELP_BULK_WRITEBARRIER
+ ; gcrRegs -[rsi rdi]
; byrRegs -[rcx]
; gcr arg pop 0
+ mov word ptr [rbx+0x20], -1
+ mov word ptr [rbx+0x22], r14w
+ mov byte ptr [rbx+0x24], bpl
mov rax, rbx
; byrRegs +[rax]
- ;; size=32 bbWeight=1 PerfScore 6.25
-G_M8058_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=57 bbWeight=1 PerfScore 11.25
+G_M8058_IG04: ; bbWeight=1, epilog, nogc, extend
add rsp, 144
pop rbx
+ pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=11 bbWeight=1 PerfScore 2.75
+ ;; size=14 bbWeight=1 PerfScore 3.75
-; Total bytes of code 175, prolog size 39, PerfScore 37.42, instruction count 41, allocated bytes for code 175 (MethodHash=5aabe085) for method Microsoft.CodeAnalysis.MetadataTypeName:FromNamespaceAndTypeName(System.String,System.String,ubyte,int):Microsoft.CodeAnalysis.MetadataTypeName (FullOpts)
+; Total bytes of code 186, prolog size 42, PerfScore 42.17, instruction count 47, allocated bytes for code 186 (MethodHash=5aabe085) for method Microsoft.CodeAnalysis.MetadataTypeName:FromNamespaceAndTypeName(System.String,System.String,ubyte,int):Microsoft.CodeAnalysis.MetadataTypeName (FullOpts)
; ============================================================
Unwind Info:
@@ -92,13 +103,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0D
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
+ CodeOffset: 0x0D UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 18 * 8 = 144 = 0x00090
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+20 (+6.92%) : 20766.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol+<>c:<.cctor>b__146_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
@@ -9,10 +9,10 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol+<>c>
-; V01 RetBuf [V01,T01] ( 4, 4 ) byref -> rbx single-def
-; V02 arg1 [V02,T00] ( 10, 14 ) byref -> rsi ld-addr-op single-def
+; V01 RetBuf [V01,T01] ( 6, 6 ) byref -> rsi single-def
+; V02 arg1 [V02,T00] ( 12, 16 ) byref -> rbx ld-addr-op single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 6, 3.50) struct (24) [rsp+0x48] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V04 tmp1 [V04,T12] ( 4, 2 ) struct (24) [rsp+0x40] do-not-enreg[HS] must-init hidden-struct-arg "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V06 tmp3 [V06,T07] ( 4, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]>
@@ -21,41 +21,47 @@
; V10 tmp7 [V10,T02] ( 4, 6 ) ref -> rcx class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
;* V11 tmp8 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V13 tmp10 [V13,T09] ( 2, 2 ) ref -> rax class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
+; V13 tmp10 [V13,T13] ( 2, 2 ) ref -> rbp class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions>
;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[] "field V02.DefaultType (fldOffset=0x0)" P-DEP
;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref do-not-enreg[] "field V02._extensions (fldOffset=0x8)" P-DEP
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V02.DefaultNullableAnnotation (fldOffset=0x10)" P-DEP
-; V17 tmp14 [V17,T10] ( 2, 1 ) ref -> rax "field V07.array (fldOffset=0x0)" P-INDEP
-; V18 tmp15 [V18,T11] ( 2, 1 ) ref -> rcx "field V08.array (fldOffset=0x0)" P-INDEP
-; V19 tmp16 [V19,T12] ( 2, 1 ) ref -> r14 single-def "field V12.DefaultType (fldOffset=0x0)" P-INDEP
-; V20 tmp17 [V20,T13] ( 2, 1 ) ref -> rax single-def "field V12._extensions (fldOffset=0x8)" P-INDEP
-;* V21 tmp18 [V21,T14] ( 0, 0 ) ubyte -> zero-ref "field V12.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
-;* V22 tmp19 [V22 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "Promoted implicit byref" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V23 tmp20 [V23,T04] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V24 tmp21 [V24 ] ( 2, 2 ) struct (24) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V25 tmp22 [V25,T05] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V26 tmp23 [V26,T06] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V27 cse0 [V27,T08] ( 3, 2.50) long -> rbp "CSE #01: aggressive"
+; V17 tmp14 [V17,T14] ( 2, 1 ) ref -> rax "field V07.array (fldOffset=0x0)" P-INDEP
+; V18 tmp15 [V18,T15] ( 2, 1 ) ref -> rcx "field V08.array (fldOffset=0x0)" P-INDEP
+;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V12.DefaultType (fldOffset=0x0)" P-INDEP
+;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._extensions (fldOffset=0x8)" P-INDEP
+;* V21 tmp18 [V21 ] ( 0, 0 ) ubyte -> zero-ref "field V12.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
+; V22 tmp19 [V22,T08] ( 4, 2.50) ref -> rdx "V04.[000..008)"
+; V23 tmp20 [V23,T09] ( 4, 2.50) ref -> rbp "V04.[008..016)"
+; V24 tmp21 [V24,T10] ( 4, 2.50) ubyte -> r15 "V04.[016..017)"
+;* V25 tmp22 [V25 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] "Promoted implicit byref" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V26 tmp23 [V26,T04] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
+; V27 tmp24 [V27 ] ( 2, 2 ) struct (24) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V28 tmp25 [V28,T05] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
+; V29 tmp26 [V29,T06] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
+; V30 cse0 [V30,T11] ( 3, 2.50) long -> rbp "CSE #01: aggressive"
;
-; Lcl frame size = 96
+; Lcl frame size = 88
G_M51917_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 96
+ sub rsp, 88
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
vmovdqu ymmword ptr [rsp+0x30], ymm4
- vmovdqa xmmword ptr [rsp+0x50], xmm4
- mov rbx, rdx
- ; byrRegs +[rbx]
- mov rsi, r8
+ mov qword ptr [rsp+0x50], rax
+ mov rsi, rdx
; byrRegs +[rsi]
- ;; size=32 bbWeight=1 PerfScore 10.08
+ mov rbx, r8
+ ; byrRegs +[rbx]
+ ;; size=40 bbWeight=1 PerfScore 11.33
G_M51917_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, isz
- mov rcx, gword ptr [rsi+0x08]
+ mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
test rcx, rcx
jne SHORT G_M51917_IG04
@@ -68,7 +74,7 @@ G_M51917_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rs
;; size=4 bbWeight=0.50 PerfScore 1.12
G_M51917_IG04: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0048 {rbx rsi}, byref
; gcrRegs -[rdi] +[rcx]
- mov rdx, gword ptr [rsi]
+ mov rdx, gword ptr [rbx]
; gcrRegs +[rdx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
@@ -92,7 +98,7 @@ G_M51917_IG05: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0048 {rbx rs
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
- mov rcx, rsi
+ mov rcx, rbx
; byrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rax]
@@ -110,50 +116,52 @@ G_M51917_IG06: ; bbWeight=0.50, gcrefRegs=4080 {rdi r14}, byrefRegs=0048
; gcr arg pop 0
test eax, eax
jne SHORT G_M51917_IG07
- mov rcx, gword ptr [rsi+0x08]
+ mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx rdi] +[rax]
- ; byrRegs -[rsi]
+ ; byrRegs -[rbx]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions:Create(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations+Extensions]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov gword ptr [rsp+0x48], r14
- mov gword ptr [rsp+0x50], rax
- mov byte ptr [rsp+0x58], 1
+ mov rbp, rax
+ ; gcrRegs +[rbp]
+ mov rdx, r14
+ ; gcrRegs +[rdx]
+ mov r15d, 1
jmp SHORT G_M51917_IG11
- ;; size=57 bbWeight=0.50 PerfScore 11.88
+ ;; size=54 bbWeight=0.50 PerfScore 10.75
G_M51917_IG07: ; bbWeight=0.50, gcrefRegs=4080 {rdi r14}, byrefRegs=0048 {rbx rsi}, byref, isz
- ; gcrRegs -[rax] +[rdi]
- ; byrRegs +[rsi]
+ ; gcrRegs -[rax rdx rbp] +[rdi]
+ ; byrRegs +[rbx]
cmp r14, rdi
je SHORT G_M51917_IG10
- mov rcx, gword ptr [rsi+0x08]
+ mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rcx rdi] +[rax]
; gcr arg pop 0
- mov rcx, gword ptr [rsi+0x08]
+ mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
;; size=23 bbWeight=0.50 PerfScore 6.12
G_M51917_IG08: ; bbWeight=0.50, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsi]
- vmovdqu xmmword ptr [rsp+0x30], xmm0
- mov r8, qword ptr [rsi+0x10]
- mov qword ptr [rsp+0x40], r8
+ vmovdqu xmm0, xmmword ptr [rbx]
+ vmovdqu xmmword ptr [rsp+0x28], xmm0
+ mov r8, qword ptr [rbx+0x10]
+ mov qword ptr [rsp+0x38], r8
;; size=19 bbWeight=0.50 PerfScore 4.00
G_M51917_IG09: ; bbWeight=0.50, isz, extend
mov gword ptr [rsp+0x20], rax
; gcr arg write
- lea r8, [rsp+0x30]
- lea rdx, [rsp+0x48]
+ lea r8, [rsp+0x28]
+ lea rdx, [rsp+0x40]
mov r9, r14
; gcrRegs +[r9]
mov rax, qword ptr [rcx]
@@ -161,40 +169,54 @@ G_M51917_IG09: ; bbWeight=0.50, isz, extend
mov rax, qword ptr [rax+0x58]
call [rax+0x18]<unknown method>
; gcrRegs -[rcx r9 r14]
- ; byrRegs -[rsi]
+ ; byrRegs -[rbx]
; gcr arg pop 0
+ mov rdx, gword ptr [rsp+0x40]
+ ; gcrRegs +[rdx]
+ mov rbp, gword ptr [rsp+0x48]
+ ; gcrRegs +[rbp]
+ movzx r15, byte ptr [rsp+0x50]
jmp SHORT G_M51917_IG11
- ;; size=30 bbWeight=0.50 PerfScore 5.62
-G_M51917_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref, nogc
- ; byrRegs +[rsi]
- vmovdqu xmm0, xmmword ptr [rsi]
- vmovdqu xmmword ptr [rsp+0x48], xmm0
- mov rax, qword ptr [rsi+0x10]
- mov qword ptr [rsp+0x58], rax
- ;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M51917_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rsi]
- mov rdi, rbx
- ; byrRegs +[rdi]
- lea rsi, bword ptr [rsp+0x48]
- ; byrRegs +[rsi]
- call CORINFO_HELP_ASSIGN_BYREF
- call CORINFO_HELP_ASSIGN_BYREF
- movsq
- mov rax, rbx
+ ;; size=46 bbWeight=0.50 PerfScore 7.12
+G_M51917_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
+ ; gcrRegs -[rdx rbp]
+ ; byrRegs +[rbx]
+ mov rdx, gword ptr [rbx]
+ ; gcrRegs +[rdx]
+ mov rbp, gword ptr [rbx+0x08]
+ ; gcrRegs +[rbp]
+ movzx r15, byte ptr [rbx+0x10]
+ ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M51917_IG11: ; bbWeight=1, gcrefRegs=0024 {rdx rbp}, byrefRegs=0040 {rsi}, byref
+ ; byrRegs -[rbx]
+ mov rcx, rsi
+ ; byrRegs +[rcx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[rdx]
+ ; byrRegs -[rcx]
+ lea rcx, bword ptr [rsi+0x08]
+ ; byrRegs +[rcx]
+ mov rdx, rbp
+ ; gcrRegs +[rdx]
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ ; gcrRegs -[rdx rbp]
+ ; byrRegs -[rcx]
+ mov byte ptr [rsi+0x10], r15b
+ mov rax, rsi
; byrRegs +[rax]
- ;; size=23 bbWeight=1 PerfScore 4.00
+ ;; size=27 bbWeight=1 PerfScore 4.25
G_M51917_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 96
+ add rsp, 88
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 4.25
-; Total bytes of code 289, prolog size 26, PerfScore 72.71, instruction count 83, allocated bytes for code 289 (MethodHash=b9803532) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol+<>c:<.cctor>b__146_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
+; Total bytes of code 309, prolog size 34, PerfScore 74.08, instruction count 90, allocated bytes for code 309 (MethodHash=b9803532) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol+<>c:<.cctor>b__146_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
; ============================================================
Unwind Info:
@@ -202,14 +224,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
...
+44 (+7.24%) : 23644.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:StoreToTemp(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,ubyte,int,ubyte,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocal:this (FullOpts)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 20 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 4, 3.50) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory>
-; V01 arg1 [V01,T04] ( 7, 6 ) ref -> rbp class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02,T07] ( 3, 3 ) byref -> r14 single-def
+; V00 this [V00,T07] ( 4, 3.50) ref -> rcx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory>
+; V01 arg1 [V01,T04] ( 7, 6 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 arg2 [V02,T08] ( 3, 3 ) byref -> rdi single-def
; V03 arg3 [V03,T03] ( 9, 6.50) ubyte -> rbx
-; V04 arg4 [V04,T20] ( 2, 1.50) int -> r15 single-def
-; V05 arg5 [V05,T30] ( 1, 1 ) ubyte -> [rsp+0xC8] single-def
-; V06 arg6 [V06,T27] ( 1, 1 ) ref -> [rsp+0xD0] class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
-; V07 loc0 [V07,T12] ( 3, 2.50) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V08 loc1 [V08,T09] ( 5, 4 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
-; V09 loc2 [V09,T08] ( 5, 4.50) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-; V10 loc3 [V10,T10] ( 4, 4 ) ref -> rdi class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundLocal>
+; V04 arg4 [V04,T25] ( 2, 1.50) int -> rbp single-def
+; V05 arg5 [V05,T32] ( 1, 1 ) ubyte -> [rsp+0xD8] single-def
+; V06 arg6 [V06,T29] ( 1, 1 ) ref -> [rsp+0xE0] class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V07 loc0 [V07,T17] ( 3, 2.50) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V08 loc1 [V08,T10] ( 5, 4 ) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V09 loc2 [V09,T09] ( 5, 4.50) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V10 loc3 [V10,T11] ( 4, 4 ) ref -> rbp class-hnd exact single-def <Microsoft.CodeAnalysis.CSharp.BoundLocal>
;* V11 loc4 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T32] ( 3, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V13 tmp1 [V13,T34] ( 3, 0 ) ref -> rax class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref
-; V16 tmp4 [V16 ] ( 8, 5 ) struct (24) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V16 tmp4 [V16,T12] ( 4, 4 ) struct (24) [rsp+0x50] do-not-enreg[HS] must-init hidden-struct-arg <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;* V17 tmp5 [V17 ] ( 0, 0 ) int -> zero-ref
-; V18 tmp6 [V18,T11] ( 4, 3.50) ref -> [rsp+0x38]
-; V19 tmp7 [V19,T01] ( 9, 18 ) ref -> [rsp+0x30] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedLocal>
-; V20 tmp8 [V20,T02] ( 9, 18 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundLocal>
-; V21 tmp9 [V21,T00] ( 9, 17 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator>
+; V18 tmp6 [V18,T13] ( 4, 3.50) ref -> r12
+; V19 tmp7 [V19,T01] ( 9, 18 ) ref -> [rsp+0x40] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedLocal>
+; V20 tmp8 [V20,T02] ( 9, 18 ) ref -> rbp class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundLocal>
+; V21 tmp9 [V21,T00] ( 9, 17 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator>
;* V22 tmp10 [V22 ] ( 0, 0 ) ref -> zero-ref single-def
;* V23 tmp11 [V23 ] ( 0, 0 ) ref -> zero-ref single-def
;* V24 tmp12 [V24 ] ( 0, 0 ) struct (24) zero-ref <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
@@ -39,31 +39,35 @@
;* V28 tmp16 [V28 ] ( 0, 0 ) int -> zero-ref single-def
;* V29 tmp17 [V29 ] ( 0, 0 ) ref -> zero-ref single-def
;* V30 tmp18 [V30 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V31 tmp19 [V31,T28] ( 0, 0 ) ref -> zero-ref single-def
-;* V32 tmp20 [V32,T31] ( 0, 0 ) int -> zero-ref single-def
-; V33 tmp21 [V33,T18] ( 2, 1.50) ref -> rdx single-def
-; V34 tmp22 [V34,T19] ( 2, 1.50) ref -> r15 single-def
-;* V35 tmp23 [V35,T21] ( 0, 0 ) ref -> zero-ref
-;* V36 tmp24 [V36,T24] ( 0, 0 ) int -> zero-ref
-; V37 tmp25 [V37,T13] ( 3, 2 ) ref -> rdx
-; V38 tmp26 [V38,T14] ( 3, 2 ) ref -> r15
-; V39 tmp27 [V39,T15] ( 3, 2 ) int -> r12
+;* V31 tmp19 [V31,T30] ( 0, 0 ) ref -> zero-ref single-def
+;* V32 tmp20 [V32,T33] ( 0, 0 ) int -> zero-ref single-def
+; V33 tmp21 [V33,T23] ( 2, 1.50) ref -> rdx single-def
+; V34 tmp22 [V34,T24] ( 2, 1.50) ref -> r12 single-def
+;* V35 tmp23 [V35,T26] ( 0, 0 ) ref -> zero-ref
+;* V36 tmp24 [V36,T27] ( 0, 0 ) int -> zero-ref
+; V37 tmp25 [V37,T18] ( 3, 2 ) ref -> rdx
+; V38 tmp26 [V38,T19] ( 3, 2 ) ref -> r12
+; V39 tmp27 [V39,T20] ( 3, 2 ) int -> r13
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp29 [V41,T16] ( 2, 2 ) ubyte -> rcx "Inline return value spill temp"
-; V42 tmp30 [V42,T25] ( 2, 1 ) ubyte -> r12 single-def "Inline return value spill temp"
+; V41 tmp29 [V41,T21] ( 2, 2 ) ubyte -> rcx "Inline return value spill temp"
+; V42 tmp30 [V42,T28] ( 2, 1 ) ubyte -> r13 single-def "Inline return value spill temp"
;* V43 tmp31 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V44 tmp32 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp33 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp35 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V48 tmp36 [V48,T29] ( 0, 0 ) ref -> zero-ref single-def "field V11.array (fldOffset=0x0)" P-INDEP
-; V49 tmp37 [V49,T22] ( 2, 1 ) ref -> rcx single-def "field V24.DefaultType (fldOffset=0x0)" P-INDEP
-; V50 tmp38 [V50,T23] ( 2, 1 ) ref -> rax single-def "field V24._extensions (fldOffset=0x8)" P-INDEP
-; V51 tmp39 [V51,T26] ( 2, 1 ) ubyte -> rdx single-def "field V24.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
-; V52 tmp40 [V52,T17] ( 2, 2 ) int -> r9 "argument with side effect"
-; V53 rat0 [V53,T05] ( 3, 5.71) int -> rax "ReplaceWithLclVar is creating a new local variable"
+;* V48 tmp36 [V48,T31] ( 0, 0 ) ref -> zero-ref single-def "field V11.array (fldOffset=0x0)" P-INDEP
+;* V49 tmp37 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "field V24.DefaultType (fldOffset=0x0)" P-INDEP
+;* V50 tmp38 [V50 ] ( 0, 0 ) ref -> zero-ref single-def "field V24._extensions (fldOffset=0x8)" P-INDEP
+;* V51 tmp39 [V51 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V24.DefaultNullableAnnotation (fldOffset=0x10)" P-INDEP
+; V52 tmp40 [V52,T14] ( 4, 3 ) ref -> [rsp+0x38] "V16.[000..008)"
+; V53 tmp41 [V53,T15] ( 4, 3 ) ref -> [rsp+0x30] "V16.[008..016)"
+; V54 tmp42 [V54,T16] ( 4, 3 ) ubyte -> [rsp+0x4C] "V16.[016..017)"
+; V55 tmp43 [V55,T05] ( 4, 8 ) byref -> [rsp+0x28] spill-single-def "Spilling address for field-by-field copy"
+; V56 tmp44 [V56,T22] ( 2, 2 ) int -> r9 "argument with side effect"
+; V57 rat0 [V57,T06] ( 3, 5.71) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M9852_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -74,27 +78,27 @@ G_M9852_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 88
+ sub rsp, 104
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x40], xmm4
+ vmovdqa xmmword ptr [rsp+0x50], xmm4
xor eax, eax
- mov qword ptr [rsp+0x50], rax
- mov rbp, rdx
- ; gcrRegs +[rbp]
- mov r14, r8
- ; byrRegs +[r14]
- mov ebx, r9d
- mov r15d, dword ptr [rsp+0xC0]
- ;; size=50 bbWeight=1 PerfScore 13.58
-G_M9852_IG02: ; bbWeight=1, gcrefRegs=0022 {rcx rbp}, byrefRegs=4000 {r14}, byref
- ; gcrRegs +[rcx]
- mov rsi, gword ptr [rcx+0x30]
+ mov qword ptr [rsp+0x60], rax
+ mov rsi, rdx
; gcrRegs +[rsi]
+ mov rdi, r8
+ ; byrRegs +[rdi]
+ mov ebx, r9d
+ mov ebp, dword ptr [rsp+0xD0]
+ ;; size=49 bbWeight=1 PerfScore 13.58
+G_M9852_IG02: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0080 {rdi}, byref
+ ; gcrRegs +[rcx]
+ mov r14, gword ptr [rcx+0x30]
+ ; gcrRegs +[r14]
movzx rax, bl
cmp eax, 5
- ja G_M9852_IG16
+ ja G_M9852_IG17
;; size=16 bbWeight=1 PerfScore 3.50
-G_M9852_IG03: ; bbWeight=0.86, gcrefRegs=0062 {rcx rbp rsi}, byrefRegs=4000 {r14}, byref
+G_M9852_IG03: ; bbWeight=0.86, gcrefRegs=4042 {rcx rsi r14}, byrefRegs=0080 {rdi}, byref
mov eax, eax
lea rdx, [reloc @RWD00]
mov edx, dword ptr [rdx+4*rax]
@@ -102,7 +106,7 @@ G_M9852_IG03: ; bbWeight=0.86, gcrefRegs=0062 {rcx rbp rsi}, byrefRegs=40
add rdx, r8
jmp rdx
;; size=24 bbWeight=0.86 PerfScore 5.14
-G_M9852_IG04: ; bbWeight=0.50, gcrefRegs=0062 {rcx rbp rsi}, byrefRegs=4000 {r14}, byref, isz
+G_M9852_IG04: ; bbWeight=0.50, gcrefRegs=4042 {rcx rsi r14}, byrefRegs=0080 {rdi}, byref, isz
mov rcx, gword ptr [rcx+0x20]
mov rcx, gword ptr [rcx+0x30]
cmp dword ptr [rcx], ecx
@@ -114,8 +118,8 @@ G_M9852_IG04: ; bbWeight=0.50, gcrefRegs=0062 {rcx rbp rsi}, byrefRegs=40
; gcrRegs +[rcx]
mov gword ptr [rsp+0x20], rcx
; gcr arg write
- mov rcx, rbp
- mov r8, rsi
+ mov rcx, rsi
+ mov r8, r14
; gcrRegs +[r8]
mov edx, 2
call [<unknown method>]
@@ -126,16 +130,16 @@ G_M9852_IG04: ; bbWeight=0.50, gcrefRegs=0062 {rcx rbp rsi}, byrefRegs=40
cmove ebx, ecx
jmp SHORT G_M9852_IG06
;; size=52 bbWeight=0.50 PerfScore 9.00
-G_M9852_IG05: ; bbWeight=0.50, gcrefRegs=0060 {rbp rsi}, byrefRegs=4000 {r14}, byref
+G_M9852_IG05: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0080 {rdi}, byref
mov ebx, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M9852_IG06: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=4000 {r14}, byref, isz
- mov r13, gword ptr [rbp+0x08]
+G_M9852_IG06: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0080 {rdi}, byref
+ mov r15, gword ptr [rsi+0x08]
+ ; gcrRegs +[r15]
+ mov r13, gword ptr [rsi+0x18]
; gcrRegs +[r13]
- mov r12, gword ptr [rbp+0x18]
- ; gcrRegs +[r12]
- lea rcx, [rsp+0x40]
- mov rdx, r12
+ lea rcx, [rsp+0x50]
+ mov rdx, r13
; gcrRegs +[rdx]
xor r9, r9
; gcrRegs +[r9]
@@ -143,189 +147,211 @@ G_M9852_IG06: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=4000 {r14
call [<unknown method>]
; gcrRegs -[rdx r9]
; gcr arg pop 0
- mov rdi, gword ptr [rsp+0xD0]
- ; gcrRegs +[rdi]
- test rdi, rdi
- mov gword ptr [rsp+0x38], rdi
- ; GC ptr vars +{V18}
- jne SHORT G_M9852_IG08
- ;; size=49 bbWeight=1 PerfScore 11.50
-G_M9852_IG07: ; bbWeight=0.50, gcrefRegs=3060 {rbp rsi r12 r13}, byrefRegs=4000 {r14}, byref
- ; gcrRegs -[rdi]
- ; GC ptr vars -{V18}
- mov rcx, gword ptr [rsp+0x40]
- ; gcrRegs +[rcx]
- mov rax, gword ptr [rsp+0x48]
+ mov r12, gword ptr [rsp+0xE0]
+ ; gcrRegs +[r12]
+ mov rax, gword ptr [rsp+0x50]
; gcrRegs +[rax]
- movzx rdx, byte ptr [rsp+0x50]
- mov gword ptr [rsp+0x40], rcx
- mov gword ptr [rsp+0x48], rax
- mov byte ptr [rsp+0x50], dl
+ mov rdx, gword ptr [rsp+0x58]
+ ; gcrRegs +[rdx]
+ movzx r8, byte ptr [rsp+0x60]
+ test r12, r12
+ jne G_M9852_IG11
+ ;; size=64 bbWeight=1 PerfScore 13.50
+G_M9852_IG07: ; bbWeight=0.50, gcrefRegs=E045 {rax rdx rsi r13 r14 r15}, byrefRegs=0080 {rdi}, byref
+ ; gcrRegs -[r12]
+ mov gword ptr [rsp+0x38], rax
+ ; GC ptr vars +{V52}
+ mov gword ptr [rsp+0x30], rdx
+ ; GC ptr vars +{V53}
+ mov dword ptr [rsp+0x4C], r8d
xor rcx, rcx
- test r15d, r15d
- mov rdi, rcx
- ; gcrRegs +[rdi]
- cmovge rdi, r13
- mov gword ptr [rsp+0x38], rdi
- ; GC ptr vars +{V18}
- ;; size=46 bbWeight=0.50 PerfScore 4.00
-G_M9852_IG08: ; bbWeight=1, gcVars=0000000000000800 {V18}, gcrefRegs=3060 {rbp rsi r12 r13}, byrefRegs=4000 {r14}, gcvars, byref
- ; gcrRegs -[rax rcx rdi]
+ ; gcrRegs +[rcx]
+ test ebp, ebp
+ mov r12, rcx
+ ; gcrRegs +[r12]
+ cmovge r12, r15
+ ;; size=26 bbWeight=0.50 PerfScore 2.00
+G_M9852_IG08: ; bbWeight=1, gcVars=000000000000C000 {V52 V53}, gcrefRegs=F040 {rsi r12 r13 r14 r15}, byrefRegs=0080 {rdi}, gcvars, byref
+ ; gcrRegs -[rax rcx rdx]
mov rcx, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedLocal
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x30], rax
+ mov gword ptr [rsp+0x40], rax
; GC ptr vars +{V19}
lea rcx, bword ptr [rax+0x10]
...
smoke_tests.nativeaot.windows.x64.checked.mch
-11 (-13.75%) : 10330.dasm - System.Reflection.Runtime.FieldInfos.NativeFormat.NativeFormatRuntimeFieldInfo:get_FieldRuntimeType():System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
@@ -8,29 +8,27 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd exact single-def <System.Reflection.Runtime.FieldInfos.NativeFormat.NativeFormatRuntimeFieldInfo>
-; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed <System.Reflection.Runtime.General.TypeContext>
+; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rsp+0x20] do-not-enreg[XHS] must-init addr-exposed hidden-struct-arg <System.Reflection.Runtime.General.TypeContext>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Internal.Metadata.NativeFormat.Handle>
-; V04 tmp2 [V04,T03] ( 2, 2 ) int -> rcx "field V03._value (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) int -> rcx "field V03._value (fldOffset=0x0)" P-INDEP
; V05 tmp3 [V05,T01] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
-; V06 tmp4 [V06 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Reflection.Runtime.General.TypeContext>
-; V07 tmp5 [V07,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M48038_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 64
- xorps xmm4, xmm4
- movaps xmmword ptr [rsp+0x20], xmm4
- movaps xmmword ptr [rsp+0x30], xmm4
+ sub rsp, 48
+ xor eax, eax
+ mov qword ptr [rsp+0x20], rax
+ mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=21 bbWeight=1 PerfScore 5.83
+ ;; size=20 bbWeight=1 PerfScore 3.75
G_M48038_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
- lea rdx, [rsp+0x30]
+ lea rdx, [rsp+0x20]
mov rax, qword ptr [rcx]
call [rax+0x170]<unknown method>
; gcrRegs -[rcx]
@@ -43,25 +41,19 @@ G_M48038_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov ecx, eax
mov rdx, gword ptr [rbx+0x38]
; gcrRegs +[rdx]
- ;; size=32 bbWeight=1 PerfScore 11.00
-G_M48038_IG03: ; bbWeight=1, nogc, extend
- movups xmm0, xmmword ptr [rsp+0x30]
- movups xmmword ptr [rsp+0x20], xmm0
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M48038_IG04: ; bbWeight=1, extend
lea r8, [rsp+0x20]
call System.Reflection.Runtime.General.TypeResolver:Resolve(Internal.Metadata.NativeFormat.Handle,Internal.Metadata.NativeFormat.MetadataReader,System.Reflection.Runtime.General.TypeContext):System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo
; gcrRegs -[rdx rbx] +[rax]
; gcr arg pop 0
nop
- ;; size=11 bbWeight=1 PerfScore 1.75
-G_M48038_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ ;; size=43 bbWeight=1 PerfScore 12.75
+G_M48038_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 80, prolog size 18, PerfScore 24.33, instruction count 22, allocated bytes for code 80 (MethodHash=38db4459) for method System.Reflection.Runtime.FieldInfos.NativeFormat.NativeFormatRuntimeFieldInfo:get_FieldRuntimeType():System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
+; Total bytes of code 69, prolog size 17, PerfScore 18.25, instruction count 20, allocated bytes for code 69 (MethodHash=38db4459) for method System.Reflection.Runtime.FieldInfos.NativeFormat.NativeFormatRuntimeFieldInfo:get_FieldRuntimeType():System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -74,5 +66,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-32 (-13.62%) : 7696.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
@@ -8,13 +8,13 @@
; control-flow guard enabled
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 6, 5 ) struct ( 8) [rsp+0x90] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
+; V00 arg0 [V00 ] ( 6, 5 ) struct ( 8) [rsp+0x70] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
; V01 arg1 [V01,T01] ( 5, 4.50) ref -> rbx class-hnd exact single-def <System.TimeZoneInfo>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.TimeSpan>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.TimeZoneInfo+AdjustmentRule>
-; V04 loc2 [V04 ] ( 3, 2 ) struct ( 8) [rsp+0x68] do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
-; V05 loc3 [V05 ] ( 2, 1 ) struct (24) [rsp+0x50] do-not-enreg[XS] addr-exposed <System.Globalization.DaylightTimeStruct>
-; V06 loc4 [V06,T09] ( 2, 1 ) ubyte -> rax
+; V04 loc2 [V04 ] ( 3, 2 ) struct ( 8) [rsp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+; V05 loc3 [V05 ] ( 2, 1 ) struct (24) [rsp+0x30] do-not-enreg[XHS] addr-exposed hidden-struct-arg <System.Globalization.DaylightTimeStruct>
+; V06 loc4 [V06,T08] ( 2, 1 ) ubyte -> rax
; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref <System.TimeSpan>
@@ -25,39 +25,37 @@
; V14 tmp7 [V14,T00] ( 7, 9 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo+AdjustmentRule>
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
-; V17 tmp10 [V17,T07] ( 2, 1 ) int -> rcx
+; V17 tmp10 [V17,T06] ( 2, 1 ) int -> rcx
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20 ] ( 6, 5 ) long -> [rsp+0x90] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
+; V20 tmp13 [V20 ] ( 6, 5 ) long -> [rsp+0x70] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
; V21 tmp14 [V21,T02] ( 6, 4 ) long -> rsi "field V02._ticks (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22 ] ( 3, 2 ) ubyte -> [rsp+0x68] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V23 tmp16 [V23 ] ( 2, 1.50) int -> [rsp+0x6C] do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x4)" P-DEP
+; V22 tmp15 [V22 ] ( 3, 2 ) ubyte -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP
+; V23 tmp16 [V23 ] ( 2, 1.50) int -> [rsp+0x4C] do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x4)" P-DEP
;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "field V08._ticks (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25 ] ( 0, 0 ) long -> zero-ref "field V09._ticks (fldOffset=0x0)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "field V10._ticks (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T08] ( 3, 1.50) long -> rdx "field V11._ticks (fldOffset=0x0)" P-INDEP
-;* V28 tmp21 [V28,T10] ( 0, 0 ) long -> zero-ref "field V12._ticks (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T07] ( 3, 1.50) long -> rdx "field V11._ticks (fldOffset=0x0)" P-INDEP
+;* V28 tmp21 [V28,T09] ( 0, 0 ) long -> zero-ref "field V12._ticks (fldOffset=0x0)" P-INDEP
; V29 tmp22 [V29,T03] ( 2, 2 ) long -> rdx "field V13._dateData (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T04] ( 2, 2 ) struct ( 8) [rsp+0x48] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+; V30 tmp23 [V30,T04] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
; V31 tmp24 [V31,T05] ( 2, 2 ) int -> r8 "argument with side effect"
-; V32 tmp25 [V32 ] ( 2, 2 ) struct (24) [rsp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Globalization.DaylightTimeStruct>
-; V33 tmp26 [V33,T06] ( 2, 2 ) long -> rcx "argument with side effect"
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M64406_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 112
- mov qword ptr [rsp+0x90], rcx
+ sub rsp, 80
+ mov qword ptr [rsp+0x70], rcx
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 4.50
+ ;; size=15 bbWeight=1 PerfScore 4.50
G_M64406_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, qword ptr [rbx+0x40]
- mov rdx, qword ptr [rsp+0x90]
- lea r9, [rsp+0x68]
+ mov rdx, qword ptr [rsp+0x70]
+ lea r9, [rsp+0x48]
mov rcx, rbx
; gcrRegs +[rcx]
xor r8d, r8d
@@ -68,10 +66,10 @@ G_M64406_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rdi]
test rdi, rdi
je G_M64406_IG07
- ;; size=40 bbWeight=1 PerfScore 6.50
+ ;; size=37 bbWeight=1 PerfScore 6.50
G_M64406_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- movzx rcx, byte ptr [rsp+0x68]
+ movzx rcx, byte ptr [rsp+0x48]
test cl, cl
jne SHORT G_M64406_IG04
lea rcx, gword ptr [(reloc)]
@@ -95,14 +93,14 @@ G_M64406_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
test eax, eax
je SHORT G_M64406_IG07
- lea rcx, [rsp+0x90]
+ lea rcx, [rsp+0x70]
call System.DateTime:get_Year():int:this
; gcr arg pop 0
mov r8d, eax
- mov rdx, qword ptr [rsp+0x68]
- mov qword ptr [rsp+0x48], rdx
+ mov rdx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x28], rdx
mov qword ptr [rsp+0x20], rdx
- lea rdx, [rsp+0x50]
+ lea rdx, [rsp+0x30]
mov rcx, rbx
; gcrRegs +[rcx]
mov r9, rdi
@@ -110,12 +108,8 @@ G_M64406_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
call <unknown method>
; gcrRegs -[rcx rbx r9]
; gcr arg pop 0
- mov rcx, qword ptr [rsp+0x90]
- movups xmm0, xmmword ptr [rsp+0x50]
- movups xmmword ptr [rsp+0x30], xmm0
- mov r8, qword ptr [rsp+0x60]
- mov qword ptr [rsp+0x40], r8
lea r8, [rsp+0x30]
+ mov rcx, qword ptr [rsp+0x70]
mov rdx, rdi
; gcrRegs +[rdx]
call <unknown method>
@@ -125,7 +119,7 @@ G_M64406_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
jne SHORT G_M64406_IG05
xor edx, edx
jmp SHORT G_M64406_IG06
- ;; size=123 bbWeight=0.50 PerfScore 12.50
+ ;; size=97 bbWeight=0.50 PerfScore 9.50
G_M64406_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rdx, qword ptr [rdi+0x20]
;; size=4 bbWeight=0.50 PerfScore 1.00
@@ -140,14 +134,14 @@ G_M64406_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, rsi
;; size=3 bbWeight=1 PerfScore 0.25
G_M64406_IG08: ; bbWeight=1, epilog, nogc, extend
- add rsp, 112
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 235, prolog size 7, PerfScore 30.38, instruction count 61, allocated bytes for code 235 (MethodHash=9cf60469) for method System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
+; Total bytes of code 203, prolog size 7, PerfScore 27.38, instruction count 57, allocated bytes for code 203 (MethodHash=9cf60469) for method System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
; ============================================================
Unwind Info:
@@ -160,7 +154,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 13 * 8 + 8 = 112 = 0x70
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
-32 (-13.62%) : 12695.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
@@ -7,13 +7,13 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 6, 5 ) struct ( 8) [rsp+0x90] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
+; V00 arg0 [V00 ] ( 6, 5 ) struct ( 8) [rsp+0x70] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.DateTime>
; V01 arg1 [V01,T01] ( 5, 4.50) ref -> rbx class-hnd exact single-def <System.TimeZoneInfo>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.TimeSpan>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.TimeZoneInfo+AdjustmentRule>
-; V04 loc2 [V04 ] ( 3, 2 ) struct ( 8) [rsp+0x68] do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
-; V05 loc3 [V05 ] ( 2, 1 ) struct (24) [rsp+0x50] do-not-enreg[XS] addr-exposed <System.Globalization.DaylightTimeStruct>
-; V06 loc4 [V06,T09] ( 2, 1 ) ubyte -> rax
+; V04 loc2 [V04 ] ( 3, 2 ) struct ( 8) [rsp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+; V05 loc3 [V05 ] ( 2, 1 ) struct (24) [rsp+0x30] do-not-enreg[XHS] addr-exposed hidden-struct-arg <System.Globalization.DaylightTimeStruct>
+; V06 loc4 [V06,T08] ( 2, 1 ) ubyte -> rax
; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V08 tmp1 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.TimeSpan>
;* V09 tmp2 [V09 ] ( 0, 0 ) struct ( 8) zero-ref <System.TimeSpan>
@@ -24,39 +24,37 @@
; V14 tmp7 [V14,T00] ( 7, 9 ) ref -> rdi class-hnd exact single-def "dup spill" <System.TimeZoneInfo+AdjustmentRule>
;* V15 tmp8 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp9 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
-; V17 tmp10 [V17,T07] ( 2, 1 ) int -> rcx
+; V17 tmp10 [V17,T06] ( 2, 1 ) int -> rcx
;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp13 [V20 ] ( 6, 5 ) long -> [rsp+0x90] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
+; V20 tmp13 [V20 ] ( 6, 5 ) long -> [rsp+0x70] do-not-enreg[X] addr-exposed single-def "field V00._dateData (fldOffset=0x0)" P-DEP
; V21 tmp14 [V21,T02] ( 6, 4 ) long -> rsi "field V02._ticks (fldOffset=0x0)" P-INDEP
-; V22 tmp15 [V22 ] ( 3, 2 ) ubyte -> [rsp+0x68] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP
-; V23 tmp16 [V23 ] ( 2, 1.50) int -> [rsp+0x6C] do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x4)" P-DEP
+; V22 tmp15 [V22 ] ( 3, 2 ) ubyte -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP
+; V23 tmp16 [V23 ] ( 2, 1.50) int -> [rsp+0x4C] do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x4)" P-DEP
;* V24 tmp17 [V24 ] ( 0, 0 ) long -> zero-ref "field V08._ticks (fldOffset=0x0)" P-INDEP
;* V25 tmp18 [V25 ] ( 0, 0 ) long -> zero-ref "field V09._ticks (fldOffset=0x0)" P-INDEP
;* V26 tmp19 [V26 ] ( 0, 0 ) long -> zero-ref "field V10._ticks (fldOffset=0x0)" P-INDEP
-; V27 tmp20 [V27,T08] ( 3, 1.50) long -> rdx "field V11._ticks (fldOffset=0x0)" P-INDEP
-;* V28 tmp21 [V28,T10] ( 0, 0 ) long -> zero-ref "field V12._ticks (fldOffset=0x0)" P-INDEP
+; V27 tmp20 [V27,T07] ( 3, 1.50) long -> rdx "field V11._ticks (fldOffset=0x0)" P-INDEP
+;* V28 tmp21 [V28,T09] ( 0, 0 ) long -> zero-ref "field V12._ticks (fldOffset=0x0)" P-INDEP
; V29 tmp22 [V29,T03] ( 2, 2 ) long -> rdx "field V13._dateData (fldOffset=0x0)" P-INDEP
-; V30 tmp23 [V30,T04] ( 2, 2 ) struct ( 8) [rsp+0x48] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+; V30 tmp23 [V30,T04] ( 2, 2 ) struct ( 8) [rsp+0x28] do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
; V31 tmp24 [V31,T05] ( 2, 2 ) int -> r8 "argument with side effect"
-; V32 tmp25 [V32 ] ( 2, 2 ) struct (24) [rsp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Globalization.DaylightTimeStruct>
-; V33 tmp26 [V33,T06] ( 2, 2 ) long -> rcx "argument with side effect"
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M64406_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 112
- mov qword ptr [rsp+0x90], rcx
+ sub rsp, 80
+ mov qword ptr [rsp+0x70], rcx
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 4.50
+ ;; size=15 bbWeight=1 PerfScore 4.50
G_M64406_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rsi, qword ptr [rbx+0x40]
- mov rdx, qword ptr [rsp+0x90]
- lea r9, [rsp+0x68]
+ mov rdx, qword ptr [rsp+0x70]
+ lea r9, [rsp+0x48]
mov rcx, rbx
; gcrRegs +[rcx]
xor r8d, r8d
@@ -67,10 +65,10 @@ G_M64406_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs +[rdi]
test rdi, rdi
je G_M64406_IG07
- ;; size=40 bbWeight=1 PerfScore 6.50
+ ;; size=37 bbWeight=1 PerfScore 6.50
G_M64406_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- movzx rcx, byte ptr [rsp+0x68]
+ movzx rcx, byte ptr [rsp+0x48]
test cl, cl
jne SHORT G_M64406_IG04
lea rcx, gword ptr [(reloc)]
@@ -94,14 +92,14 @@ G_M64406_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
test eax, eax
je SHORT G_M64406_IG07
- lea rcx, [rsp+0x90]
+ lea rcx, [rsp+0x70]
call System.DateTime:get_Year():int:this
; gcr arg pop 0
mov r8d, eax
- mov rdx, qword ptr [rsp+0x68]
- mov qword ptr [rsp+0x48], rdx
+ mov rdx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x28], rdx
mov qword ptr [rsp+0x20], rdx
- lea rdx, [rsp+0x50]
+ lea rdx, [rsp+0x30]
mov rcx, rbx
; gcrRegs +[rcx]
mov r9, rdi
@@ -109,12 +107,8 @@ G_M64406_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
call <unknown method>
; gcrRegs -[rcx rbx r9]
; gcr arg pop 0
- mov rcx, qword ptr [rsp+0x90]
- movups xmm0, xmmword ptr [rsp+0x50]
- movups xmmword ptr [rsp+0x30], xmm0
- mov r8, qword ptr [rsp+0x60]
- mov qword ptr [rsp+0x40], r8
lea r8, [rsp+0x30]
+ mov rcx, qword ptr [rsp+0x70]
mov rdx, rdi
; gcrRegs +[rdx]
call <unknown method>
@@ -124,7 +118,7 @@ G_M64406_IG04: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
jne SHORT G_M64406_IG05
xor edx, edx
jmp SHORT G_M64406_IG06
- ;; size=123 bbWeight=0.50 PerfScore 12.50
+ ;; size=97 bbWeight=0.50 PerfScore 9.50
G_M64406_IG05: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
mov rdx, qword ptr [rdi+0x20]
;; size=4 bbWeight=0.50 PerfScore 1.00
@@ -139,14 +133,14 @@ G_M64406_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, rsi
;; size=3 bbWeight=1 PerfScore 0.25
G_M64406_IG08: ; bbWeight=1, epilog, nogc, extend
- add rsp, 112
+ add rsp, 80
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 235, prolog size 7, PerfScore 30.38, instruction count 61, allocated bytes for code 235 (MethodHash=9cf60469) for method System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
+; Total bytes of code 203, prolog size 7, PerfScore 27.38, instruction count 57, allocated bytes for code 203 (MethodHash=9cf60469) for method System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
; ============================================================
Unwind Info:
@@ -159,7 +153,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 13 * 8 + 8 = 112 = 0x70
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+49 (+9.44%) : 13753.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
@@ -16,7 +16,7 @@
; V06 tmp1 [V06,T01] ( 5, 6.75) ref -> rdi class-hnd exact "spilling qmarkNull" <System.String>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V09 tmp4 [V09,T37] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.InvalidFilterCriteriaException>
+; V09 tmp4 [V09,T40] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.InvalidFilterCriteriaException>
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -25,14 +25,14 @@
; V15 tmp10 [V15,T09] ( 2, 4 ) byref -> rbp single-def "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp12 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V18 tmp13 [V18 ] ( 5, 3.50) struct (16) [rsp+0x48] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V18 tmp13 [V18,T29] ( 3, 1.50) struct (16) [rsp+0x58] do-not-enreg[HS] must-init hidden-struct-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp15 [V20,T23] ( 2, 2 ) int -> rcx "Span.get_Item index"
-; V21 tmp16 [V21,T27] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V20 tmp15 [V20,T25] ( 2, 2 ) int -> rcx "Span.get_Item index"
+; V21 tmp16 [V21,T30] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
; V22 tmp17 [V22,T05] ( 4, 4 ) ushort -> rcx "Inlining Arg"
;* V23 tmp18 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp19 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V25 tmp20 [V25,T28] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V25 tmp20 [V25,T31] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
; V26 tmp21 [V26,T06] ( 4, 4 ) ushort -> rcx "Inlining Arg"
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp23 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
@@ -40,8 +40,8 @@
; V30 tmp25 [V30,T02] ( 4, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp27 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V33 tmp28 [V33,T24] ( 2, 2 ) int -> r15 "Inlining Arg"
-; V34 tmp29 [V34,T20] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
+; V33 tmp28 [V33,T26] ( 2, 2 ) int -> r12 "Inlining Arg"
+; V34 tmp29 [V34,T22] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
;* V35 tmp30 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp31 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp32 [V37 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -52,30 +52,30 @@
;* V42 tmp37 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V43 tmp38 [V43,T07] ( 4, 4 ) int -> rax "Inlining Arg"
;* V44 tmp39 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V45 tmp40 [V45,T16] ( 3, 3 ) int -> r15 "Inlining Arg"
-; V46 tmp41 [V46,T21] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
+; V45 tmp40 [V45,T16] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V46 tmp41 [V46,T23] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
;* V47 tmp42 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp43 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V49 tmp44 [V49,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp44 [V49,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V50 tmp45 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V51 tmp46 [V51,T25] ( 2, 2 ) int -> rcx "Span.get_Item index"
+; V51 tmp46 [V51,T27] ( 2, 2 ) int -> rcx "Span.get_Item index"
;* V52 tmp47 [V52 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
;* V53 tmp48 [V53 ] ( 0, 0 ) byref -> zero-ref
-; V54 tmp49 [V54,T08] ( 4, 4 ) int -> rbx "Inlining Arg"
+; V54 tmp49 [V54,T08] ( 4, 4 ) int -> r12 "Inlining Arg"
;* V55 tmp50 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V56 tmp51 [V56 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V57 tmp52 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V58 tmp53 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V59 tmp54 [V59,T17] ( 4, 2.50) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp55 [V60,T12] ( 5, 3.50) int -> rbp "field V03._length (fldOffset=0x8)" P-INDEP
-; V61 tmp56 [V61,T18] ( 4, 2.50) byref -> r13 "field V04._reference (fldOffset=0x0)" P-INDEP
-; V62 tmp57 [V62,T19] ( 4, 2.50) int -> r12 "field V04._length (fldOffset=0x8)" P-INDEP
+; V59 tmp54 [V59,T21] ( 3, 2 ) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp55 [V60,T15] ( 4, 3 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
+; V61 tmp56 [V61,T17] ( 4, 2.50) byref -> [rsp+0x28] "field V04._reference (fldOffset=0x0)" P-INDEP
+; V62 tmp57 [V62,T19] ( 4, 2.50) int -> [rsp+0x54] "field V04._length (fldOffset=0x8)" P-INDEP
;* V63 tmp58 [V63 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp59 [V64 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V65 tmp60 [V65,T14] ( 5, 3 ) byref -> rbp "field V11._reference (fldOffset=0x0)" P-INDEP
-; V66 tmp61 [V66,T13] ( 5, 3.50) int -> r14 "field V11._length (fldOffset=0x8)" P-INDEP
-; V67 tmp62 [V67,T22] ( 2, 2 ) byref -> rbp single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-; V68 tmp63 [V68,T26] ( 2, 2 ) int -> r14 "field V12._length (fldOffset=0x8)" P-INDEP
+; V65 tmp60 [V65,T13] ( 5, 3 ) byref -> rbp "field V11._reference (fldOffset=0x0)" P-INDEP
+; V66 tmp61 [V66,T12] ( 5, 3.50) int -> r14 "field V11._length (fldOffset=0x8)" P-INDEP
+; V67 tmp62 [V67,T24] ( 2, 2 ) byref -> rbp single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V68 tmp63 [V68,T28] ( 2, 2 ) int -> r14 "field V12._length (fldOffset=0x8)" P-INDEP
;* V69 tmp64 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V13._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp65 [V70 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V71 tmp66 [V71 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP
@@ -88,10 +88,10 @@
;* V78 tmp73 [V78 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V79 tmp74 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V28._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp75 [V80 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V81 tmp76 [V81,T15] ( 5, 3 ) byref -> r14 "field V29._reference (fldOffset=0x0)" P-INDEP
-; V82 tmp77 [V82,T11] ( 6, 3.50) int -> r15 "field V29._length (fldOffset=0x8)" P-INDEP
-; V83 tmp78 [V83,T30] ( 2, 1 ) byref -> r14 single-def "field V31._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp79 [V84,T33] ( 2, 1 ) int -> r15 "field V31._length (fldOffset=0x8)" P-INDEP
+; V81 tmp76 [V81,T14] ( 5, 3 ) byref -> r13 "field V29._reference (fldOffset=0x0)" P-INDEP
+; V82 tmp77 [V82,T11] ( 6, 3.50) int -> r12 "field V29._length (fldOffset=0x8)" P-INDEP
+; V83 tmp78 [V83,T33] ( 2, 1 ) byref -> r13 single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+; V84 tmp79 [V84,T36] ( 2, 1 ) int -> r12 "field V31._length (fldOffset=0x8)" P-INDEP
;* V85 tmp80 [V85 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V86 tmp81 [V86 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V87 tmp82 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
@@ -100,18 +100,20 @@
;* V90 tmp85 [V90 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V91 tmp86 [V91 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp87 [V92 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V93 tmp88 [V93,T31] ( 2, 1 ) byref -> r13 single-def "field V44._reference (fldOffset=0x0)" P-INDEP
-; V94 tmp89 [V94,T34] ( 2, 1 ) int -> r12 "field V44._length (fldOffset=0x8)" P-INDEP
+; V93 tmp88 [V93,T34] ( 2, 1 ) byref -> rax single-def "field V44._reference (fldOffset=0x0)" P-INDEP
+; V94 tmp89 [V94,T37] ( 2, 1 ) int -> rdx "field V44._length (fldOffset=0x8)" P-INDEP
;* V95 tmp90 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "field V50._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp91 [V96 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
-; V97 tmp92 [V97,T32] ( 2, 1 ) byref -> rdi single-def "field V55._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp93 [V98,T35] ( 2, 1 ) int -> rbx "field V55._length (fldOffset=0x8)" P-INDEP
-; V99 tmp94 [V99 ] ( 9, 9 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V100 tmp95 [V100 ] ( 6, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V101 tmp96 [V101,T38] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V102 cse0 [V102,T29] ( 3, 1.50) int -> rbx "CSE #02: moderate"
+; V97 tmp92 [V97,T35] ( 2, 1 ) byref -> rbp single-def "field V55._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp93 [V98,T38] ( 2, 1 ) int -> r12 "field V55._length (fldOffset=0x8)" P-INDEP
+; V99 tmp94 [V99,T18] ( 4, 2.50) byref -> rbp "V18.[000..008)"
+; V100 tmp95 [V100,T20] ( 4, 2.50) int -> r14 "V18.[008..012)"
+; V101 tmp96 [V101 ] ( 9, 9 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V102 tmp97 [V102 ] ( 6, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V103 tmp98 [V103,T41] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+; V104 cse0 [V104,T32] ( 3, 1.50) int -> r12 "CSE #02: moderate"
;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M29177_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -122,17 +124,17 @@ G_M29177_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 88
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
+ sub rsp, 104
xorps xmm4, xmm4
movaps xmmword ptr [rsp+0x30], xmm4
movaps xmmword ptr [rsp+0x40], xmm4
- mov qword ptr [rsp+0x50], rax
+ movaps xmmword ptr [rsp+0x50], xmm4
+ xor eax, eax
+ mov qword ptr [rsp+0x60], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, r8d
- ;; size=47 bbWeight=1 PerfScore 15.33
+ ;; size=47 bbWeight=1 PerfScore 16.33
G_M29177_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
@@ -199,23 +201,24 @@ G_M29177_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp
jne SHORT G_M29177_IG13
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M29177_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
- mov bword ptr [rsp+0x48], rbp
- mov dword ptr [rsp+0x50], r14d
jmp SHORT G_M29177_IG14
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M29177_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref
- mov bword ptr [rsp+0x38], rbp
- mov dword ptr [rsp+0x40], r14d
- lea rdx, [rsp+0x38]
- lea rcx, [rsp+0x48]
+ mov bword ptr [rsp+0x40], rbp
+ mov dword ptr [rsp+0x48], r14d
+ lea rdx, [rsp+0x40]
+ lea rcx, [rsp+0x58]
call <unknown method>
; byrRegs -[rbp]
; gcr arg pop 0
- ;; size=25 bbWeight=0.50 PerfScore 2.00
-G_M29177_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, bword ptr [rsp+0x48]
+ mov rbp, bword ptr [rsp+0x58]
+ ; byrRegs +[rbp]
+ mov r14d, dword ptr [rsp+0x60]
+ ;; size=35 bbWeight=0.50 PerfScore 3.00
+G_M29177_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
+ mov rdi, rbp
; byrRegs +[rdi]
- mov ebp, dword ptr [rsp+0x50]
+ mov r15d, r14d
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -224,51 +227,51 @@ G_M29177_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
test rax, rax
jne SHORT G_M29177_IG16
- ;; size=23 bbWeight=1 PerfScore 8.50
-G_M29177_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M29177_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=00A0 {rbp rdi}, byref, isz
; gcrRegs -[rax]
- xor r14, r14
- ; byrRegs +[r14]
- xor r15d, r15d
+ xor r13, r13
+ ; byrRegs +[r13]
+ xor r12d, r12d
jmp SHORT G_M29177_IG17
;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M29177_IG16: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref
+G_M29177_IG16: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=00A0 {rbp rdi}, byref
; gcrRegs +[rax]
- ; byrRegs -[r14]
- lea r14, bword ptr [rax+0x0C]
- ; byrRegs +[r14]
- mov r15d, dword ptr [rax+0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M29177_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref, isz
- ; gcrRegs -[rax]
- mov r13, r14
+ ; byrRegs -[r13]
+ lea r13, bword ptr [rax+0x0C]
; byrRegs +[r13]
- mov r12d, r15d
+ mov r12d, dword ptr [rax+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M29177_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=20A0 {rbp rdi r13}, byref, isz
+ ; gcrRegs -[rax]
+ mov bword ptr [rsp+0x28], r13
+ ; GC ptr vars +{V61}
+ mov dword ptr [rsp+0x54], r12d
mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
- call [rax+0x30]<unknown method>
+ mov r8, qword ptr [rbx]
+ call [r8+0x30]<unknown method>
; gcrRegs -[rcx rbx]
; gcr arg pop 0
cmp eax, 128
jne SHORT G_M29177_IG20
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M29177_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
- ; byrRegs -[r13]
- mov rcx, r14
+ ;; size=27 bbWeight=1 PerfScore 8.50
+G_M29177_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=20A0 {rbp rdi r13}, gcvars, byref, isz
+ ; GC ptr vars -{V61}
+ mov rcx, r13
; byrRegs +[rcx]
- mov r8d, r15d
+ mov r8d, r12d
mov edx, 43
call <unknown method>
; byrRegs -[rcx]
...
+49 (+9.46%) : 9562.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
@@ -16,7 +16,7 @@
; V06 tmp1 [V06,T01] ( 5, 6.75) ref -> rdi class-hnd exact "spilling qmarkNull" <System.String>
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref single-def
;* V08 tmp3 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V09 tmp4 [V09,T37] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.InvalidFilterCriteriaException>
+; V09 tmp4 [V09,T40] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.InvalidFilterCriteriaException>
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -24,14 +24,14 @@
; V14 tmp9 [V14,T09] ( 2, 4 ) byref -> rbp single-def "Inlining Arg"
;* V15 tmp10 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp12 [V17 ] ( 5, 3.50) struct (16) [rsp+0x48] do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+; V17 tmp12 [V17,T29] ( 3, 1.50) struct (16) [rsp+0x58] do-not-enreg[HS] must-init hidden-struct-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp14 [V19,T23] ( 2, 2 ) int -> rcx "Span.get_Item index"
-; V20 tmp15 [V20,T27] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V19 tmp14 [V19,T25] ( 2, 2 ) int -> rcx "Span.get_Item index"
+; V20 tmp15 [V20,T30] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
; V21 tmp16 [V21,T05] ( 4, 4 ) ushort -> rcx "Inlining Arg"
;* V22 tmp17 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp18 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V24 tmp19 [V24,T28] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+; V24 tmp19 [V24,T31] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
; V25 tmp20 [V25,T06] ( 4, 4 ) ushort -> rcx "Inlining Arg"
;* V26 tmp21 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp22 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
@@ -39,8 +39,8 @@
; V29 tmp24 [V29,T02] ( 4, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V30 tmp25 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp26 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp27 [V32,T24] ( 2, 2 ) int -> r15 "Inlining Arg"
-; V33 tmp28 [V33,T20] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
+; V32 tmp27 [V32,T26] ( 2, 2 ) int -> r12 "Inlining Arg"
+; V33 tmp28 [V33,T22] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
;* V34 tmp29 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp30 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp31 [V36 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -51,30 +51,30 @@
;* V41 tmp36 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V42 tmp37 [V42,T07] ( 4, 4 ) int -> rax "Inlining Arg"
;* V43 tmp38 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V44 tmp39 [V44,T16] ( 3, 3 ) int -> r15 "Inlining Arg"
-; V45 tmp40 [V45,T21] ( 2, 2 ) byref -> r13 single-def "Inlining Arg"
+; V44 tmp39 [V44,T16] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V45 tmp40 [V45,T23] ( 2, 2 ) byref -> rbx single-def "Inlining Arg"
;* V46 tmp41 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp42 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V48 tmp43 [V48,T36] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp43 [V48,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp44 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V50 tmp45 [V50,T25] ( 2, 2 ) int -> rcx "Span.get_Item index"
+; V50 tmp45 [V50,T27] ( 2, 2 ) int -> rcx "Span.get_Item index"
;* V51 tmp46 [V51 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inline stloc first use temp"
;* V52 tmp47 [V52 ] ( 0, 0 ) byref -> zero-ref
-; V53 tmp48 [V53,T08] ( 4, 4 ) int -> rbx "Inlining Arg"
+; V53 tmp48 [V53,T08] ( 4, 4 ) int -> r12 "Inlining Arg"
;* V54 tmp49 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp50 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V56 tmp51 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V57 tmp52 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V58 tmp53 [V58,T17] ( 4, 2.50) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-; V59 tmp54 [V59,T12] ( 5, 3.50) int -> rbp "field V03._length (fldOffset=0x8)" P-INDEP
-; V60 tmp55 [V60,T18] ( 4, 2.50) byref -> r13 "field V04._reference (fldOffset=0x0)" P-INDEP
-; V61 tmp56 [V61,T19] ( 4, 2.50) int -> r12 "field V04._length (fldOffset=0x8)" P-INDEP
+; V58 tmp53 [V58,T21] ( 3, 2 ) byref -> rdi single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+; V59 tmp54 [V59,T15] ( 4, 3 ) int -> r15 "field V03._length (fldOffset=0x8)" P-INDEP
+; V60 tmp55 [V60,T17] ( 4, 2.50) byref -> [rsp+0x28] "field V04._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp56 [V61,T19] ( 4, 2.50) int -> [rsp+0x54] "field V04._length (fldOffset=0x8)" P-INDEP
;* V62 tmp57 [V62 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V63 tmp58 [V63 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V64 tmp59 [V64,T14] ( 5, 3 ) byref -> rbp "field V10._reference (fldOffset=0x0)" P-INDEP
-; V65 tmp60 [V65,T13] ( 5, 3.50) int -> r14 "field V10._length (fldOffset=0x8)" P-INDEP
-; V66 tmp61 [V66,T22] ( 2, 2 ) byref -> rbp single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V67 tmp62 [V67,T26] ( 2, 2 ) int -> r14 "field V11._length (fldOffset=0x8)" P-INDEP
+; V64 tmp59 [V64,T13] ( 5, 3 ) byref -> rbp "field V10._reference (fldOffset=0x0)" P-INDEP
+; V65 tmp60 [V65,T12] ( 5, 3.50) int -> r14 "field V10._length (fldOffset=0x8)" P-INDEP
+; V66 tmp61 [V66,T24] ( 2, 2 ) byref -> rbp single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V67 tmp62 [V67,T28] ( 2, 2 ) int -> r14 "field V11._length (fldOffset=0x8)" P-INDEP
;* V68 tmp63 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
;* V69 tmp64 [V69 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP
;* V70 tmp65 [V70 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -87,10 +87,10 @@
;* V77 tmp72 [V77 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V78 tmp73 [V78 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp74 [V79 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-; V80 tmp75 [V80,T15] ( 5, 3 ) byref -> r14 "field V28._reference (fldOffset=0x0)" P-INDEP
-; V81 tmp76 [V81,T11] ( 6, 3.50) int -> r15 "field V28._length (fldOffset=0x8)" P-INDEP
-; V82 tmp77 [V82,T30] ( 2, 1 ) byref -> r14 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
-; V83 tmp78 [V83,T33] ( 2, 1 ) int -> r15 "field V30._length (fldOffset=0x8)" P-INDEP
+; V80 tmp75 [V80,T14] ( 5, 3 ) byref -> r13 "field V28._reference (fldOffset=0x0)" P-INDEP
+; V81 tmp76 [V81,T11] ( 6, 3.50) int -> r12 "field V28._length (fldOffset=0x8)" P-INDEP
+; V82 tmp77 [V82,T33] ( 2, 1 ) byref -> r13 single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+; V83 tmp78 [V83,T36] ( 2, 1 ) int -> r12 "field V30._length (fldOffset=0x8)" P-INDEP
;* V84 tmp79 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V85 tmp80 [V85 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V86 tmp81 [V86 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP
@@ -99,17 +99,19 @@
;* V89 tmp84 [V89 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
;* V90 tmp85 [V90 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V91 tmp86 [V91 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
-; V92 tmp87 [V92,T31] ( 2, 1 ) byref -> r13 single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-; V93 tmp88 [V93,T34] ( 2, 1 ) int -> r12 "field V43._length (fldOffset=0x8)" P-INDEP
+; V92 tmp87 [V92,T34] ( 2, 1 ) byref -> rax single-def "field V43._reference (fldOffset=0x0)" P-INDEP
+; V93 tmp88 [V93,T37] ( 2, 1 ) int -> rdx "field V43._length (fldOffset=0x8)" P-INDEP
;* V94 tmp89 [V94 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp90 [V95 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
-; V96 tmp91 [V96,T32] ( 2, 1 ) byref -> rdi single-def "field V54._reference (fldOffset=0x0)" P-INDEP
-; V97 tmp92 [V97,T35] ( 2, 1 ) int -> rbx "field V54._length (fldOffset=0x8)" P-INDEP
-; V98 tmp93 [V98 ] ( 9, 9 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V99 tmp94 [V99 ] ( 6, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V100 cse0 [V100,T29] ( 3, 1.50) int -> rbx "CSE #02: moderate"
+; V96 tmp91 [V96,T35] ( 2, 1 ) byref -> rbp single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+; V97 tmp92 [V97,T38] ( 2, 1 ) int -> r12 "field V54._length (fldOffset=0x8)" P-INDEP
+; V98 tmp93 [V98,T18] ( 4, 2.50) byref -> rbp "V17.[000..008)"
+; V99 tmp94 [V99,T20] ( 4, 2.50) int -> r14 "V17.[008..012)"
+; V100 tmp95 [V100 ] ( 9, 9 ) struct (16) [rsp+0x40] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V101 tmp96 [V101 ] ( 6, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V102 cse0 [V102,T32] ( 3, 1.50) int -> r12 "CSE #02: moderate"
;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M29177_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -120,17 +122,17 @@ G_M29177_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 88
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
+ sub rsp, 104
xorps xmm4, xmm4
movaps xmmword ptr [rsp+0x30], xmm4
movaps xmmword ptr [rsp+0x40], xmm4
- mov qword ptr [rsp+0x50], rax
+ movaps xmmword ptr [rsp+0x50], xmm4
+ xor eax, eax
+ mov qword ptr [rsp+0x60], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov esi, r8d
- ;; size=47 bbWeight=1 PerfScore 15.33
+ ;; size=47 bbWeight=1 PerfScore 16.33
G_M29177_IG02: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
@@ -197,23 +199,24 @@ G_M29177_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp
jne SHORT G_M29177_IG13
;; size=4 bbWeight=0.50 PerfScore 0.62
G_M29177_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
- mov bword ptr [rsp+0x48], rbp
- mov dword ptr [rsp+0x50], r14d
jmp SHORT G_M29177_IG14
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
G_M29177_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref
- mov bword ptr [rsp+0x38], rbp
- mov dword ptr [rsp+0x40], r14d
- lea rdx, [rsp+0x38]
- lea rcx, [rsp+0x48]
+ mov bword ptr [rsp+0x40], rbp
+ mov dword ptr [rsp+0x48], r14d
+ lea rdx, [rsp+0x40]
+ lea rcx, [rsp+0x58]
call <unknown method>
; byrRegs -[rbp]
; gcr arg pop 0
- ;; size=25 bbWeight=0.50 PerfScore 2.00
-G_M29177_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, bword ptr [rsp+0x48]
+ mov rbp, bword ptr [rsp+0x58]
+ ; byrRegs +[rbp]
+ mov r14d, dword ptr [rsp+0x60]
+ ;; size=35 bbWeight=0.50 PerfScore 3.00
+G_M29177_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0020 {rbp}, byref, isz
+ mov rdi, rbp
; byrRegs +[rdi]
- mov ebp, dword ptr [rsp+0x50]
+ mov r15d, r14d
mov rcx, rbx
; gcrRegs +[rcx]
mov rax, qword ptr [rbx]
@@ -222,51 +225,51 @@ G_M29177_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
test rax, rax
jne SHORT G_M29177_IG16
- ;; size=23 bbWeight=1 PerfScore 8.50
-G_M29177_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0080 {rdi}, byref, isz
+ ;; size=20 bbWeight=1 PerfScore 7.00
+G_M29177_IG15: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=00A0 {rbp rdi}, byref, isz
; gcrRegs -[rax]
- xor r14, r14
- ; byrRegs +[r14]
- xor r15d, r15d
+ xor r13, r13
+ ; byrRegs +[r13]
+ xor r12d, r12d
jmp SHORT G_M29177_IG17
;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M29177_IG16: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0080 {rdi}, byref
+G_M29177_IG16: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=00A0 {rbp rdi}, byref
; gcrRegs +[rax]
- ; byrRegs -[r14]
- lea r14, bword ptr [rax+0x0C]
- ; byrRegs +[r14]
- mov r15d, dword ptr [rax+0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M29177_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=4080 {rdi r14}, byref, isz
- ; gcrRegs -[rax]
- mov r13, r14
+ ; byrRegs -[r13]
+ lea r13, bword ptr [rax+0x0C]
; byrRegs +[r13]
- mov r12d, r15d
+ mov r12d, dword ptr [rax+0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.25
+G_M29177_IG17: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=20A0 {rbp rdi r13}, byref, isz
+ ; gcrRegs -[rax]
+ mov bword ptr [rsp+0x28], r13
+ ; GC ptr vars +{V60}
+ mov dword ptr [rsp+0x54], r12d
mov rcx, rbx
; gcrRegs +[rcx]
- mov rax, qword ptr [rbx]
- call [rax+0x30]<unknown method>
+ mov r8, qword ptr [rbx]
+ call [r8+0x30]<unknown method>
; gcrRegs -[rcx rbx]
; gcr arg pop 0
cmp eax, 128
jne SHORT G_M29177_IG20
- ;; size=22 bbWeight=1 PerfScore 7.00
-G_M29177_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz
- ; byrRegs -[r13]
- mov rcx, r14
+ ;; size=27 bbWeight=1 PerfScore 8.50
+G_M29177_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=20A0 {rbp rdi r13}, gcvars, byref, isz
+ ; GC ptr vars -{V60}
+ mov rcx, r13
; byrRegs +[rcx]
- mov r8d, r15d
+ mov r8d, r12d
mov edx, 43
call <unknown method>
; byrRegs -[rcx]
; gcr arg pop 0
inc eax
...
+20 (+10.70%) : 5894.dasm - System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (FullOpts)
@@ -8,40 +8,47 @@
; control-flow guard enabled
; Final local variable assignments
;
-; V00 arg0 [V00,T07] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Reflection.MethodBase>
-; V01 arg1 [V01,T08] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Reflection.MethodBase>
-; V02 loc0 [V02 ] ( 4, 10 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V03 loc1 [V03 ] ( 4, 10 ) struct (16) [rsp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V04 loc2 [V04,T09] ( 3, 5 ) int -> rbx
-;* V05 loc3 [V05,T11] ( 0, 0 ) int -> zero-ref
+; V00 arg0 [V00,T11] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Reflection.MethodBase>
+; V01 arg1 [V01,T12] ( 3, 3 ) ref -> rbx class-hnd single-def <System.Reflection.MethodBase>
+; V02 loc0 [V02,T14] ( 3, 2.25) struct (16) [rsp+0x38] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
+; V03 loc1 [V03,T09] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[HS] must-init hidden-struct-arg ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
+;* V04 loc2 [V04,T15] ( 0, 0 ) int -> zero-ref
+; V05 loc3 [V05,T02] ( 6, 20.50) int -> rdi
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V09 tmp3 [V09,T05] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
-; V10 tmp4 [V10,T06] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
-; V11 tmp5 [V11,T01] ( 3, 24 ) ref -> rcx "argument with side effect"
-; V12 tmp6 [V12,T02] ( 3, 24 ) ref -> rcx "argument with side effect"
-; V13 tmp7 [V13,T03] ( 2, 16 ) ref -> rdi "argument with side effect"
-; V14 tmp8 [V14,T04] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V15 cse0 [V15,T10] ( 3, 2.50) int -> rbx "CSE #01: aggressive"
-; V16 rat0 [V16,T00] ( 8, 28.50) long -> rsi "Widened IV V05"
+; V09 tmp3 [V09,T10] ( 3, 6 ) int -> rbx "V02.[008..012)"
+; V10 tmp4 [V10,T06] ( 4, 6.50) int -> rsi "V03.[008..012)"
+; V11 tmp5 [V11,T07] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V12 tmp6 [V12,T08] ( 3, 6 ) ref -> rcx single-def "argument with side effect"
+; V13 tmp7 [V13,T00] ( 3, 24 ) ref -> rcx "argument with side effect"
+; V14 tmp8 [V14,T01] ( 3, 24 ) ref -> rcx "argument with side effect"
+; V15 tmp9 [V15,T03] ( 2, 16 ) ref -> r15 "argument with side effect"
+; V16 tmp10 [V16,T04] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V17 cse0 [V17,T13] ( 2, 4.25) byref -> rbp hoist "CSE #01: aggressive"
+; V18 cse1 [V18,T05] ( 3, 12 ) long -> r14 "CSE #02: aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M3867_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
+ push r14
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 64
+ sub rsp, 72
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
xorps xmm4, xmm4
- movaps xmmword ptr [rsp+0x20], xmm4
movaps xmmword ptr [rsp+0x30], xmm4
+ mov qword ptr [rsp+0x40], rax
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=23 bbWeight=1 PerfScore 7.83
+ ;; size=35 bbWeight=1 PerfScore 11.08
G_M3867_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
- lea rdx, [rsp+0x30]
+ lea rdx, [rsp+0x38]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x60]
call [CORINFO_HELP_DISPATCH_INDIRECT_CALL]
@@ -49,51 +56,55 @@ G_M3867_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
; gcr arg pop 0
mov rcx, rbx
; gcrRegs +[rcx]
- lea rdx, [rsp+0x20]
+ lea rdx, [rsp+0x28]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x60]
call [CORINFO_HELP_DISPATCH_INDIRECT_CALL]
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- mov ebx, dword ptr [rsp+0x38]
- cmp ebx, dword ptr [rsp+0x28]
+ mov ebx, dword ptr [rsp+0x40]
+ mov esi, dword ptr [rsp+0x30]
+ cmp ebx, esi
je SHORT G_M3867_IG05
- ;; size=49 bbWeight=1 PerfScore 19.25
+ ;; size=51 bbWeight=1 PerfScore 18.50
G_M3867_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M3867_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+ add rsp, 72
pop rbx
+ pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M3867_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- xor esi, esi
- test ebx, ebx
- jle SHORT G_M3867_IG07
+ xor edi, edi
+ test esi, esi
+ jle SHORT G_M3867_IG08
;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M3867_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp esi, dword ptr [rsp+0x38]
- jae SHORT G_M3867_IG09
- mov rcx, bword ptr [rsp+0x30]
- ; byrRegs +[rcx]
- mov rcx, gword ptr [rcx+8*rsi]
+G_M3867_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rbp, bword ptr [rsp+0x38]
+ ; byrRegs +[rbp]
+ ;; size=5 bbWeight=0.25 PerfScore 0.25
+G_M3867_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0020 {rbp}, byref, isz
+ cmp edi, ebx
+ jae SHORT G_M3867_IG10
+ mov r14d, edi
+ mov rcx, gword ptr [rbp+8*r14]
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
mov rax, qword ptr [rcx]
mov rax, qword ptr [rax+0x48]
call [CORINFO_HELP_DISPATCH_INDIRECT_CALL]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov rdi, rax
- ; gcrRegs +[rdi]
- cmp esi, dword ptr [rsp+0x28]
- jae SHORT G_M3867_IG09
- mov rcx, bword ptr [rsp+0x20]
+ mov r15, rax
+ ; gcrRegs +[r15]
+ mov rcx, bword ptr [rsp+0x28]
; byrRegs +[rcx]
- mov rcx, gword ptr [rcx+8*rsi]
+ mov rcx, gword ptr [rcx+8*r14]
; gcrRegs +[rcx]
; byrRegs -[rcx]
mov rax, qword ptr [rcx]
@@ -104,34 +115,38 @@ G_M3867_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rcx, rdi
+ mov rcx, r15
; gcrRegs +[rcx]
call System.Type:op_Equality(System.Type,System.Type):ubyte
- ; gcrRegs -[rax rcx rdx rdi]
+ ; gcrRegs -[rax rcx rdx r15]
; gcr arg pop 0
test eax, eax
je SHORT G_M3867_IG03
- inc esi
- cmp esi, ebx
- jl SHORT G_M3867_IG06
- ;; size=80 bbWeight=4 PerfScore 122.00
-G_M3867_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ inc edi
+ cmp edi, esi
+ jl SHORT G_M3867_IG07
+ ;; size=71 bbWeight=4 PerfScore 100.00
+G_M3867_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rbp]
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M3867_IG08: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+G_M3867_IG09: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 72
pop rbx
+ pop rbp
pop rsi
pop rdi
+ pop r14
+ pop r15
ret
- ;; size=8 bbWeight=0.50 PerfScore 1.38
-G_M3867_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M3867_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 20, PerfScore 152.83, instruction count 60, allocated bytes for code 187 (MethodHash=6262f0e4) for method System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (FullOpts)
+; Total bytes of code 207, prolog size 32, PerfScore 135.08, instruction count 71, allocated bytes for code 207 (MethodHash=6262f0e4) for method System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -139,12 +154,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
Details
Collection | Contexts with diffs | Improvements | Regressions | Same size | Improvements (bytes) | Regressions (bytes) |
---|---|---|---|---|---|---|
benchmarks.run.windows.x64.checked.mch | 792 | 358 | 120 | 314 | -13,259 | +4,300 |
benchmarks.run_pgo.windows.x64.checked.mch | 2,637 | 2,186 | 359 | 92 | -33,958 | +5,308 |
benchmarks.run_tiered.windows.x64.checked.mch | 176 | 89 | 28 | 59 | -2,583 | +784 |
coreclr_tests.run.windows.x64.checked.mch | 8,661 | 5,951 | 1,326 | 1,384 | -110,586 | +35,619 |
libraries.crossgen2.windows.x64.checked.mch | 3,474 | 2,210 | 415 | 849 | -67,229 | +9,423 |
libraries.pmi.windows.x64.checked.mch | 5,350 | 2,739 | 820 | 1,791 | -69,874 | +19,048 |
libraries_tests.run.windows.x64.Release.mch | 8,152 | 5,847 | 1,424 | 881 | -179,746 | +53,706 |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 6,856 | 3,922 | 782 | 2,152 | -127,598 | +26,224 |
realworld.run.windows.x64.checked.mch | 1,221 | 761 | 196 | 264 | -25,098 | +6,128 |
smoke_tests.nativeaot.windows.x64.checked.mch | 195 | 90 | 52 | 53 | -1,433 | +879 |
37,514 | 24,153 | 5,522 | 7,839 | -631,364 | +161,419 |
Collection | Contexts with diffs | Improvements | Regressions | Same PerfScore | Improvements (PerfScore) | Regressions (PerfScore) | PerfScore Overall in FullOpts |
---|---|---|---|---|---|---|---|
benchmarks.run.windows.x64.checked.mch | 792 | 374 | 97 | 321 | -5.06% | +1.62% | -0.0499% |
benchmarks.run_pgo.windows.x64.checked.mch | 2,637 | 1,173 | 359 | 1,105 | -1.71% | +0.90% | -0.0307% |
benchmarks.run_tiered.windows.x64.checked.mch | 176 | 93 | 21 | 62 | -4.46% | +1.81% | -0.0208% |
coreclr_tests.run.windows.x64.checked.mch | 8,661 | 6,077 | 2,153 | 431 | -4.03% | +4.17% | -0.0642% |
libraries.crossgen2.windows.x64.checked.mch | 3,474 | 2,233 | 359 | 882 | -6.60% | +2.15% | -0.0524% |
libraries.pmi.windows.x64.checked.mch | 5,350 | 2,850 | 709 | 1,791 | -4.73% | +2.21% | -0.0388% |
libraries_tests.run.windows.x64.Release.mch | 8,152 | 5,312 | 1,291 | 1,549 | -2.83% | +3.31% | -0.0478% |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 6,856 | 4,051 | 622 | 2,183 | -3.85% | +2.42% | -0.0455% |
realworld.run.windows.x64.checked.mch | 1,221 | 824 | 128 | 269 | -3.68% | +1.62% | -0.0945% |
smoke_tests.nativeaot.windows.x64.checked.mch | 195 | 104 | 41 | 50 | -5.58% | +3.65% | -0.0144% |
Collection | Diffed contexts | MinOpts | FullOpts | Missed, base | Missed, diff |
---|---|---|---|---|---|
benchmarks.run.windows.x64.checked.mch | 35,790 | 6 | 35,784 | 0 (0.00%) | 0 (0.00%) |
benchmarks.run_pgo.windows.x64.checked.mch | 125,646 | 71,606 | 54,040 | 0 (0.00%) | 9 (0.01%) |
benchmarks.run_tiered.windows.x64.checked.mch | 55,409 | 37,976 | 17,433 | 0 (0.00%) | 0 (0.00%) |
coreclr_tests.run.windows.x64.checked.mch | 598,571 | 357,227 | 241,344 | 0 (0.00%) | 0 (0.00%) |
libraries.crossgen2.windows.x64.checked.mch | 276,227 | 15 | 276,212 | 655 (0.24%) | 646 (0.23%) |
libraries.pmi.windows.x64.checked.mch | 316,003 | 6 | 315,997 | 3 (0.00%) | 16 (0.01%) |
libraries_tests.run.windows.x64.Release.mch | 739,772 | 512,110 | 227,662 | 2 (0.00%) | 27 (0.00%) |
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch | 338,429 | 21,992 | 316,437 | 1 (0.00%) | 10 (0.00%) |
realworld.run.windows.x64.checked.mch | 30,489 | 4 | 30,485 | 0 (0.00%) | 0 (0.00%) |
smoke_tests.nativeaot.windows.x64.checked.mch | 31,159 | 10 | 31,149 | 47 (0.15%) | 47 (0.15%) |
2,547,495 | 1,000,952 | 1,546,543 | 708 (0.03%) | 755 (0.03%) |
benchmarks.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: 11237019 (overridden on cmd)
Total bytes of diff: 11228060 (overridden on cmd)
Total bytes of delta: -8959 (-0.08 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
387 : 10324.dasm (15.06% of base)
296 : 11439.dasm (6.61% of base)
176 : 7913.dasm (25.84% of base)
160 : 18955.dasm (23.92% of base)
150 : 2517.dasm (7.89% of base)
150 : 22892.dasm (7.89% of base)
130 : 2511.dasm (7.78% of base)
130 : 22885.dasm (7.78% of base)
105 : 2320.dasm (7.43% of base)
105 : 22184.dasm (7.27% of base)
101 : 30758.dasm (4.95% of base)
97 : 5489.dasm (2.68% of base)
97 : 21270.dasm (2.68% of base)
92 : 27124.dasm (4.70% of base)
81 : 22645.dasm (12.13% of base)
78 : 2473.dasm (1.69% of base)
76 : 5205.dasm (11.33% of base)
71 : 28405.dasm (5.55% of base)
69 : 22849.dasm (1.50% of base)
68 : 26979.dasm (5.79% of base)
Top file improvements (bytes):
-1277 : 23457.dasm (-23.80% of base)
-968 : 20134.dasm (-15.63% of base)
-943 : 13407.dasm (-16.57% of base)
-925 : 14819.dasm (-12.51% of base)
-512 : 13624.dasm (-13.51% of base)
-262 : 7153.dasm (-24.19% of base)
-197 : 16240.dasm (-19.39% of base)
-197 : 312.dasm (-19.39% of base)
-189 : 14133.dasm (-6.65% of base)
-170 : 16372.dasm (-17.19% of base)
-170 : 444.dasm (-17.19% of base)
-155 : 16018.dasm (-17.22% of base)
-155 : 90.dasm (-17.22% of base)
-131 : 13284.dasm (-7.57% of base)
-120 : 7691.dasm (-14.48% of base)
-119 : 26411.dasm (-3.85% of base)
-116 : 12833.dasm (-4.49% of base)
-115 : 26037.dasm (-8.94% of base)
-112 : 25846.dasm (-4.44% of base)
-101 : 25821.dasm (-1.34% of base)
62 total files with Code Size differences (36 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
387 (15.06% of base) : 10324.dasm - System.RuntimeType:GetMember(System.String,int,int):System.Reflection.MemberInfo[]:this (FullOpts)
296 ( 6.61% of base) : 11439.dasm - Utf8Json.Formatters.ISO8601DateTimeFormatter:Deserialize(byref,Utf8Json.IJsonFormatterResolver):System.DateTime:this (FullOpts)
176 (25.84% of base) : 7913.dasm - System.RuntimeType:GetMembers(int):System.Reflection.MemberInfo[]:this (FullOpts)
160 (23.92% of base) : 18955.dasm - System.RuntimeType:GetMembers(int):System.Reflection.MemberInfo[]:this (FullOpts)
150 ( 7.89% of base) : 2517.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitLiteralAfterAtomicLoop|157_5(byref):this (FullOpts)
150 ( 7.89% of base) : 22892.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitLiteralAfterAtomicLoop|157_5(byref):this (FullOpts)
130 ( 7.78% of base) : 2511.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (FullOpts)
130 ( 7.78% of base) : 22885.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (FullOpts)
105 ( 7.43% of base) : 2320.dasm - System.RuntimeType:CreateInstanceImpl(int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
105 ( 7.27% of base) : 22184.dasm - System.RuntimeType:CreateInstanceImpl(int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
101 ( 4.95% of base) : 30758.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (FullOpts)
97 ( 2.68% of base) : 5489.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
97 ( 2.68% of base) : 21270.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
92 ( 4.70% of base) : 27124.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (FullOpts)
81 (12.13% of base) : 22645.dasm - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
78 ( 1.69% of base) : 2473.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (FullOpts)
76 (11.33% of base) : 5205.dasm - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
71 ( 5.55% of base) : 28405.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupSymbolInAliases(System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.AliasAndUsingDirective],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.AliasAndExternAliasDirective],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,ubyte,byref):this (FullOpts)
69 ( 1.50% of base) : 22849.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (FullOpts)
68 ( 5.79% of base) : 26979.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetFirstToken(Microsoft.CodeAnalysis.SyntaxNode,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
Top method improvements (bytes):
-1277 (-23.80% of base) : 23457.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:FirstSpan(System.Buffers.ReadOnlySequence`1[ushort]):int:this (FullOpts)
-968 (-15.63% of base) : 20134.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:First(System.Buffers.ReadOnlySequence`1[ushort]):int:this (FullOpts)
-943 (-16.57% of base) : 13407.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ubyte]:First(System.Buffers.ReadOnlySequence`1[ubyte]):int:this (FullOpts)
-925 (-12.51% of base) : 14819.dasm - System.Text.Json.Document.Tests.Perf_DocumentParse:ReadJson400KB(System.Text.Json.JsonElement) (FullOpts)
-512 (-13.51% of base) : 13624.dasm - System.Text.Json.Document.Tests.Perf_DocumentParse:ReadJson400B(System.Text.Json.JsonElement) (FullOpts)
-262 (-24.19% of base) : 7153.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:IterateForEach(System.Buffers.ReadOnlySequence`1[ushort]):int:this (FullOpts)
-197 (-19.39% of base) : 16240.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-197 (-19.39% of base) : 312.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-189 (-6.65% of base) : 14133.dasm - System.Text.Tests.Perf_StringBuilder:Append_Memory():System.Text.StringBuilder:this (FullOpts)
-170 (-17.19% of base) : 16372.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-170 (-17.19% of base) : 444.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-155 (-17.22% of base) : 16018.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-155 (-17.22% of base) : 90.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-131 (-7.57% of base) : 13284.dasm - System.Text.Json.Document.Tests.Perf_DocumentParse:ReadJsonBasic(System.Text.Json.JsonElement) (FullOpts)
-120 (-14.48% of base) : 7691.dasm - System.Net.Security.SslStream:WriteSingleChunk[System.Net.Security.AsyncReadWriteAdapter](System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
-119 (-3.85% of base) : 26411.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValue(Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-116 (-4.49% of base) : 12833.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:CollectionsOfPrimitivesSerializeHandler(System.Text.Json.Utf8JsonWriter,MicroBenchmarks.Serializers.CollectionsOfPrimitives):this (FullOpts)
-115 (-8.94% of base) : 26037.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAlias(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (FullOpts)
-112 (-4.44% of base) : 25846.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeAcyclicInterfaces(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-101 (-1.34% of base) : 25821.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
Top method regressions (percentages):
176 (25.84% of base) : 7913.dasm - System.RuntimeType:GetMembers(int):System.Reflection.MemberInfo[]:this (FullOpts)
160 (23.92% of base) : 18955.dasm - System.RuntimeType:GetMembers(int):System.Reflection.MemberInfo[]:this (FullOpts)
387 (15.06% of base) : 10324.dasm - System.RuntimeType:GetMember(System.String,int,int):System.Reflection.MemberInfo[]:this (FullOpts)
81 (12.13% of base) : 22645.dasm - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
76 (11.33% of base) : 5205.dasm - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
150 ( 7.89% of base) : 2517.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitLiteralAfterAtomicLoop|157_5(byref):this (FullOpts)
150 ( 7.89% of base) : 22892.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitLiteralAfterAtomicLoop|157_5(byref):this (FullOpts)
130 ( 7.78% of base) : 2511.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (FullOpts)
130 ( 7.78% of base) : 22885.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (FullOpts)
105 ( 7.43% of base) : 2320.dasm - System.RuntimeType:CreateInstanceImpl(int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
105 ( 7.27% of base) : 22184.dasm - System.RuntimeType:CreateInstanceImpl(int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
35 ( 6.84% of base) : 24520.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[int]:ReadAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
296 ( 6.61% of base) : 11439.dasm - Utf8Json.Formatters.ISO8601DateTimeFormatter:Deserialize(byref,Utf8Json.IJsonFormatterResolver):System.DateTime:this (FullOpts)
68 ( 5.79% of base) : 26979.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetFirstToken(Microsoft.CodeAnalysis.SyntaxNode,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
71 ( 5.55% of base) : 28405.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupSymbolInAliases(System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.AliasAndUsingDirective],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.AliasAndExternAliasDirective],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,ubyte,byref):this (FullOpts)
12 ( 4.96% of base) : 2451.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitUncaptureUntilPopped|31():this (FullOpts)
12 ( 4.96% of base) : 22831.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitUncaptureUntilPopped|31():this (FullOpts)
101 ( 4.95% of base) : 30758.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (FullOpts)
92 ( 4.70% of base) : 27124.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (FullOpts)
44 ( 4.57% of base) : 28392.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupMembersInNamespace(Microsoft.CodeAnalysis.CSharp.LookupResult,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.String,int,int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref) (FullOpts)
Top method improvements (percentages):
-45 (-36.89% of base) : 32037.dasm - System.Collections.IterateForEach`1[int]:FrozenSet():int:this (FullOpts)
-41 (-29.71% of base) : 31689.dasm - System.Collections.IterateForEach`1[int]:FrozenDictionary():int:this (FullOpts)
-262 (-24.19% of base) : 7153.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:IterateForEach(System.Buffers.ReadOnlySequence`1[ushort]):int:this (FullOpts)
-1277 (-23.80% of base) : 23457.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:FirstSpan(System.Buffers.ReadOnlySequence`1[ushort]):int:this (FullOpts)
-197 (-19.39% of base) : 16240.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-197 (-19.39% of base) : 312.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-155 (-17.22% of base) : 16018.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-155 (-17.22% of base) : 90.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-170 (-17.19% of base) : 16372.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-170 (-17.19% of base) : 444.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-943 (-16.57% of base) : 13407.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ubyte]:First(System.Buffers.ReadOnlySequence`1[ubyte]):int:this (FullOpts)
-968 (-15.63% of base) : 20134.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:First(System.Buffers.ReadOnlySequence`1[ushort]):int:this (FullOpts)
-120 (-14.48% of base) : 7691.dasm - System.Net.Security.SslStream:WriteSingleChunk[System.Net.Security.AsyncReadWriteAdapter](System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
-16 (-14.41% of base) : 34483.dasm - HardwareIntrinsics.RayTracer.Packet256Tracer:TestRay(HardwareIntrinsics.RayTracer.RayPacket256,HardwareIntrinsics.RayTracer.Scene):System.Runtime.Intrinsics.Vector256`1[float]:this (FullOpts)
-512 (-13.51% of base) : 13624.dasm - System.Text.Json.Document.Tests.Perf_DocumentParse:ReadJson400B(System.Text.Json.JsonElement) (FullOpts)
-12 (-13.19% of base) : 5331.dasm - System.Tests.Perf_Int128:.ctor():this (FullOpts)
-12 (-12.63% of base) : 9852.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache:get_UtcNow():System.DateTime:this (FullOpts)
-925 (-12.51% of base) : 14819.dasm - System.Text.Json.Document.Tests.Perf_DocumentParse:ReadJson400KB(System.Text.Json.JsonElement) (FullOpts)
-54 (-11.97% of base) : 8281.dasm - System.Buffers.Tests.ReadOnlySequenceTests`1[ushort]:IterateGetPosition(System.Buffers.ReadOnlySequence`1[ushort]):int:this (FullOpts)
-23 (-11.86% of base) : 25894.dasm - Microsoft.CodeAnalysis.SyntaxNode:FindTokenInternal(int):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
benchmarks.run_pgo.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: 41427466 (overridden on cmd)
Total bytes of diff: 41398816 (overridden on cmd)
Total bytes of delta: -28650 (-0.07 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
174 : 90212.dasm (3.88% of base)
111 : 6801.dasm (2.35% of base)
110 : 90213.dasm (4.67% of base)
95 : 39186.dasm (2.02% of base)
94 : 114874.dasm (6.93% of base)
87 : 124234.dasm (6.39% of base)
83 : 30389.dasm (1.35% of base)
83 : 121295.dasm (1.35% of base)
83 : 57216.dasm (1.36% of base)
79 : 122967.dasm (5.78% of base)
79 : 122657.dasm (6.23% of base)
75 : 118864.dasm (5.47% of base)
55 : 64471.dasm (0.90% of base)
53 : 102093.dasm (0.86% of base)
53 : 114248.dasm (0.86% of base)
53 : 73972.dasm (0.86% of base)
53 : 30117.dasm (0.86% of base)
50 : 6805.dasm (0.62% of base)
50 : 39206.dasm (0.62% of base)
49 : 90208.dasm (0.86% of base)
Top file improvements (bytes):
-179 : 90738.dasm (-5.05% of base)
-94 : 76031.dasm (-6.43% of base)
-94 : 7989.dasm (-6.43% of base)
-94 : 22426.dasm (-6.43% of base)
-94 : 107727.dasm (-6.43% of base)
-74 : 106686.dasm (-6.46% of base)
-69 : 61459.dasm (-4.64% of base)
-63 : 123376.dasm (-20.19% of base)
-63 : 111198.dasm (-20.19% of base)
-62 : 70096.dasm (-4.07% of base)
-57 : 95794.dasm (-3.93% of base)
-54 : 19837.dasm (-14.32% of base)
-50 : 104841.dasm (-4.41% of base)
-50 : 107179.dasm (-4.41% of base)
-50 : 109094.dasm (-4.41% of base)
-50 : 101513.dasm (-4.41% of base)
-50 : 115207.dasm (-4.41% of base)
-50 : 74439.dasm (-4.41% of base)
-50 : 61985.dasm (-4.41% of base)
-50 : 57323.dasm (-4.41% of base)
76 total files with Code Size differences (43 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
174 ( 3.88% of base) : 90212.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (Tier1)
111 ( 2.35% of base) : 6801.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (Tier0-FullOpts)
110 ( 4.67% of base) : 90213.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,int,int,System.Nullable`1[int]):ubyte:this (Tier1)
95 ( 2.02% of base) : 39186.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (Tier0-FullOpts)
94 ( 6.93% of base) : 114874.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
87 ( 6.39% of base) : 124234.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
83 ( 1.35% of base) : 30389.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
83 ( 1.35% of base) : 121295.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
83 ( 1.36% of base) : 57216.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
79 ( 5.78% of base) : 122967.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
79 ( 6.23% of base) : 122657.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
75 ( 5.47% of base) : 118864.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
55 ( 0.90% of base) : 64471.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
53 ( 0.86% of base) : 102093.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
53 ( 0.86% of base) : 114248.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
53 ( 0.86% of base) : 73972.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
53 ( 0.86% of base) : 30117.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (Tier1)
50 ( 0.62% of base) : 6805.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
50 ( 0.62% of base) : 39206.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
49 ( 0.86% of base) : 90208.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier1)
Top method improvements (bytes):
-179 (-5.05% of base) : 90738.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
-94 (-6.43% of base) : 76031.dasm - System.Number+Grisu3:TryRun[double](double,int,byref):ubyte (Tier1)
-94 (-6.43% of base) : 7989.dasm - System.Number+Grisu3:TryRun[double](double,int,byref):ubyte (Tier1)
-94 (-6.43% of base) : 22426.dasm - System.Number+Grisu3:TryRun[double](double,int,byref):ubyte (Tier1)
-94 (-6.43% of base) : 107727.dasm - System.Number+Grisu3:TryRun[double](double,int,byref):ubyte (Tier1)
-74 (-6.46% of base) : 106686.dasm - System.IO.RandomAccess:ReadFileScatterAsync(Microsoft.Win32.SafeHandles.SafeFileHandle,long,int,long,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Tier1)
-69 (-4.64% of base) : 61459.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsync>d__5:MoveNext():this (Tier1-OSR)
-63 (-20.19% of base) : 123376.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-63 (-20.19% of base) : 111198.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-62 (-4.07% of base) : 70096.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier1-OSR)
-57 (-3.93% of base) : 95794.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:RegionAnalysisContext(Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax):Microsoft.CodeAnalysis.CSharp.RegionAnalysisContext:this (Tier1)
-54 (-14.32% of base) : 19837.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteConditionalExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
-50 (-4.41% of base) : 104841.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-50 (-4.41% of base) : 107179.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-50 (-4.41% of base) : 109094.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-50 (-4.41% of base) : 101513.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-50 (-4.41% of base) : 115207.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-50 (-4.41% of base) : 74439.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-50 (-4.41% of base) : 61985.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-50 (-4.41% of base) : 57323.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
Top method regressions (percentages):
15 (12.82% of base) : 91176.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
39 (10.29% of base) : 22430.dasm - System.Buffers.Text.FormattingHelpers:TryFormat[double](double,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (Tier1)
39 (10.29% of base) : 8016.dasm - System.Buffers.Text.FormattingHelpers:TryFormat[double](double,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (Tier1)
39 (10.29% of base) : 76035.dasm - System.Buffers.Text.FormattingHelpers:TryFormat[double](double,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (Tier1)
39 (10.29% of base) : 107735.dasm - System.Buffers.Text.FormattingHelpers:TryFormat[double](double,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte (Tier1)
13 ( 9.85% of base) : 90113.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:get_Type():Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
13 ( 9.85% of base) : 90435.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:get_Type():Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
15 ( 8.67% of base) : 90154.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:Microsoft.Cci.ISignature.get_ReturnValueCustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
17 ( 8.10% of base) : 89289.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_ReturnsVoid():ubyte:this (Tier1)
94 ( 6.93% of base) : 114874.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
13 ( 6.91% of base) : 89224.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:get_ReturnType():Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
87 ( 6.39% of base) : 124234.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
79 ( 6.23% of base) : 122657.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
79 ( 5.78% of base) : 122967.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
75 ( 5.47% of base) : 118864.dasm - System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
110 ( 4.67% of base) : 90213.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location,int,int,System.Nullable`1[int]):ubyte:this (Tier1)
13 ( 4.25% of base) : 90440.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.GetType(Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.Cci.ITypeReference:this (Tier1)
174 ( 3.88% of base) : 90212.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (Tier1)
28 ( 3.64% of base) : 98626.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Tier1)
25 ( 3.18% of base) : 123405.dasm - System.RuntimeType:GetPropertyCandidates(System.String,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.PropertyInfo]:this (Tier1)
Top method improvements (percentages):
-27 (-20.77% of base) : 95691.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
-63 (-20.19% of base) : 123376.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-63 (-20.19% of base) : 111198.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-54 (-14.32% of base) : 19837.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteConditionalExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
-49 (-13.10% of base) : 48764.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteConditionalExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
-18 (-12.16% of base) : 95803.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundRoot():Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-21 (-9.68% of base) : 96700.dasm - Microsoft.CodeAnalysis.PEModule:GetMemoryReaderOrThrow(System.Reflection.Metadata.BlobHandle):System.Reflection.Metadata.BlobReader:this (Tier1)
-30 (-9.26% of base) : 95731.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.DefiniteAssignmentPass+LocalState,System.__Canon]:VisitMethodBodies(Microsoft.CodeAnalysis.CSharp.BoundBlock,Microsoft.CodeAnalysis.CSharp.BoundBlock):this (Tier1)
-12 (-7.95% of base) : 95482.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetUpperBoundNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-16 (-7.66% of base) : 95709.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol:get_Type():Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (Tier1)
-19 (-7.31% of base) : 96699.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:DecodeSignatureHeaderOrThrow(Microsoft.CodeAnalysis.PEModule,System.Reflection.Metadata.BlobHandle,byref):System.Reflection.Metadata.BlobReader (Tier1)
-16 (-7.08% of base) : 95798.dasm - Microsoft.CodeAnalysis.SyntaxNode:FirstAncestorOrSelf[System.__Canon](System.Func`2[System.__Canon,ubyte],ubyte):System.__Canon:this (Tier1)
-37 (-6.95% of base) : 122497.dasm - System.Linq.Enumerable:Sum[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal],System.Decimal,System.Decimal](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal],System.Decimal]):System.Decimal (Tier1)
-19 (-6.88% of base) : 91230.dasm - Microsoft.Cci.MetadataVisitor:Visit(System.Collections.Generic.IEnumerable`1[Microsoft.Cci.MethodImplementation]):this (Tier1)
-10 (-6.49% of base) : 96702.dasm - System.Reflection.Metadata.Ecma335.BlobHeap:GetBlobReader(System.Reflection.Metadata.BlobHandle):System.Reflection.Metadata.BlobReader:this (Tier1)
-74 (-6.46% of base) : 106686.dasm - System.IO.RandomAccess:ReadFileScatterAsync(Microsoft.Win32.SafeHandles.SafeFileHandle,long,int,long,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int] (Tier1)
-94 (-6.43% of base) : 76031.dasm - System.Number+Grisu3:TryRun[double](double,int,byref):ubyte (Tier1)
-94 (-6.43% of base) : 7989.dasm - System.Number+Grisu3:TryRun[double](double,int,byref):ubyte (Tier1)
-94 (-6.43% of base) : 22426.dasm - System.Number+Grisu3:TryRun[double](double,int,byref):ubyte (Tier1)
-94 (-6.43% of base) : 107727.dasm - System.Number+Grisu3:TryRun[double](double,int,byref):ubyte (Tier1)
benchmarks.run_tiered.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: 12523564 (overridden on cmd)
Total bytes of diff: 12521765 (overridden on cmd)
Total bytes of delta: -1799 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
194 : 47447.dasm (11.04% of base)
130 : 50333.dasm (7.78% of base)
78 : 16974.dasm (1.69% of base)
76 : 24222.dasm (11.33% of base)
53 : 11223.dasm (0.66% of base)
29 : 19534.dasm (2.66% of base)
29 : 43111.dasm (2.96% of base)
23 : 53971.dasm (0.75% of base)
21 : 40523.dasm (3.11% of base)
18 : 23733.dasm (3.89% of base)
17 : 20168.dasm (1.28% of base)
12 : 48825.dasm (1.92% of base)
12 : 40500.dasm (1.64% of base)
10 : 48806.dasm (0.47% of base)
9 : 53140.dasm (0.98% of base)
9 : 41110.dasm (0.70% of base)
9 : 43857.dasm (1.51% of base)
8 : 40563.dasm (1.15% of base)
7 : 32922.dasm (0.71% of base)
7 : 27740.dasm (0.72% of base)
Top file improvements (bytes):
-197 : 20128.dasm (-19.39% of base)
-155 : 3648.dasm (-17.30% of base)
-154 : 19684.dasm (-6.74% of base)
-133 : 53982.dasm (-15.54% of base)
-128 : 41210.dasm (-4.17% of base)
-115 : 43003.dasm (-8.94% of base)
-101 : 6009.dasm (-10.98% of base)
-97 : 43054.dasm (-23.89% of base)
-66 : 43866.dasm (-2.78% of base)
-61 : 19681.dasm (-6.72% of base)
-60 : 41646.dasm (-8.13% of base)
-60 : 43004.dasm (-1.17% of base)
-58 : 43813.dasm (-6.13% of base)
-54 : 12064.dasm (-14.32% of base)
-45 : 40730.dasm (-2.78% of base)
-40 : 54567.dasm (-8.15% of base)
-39 : 48828.dasm (-2.36% of base)
-34 : 29922.dasm (-5.86% of base)
-34 : 40120.dasm (-4.70% of base)
-33 : 43053.dasm (-2.32% of base)
59 total files with Code Size differences (35 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
194 (11.04% of base) : 47447.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (Tier1-OSR)
130 ( 7.78% of base) : 50333.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)
78 ( 1.69% of base) : 16974.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (Tier0-FullOpts)
76 (11.33% of base) : 24222.dasm - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
53 ( 0.66% of base) : 11223.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
29 ( 2.96% of base) : 43111.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundNodes(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
29 ( 2.66% of base) : 19534.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (Tier1)
23 ( 0.75% of base) : 53971.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
21 ( 3.11% of base) : 40523.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.TupleTypeDecoder:DecodeTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (Tier1)
18 ( 3.89% of base) : 23733.dasm - System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
17 ( 1.28% of base) : 20168.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
12 ( 1.64% of base) : 40500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_Arity():int:this (Tier1)
12 ( 1.92% of base) : 48825.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitIndexOfString_LeftToRight|157_1(byref):this (Tier1)
10 ( 0.47% of base) : 48806.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitAnchors|157_0(byref):ubyte:this (Tier1)
9 ( 1.51% of base) : 43857.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:ReportErrorIfHasConstraints(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax],Microsoft.CodeAnalysis.DiagnosticBag) (Tier1)
9 ( 0.98% of base) : 53140.dasm - System.Net.Security.SslStream:GenerateToken(System.ReadOnlySpan`1[ubyte]):System.Net.Security.ProtocolToken:this (Tier1)
9 ( 0.70% of base) : 41110.dasm - System.Reflection.InvokerEmitUtil:CreateInvokeDelegate_ObjSpanArgs(System.Reflection.MethodBase,ubyte):System.Reflection.InvokerEmitUtil+InvokeFunc_ObjSpanArgs (Tier1)
8 ( 1.15% of base) : 40563.dasm - Microsoft.CodeAnalysis.PEModule:TryExtractValueFromAttribute[ubyte](System.Reflection.Metadata.CustomAttributeHandle,byref,Microsoft.CodeAnalysis.PEModule+AttributeValueExtractor`1[ubyte]):ubyte:this (Tier1)
7 ( 0.72% of base) : 27740.dasm - System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__7`1[System.ValueTuple`4[System.__Canon,System.ReadOnlyMemory`1[ubyte],long,System.__Canon]]:MoveNext():this (Tier1)
7 ( 0.71% of base) : 32922.dasm - System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__8`2[System.ValueTuple`4[System.__Canon,System.Memory`1[ubyte],long,System.__Canon],int]:MoveNext():this (Tier1)
Top method improvements (bytes):
-197 (-19.39% of base) : 20128.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Tier1)
-155 (-17.30% of base) : 3648.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-154 (-6.74% of base) : 19684.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-133 (-15.54% of base) : 53982.dasm - System.Net.Security.SslStream:WriteSingleChunk[System.Net.Security.AsyncReadWriteAdapter](System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
-128 (-4.17% of base) : 41210.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValue(Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
-115 (-8.94% of base) : 43003.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAlias(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
-101 (-10.98% of base) : 6009.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (Tier1)
-97 (-23.89% of base) : 43054.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrVarKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
-66 (-2.78% of base) : 43866.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:ToDeclarationModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,Microsoft.CodeAnalysis.DiagnosticBag,ubyte):uint (Tier1)
-61 (-6.72% of base) : 19681.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-60 (-8.13% of base) : 41646.dasm - Benchmarks.SIMD.RayTracer.RayTracer:Shade(Benchmarks.SIMD.RayTracer.ISect,Benchmarks.SIMD.RayTracer.Scene,int):Benchmarks.SIMD.RayTracer.Color:this (Tier1)
-60 (-1.17% of base) : 43004.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
-58 (-6.13% of base) : 43813.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1)
-54 (-14.32% of base) : 12064.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteConditionalExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
-45 (-2.78% of base) : 40730.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol,System.Reflection.Metadata.PropertyDefinitionHandle,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder):this (Tier1)
-40 (-8.15% of base) : 54567.dasm - System.Linq.Enumerable:Sum[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal],System.Decimal,System.Decimal](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal],System.Decimal]):System.Decimal (Tier1)
-39 (-2.36% of base) : 48828.dasm - System.Buffers.StringSearchValues:Create(System.ReadOnlySpan`1[System.String],ubyte):System.Buffers.SearchValues`1[System.String] (Tier1)
-34 (-5.86% of base) : 29922.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
-34 (-4.70% of base) : 40120.dasm - System.Reflection.PortableExecutable.PEBuilder:SerializeSections():System.Collections.Immutable.ImmutableArray`1[System.Reflection.PortableExecutable.PEBuilder+SerializedSection]:this (Tier0)
-33 (-2.32% of base) : 43053.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableTypeWithAnnotations(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
Top method regressions (percentages):
76 (11.33% of base) : 24222.dasm - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
194 (11.04% of base) : 47447.dasm - System.Threading.Tests.Perf_CancellationToken:CreateManyRegisterMultipleDispose():this (Tier1-OSR)
130 ( 7.78% of base) : 50333.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (Tier1)
18 ( 3.89% of base) : 23733.dasm - System.Guid:TryParseGuid(System.ReadOnlySpan`1[ushort],byref):ubyte (Tier1)
21 ( 3.11% of base) : 40523.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.TupleTypeDecoder:DecodeTypeArguments(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (Tier1)
29 ( 2.96% of base) : 43111.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundNodes(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier1)
29 ( 2.66% of base) : 19534.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (Tier1)
6 ( 2.33% of base) : 41638.dasm - Benchmarks.SIMD.RayTracer.RayTracer:GetReflectionColor(Benchmarks.SIMD.RayTracer.SceneObject,Benchmarks.SIMD.RayTracer.Vector,Benchmarks.SIMD.RayTracer.Vector,Benchmarks.SIMD.RayTracer.Vector,Benchmarks.SIMD.RayTracer.Scene,int):Benchmarks.SIMD.RayTracer.Color:this (Tier1)
12 ( 1.92% of base) : 48825.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitIndexOfString_LeftToRight|157_1(byref):this (Tier1)
78 ( 1.69% of base) : 16974.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitFixedSet_LeftToRight|157_3(byref):this (Tier0-FullOpts)
12 ( 1.64% of base) : 40500.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_Arity():int:this (Tier1)
9 ( 1.51% of base) : 43857.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:ReportErrorIfHasConstraints(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax],Microsoft.CodeAnalysis.DiagnosticBag) (Tier1)
17 ( 1.28% of base) : 20168.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
8 ( 1.15% of base) : 40563.dasm - Microsoft.CodeAnalysis.PEModule:TryExtractValueFromAttribute[ubyte](System.Reflection.Metadata.CustomAttributeHandle,byref,Microsoft.CodeAnalysis.PEModule+AttributeValueExtractor`1[ubyte]):ubyte:this (Tier1)
9 ( 0.98% of base) : 53140.dasm - System.Net.Security.SslStream:GenerateToken(System.ReadOnlySpan`1[ubyte]):System.Net.Security.ProtocolToken:this (Tier1)
2 ( 0.92% of base) : 40374.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:DecodeSignatureHeaderOrThrow(System.Reflection.Metadata.BlobHandle,byref):System.Reflection.Metadata.BlobReader:this (Tier1)
1 ( 0.87% of base) : 6010.dasm - System.Reflection.RuntimePropertyInfo:GetIndexParameters():System.Reflection.ParameterInfo[]:this (Tier1)
5 ( 0.82% of base) : 40434.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetSignatureForProperty(System.Reflection.Metadata.PropertyDefinitionHandle,byref,byref):Microsoft.CodeAnalysis.ParamInfo`1[System.__Canon][]:this (Tier1)
23 ( 0.75% of base) : 53971.dasm - System.Net.Security.SslStream+<ReadAsyncInternal>d__171`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier1)
7 ( 0.72% of base) : 27740.dasm - System.Threading.AsyncOverSyncWithIoCancellation+<InvokeAsync>d__7`1[System.ValueTuple`4[System.__Canon,System.ReadOnlyMemory`1[ubyte],long,System.__Canon]]:MoveNext():this (Tier1)
Top method improvements (percentages):
-97 (-23.89% of base) : 43054.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrVarKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
-197 (-19.39% of base) : 20128.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Tier1)
-155 (-17.30% of base) : 3648.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Tier1)
-133 (-15.54% of base) : 53982.dasm - System.Net.Security.SslStream:WriteSingleChunk[System.Net.Security.AsyncReadWriteAdapter](System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier1)
-54 (-14.32% of base) : 12064.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteConditionalExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
-23 (-11.86% of base) : 44013.dasm - Microsoft.CodeAnalysis.SyntaxNode:FindTokenInternal(int):Microsoft.CodeAnalysis.SyntaxToken:this (Tier1)
-101 (-10.98% of base) : 6009.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (Tier1)
-12 (-10.26% of base) : 43315.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundRoot():Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-12 (-10.26% of base) : 43108.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetUpperBoundNode(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-28 (-9.72% of base) : 3694.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-115 (-8.94% of base) : 43003.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrAlias(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
-12 (-8.22% of base) : 43048.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel+IncrementalBinder:TryGetBoundNodeFromMap(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
-40 (-8.15% of base) : 54567.dasm - System.Linq.Enumerable:Sum[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal],System.Decimal,System.Decimal](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Decimal],System.Decimal]):System.Decimal (Tier1)
-60 (-8.13% of base) : 41646.dasm - Benchmarks.SIMD.RayTracer.RayTracer:Shade(Benchmarks.SIMD.RayTracer.ISect,Benchmarks.SIMD.RayTracer.Scene,int):Benchmarks.SIMD.RayTracer.Color:this (Tier1)
-28 (-7.65% of base) : 3804.dasm - System.ModuleHandle:ResolveMethodHandle(int,System.RuntimeTypeHandle[],System.RuntimeTypeHandle[]):System.RuntimeMethodHandle:this (Tier1)
-154 (-6.74% of base) : 19684.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-61 (-6.72% of base) : 19681.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
-32 (-6.45% of base) : 869.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-58 (-6.13% of base) : 43813.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1)
-17 (-6.07% of base) : 18489.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMemberExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (Tier0)
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: 392958880 (overridden on cmd)
Total bytes of diff: 392883913 (overridden on cmd)
Total bytes of delta: -74967 (-0.02 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
450 : 533319.dasm (15.47% of base)
450 : 530971.dasm (15.47% of base)
450 : 528068.dasm (15.47% of base)
281 : 424367.dasm (8.31% of base)
281 : 424325.dasm (8.27% of base)
281 : 424217.dasm (8.27% of base)
281 : 424259.dasm (8.27% of base)
258 : 533245.dasm (5.85% of base)
258 : 530869.dasm (5.85% of base)
258 : 527966.dasm (5.85% of base)
240 : 388122.dasm (16.36% of base)
240 : 385600.dasm (16.36% of base)
153 : 528040.dasm (10.44% of base)
153 : 530943.dasm (10.44% of base)
153 : 533300.dasm (10.44% of base)
152 : 408694.dasm (9.90% of base)
152 : 408735.dasm (9.88% of base)
152 : 408798.dasm (9.90% of base)
152 : 408838.dasm (9.91% of base)
140 : 475374.dasm (40.00% of base)
Top file improvements (bytes):
-606 : 584456.dasm (-4.43% of base)
-519 : 488351.dasm (-26.05% of base)
-383 : 424369.dasm (-22.41% of base)
-383 : 424327.dasm (-22.40% of base)
-383 : 424219.dasm (-22.42% of base)
-383 : 424261.dasm (-22.37% of base)
-198 : 526424.dasm (-0.39% of base)
-198 : 529329.dasm (-0.39% of base)
-198 : 532762.dasm (-0.39% of base)
-175 : 25475.dasm (-14.27% of base)
-164 : 527943.dasm (-26.03% of base)
-164 : 530846.dasm (-26.03% of base)
-164 : 533231.dasm (-26.03% of base)
-162 : 533134.dasm (-25.55% of base)
-162 : 530720.dasm (-25.55% of base)
-162 : 527817.dasm (-25.55% of base)
-155 : 537409.dasm (-17.22% of base)
-155 : 541362.dasm (-17.17% of base)
-143 : 373790.dasm (-15.59% of base)
-121 : 595523.dasm (-1.14% of base)
90 total files with Code Size differences (48 improved, 42 regressed), 20 unchanged.
Top method regressions (bytes):
450 (15.47% of base) : 533319.dasm - Test_10w5d.testout1:Func_0_4_3_1():System.Decimal (FullOpts)
450 (15.47% of base) : 530971.dasm - Test_10w5d.testout1:Func_0_4_3_1():System.Decimal (FullOpts)
450 (15.47% of base) : 528068.dasm - Test_10w5d.testout1:Func_0_4_3_1():System.Decimal (FullOpts)
281 ( 8.27% of base) : 424217.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionByte:RunStructLclFldScenario():this (FullOpts)
281 ( 8.27% of base) : 424259.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionInt16:RunStructLclFldScenario():this (FullOpts)
281 ( 8.27% of base) : 424325.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionSByte:RunStructLclFldScenario():this (FullOpts)
281 ( 8.31% of base) : 424367.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionUInt16:RunStructLclFldScenario():this (FullOpts)
258 ( 5.85% of base) : 533245.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
258 ( 5.85% of base) : 530869.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
258 ( 5.85% of base) : 527966.dasm - Test_10w5d.testout1:Func_0_4_5_3():System.Decimal (FullOpts)
240 (16.36% of base) : 388122.dasm - System.Linq.Enumerable:SequenceEqual[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):ubyte (Tier1)
240 (16.36% of base) : 385600.dasm - System.Linq.Enumerable:SequenceEqual[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):ubyte (Tier1)
153 (10.44% of base) : 528040.dasm - Test_10w5d.testout1:Func_0_4_3_5():System.Decimal (FullOpts)
153 (10.44% of base) : 530943.dasm - Test_10w5d.testout1:Func_0_4_3_5():System.Decimal (FullOpts)
153 (10.44% of base) : 533300.dasm - Test_10w5d.testout1:Func_0_4_3_5():System.Decimal (FullOpts)
152 ( 9.90% of base) : 408694.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionByte:RunStructLclFldScenario():this (FullOpts)
152 ( 9.88% of base) : 408735.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionInt16:RunStructLclFldScenario():this (FullOpts)
152 ( 9.90% of base) : 408798.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionSByte:RunStructLclFldScenario():this (FullOpts)
152 ( 9.91% of base) : 408838.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorBinaryOpTest__op_DivisionUInt16:RunStructLclFldScenario():this (FullOpts)
140 (39.89% of base) : 475314.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.AlternatingTernaryOpTest__MultiplyAddSubtractDouble:RunStructFldScenario():this (FullOpts)
Top method improvements (bytes):
-606 (-4.43% of base) : 584456.dasm - Internal.IL.ILImporter:ImportBasicBlock(Internal.IL.ILImporter+BasicBlock):this (FullOpts)
-519 (-26.05% of base) : 488351.dasm - System.Drawing.ColorTranslator:FromOle(int):System.Drawing.Color (FullOpts)
-383 (-22.42% of base) : 424219.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionByte:RunStructFldScenario():this (FullOpts)
-383 (-22.37% of base) : 424261.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionInt16:RunStructFldScenario():this (FullOpts)
-383 (-22.40% of base) : 424327.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionSByte:RunStructFldScenario():this (FullOpts)
-383 (-22.41% of base) : 424369.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionUInt16:RunStructFldScenario():this (FullOpts)
-198 (-0.39% of base) : 526424.dasm - Test_1000w1d.testout1:Func_0():int (FullOpts)
-198 (-0.39% of base) : 529329.dasm - Test_1000w1d.testout1:Func_0():int (FullOpts)
-198 (-0.39% of base) : 532762.dasm - Test_1000w1d.testout1:Func_0():int (FullOpts)
-175 (-14.27% of base) : 25475.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (Instrumented Tier1)
-164 (-26.03% of base) : 527943.dasm - Test_10w5d.testout1:Func_0_4_5():System.Decimal (FullOpts)
-164 (-26.03% of base) : 530846.dasm - Test_10w5d.testout1:Func_0_4_5():System.Decimal (FullOpts)
-164 (-26.03% of base) : 533231.dasm - Test_10w5d.testout1:Func_0_4_5():System.Decimal (FullOpts)
-162 (-25.55% of base) : 533134.dasm - Test_10w5d.testout1:Func_0_5_2_6():System.Decimal (FullOpts)
-162 (-25.55% of base) : 530720.dasm - Test_10w5d.testout1:Func_0_5_2_6():System.Decimal (FullOpts)
-162 (-25.55% of base) : 527817.dasm - Test_10w5d.testout1:Func_0_5_2_6():System.Decimal (FullOpts)
-155 (-17.22% of base) : 537409.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-155 (-17.17% of base) : 541362.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-143 (-15.59% of base) : 373790.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-121 (-1.14% of base) : 595523.dasm - Microsoft.Build.Evaluation.Evaluator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:Evaluate():this (FullOpts)
Top method regressions (percentages):
127 (40.32% of base) : 464099.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__FixupDouble0:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 464115.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__FixupSingle0:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465204.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicByte30:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465219.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicDouble30:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465234.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicInt1630:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465249.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicInt3230:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465867.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicInt6430:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465883.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicSByte30:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465899.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicSingle30:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465915.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicUInt1630:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465931.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicUInt3230:RunStructFldScenario():this (FullOpts)
127 (40.32% of base) : 465947.dasm - JIT.HardwareIntrinsics.X86._Avx512F_VL_Vector256.ImmTernaryOpTest__TernaryLogicUInt6430:RunStructFldScenario():this (FullOpts)
140 (40.00% of base) : 475334.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.AlternatingTernaryOpTest__MultiplyAddSubtractSingle:RunStructFldScenario():this (FullOpts)
140 (40.00% of base) : 475414.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.AlternatingTernaryOpTest__MultiplySubtractAddSingle:RunStructFldScenario():this (FullOpts)
140 (40.00% of base) : 475294.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.SimpleTernaryOpTest__MultiplyAddNegatedSingle:RunStructFldScenario():this (FullOpts)
140 (40.00% of base) : 475254.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.SimpleTernaryOpTest__MultiplyAddSingle:RunStructFldScenario():this (FullOpts)
140 (40.00% of base) : 475454.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.SimpleTernaryOpTest__MultiplySubtractNegatedSingle:RunStructFldScenario():this (FullOpts)
140 (40.00% of base) : 475374.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.SimpleTernaryOpTest__MultiplySubtractSingle:RunStructFldScenario():this (FullOpts)
140 (39.89% of base) : 475314.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.AlternatingTernaryOpTest__MultiplyAddSubtractDouble:RunStructFldScenario():this (FullOpts)
140 (39.89% of base) : 475354.dasm - JIT.HardwareIntrinsics.X86._Fma_Vector256.SimpleTernaryOpTest__MultiplySubtractDouble:RunStructFldScenario():this (FullOpts)
Top method improvements (percentages):
-55 (-41.35% of base) : 585345.dasm - MCCTest.MyClass:Main():int (FullOpts)
-55 (-41.35% of base) : 585354.dasm - MCCTest.MyClass:Main():int (FullOpts)
-39 (-26.71% of base) : 585393.dasm - MCCTest.MyClass:Main():int (FullOpts)
-39 (-26.71% of base) : 585376.dasm - MCCTest.MyClass:Main():int (FullOpts)
-25 (-26.60% of base) : 541719.dasm - N.Repro2:RunTest():int (FullOpts)
-519 (-26.05% of base) : 488351.dasm - System.Drawing.ColorTranslator:FromOle(int):System.Drawing.Color (FullOpts)
-164 (-26.03% of base) : 527943.dasm - Test_10w5d.testout1:Func_0_4_5():System.Decimal (FullOpts)
-164 (-26.03% of base) : 530846.dasm - Test_10w5d.testout1:Func_0_4_5():System.Decimal (FullOpts)
-164 (-26.03% of base) : 533231.dasm - Test_10w5d.testout1:Func_0_4_5():System.Decimal (FullOpts)
-25 (-25.77% of base) : 585396.dasm - MCCTest.MyClass:Main():int (FullOpts)
-25 (-25.77% of base) : 585384.dasm - MCCTest.MyClass:Main():int (FullOpts)
-162 (-25.55% of base) : 533134.dasm - Test_10w5d.testout1:Func_0_5_2_6():System.Decimal (FullOpts)
-162 (-25.55% of base) : 530720.dasm - Test_10w5d.testout1:Func_0_5_2_6():System.Decimal (FullOpts)
-162 (-25.55% of base) : 527817.dasm - Test_10w5d.testout1:Func_0_5_2_6():System.Decimal (FullOpts)
-42 (-24.71% of base) : 585342.dasm - MCCTest.MyClass:Main():int (FullOpts)
-42 (-24.71% of base) : 585369.dasm - MCCTest.MyClass:Main():int (FullOpts)
-383 (-22.42% of base) : 424219.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionByte:RunStructFldScenario():this (FullOpts)
-383 (-22.41% of base) : 424369.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionUInt16:RunStructFldScenario():this (FullOpts)
-383 (-22.40% of base) : 424327.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionSByte:RunStructFldScenario():this (FullOpts)
-383 (-22.37% of base) : 424261.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorBinaryOpTest__op_DivisionInt16:RunStructFldScenario():this (FullOpts)
libraries.crossgen2.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: 44314196 (overridden on cmd)
Total bytes of diff: 44256390 (overridden on cmd)
Total bytes of delta: -57806 (-0.13 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
349 : 125765.dasm (9.93% of base)
242 : 240882.dasm (21.01% of base)
206 : 188303.dasm (13.58% of base)
196 : 159992.dasm (14.38% of base)
155 : 72646.dasm (3.86% of base)
136 : 174861.dasm (15.37% of base)
136 : 217224.dasm (15.37% of base)
130 : 233208.dasm (7.50% of base)
115 : 46436.dasm (5.52% of base)
114 : 233298.dasm (5.60% of base)
112 : 99497.dasm (5.27% of base)
105 : 269478.dasm (9.28% of base)
104 : 46401.dasm (9.50% of base)
103 : 99458.dasm (9.43% of base)
101 : 233379.dasm (7.01% of base)
100 : 16050.dasm (8.90% of base)
100 : 132860.dasm (6.34% of base)
99 : 99413.dasm (7.64% of base)
96 : 169843.dasm (2.14% of base)
96 : 212322.dasm (1.90% of base)
Top file improvements (bytes):
-636 : 256541.dasm (-24.85% of base)
-519 : 256499.dasm (-26.02% of base)
-510 : 235908.dasm (-9.17% of base)
-372 : 95306.dasm (-8.55% of base)
-312 : 241329.dasm (-47.34% of base)
-241 : 196995.dasm (-11.94% of base)
-211 : 204723.dasm (-5.47% of base)
-210 : 117133.dasm (-6.93% of base)
-209 : 159796.dasm (-6.27% of base)
-202 : 38135.dasm (-6.31% of base)
-197 : 93300.dasm (-29.23% of base)
-197 : 40228.dasm (-29.23% of base)
-174 : 93502.dasm (-5.10% of base)
-174 : 38122.dasm (-5.81% of base)
-174 : 40437.dasm (-5.10% of base)
-172 : 38057.dasm (-5.29% of base)
-165 : 97919.dasm (-5.00% of base)
-164 : 99720.dasm (-6.06% of base)
-164 : 46636.dasm (-6.05% of base)
-158 : 132658.dasm (-9.08% of base)
83 total files with Code Size differences (51 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
349 ( 9.93% of base) : 125765.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:ReportDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,System.Nullable`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
242 (21.01% of base) : 240882.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.__Canon],ubyte) (FullOpts)
206 (13.58% of base) : 188303.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileLiftedLogicalBinaryExpression(System.Linq.Expressions.BinaryExpression,ubyte):this (FullOpts)
196 (14.38% of base) : 159992.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
155 ( 3.86% of base) : 72646.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:ReportDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,System.Nullable`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (FullOpts)
136 (15.37% of base) : 174861.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (FullOpts)
136 (15.37% of base) : 217224.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (FullOpts)
130 ( 7.50% of base) : 233208.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitLiteralAfterAtomicLoop|157_5(byref):this (FullOpts)
115 ( 5.52% of base) : 46436.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentOutboundAssignmentsAndPostConditions(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.NullableWalker+CompareExchangeInfo):this (FullOpts)
114 ( 5.60% of base) : 233298.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreference|5(System.Text.RegularExpressions.RegexNode):this (FullOpts)
112 ( 5.27% of base) : 99497.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentOutboundAssignmentsAndPostConditions(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.NullableWalker+CompareExchangeInfo):this (FullOpts)
105 ( 9.28% of base) : 269478.dasm - System.Net.Quic.MsQuicTlsSecret:WriteSecret():this (FullOpts)
104 ( 9.50% of base) : 46401.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitNullCoalescingAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
103 ( 9.43% of base) : 99458.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitNullCoalescingAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
101 ( 7.01% of base) : 233379.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (FullOpts)
100 ( 6.34% of base) : 132860.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckStructureCircularity(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
100 ( 8.90% of base) : 16050.dasm - System.RuntimeType:CreateInstanceImpl(int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
99 ( 7.64% of base) : 99413.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocalDeclaration(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
96 ( 2.14% of base) : 169843.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
96 ( 1.90% of base) : 212322.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
Top method improvements (bytes):
-636 (-24.85% of base) : 256541.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable() (FullOpts)
-519 (-26.02% of base) : 256499.dasm - System.Drawing.ColorTranslator:FromOle(int):System.Drawing.Color (FullOpts)
-510 (-9.17% of base) : 235908.dasm - System.Numerics.Tensors.Tensor:TensorPrimitivesHelperTwoSpanInSpanOut[System.__Canon](byref,byref,byref,System.Numerics.Tensors.Tensor+PerformCalculationTwoSpanInSpanOut`1[System.__Canon]):byref (FullOpts)
-372 (-8.55% of base) : 95306.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
-312 (-47.34% of base) : 241329.dasm - System.Formats.Nrbf.NrbfDecoder:DecodeArraySinglePrimitiveRecord(System.IO.BinaryReader):System.Formats.Nrbf.SerializationRecord (FullOpts)
-241 (-11.94% of base) : 196995.dasm - Newtonsoft.Json.Linq.JValue:Operation(int,System.Object,System.Object,byref):ubyte (FullOpts)
-211 (-5.47% of base) : 204723.dasm - System.Xml.XmlTextReaderImpl:ParseXmlDeclaration(ubyte):ubyte:this (FullOpts)
-210 (-6.93% of base) : 117133.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceDelegateMethodSymbol:AddDelegateMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Syntax.DelegateDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-209 (-6.27% of base) : 159796.dasm - System.Net.Http.Http2Connection+<ProcessIncomingFramesAsync>d__61:MoveNext():this (FullOpts)
-202 (-6.31% of base) : 38135.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-197 (-29.23% of base) : 93300.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundBinaryOperatorBase(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperatorBase):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-197 (-29.23% of base) : 40228.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundBinaryOperatorBase(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperatorBase):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-174 (-5.10% of base) : 93502.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckPropertyValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-174 (-5.10% of base) : 40437.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckPropertyValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-174 (-5.81% of base) : 38122.dasm - System.Data.Common.SqlInt64Storage:Aggregate(int[],int):System.Object:this (FullOpts)
-172 (-5.29% of base) : 38057.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-165 (-5.00% of base) : 97919.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetTypeInfoForNode(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.CSharpTypeInfo:this (FullOpts)
-164 (-6.06% of base) : 99720.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitBinaryOperatorChildren>g__learnFromConditionalAccessOrBoolConstant|186_3(byref):ubyte:this (FullOpts)
-164 (-6.05% of base) : 46636.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitBinaryOperatorChildren>g__learnFromConditionalAccessOrBoolConstant|187_3(byref):ubyte:this (FullOpts)
-158 (-9.08% of base) : 132658.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceDelegateMethodSymbol:MakeDelegateMembers(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
Top method regressions (percentages):
242 (21.01% of base) : 240882.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.__Canon],ubyte) (FullOpts)
49 (15.51% of base) : 261701.dasm - System.Threading.Channels.ChannelWriter`1[System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
136 (15.37% of base) : 174861.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (FullOpts)
136 (15.37% of base) : 217224.dasm - Microsoft.CodeAnalysis.CodeGen.SequencePointList:GetSequencePoints(Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.Cci.SequencePoint]):this (FullOpts)
196 (14.38% of base) : 159992.dasm - System.Net.Http.HttpWindowsProxy:GetMultiProxy(System.Uri):System.Net.Http.MultiProxy:this (FullOpts)
206 (13.58% of base) : 188303.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileLiftedLogicalBinaryExpression(System.Linq.Expressions.BinaryExpression,ubyte):this (FullOpts)
81 (13.00% of base) : 235062.dasm - System.Collections.Frozen.KeysAndValuesFrozenDictionary`2[System.__Canon,System.__Canon]:.ctor(System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):this (FullOpts)
84 (12.67% of base) : 11597.dasm - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
83 (12.61% of base) : 99721.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<ReinferBinaryOperatorAndSetResult>g__visitOperandConversionAndPostConditions|187_2(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,byref):this (FullOpts)
23 (12.11% of base) : 245573.dasm - System.Formats.Cbor.CborWriter:WriteBigInteger(System.Numerics.BigInteger):this (FullOpts)
41 (10.10% of base) : 256549.dasm - System.Drawing.ColorConverterCommon:PossibleKnownColor(System.Drawing.Color):System.Drawing.Color (FullOpts)
349 ( 9.93% of base) : 125765.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:ReportDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,System.Nullable`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
49 ( 9.55% of base) : 20787.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
104 ( 9.50% of base) : 46401.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitNullCoalescingAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
103 ( 9.43% of base) : 99458.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitNullCoalescingAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
70 ( 9.31% of base) : 225033.dasm - Microsoft.VisualBasic.CompilerServices.LikeOperator:MatchRangeAfterAsterisk(System.String,int,byref,Microsoft.VisualBasic.CompilerServices.LikeOperator+LigatureInfo[],System.String,Microsoft.VisualBasic.CompilerServices.LikeOperator+LigatureInfo[],Microsoft.VisualBasic.CompilerServices.LikeOperator+PatternGroup,System.Globalization.CompareInfo,int):ubyte (FullOpts)
105 ( 9.28% of base) : 269478.dasm - System.Net.Quic.MsQuicTlsSecret:WriteSecret():this (FullOpts)
71 ( 9.02% of base) : 251073.dasm - System.Resources.Extensions.BinaryFormat.Deserializer.ClassRecordSerializationInfoDeserializer:Continue():System.Formats.Nrbf.SerializationRecordId:this (FullOpts)
100 ( 8.90% of base) : 16050.dasm - System.RuntimeType:CreateInstanceImpl(int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
50 ( 8.74% of base) : 233454.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (FullOpts)
Top method improvements (percentages):
-312 (-47.34% of base) : 241329.dasm - System.Formats.Nrbf.NrbfDecoder:DecodeArraySinglePrimitiveRecord(System.IO.BinaryReader):System.Formats.Nrbf.SerializationRecord (FullOpts)
-107 (-35.79% of base) : 136565.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:AnalyzeDataFlow(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax):Microsoft.CodeAnalysis.DataFlowAnalysis:this (FullOpts)
-105 (-33.33% of base) : 72810.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeDescriptor:ComputeKey[Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeField](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeField],System.Func`2[Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeField,System.String]):System.String (FullOpts)
-105 (-33.33% of base) : 125941.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeDescriptor:ComputeKey[Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeField](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeField],System.Func`2[Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeField,System.String]):System.String (FullOpts)
-48 (-33.10% of base) : 169830.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-68 (-31.78% of base) : 178538.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[System.__Canon,System.__Canon]:GetTypeSymbolForSerializedType(System.String):System.__Canon:this (FullOpts)
-68 (-31.78% of base) : 220943.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[System.__Canon,System.__Canon]:GetTypeSymbolForSerializedType(System.String):System.__Canon:this (FullOpts)
-94 (-31.65% of base) : 136563.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:AnalyzeControlFlow(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax):Microsoft.CodeAnalysis.ControlFlowAnalysis:this (FullOpts)
-94 (-31.65% of base) : 136564.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:AnalyzeDataFlow(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax):Microsoft.CodeAnalysis.DataFlowAnalysis:this (FullOpts)
-120 (-30.23% of base) : 41220.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindType(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-120 (-30.23% of base) : 94311.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindType(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-197 (-29.23% of base) : 93300.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundBinaryOperatorBase(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperatorBase):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-197 (-29.23% of base) : 40228.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundBinaryOperatorBase(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperatorBase):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
-117 (-29.03% of base) : 41219.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindType(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-117 (-29.03% of base) : 94310.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindType(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-118 (-27.57% of base) : 94305.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrVarKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-118 (-27.57% of base) : 41214.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeOrVarKeyword(Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-72 (-26.97% of base) : 149624.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:EliminateNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult]):int (FullOpts)
-12 (-26.67% of base) : 226716.dasm - System.CommandLine.Help.HelpBuilder:<FormatArgumentUsage>g__IsOptional|16_0(System.CommandLine.CliArgument):ubyte (FullOpts)
-52 (-26.13% of base) : 41331.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CheckPropertyValueKind>g__reportUseSite|149_0(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref):ubyte:this (FullOpts)
libraries.pmi.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: 62545380 (overridden on cmd)
Total bytes of diff: 62494554 (overridden on cmd)
Total bytes of delta: -50826 (-0.08 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
297 : 233668.dasm (25.04% of base)
296 : 228695.dasm (19.35% of base)
285 : 228696.dasm (24.26% of base)
244 : 219800.dasm (10.91% of base)
235 : 302546.dasm (11.95% of base)
232 : 191277.dasm (4.94% of base)
206 : 49053.dasm (6.24% of base)
177 : 305381.dasm (8.03% of base)
169 : 233667.dasm (10.92% of base)
158 : 49178.dasm (3.41% of base)
150 : 105770.dasm (3.31% of base)
150 : 221534.dasm (12.58% of base)
149 : 191292.dasm (4.83% of base)
145 : 51240.dasm (2.70% of base)
144 : 49320.dasm (8.76% of base)
144 : 227404.dasm (1.80% of base)
140 : 305362.dasm (7.12% of base)
137 : 280569.dasm (16.35% of base)
137 : 280498.dasm (16.35% of base)
136 : 163570.dasm (2.61% of base)
Top file improvements (bytes):
-1163 : 105202.dasm (-47.78% of base)
-754 : 44426.dasm (-11.81% of base)
-720 : 275317.dasm (-22.51% of base)
-531 : 129542.dasm (-8.31% of base)
-519 : 275313.dasm (-26.05% of base)
-493 : 53496.dasm (-5.76% of base)
-315 : 49154.dasm (-5.35% of base)
-272 : 284949.dasm (-5.98% of base)
-246 : 159843.dasm (-15.81% of base)
-233 : 49093.dasm (-5.99% of base)
-216 : 71973.dasm (-4.55% of base)
-214 : 125625.dasm (-4.13% of base)
-214 : 39102.dasm (-7.46% of base)
-213 : 276114.dasm (-14.01% of base)
-200 : 47382.dasm (-4.94% of base)
-186 : 39088.dasm (-6.92% of base)
-185 : 78866.dasm (-10.96% of base)
-183 : 39018.dasm (-5.94% of base)
-180 : 127151.dasm (-10.78% of base)
-176 : 43373.dasm (-17.41% of base)
76 total files with Code Size differences (44 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
297 (25.04% of base) : 233668.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[ubyte,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[ubyte,System.Nullable`1[int]],ubyte) (FullOpts)
296 (19.35% of base) : 228695.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.Nullable`1[int]],ubyte) (FullOpts)
285 (24.26% of base) : 228696.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[ubyte,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[ubyte,System.Nullable`1[int]],ubyte) (FullOpts)
244 (10.91% of base) : 219800.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+BagState:UnshroudKeys(byref):this (FullOpts)
235 (11.95% of base) : 302546.dasm - System.Security.Cryptography.Xml.DSAKeyValue:GetXml(System.Xml.XmlDocument):System.Xml.XmlElement:this (FullOpts)
232 ( 4.94% of base) : 191277.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileBinaryExpression(System.Linq.Expressions.Expression):this (FullOpts)
206 ( 6.24% of base) : 49053.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitNullCoalescingAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
177 ( 8.03% of base) : 305381.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitBackreference|5(System.Text.RegularExpressions.RegexNode):this (FullOpts)
169 (10.92% of base) : 233667.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.Nullable`1[int]],ubyte) (FullOpts)
158 ( 3.41% of base) : 49178.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachIterationVariables(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
150 ( 3.31% of base) : 105770.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CreateBoundCallOrPropertyAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
150 (12.58% of base) : 221534.dasm - System.Speech.Recognition.RecognizedPhrase:AppendPropertiesSML(System.Xml.XmlDocument,System.Xml.XmlElement,System.Speech.Recognition.SemanticValue,System.Globalization.NumberFormatInfo):this (FullOpts)
149 ( 4.83% of base) : 191292.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileLiftedLogicalBinaryExpression(System.Linq.Expressions.BinaryExpression,ubyte):this (FullOpts)
145 ( 2.70% of base) : 51240.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDecimalLiteral(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ConstantValue):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
144 ( 8.76% of base) : 49320.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<ReinferBinaryOperatorAndSetResult>g__visitOperandConversionAndPostConditions|187_2(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,byref):this (FullOpts)
144 ( 1.80% of base) : 227404.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[ubyte]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
140 ( 7.12% of base) : 305362.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitLiteralAfterAtomicLoop|157_5(byref):this (FullOpts)
137 (16.35% of base) : 280498.dasm - System.Linq.Enumerable:Max(System.Collections.Generic.IEnumerable`1[System.Decimal]):System.Decimal (FullOpts)
137 (16.35% of base) : 280569.dasm - System.Linq.Enumerable:Min(System.Collections.Generic.IEnumerable`1[System.Decimal]):System.Decimal (FullOpts)
136 ( 2.61% of base) : 163570.dasm - Microsoft.Build.Execution.ProjectInstance:.ctor(Microsoft.Build.Execution.ProjectInstance,ubyte,Microsoft.Build.Execution.RequestedProjectState):this (FullOpts)
Top method improvements (bytes):
-1163 (-47.78% of base) : 105202.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:MakeSlotsForExpression(Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+SlotCollection:this (FullOpts)
-754 (-11.81% of base) : 44426.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
-720 (-22.51% of base) : 275317.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable() (FullOpts)
-531 (-8.31% of base) : 129542.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicDeclarationComputer:ComputeDeclarationsCore(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Nullable`1[int],ubyte],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Nullable`1[int],System.Threading.CancellationToken) (FullOpts)
-519 (-26.05% of base) : 275313.dasm - System.Drawing.ColorTranslator:FromOle(int):System.Drawing.Color (FullOpts)
-493 (-5.76% of base) : 53496.dasm - Microsoft.CodeAnalysis.CSharp.CSharpDeclarationComputer:ComputeDeclarations(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SyntaxNode,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Nullable`1[int],ubyte],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Nullable`1[int],System.Threading.CancellationToken) (FullOpts)
-315 (-5.35% of base) : 49154.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-272 (-5.98% of base) : 284949.dasm - System.Net.WebSockets.WebSocketBase+WebSocketOperation+<Process>d__19:MoveNext():this (FullOpts)
-246 (-15.81% of base) : 159843.dasm - System.Reflection.Metadata.Ecma335.SignatureDecoder`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:DecodeType(byref,ubyte,int):System.Numerics.Vector`1[float]:this (FullOpts)
-233 (-5.99% of base) : 49093.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentOutboundAssignmentsAndPostConditions(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.NullableWalker+CompareExchangeInfo):this (FullOpts)
-216 (-4.55% of base) : 71973.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceDelegateMethodSymbol:AddDelegateMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Syntax.DelegateDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-214 (-4.13% of base) : 125625.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-214 (-7.46% of base) : 39102.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-213 (-14.01% of base) : 276114.dasm - System.Formats.Nrbf.NrbfDecoder:DecodeArraySinglePrimitiveRecord(System.IO.BinaryReader):System.Formats.Nrbf.SerializationRecord (FullOpts)
-200 (-4.94% of base) : 47382.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetTypeInfoForNode(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.CSharpTypeInfo:this (FullOpts)
-186 (-6.92% of base) : 39088.dasm - System.Data.Common.SqlInt64Storage:Aggregate(int[],int):System.Object:this (FullOpts)
-185 (-10.96% of base) : 78866.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+DeepTranslator:VisitFunctionPointerType(Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
-183 (-5.94% of base) : 39018.dasm - System.Data.Common.SqlDecimalStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-180 (-10.78% of base) : 127151.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory:MissingToken(ushort):Microsoft.CodeAnalysis.SyntaxToken (FullOpts)
-176 (-17.41% of base) : 43373.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeArguments(Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
Top method regressions (percentages):
297 (25.04% of base) : 233668.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[ubyte,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[ubyte,System.Nullable`1[int]],ubyte) (FullOpts)
285 (24.26% of base) : 228696.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[ubyte,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[ubyte,System.Nullable`1[int]],ubyte) (FullOpts)
38 (21.59% of base) : 276209.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:WithAssemblyName(System.Reflection.Metadata.TypeName,System.String):System.Reflection.Metadata.TypeName (FullOpts)
38 (20.65% of base) : 276210.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (FullOpts)
38 (19.39% of base) : 276211.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (FullOpts)
296 (19.35% of base) : 228695.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.Nullable`1[int]],ubyte) (FullOpts)
47 (18.88% of base) : 276207.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:ParseSystemRecordTypeName(System.String,System.Formats.Nrbf.PayloadOptions):System.Reflection.Metadata.TypeName (FullOpts)
130 (16.84% of base) : 157682.dasm - System.Reflection.Metadata.BlobBuilder:ContentEquals(System.Reflection.Metadata.BlobBuilder):ubyte:this (FullOpts)
137 (16.35% of base) : 280498.dasm - System.Linq.Enumerable:Max(System.Collections.Generic.IEnumerable`1[System.Decimal]):System.Decimal (FullOpts)
137 (16.35% of base) : 280569.dasm - System.Linq.Enumerable:Min(System.Collections.Generic.IEnumerable`1[System.Decimal]):System.Decimal (FullOpts)
50 (12.92% of base) : 240426.dasm - Microsoft.VisualBasic.CompilerServices.ObjectType:ObjTstDecimal(System.IConvertible,System.IConvertible):int (FullOpts)
150 (12.58% of base) : 221534.dasm - System.Speech.Recognition.RecognizedPhrase:AppendPropertiesSML(System.Xml.XmlDocument,System.Xml.XmlElement,System.Speech.Recognition.SemanticValue,System.Globalization.NumberFormatInfo):this (FullOpts)
30 (12.20% of base) : 276817.dasm - System.IO.Compression.ZipArchiveEntry+DirectToArchiveWriterStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts)
235 (11.95% of base) : 302546.dasm - System.Security.Cryptography.Xml.DSAKeyValue:GetXml(System.Xml.XmlDocument):System.Xml.XmlElement:this (FullOpts)
88 (11.52% of base) : 210130.dasm - System.Xml.Xsl.XmlQueryType:Equals(System.Xml.Xsl.XmlQueryType):ubyte:this (FullOpts)
169 (10.92% of base) : 233667.dasm - Internal.Pgo.PgoProcessor:EncodePgoData[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[Internal.Pgo.PgoSchemaElem],Internal.Pgo.IPgoEncodedValueEmitter`2[System.__Canon,System.Nullable`1[int]],ubyte) (FullOpts)
244 (10.91% of base) : 219800.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+BagState:UnshroudKeys(byref):this (FullOpts)
27 (10.84% of base) : 219587.dasm - System.Security.Cryptography.RSABCrypt:ExportParameters(ubyte):System.Security.Cryptography.RSAParameters:this (FullOpts)
69 (10.66% of base) : 280550.dasm - System.Linq.Enumerable:MaxFloat[System.__Canon,double](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.Nullable`1[double]]):System.Nullable`1[double] (FullOpts)
39 (10.34% of base) : 49186.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitPointerElementAccess(Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method improvements (percentages):
-1163 (-47.78% of base) : 105202.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:MakeSlotsForExpression(Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+SlotCollection:this (FullOpts)
-42 (-38.89% of base) : 293711.dasm - System.Numerics.Tensors.TensorPrimitives+LogBaseOperator`1[double]:Invoke(System.Runtime.Intrinsics.Vector256`1[double],System.Runtime.Intrinsics.Vector256`1[double]):System.Runtime.Intrinsics.Vector256`1[double] (FullOpts)
-52 (-36.88% of base) : 173152.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-143 (-35.22% of base) : 10638.dasm - Microsoft.FSharp.Collections.SeqModule:Sum[System.Numerics.Vector`1[float]](System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float] (FullOpts)
-74 (-34.10% of base) : 113713.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:AnalyzeDataFlow(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax):Microsoft.CodeAnalysis.DataFlowAnalysis:this (FullOpts)
-46 (-34.07% of base) : 139603.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-57 (-30.65% of base) : 139233.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[System.__Canon,System.__Canon]:GetTypeSymbolForSerializedType(System.String):System.__Canon:this (FullOpts)
-57 (-30.65% of base) : 172796.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[System.__Canon,System.__Canon]:GetTypeSymbolForSerializedType(System.String):System.__Canon:this (FullOpts)
-68 (-30.63% of base) : 113711.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:AnalyzeControlFlow(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax):Microsoft.CodeAnalysis.ControlFlowAnalysis:this (FullOpts)
-68 (-30.63% of base) : 113712.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:AnalyzeDataFlow(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax):Microsoft.CodeAnalysis.DataFlowAnalysis:this (FullOpts)
-122 (-27.48% of base) : 10645.dasm - Microsoft.FSharp.Collections.SeqModule:Sum$W[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Numerics.Vector`1[float]],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]],System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float] (FullOpts)
-100 (-26.88% of base) : 43346.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindType(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-12 (-26.67% of base) : 250801.dasm - System.CommandLine.Help.HelpBuilder:<FormatArgumentUsage>g__IsOptional|16_0(System.CommandLine.CliArgument):ubyte (FullOpts)
-519 (-26.05% of base) : 275313.dasm - System.Drawing.ColorTranslator:FromOle(int):System.Drawing.Color (FullOpts)
-98 (-25.86% of base) : 43345.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindType(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
-12 (-25.53% of base) : 148935.dasm - Roslyn.Utilities.ConcurrentSet`1+KeyEnumerator[long]:get_Current():long:this (FullOpts)
-12 (-25.53% of base) : 182562.dasm - Roslyn.Utilities.ConcurrentSet`1+KeyEnumerator[long]:get_Current():long:this (FullOpts)
-57 (-25.45% of base) : 68792.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpDefinitionMap:TryGetStateMachineType(System.Reflection.Metadata.MethodDefinitionHandle):Microsoft.CodeAnalysis.Symbols.ITypeSymbolInternal:this (FullOpts)
-12 (-25.00% of base) : 148933.dasm - Roslyn.Utilities.ConcurrentSet`1+KeyEnumerator[double]:get_Current():double:this (FullOpts)
-12 (-25.00% of base) : 182560.dasm - Roslyn.Utilities.ConcurrentSet`1+KeyEnumerator[double]:get_Current():double:this (FullOpts)
libraries_tests.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 309473340 (overridden on cmd)
Total bytes of diff: 309347300 (overridden on cmd)
Total bytes of delta: -126040 (-0.04 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
1764 : 62959.dasm (18.27% of base)
1314 : 98233.dasm (12.62% of base)
734 : 62960.dasm (8.55% of base)
650 : 675783.dasm (15.82% of base)
636 : 98234.dasm (7.05% of base)
620 : 669894.dasm (8.30% of base)
436 : 433773.dasm (8.56% of base)
434 : 433772.dasm (9.99% of base)
421 : 433770.dasm (9.85% of base)
414 : 433758.dasm (9.80% of base)
413 : 433761.dasm (10.00% of base)
413 : 433798.dasm (9.46% of base)
409 : 62962.dasm (7.12% of base)
408 : 433800.dasm (9.43% of base)
398 : 180907.dasm (5.36% of base)
397 : 433796.dasm (10.24% of base)
396 : 433765.dasm (9.53% of base)
394 : 433810.dasm (9.31% of base)
359 : 433776.dasm (8.62% of base)
354 : 433812.dasm (8.43% of base)
Top file improvements (bytes):
-611 : 435515.dasm (-11.23% of base)
-586 : 185974.dasm (-5.90% of base)
-573 : 435522.dasm (-10.70% of base)
-444 : 64985.dasm (-5.11% of base)
-390 : 62675.dasm (-3.20% of base)
-379 : 180762.dasm (-4.87% of base)
-348 : 435470.dasm (-6.47% of base)
-348 : 435466.dasm (-6.47% of base)
-343 : 68298.dasm (-5.14% of base)
-341 : 434127.dasm (-15.46% of base)
-341 : 435518.dasm (-13.89% of base)
-341 : 435123.dasm (-15.46% of base)
-341 : 435203.dasm (-15.46% of base)
-341 : 434259.dasm (-15.46% of base)
-341 : 435520.dasm (-13.89% of base)
-341 : 434374.dasm (-15.46% of base)
-341 : 435257.dasm (-13.89% of base)
-341 : 435222.dasm (-15.46% of base)
-341 : 435263.dasm (-13.89% of base)
-323 : 185973.dasm (-4.13% of base)
96 total files with Code Size differences (60 improved, 36 regressed), 20 unchanged.
Top method regressions (bytes):
1764 (18.27% of base) : 62959.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,ubyte,ubyte):this (Tier1)
1314 (12.62% of base) : 98233.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,ubyte,ubyte):this (Tier1)
734 ( 8.55% of base) : 62960.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsMemberApplicableInNormalForm[System.__Canon](System.__Canon,System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (Tier1)
650 (15.82% of base) : 675783.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (Tier1)
636 ( 7.05% of base) : 98234.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsMemberApplicableInNormalForm[System.__Canon](System.__Canon,System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (Tier1)
620 ( 8.30% of base) : 669894.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol:Create(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.BasePropertyDeclarationSyntax,System.String,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol (Tier1)
436 ( 8.56% of base) : 433773.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[System.Half,float]() (Tier1-OSR)
434 ( 9.99% of base) : 433772.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[System.Half,System.Half]() (Tier1-OSR)
421 ( 9.85% of base) : 433770.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[ubyte,float]() (Tier1-OSR)
414 ( 9.80% of base) : 433758.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[ubyte,ubyte]() (Tier1-OSR)
413 (10.00% of base) : 433761.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[ubyte,short]() (Tier1-OSR)
413 ( 9.46% of base) : 433798.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[short,uint]() (Tier1-OSR)
409 ( 7.12% of base) : 62962.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable[System.__Canon](System.__Canon,System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (Tier1)
408 ( 9.43% of base) : 433800.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[System.Half,int]() (Tier1-OSR)
398 ( 5.36% of base) : 180907.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConversion(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,ubyte,ubyte,ubyte,int,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState],ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (Tier1)
397 (10.24% of base) : 433796.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[long,ubyte]() (Tier1-OSR)
396 ( 9.53% of base) : 433765.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[ubyte,uint]() (Tier1-OSR)
394 ( 9.31% of base) : 433810.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertSaturatingImpl[short,uint]() (Tier1-OSR)
359 ( 8.62% of base) : 433776.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertCheckedImpl[System.Half,double]() (Tier1-OSR)
354 ( 8.43% of base) : 433812.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertSaturatingImpl[System.Half,int]() (Tier1-OSR)
Top method improvements (bytes):
-611 (-11.23% of base) : 435515.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+Log10Operator`1[float]](byref,byref,ulong) (Tier1)
-586 (-5.90% of base) : 185974.dasm - Microsoft.CodeAnalysis.CSharp.BestTypeInferrer:GetBestType(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.ConversionsBase,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol (Tier1)
-573 (-10.70% of base) : 435522.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+Log10P1Operator`1[float]](byref,byref,ulong) (Tier1)
-444 (-5.11% of base) : 64985.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult],byref):ubyte:this (Tier1)
-390 (-3.20% of base) : 62675.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<CheckModifierMismatchOnImplementingMember>g__checkMethodOverride|102_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
-379 (-4.87% of base) : 180762.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CandidateOperators(ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult],byref):ubyte:this (Tier1)
-348 (-6.47% of base) : 435470.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+Exp10Operator`1[float]](byref,byref,ulong) (Tier1)
-348 (-6.47% of base) : 435466.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+Exp2Operator`1[float]](byref,byref,ulong) (Tier1)
-343 (-5.14% of base) : 68298.dasm - Microsoft.CodeAnalysis.CSharp.BestTypeInferrer:InferBestTypeForConditionalOperator(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversions,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol (Tier1)
-341 (-15.46% of base) : 435123.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[double,double,System.Numerics.Tensors.TensorPrimitives+ExpOperator`1[double]](byref,byref,ulong) (Tier1)
-341 (-15.46% of base) : 435222.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[double,double,System.Numerics.Tensors.TensorPrimitives+Log2Operator`1[double]](byref,byref,ulong) (Tier1)
-341 (-13.89% of base) : 435263.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[double,double,System.Numerics.Tensors.TensorPrimitives+Log2P1Operator`1[double]](byref,byref,ulong) (Tier1)
-341 (-15.46% of base) : 435203.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[double,double,System.Numerics.Tensors.TensorPrimitives+LogOperator`1[double]](byref,byref,ulong) (Tier1)
-341 (-13.89% of base) : 435257.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[double,double,System.Numerics.Tensors.TensorPrimitives+LogP1Operator`1[double]](byref,byref,ulong) (Tier1)
-341 (-15.46% of base) : 434259.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+ExpOperator`1[float]](byref,byref,ulong) (Tier1)
-341 (-15.46% of base) : 434374.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+Log2Operator`1[float]](byref,byref,ulong) (Tier1)
-341 (-13.89% of base) : 435520.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+Log2P1Operator`1[float]](byref,byref,ulong) (Tier1)
-341 (-15.46% of base) : 434127.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+LogOperator`1[float]](byref,byref,ulong) (Tier1)
-341 (-13.89% of base) : 435518.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanIntoSpan>g__Vectorized256|105_2[float,float,System.Numerics.Tensors.TensorPrimitives+LogP1Operator`1[float]](byref,byref,ulong) (Tier1)
-323 (-4.13% of base) : 185973.dasm - Microsoft.CodeAnalysis.CSharp.BestTypeInferrer:InferBestTypeForConditionalOperator(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversions,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol (Tier1)
Top method regressions (percentages):
161 (23.68% of base) : 517600.dasm - System.RuntimeType:GetMembers(int):System.Reflection.MemberInfo[]:this (Tier1)
230 (21.95% of base) : 185182.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender:ReadNodeOrToken(int,ubyte):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.BlendedNode:this (Tier1)
40 (19.51% of base) : 306154.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (Tier1)
1764 (18.27% of base) : 62959.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,ubyte,ubyte):this (Tier1)
42 (17.36% of base) : 306192.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (Tier1)
329 (16.85% of base) : 574879.dasm - System.Text.Tests.FromUtf16Tests:SomeNonAsciiInput() (Tier1-OSR)
332 (16.39% of base) : 574598.dasm - System.Text.Tests.ToUtf16Tests:SomeNonAsciiInput() (Tier1-OSR)
261 (16.31% of base) : 668072.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddNewToken():this (Tier1)
650 (15.82% of base) : 675783.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:MakeDecisionDag(byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState,Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DagState]):Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag:this (Tier1)
111 (14.30% of base) : 288877.dasm - System.RuntimeType:GetMembers(int):System.Reflection.MemberInfo[]:this (Instrumented Tier1)
203 (14.29% of base) : 560442.dasm - System.Linq.Enumerable:SequenceEqual[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Generic.IEnumerable`1[ubyte],System.Collections.Generic.IEqualityComparer`1[ubyte]):ubyte (Tier1)
15 (12.82% of base) : 186700.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
1314 (12.62% of base) : 98233.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],byref,ubyte,ubyte):this (Tier1)
15 (12.40% of base) : 186757.dasm - Microsoft.CodeAnalysis.CSharp.Emit.ParameterTypeInformation:Microsoft.Cci.IParameterTypeInformation.get_CustomModifiers():System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.ICustomModifier]:this (Tier1)
41 (11.42% of base) : 60941.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.BaseTypeAnalysis:NonPointerType(Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol (Tier1)
25 (11.42% of base) : 98026.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:.ctor(Microsoft.CodeAnalysis.Text.TextSpan,int,System.String,System.String,ubyte):this (Tier1)
25 (11.42% of base) : 58192.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:.ctor(Microsoft.CodeAnalysis.Text.TextSpan,int,System.String,System.String,ubyte):this (Tier1)
90 (11.19% of base) : 308745.dasm - System.IO.MemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Instrumented Tier1)
397 (10.24% of base) : 433796.dasm - System.Numerics.Tensors.Tests.ConvertTests:ConvertTruncatingImpl[long,ubyte]() (Tier1-OSR)
192 (10.14% of base) : 196839.dasm - System.Number:TryParseFloat[ushort,double](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):ubyte (Tier1)
Top method improvements (percentages):
-57 (-32.39% of base) : 70001.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[System.__Canon,System.__Canon]:GetTypeSymbolForSerializedType(System.String):System.__Canon:this (Tier1)
-80 (-31.25% of base) : 72720.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.SuppressFormattingRule:AddStatementExceptBlockSuppressOperations(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation],Microsoft.CodeAnalysis.SyntaxNode) (Tier1)
-57 (-26.89% of base) : 61805.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (Tier1)
-21 (-24.42% of base) : 674631.dasm - Microsoft.Cci.MetadataWriter+<>c:<GetLocalSlotDebugInfos>b__257_0(Microsoft.Cci.ILocalDefinition):ubyte:this (Tier1)
-65 (-22.03% of base) : 72727.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.SpacingFormattingRule:SuppressVariableDeclaration(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation],Microsoft.CodeAnalysis.SyntaxNode):this (Tier1)
-65 (-22.03% of base) : 95624.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.SpacingFormattingRule:SuppressVariableDeclaration(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation],Microsoft.CodeAnalysis.SyntaxNode):this (Tier1)
-54 (-21.69% of base) : 95603.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule:AddTypeParameterConstraintClauseOperation(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation],Microsoft.CodeAnalysis.SyntaxNode) (Tier1)
-54 (-21.69% of base) : 72706.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule:AddTypeParameterConstraintClauseOperation(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation],Microsoft.CodeAnalysis.SyntaxNode) (Tier1)
-57 (-20.96% of base) : 406658.dasm - System.Net.Http.HttpConnectionPoolManager:Dispose():this (Tier1)
-61 (-20.89% of base) : 273159.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 83969.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 552615.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 269065.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 135714.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 309578.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 342084.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 542308.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 251316.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-61 (-20.89% of base) : 325823.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (Tier1)
-27 (-20.77% of base) : 185864.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 146141887 (overridden on cmd)
Total bytes of diff: 146040513 (overridden on cmd)
Total bytes of delta: -101374 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
893 : 163556.dasm (14.13% of base)
787 : 319376.dasm (2.40% of base)
746 : 163552.dasm (11.25% of base)
500 : 66045.dasm (12.76% of base)
386 : 161781.dasm (10.52% of base)
367 : 45662.dasm (8.41% of base)
307 : 231767.dasm (5.08% of base)
307 : 215591.dasm (5.08% of base)
255 : 172976.dasm (12.28% of base)
242 : 181956.dasm (9.61% of base)
240 : 22700.dasm (10.94% of base)
238 : 142489.dasm (6.66% of base)
235 : 252922.dasm (11.95% of base)
230 : 257949.dasm (16.23% of base)
226 : 142393.dasm (8.22% of base)
224 : 6858.dasm (6.60% of base)
223 : 257983.dasm (15.04% of base)
211 : 181983.dasm (9.16% of base)
206 : 64266.dasm (6.32% of base)
191 : 298229.dasm (3.12% of base)
Top file improvements (bytes):
-1533 : 115025.dasm (-31.96% of base)
-1263 : 215749.dasm (-25.59% of base)
-1263 : 232589.dasm (-25.59% of base)
-1221 : 115043.dasm (-28.45% of base)
-802 : 181563.dasm (-42.01% of base)
-788 : 25273.dasm (-7.78% of base)
-754 : 59415.dasm (-11.87% of base)
-732 : 8200.dasm (-11.03% of base)
-720 : 115057.dasm (-22.51% of base)
-692 : 180483.dasm (-7.27% of base)
-674 : 159954.dasm (-5.16% of base)
-621 : 180574.dasm (-5.95% of base)
-618 : 152575.dasm (-54.69% of base)
-607 : 46494.dasm (-10.96% of base)
-592 : 53258.dasm (-10.59% of base)
-519 : 115104.dasm (-26.05% of base)
-497 : 13907.dasm (-5.88% of base)
-485 : 159968.dasm (-4.30% of base)
-479 : 183044.dasm (-23.40% of base)
-477 : 24955.dasm (-6.37% of base)
74 total files with Code Size differences (42 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
893 (14.13% of base) : 163556.dasm - System.Buffers.Binary.Tests.BinaryReaderUnitTests:SpanWriteAndReadLittleEndianHeterogeneousStruct():this (FullOpts)
787 ( 2.40% of base) : 319376.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32046_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
746 (11.25% of base) : 163552.dasm - System.Buffers.Binary.Tests.BinaryReaderUnitTests:SpanWriteAndReadBigEndianHeterogeneousStruct():this (FullOpts)
500 (12.76% of base) : 66045.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_CompareEqual_Globalized(System.String,System.String,int,int):this (FullOpts)
386 (10.52% of base) : 161781.dasm - System.Memory.Tests.SequenceReader.ReadTo:TryReadTo_Sequence(ubyte,ubyte):this (FullOpts)
367 ( 8.41% of base) : 45662.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
307 ( 5.08% of base) : 231767.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (FullOpts)
307 ( 5.08% of base) : 215591.dasm - System.Tests.StringTests:TrimWhiteSpaceMultipleTimes_Memory() (FullOpts)
255 (12.28% of base) : 172976.dasm - System.Net.Primitives.Functional.Tests.IPNetworkTest:TryFormatSpan_EnoughLength_Succeeds(System.String):this (FullOpts)
242 ( 9.61% of base) : 181956.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2MultiplyTest1():this (FullOpts)
240 (10.94% of base) : 22700.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+BagState:UnshroudKeys(byref):this (FullOpts)
238 ( 6.66% of base) : 142489.dasm - System.IO.Hashing.Tests.XxHash128Tests:Hash_OneShot_Expected():this (FullOpts)
235 (11.95% of base) : 252922.dasm - System.Security.Cryptography.Xml.DSAKeyValue:GetXml(System.Xml.XmlDocument):System.Xml.XmlElement:this (FullOpts)
230 (16.23% of base) : 257949.dasm - System.Text.Tests.FromUtf16Tests:SomeNonAsciiInput() (FullOpts)
226 ( 8.22% of base) : 142393.dasm - System.IO.Hashing.Tests.XxHash3Tests:Hash_OneShot_Expected():this (FullOpts)
224 ( 6.60% of base) : 6858.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (FullOpts)
223 (15.04% of base) : 257983.dasm - System.Text.Tests.ToUtf16Tests:SomeNonAsciiInput() (FullOpts)
211 ( 9.16% of base) : 181983.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2MultiplyTest3():this (FullOpts)
206 ( 6.32% of base) : 64266.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitNullCoalescingAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
191 ( 3.12% of base) : 298229.dasm - System.Text.RegularExpressions.Generator.RegexGenerator+<>c__DisplayClass25_0:<EmitTryMatchAtCurrentPosition>g__EmitLoop|33(System.Text.RegularExpressions.RegexNode):this (FullOpts)
Top method improvements (bytes):
-1533 (-31.96% of base) : 115025.dasm - System.Drawing.Tests.ColorTranslatorTests+<SystemColors_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-1263 (-25.59% of base) : 215749.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim_Memory() (FullOpts)
-1263 (-25.59% of base) : 232589.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim_Memory() (FullOpts)
-1221 (-28.45% of base) : 115043.dasm - System.Drawing.Tests.ColorTranslatorTests+<HtmlColors_TestData>d__7:MoveNext():ubyte:this (FullOpts)
-802 (-42.01% of base) : 181563.dasm - System.Buffers.Tests.NativeRangeTests:CreationTest() (FullOpts)
-788 (-7.78% of base) : 25273.dasm - Microsoft.CSharp.RuntimeBinder.Tests.ImplicitConversionTests:NumericNullableConversions():this (FullOpts)
-754 (-11.87% of base) : 59415.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
-732 (-11.03% of base) : 8200.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
-720 (-22.51% of base) : 115057.dasm - System.Drawing.ColorTranslator:InitializeHtmlSysColorTable() (FullOpts)
-692 (-7.27% of base) : 180483.dasm - System.Numerics.Tensors.Tests.TensorTests:TensorFactoryCreateUninitializedTests() (FullOpts)
-674 (-5.16% of base) : 159954.dasm - System.Memory.Tests.SequenceReader.SkipDelimiter:TryReadTo_SkipDelimiter():this (FullOpts)
-621 (-5.95% of base) : 180574.dasm - System.Numerics.Tensors.Tests.TensorTests:TensorFactoryCreateTests() (FullOpts)
-618 (-54.69% of base) : 152575.dasm - System.Linq.Enumerable:Max[System.Nullable`1[System.Decimal]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[System.Decimal]],System.Collections.Generic.IComparer`1[System.Nullable`1[System.Decimal]]):System.Nullable`1[System.Decimal] (FullOpts)
-607 (-10.96% of base) : 46494.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.String,byref):this (FullOpts)
-592 (-10.59% of base) : 53258.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.String,byref):this (FullOpts)
-519 (-26.05% of base) : 115104.dasm - System.Drawing.ColorTranslator:FromOle(int):System.Drawing.Color (FullOpts)
-497 (-5.88% of base) : 13907.dasm - Microsoft.CodeAnalysis.CSharp.CSharpDeclarationComputer:ComputeDeclarations(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SyntaxNode,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Nullable`1[int],ubyte],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Nullable`1[int],System.Threading.CancellationToken) (FullOpts)
-485 (-4.30% of base) : 159968.dasm - System.Memory.Tests.SequenceReader.SkipDelimiter:TryReadTo_SkipDelimiter_Runs():this (FullOpts)
-479 (-23.40% of base) : 183044.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4MultiplyTest1():this (FullOpts)
-477 (-6.37% of base) : 24955.dasm - Microsoft.CSharp.RuntimeBinder.Tests.ImplicitConversionTests:NumericNullableToNullableConversions():this (FullOpts)
Top method regressions (percentages):
120 (26.97% of base) : 163553.dasm - System.Buffers.Binary.Tests.BinaryReaderUnitTests:.cctor() (FullOpts)
38 (21.59% of base) : 132070.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:WithAssemblyName(System.Reflection.Metadata.TypeName,System.String):System.Reflection.Metadata.TypeName (FullOpts)
38 (20.65% of base) : 131917.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildCoreLibArrayTypeName(System.Type,int):System.Reflection.Metadata.TypeName (FullOpts)
38 (19.39% of base) : 131863.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:BuildArrayTypeName(System.Reflection.Metadata.TypeName,int):System.Reflection.Metadata.TypeName (FullOpts)
47 (18.88% of base) : 131923.dasm - System.Formats.Nrbf.Utils.TypeNameExtensions:ParseSystemRecordTypeName(System.String,System.Formats.Nrbf.PayloadOptions):System.Reflection.Metadata.TypeName (FullOpts)
130 (16.84% of base) : 202862.dasm - System.Reflection.Metadata.BlobBuilder:ContentEquals(System.Reflection.Metadata.BlobBuilder):ubyte:this (FullOpts)
137 (16.35% of base) : 156864.dasm - System.Linq.Enumerable:Max(System.Collections.Generic.IEnumerable`1[System.Decimal]):System.Decimal (FullOpts)
137 (16.35% of base) : 155648.dasm - System.Linq.Enumerable:Min(System.Collections.Generic.IEnumerable`1[System.Decimal]):System.Decimal (FullOpts)
230 (16.23% of base) : 257949.dasm - System.Text.Tests.FromUtf16Tests:SomeNonAsciiInput() (FullOpts)
223 (15.04% of base) : 257983.dasm - System.Text.Tests.ToUtf16Tests:SomeNonAsciiInput() (FullOpts)
893 (14.13% of base) : 163556.dasm - System.Buffers.Binary.Tests.BinaryReaderUnitTests:SpanWriteAndReadLittleEndianHeterogeneousStruct():this (FullOpts)
500 (12.76% of base) : 66045.dasm - Microsoft.Extensions.Primitives.StringSegmentTest:StringSegment_CompareEqual_Globalized(System.String,System.String,int,int):this (FullOpts)
255 (12.28% of base) : 172976.dasm - System.Net.Primitives.Functional.Tests.IPNetworkTest:TryFormatSpan_EnoughLength_Succeeds(System.String):this (FullOpts)
119 (12.08% of base) : 115088.dasm - System.Drawing.Primitives.Tests.ColorTests:FromKnownColor(System.String,int,int,int,int):this (FullOpts)
235 (11.95% of base) : 252922.dasm - System.Security.Cryptography.Xml.DSAKeyValue:GetXml(System.Xml.XmlDocument):System.Xml.XmlElement:this (FullOpts)
88 (11.52% of base) : 191116.dasm - System.Xml.Xsl.XmlQueryType:Equals(System.Xml.Xsl.XmlQueryType):ubyte:this (FullOpts)
746 (11.25% of base) : 163552.dasm - System.Buffers.Binary.Tests.BinaryReaderUnitTests:SpanWriteAndReadBigEndianHeterogeneousStruct():this (FullOpts)
95 (11.05% of base) : 171407.dasm - System.Net.NegotiateAuthenticationPal+WindowsNegotiateAuthenticationPal:Wrap(System.ReadOnlySpan`1[ubyte],System.Buffers.IBufferWriter`1[ubyte],ubyte,byref):int:this (FullOpts)
92 (10.95% of base) : 115048.dasm - System.Drawing.Primitives.Tests.ColorTests:FromOutOfRangeKnownColor(int):this (FullOpts)
240 (10.94% of base) : 22700.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+BagState:UnshroudKeys(byref):this (FullOpts)
Top method improvements (percentages):
-618 (-54.69% of base) : 152575.dasm - System.Linq.Enumerable:Max[System.Nullable`1[System.Decimal]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[System.Decimal]],System.Collections.Generic.IComparer`1[System.Nullable`1[System.Decimal]]):System.Nullable`1[System.Decimal] (FullOpts)
-408 (-53.19% of base) : 115068.dasm - System.Drawing.Primitives.Tests.ColorTests:IsNamedColor():this (FullOpts)
-28 (-47.46% of base) : 110931.dasm - System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass14_0:<PerformanceCounter_Increment>b__1():long:this (FullOpts)
-28 (-47.46% of base) : 110970.dasm - System.Diagnostics.Tests.PerformanceCounterTests+<>c__DisplayClass15_0:<PerformanceCounter_IncrementBy_IncrementBy2>b__1():long:this (FullOpts)
-802 (-42.01% of base) : 181563.dasm - System.Buffers.Tests.NativeRangeTests:CreationTest() (FullOpts)
-297 (-38.87% of base) : 239092.dasm - System.Tests.ArraySegment_Tests`1[System.__Canon]:ToArray_Empty_ReturnsSameArray():this (FullOpts)
-52 (-36.88% of base) : 5563.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGenerators(Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-1533 (-31.96% of base) : 115025.dasm - System.Drawing.Tests.ColorTranslatorTests+<SystemColors_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-258 (-31.39% of base) : 152596.dasm - System.Linq.Enumerable:Max[System.Nullable`1[long],System.Nullable`1[long]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[long]],System.Func`2[System.Nullable`1[long],System.Nullable`1[long]]):System.Nullable`1[long] (FullOpts)
-64 (-30.92% of base) : 297341.dasm - System.Text.Json.Tests.JsonElementWriteTests:WriteSingleValue(System.Text.Json.JsonDocument,System.Text.Json.Utf8JsonWriter):this (FullOpts)
-57 (-30.65% of base) : 15428.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[System.__Canon,System.__Canon]:GetTypeSymbolForSerializedType(System.String):System.__Canon:this (FullOpts)
-1221 (-28.45% of base) : 115043.dasm - System.Drawing.Tests.ColorTranslatorTests+<HtmlColors_TestData>d__7:MoveNext():ubyte:this (FullOpts)
-519 (-26.05% of base) : 115104.dasm - System.Drawing.ColorTranslator:FromOle(int):System.Drawing.Color (FullOpts)
-1263 (-25.59% of base) : 215749.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim_Memory() (FullOpts)
-1263 (-25.59% of base) : 232589.dasm - System.Tests.StringTests:OnlyWhiteSpaceTrim_Memory() (FullOpts)
-309 (-24.70% of base) : 115168.dasm - System.Drawing.Primitives.Tests.ColorTests:UserPreferenceChangingEventTest():this (FullOpts)
-27 (-24.55% of base) : 13386.dasm - Microsoft.CodeAnalysis.CSharp.Simplification.CSharpEscapingReducer+Rewriter:VisitToken(Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
-71 (-24.23% of base) : 30354.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InferredReturnTypeInference(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,byref):ubyte:this (FullOpts)
-44 (-23.40% of base) : 19824.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerMethodSymbol:AddNullableTransforms(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]):this (FullOpts)
-479 (-23.40% of base) : 183044.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4MultiplyTest1():this (FullOpts)
realworld.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: 12139986 (overridden on cmd)
Total bytes of diff: 12121016 (overridden on cmd)
Total bytes of delta: -18970 (-0.16 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
379 : 30469.dasm (14.93% of base)
298 : 11640.dasm (7.54% of base)
228 : 11645.dasm (6.33% of base)
206 : 21149.dasm (6.35% of base)
184 : 24802.dasm (6.96% of base)
168 : 20727.dasm (3.79% of base)
131 : 2919.dasm (3.96% of base)
130 : 14946.dasm (7.78% of base)
121 : 19693.dasm (5.52% of base)
116 : 19514.dasm (6.93% of base)
110 : 15791.dasm (5.12% of base)
105 : 28209.dasm (7.43% of base)
102 : 11226.dasm (10.49% of base)
99 : 7902.dasm (2.95% of base)
93 : 22121.dasm (8.49% of base)
92 : 24755.dasm (4.70% of base)
92 : 20921.dasm (7.25% of base)
89 : 15329.dasm (2.85% of base)
86 : 18128.dasm (7.65% of base)
83 : 20959.dasm (5.18% of base)
Top file improvements (bytes):
-754 : 17676.dasm (-11.93% of base)
-376 : 5332.dasm (-1.66% of base)
-344 : 1275.dasm (-2.53% of base)
-328 : 1304.dasm (-2.74% of base)
-314 : 1301.dasm (-2.63% of base)
-233 : 15786.dasm (-6.06% of base)
-216 : 17920.dasm (-4.56% of base)
-197 : 1965.dasm (-19.39% of base)
-197 : 312.dasm (-19.39% of base)
-192 : 15585.dasm (-3.04% of base)
-181 : 16060.dasm (-18.70% of base)
-170 : 444.dasm (-17.19% of base)
-166 : 2587.dasm (-17.33% of base)
-156 : 19033.dasm (-5.69% of base)
-155 : 1744.dasm (-17.22% of base)
-155 : 90.dasm (-17.22% of base)
-143 : 5371.dasm (-2.26% of base)
-120 : 18498.dasm (-2.11% of base)
-119 : 15353.dasm (-3.89% of base)
-119 : 22343.dasm (-7.29% of base)
71 total files with Code Size differences (43 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
379 (14.93% of base) : 30469.dasm - System.RuntimeType:GetMember(System.String,int,int):System.Reflection.MemberInfo[]:this (FullOpts)
298 ( 7.54% of base) : 11640.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
228 ( 6.33% of base) : 11645.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
206 ( 6.35% of base) : 21149.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitNullCoalescingAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
184 ( 6.96% of base) : 24802.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedParameterSymbolBase:AddSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (FullOpts)
168 ( 3.79% of base) : 20727.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachIterationVariables(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
131 ( 3.96% of base) : 2919.dasm - FSharp.Compiler.CodeAnalysis.BackgroundCompiler+GetProjectOptionsFromScript@1343-1:Invoke(System.Threading.CancellationToken):Internal.Utilities.Library.ValueOrCancelled`1[System.Tuple`2[FSharp.Compiler.CodeAnalysis.FSharpProjectOptions,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Diagnostics.FSharpDiagnostic]]]:this (FullOpts)
130 ( 7.78% of base) : 14946.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (FullOpts)
121 ( 5.52% of base) : 19693.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte] (FullOpts)
116 ( 6.93% of base) : 19514.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocalDeclaration(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
110 ( 5.12% of base) : 15791.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitMemberAccess(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
105 ( 7.43% of base) : 28209.dasm - System.RuntimeType:CreateInstanceImpl(int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
102 (10.49% of base) : 11226.dasm - Microsoft.ML.Internal.Utilities.LineParser:ParseKeyThenNumbers(System.String,ubyte):System.ValueTuple`3[ubyte,System.String,float[]] (FullOpts)
99 ( 2.95% of base) : 7902.dasm - SixLabors.ImageSharp.Formats.Png.PngEncoderCore:WriteTextChunks(System.IO.Stream,SixLabors.ImageSharp.Formats.Png.PngMetadata):this (FullOpts)
93 ( 8.49% of base) : 22121.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetLastToken(Microsoft.CodeAnalysis.SyntaxNode,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
92 ( 4.70% of base) : 24755.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol:AddSynthesizedReturnTypeAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (FullOpts)
92 ( 7.25% of base) : 20921.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState:ReallyInferReturnType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.BoundLambda:this (FullOpts)
89 ( 2.85% of base) : 15329.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (FullOpts)
86 ( 7.65% of base) : 18128.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMethodGroupInternal(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
83 ( 5.18% of base) : 20959.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<ReinferBinaryOperatorAndSetResult>g__visitOperandConversionAndPostConditions|187_2(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,byref):this (FullOpts)
Top method improvements (bytes):
-754 (-11.93% of base) : 17676.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:AddUserDefinedConversionsToExplicitCandidateSet(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.UserDefinedConversionAnalysis],Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte,ubyte,byref):this (FullOpts)
-376 (-1.66% of base) : 5332.dasm - FSharp.Compiler.Lexer:token(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-344 (-2.53% of base) : 1275.dasm - DemoBenchmarks.RagdollTubeBenchmark:AddRagdoll(System.Numerics.Vector3,System.Numerics.Quaternion,int,BepuPhysics.CollidableProperty`1[DemoBenchmarks.RagdollTubeBenchmark+SubgroupCollisionFilter],BepuPhysics.Simulation):DemoBenchmarks.RagdollTubeBenchmark+RagdollHandles (FullOpts)
-328 (-2.74% of base) : 1304.dasm - DemoBenchmarks.RagdollTubeBenchmark:AddLeg(System.Numerics.Vector3,BepuPhysics.RigidPose,BepuPhysics.BodyHandle,byref,int,int,BepuPhysics.RigidPose,BepuPhysics.CollidableProperty`1[DemoBenchmarks.RagdollTubeBenchmark+SubgroupCollisionFilter],BepuPhysics.Constraints.SpringSettings,BepuPhysics.Simulation):DemoBenchmarks.RagdollTubeBenchmark+RagdollLegHandles (FullOpts)
-314 (-2.63% of base) : 1301.dasm - DemoBenchmarks.RagdollTubeBenchmark:AddArm(float,System.Numerics.Vector3,BepuPhysics.RigidPose,BepuPhysics.BodyHandle,byref,int,int,BepuPhysics.RigidPose,BepuPhysics.CollidableProperty`1[DemoBenchmarks.RagdollTubeBenchmark+SubgroupCollisionFilter],BepuPhysics.Constraints.SpringSettings,BepuPhysics.Simulation):DemoBenchmarks.RagdollTubeBenchmark+RagdollArmHandles (FullOpts)
-233 (-6.06% of base) : 15786.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentOutboundAssignmentsAndPostConditions(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.NullableWalker+CompareExchangeInfo):this (FullOpts)
-216 (-4.56% of base) : 17920.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceDelegateMethodSymbol:AddDelegateMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Syntax.DelegateDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
-197 (-19.39% of base) : 1965.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-197 (-19.39% of base) : 312.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-192 (-3.04% of base) : 15585.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (FullOpts)
-181 (-18.70% of base) : 16060.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeArguments(Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-170 (-17.19% of base) : 444.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-166 (-17.33% of base) : 2587.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-156 (-5.69% of base) : 19033.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte,byref,ubyte,ubyte):this (FullOpts)
-155 (-17.22% of base) : 1744.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-155 (-17.22% of base) : 90.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-143 (-2.26% of base) : 5371.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:rulesForBothSoftWhiteAndHardWhite(FSharp.Compiler.LexFilter+TokenTup):ubyte:this (FullOpts)
-120 (-2.11% of base) : 18498.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,byref):int:this (FullOpts)
-119 (-7.29% of base) : 22343.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMemberCref(Microsoft.CodeAnalysis.CSharp.Syntax.MemberCrefSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
-119 (-3.89% of base) : 15353.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValue(Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method regressions (percentages):
379 (14.93% of base) : 30469.dasm - System.RuntimeType:GetMember(System.String,int,int):System.Reflection.MemberInfo[]:this (FullOpts)
102 (10.49% of base) : 11226.dasm - Microsoft.ML.Internal.Utilities.LineParser:ParseKeyThenNumbers(System.String,ubyte):System.ValueTuple`3[ubyte,System.String,float[]] (FullOpts)
93 ( 8.49% of base) : 22121.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetLastToken(Microsoft.CodeAnalysis.SyntaxNode,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
130 ( 7.78% of base) : 14946.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharRepeater|24(System.Text.RegularExpressions.RegexNode,ubyte):this (FullOpts)
86 ( 7.65% of base) : 18128.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMethodGroupInternal(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
298 ( 7.54% of base) : 11640.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
105 ( 7.43% of base) : 28209.dasm - System.RuntimeType:CreateInstanceImpl(int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
92 ( 7.25% of base) : 20921.dasm - Microsoft.CodeAnalysis.CSharp.UnboundLambdaState:ReallyInferReturnType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.BoundLambda:this (FullOpts)
44 ( 7.24% of base) : 23644.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:StoreToTemp(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,ubyte,int,ubyte,Microsoft.CodeAnalysis.SyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocal:this (FullOpts)
184 ( 6.96% of base) : 24802.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedParameterSymbolBase:AddSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,byref):this (FullOpts)
116 ( 6.93% of base) : 19514.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocalDeclaration(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
20 ( 6.92% of base) : 20766.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol+<>c:<.cctor>b__146_0(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
206 ( 6.35% of base) : 21149.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitNullCoalescingAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundNullCoalescingAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
228 ( 6.33% of base) : 11645.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyInto[float,float,float](byref,byref,byref,System.Func`4[int,float,float,float]) (FullOpts)
11 ( 6.29% of base) : 16160.dasm - Microsoft.CodeAnalysis.MetadataTypeName:FromNamespaceAndTypeName(System.String,System.String,ubyte,int):Microsoft.CodeAnalysis.MetadataTypeName (FullOpts)
62 ( 6.13% of base) : 11537.dasm - Microsoft.ML.Transforms.KeyToVectorMappingTransformer+Mapper+<>c__DisplayClass13_0:<MakeGetterInd>b__0(byref):this (FullOpts)
68 ( 5.79% of base) : 15263.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetFirstToken(Microsoft.CodeAnalysis.SyntaxNode,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
121 ( 5.52% of base) : 19693.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:Fix(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte] (FullOpts)
71 ( 5.27% of base) : 16313.dasm - Microsoft.CodeAnalysis.CSharp.Binder:LookupSymbolInAliases(System.Collections.Immutable.ImmutableDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.AliasAndUsingDirective],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.AliasAndExternAliasDirective],Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,ubyte,byref):this (FullOpts)
45 ( 5.23% of base) : 29823.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
Top method improvements (percentages):
-57 (-30.65% of base) : 18348.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[System.__Canon,System.__Canon]:GetTypeSymbolForSerializedType(System.String):System.__Canon:this (FullOpts)
-71 (-24.23% of base) : 20914.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InferredReturnTypeInference(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,byref):ubyte:this (FullOpts)
-75 (-20.78% of base) : 5329.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:runWrappedLexerInConsistentLexbufState():FSharp.Compiler.LexFilter+TokenTup:this (FullOpts)
-197 (-19.39% of base) : 1965.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-197 (-19.39% of base) : 312.dasm - System.RuntimeType:GetMethodImplCommon(System.String,int,int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodInfo:this (FullOpts)
-181 (-18.70% of base) : 16060.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeArguments(Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:this (FullOpts)
-80 (-17.78% of base) : 17267.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:AllInterfacesWithDefinitionUseSiteDiagnostics(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-51 (-17.77% of base) : 20769.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLambda(Microsoft.CodeAnalysis.CSharp.BoundLambda,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState]):this (FullOpts)
-166 (-17.33% of base) : 2587.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-155 (-17.22% of base) : 1744.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-155 (-17.22% of base) : 90.dasm - System.RuntimeType:GetConstructorImpl(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (FullOpts)
-170 (-17.19% of base) : 444.dasm - System.RuntimeType:GetPropertyImpl(System.String,int,System.Reflection.Binder,System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-80 (-17.13% of base) : 18413.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol:AllEffectiveInterfacesWithDefinitionUseSiteDiagnostics(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-22 (-15.94% of base) : 20007.dasm - Microsoft.CodeAnalysis.CSharp.ControlFlowPass:VisitTryBlock(Microsoft.CodeAnalysis.CSharp.BoundStatement,Microsoft.CodeAnalysis.CSharp.BoundTryStatement,byref):this (FullOpts)
-12 (-15.19% of base) : 7646.dasm - SixLabors.ImageSharp.Processing.DefaultImageProcessorContext`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:GetCurrentSize():SixLabors.ImageSharp.Size:this (FullOpts)
-97 (-15.09% of base) : 19487.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:get_IsVar():ubyte:this (FullOpts)
-84 (-14.14% of base) : 19493.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:MemberGroupHidesByName[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],System.__Canon,byref):ubyte (FullOpts)
-38 (-14.07% of base) : 19901.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol:EffectiveInterfacesWithDefinitionUseSiteDiagnostics(byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-12 (-13.95% of base) : 7653.dasm - SixLabors.ImageSharp.Processing.DefaultImageProcessorContext`1[SixLabors.ImageSharp.PixelFormats.Rgba32]:ApplyProcessor(SixLabors.ImageSharp.Processing.Processors.IImageProcessor):SixLabors.ImageSharp.Processing.IImageProcessingContext:this (FullOpts)
-45 (-13.85% of base) : 19659.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:LowerBoundArrayInference(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):ubyte:this (FullOpts)
smoke_tests.nativeaot.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: 4970147 (overridden on cmd)
Total bytes of diff: 4969593 (overridden on cmd)
Total bytes of delta: -554 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
135 : 9209.dasm (4.21% of base)
78 : 9418.dasm (5.11% of base)
56 : 5766.dasm (4.07% of base)
53 : 9592.dasm (4.01% of base)
49 : 13753.dasm (9.44% of base)
49 : 9562.dasm (9.46% of base)
48 : 5780.dasm (9.02% of base)
41 : 5173.dasm (4.06% of base)
21 : 14422.dasm (3.41% of base)
21 : 19388.dasm (3.41% of base)
21 : 16907.dasm (3.41% of base)
20 : 5894.dasm (10.70% of base)
20 : 3043.dasm (3.24% of base)
20 : 351.dasm (3.24% of base)
18 : 13913.dasm (0.76% of base)
18 : 10553.dasm (0.76% of base)
18 : 10633.dasm (1.65% of base)
18 : 13817.dasm (1.65% of base)
17 : 5879.dasm (1.47% of base)
17 : 11919.dasm (1.76% of base)
Top file improvements (bytes):
-83 : 10678.dasm (-1.64% of base)
-53 : 8648.dasm (-22.27% of base)
-51 : 9245.dasm (-1.67% of base)
-34 : 11342.dasm (-2.77% of base)
-34 : 6649.dasm (-2.51% of base)
-32 : 7696.dasm (-13.62% of base)
-32 : 12695.dasm (-13.62% of base)
-30 : 12458.dasm (-2.48% of base)
-30 : 7647.dasm (-2.46% of base)
-25 : 9800.dasm (-3.02% of base)
-24 : 12457.dasm (-3.03% of base)
-24 : 7646.dasm (-3.01% of base)
-23 : 7152.dasm (-2.16% of base)
-23 : 10701.dasm (-4.86% of base)
-23 : 9212.dasm (-2.59% of base)
-23 : 11523.dasm (-2.16% of base)
-23 : 9400.dasm (-3.16% of base)
-22 : 11521.dasm (-2.28% of base)
-22 : 7150.dasm (-2.28% of base)
-22 : 10207.dasm (-9.32% of base)
62 total files with Code Size differences (35 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
135 ( 4.21% of base) : 9209.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileBinaryExpression(System.Linq.Expressions.Expression):this (FullOpts)
78 ( 5.11% of base) : 9418.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileLiftedLogicalBinaryExpression(System.Linq.Expressions.BinaryExpression,ubyte):this (FullOpts)
56 ( 4.07% of base) : 5766.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
53 ( 4.01% of base) : 9592.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
49 ( 9.44% of base) : 13753.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
49 ( 9.46% of base) : 9562.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
48 ( 9.02% of base) : 5780.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
41 ( 4.06% of base) : 5173.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
21 ( 3.41% of base) : 14422.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
21 ( 3.41% of base) : 19388.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
21 ( 3.41% of base) : 16907.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
20 (10.70% of base) : 5894.dasm - System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (FullOpts)
20 ( 3.24% of base) : 3043.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
20 ( 3.24% of base) : 351.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
18 ( 0.76% of base) : 13913.dasm - Internal.Reflection.Extensions.NonPortable.CustomAttributeInstantiator:Instantiate(System.Reflection.CustomAttributeData):System.Attribute (FullOpts)
18 ( 0.76% of base) : 10553.dasm - Internal.Reflection.Extensions.NonPortable.CustomAttributeInstantiator:Instantiate(System.Reflection.CustomAttributeData):System.Attribute (FullOpts)
18 ( 1.65% of base) : 10633.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
18 ( 1.65% of base) : 13817.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
17 ( 1.47% of base) : 5879.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
17 ( 1.76% of base) : 11919.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
Top method improvements (bytes):
-83 (-1.64% of base) : 10678.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-53 (-22.27% of base) : 8648.dasm - System.Func`2[Generics+TestDelegateFatFunctionPointers+BigStruct,Generics+TestDelegateFatFunctionPointers+BigStruct]:InvokeMulticastThunk(Generics+TestDelegateFatFunctionPointers+BigStruct):Generics+TestDelegateFatFunctionPointers+BigStruct:this (FullOpts)
-51 (-1.67% of base) : 9245.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileTryExpression(System.Linq.Expressions.Expression):this (FullOpts)
-34 (-2.77% of base) : 11342.dasm - System.Reflection.Runtime.CustomAttributes.RuntimeCustomAttributeData:ToString():System.String:this (FullOpts)
-34 (-2.51% of base) : 6649.dasm - System.Reflection.Runtime.CustomAttributes.RuntimeCustomAttributeData:ToString():System.String:this (FullOpts)
-32 (-13.62% of base) : 7696.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
-32 (-13.62% of base) : 12695.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
-30 (-2.48% of base) : 12458.dasm - System.Reflection.Runtime.CustomAttributes.NativeFormat.NativeFormatCustomAttributeData:GetConstructorArguments(ubyte):System.Collections.Generic.IList`1[System.Reflection.CustomAttributeTypedArgument]:this (FullOpts)
-30 (-2.46% of base) : 7647.dasm - System.Reflection.Runtime.CustomAttributes.NativeFormat.NativeFormatCustomAttributeData:GetConstructorArguments(ubyte):System.Collections.Generic.IList`1[System.Reflection.CustomAttributeTypedArgument]:this (FullOpts)
-25 (-3.02% of base) : 9800.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileMemberAssignment(ubyte,System.Reflection.MemberInfo,System.Linq.Expressions.Expression,ubyte):this (FullOpts)
-24 (-3.03% of base) : 12457.dasm - System.Reflection.Runtime.CustomAttributes.NativeFormat.NativeFormatCustomAttributeData:GetNamedArguments(ubyte):System.Collections.Generic.IList`1[System.Reflection.CustomAttributeNamedArgument]:this (FullOpts)
-24 (-3.01% of base) : 7646.dasm - System.Reflection.Runtime.CustomAttributes.NativeFormat.NativeFormatCustomAttributeData:GetNamedArguments(ubyte):System.Collections.Generic.IList`1[System.Reflection.CustomAttributeNamedArgument]:this (FullOpts)
-23 (-2.16% of base) : 7152.dasm - System.DateTimeFormat:FormatCustomizedTimeZone[ushort](System.DateTime,System.TimeSpan,int,ubyte,byref) (FullOpts)
-23 (-2.16% of base) : 11523.dasm - System.DateTimeFormat:FormatCustomizedTimeZone[ushort](System.DateTime,System.TimeSpan,int,ubyte,byref) (FullOpts)
-23 (-2.59% of base) : 9212.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileCoalesceBinaryExpression(System.Linq.Expressions.Expression):this (FullOpts)
-23 (-3.16% of base) : 9400.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIndexAssignment(System.Linq.Expressions.BinaryExpression,ubyte):this (FullOpts)
-23 (-4.86% of base) : 10701.dasm - System.Reflection.Runtime.BindingFlagSupport.Shared:QualifiesBasedOnParameterCount(System.Reflection.MethodBase,int,int,System.Type[]):ubyte (FullOpts)
-22 (-2.28% of base) : 11521.dasm - System.DateTimeFormat:FormatDigits[ushort](byref,int,int) (FullOpts)
-22 (-2.28% of base) : 7150.dasm - System.DateTimeFormat:FormatDigits[ushort](byref,int,int) (FullOpts)
-22 (-9.32% of base) : 10207.dasm - System.Reflection.Runtime.PropertyInfos.RuntimePropertyInfo:get_PropertyType():System.Type:this (FullOpts)
Top method regressions (percentages):
20 (10.70% of base) : 5894.dasm - System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (FullOpts)
49 ( 9.46% of base) : 9562.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
49 ( 9.44% of base) : 13753.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
48 ( 9.02% of base) : 5780.dasm - System.Type:FilterNameImpl(System.Reflection.MemberInfo,System.Object,int):ubyte (FullOpts)
78 ( 5.11% of base) : 9418.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileLiftedLogicalBinaryExpression(System.Linq.Expressions.BinaryExpression,ubyte):this (FullOpts)
135 ( 4.21% of base) : 9209.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileBinaryExpression(System.Linq.Expressions.Expression):this (FullOpts)
56 ( 4.07% of base) : 5766.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
41 ( 4.06% of base) : 5173.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (FullOpts)
53 ( 4.01% of base) : 9592.dasm - System.Reflection.DynamicInvokeInfo:.ctor(System.Reflection.MethodBase,long):this (FullOpts)
7 ( 3.91% of base) : 12184.dasm - System.Reflection.Runtime.CustomAttributes.RuntimeCustomAttributeData:ResolveAttributeConstructor(System.Type,System.Type[]):System.Reflection.ConstructorInfo (FullOpts)
12 ( 3.60% of base) : 10384.dasm - System.DefaultBinder:ExactBinding(System.Reflection.MethodBase[],System.Type[]):System.Reflection.MethodBase (FullOpts)
7 ( 3.45% of base) : 6998.dasm - System.Reflection.Runtime.CustomAttributes.RuntimeCustomAttributeData:ResolveAttributeConstructor(System.Type,System.Type[]):System.Reflection.ConstructorInfo (FullOpts)
21 ( 3.41% of base) : 14422.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
21 ( 3.41% of base) : 19388.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
21 ( 3.41% of base) : 16907.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
20 ( 3.24% of base) : 3043.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
20 ( 3.24% of base) : 351.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:DeadlockAwareAcquire(System.Runtime.CompilerServices.ClassConstructorRunner+CctorHandle,ulong):ubyte (FullOpts)
4 ( 2.52% of base) : 11247.dasm - System.DefaultBinder:CompareMethodSig(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte (FullOpts)
2 ( 2.00% of base) : 4446.dasm - System.IO.Path:GetFileNameWithoutExtension(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
2 ( 2.00% of base) : 1148.dasm - System.IO.Path:GetFileNameWithoutExtension(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
Top method improvements (percentages):
-53 (-22.27% of base) : 8648.dasm - System.Func`2[Generics+TestDelegateFatFunctionPointers+BigStruct,Generics+TestDelegateFatFunctionPointers+BigStruct]:InvokeMulticastThunk(Generics+TestDelegateFatFunctionPointers+BigStruct):Generics+TestDelegateFatFunctionPointers+BigStruct:this (FullOpts)
-11 (-13.75% of base) : 10330.dasm - System.Reflection.Runtime.FieldInfos.NativeFormat.NativeFormatRuntimeFieldInfo:get_FieldRuntimeType():System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
-32 (-13.62% of base) : 7696.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
-32 (-13.62% of base) : 12695.dasm - System.TimeZoneInfo:GetUtcOffset(System.DateTime,System.TimeZoneInfo):System.TimeSpan (FullOpts)
-11 (-12.64% of base) : 5854.dasm - System.Reflection.Runtime.FieldInfos.NativeFormat.NativeFormatRuntimeFieldInfo:get_FieldRuntimeType():System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
-18 (-11.25% of base) : 14509.dasm - System.CrashInfo:WriteChars(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-18 (-11.25% of base) : 19469.dasm - System.CrashInfo:WriteChars(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-18 (-11.25% of base) : 16971.dasm - System.CrashInfo:WriteChars(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-15 (-9.49% of base) : 416.dasm - System.CrashInfo:WriteChars(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-15 (-9.49% of base) : 3152.dasm - System.CrashInfo:WriteChars(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-22 (-9.32% of base) : 10207.dasm - System.Reflection.Runtime.PropertyInfos.RuntimePropertyInfo:get_PropertyType():System.Type:this (FullOpts)
-18 (-7.41% of base) : 7283.dasm - System.Reflection.Runtime.PropertyInfos.RuntimePropertyInfo:get_PropertyType():System.Type:this (FullOpts)
-20 (-7.12% of base) : 4140.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (FullOpts)
-20 (-7.12% of base) : 12378.dasm - System.Reflection.Metadata.TypeNameParserHelpers:IsBeginningOfGenericArgs(byref,byref):ubyte (FullOpts)
-7 (-5.19% of base) : 29915.dasm - System.Number:Int128DivMod1E19(byref):ulong (FullOpts)
-17 (-5.17% of base) : 12167.dasm - System.Reflection.Runtime.MethodInfos.RuntimeNamedMethodInfo`1[System.Reflection.Runtime.MethodInfos.NativeFormat.NativeFormatMethodCommon]:get_GenericTypeParameters():System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]:this (FullOpts)
-23 (-4.86% of base) : 10701.dasm - System.Reflection.Runtime.BindingFlagSupport.Shared:QualifiesBasedOnParameterCount(System.Reflection.MethodBase,int,int,System.Type[]):ubyte (FullOpts)
-17 (-4.86% of base) : 5096.dasm - System.Reflection.Runtime.MethodInfos.RuntimeNamedMethodInfo`1[System.Reflection.Runtime.MethodInfos.NativeFormat.NativeFormatMethodCommon]:get_GenericTypeParameters():System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]:this (FullOpts)
-20 (-4.75% of base) : 14417.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:EnsureClassConstructorRun(ulong) (FullOpts)
-20 (-4.75% of base) : 19368.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:EnsureClassConstructorRun(ulong) (FullOpts)