forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] MihaZupan/runtime/trycopyto #877
Comments
Top method regressions75 (Infinity of base) - System.ReadOnlySpan`1[System.__Canon]:TryCopyTo(System.Span`1[System.__Canon],byref):ubyte:this+; Assembly listing for method System.ReadOnlySpan`1[System.__Canon]:TryCopyTo(System.Span`1[System.__Canon],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rbp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
+;* V02 arg1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.__Canon]>
+; V03 arg2 [V03,T01] ( 4, 3.50) byref -> r8 single-def
+; V04 loc0 [V04,T06] ( 3, 2.50) ubyte -> rsi
+;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V08 tmp3 [V08,T05] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V10 tmp5 [V10,T02] ( 4, 4 ) long -> rdx "Inlining Arg"
+; V11 tmp6 [V11,T03] ( 3, 2 ) byref -> rax single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp7 [V12,T04] ( 2, 2 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 cse0 [V13,T07] ( 3, 2.50) int -> rdx "CSE #01: aggressive"
+;
+; Lcl frame size = 0
+
+G_M63513_IG01:
+ push rbp
+ mov rbp, rsp
+ mov rax, rdx
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M63513_IG02:
+ xor esi, esi
+ mov dword ptr [r8], esi
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M63513_IG03:
+ mov edx, dword ptr [rdi+0x08]
+ cmp edx, ecx
+ ja SHORT G_M63513_IG07
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M63513_IG04:
+ mov dword ptr [r8], edx
+ mov rsi, bword ptr [rdi]
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 3
+ cmp rdx, 0x4000
+ jbe SHORT G_M63513_IG05
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
+ call [rax]System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
+ jmp SHORT G_M63513_IG06
+ ;; size=39 bbWeight=0.50 PerfScore 6.12
+G_M63513_IG05:
+ mov rdi, rax
+ call System.Buffer:__BulkMoveWithWriteBarrier(byref,byref,ulong)
+ ;; size=8 bbWeight=0.50 PerfScore 0.62
+G_M63513_IG06:
+ mov esi, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M63513_IG07:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M63513_IG08:
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+
+; Total bytes of code 75, prolog size 4, PerfScore 14.62, instruction count 24, allocated bytes for code 75 (MethodHash=7c0e07e6) for method System.ReadOnlySpan`1[System.__Canon]:TryCopyTo(System.Span`1[System.__Canon],byref):ubyte:this (FullOpts)
+; ============================================================ 75 (Infinity of base) - System.Span`1[System.__Canon]:TryCopyTo(System.Span`1[System.__Canon],byref):ubyte:this+; Assembly listing for method System.Span`1[System.__Canon]:TryCopyTo(System.Span`1[System.__Canon],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rbp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
+;* V02 arg1 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.__Canon]>
+; V03 arg2 [V03,T01] ( 4, 3.50) byref -> r8 single-def
+; V04 loc0 [V04,T06] ( 3, 2.50) ubyte -> rsi
+;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V06 tmp1 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
+;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
+; V08 tmp3 [V08,T05] ( 3, 3 ) byref -> rsi single-def "Inlining Arg"
+;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V10 tmp5 [V10,T02] ( 4, 4 ) long -> rdx "Inlining Arg"
+; V11 tmp6 [V11,T03] ( 3, 2 ) byref -> rax single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp7 [V12,T04] ( 2, 2 ) int -> rcx single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V13 cse0 [V13,T07] ( 3, 2.50) int -> rdx "CSE #01: aggressive"
+;
+; Lcl frame size = 0
+
+G_M27359_IG01:
+ push rbp
+ mov rbp, rsp
+ mov rax, rdx
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M27359_IG02:
+ xor esi, esi
+ mov dword ptr [r8], esi
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M27359_IG03:
+ mov edx, dword ptr [rdi+0x08]
+ cmp edx, ecx
+ ja SHORT G_M27359_IG07
+ ;; size=7 bbWeight=1 PerfScore 3.25
+G_M27359_IG04:
+ mov dword ptr [r8], edx
+ mov rsi, bword ptr [rdi]
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 3
+ cmp rdx, 0x4000
+ jbe SHORT G_M27359_IG05
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
+ call [rax]System.Buffer:_BulkMoveWithWriteBarrier(byref,byref,ulong)
+ jmp SHORT G_M27359_IG06
+ ;; size=39 bbWeight=0.50 PerfScore 6.12
+G_M27359_IG05:
+ mov rdi, rax
+ call System.Buffer:__BulkMoveWithWriteBarrier(byref,byref,ulong)
+ ;; size=8 bbWeight=0.50 PerfScore 0.62
+G_M27359_IG06:
+ mov esi, 1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M27359_IG07:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M27359_IG08:
+ pop rbp
+ ret
+ ;; size=2 bbWeight=1 PerfScore 1.50
+
+; Total bytes of code 75, prolog size 4, PerfScore 14.62, instruction count 24, allocated bytes for code 75 (MethodHash=a0629520) for method System.Span`1[System.__Canon]:TryCopyTo(System.Span`1[System.__Canon],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.ReadOnlySpan`1[double]:TryCopyTo(System.Span`1[double],byref):ubyte:this+; Assembly listing for method System.ReadOnlySpan`1[double]:TryCopyTo(System.Span`1[double],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[double]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M18585_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M18585_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M18585_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M18585_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M18585_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 3
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M18585_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M18585_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=6517b766) for method System.ReadOnlySpan`1[double]:TryCopyTo(System.Span`1[double],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.ReadOnlySpan`1[int]:TryCopyTo(System.Span`1[int],byref):ubyte:this+; Assembly listing for method System.ReadOnlySpan`1[int]:TryCopyTo(System.Span`1[int],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M64217_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M64217_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M64217_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M64217_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M64217_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 2
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M64217_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M64217_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=06100526) for method System.ReadOnlySpan`1[int]:TryCopyTo(System.Span`1[int],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.ReadOnlySpan`1[long]:TryCopyTo(System.Span`1[long],byref):ubyte:this+; Assembly listing for method System.ReadOnlySpan`1[long]:TryCopyTo(System.Span`1[long],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[long]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M16025_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M16025_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M16025_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M16025_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M16025_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 3
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M16025_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M16025_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=a231c166) for method System.ReadOnlySpan`1[long]:TryCopyTo(System.Span`1[long],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.ReadOnlySpan`1[System.Nullable`1[int]]:TryCopyTo(System.Span`1[System.Nullable`1[int]],byref):ubyte:this+; Assembly listing for method System.ReadOnlySpan`1[System.Nullable`1[int]]:TryCopyTo(System.Span`1[System.Nullable`1[int]],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Nullable`1[int]]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M26649_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M26649_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M26649_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M26649_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M26649_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 3
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M26649_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M26649_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=4cc397e6) for method System.ReadOnlySpan`1[System.Nullable`1[int]]:TryCopyTo(System.Span`1[System.Nullable`1[int]],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]:TryCopyTo(System.Span`1[System.Numerics.Vector`1[float]],byref):ubyte:this+; Assembly listing for method System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]:TryCopyTo(System.Span`1[System.Numerics.Vector`1[float]],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Numerics.Vector`1[float]]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M44057_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M44057_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M44057_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M44057_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M44057_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 5
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M44057_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M44057_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=d5e253e6) for method System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]:TryCopyTo(System.Span`1[System.Numerics.Vector`1[float]],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.Span`1[double]:TryCopyTo(System.Span`1[double],byref):ubyte:this+; Assembly listing for method System.Span`1[double]:TryCopyTo(System.Span`1[double],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[double]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M7519_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M7519_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M7519_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M7519_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M7519_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 3
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M7519_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M7519_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=bc8ae2a0) for method System.Span`1[double]:TryCopyTo(System.Span`1[double],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.Span`1[int]:TryCopyTo(System.Span`1[int],byref):ubyte:this+; Assembly listing for method System.Span`1[int]:TryCopyTo(System.Span`1[int],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[int]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M17055_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M17055_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M17055_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M17055_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M17055_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 2
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M17055_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M17055_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=62cdbd60) for method System.Span`1[int]:TryCopyTo(System.Span`1[int],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.Span`1[long]:TryCopyTo(System.Span`1[long],byref):ubyte:this+; Assembly listing for method System.Span`1[long]:TryCopyTo(System.Span`1[long],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[long]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M6495_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M6495_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M6495_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M6495_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M6495_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 3
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M6495_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M6495_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=51bfe6a0) for method System.Span`1[long]:TryCopyTo(System.Span`1[long],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.Span`1[System.Nullable`1[int]]:TryCopyTo(System.Span`1[System.Nullable`1[int]],byref):ubyte:this+; Assembly listing for method System.Span`1[System.Nullable`1[int]]:TryCopyTo(System.Span`1[System.Nullable`1[int]],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Nullable`1[int]]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M223_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M223_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M223_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M223_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M223_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 3
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M223_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M223_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=ddaaff20) for method System.Span`1[System.Nullable`1[int]]:TryCopyTo(System.Span`1[System.Nullable`1[int]],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.Span`1[System.Numerics.Vector`1[float]]:TryCopyTo(System.Span`1[System.Numerics.Vector`1[float]],byref):ubyte:this+; Assembly listing for method System.Span`1[System.Numerics.Vector`1[float]]:TryCopyTo(System.Span`1[System.Numerics.Vector`1[float]],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Numerics.Vector`1[float]]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M14943_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M14943_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M14943_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M14943_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M14943_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ shl rdx, 5
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 4.62
+G_M14943_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M14943_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 11.88, instruction count 18, allocated bytes for code 57 (MethodHash=ec82c5a0) for method System.Span`1[System.Numerics.Vector`1[float]]:TryCopyTo(System.Span`1[System.Numerics.Vector`1[float]],byref):ubyte:this (FullOpts)
+; ============================================================ 57 (Infinity of base) - System.String:TryCopyTo(System.Span`1[ushort],byref):ubyte:this+; Assembly listing for method System.String:TryCopyTo(System.Span`1[ushort],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 4, 3.50) ref -> rdi this class-hnd single-def <System.String>
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T05] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T04] ( 4, 3 ) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M54102_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M54102_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M54102_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ jg SHORT G_M54102_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M54102_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, r8d
+ add rdx, rdx
+ lea rsi, bword ptr [rdi+0x0C]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=33 bbWeight=0.50 PerfScore 2.88
+G_M54102_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M54102_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 57, prolog size 1, PerfScore 10.12, instruction count 18, allocated bytes for code 57 (MethodHash=7b5f2ca9) for method System.String:TryCopyTo(System.Span`1[ushort],byref):ubyte:this (FullOpts)
+; ============================================================ 56 (Infinity of base) - System.ReadOnlySpan`1[short]:TryCopyTo(System.Span`1[short],byref):ubyte:this+; Assembly listing for method System.ReadOnlySpan`1[short]:TryCopyTo(System.Span`1[short],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[short]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M58105_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M58105_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M58105_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M58105_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M58105_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ add rdx, rdx
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=32 bbWeight=0.50 PerfScore 4.50
+G_M58105_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M58105_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 56, prolog size 1, PerfScore 11.75, instruction count 18, allocated bytes for code 56 (MethodHash=7f4a1d06) for method System.ReadOnlySpan`1[short]:TryCopyTo(System.Span`1[short],byref):ubyte:this (FullOpts)
+; ============================================================ 56 (Infinity of base) - System.Span`1[short]:TryCopyTo(System.Span`1[short],byref):ubyte:this+; Assembly listing for method System.Span`1[short]:TryCopyTo(System.Span`1[short],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[short]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M47295_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M47295_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M47295_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M47295_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M47295_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ add rdx, rdx
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=32 bbWeight=0.50 PerfScore 4.50
+G_M47295_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M47295_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 56, prolog size 1, PerfScore 11.75, instruction count 18, allocated bytes for code 56 (MethodHash=ef7a4740) for method System.Span`1[short]:TryCopyTo(System.Span`1[short],byref):ubyte:this (FullOpts)
+; ============================================================ 53 (Infinity of base) - System.ReadOnlySpan`1[ubyte]:TryCopyTo(System.Span`1[ubyte],byref):ubyte:this+; Assembly listing for method System.ReadOnlySpan`1[ubyte]:TryCopyTo(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M24409_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M24409_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M24409_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M24409_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M24409_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=29 bbWeight=0.50 PerfScore 4.38
+G_M24409_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M24409_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 53, prolog size 1, PerfScore 11.62, instruction count 17, allocated bytes for code 53 (MethodHash=7eb0a0a6) for method System.ReadOnlySpan`1[ubyte]:TryCopyTo(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
+; ============================================================ 53 (Infinity of base) - System.Span`1[ubyte]:TryCopyTo(System.Span`1[ubyte],byref):ubyte:this+; Assembly listing for method System.Span`1[ubyte]:TryCopyTo(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
+; Emitting BLENDED_CODE for X64 with AVX512 - Unix
+; FullOpts code
+; optimized code
+; rsp based frame
+; partially interruptible
+; No PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
+; Final local variable assignments
+;
+; V00 this [V00,T00] ( 5, 4 ) byref -> rdi this single-def
+;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
+; V02 arg2 [V02,T01] ( 4, 3.50) byref -> rcx single-def
+; V03 loc0 [V03,T04] ( 3, 2.50) ubyte -> rsi
+;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V08 tmp4 [V08,T03] ( 2, 1.50) byref -> rax single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T02] ( 2, 2 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V10 cse0 [V10,T05] ( 3, 2.50) int -> r8 "CSE #01: aggressive"
+;
+; Lcl frame size = 8
+
+G_M6431_IG01:
+ push rax
+ mov rax, rsi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M6431_IG02:
+ xor esi, esi
+ mov dword ptr [rcx], esi
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M6431_IG03:
+ mov r8d, dword ptr [rdi+0x08]
+ cmp r8d, edx
+ ja SHORT G_M6431_IG05
+ ;; size=9 bbWeight=1 PerfScore 3.25
+G_M6431_IG04:
+ mov dword ptr [rcx], r8d
+ mov edx, dword ptr [rdi+0x08]
+ mov rsi, bword ptr [rdi]
+ mov rdi, rax
+ mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+ call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+ mov esi, 1
+ ;; size=29 bbWeight=0.50 PerfScore 4.38
+G_M6431_IG05:
+ mov eax, esi
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M6431_IG06:
+ add rsp, 8
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+
+; Total bytes of code 53, prolog size 1, PerfScore 11.62, instruction count 17, allocated bytes for code 53 (MethodHash=f4f6e6e0) for method System.Span`1[ubyte]:TryCopyTo(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
+; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/e9f298861df8eb724d747c40268be83c |
Top method improvements-64 (-100.00 % of base) - Internal.Cryptography.Helpers:TryCopyToDestination(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte-; Assembly listing for method Internal.Cryptography.Helpers:TryCopyToDestination(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
-; Emitting BLENDED_CODE for X64 with AVX512 - Unix
-; FullOpts code
-; optimized code
-; rsp based frame
-; partially interruptible
-; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
-; Final local variable assignments
-;
-;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T00] ( 4, 3 ) byref -> rbx single-def
-;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V09 tmp6 [V09,T03] ( 2, 1.50) byref -> rsi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp7 [V10,T01] ( 4, 3 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V11 tmp8 [V11,T04] ( 2, 1.50) byref -> rdi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp9 [V12,T02] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-;* V13 tmp10 [V13 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;
-; Lcl frame size = 8
-
-G_M52817_IG01:
- push r15
- push rbx
- push rax
- mov r15d, esi
- mov rsi, rdi
- mov rdi, rdx
- mov rbx, r8
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M52817_IG02:
- cmp r15d, ecx
- jle SHORT G_M52817_IG05
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M52817_IG03:
- xor eax, eax
- mov dword ptr [rbx], eax
- ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M52817_IG04:
- add rsp, 8
- pop rbx
- pop r15
- ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M52817_IG05:
- mov edx, r15d
- mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
- call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov dword ptr [rbx], r15d
- mov eax, 1
- ;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M52817_IG06:
- add rsp, 8
- pop rbx
- pop r15
- ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-
-; Total bytes of code 64, prolog size 4, PerfScore 10.50, instruction count 24, allocated bytes for code 64 (MethodHash=18a931ae) for method Internal.Cryptography.Helpers:TryCopyToDestination(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
-; ============================================================ -64 (-100.00 % of base) - Internal.Cryptography.Helpers:TryCopyToDestination(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte-; Assembly listing for method Internal.Cryptography.Helpers:TryCopyToDestination(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
-; Emitting BLENDED_CODE for X64 with AVX512 - Unix
-; FullOpts code
-; optimized code
-; rsp based frame
-; partially interruptible
-; No PGO data
-; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
-; Final local variable assignments
-;
-;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
-;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T00] ( 4, 3 ) byref -> rbx single-def
-;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04,T05] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V06 tmp3 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V07 tmp4 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V09 tmp6 [V09,T03] ( 2, 1.50) byref -> rsi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V10 tmp7 [V10,T01] ( 4, 3 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V11 tmp8 [V11,T04] ( 2, 1.50) byref -> rdi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp9 [V12,T02] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP
-;* V13 tmp10 [V13 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
-;
-; Lcl frame size = 8
-
-G_M52817_IG01:
- push r15
- push rbx
- push rax
- mov r15d, esi
- mov rsi, rdi
- mov rdi, rdx
- mov rbx, r8
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M52817_IG02:
- cmp r15d, ecx
- jle SHORT G_M52817_IG05
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M52817_IG03:
- xor eax, eax
- mov dword ptr [rbx], eax
- ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M52817_IG04:
- add rsp, 8
- pop rbx
- pop r15
- ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M52817_IG05:
- mov edx, r15d
- mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
- call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov dword ptr [rbx], r15d
- mov eax, 1
- ;; size=23 bbWeight=0.50 PerfScore 2.38
-G_M52817_IG06:
- add rsp, 8
- pop rbx
- pop r15
- ret
- ;; size=8 bbWeight=0.50 PerfScore 1.12
-
-; Total bytes of code 64, prolog size 4, PerfScore 10.50, instruction count 24, allocated bytes for code 64 (MethodHash=18a931ae) for method Internal.Cryptography.Helpers:TryCopyToDestination(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],byref):ubyte (FullOpts)
-; ============================================================ -13 (-4.63 % of base) - System.Globalization.Normalization:TryNormalize(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,int):ubyte ; Assembly listing for method System.Globalization.Normalization:TryNormalize(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,int):ubyte (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ushort]>
; V02 arg2 [V02,T02] ( 5, 3.50) byref -> r14 single-def
; V03 arg3 [V03,T00] ( 5, 4.50) int -> rbx single-def
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V08 tmp4 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+; V08 tmp4 [V08,T06] ( 3, 1.50) ubyte -> rax "Inline stloc first use temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V10 tmp6 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V12 tmp8 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V13 tmp9 [V13,T03] ( 4, 3 ) byref -> r13 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V14 tmp10 [V14,T01] ( 6, 4 ) int -> r15 single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V15 tmp11 [V15,T04] ( 3, 2 ) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V16 tmp12 [V16,T05] ( 3, 2 ) int -> [rbp-0x2C] single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
; V23 tmp19 [V23,T08] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
; V24 tmp20 [V24,T09] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 8
G_M3440_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov dword ptr [rbp-0x2C], ecx
mov r13, rdi
mov r15d, esi
mov r12, rdx
mov r14, r8
mov ebx, r9d
;; size=34 bbWeight=1 PerfScore 9.75
G_M3440_IG02:
cmp ebx, 6
- ja G_M3440_IG09
+ ja G_M3440_IG08
mov edi, 25
bt edi, ebx
- jb G_M3440_IG09
+ jb G_M3440_IG08
mov rdi, r13
mov esi, r15d
mov rcx, 0xD1FFAB1E ; code for System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte
call [rcx]System.Text.Ascii:IsValidCore[ushort](byref,int):ubyte
test eax, eax
jne SHORT G_M3440_IG05
;; size=45 bbWeight=1 PerfScore 8.00
G_M3440_IG03:
mov rdi, r13
mov esi, r15d
mov rdx, r12
mov ecx, dword ptr [rbp-0x2C]
mov r8, r14
mov r9d, ebx
mov rax, 0xD1FFAB1E ; code for System.Globalization.Normalization:IcuTryNormalize(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,int):ubyte
call [rax]System.Globalization.Normalization:IcuTryNormalize(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,int):ubyte
nop
;; size=31 bbWeight=0.50 PerfScore 2.88
G_M3440_IG04:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
G_M3440_IG05:
- cmp r15d, dword ptr [rbp-0x2C]
- jle SHORT G_M3440_IG07
- xor eax, eax
- mov dword ptr [r14], eax
- ;; size=11 bbWeight=0.50 PerfScore 2.12
+ xor edx, edx
+ mov dword ptr [r14], edx
+ ;; size=5 bbWeight=0.50 PerfScore 0.62
G_M3440_IG06:
- add rsp, 8
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M3440_IG07:
+ xor eax, eax
+ cmp r15d, dword ptr [rbp-0x2C]
+ jg SHORT G_M3440_IG07
+ mov dword ptr [r14], r15d
mov edx, r15d
add rdx, rdx
mov rdi, r12
mov rsi, r13
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov dword ptr [r14], r15d
mov eax, 1
- ;; size=32 bbWeight=0.50 PerfScore 2.75
-G_M3440_IG08:
+ ;; size=40 bbWeight=0.50 PerfScore 4.38
+G_M3440_IG07:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M3440_IG09:
+G_M3440_IG08:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_InvalidNormalizationForm():System.String
call [rax]System.SR:get_Argument_InvalidNormalizationForm():System.String
mov r15, rax
mov edi, 0x16AE0
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdx, rax
mov rsi, r15
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this
call [rax]System.ArgumentException:.ctor(System.String,System.String):this
mov rdi, rbx
call CORINFO_HELP_THROW
int3
;; size=83 bbWeight=0 PerfScore 0.00
-; Total bytes of code 281, prolog size 16, PerfScore 31.88, instruction count 87, allocated bytes for code 281 (MethodHash=d7aaf28f) for method System.Globalization.Normalization:TryNormalize(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,int):ubyte (FullOpts)
+; Total bytes of code 268, prolog size 16, PerfScore 29.88, instruction count 80, allocated bytes for code 268 (MethodHash=d7aaf28f) for method System.Globalization.Normalization:TryNormalize(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,int):ubyte (FullOpts)
; ============================================================ -10 (-3.95 % of base) - System.Security.Cryptography.DSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this ; Assembly listing for method System.Security.Cryptography.DSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.DSA>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Security.Cryptography.HashAlgorithmName>
; V04 arg4 [V04,T08] ( 4, 2 ) byref -> [rbp+0x10] single-def
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V07 tmp2 [V07,T10] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-;* V08 tmp3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
-;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-; V11 tmp6 [V11,T03] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V12 tmp7 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V13 tmp8 [V13,T11] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
-;* V14 tmp9 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V15 tmp10 [V15,T12] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V16 tmp11 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V19 tmp14 [V19 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V20 tmp15 [V20,T04] ( 3, 2 ) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp16 [V21,T06] ( 3, 2 ) int -> [rbp-0x2C] single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V22 tmp17 [V22,T05] ( 3, 2 ) byref -> r12 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp18 [V23,T02] ( 4, 2.50) int -> r14 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V24 tmp19 [V24,T01] ( 4, 2.50) ref -> r15 single-def "field V03._name (fldOffset=0x0)" P-INDEP
-;* V25 tmp20 [V25 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-;* V27 tmp22 [V27 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._name (fldOffset=0x0)" P-INDEP
-;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp24 [V29 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V30 tmp25 [V30,T09] ( 3, 1.50) byref -> rsi "field V12._reference (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T07] ( 5, 2.50) int -> r15 "field V12._length (fldOffset=0x8)" P-INDEP
-;* V32 tmp27 [V32 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-;* V33 tmp28 [V33 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-;* V34 tmp29 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp30 [V35 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
+;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
+;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V07 tmp1 [V07,T10] ( 3, 1.50) ubyte -> rax "Inline return value spill temp"
+;* V08 tmp2 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Security.Cryptography.HashAlgorithmName>
+;* V09 tmp3 [V09 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V10 tmp4 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+; V11 tmp5 [V11,T03] ( 4, 4 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V12 tmp6 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V13 tmp7 [V13,T11] ( 3, 1.50) ubyte -> rax "Inline stloc first use temp"
+;* V14 tmp8 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V15 tmp9 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V17 tmp11 [V17 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V18 tmp12 [V18,T04] ( 3, 2 ) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V19 tmp13 [V19,T06] ( 3, 2 ) int -> [rbp-0x2C] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V20 tmp14 [V20,T05] ( 3, 2 ) byref -> r12 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp15 [V21,T02] ( 4, 2.50) int -> r14 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V22 tmp16 [V22,T01] ( 4, 2.50) ref -> r15 single-def "field V03._name (fldOffset=0x0)" P-INDEP
+;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V24 tmp18 [V24 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+;* V25 tmp19 [V25 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._name (fldOffset=0x0)" P-INDEP
+;* V26 tmp20 [V26 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
+; V28 tmp22 [V28,T09] ( 3, 1.50) byref -> rsi "field V12._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp23 [V29,T07] ( 5, 2.50) int -> rdx "field V12._length (fldOffset=0x8)" P-INDEP
+;* V30 tmp24 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;* V31 tmp25 [V31 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
G_M43209_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
push rax
lea rbp, [rsp+0x30]
mov dword ptr [rbp-0x2C], edx
mov rbx, rdi
mov r13, rsi
mov r12, rcx
mov r14d, r8d
mov r15, r9
;; size=34 bbWeight=1 PerfScore 9.75
G_M43209_IG02:
mov rsi, rbx
mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.IRuntimeAlgorithm
mov rdx, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
call [rdx]CORINFO_HELP_ISINSTANCEOFINTERFACE
test rax, rax
- jne SHORT G_M43209_IG09
+ jne SHORT G_M43209_IG08
;; size=30 bbWeight=1 PerfScore 5.00
G_M43209_IG03:
mov rsi, r13
mov edx, dword ptr [rbp-0x2C]
mov rdi, rbx
mov rcx, r15
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.DSA:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this
call [rax]System.Security.Cryptography.DSA:HashSpanToArray(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):ubyte[]:this
test rax, rax
je SHORT G_M43209_IG04
lea rsi, bword ptr [rax+0x10]
- mov r15d, dword ptr [rax+0x08]
+ mov edx, dword ptr [rax+0x08]
jmp SHORT G_M43209_IG05
- ;; size=39 bbWeight=0.50 PerfScore 5.38
+ ;; size=38 bbWeight=0.50 PerfScore 5.38
G_M43209_IG04:
xor rsi, rsi
- xor r15d, r15d
- ;; size=5 bbWeight=0.50 PerfScore 0.25
-G_M43209_IG05:
- cmp r15d, r14d
- jle SHORT G_M43209_IG07
xor edx, edx
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M43209_IG05:
+ xor edi, edi
mov rbx, bword ptr [rbp+0x10]
- mov dword ptr [rbx], edx
- ;; size=13 bbWeight=0.50 PerfScore 1.75
+ mov dword ptr [rbx], edi
+ ;; size=8 bbWeight=0.50 PerfScore 1.12
G_M43209_IG06:
xor eax, eax
- jmp SHORT G_M43209_IG08
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M43209_IG07:
- mov edx, r15d
+ cmp edx, r14d
+ jg SHORT G_M43209_IG07
+ mov dword ptr [rbx], edx
+ mov edx, edx
mov rdi, r12
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov rbx, bword ptr [rbp+0x10]
- mov dword ptr [rbx], r15d
mov eax, 1
- ;; size=30 bbWeight=0.50 PerfScore 3.00
-G_M43209_IG08:
+ ;; size=31 bbWeight=0.50 PerfScore 3.25
+G_M43209_IG07:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M43209_IG09:
+G_M43209_IG08:
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicOperations:CheckHashAndGetLength(System.Security.Cryptography.HashAlgorithmName):int
call [rax]System.Security.Cryptography.CryptographicOperations:CheckHashAndGetLength(System.Security.Cryptography.HashAlgorithmName):int
cmp eax, r14d
- jg SHORT G_M43209_IG10
+ jg SHORT G_M43209_IG09
mov rcx, r12
mov r8d, r14d
mov rsi, r13
mov edx, dword ptr [rbp-0x2C]
mov rdi, r15
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.HashProviderDispenser+OneShotHashProvider:HashData(System.String,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int
call [rax]System.Security.Cryptography.HashProviderDispenser+OneShotHashProvider:HashData(System.String,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int
mov rbx, bword ptr [rbp+0x10]
mov dword ptr [rbx], eax
mov eax, 1
- jmp SHORT G_M43209_IG11
+ jmp SHORT G_M43209_IG10
;; size=60 bbWeight=0.50 PerfScore 7.12
-G_M43209_IG10:
+G_M43209_IG09:
xor eax, eax
mov rbx, bword ptr [rbp+0x10]
mov dword ptr [rbx], eax
;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M43209_IG11:
+G_M43209_IG10:
add rsp, 8
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 253, prolog size 16, PerfScore 38.75, instruction count 82, allocated bytes for code 253 (MethodHash=79ec5736) for method System.Security.Cryptography.DSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts)
+; Total bytes of code 243, prolog size 16, PerfScore 37.25, instruction count 80, allocated bytes for code 243 (MethodHash=79ec5736) for method System.Security.Cryptography.DSA:TryHashData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,byref):ubyte:this (FullOpts)
; ============================================================ -8 (-3.54 % of base) - System.Security.Cryptography.DSA:TryCreateSignatureCore(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref):ubyte:this ; Assembly listing for method System.Security.Cryptography.DSA:TryCreateSignatureCore(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.DSA>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
; V03 arg3 [V03,T01] ( 4, 3.50) int -> r15 single-def
-; V04 arg4 [V04,T12] ( 2, 1 ) byref -> [rbp+0x10] single-def
+; V04 arg4 [V04,T12] ( 2, 1.50) byref -> [rbp+0x10] single-def
; V05 loc0 [V05,T03] ( 6, 4 ) ref -> rax class-hnd <ubyte[]>
-;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1 [V07 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V08 tmp2 [V08,T09] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
-; V09 tmp3 [V09,T08] ( 3, 3 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewArr temp" <ubyte[]>
-;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V11 tmp5 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V12 tmp6 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V14 tmp8 [V14,T10] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
-;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V16 tmp10 [V16,T13] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V17 tmp11 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V18 tmp12 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V19 tmp13 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V20 tmp14 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp15 [V21,T05] ( 2, 1.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp16 [V22,T02] ( 4, 3 ) int -> r14 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V23 tmp17 [V23,T06] ( 2, 1.50) byref -> [rbp-0x38] single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T04] ( 2, 2 ) int -> r13 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-;* V25 tmp19 [V25 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V26 tmp20 [V26 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
-; V27 tmp21 [V27,T11] ( 3, 1.50) byref -> rsi "field V13._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp22 [V28,T07] ( 5, 3 ) int -> rbx "field V13._length (fldOffset=0x8)" P-INDEP
-;* V29 tmp23 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V30 tmp24 [V30 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-;* V31 tmp25 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
+;* V06 loc1 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
+;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V08 tmp1 [V08,T10] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
+; V09 tmp2 [V09,T08] ( 3, 3 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewArr temp" <ubyte[]>
+;* V10 tmp3 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V11 tmp4 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V12 tmp5 [V12 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V13 tmp6 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V14 tmp7 [V14,T09] ( 3, 2.50) ubyte -> rax "Inline stloc first use temp"
+;* V15 tmp8 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V16 tmp9 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V17 tmp10 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V18 tmp11 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V19 tmp12 [V19,T05] ( 2, 1.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp13 [V20,T02] ( 4, 3 ) int -> r14 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V21 tmp14 [V21,T06] ( 2, 1.50) byref -> [rbp-0x38] single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp15 [V22,T04] ( 2, 2 ) int -> r13 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+;* V23 tmp16 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V24 tmp17 [V24 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
+; V25 tmp18 [V25,T11] ( 3, 1.50) byref -> rsi "field V13._reference (fldOffset=0x0)" P-INDEP
+; V26 tmp19 [V26,T07] ( 5, 3 ) int -> rdx "field V13._length (fldOffset=0x8)" P-INDEP
+;* V27 tmp20 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V28 tmp21 [V28 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 24
G_M34802_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
mov bword ptr [rbp-0x38], rcx
mov rbx, rdi
mov r12, rsi
mov r14d, edx
mov r13d, r8d
mov r15d, r9d
;; size=38 bbWeight=1 PerfScore 9.00
G_M34802_IG02:
test r14d, r14d
je SHORT G_M34802_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M34802_IG03:
mov esi, r14d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov rsi, rax
mov gword ptr [rbp-0x30], rsi
mov edx, r14d
lea rdi, bword ptr [rsi+0x10]
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov r14, gword ptr [rbp-0x30]
mov rsi, r14
jmp SHORT G_M34802_IG05
;; size=56 bbWeight=0.50 PerfScore 5.12
G_M34802_IG04:
mov rsi, 0xD1FFAB1E ; 'System.Byte[]'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M34802_IG05:
mov rdi, rbx
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x58]
- call [rcx+0x30]System.Security.Cryptography.DSA:CreateSignature(ubyte[]):ubyte[]:this
+ mov rdx, qword ptr [rbx]
+ mov rdx, qword ptr [rdx+0x58]
+ call [rdx+0x30]System.Security.Cryptography.DSA:CreateSignature(ubyte[]):ubyte[]:this
test r15d, r15d
je SHORT G_M34802_IG07
;; size=18 bbWeight=1 PerfScore 8.50
G_M34802_IG06:
mov rdi, rax
mov esi, r15d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.AsymmetricAlgorithmHelpers:ConvertFromIeeeP1363Signature(ubyte[],int):ubyte[]
call [rax]System.Security.Cryptography.AsymmetricAlgorithmHelpers:ConvertFromIeeeP1363Signature(ubyte[],int):ubyte[]
;; size=18 bbWeight=0.50 PerfScore 1.88
G_M34802_IG07:
test rax, rax
je SHORT G_M34802_IG09
;; size=5 bbWeight=1 PerfScore 1.25
G_M34802_IG08:
lea rsi, bword ptr [rax+0x10]
- mov ebx, dword ptr [rax+0x08]
+ mov edx, dword ptr [rax+0x08]
jmp SHORT G_M34802_IG10
;; size=9 bbWeight=0.50 PerfScore 2.25
G_M34802_IG09:
xor rsi, rsi
- xor ebx, ebx
+ xor edx, edx
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M34802_IG10:
- cmp ebx, r13d
- jle SHORT G_M34802_IG13
- ;; size=5 bbWeight=1 PerfScore 1.25
+ xor edi, edi
+ mov rbx, bword ptr [rbp+0x10]
+ mov dword ptr [rbx], edi
+ ;; size=8 bbWeight=1 PerfScore 2.25
G_M34802_IG11:
- xor edx, edx
- mov r15, bword ptr [rbp+0x10]
- mov dword ptr [r15], edx
- ;; size=9 bbWeight=0.50 PerfScore 1.12
-G_M34802_IG12:
xor eax, eax
- jmp SHORT G_M34802_IG14
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M34802_IG13:
- mov edx, ebx
+ cmp edx, r13d
+ jg SHORT G_M34802_IG13
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M34802_IG12:
+ mov dword ptr [rbx], edx
+ mov edx, edx
mov rdi, bword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov r15, bword ptr [rbp+0x10]
- mov dword ptr [r15], ebx
mov eax, 1
- ;; size=30 bbWeight=0.50 PerfScore 3.38
-G_M34802_IG14:
+ ;; size=25 bbWeight=0.50 PerfScore 2.88
+G_M34802_IG13:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 226, prolog size 19, PerfScore 40.75, instruction count 69, allocated bytes for code 226 (MethodHash=a27a780d) for method System.Security.Cryptography.DSA:TryCreateSignatureCore(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref):ubyte:this (FullOpts)
+; Total bytes of code 218, prolog size 19, PerfScore 40.50, instruction count 67, allocated bytes for code 218 (MethodHash=a27a780d) for method System.Security.Cryptography.DSA:TryCreateSignatureCore(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref):ubyte:this (FullOpts)
; ============================================================ -8 (-3.62 % of base) - System.Security.Cryptography.ECDsa:TrySignHashCore(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref):ubyte:this ; Assembly listing for method System.Security.Cryptography.ECDsa:TrySignHashCore(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref):ubyte:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 2 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 2 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Security.Cryptography.ECDsa>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
; V03 arg3 [V03,T03] ( 3, 3 ) int -> r14 single-def
-; V04 arg4 [V04,T13] ( 2, 1 ) byref -> [rbp+0x10] single-def
-;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V07 tmp2 [V07,T10] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
-; V08 tmp3 [V08,T09] ( 3, 3 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewArr temp" <ubyte[]>
-;* V09 tmp4 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V10 tmp5 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V11 tmp6 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V12 tmp7 [V12,T01] ( 4, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V14 tmp9 [V14,T11] ( 3, 2 ) ubyte -> rax "Inline return value spill temp"
-;* V15 tmp10 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V16 tmp11 [V16,T14] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-;* V17 tmp12 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
-;* V18 tmp13 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V19 tmp14 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V20 tmp15 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp16 [V21,T06] ( 2, 1.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V22 tmp17 [V22,T02] ( 4, 3 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V23 tmp18 [V23,T07] ( 2, 1.50) byref -> [rbp-0x38] single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp19 [V24,T05] ( 2, 2 ) int -> r13 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-;* V25 tmp20 [V25 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V26 tmp21 [V26 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V27 tmp22 [V27,T12] ( 3, 1.50) byref -> rsi "field V13._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp23 [V28,T08] ( 5, 3 ) int -> rbx "field V13._length (fldOffset=0x8)" P-INDEP
-;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V30 tmp25 [V30 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-;* V31 tmp26 [V31 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V32 tmp27 [V32 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V33 tmp28 [V33,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
+; V04 arg4 [V04,T13] ( 2, 1.50) byref -> [rbp+0x10] single-def
+;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[ubyte]>
+;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V07 tmp1 [V07,T11] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" <ubyte[]>
+; V08 tmp2 [V08,T09] ( 3, 3 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "NewArr temp" <ubyte[]>
+;* V09 tmp3 [V09 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V10 tmp4 [V10 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V11 tmp5 [V11 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V12 tmp6 [V12,T01] ( 4, 6 ) ref -> rax class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V13 tmp7 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V14 tmp8 [V14,T10] ( 3, 2.50) ubyte -> rax "Inline stloc first use temp"
+;* V15 tmp9 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
+;* V16 tmp10 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V17 tmp11 [V17 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V18 tmp12 [V18 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+; V19 tmp13 [V19,T06] ( 2, 1.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp14 [V20,T02] ( 4, 3 ) int -> r15 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V21 tmp15 [V21,T07] ( 2, 1.50) byref -> [rbp-0x38] single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V22 tmp16 [V22,T05] ( 2, 2 ) int -> r13 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+;* V23 tmp17 [V23 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V24 tmp18 [V24 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+; V25 tmp19 [V25,T12] ( 3, 1.50) byref -> rsi "field V13._reference (fldOffset=0x0)" P-INDEP
+; V26 tmp20 [V26,T08] ( 5, 3 ) int -> rdx "field V13._length (fldOffset=0x8)" P-INDEP
+;* V27 tmp21 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V28 tmp22 [V28 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
+; V29 tmp23 [V29,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
;
; Lcl frame size = 24
G_M30741_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
mov bword ptr [rbp-0x38], rcx
mov rbx, rdi
mov r12, rsi
mov r15d, edx
mov r13d, r8d
mov r14d, r9d
;; size=38 bbWeight=1 PerfScore 9.00
G_M30741_IG02:
test r15d, r15d
je SHORT G_M30741_IG04
;; size=5 bbWeight=1 PerfScore 1.25
G_M30741_IG03:
mov esi, r15d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov rsi, rax
mov gword ptr [rbp-0x30], rsi
mov edx, r15d
lea rdi, bword ptr [rsi+0x10]
mov rsi, r12
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
mov r15, gword ptr [rbp-0x30]
mov rsi, r15
jmp SHORT G_M30741_IG05
;; size=56 bbWeight=0.50 PerfScore 5.12
G_M30741_IG04:
mov rsi, 0xD1FFAB1E ; 'System.Byte[]'
;; size=10 bbWeight=0.50 PerfScore 0.12
G_M30741_IG05:
mov rdi, rbx
- mov rcx, qword ptr [rbx]
- mov rcx, qword ptr [rcx+0x68]
- call [rcx+0x38]System.Security.Cryptography.ECDsa:SignHash(ubyte[]):ubyte[]:this
+ mov rdx, qword ptr [rbx]
+ mov rdx, qword ptr [rdx+0x68]
+ call [rdx+0x38]System.Security.Cryptography.ECDsa:SignHash(ubyte[]):ubyte[]:this
mov rdi, rax
mov esi, r14d
mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.AsymmetricAlgorithmHelpers:ConvertFromIeeeP1363Signature(ubyte[],int):ubyte[]
call [rax]System.Security.Cryptography.AsymmetricAlgorithmHelpers:ConvertFromIeeeP1363Signature(ubyte[],int):ubyte[]
test rax, rax
je SHORT G_M30741_IG07
;; size=36 bbWeight=1 PerfScore 12.25
G_M30741_IG06:
lea rsi, bword ptr [rax+0x10]
- mov ebx, dword ptr [rax+0x08]
+ mov edx, dword ptr [rax+0x08]
jmp SHORT G_M30741_IG08
;; size=9 bbWeight=0.50 PerfScore 2.25
G_M30741_IG07:
xor rsi, rsi
- xor ebx, ebx
+ xor edx, edx
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M30741_IG08:
- cmp ebx, r13d
- jle SHORT G_M30741_IG11
- ;; size=5 bbWeight=1 PerfScore 1.25
+ xor edi, edi
+ mov rbx, bword ptr [rbp+0x10]
+ mov dword ptr [rbx], edi
+ ;; size=8 bbWeight=1 PerfScore 2.25
G_M30741_IG09:
- xor edx, edx
- mov r15, bword ptr [rbp+0x10]
- mov dword ptr [r15], edx
- ;; size=9 bbWeight=0.50 PerfScore 1.12
-G_M30741_IG10:
xor eax, eax
- jmp SHORT G_M30741_IG12
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M30741_IG11:
- mov edx, ebx
+ cmp edx, r13d
+ jg SHORT G_M30741_IG11
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M30741_IG10:
+ mov dword ptr [rbx], edx
+ mov edx, edx
mov rdi, bword ptr [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
call [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
- mov r15, bword ptr [rbp+0x10]
- mov dword ptr [r15], ebx
mov eax, 1
- ;; size=30 bbWeight=0.50 PerfScore 3.38
-G_M30741_IG12:
+ ;; size=25 bbWeight=0.50 PerfScore 2.88
+G_M30741_IG11:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 221, prolog size 19, PerfScore 41.38, instruction count 67, allocated bytes for code 221 (MethodHash=ad8087ea) for method System.Security.Cryptography.ECDsa:TrySignHashCore(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref):ubyte:this (FullOpts)
+; Total bytes of code 213, prolog size 19, PerfScore 41.12, instruction count 65, allocated bytes for code 213 (MethodHash=ad8087ea) for method System.Security.Cryptography.ECDsa:TrySignHashCore(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref):ubyte:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/08ad6bfea12f1c9a0a80ab5ec2b4dcd2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes 47 seconds.
https://github.com/MihaZupan/runtime/tree/trycopyto
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: