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
[ARM64] [xtqqczze] Replace unaligned casts in Buffer.Memmove #263
Comments
Top method regressions32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[double,System.Nullable`1[int]]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[double,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[double,System.Nullable`1[int]]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task`1[double]>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task`1[double],System.Nullable`1[int]]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task`1[double],System.Object,System.Nullable`1[int]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M8916_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M8916_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M8916_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M8916_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M8916_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M8916_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M8916_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M8916_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M8916_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=af0cdd2b) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[double,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=af0cdd2b) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[double,System.Nullable`1[int]]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[int,System.Nullable`1[int]]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[int,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[int,System.Nullable`1[int]]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task`1[int]>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task`1[int],System.Nullable`1[int]]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task`1[int],System.Object,System.Nullable`1[int]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M34706_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M34706_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M34706_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M34706_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M34706_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M34706_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M34706_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M34706_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M34706_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=3b47786d) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[int,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=3b47786d) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[int,System.Nullable`1[int]]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[long,System.Nullable`1[int]]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[long,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[long,System.Nullable`1[int]]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task`1[long]>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task`1[long],System.Nullable`1[int]]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task`1[long],System.Object,System.Nullable`1[int]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M33163_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M33163_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M33163_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M33163_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M33163_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M33163_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M33163_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M33163_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M33163_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=b4047e74) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[long,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=b4047e74) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[long,System.Nullable`1[int]]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[short,System.Nullable`1[int]]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[short,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[short,System.Nullable`1[int]]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task`1[short]>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task`1[short],System.Nullable`1[int]]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task`1[short],System.Object,System.Nullable`1[int]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M46899_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M46899_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M46899_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M46899_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M46899_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M46899_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M46899_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M46899_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M46899_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=592548cc) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[short,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=592548cc) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[short,System.Nullable`1[int]]:InnerInvoke():this (FullOpts) 32 (12.500% of base) - System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.__Canon,System.Nullable`1[int]]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.__Canon,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 11, 8.50) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.__Canon,System.Nullable`1[int]]>
; V01 loc0 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task`1[System.__Canon]>
; V02 loc1 [V02,T06] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.__Canon,System.Nullable`1[int]]>
; V03 loc2 [V03,T09] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,System.Nullable`1[int]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 tmp3 [V07,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; V08 tmp4 [V08,T11] ( 2, 2 ) long -> x0 "argument with side effect"
; V09 rat0 [V09,T02] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
; V10 rat1 [V10,T03] ( 3, 4 ) long -> x0 "runtime lookup"
; V11 rat2 [V11,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
; V12 rat3 [V12,T08] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
; V13 rat4 [V13,T10] ( 3, 2 ) long -> x0 "runtime lookup"
; V14 rat5 [V14,T07] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
G_M36231_IG01:
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
mov fp, sp
str x0, [fp, #0x18]
mov x19, x0
;; size=20 bbWeight=1 PerfScore 4.00
G_M36231_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x0, [x19]
ldr x1, [x0, #0x30]
ldr x1, [x1, #0x08]
ldr x2, [x1, #0x18]
cbz x2, G_M36231_IG04
;; size=56 bbWeight=1 PerfScore 26.00
G_M36231_IG03:
mov x0, x2
b G_M36231_IG05
;; size=8 bbWeight=0.80 PerfScore 1.20
G_M36231_IG04:
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=16 bbWeight=0.20 PerfScore 0.50
G_M36231_IG05:
ldr x1, [x19, #0x08]
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M36231_IG08
- ;; size=16 bbWeight=1 PerfScore 5.50
+ ;; size=32 bbWeight=1 PerfScore 10.00
G_M36231_IG06:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M36231_IG07:
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M36231_IG08:
ldr x0, [x19]
ldr x1, [x0, #0x30]
ldr x1, [x1, #0x08]
ldr x2, [x1, #0x20]
cbz x2, G_M36231_IG10
;; size=20 bbWeight=0.50 PerfScore 6.50
G_M36231_IG09:
mov x0, x2
b G_M36231_IG11
;; size=8 bbWeight=0.40 PerfScore 0.60
G_M36231_IG10:
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=16 bbWeight=0.10 PerfScore 0.25
G_M36231_IG11:
ldr x1, [x19, #0x08]
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M36231_IG13
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=40 bbWeight=0.50 PerfScore 8.50
+ ;; size=56 bbWeight=0.50 PerfScore 10.75
G_M36231_IG12:
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M36231_IG13:
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 256, prolog size 16, PerfScore 61.80, instruction count 64, allocated bytes for code 256 (MethodHash=c01f7278) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.__Canon,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
+; Total bytes of code 288, prolog size 16, PerfScore 68.55, instruction count 72, allocated bytes for code 288 (MethodHash=c01f7278) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.__Canon,System.Nullable`1[int]]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Nullable`1[int],System.Nullable`1[int]]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Nullable`1[int],System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Nullable`1[int],System.Nullable`1[int]]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task`1[System.Nullable`1[int]]>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task`1[System.Nullable`1[int]],System.Nullable`1[int]]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task`1[System.Nullable`1[int]],System.Object,System.Nullable`1[int]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M36351_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M36351_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M36351_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M36351_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M36351_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M36351_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M36351_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M36351_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M36351_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=58cc7200) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Nullable`1[int],System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=58cc7200) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Nullable`1[int],System.Nullable`1[int]]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]]>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]],System.Nullable`1[int]]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task`1[System.Numerics.Vector`1[float]],System.Object,System.Nullable`1[int]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M42882_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M42882_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M42882_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M42882_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M42882_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M42882_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M42882_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M42882_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M42882_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=2a41587d) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=2a41587d) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[ubyte,System.Nullable`1[int]]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[ubyte,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[ubyte,System.Nullable`1[int]]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task`1[ubyte]>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task`1[ubyte],System.Nullable`1[int]]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task`1[ubyte],System.Object,System.Nullable`1[int]]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M55070_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M55070_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M55070_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M55070_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M55070_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M55070_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M55070_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M55070_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M55070_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=090528e1) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[ubyte,System.Nullable`1[int]]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=090528e1) for method System.Threading.Tasks.ContinuationResultTaskFromResultTask`2[ubyte,System.Nullable`1[int]]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromTask`1[double]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[double]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromTask`1[double]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task,double]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task,System.Object,double]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M51308_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M51308_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M51308_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M51308_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str d0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M51308_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M51308_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M51308_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str d0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M51308_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M51308_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=d7d73793) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[double]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=d7d73793) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[double]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromTask`1[int]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[int]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromTask`1[int]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task,int]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task,System.Object,int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M37930_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M37930_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M37930_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M37930_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str w0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M37930_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M37930_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M37930_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str w0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M37930_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M37930_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=11f56bd5) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[int]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=11f56bd5) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[int]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromTask`1[long]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[long]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromTask`1[long]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task,long]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task,System.Object,long]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M64787_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M64787_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M64787_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M64787_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
str x0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M64787_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M64787_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M64787_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
str x0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M64787_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M64787_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=d34702ec) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[long]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=d34702ec) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[long]:InnerInvoke():this (FullOpts) 32 (17.021% of base) - System.Threading.Tasks.ContinuationResultTaskFromTask`1[short]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[short]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 9, 7 ) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromTask`1[short]>
; V01 loc0 [V01,T01] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task>
; V02 loc1 [V02,T02] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.Threading.Tasks.Task,short]>
; V03 loc2 [V03,T03] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.Threading.Tasks.Task,System.Object,short]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M2219_IG01:
stp fp, lr, [sp, #-0x20]!
stp x19, x20, [sp, #0x10]
mov fp, sp
mov x19, x0
;; size=16 bbWeight=1 PerfScore 3.00
G_M2219_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M2219_IG05
- ;; size=64 bbWeight=1 PerfScore 20.00
+ ;; size=80 bbWeight=1 PerfScore 24.50
G_M2219_IG03:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
strh w0, [x19, #0x38]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M2219_IG04:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M2219_IG05:
ldr x1, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M2219_IG07
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
strh w0, [x19, #0x38]
- ;; size=52 bbWeight=0.50 PerfScore 9.25
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M2219_IG06:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M2219_IG07:
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 188, prolog size 12, PerfScore 41.00, instruction count 47, allocated bytes for code 188 (MethodHash=77c5f754) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[short]:InnerInvoke():this (FullOpts)
+; Total bytes of code 220, prolog size 12, PerfScore 47.75, instruction count 55, allocated bytes for code 220 (MethodHash=77c5f754) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[short]:InnerInvoke():this (FullOpts) 32 (11.765% of base) - System.Threading.Tasks.ContinuationResultTaskFromTask`1[System.__Canon]:InnerInvoke():this ; Assembly listing for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[System.__Canon]:InnerInvoke():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 11, 8.50) ref -> x19 this class-hnd single-def <System.Threading.Tasks.ContinuationResultTaskFromTask`1[System.__Canon]>
; V01 loc0 [V01,T05] ( 4, 3 ) ref -> x20 class-hnd single-def <System.Threading.Tasks.Task>
; V02 loc1 [V02,T06] ( 4, 3 ) ref -> x2 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
; V03 loc2 [V03,T09] ( 4, 2 ) ref -> x3 class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,System.__Canon]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V07 tmp3 [V07,T04] ( 2, 4 ) long -> x0 "argument with side effect"
; V08 tmp4 [V08,T11] ( 2, 2 ) long -> x0 "argument with side effect"
; V09 rat0 [V09,T02] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
; V10 rat1 [V10,T03] ( 3, 4 ) long -> x0 "runtime lookup"
; V11 rat2 [V11,T01] ( 3, 5.60) long -> x2 "fgMakeTemp is creating a new local variable"
; V12 rat3 [V12,T08] ( 3, 2.20) long -> x0 "Spilling to split statement for tree"
; V13 rat4 [V13,T10] ( 3, 2 ) long -> x0 "runtime lookup"
; V14 rat5 [V14,T07] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 16
G_M46495_IG01:
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x20]
mov fp, sp
str x0, [fp, #0x18]
mov x19, x0
;; size=20 bbWeight=1 PerfScore 4.00
G_M46495_IG02:
ldr x20, [x19, #0x40]
str xzr, [x19, #0x40]
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:NotifyDebuggerOfWaitCompletionIfNecessary():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr wzr, [x0]
blr x1
ldr x0, [x19]
ldr x1, [x0, #0x30]
ldr x1, [x1, #0x08]
ldr x2, [x1, #0x10]
cbz x2, G_M46495_IG04
;; size=56 bbWeight=1 PerfScore 26.00
G_M46495_IG03:
mov x0, x2
b G_M46495_IG05
;; size=8 bbWeight=0.80 PerfScore 1.20
G_M46495_IG04:
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=16 bbWeight=0.20 PerfScore 0.50
G_M46495_IG05:
ldr x1, [x19, #0x08]
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x2, x0
cbz x2, G_M46495_IG08
- ;; size=16 bbWeight=1 PerfScore 5.50
+ ;; size=32 bbWeight=1 PerfScore 10.00
G_M46495_IG06:
mov x1, x20
ldr x0, [x2, #0x08]
ldr x2, [x2, #0x18]
blr x2
add x14, x19, #56
mov x15, x0
bl CORINFO_HELP_ASSIGN_REF
;; size=28 bbWeight=0.50 PerfScore 4.75
G_M46495_IG07:
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M46495_IG08:
ldr x0, [x19]
ldr x1, [x0, #0x30]
ldr x1, [x1, #0x08]
ldr x2, [x1, #0x18]
cbz x2, G_M46495_IG10
;; size=20 bbWeight=0.50 PerfScore 6.50
G_M46495_IG09:
mov x0, x2
b G_M46495_IG11
;; size=8 bbWeight=0.40 PerfScore 0.60
G_M46495_IG10:
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_RUNTIMEHANDLE_CLASS
;; size=16 bbWeight=0.10 PerfScore 0.25
G_M46495_IG11:
ldr x1, [x19, #0x08]
- bl CORINFO_HELP_ISINSTANCEOFANY
+ movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFANY
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
mov x3, x0
cbz x3, G_M46495_IG13
ldr x2, [x19, #0x10]
mov x1, x20
ldr x0, [x3, #0x08]
ldr x3, [x3, #0x18]
blr x3
add x14, x19, #56
mov x15, x0
bl CORINFO_HELP_ASSIGN_REF
- ;; size=48 bbWeight=0.50 PerfScore 9.00
+ ;; size=64 bbWeight=0.50 PerfScore 11.25
G_M46495_IG12:
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
G_M46495_IG13:
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 272, prolog size 16, PerfScore 62.80, instruction count 68, allocated bytes for code 272 (MethodHash=c3d54a60) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[System.__Canon]:InnerInvoke():this (FullOpts)
+; Total bytes of code 304, prolog size 16, PerfScore 69.55, instruction count 76, allocated bytes for code 304 (MethodHash=c3d54a60) for method System.Threading.Tasks.ContinuationResultTaskFromTask`1[System.__Canon]:InnerInvoke():this (FullOpts) Larger list of diffs: https://gist.github.com/MihuBot/f677a22eb7964f7fc5dc60a72526c358 |
@MihaZupan @EgorBo What's going on with these diffs? I can't tell whether they are related to dotnet/runtime#98812? |
@xtqqczze you can ignore these - helper calls are non-determenistically can be direct or indirect calls, I'll take a look on how to make it stable for jit-diff |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Build completed in 47 minutes.
dotnet/runtime#98812
CoreLib diffs
Frameworks diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: