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] [hez2010] JIT: Simple importer single-block forward substitution #774
Comments
Top method improvements-250 (-65.27 % of base) - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] ; Assembly listing for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 4 ) long -> rbx single-def
-;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType>
+; V00 arg0 [V00,T00] ( 3, 2 ) long -> rdi single-def
+;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 5, 3.50) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Nullable<T> tmp" <System.Nullable`1[int]>
-; V04 tmp2 [V04,T01] ( 5, 5 ) ref -> rax single-def "op1 spilled for Nullable unbox"
-; V05 tmp3 [V05,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V06 tmp4 [V06,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V07 tmp5 [V07 ] ( 4, 2.75) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V03.hasValue (fldOffset=0x0)" P-DEP
-; V08 tmp6 [V08 ] ( 4, 2.75) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V03.value (fldOffset=0x4)" P-DEP
-; V09 tmp7 [V09,T05] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V10 tmp8 [V10,T06] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V11 tmp9 [V11,T07] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V12 tmp10 [V12,T08] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V13 cse0 [V13,T02] ( 4, 4 ) ref -> r15 "CSE #01: aggressive"
+; V03 tmp1 [V03,T01] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V04 tmp2 [V04,T02] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V05 tmp3 [V05,T03] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M39254_IG01:
push rbp
push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov rbx, rdi
- ;; size=16 bbWeight=1 PerfScore 4.00
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=0 PerfScore 0.00
G_M39254_IG02:
- test rbx, rbx
- je G_M39254_IG10
- mov r15, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this
- call [rax]System.RuntimeType:get_IsGenericType():ubyte:this
- test eax, eax
- jne G_M39254_IG09
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetBaseType():System.RuntimeType:this
- call [rax]System.RuntimeType:GetBaseType():System.RuntimeType:this
- mov rdi, 0xD1FFAB1E ; 'System.MulticastDelegate'
- cmp rax, rdi
- jne SHORT G_M39254_IG08
- mov rdi, rbx
- mov rsi, r15
- mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointerInternal(long,System.RuntimeType):System.Delegate
- call [rax]System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointerInternal(long,System.RuntimeType):System.Delegate
- test rax, rax
- jne SHORT G_M39254_IG04
- ;; size=95 bbWeight=1 PerfScore 16.25
-G_M39254_IG03:
- xor eax, eax
- mov qword ptr [rbp-0x18], rax
- jmp SHORT G_M39254_IG05
- ;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M39254_IG04:
- mov rdi, 0xD1FFAB1E ; System.Int32
- cmp qword ptr [rax], rdi
- jne SHORT G_M39254_IG07
- mov byte ptr [rbp-0x18], 1
- mov eax, dword ptr [rax+0x08]
- mov dword ptr [rbp-0x14], eax
- ;; size=25 bbWeight=0.25 PerfScore 2.06
-G_M39254_IG05:
- mov rax, qword ptr [rbp-0x18]
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M39254_IG06:
- add rsp, 16
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=9 bbWeight=1 PerfScore 2.75
-G_M39254_IG07:
- lea rdi, [rbp-0x18]
- mov rdx, rax
- mov rsi, 0xD1FFAB1E ; System.Nullable`1[int]
- call CORINFO_HELP_UNBOX_NULLABLE
- jmp SHORT G_M39254_IG05
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M39254_IG08:
- mov rdi, 0xD1FFAB1E ; System.ArgumentException
- call CORINFO_HELP_NEWSFAST
- mov rbx, rax
- mov rax, 0xD1FFAB1E ; code for System.SR:get_Arg_MustBeDelegate():System.String
- call [rax]System.SR:get_Arg_MustBeDelegate():System.String
- mov r15, rax
- mov edi, 0x194F4
- 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
-G_M39254_IG09:
+ test rdi, rdi
+ je SHORT G_M39254_IG03
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_NeedNonGenericType():System.String
call [rax]System.SR:get_Argument_NeedNonGenericType():System.String
mov r15, rax
mov edi, 0x194F4
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
-G_M39254_IG10:
+ ;; size=88 bbWeight=0 PerfScore 0.00
+G_M39254_IG03:
mov edi, 0xD7D
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 383, prolog size 13, PerfScore 26.88, instruction count 87, allocated bytes for code 383 (MethodHash=fcab66a9) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
+; Total bytes of code 133, prolog size 9, PerfScore 0.00, instruction count 30, allocated bytes for code 133 (MethodHash=fcab66a9) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
; ============================================================ -247 (-65.00 % of base) - System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] ; Assembly listing for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T01] ( 4, 4 ) byref -> rbx single-def
-; V01 arg0 [V01,T02] ( 4, 4 ) long -> r15 single-def
-;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.RuntimeType>
+;* V00 RetBuf [V00 ] ( 0, 0 ) byref -> zero-ref single-def
+; V01 arg0 [V01,T00] ( 3, 2 ) long -> rsi single-def
+;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 4, 6.50) ref -> r15 single-def "inline UNBOX clone1"
-; V05 tmp2 [V05,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V06 tmp3 [V06,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V07 tmp4 [V07,T06] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V08 tmp5 [V08,T07] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V09 tmp6 [V09,T08] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V10 tmp7 [V10,T09] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V11 cse0 [V11,T03] ( 4, 4 ) ref -> r14 "CSE #01: aggressive"
+; V04 tmp1 [V04,T01] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V05 tmp2 [V05,T02] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V06 tmp3 [V06,T03] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M46454_IG01:
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
- mov rbx, rdi
- mov r15, rsi
- ;; size=18 bbWeight=1 PerfScore 6.00
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=0 PerfScore 0.00
G_M46454_IG02:
- test r15, r15
- je G_M46454_IG08
- mov r14, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
- mov rdi, r14
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this
- call [rax]System.RuntimeType:get_IsGenericType():ubyte:this
- test eax, eax
- jne G_M46454_IG07
- mov rdi, r14
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:GetBaseType():System.RuntimeType:this
- call [rax]System.RuntimeType:GetBaseType():System.RuntimeType:this
- mov rdi, 0xD1FFAB1E ; 'System.MulticastDelegate'
- cmp rax, rdi
- jne SHORT G_M46454_IG06
- mov rdi, r15
- mov rsi, r14
- mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointerInternal(long,System.RuntimeType):System.Delegate
- call [rax]System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointerInternal(long,System.RuntimeType):System.Delegate
- mov r15, rax
- mov rsi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
- cmp qword ptr [r15], rsi
- je SHORT G_M46454_IG04
- ;; size=108 bbWeight=1 PerfScore 19.50
-G_M46454_IG03:
- mov rsi, r15
- mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
- call [rax]CORINFO_HELP_UNBOX
- ;; size=25 bbWeight=0.25 PerfScore 0.94
-G_M46454_IG04:
- vmovups ymm0, ymmword ptr [r15+0x08]
- vmovups ymmword ptr [rbx], ymm0
- mov rax, rbx
- ;; size=13 bbWeight=1 PerfScore 7.25
-G_M46454_IG05:
- vzeroupper
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=14 bbWeight=1 PerfScore 4.25
-G_M46454_IG06:
- mov rdi, 0xD1FFAB1E ; System.ArgumentException
- call CORINFO_HELP_NEWSFAST
- mov rbx, rax
- mov rax, 0xD1FFAB1E ; code for System.SR:get_Arg_MustBeDelegate():System.String
- call [rax]System.SR:get_Arg_MustBeDelegate():System.String
- mov r15, rax
- mov edi, 0x194F4
- 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
-G_M46454_IG07:
+ test rsi, rsi
+ je SHORT G_M46454_IG03
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_NeedNonGenericType():System.String
call [rax]System.SR:get_Argument_NeedNonGenericType():System.String
mov r15, rax
mov edi, 0x194F4
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
-G_M46454_IG08:
+ ;; size=88 bbWeight=0 PerfScore 0.00
+G_M46454_IG03:
mov edi, 0xD7D
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String)
call [rax]System.ArgumentNullException:Throw(System.String)
int3
;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 380, prolog size 12, PerfScore 37.94, instruction count 85, allocated bytes for code 380 (MethodHash=ca504a89) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
+; Total bytes of code 133, prolog size 9, PerfScore 0.00, instruction count 30, allocated bytes for code 133 (MethodHash=ca504a89) for method System.Runtime.InteropServices.Marshal:GetDelegateForFunctionPointer[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
; ============================================================ -239 (-72.21 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref single-def
-; V03 tmp3 [V03,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V04 tmp4 [V04 ] ( 4, 8 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-; V05 tmp5 [V05 ] ( 4, 8 ) struct (16) [rbp-0x40] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-; V06 tmp6 [V06,T01] ( 3, 5 ) ref -> rdi class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V07 tmp7 [V07 ] ( 0, 0 ) byref -> zero-ref
-;* V08 tmp8 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V09 tmp9 [V09 ] ( 0, 0 ) byref -> zero-ref
-; V10 tmp10 [V10,T06] ( 3, 2 ) long -> rdi
-;* V11 tmp11 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V12 tmp12 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
-; V13 tmp13 [V13,T04] ( 2, 4 ) int -> rax "Single return block return value"
-; V14 FramesRoot [V14,T00] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot"
-; V15 PInvokeFrame [V15 ] ( 8, 8 ) struct (64) [rbp-0x80] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V16 tmp16 [V16,T02] ( 3, 5 ) long -> [rbp-0x40] do-not-enreg[] "field V05._ptr (fldOffset=0x0)" P-DEP
-; V17 tmp17 [V17,T03] ( 3, 5 ) long -> [rbp-0x38] do-not-enreg[] "field V05._handle (fldOffset=0x8)" P-DEP
-;* V18 tmp18 [V18 ] ( 0, 0 ) long -> zero-ref "field V12._ptr (fldOffset=0x0)" P-INDEP
-;* V19 tmp19 [V19 ] ( 0, 0 ) long -> zero-ref "field V12._handle (fldOffset=0x8)" P-INDEP
-; V20 tmp20 [V20,T08] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V21 tmp21 [V21,T09] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V22 cse0 [V22,T05] ( 3, 3 ) ref -> r15 "CSE #01: aggressive"
+;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.RuntimeType>
+;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref
+; V03 tmp3 [V03,T00] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V04 tmp4 [V04,T01] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V05 tmp5 [V05,T02] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 88
+; Lcl frame size = 0
G_M374_IG01:
push rbp
push r15
- push r14
- push r13
- push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
- xor eax, eax
- mov qword ptr [rbp-0x30], rax
- ;; size=31 bbWeight=1 PerfScore 9.00
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=0 PerfScore 0.00
G_M374_IG02:
- lea rdi, [rbp-0x78]
- call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov rbx, rax
- mov rdi, rsp
- mov qword ptr [rbp-0x60], rdi
- mov rdi, rbp
- mov qword ptr [rbp-0x50], rdi
- mov r15, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this
- call [rax]System.RuntimeType:get_IsGenericType():ubyte:this
- test eax, eax
- jne G_M374_IG11
- mov gword ptr [rbp-0x30], r15
- vxorps xmm0, xmm0, xmm0
- vmovups xmmword ptr [rbp-0x40], xmm0
- lea rdi, [rbp-0x30]
- mov qword ptr [rbp-0x40], rdi
- mov rdi, gword ptr [rbp-0x30]
- test rdi, rdi
- je SHORT G_M374_IG04
- ;; size=89 bbWeight=1 PerfScore 15.33
-G_M374_IG03:
- mov rdi, qword ptr [rdi+0x18]
- jmp SHORT G_M374_IG05
- ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M374_IG04:
- xor edi, edi
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M374_IG05:
- mov qword ptr [rbp-0x38], rdi
- lea rdi, [rbp-0x30]
- mov rsi, qword ptr [rbp-0x38]
- mov edx, 1
- mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x68], rax
- lea rax, G_M374_IG08
- mov qword ptr [rbp-0x58], rax
- lea rax, [rbp-0x78]
- mov qword ptr [rbx+0x08], rax
- mov byte ptr [rbx+0x04], 0
- ;; size=54 bbWeight=1 PerfScore 8.50
-G_M374_IG06:
- mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
- ;; size=10 bbWeight=1 PerfScore 0.25
-G_M374_IG07:
- call [rax]System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
- ;; size=2 bbWeight=1 PerfScore 3.00
-G_M374_IG08:
- mov byte ptr [rbx+0x04], 1
- mov rcx, 0xD1FFAB1E ; function address
- cmp dword ptr [rcx], 0
- je SHORT G_M374_IG09
- mov rdi, 0xD1FFAB1E
- call [rdi]CORINFO_HELP_STOP_FOR_GC
- ;; size=31 bbWeight=1 PerfScore 8.50
-G_M374_IG09:
- mov rdi, qword ptr [rbp-0x70]
- mov qword ptr [rbx+0x08], rdi
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M374_IG10:
- add rsp, 88
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M374_IG11:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_NeedNonGenericType():System.String
call [rax]System.SR:get_Argument_NeedNonGenericType():System.String
mov r15, rax
mov edi, 0x154F
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 331, prolog size 31, PerfScore 52.96, instruction count 81, allocated bytes for code 331 (MethodHash=c90dfe89) for method System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int (FullOpts)
+; Total bytes of code 92, prolog size 9, PerfScore 0.00, instruction count 21, allocated bytes for code 92 (MethodHash=c90dfe89) for method System.Runtime.InteropServices.Marshal:SizeOf[System.Nullable`1[int]]():int (FullOpts)
; ============================================================ -239 (-72.21 % of base) - System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int ; Assembly listing for method System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref single-def
-; V03 tmp3 [V03,T07] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V04 tmp4 [V04 ] ( 4, 8 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
-; V05 tmp5 [V05 ] ( 4, 8 ) struct (16) [rbp-0x40] do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
-; V06 tmp6 [V06,T01] ( 3, 5 ) ref -> rdi class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V07 tmp7 [V07 ] ( 0, 0 ) byref -> zero-ref
-;* V08 tmp8 [V08 ] ( 0, 0 ) ref -> zero-ref single-def
-;* V09 tmp9 [V09 ] ( 0, 0 ) byref -> zero-ref
-; V10 tmp10 [V10,T06] ( 3, 2 ) long -> rdi
-;* V11 tmp11 [V11 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V12 tmp12 [V12 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
-; V13 tmp13 [V13,T04] ( 2, 4 ) int -> rax "Single return block return value"
-; V14 FramesRoot [V14,T00] ( 6, 6 ) long -> rbx "Pinvoke FrameListRoot"
-; V15 PInvokeFrame [V15 ] ( 8, 8 ) struct (64) [rbp-0x80] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-; V16 tmp16 [V16,T02] ( 3, 5 ) long -> [rbp-0x40] do-not-enreg[] "field V05._ptr (fldOffset=0x0)" P-DEP
-; V17 tmp17 [V17,T03] ( 3, 5 ) long -> [rbp-0x38] do-not-enreg[] "field V05._handle (fldOffset=0x8)" P-DEP
-;* V18 tmp18 [V18 ] ( 0, 0 ) long -> zero-ref "field V12._ptr (fldOffset=0x0)" P-INDEP
-;* V19 tmp19 [V19 ] ( 0, 0 ) long -> zero-ref "field V12._handle (fldOffset=0x8)" P-INDEP
-; V20 tmp20 [V20,T08] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V21 tmp21 [V21,T09] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V22 cse0 [V22,T05] ( 3, 3 ) ref -> r15 "CSE #01: aggressive"
+;* V01 tmp1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.RuntimeType>
+;* V02 tmp2 [V02 ] ( 0, 0 ) ref -> zero-ref
+; V03 tmp3 [V03,T00] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V04 tmp4 [V04,T01] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V05 tmp5 [V05,T02] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 88
+; Lcl frame size = 0
G_M52811_IG01:
push rbp
push r15
- push r14
- push r13
- push r12
push rbx
- sub rsp, 88
- vzeroupper
- lea rbp, [rsp+0x80]
- xor eax, eax
- mov qword ptr [rbp-0x30], rax
- ;; size=31 bbWeight=1 PerfScore 9.00
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=0 PerfScore 0.00
G_M52811_IG02:
- lea rdi, [rbp-0x78]
- call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov rbx, rax
- mov rdi, rsp
- mov qword ptr [rbp-0x60], rdi
- mov rdi, rbp
- mov qword ptr [rbp-0x50], rdi
- mov r15, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
- mov rdi, r15
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this
- call [rax]System.RuntimeType:get_IsGenericType():ubyte:this
- test eax, eax
- jne G_M52811_IG11
- mov gword ptr [rbp-0x30], r15
- vxorps xmm0, xmm0, xmm0
- vmovups xmmword ptr [rbp-0x40], xmm0
- lea rdi, [rbp-0x30]
- mov qword ptr [rbp-0x40], rdi
- mov rdi, gword ptr [rbp-0x30]
- test rdi, rdi
- je SHORT G_M52811_IG04
- ;; size=89 bbWeight=1 PerfScore 15.33
-G_M52811_IG03:
- mov rdi, qword ptr [rdi+0x18]
- jmp SHORT G_M52811_IG05
- ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M52811_IG04:
- xor edi, edi
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M52811_IG05:
- mov qword ptr [rbp-0x38], rdi
- lea rdi, [rbp-0x30]
- mov rsi, qword ptr [rbp-0x38]
- mov edx, 1
- mov rax, 0xD1FFAB1E ; function address
- mov qword ptr [rbp-0x68], rax
- lea rax, G_M52811_IG08
- mov qword ptr [rbp-0x58], rax
- lea rax, [rbp-0x78]
- mov qword ptr [rbx+0x08], rax
- mov byte ptr [rbx+0x04], 0
- ;; size=54 bbWeight=1 PerfScore 8.50
-G_M52811_IG06:
- mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
- ;; size=10 bbWeight=1 PerfScore 0.25
-G_M52811_IG07:
- call [rax]System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
- ;; size=2 bbWeight=1 PerfScore 3.00
-G_M52811_IG08:
- mov byte ptr [rbx+0x04], 1
- mov rcx, 0xD1FFAB1E ; function address
- cmp dword ptr [rcx], 0
- je SHORT G_M52811_IG09
- mov rdi, 0xD1FFAB1E
- call [rdi]CORINFO_HELP_STOP_FOR_GC
- ;; size=31 bbWeight=1 PerfScore 8.50
-G_M52811_IG09:
- mov rdi, qword ptr [rbp-0x70]
- mov qword ptr [rbx+0x08], rdi
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M52811_IG10:
- add rsp, 88
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M52811_IG11:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_NeedNonGenericType():System.String
call [rax]System.SR:get_Argument_NeedNonGenericType():System.String
mov r15, rax
mov edi, 0x154F
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 331, prolog size 31, PerfScore 52.96, instruction count 81, allocated bytes for code 331 (MethodHash=f86031b4) for method System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int (FullOpts)
+; Total bytes of code 92, prolog size 9, PerfScore 0.00, instruction count 21, allocated bytes for code 92 (MethodHash=f86031b4) for method System.Runtime.InteropServices.Marshal:SizeOf[System.Numerics.Vector`1[float]]():int (FullOpts)
; ============================================================ -179 (-63.25 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 4, 3.50) long -> rbx single-def
-; V01 loc0 [V01,T01] ( 6, 2 ) ref -> r15 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T00] ( 3, 3 ) long -> rdi single-def
+;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05 ] ( 5, 2.50) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Nullable<T> tmp" <System.Nullable`1[int]>
-; V06 tmp4 [V06,T02] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Nullable<T> tmp" <System.Nullable`1[int]>
-; V08 tmp6 [V08 ] ( 4, 1.75) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V05.hasValue (fldOffset=0x0)" P-DEP
-; V09 tmp7 [V09 ] ( 4, 1.75) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x4)" P-DEP
-;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V07.hasValue (fldOffset=0x0)" P-DEP
-;* V11 tmp9 [V11 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V07.value (fldOffset=0x4)" P-DEP
-; V12 tmp10 [V12,T03] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V13 tmp11 [V13,T04] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.RuntimeType>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref
+; V05 tmp3 [V05,T01] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Nullable<T> tmp" <System.Nullable`1[int]>
+;* V07 tmp5 [V07 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V06.hasValue (fldOffset=0x0)" P-DEP
+;* V08 tmp6 [V08 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V06.value (fldOffset=0x4)" P-DEP
+; V09 tmp7 [V09,T02] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V10 tmp8 [V10,T03] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M1349_IG01:
push rbp
push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- mov rbx, rdi
- ;; size=16 bbWeight=1 PerfScore 4.00
+ lea rbp, [rsp+0x10]
+ ;; size=9 bbWeight=1 PerfScore 3.50
G_M1349_IG02:
- test rbx, rbx
- je G_M1349_IG08
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M1349_IG03:
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this
- call [rax]System.RuntimeType:get_IsGenericType():ubyte:this
- test eax, eax
- jne G_M1349_IG11
- mov rdi, 0xD1FFAB1E ; 'System.Nullable`1[System.Int32]'
- mov esi, 1
- mov edx, 1
- mov rax, 0xD1FFAB1E ; code for System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
- call [rax]System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
- mov r15, rax
- mov rdi, rbx
- mov rsi, r15
- mov edx, 1
- mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
- call [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
- test r15, r15
- jne SHORT G_M1349_IG05
- ;; size=93 bbWeight=0.50 PerfScore 7.12
-G_M1349_IG04:
- xor edi, edi
- mov qword ptr [rbp-0x18], rdi
- jmp SHORT G_M1349_IG06
- ;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M1349_IG05:
- mov rdi, 0xD1FFAB1E ; System.Int32
- cmp qword ptr [r15], rdi
- jne SHORT G_M1349_IG10
- mov byte ptr [rbp-0x18], 1
- mov eax, dword ptr [r15+0x08]
- mov dword ptr [rbp-0x14], eax
- ;; size=26 bbWeight=0.25 PerfScore 2.06
-G_M1349_IG06:
- mov rax, qword ptr [rbp-0x18]
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M1349_IG07:
- add rsp, 16
- pop rbx
- pop r15
- pop rbp
- ret
- ;; size=9 bbWeight=0.50 PerfScore 1.38
-G_M1349_IG08:
+ test rdi, rdi
+ jne SHORT G_M1349_IG04
xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M1349_IG09:
- add rsp, 16
+ ;; size=7 bbWeight=1 PerfScore 1.50
+G_M1349_IG03:
pop rbx
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.38
-G_M1349_IG10:
- lea rdi, [rbp-0x18]
- mov rdx, r15
- mov rsi, 0xD1FFAB1E ; System.Nullable`1[int]
- call CORINFO_HELP_UNBOX_NULLABLE
- jmp SHORT G_M1349_IG06
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M1349_IG11:
+ ;; size=5 bbWeight=1 PerfScore 2.50
+G_M1349_IG04:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_NeedNonGenericType():System.String
call [rax]System.SR:get_Argument_NeedNonGenericType():System.String
mov r15, rax
mov edi, 0x154F
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 283, prolog size 13, PerfScore 18.62, instruction count 69, allocated bytes for code 283 (MethodHash=4812faba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
+; Total bytes of code 104, prolog size 9, PerfScore 7.50, instruction count 28, allocated bytes for code 104 (MethodHash=4812faba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Nullable`1[int]](long):System.Nullable`1[int] (FullOpts)
; ============================================================ -151 (-47.34 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T00] ( 6, 4 ) byref -> rbx single-def
-; V01 arg0 [V01,T01] ( 4, 3.50) long -> r15 single-def
-; V02 loc0 [V02,T03] ( 5, 2.25) ref -> r14 class-hnd single-def <System.Object>
+; V00 RetBuf [V00,T00] ( 4, 4 ) byref -> rbx single-def
+; V01 arg0 [V01,T01] ( 3, 3 ) long -> rsi single-def
+;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref single-def
-; V06 tmp3 [V06,T04] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V07 tmp4 [V07,T05] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V08 tmp5 [V08,T06] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V09 cse0 [V09,T02] ( 6, 2.50) long -> rdi multi-def "CSE #01: aggressive"
+;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.RuntimeType>
+;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref
+; V06 tmp3 [V06,T02] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
+; V07 tmp4 [V07,T03] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
+; V08 tmp5 [V08,T04] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M9637_IG01:
push rbp
push r15
- push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rdi
- mov r15, rsi
- ;; size=18 bbWeight=1 PerfScore 6.00
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M9637_IG02:
- test r15, r15
- je G_M9637_IG07
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M9637_IG03:
- mov rdi, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this
- call [rax]System.RuntimeType:get_IsGenericType():ubyte:this
- test eax, eax
- jne G_M9637_IG11
- mov rdi, 0xD1FFAB1E ; 'System.Numerics.Vector`1[System.Single]'
- mov esi, 1
- mov edx, 1
- mov rax, 0xD1FFAB1E ; code for System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
- call [rax]System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
- mov r14, rax
- mov rdi, r15
- mov rsi, r14
- mov edx, 1
- mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
- call [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
- mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
- cmp qword ptr [r14], rdi
- je SHORT G_M9637_IG05
- ;; size=103 bbWeight=0.50 PerfScore 8.62
-G_M9637_IG04:
- mov rsi, r14
- mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
- call [rax]CORINFO_HELP_UNBOX
- ;; size=15 bbWeight=0.25 PerfScore 0.88
-G_M9637_IG05:
- vmovups ymm0, ymmword ptr [r14+0x08]
- vmovups ymmword ptr [rbx], ymm0
- mov rax, rbx
- ;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M9637_IG06:
- vzeroupper
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=14 bbWeight=0.50 PerfScore 2.12
-G_M9637_IG07:
+ test rsi, rsi
+ jne SHORT G_M9637_IG06
mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
cmp qword ptr [0x0000], rdi
- je SHORT G_M9637_IG09
- ;; size=20 bbWeight=0.50 PerfScore 2.12
-G_M9637_IG08:
+ je SHORT G_M9637_IG04
+ ;; size=25 bbWeight=1 PerfScore 5.50
+G_M9637_IG03:
+ mov rdi, 0xD1FFAB1E ; System.Numerics.Vector`1[float]
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rax]CORINFO_HELP_UNBOX
- ;; size=14 bbWeight=0.25 PerfScore 0.88
-G_M9637_IG09:
+ ;; size=24 bbWeight=0.25 PerfScore 0.94
+G_M9637_IG04:
vmovups ymm0, ymmword ptr [0x0000]
vmovups ymmword ptr [rbx], ymm0
mov rax, rbx
- ;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M9637_IG10:
+ ;; size=16 bbWeight=1 PerfScore 7.25
+G_M9637_IG05:
vzeroupper
- add rsp, 8
pop rbx
- pop r14
pop r15
pop rbp
ret
- ;; size=14 bbWeight=0.50 PerfScore 2.12
-G_M9637_IG11:
+ ;; size=8 bbWeight=1 PerfScore 3.50
+G_M9637_IG06:
mov rdi, 0xD1FFAB1E ; System.ArgumentException
call CORINFO_HELP_NEWSFAST
mov rbx, rax
mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_NeedNonGenericType():System.String
call [rax]System.SR:get_Argument_NeedNonGenericType():System.String
mov r15, rax
mov edi, 0x154F
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 319, prolog size 12, PerfScore 31.25, instruction count 75, allocated bytes for code 319 (MethodHash=f44cda5a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
+; Total bytes of code 168, prolog size 9, PerfScore 20.94, instruction count 39, allocated bytes for code 168 (MethodHash=f44cda5a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[System.Numerics.Vector`1[float]](long):System.Numerics.Vector`1[float] (FullOpts)
; ============================================================ -117 (-41.64 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 3.50) long -> rbx single-def
; V01 loc0 [V01,T02] ( 5, 2.25) ref -> r15 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V06 tmp4 [V06,T04] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V07 tmp5 [V07,T05] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V08 cse0 [V08,T01] ( 6, 2.50) long -> rdi multi-def "CSE #01: aggressive"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.RuntimeType>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref
+; V05 cse0 [V05,T01] ( 6, 2.50) long -> rdi multi-def "CSE #01: aggressive"
;
; Lcl frame size = 0
G_M15429_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=12 bbWeight=1 PerfScore 3.75
G_M15429_IG02:
test rbx, rbx
- je G_M15429_IG07
- ;; size=9 bbWeight=1 PerfScore 1.25
+ je SHORT G_M15429_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M15429_IG03:
- mov rdi, 0xD1FFAB1E ; 'System.Double'
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this
- call [rax]System.RuntimeType:get_IsGenericType():ubyte:this
- test eax, eax
- jne G_M15429_IG11
mov rdi, 0xD1FFAB1E ; 'System.Double'
mov esi, 1
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
call [rax]System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
mov r15, rax
mov rdi, rbx
mov rsi, r15
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
call [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
mov rdi, 0xD1FFAB1E ; System.Double
cmp qword ptr [r15], rdi
je SHORT G_M15429_IG05
- ;; size=103 bbWeight=0.50 PerfScore 8.62
+ ;; size=73 bbWeight=0.50 PerfScore 6.25
G_M15429_IG04:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rax]CORINFO_HELP_UNBOX
;; size=15 bbWeight=0.25 PerfScore 0.88
G_M15429_IG05:
vmovsd xmm0, qword ptr [r15+0x08]
;; size=6 bbWeight=0.50 PerfScore 2.00
G_M15429_IG06:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
G_M15429_IG07:
mov rdi, 0xD1FFAB1E ; System.Double
cmp qword ptr [0x0000], rdi
je SHORT G_M15429_IG09
;; size=20 bbWeight=0.50 PerfScore 2.12
G_M15429_IG08:
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rax]CORINFO_HELP_UNBOX
;; size=14 bbWeight=0.25 PerfScore 0.88
G_M15429_IG09:
vmovsd xmm0, qword ptr [0x0000]
;; size=9 bbWeight=0.50 PerfScore 2.00
G_M15429_IG10:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M15429_IG11:
- mov rdi, 0xD1FFAB1E ; System.ArgumentException
- call CORINFO_HELP_NEWSFAST
- mov rbx, rax
- mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_NeedNonGenericType():System.String
- call [rax]System.SR:get_Argument_NeedNonGenericType():System.String
- mov r15, rax
- mov edi, 0x154F
- 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 9, PerfScore 24.00, instruction count 62, allocated bytes for code 281 (MethodHash=fdc7c3ba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
+; Total bytes of code 164, prolog size 9, PerfScore 21.62, instruction count 40, allocated bytes for code 164 (MethodHash=fdc7c3ba) for method System.Runtime.InteropServices.Marshal:PtrToStructure[double](long):double (FullOpts)
; ============================================================ -117 (-42.24 % of base) - System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int ; Assembly listing for method System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 4, 3.50) long -> rbx single-def
; V01 loc0 [V01,T02] ( 5, 2.25) ref -> r15 class-hnd single-def <System.Object>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "dup spill" <System.RuntimeType>
-;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def
-; V05 tmp3 [V05,T03] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentException>
-; V06 tmp4 [V06,T04] ( 2, 0 ) ref -> r15 single-def "argument with side effect"
-; V07 tmp5 [V07,T05] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; V08 cse0 [V08,T01] ( 6, 2.50) long -> rdi multi-def "CSE #01: aggressive"
+;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <System.RuntimeType>
+;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref
+; V05 cse0 [V05,T01] ( 6, 2.50) long -> rdi multi-def "CSE #01: aggressive"
;
; Lcl frame size = 0
G_M10469_IG01:
push rbp
push r15
push rbx
lea rbp, [rsp+0x10]
mov rbx, rdi
;; size=12 bbWeight=1 PerfScore 3.75
G_M10469_IG02:
test rbx, rbx
- je G_M10469_IG07
- ;; size=9 bbWeight=1 PerfScore 1.25
+ je SHORT G_M10469_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M10469_IG03:
- mov rdi, 0xD1FFAB1E ; 'System.Int32'
- mov rax, 0xD1FFAB1E ; code for System.RuntimeType:get_IsGenericType():ubyte:this
- call [rax]System.RuntimeType:get_IsGenericType():ubyte:this
- test eax, eax
- jne G_M10469_IG11
mov rdi, 0xD1FFAB1E ; 'System.Int32'
mov esi, 1
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
call [rax]System.Activator:CreateInstance(System.Type,ubyte,ubyte):System.Object
mov r15, rax
mov rdi, rbx
mov rsi, r15
mov edx, 1
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
call [rax]System.Runtime.InteropServices.Marshal:PtrToStructureHelper(long,System.Object,ubyte)
mov rdi, 0xD1FFAB1E ; System.Int32
cmp qword ptr [r15], rdi
je SHORT G_M10469_IG05
- ;; size=103 bbWeight=0.50 PerfScore 8.62
+ ;; size=73 bbWeight=0.50 PerfScore 6.25
G_M10469_IG04:
mov rsi, r15
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rax]CORINFO_HELP_UNBOX
;; size=15 bbWeight=0.25 PerfScore 0.88
G_M10469_IG05:
mov eax, dword ptr [r15+0x08]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M10469_IG06:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
G_M10469_IG07:
mov rdi, 0xD1FFAB1E ; System.Int32
cmp qword ptr [0x0000], rdi
je SHORT G_M10469_IG09
;; size=20 bbWeight=0.50 PerfScore 2.12
G_M10469_IG08:
xor rsi, rsi
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX
call [rax]CORINFO_HELP_UNBOX
;; size=14 bbWeight=0.25 PerfScore 0.88
G_M10469_IG09:
mov eax, dword ptr [0x0000]
;; size=7 bbWeight=0.50 PerfScore 1.00
G_M10469_IG10:
pop rbx
pop r15
pop rbp
ret
;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M10469_IG11:
- mov rdi, 0xD1FFAB1E ; System.ArgumentException
- call CORINFO_HELP_NEWSFAST
- mov rbx, rax
- mov rax, 0xD1FFAB1E ; code for System.SR:get_Argument_NeedNonGenericType():System.String
- call [rax]System.SR:get_Argument_NeedNonGenericType():System.String
- mov r15, rax
- mov edi, 0x154F
- 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 277, prolog size 9, PerfScore 22.00, instruction count 62, allocated bytes for code 277 (MethodHash=2e02d71a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
+; Total bytes of code 160, prolog size 9, PerfScore 19.62, instruction count 40, allocated bytes for code 160 (MethodHash=2e02d71a) for method System.Runtime.InteropServices.Marshal:PtrToStructure[int](long):int (FullOpts)
; ============================================================ Larger list of diffs: https://gist.github.com/MihuBot/003d1ad602a9299d2e7c73c62793a6fc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 20 minutes 2 seconds.
dotnet/runtime#109482
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: