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 ARM64] [MihaZupan] Further improve ProbabilisticMap on Avx512 #729
Comments
Top method regressions16 (2.13 % of base) - System.Net.NameResolutionTelemetry:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this ; Assembly listing for method System.Net.NameResolutionTelemetry:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 17 single block inlinees; 15 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T05] ( 13, 7.25) ref -> x19 this class-hnd single-def <System.Net.NameResolutionTelemetry>
; V01 arg1 [V01,T06] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Diagnostics.Tracing.EventCommandEventArgs>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T02] ( 14, 10.50) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.EventCounter>
-; V04 tmp2 [V04,T07] ( 4, 4 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[double]>
-; V05 tmp3 [V05,T03] ( 10, 10 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.PollingCounter>
-; V06 tmp4 [V06,T08] ( 4, 4 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[double]>
-; V07 tmp5 [V07,T04] ( 10, 10 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.PollingCounter>
+; V04 tmp2 [V04,T07] ( 4, 4 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[double]>
+; V05 tmp3 [V05,T03] ( 10, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.PollingCounter>
+; V06 tmp4 [V06,T08] ( 4, 4 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[double]>
+; V07 tmp5 [V07,T04] ( 10, 10 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.PollingCounter>
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V09 tmp7 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V10 tmp8 [V10,T11] ( 3, 1 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <double[]>
-;* V11 tmp9 [V11,T13] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+; V10 tmp8 [V10,T10] ( 3, 1 ) ref -> x0 class-hnd exact single-def "Inline stloc first use temp" <double[]>
+;* V11 tmp9 [V11,T12] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V12 tmp10 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
;* V13 tmp11 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V14 cse0 [V14,T14] ( 3, 4.50) double -> d8 "CSE #04: aggressive"
-; V15 cse1 [V15,T12] ( 2, 0.50) byref -> x14 hoist "CSE #05: aggressive"
-; V16 cse2 [V16,T09] ( 9, 3.75) ref -> x22 multi-def "CSE #02: aggressive"
-; V17 cse3 [V17,T10] ( 6, 3 ) long -> x20 multi-def "CSE #01: aggressive"
-; V18 rat0 [V18,T00] ( 4, 12.25) byref -> x14 "Strength reduced derived IV"
-; V19 rat1 [V19,T01] ( 4, 12.25) int -> x15 "Trip count IV"
+; V14 cse0 [V14,T13] ( 3, 4.50) double -> d8 "CSE #05: aggressive"
+; V15 cse1 [V15,T11] ( 2, 0.50) byref -> x14 hoist "CSE #06: aggressive"
+; V16 cse2 [V16,T09] ( 9, 3.75) ref -> x22 multi-def "CSE #01: aggressive"
+; V17 rat0 [V17,T00] ( 4, 12.25) byref -> x14 "Strength reduced derived IV"
+; V18 rat1 [V18,T01] ( 4, 12.25) int -> x15 "Trip count IV"
;
; Lcl frame size = 8
G_M14000_IG01:
stp fp, lr, [sp, #-0x40]!
str d8, [sp, #0x18]
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
mov fp, sp
mov x19, x0
;; size=24 bbWeight=1 PerfScore 5.00
G_M14000_IG02:
ldr w0, [x1, #0x38]
cmn w0, #2
bne G_M14000_IG09
;; size=12 bbWeight=1 PerfScore 4.50
G_M14000_IG03:
ldr x0, [x19, #0xB0]
cbnz x0, G_M14000_IG04
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- add x0, x20, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x21, x0
- add x14, x21, #8
+ mov x20, x0
+ add x14, x20, #8
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
movz x0, #0xD1FFAB1E // code for System.Net.NameResolutionTelemetry:<OnEventCommand>b__9_0():double:this
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- str x0, [x21, #0x18]
- mov x0, x20
+ str x0, [x20, #0x18]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x20, x0
+ mov x21, x0
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
- stp x22, x22, [x20, #0x08]
+ stp x22, x22, [x21, #0x08]
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- str x14, [x20, #0x18]
- add x14, x20, #32
+ str x14, [x21, #0x18]
+ add x14, x21, #32
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
- add x14, x20, #56
- mov x15, x21
+ add x14, x21, #56
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x20
+ mov x0, x21
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Tracing.DiagnosticCounter:Publish():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ldr x14, [x20, #0x08]
+ ldr x14, [x21, #0x08]
cbz x14, G_M14000_IG11
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- str x14, [x20, #0x08]
+ str x14, [x21, #0x08]
add x14, x19, #176
- mov x15, x20
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
- ;; size=188 bbWeight=0.50 PerfScore 18.75
+ ;; size=192 bbWeight=0.50 PerfScore 19.00
G_M14000_IG04:
ldr x0, [x19, #0xB8]
cbnz x0, G_M14000_IG05
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- add x0, x20, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x21, x0
- add x14, x21, #8
+ mov x20, x0
+ add x14, x20, #8
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
movz x0, #0xD1FFAB1E // code for System.Net.NameResolutionTelemetry:<OnEventCommand>b__9_1():double:this
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- str x0, [x21, #0x18]
- mov x0, x20
+ str x0, [x20, #0x18]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x20, x0
+ mov x21, x0
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
- stp x22, x22, [x20, #0x08]
+ stp x22, x22, [x21, #0x08]
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- str x14, [x20, #0x18]
- add x14, x20, #32
+ str x14, [x21, #0x18]
+ add x14, x21, #32
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
- add x14, x20, #56
- mov x15, x21
+ add x14, x21, #56
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x20
+ mov x0, x21
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Tracing.DiagnosticCounter:Publish():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ldr x14, [x20, #0x08]
+ ldr x14, [x21, #0x08]
cbz x14, G_M14000_IG11
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
- str x14, [x20, #0x08]
+ str x14, [x21, #0x08]
add x14, x19, #184
- mov x15, x20
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
- ;; size=188 bbWeight=0.50 PerfScore 18.75
+ ;; size=192 bbWeight=0.50 PerfScore 19.00
G_M14000_IG05:
ldr x0, [x19, #0xC0]
cbnz x0, G_M14000_IG09
;; size=8 bbWeight=0.50 PerfScore 2.00
G_M14000_IG06:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x20, x0
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
stp x22, x22, [x20, #0x08]
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
str x14, [x20, #0x18]
add x14, x20, #32
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
ldr d16, [@RWD00]
str d16, [x20, #0x50]
ldr d8, [@RWD08]
str d8, [x20, #0x58]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
mov x1, #10
bl CORINFO_HELP_NEWARR_1_VC
add x14, x0, #16
mov w15, #10
- align [0 bytes for IG07]
+ align [4 bytes for IG07]
+ align [4 bytes]
align [0 bytes]
align [0 bytes]
- align [0 bytes]
- ;; size=108 bbWeight=0.25 PerfScore 5.00
+ ;; size=116 bbWeight=0.25 PerfScore 5.25
G_M14000_IG07:
str d8, [x14], #0x08
sub w15, w15, #1
cbnz w15, G_M14000_IG07
;; size=12 bbWeight=4 PerfScore 10.00
G_M14000_IG08:
add x14, x20, #56
mov x15, x0
bl CORINFO_HELP_ASSIGN_REF
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Tracing.DiagnosticCounter:Publish():this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
ldr x14, [x20, #0x08]
cbz x14, G_M14000_IG11
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
str x14, [x20, #0x08]
ldr x14, [x20, #0x10]
cbz x14, G_M14000_IG10
movz x14, #0xD1FFAB1E
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
str x14, [x20, #0x10]
add x14, x19, #192
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
;; size=96 bbWeight=0.50 PerfScore 11.50
G_M14000_IG09:
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldr d8, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
G_M14000_IG10:
movz w0, #0xD1FFAB1E
movk w0, #1 LSL #16
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_STRCNS
movz x1, #0xD1FFAB1E // code for System.ArgumentNullException:Throw(System.String)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
brk #0
;; size=48 bbWeight=0 PerfScore 0.00
G_M14000_IG11:
movz w0, #0xD1FFAB1E
movk w0, #1 LSL #16
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_STRCNS
movz x1, #0xD1FFAB1E // code for System.ArgumentNullException:Throw(System.String)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
brk #0
;; size=48 bbWeight=0 PerfScore 0.00
RWD00 dq 7FF0000000000000h ; inf
RWD08 dq FFF0000000000000h ; -inf
-; Total bytes of code 752, prolog size 24, PerfScore 81.50, instruction count 192, allocated bytes for code 752 (MethodHash=81b4c94f) for method System.Net.NameResolutionTelemetry:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
+; Total bytes of code 768, prolog size 24, PerfScore 82.25, instruction count 194, allocated bytes for code 768 (MethodHash=81b4c94f) for method System.Net.NameResolutionTelemetry:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
; ============================================================ 8 (1.14 % of base) - System.Composition.Hosting.Core.CompositionContract:ConstraintEqual(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.Collections.Generic.IDictionary`2[System.String,System.Object]):ubyte ; Assembly listing for method System.Composition.Hosting.Core.CompositionContract:ConstraintEqual(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.Collections.Generic.IDictionary`2[System.String,System.Object]):ubyte (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T10] ( 6, 6 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
; V01 arg1 [V01,T09] ( 6, 13 ) ref -> x19 class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
; V02 loc0 [V02,T07] ( 6, 19 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
;* V03 loc1 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
; V04 loc2 [V04 ] ( 5, 33 ) ref -> [fp+0x28] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
; V05 loc3 [V05,T11] ( 6, 6 ) ubyte -> [fp+0x24] do-not-enreg[Z] must-init EH-live
; V06 loc4 [V06,T01] ( 4, 32 ) ref -> x22 class-hnd <System.Collections.IEnumerable>
-; V07 loc5 [V07,T06] ( 3, 24 ) ref -> x20 class-hnd <System.Collections.IEnumerable>
+; V07 loc5 [V07,T05] ( 3, 24 ) ref -> x20 class-hnd <System.Collections.IEnumerable>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
;* V10 tmp2 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
;* V11 tmp3 [V11 ] ( 0, 0 ) int -> zero-ref "spilling qmarkNull"
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Object]>
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V14 tmp6 [V14,T12] ( 2, 4 ) int -> x0 "Single return block return value"
; V15 tmp7 [V15,T08] ( 2, 16 ) ref -> x11 "field V03.key (fldOffset=0x0)" P-INDEP
; V16 tmp8 [V16,T00] ( 5, 40 ) ref -> x20 "field V03.value (fldOffset=0x8)" P-INDEP
;* V17 tmp9 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.key (fldOffset=0x0)" P-DEP
;* V18 tmp10 [V18 ] ( 0, 0 ) ref -> zero-ref "field V10.value (fldOffset=0x8)" P-DEP
-; V19 tmp11 [V19,T03] ( 2, 32 ) ref -> x2 "argument with side effect"
-; V20 tmp12 [V20,T04] ( 2, 32 ) ref -> x23 "argument with side effect"
+; V19 tmp11 [V19,T02] ( 2, 32 ) ref -> x2 "argument with side effect"
+; V20 tmp12 [V20,T03] ( 2, 32 ) ref -> x23 "argument with side effect"
; V21 PSPSym [V21,T13] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V22 cse0 [V22,T05] ( 10, 31 ) long -> x21 multi-def "CSE #01: aggressive"
-; V23 cse1 [V23,T02] ( 4, 32 ) long -> x22 "CSE #02: aggressive"
+; V22 cse0 [V22,T04] ( 10, 31 ) long -> x21 multi-def "CSE #01: aggressive"
+; V23 cse1 [V23,T06] ( 3, 24 ) long -> x22 "CSE #02: aggressive"
;
; Lcl frame size = 40
G_M62509_IG01:
stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x38]
stp x21, x22, [sp, #0x48]
str x23, [sp, #0x58]
mov fp, sp
str xzr, [fp, #0x28] // [V04 loc2]
str wzr, [fp, #0x24] // [V05 loc3]
add x2, sp, #96
str x2, [fp, #0x30] // [V21 PSPSym]
mov x20, x0
mov x19, x1
;; size=44 bbWeight=1 PerfScore 9.00
G_M62509_IG02:
cmp x20, x19
beq G_M62509_IG16
cbz x20, G_M62509_IG18
cbz x19, G_M62509_IG18
mov x0, x20
movz x21, #0xD1FFAB1E // code for System.Collections.Generic.ICollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Count():int:this
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
mov x11, x21
ldr xip0, [x11]
blr xip0
mov w22, w0
mov x0, x19
add x11, x21, #8
ldr xip0, [x11]
blr xip0
cmp w22, w0
bne G_M62509_IG18
mov x0, x20
add x11, x21, #16
ldr xip0, [x11]
blr xip0
str x0, [fp, #0x18] // [V02 loc0]
;; size=92 bbWeight=1 PerfScore 23.00
G_M62509_IG03:
ldr x0, [fp, #0x18] // [V02 loc0]
add x11, x21, #24
ldr xip0, [x11]
blr xip0
cbz w0, G_M62509_IG15
ldr x0, [fp, #0x18] // [V02 loc0]
add x11, x21, #32
ldr xip0, [x11]
blr xip0
mov x11, x0
mov x20, x1
add x2, fp, #40 // [V04 loc2]
mov x0, x19
mov x1, x11
add x11, x21, #40
ldr xip0, [x11]
blr xip0
cbz w0, G_M62509_IG10
cbz x20, G_M62509_IG09
ldr x1, [fp, #0x28] // [V04 loc2]
cbz x1, G_M62509_IG08
mov x1, x20
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFINTERFACE
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x22, x0
cbz x22, G_M62509_IG04
ldr x0, [x22]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
bne G_M62509_IG06
;; size=152 bbWeight=8 PerfScore 328.00
G_M62509_IG04:
mov x0, x20
ldr x1, [fp, #0x28] // [V04 loc2]
ldr x2, [x20]
ldr x2, [x2, #0x40]
ldr x2, [x2, #0x10]
blr x2
cbnz w0, G_M62509_IG03
;; size=28 bbWeight=8 PerfScore 108.00
G_M62509_IG05:
ldr x0, [fp, #0x18] // [V02 loc0]
str wzr, [fp, #0x24] // [V05 loc3]
b G_M62509_IG11
;; size=12 bbWeight=1 PerfScore 4.00
G_M62509_IG06:
ldr x1, [fp, #0x28] // [V04 loc2]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFINTERFACE
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x20, x0
cbz x20, G_M62509_IG07
mov x1, x22
movz x22, #0xD1FFAB1E
movk x22, #0xD1FFAB1E LSL #16
movk x22, #0xD1FFAB1E LSL #32
mov x0, x22
movz x2, #0xD1FFAB1E // code for System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x23, x0
mov x1, x20
mov x0, x22
movz x2, #0xD1FFAB1E // code for System.Linq.Enumerable:Cast[System.__Canon](System.Collections.IEnumerable):System.Collections.Generic.IEnumerable`1[System.__Canon]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x2, x0
mov x1, x23
- add x0, x22, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
mov x3, xzr
movz x4, #0xD1FFAB1E // code for System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
cbnz w0, G_M62509_IG03
- ;; size=156 bbWeight=8 PerfScore 272.00
+ ;; size=164 bbWeight=8 PerfScore 280.00
G_M62509_IG07:
str wzr, [fp, #0x24] // [V05 loc3]
b G_M62509_IG11
;; size=8 bbWeight=1 PerfScore 2.00
G_M62509_IG08:
str wzr, [fp, #0x24] // [V05 loc3]
b G_M62509_IG11
;; size=8 bbWeight=1 PerfScore 2.00
G_M62509_IG09:
ldr x11, [fp, #0x28] // [V04 loc2]
cmp x11, #0
cset x11, eq
str w11, [fp, #0x24] // [V05 loc3]
b G_M62509_IG11
;; size=20 bbWeight=1 PerfScore 5.00
G_M62509_IG10:
str wzr, [fp, #0x24] // [V05 loc3]
;; size=4 bbWeight=1 PerfScore 1.00
G_M62509_IG11:
ldr x0, [fp, #0x30] // [V21 PSPSym]
;; size=4 bbWeight=1 PerfScore 2.00
G_M62509_IG12:
bl G_M62509_IG20
nop
;; size=8 bbWeight=1 PerfScore 1.50
G_M62509_IG13:
ldr w0, [fp, #0x24] // [V05 loc3]
uxtb w0, w0
;; size=8 bbWeight=1 PerfScore 2.50
G_M62509_IG14:
ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
G_M62509_IG15:
ldr x0, [fp, #0x18] // [V02 loc0]
add x11, x21, #48
ldr xip0, [x11]
blr xip0
;; size=16 bbWeight=1 PerfScore 6.50
G_M62509_IG16:
mov w0, #1
;; size=4 bbWeight=1 PerfScore 0.50
G_M62509_IG17:
ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
G_M62509_IG18:
mov w0, wzr
;; size=4 bbWeight=1 PerfScore 0.50
G_M62509_IG19:
ldr x23, [sp, #0x58]
ldp x21, x22, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
G_M62509_IG20:
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
str x23, [sp, #0x38]
add x3, fp, #96
str x3, [sp, #0x10]
;; size=24 bbWeight=1 PerfScore 5.50
G_M62509_IG21:
ldr x0, [fp, #0x18] // [V02 loc0]
cbz x0, G_M62509_IG22
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
add x11, x21, #48
ldr xip0, [x11]
blr xip0
;; size=32 bbWeight=1 PerfScore 9.00
G_M62509_IG22:
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 12.00
-; Total bytes of code 704, prolog size 44, PerfScore 812.00, instruction count 176, allocated bytes for code 704 (MethodHash=a5af0bd2) for method System.Composition.Hosting.Core.CompositionContract:ConstraintEqual(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.Collections.Generic.IDictionary`2[System.String,System.Object]):ubyte (FullOpts)
+; Total bytes of code 712, prolog size 44, PerfScore 820.00, instruction count 178, allocated bytes for code 712 (MethodHash=a5af0bd2) for method System.Composition.Hosting.Core.CompositionContract:ConstraintEqual(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.Collections.Generic.IDictionary`2[System.String,System.Object]):ubyte (FullOpts)
; ============================================================ 8 (1.37 % of base) - System.Diagnostics.ProcessManager:GetModules(int):System.Diagnostics.ProcessModuleCollection ; Assembly listing for method System.Diagnostics.ProcessManager:GetModules(int):System.Diagnostics.ProcessModuleCollection (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 15 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 3, 3 ) int -> x0 single-def
; V01 loc0 [V01,T02] ( 12, 14 ) ref -> x19 class-hnd <System.Diagnostics.ProcessModuleCollection>
; V02 loc1 [V02 ] ( 3, 2 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
; V03 loc2 [V03,T03] ( 5, 9 ) ref -> x20 class-hnd exact single-def <System.String>
; V04 loc3 [V04,T01] ( 7, 17.50) int -> x21
; V05 loc4 [V05,T04] ( 3, 8.50) ref -> x23 class-hnd <System.Diagnostics.ProcessModule>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T12] ( 4, 3.50) ref -> x0
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.ProcessModuleCollection>
; V09 tmp3 [V09,T00] ( 5, 32 ) ref -> x2 class-hnd exact "Inlining Arg" <System.String>
; V10 tmp4 [V10,T11] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
; V11 tmp5 [V11,T05] ( 2, 8 ) byref -> x0 "impAppendStmt"
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.ArrayList>
-; V13 tmp7 [V13,T16] ( 2, 2 ) ref -> x0 class-hnd "dup spill" <System.Collections.ArrayList>
-; V14 tmp8 [V14,T14] ( 5, 2.50) ref -> x0
-; V15 tmp9 [V15,T09] ( 4, 4 ) ref -> x22 class-hnd exact "NewObj constructor temp" <System.Collections.ArrayList>
+; V13 tmp7 [V13,T15] ( 2, 2 ) ref -> x0 class-hnd "dup spill" <System.Collections.ArrayList>
+; V14 tmp8 [V14,T13] ( 5, 2.50) ref -> x0
+; V15 tmp9 [V15,T09] ( 4, 4 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Collections.ArrayList>
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.ArrayList>
;* V17 tmp11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Collections.ArrayList>
-; V18 tmp12 [V18,T17] ( 2, 2 ) ref -> x0 class-hnd "dup spill" <System.Collections.ArrayList>
-; V19 tmp13 [V19,T15] ( 5, 2.50) ref -> x0
-; V20 tmp14 [V20,T10] ( 4, 4 ) ref -> x21 class-hnd exact "NewObj constructor temp" <System.Collections.ArrayList>
+; V18 tmp12 [V18,T16] ( 2, 2 ) ref -> x0 class-hnd "dup spill" <System.Collections.ArrayList>
+; V19 tmp13 [V19,T14] ( 5, 2.50) ref -> x0
+; V20 tmp14 [V20,T10] ( 4, 4 ) ref -> x20 class-hnd exact "NewObj constructor temp" <System.Collections.ArrayList>
;* V21 tmp15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Collections.ArrayList>
; V22 cse0 [V22,T08] ( 3, 5 ) long -> x22 "CSE #03: aggressive"
; V23 cse1 [V23,T06] ( 3, 6 ) int -> x1 "CSE #01: aggressive"
-; V24 cse2 [V24,T13] ( 6, 3 ) long -> x20 multi-def "CSE #04: aggressive"
-; V25 rat0 [V25,T18] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
-; V26 rat1 [V26,T19] ( 2, 1 ) long -> x0 "Spilling to split statement for tree"
;
; Lcl frame size = 8
G_M25832_IG01:
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
str x23, [sp, #0x38]
mov fp, sp
;; size=20 bbWeight=1 PerfScore 4.50
G_M25832_IG02:
mov x19, xzr
add x1, fp, #16 // [V02 loc1]
movz x2, #0xD1FFAB1E // code for System.Diagnostics.ProcessManager:TryGetProcPid(int,byref):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
cbz w0, G_M25832_IG07
;; size=32 bbWeight=1 PerfScore 7.50
G_M25832_IG03:
ldr w0, [fp, #0x10] // [V02 loc1]
movz x1, #0xD1FFAB1E // code for Interop+procfs:ParseMapsModules(int):System.Diagnostics.ProcessModuleCollection
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
mov x19, x0
cbz x19, G_M25832_IG07
ldr w0, [fp, #0x10] // [V02 loc1]
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Process:GetExePath(int):System.String
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
mov x20, x0
cbz x20, G_M25832_IG07
mov w21, wzr
mov x0, x19
ldr x1, [x19]
ldr x22, [x1, #0x40]
ldr x1, [x22, #0x20]
blr x1
cmp w0, #0
ble G_M25832_IG07
;; size=96 bbWeight=0.50 PerfScore 15.25
G_M25832_IG04:
mov x0, x19
mov w1, w21
movz x2, #0xD1FFAB1E // code for System.Diagnostics.ProcessModuleCollection:get_Item(int):System.Diagnostics.ProcessModule:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x23, x0
ldr x2, [x23, #0x18]
cmp x2, x20
beq G_M25832_IG10
cbz x2, G_M25832_IG06
;; size=48 bbWeight=4 PerfScore 50.00
G_M25832_IG05:
ldr w1, [x2, #0x08]
ldr w0, [x20, #0x08]
cmp w1, w0
bne G_M25832_IG06
add x0, x2, #12
lsl w2, w1, #1
mov w2, w2
add x1, x20, #12
movz x3, #0xD1FFAB1E // code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
cbnz w0, G_M25832_IG10
;; size=56 bbWeight=2 PerfScore 33.00
G_M25832_IG06:
add w21, w21, #1
mov x0, x19
ldr x1, [x22, #0x20]
blr x1
cmp w0, w21
bgt G_M25832_IG04
;; size=24 bbWeight=4 PerfScore 26.00
G_M25832_IG07:
mov x0, x19
cbnz x0, G_M25832_IG09
;; size=8 bbWeight=1 PerfScore 1.50
G_M25832_IG08:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M25832_IG09:
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
G_M25832_IG10:
cmp w21, #0
ble G_M25832_IG07
ldr x0, [x19, #0x08]
cbnz x0, G_M25832_IG12
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- mov x0, x20
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x22, x0
- add x0, x20, #0xD1FFAB1E
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldapr w1, [x1]
- tbz w1, #0, G_M25832_IG15
- ;; size=64 bbWeight=0.50 PerfScore 7.50
+ mov x20, x0
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldapr w0, [x0]
+ tbz w0, #0, G_M25832_IG15
+ ;; size=56 bbWeight=0.50 PerfScore 7.00
G_M25832_IG11:
movz x14, #0xD1FFAB1E // data for System.Array+EmptyArray`1[System.Object]:Value
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
ldr x15, [x14]
- add x14, x22, #8
+ add x14, x20, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #8
- mov x15, x22
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x22
+ mov x0, x20
;; size=40 bbWeight=0.50 PerfScore 4.25
G_M25832_IG12:
mov w1, w21
ldr x2, [x0]
ldr x2, [x2, #0x60]
ldr x2, [x2, #0x18]
blr x2
ldr x0, [x19, #0x08]
cbnz x0, G_M25832_IG14
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- mov x0, x20
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x21, x0
- add x0, x20, #0xD1FFAB1E
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldapr w1, [x1]
- tbz w1, #0, G_M25832_IG16
- ;; size=76 bbWeight=0.50 PerfScore 12.00
+ mov x20, x0
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ ldapr w0, [x0]
+ tbz w0, #0, G_M25832_IG16
+ ;; size=68 bbWeight=0.50 PerfScore 11.50
G_M25832_IG13:
movz x14, #0xD1FFAB1E // data for System.Array+EmptyArray`1[System.Object]:Value
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
ldr x15, [x14]
- add x14, x21, #8
+ add x14, x20, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #8
- mov x15, x21
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x21
+ mov x0, x20
;; size=40 bbWeight=0.50 PerfScore 4.25
G_M25832_IG14:
mov x2, x23
mov w1, wzr
ldr x3, [x0]
ldr x3, [x3, #0x58]
ldr x3, [x3, #0x28]
blr x3
b G_M25832_IG07
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M25832_IG15:
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M25832_IG11
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M25832_IG16:
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M25832_IG13
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 584, prolog size 20, PerfScore 179.00, instruction count 146, allocated bytes for code 584 (MethodHash=0b379b17) for method System.Diagnostics.ProcessManager:GetModules(int):System.Diagnostics.ProcessModuleCollection (FullOpts)
+; Total bytes of code 592, prolog size 20, PerfScore 178.00, instruction count 148, allocated bytes for code 592 (MethodHash=0b379b17) for method System.Diagnostics.ProcessManager:GetModules(int):System.Diagnostics.ProcessModuleCollection (FullOpts)
; ============================================================ 8 (1.24 % of base) - System.Linq.ParallelEnumerable:Aggregate[System.Numerics.Vector`1[float]](System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]],System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]],int):System.Numerics.Vector`1[float] ; Assembly listing for method System.Linq.ParallelEnumerable:Aggregate[System.Numerics.Vector`1[float]](System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]],System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]],int):System.Numerics.Vector`1[float] (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 10 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 5, 4 ) ref -> x20 class-hnd single-def <System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]]>
; V01 arg1 [V01,T01] ( 6, 4.50) ref -> x19 class-hnd single-def <System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
; V02 arg2 [V02,T03] ( 4, 4 ) int -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T14] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+; V05 tmp1 [V05,T13] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V06 tmp2 [V06 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inline return value spill temp" <System.Numerics.Vector`1[float]>
-;* V07 tmp3 [V07,T13] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" <System.Numerics.Vector`1[float]>
-; V08 tmp4 [V08,T09] ( 2, 2 ) ref -> x22 class-hnd single-def "dup spill" <System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
+;* V07 tmp3 [V07,T12] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" <System.Numerics.Vector`1[float]>
+; V08 tmp4 [V08,T08] ( 2, 2 ) ref -> x21 class-hnd single-def "dup spill" <System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
;* V09 tmp5 [V09 ] ( 0, 0 ) ref -> zero-ref single-def
;* V10 tmp6 [V10 ] ( 0, 0 ) simd16 -> zero-ref
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref single-def
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref single-def
-; V15 tmp11 [V15,T07] ( 4, 2 ) ref -> x22
-; V16 tmp12 [V16,T00] ( 13, 13 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.AssociativeAggregationOperator`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
-; V17 tmp13 [V17,T04] ( 5, 5 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
+; V15 tmp11 [V15,T07] ( 4, 2 ) ref -> x21
+; V16 tmp12 [V16,T00] ( 13, 13 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.AssociativeAggregationOperator`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
+; V17 tmp13 [V17,T04] ( 5, 5 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Func`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]>
; V19 tmp15 [V19,T06] ( 3, 3 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <System.Linq.ParallelEnumerable+<>c__52`1[System.Numerics.Vector`1[float]]>
;* V20 tmp16 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V21 tmp17 [V21,T05] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperator`1[System.Numerics.Vector`1[float]]>
-; V22 tmp18 [V22,T10] ( 2, 2 ) int -> x1 "impAppendStmt"
-; V23 tmp19 [V23,T11] ( 2, 2 ) struct (48) [fp+0x10] do-not-enreg[S] must-init "spilled call-like call argument" <System.Linq.Parallel.QuerySettings>
+; V22 tmp18 [V22,T09] ( 2, 2 ) int -> x1 "impAppendStmt"
+; V23 tmp19 [V23,T10] ( 2, 2 ) struct (48) [fp+0x10] do-not-enreg[S] must-init "spilled call-like call argument" <System.Linq.Parallel.QuerySettings>
;* V24 tmp20 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp21 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V26 tmp22 [V26,T15] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-;* V27 cse0 [V27,T12] ( 0, 0 ) byref -> zero-ref "CSE #03: moderate"
-; V28 cse1 [V28,T08] ( 4, 2 ) long -> x21 "CSE #04: moderate"
+; V26 tmp22 [V26,T14] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
+;* V27 cse0 [V27,T11] ( 0, 0 ) byref -> zero-ref "CSE #03: moderate"
;
; Lcl frame size = 48
G_M53532_IG01:
stp fp, lr, [sp, #-0x60]!
stp x19, x20, [sp, #0x40]
stp x21, x22, [sp, #0x50]
mov fp, sp
add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]
mov x20, x0
mov x19, x1
;; size=40 bbWeight=1 PerfScore 7.50
G_M53532_IG02:
cbz x20, G_M53532_IG15
cbz x19, G_M53532_IG14
tst w2, #0xD1FFAB1E
bne G_M53532_IG13
tbz w2, #0, G_M53532_IG09
;; size=20 bbWeight=1 PerfScore 4.50
G_M53532_IG03:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbz w0, #0, G_M53532_IG11
;; size=20 bbWeight=0.50 PerfScore 2.75
G_M53532_IG04:
- movz x21, #0xD1FFAB1E // data for System.Linq.ParallelEnumerable+<>c__52`1[System.Numerics.Vector`1[float]]:<>9__52_0
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- ldr x22, [x21]
- cbnz x22, G_M53532_IG05
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
+ movz x0, #0xD1FFAB1E // data for System.Linq.ParallelEnumerable+<>c__52`1[System.Numerics.Vector`1[float]]:<>9__52_0
movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- mov x22, x0
- ldr x15, [x21, #-0x08]
- cbz x15, G_M53532_IG12
- add x14, x22, #8
- bl CORINFO_HELP_ASSIGN_REF
- movz x14, #0xD1FFAB1E // code for System.Linq.ParallelEnumerable+<>c__52`1[System.Numerics.Vector`1[float]]:<PerformAggregation>b__52_0(System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float]:this
- movk x14, #0xD1FFAB1E LSL #16
- movk x14, #0xD1FFAB1E LSL #32
- str x14, [x22, #0x18]
- mov x14, x21
- mov x15, x22
- bl CORINFO_HELP_ASSIGN_REF
- ;; size=84 bbWeight=0.50 PerfScore 9.25
-G_M53532_IG05:
+ ldr x21, [x0]
+ cbnz x21, G_M53532_IG05
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x21, x0
+ movz x14, #0xD1FFAB1E // data for System.Linq.ParallelEnumerable+<>c__52`1[System.Numerics.Vector`1[float]]:<>9
+ movk x14, #0xD1FFAB1E LSL #32
+ ldr x15, [x14]
+ cbz x15, G_M53532_IG12
+ add x14, x21, #8
+ bl CORINFO_HELP_ASSIGN_REF
+ movz x14, #0xD1FFAB1E // code for System.Linq.ParallelEnumerable+<>c__52`1[System.Numerics.Vector`1[float]]:<PerformAggregation>b__52_0(System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float]:this
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ str x14, [x21, #0x18]
+ movz x14, #0xD1FFAB1E // data for System.Linq.ParallelEnumerable+<>c__52`1[System.Numerics.Vector`1[float]]:<>9__52_0
+ movk x14, #0xD1FFAB1E LSL #32
+ mov x15, x21
+ bl CORINFO_HELP_ASSIGN_REF
+ ;; size=92 bbWeight=0.50 PerfScore 9.75
+G_M53532_IG05:
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ mov x22, x0
mov x0, x20
movz x1, #0xD1FFAB1E // code for System.Linq.Parallel.QueryOperator`1[System.Numerics.Vector`1[float]]:AsQueryOperator(System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Linq.Parallel.QueryOperator`1[System.Numerics.Vector`1[float]]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
ldrb w1, [x0, #0x38]
;; size=48 bbWeight=0.50 PerfScore 6.00
G_M53532_IG06:
sub x12, x0, #8
ldp q16, q17, [x12, #0x10]
stp q16, q17, [fp, #0x10]
ldr q16, [x12, #0x30]
str q16, [fp, #0x30]
;; size=20 bbWeight=0.50 PerfScore 4.25
G_M53532_IG07:
mov w14, #3
- strb w14, [x21, #0x39]
- add x14, x21, #8
+ strb w14, [x22, #0x39]
+ add x14, x22, #8
add x13, fp, #16 // [V23 tmp19]
bl CORINFO_HELP_ASSIGN_BYREF
bl CORINFO_HELP_ASSIGN_BYREF
ldp q16, q17, [x13], #0x20
stp q16, q17, [x14], #0x20
- strb w1, [x21, #0x38]
- add x14, x21, #64
+ strb w1, [x22, #0x38]
+ add x14, x22, #64
mov x15, x0
bl CORINFO_HELP_ASSIGN_REF
movi v16.4s, #0
- str q16, [x21, #0x70]
- str xzr, [x21, #0x60]
- strb wzr, [x21, #0x68]
- add x14, x21, #72
+ str q16, [x22, #0x70]
+ str xzr, [x22, #0x60]
+ strb wzr, [x22, #0x68]
+ add x14, x22, #72
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
- add x14, x21, #80
+ add x14, x22, #80
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
- add x14, x21, #88
- mov x15, x22
+ add x14, x22, #88
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
mov w0, #1
- strb w0, [x21, #0x69]
- mov x0, x21
+ strb w0, [x22, #0x69]
+ mov x0, x22
movz x1, #0xD1FFAB1E // code for System.Linq.Parallel.AssociativeAggregationOperator`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]:Aggregate():System.Numerics.Vector`1[float]:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
;; size=132 bbWeight=0.50 PerfScore 14.25
G_M53532_IG08:
ldp x21, x22, [sp, #0x50]
ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
G_M53532_IG09:
movi v0.4s, #0
mov x0, x20
mov x2, x19
mov w1, wzr
movz x3, #0xD1FFAB1E // code for System.Linq.ParallelEnumerable:PerformSequentialAggregation[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]](System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float],ubyte,System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
;; size=36 bbWeight=0.50 PerfScore 3.75
G_M53532_IG10:
ldp x21, x22, [sp, #0x50]
ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp], #0x60
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
G_M53532_IG11:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M53532_IG04
;; size=20 bbWeight=0 PerfScore 0.00
G_M53532_IG12:
movz x0, #0xD1FFAB1E // code for System.MulticastDelegate:ThrowNullThisInDelegateToInstance()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
brk #0
;; size=24 bbWeight=0 PerfScore 0.00
G_M53532_IG13:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x19, x0
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_STRCNS
mov x1, x0
mov x0, x19
movz x2, #0xD1FFAB1E // code for System.ArgumentOutOfRangeException:.ctor(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
mov x0, x19
bl CORINFO_HELP_THROW
brk #0
;; size=80 bbWeight=0 PerfScore 0.00
G_M53532_IG14:
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_STRCNS
movz x1, #0xD1FFAB1E // code for System.ArgumentNullException:Throw(System.String)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
brk #0
;; size=44 bbWeight=0 PerfScore 0.00
G_M53532_IG15:
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_STRCNS
movz x1, #0xD1FFAB1E // code for System.ArgumentNullException:Throw(System.String)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
brk #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 644, prolog size 32, PerfScore 56.25, instruction count 161, allocated bytes for code 644 (MethodHash=48822ee3) for method System.Linq.ParallelEnumerable:Aggregate[System.Numerics.Vector`1[float]](System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]],System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]],int):System.Numerics.Vector`1[float] (FullOpts)
+; Total bytes of code 652, prolog size 32, PerfScore 56.75, instruction count 163, allocated bytes for code 652 (MethodHash=48822ee3) for method System.Linq.ParallelEnumerable:Aggregate[System.Numerics.Vector`1[float]](System.Linq.ParallelQuery`1[System.Numerics.Vector`1[float]],System.Func`3[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]],int):System.Numerics.Vector`1[float] (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/501d35f1a38b8b387ad5637ee549a597 |
Top method improvements-68 (-7.98 % of base) - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[double,System.Nullable`1[int]]:b__0():this ; Assembly listing for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[double,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 21 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 11, 23 ) ref -> x19 this class-hnd single-def <System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[double,System.Nullable`1[int]]>
; V01 loc0 [V01,T16] ( 8, 11 ) int -> x20
; V02 loc1 [V02,T02] ( 9, 33 ) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T10] ( 2, 16 ) ref -> x26 class-hnd exact "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
-; V05 tmp2 [V05,T00] ( 6, 48 ) ref -> x28 class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[double,System.Nullable`1[int]]>
-; V06 tmp3 [V06,T29] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
+; V04 tmp1 [V04,T10] ( 2, 16 ) ref -> x23 class-hnd exact "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
+; V05 tmp2 [V05,T00] ( 6, 48 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[double,System.Nullable`1[int]]>
+; V06 tmp3 [V06,T27] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
; V07 tmp4 [V07,T15] ( 6, 12 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[double,System.Nullable`1[int]]>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
-; V09 tmp6 [V09,T11] ( 2, 16 ) ref -> x27 class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
+; V09 tmp6 [V09,T11] ( 2, 16 ) ref -> x24 class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
; V10 tmp7 [V10,T12] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
; V11 tmp8 [V11,T13] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Linq.Parallel.SynchronousChannel`1[double]>
;* V12 tmp9 [V12,T22] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
-; V13 tmp10 [V13,T14] ( 2, 16 ) ref -> x27 class-hnd exact "impAppendStmt" <System.Action`1[System.Object]>
-; V14 tmp11 [V14,T05] ( 3, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.Threading.Tasks.TaskScheduler>
+; V13 tmp10 [V13,T14] ( 2, 16 ) ref -> x24 class-hnd exact "impAppendStmt" <System.Action`1[System.Object]>
+; V14 tmp11 [V14,T05] ( 3, 24 ) ref -> x23 class-hnd "Inlining Arg" <System.Threading.Tasks.TaskScheduler>
;* V15 tmp12 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
;* V16 tmp13 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V17 tmp14 [V17,T17] ( 3, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
-; V18 tmp15 [V18,T01] ( 8, 44 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
+; V17 tmp14 [V17,T17] ( 3, 10 ) ref -> x26 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V18 tmp15 [V18,T01] ( 8, 44 ) ref -> x27 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task>
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V20 tmp17 [V20,T20] ( 2, 8 ) ref -> x3 class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-; V21 tmp18 [V21,T18] ( 4, 8 ) ref -> x3
-; V22 tmp19 [V22,T08] ( 4, 16 ) ref -> x3 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V20 tmp17 [V20,T20] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+; V21 tmp18 [V21,T18] ( 4, 8 ) ref -> x1
+; V22 tmp19 [V22,T08] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V24 tmp21 [V24,T04] ( 4, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
+; V24 tmp21 [V24,T04] ( 4, 24 ) ref -> x23 class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
; V26 tmp23 [V26,T21] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
; V27 tmp24 [V27,T19] ( 4, 8 ) ref -> x1
; V28 tmp25 [V28,T09] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V30 tmp27 [V30,T30] ( 2, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
-; V31 tmp28 [V31,T31] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
-; V32 tmp29 [V32,T32] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.SynchronousChannel`1[double]>
-;* V33 tmp30 [V33,T33] ( 0, 0 ) ref -> zero-ref "field V15._source (fldOffset=0x0)" P-INDEP
+; V30 tmp27 [V30,T28] ( 2, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[double,System.Nullable`1[int]]>
+; V31 tmp28 [V31,T29] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[double,System.Nullable`1[int]]>
+; V32 tmp29 [V32,T30] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.SynchronousChannel`1[double]>
+;* V33 tmp30 [V33,T31] ( 0, 0 ) ref -> zero-ref "field V15._source (fldOffset=0x0)" P-INDEP
;* V34 tmp31 [V34 ] ( 0, 0 ) ref -> zero-ref "field V16._source (fldOffset=0x0)" P-INDEP
; V35 tmp32 [V35,T06] ( 3, 24 ) ref -> x14 "arr expr"
; V36 tmp33 [V36,T07] ( 3, 24 ) ref -> x14 "arr expr"
; V37 tmp34 [V37,T23] ( 3, 6 ) ref -> x14 single-def "arr expr"
; V38 tmp35 [V38,T24] ( 3, 6 ) ref -> x14 single-def "arr expr"
-; V39 cse0 [V39,T26] ( 2, 4.25) byref -> x25 hoist "CSE #06: moderate"
-; V40 cse1 [V40,T27] ( 1, 0.25) ref -> x23 hoist "CSE #03: moderate"
-; V41 cse2 [V41,T28] ( 2, 4.25) ref -> x24 hoist "CSE #05: moderate"
-; V42 cse3 [V42,T34] ( 3, 2.50) long -> x22 "CSE #02: moderate"
-; V43 cse4 [V43,T25] ( 3, 6 ) byref -> x0 "CSE #07: moderate"
-; V44 rat0 [V44,T37] ( 3, 1 ) byref -> x25 "TLS field access"
-; V45 rat1 [V45,T36] ( 3, 1.50) long -> x0 "TLS access"
-; V46 rat2 [V46,T35] ( 3, 1.50) byref -> x25 "ThreadStaticBlockBase access"
+; V39 cse0 [V39,T26] ( 2, 4.25) byref -> x22 hoist "CSE #02: moderate"
+; V40 cse1 [V40,T25] ( 3, 6 ) byref -> x0 "CSE #03: moderate"
+; V41 rat0 [V41,T34] ( 3, 1 ) byref -> x22 "TLS field access"
+; V42 rat1 [V42,T33] ( 3, 1.50) long -> x0 "TLS access"
+; V43 rat2 [V43,T32] ( 3, 1.50) byref -> x22 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M29939_IG01:
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ stp x25, x26, [sp, #0x48]
+ str x27, [sp, #0x58]
mov fp, sp
mov x19, x0
;; size=32 bbWeight=1 PerfScore 7.00
G_M29939_IG02:
ldr x0, [x19, #0x08]
ldr x0, [x0, #0x08]
ldr w0, [x0, #0x08]
sub w20, w0, #1
mov w21, wzr
cmp w20, #0
- ble G_M29939_IG16
+ ble G_M29939_IG13
;; size=28 bbWeight=1 PerfScore 11.50
G_M29939_IG03:
- movz x22, #0xD1FFAB1E
- movk x22, #0xD1FFAB1E LSL #16
- movk x22, #0xD1FFAB1E LSL #32
- ldr x23, [x22]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x24, [x0]
mrs x0, tpidr_el0
ldr w1, [x0, #0xD1FFAB1E]
cmp w1, #9
- ble G_M29939_IG18
+ ble G_M29939_IG15
ldr x0, [x0, #0xD1FFAB1E]
- ldr x25, [x0, #0x48]
- cbz x25, G_M29939_IG18
- ;; size=60 bbWeight=0.25 PerfScore 5.38
+ ldr x22, [x0, #0x48]
+ cbz x22, G_M29939_IG15
+ ;; size=28 bbWeight=0.25 PerfScore 3.12
G_M29939_IG04:
- ldp x27, x26, [x19, #0x08]
+ ldp x24, x23, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x28, x0
- ldr x14, [x27, #0x08]
+ mov x25, x0
+ ldr x14, [x24, #0x08]
ldr w15, [x14, #0x08]
cmp w21, w15
- bhs G_M29939_IG21
+ bhs G_M29939_IG18
add x14, x14, #16
ldr x0, [x14, w21, UXTW #3]
ldr x14, [x19, #0x18]
ldr w15, [x14, #0x08]
cmp w21, w15
- bhs G_M29939_IG21
+ bhs G_M29939_IG18
add x14, x14, #16
ldr x1, [x14, w21, UXTW #3]
- str w21, [x28, #0x10]
- add x14, x28, #8
- mov x15, x26
+ str w21, [x25, #0x10]
+ add x14, x25, #8
+ mov x15, x23
bl CORINFO_HELP_ASSIGN_REF
- add x14, x28, #24
+ add x14, x25, #24
mov x15, x0
bl CORINFO_HELP_ASSIGN_REF
- add x14, x28, #32
+ add x14, x25, #32
mov x15, x1
bl CORINFO_HELP_ASSIGN_REF
- ldr x26, [x19, #0x20]
- mov x27, x24
- ldr x1, [x25, #0x10]
- str x1, [fp, #0x18] // [V17 tmp14]
- cbz x26, G_M29939_IG20
+ ldr x23, [x19, #0x20]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x24, [x0]
+ ldr x26, [x22, #0x10]
+ cbz x23, G_M29939_IG17
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ mov x27, x0
+ cbz x26, G_M29939_IG07
+ ;; size=160 bbWeight=4 PerfScore 204.00
+G_M29939_IG05:
+ ldr x1, [x27, #0x28]
+ cbnz x1, G_M29939_IG06
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x1, x0
- str x1, [fp, #0x10] // [V18 tmp15]
- ldr x2, [fp, #0x18] // [V17 tmp14]
- cbz x2, G_M29939_IG09
- ;; size=164 bbWeight=4 PerfScore 206.00
-G_M29939_IG05:
- ldr x2, [fp, #0x18] // [V17 tmp14]
- ldr x3, [x1, #0x28]
- cbz x3, G_M29939_IG07
- ;; size=12 bbWeight=2 PerfScore 12.00
-G_M29939_IG06:
- ldr x1, [fp, #0x10] // [V18 tmp15]
- b G_M29939_IG08
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M29939_IG07:
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- mov x3, x0
- add x14, x3, #60
+ add x14, x1, #60
mov w15, #1
stlr w15, [x14]
- ldr x7, [fp, #0x10] // [V18 tmp15]
- add x14, x7, #40
- mov x15, x3
+ add x14, x27, #40
+ mov x15, x1
bl CORINFO_HELP_ASSIGN_REF
- mov x1, x7
- ldr x2, [fp, #0x18] // [V17 tmp14]
- ;; size=56 bbWeight=2 PerfScore 23.00
-G_M29939_IG08:
- add x14, x3, #48
- mov x15, x2
+ ;; size=52 bbWeight=2 PerfScore 22.00
+G_M29939_IG06:
+ add x14, x1, #48
+ mov x15, x26
bl CORINFO_HELP_ASSIGN_REF
;; size=12 bbWeight=2 PerfScore 4.00
-G_M29939_IG09:
- mov x0, x1
- mov x1, x27
- mov x2, x28
+G_M29939_IG07:
+ mov x0, x27
+ mov x1, x24
+ mov x2, x25
mov x3, xzr
- mov x6, x26
+ mov x6, x23
mov w4, #5
mov w5, #0xD1FFAB1E
movz x7, #0xD1FFAB1E // code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- mov x26, x0
- cbz x26, G_M29939_IG14
+ mov x23, x0
+ cbz x23, G_M29939_IG11
;; size=76 bbWeight=4 PerfScore 64.00
-G_M29939_IG10:
+G_M29939_IG08:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
- tbz w0, #0, G_M29939_IG19
+ tbz w0, #0, G_M29939_IG16
;; size=20 bbWeight=2 PerfScore 11.00
-G_M29939_IG11:
- ldr x0, [x22, #-0x20]
- cmp x26, x0
- beq G_M29939_IG13
- ldr x27, [fp, #0x10] // [V18 tmp15]
+G_M29939_IG09:
+ movz x0, #0xD1FFAB1E // data for System.Threading.ExecutionContext:Default
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ cmp x23, x0
+ beq G_M29939_IG12
ldr x1, [x27, #0x28]
- cbnz x1, G_M29939_IG12
+ cbnz x1, G_M29939_IG10
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x1, x0
add x14, x1, #60
mov w15, #1
stlr w15, [x14]
add x14, x27, #40
mov x15, x1
bl CORINFO_HELP_ASSIGN_REF
- ;; size=68 bbWeight=2 PerfScore 35.00
-G_M29939_IG12:
+ ;; size=72 bbWeight=2 PerfScore 33.00
+G_M29939_IG10:
add x14, x1, #8
- mov x15, x26
+ mov x15, x23
bl CORINFO_HELP_ASSIGN_REF
- b G_M29939_IG15
+ b G_M29939_IG12
;; size=16 bbWeight=2 PerfScore 6.00
-G_M29939_IG13:
- ldr x27, [fp, #0x10] // [V18 tmp15]
- b G_M29939_IG15
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M29939_IG14:
- ldr x27, [fp, #0x10] // [V18 tmp15]
+G_M29939_IG11:
add x0, x27, #52
ldapr w1, [x0]
orr w1, w1, #0xD1FFAB1E
stlr w1, [x0]
- ;; size=20 bbWeight=2 PerfScore 14.00
-G_M29939_IG15:
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M29939_IG12:
mov x0, x27
mov w1, wzr
movz x2, #0xD1FFAB1E // code for System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
add w21, w21, #1
cmp w21, w20
blt G_M29939_IG04
;; size=40 bbWeight=4 PerfScore 34.00
-G_M29939_IG16:
+G_M29939_IG13:
ldp x22, x21, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
ldr x14, [x22, #0x08]
ldr w15, [x14, #0x08]
cmp w20, w15
- bhs G_M29939_IG21
+ bhs G_M29939_IG18
add x14, x14, #16
ldr x1, [x14, w20, UXTW #3]
ldr x14, [x19, #0x18]
ldr w15, [x14, #0x08]
cmp w20, w15
- bhs G_M29939_IG21
+ bhs G_M29939_IG18
add x14, x14, #16
ldr x2, [x14, w20, UXTW #3]
str w20, [x0, #0x10]
add x14, x0, #8
mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
add x14, x0, #24
mov x15, x1
bl CORINFO_HELP_ASSIGN_REF
add x14, x0, #32
mov x15, x2
bl CORINFO_HELP_ASSIGN_REF
ldr x1, [x19, #0x20]
movz x2, #0xD1FFAB1E // code for System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
;; size=132 bbWeight=1 PerfScore 44.00
-G_M29939_IG17:
- ldp x27, x28, [sp, #0x60]
- ldp x25, x26, [sp, #0x50]
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x70
+G_M29939_IG14:
+ ldr x27, [sp, #0x58]
+ ldp x25, x26, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M29939_IG18:
+ ;; size=28 bbWeight=1 PerfScore 8.00
+G_M29939_IG15:
mov w0, #9
bl CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- mov x25, x0
+ mov x22, x0
b G_M29939_IG04
;; size=16 bbWeight=0 PerfScore 0.00
-G_M29939_IG19:
+G_M29939_IG16:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
- b G_M29939_IG11
+ b G_M29939_IG09
;; size=20 bbWeight=0 PerfScore 0.00
-G_M29939_IG20:
+G_M29939_IG17:
mov w0, #47
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentNullException(int)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
brk #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M29939_IG21:
+G_M29939_IG18:
bl CORINFO_HELP_RNGCHKFAIL
brk #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 852, prolog size 28, PerfScore 489.88, instruction count 213, allocated bytes for code 852 (MethodHash=05878b0c) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[double,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
+; Total bytes of code 784, prolog size 28, PerfScore 461.62, instruction count 196, allocated bytes for code 784 (MethodHash=05878b0c) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[double,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
; ============================================================ -68 (-7.98 % of base) - System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[int,System.Nullable`1[int]]:b__0():this ; Assembly listing for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[int,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Unix
; FullOpts code
; optimized code
; fp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 21 single block inlinees; 6 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T03] ( 11, 23 ) ref -> x19 this class-hnd single-def <System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[int,System.Nullable`1[int]]>
; V01 loc0 [V01,T16] ( 8, 11 ) int -> x20
; V02 loc1 [V02,T02] ( 9, 33 ) int -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T10] ( 2, 16 ) ref -> x26 class-hnd exact "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
-; V05 tmp2 [V05,T00] ( 6, 48 ) ref -> x28 class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[int,System.Nullable`1[int]]>
-; V06 tmp3 [V06,T29] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
+; V04 tmp1 [V04,T10] ( 2, 16 ) ref -> x23 class-hnd exact "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
+; V05 tmp2 [V05,T00] ( 6, 48 ) ref -> x25 class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[int,System.Nullable`1[int]]>
+; V06 tmp3 [V06,T27] ( 2, 4 ) ref -> x21 class-hnd exact single-def "impAppendStmt" <System.Linq.Parallel.QueryTaskGroupState>
; V07 tmp4 [V07,T15] ( 6, 12 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.StopAndGoSpoolingTask`2[int,System.Nullable`1[int]]>
;* V08 tmp5 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[int,System.Nullable`1[int]]>
-; V09 tmp6 [V09,T11] ( 2, 16 ) ref -> x27 class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[int,System.Nullable`1[int]]>
+; V09 tmp6 [V09,T11] ( 2, 16 ) ref -> x24 class-hnd "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[int,System.Nullable`1[int]]>
; V10 tmp7 [V10,T12] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[int,System.Nullable`1[int]]>
; V11 tmp8 [V11,T13] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Linq.Parallel.SynchronousChannel`1[int]>
;* V12 tmp9 [V12,T22] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Tasks.TaskFactory>
-; V13 tmp10 [V13,T14] ( 2, 16 ) ref -> x27 class-hnd exact "impAppendStmt" <System.Action`1[System.Object]>
-; V14 tmp11 [V14,T05] ( 3, 24 ) ref -> x26 class-hnd "Inlining Arg" <System.Threading.Tasks.TaskScheduler>
+; V13 tmp10 [V13,T14] ( 2, 16 ) ref -> x24 class-hnd exact "impAppendStmt" <System.Action`1[System.Object]>
+; V14 tmp11 [V14,T05] ( 3, 24 ) ref -> x23 class-hnd "Inlining Arg" <System.Threading.Tasks.TaskScheduler>
;* V15 tmp12 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Threading.CancellationToken>
;* V16 tmp13 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V17 tmp14 [V17,T17] ( 3, 10 ) ref -> [fp+0x18] class-hnd spill-single-def "Inline return value spill temp" <System.Threading.Tasks.Task>
-; V18 tmp15 [V18,T01] ( 8, 44 ) ref -> [fp+0x10] class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
+; V17 tmp14 [V17,T17] ( 3, 10 ) ref -> x26 class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task>
+; V18 tmp15 [V18,T01] ( 8, 44 ) ref -> x27 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task>
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V20 tmp17 [V20,T20] ( 2, 8 ) ref -> x3 class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
-; V21 tmp18 [V21,T18] ( 4, 8 ) ref -> x3
-; V22 tmp19 [V22,T08] ( 4, 16 ) ref -> x3 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
+; V20 tmp17 [V20,T20] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
+; V21 tmp18 [V21,T18] ( 4, 8 ) ref -> x1
+; V22 tmp19 [V22,T08] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
;* V23 tmp20 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V24 tmp21 [V24,T04] ( 4, 24 ) ref -> x26 class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
+; V24 tmp21 [V24,T04] ( 4, 24 ) ref -> x23 class-hnd exact "Inlining Arg" <System.Threading.ExecutionContext>
;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task+ContingentProperties>
; V26 tmp23 [V26,T21] ( 2, 8 ) ref -> x1 class-hnd exact "dup spill" <System.Threading.Tasks.Task+ContingentProperties>
; V27 tmp24 [V27,T19] ( 4, 8 ) ref -> x1
; V28 tmp25 [V28,T09] ( 4, 16 ) ref -> x1 class-hnd exact "NewObj constructor temp" <System.Threading.Tasks.Task+ContingentProperties>
;* V29 tmp26 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-; V30 tmp27 [V30,T30] ( 2, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[int,System.Nullable`1[int]]>
-; V31 tmp28 [V31,T31] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[int,System.Nullable`1[int]]>
-; V32 tmp29 [V32,T32] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.SynchronousChannel`1[int]>
-;* V33 tmp30 [V33,T33] ( 0, 0 ) ref -> zero-ref "field V15._source (fldOffset=0x0)" P-INDEP
+; V30 tmp27 [V30,T28] ( 2, 4 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.PartitionedStream`2[int,System.Nullable`1[int]]>
+; V31 tmp28 [V31,T29] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[int,System.Nullable`1[int]]>
+; V32 tmp29 [V32,T30] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.Linq.Parallel.SynchronousChannel`1[int]>
+;* V33 tmp30 [V33,T31] ( 0, 0 ) ref -> zero-ref "field V15._source (fldOffset=0x0)" P-INDEP
;* V34 tmp31 [V34 ] ( 0, 0 ) ref -> zero-ref "field V16._source (fldOffset=0x0)" P-INDEP
; V35 tmp32 [V35,T06] ( 3, 24 ) ref -> x14 "arr expr"
; V36 tmp33 [V36,T07] ( 3, 24 ) ref -> x14 "arr expr"
; V37 tmp34 [V37,T23] ( 3, 6 ) ref -> x14 single-def "arr expr"
; V38 tmp35 [V38,T24] ( 3, 6 ) ref -> x14 single-def "arr expr"
-; V39 cse0 [V39,T26] ( 2, 4.25) byref -> x25 hoist "CSE #06: moderate"
-; V40 cse1 [V40,T27] ( 1, 0.25) ref -> x23 hoist "CSE #03: moderate"
-; V41 cse2 [V41,T28] ( 2, 4.25) ref -> x24 hoist "CSE #05: moderate"
-; V42 cse3 [V42,T34] ( 3, 2.50) long -> x22 "CSE #02: moderate"
-; V43 cse4 [V43,T25] ( 3, 6 ) byref -> x0 "CSE #07: moderate"
-; V44 rat0 [V44,T37] ( 3, 1 ) byref -> x25 "TLS field access"
-; V45 rat1 [V45,T36] ( 3, 1.50) long -> x0 "TLS access"
-; V46 rat2 [V46,T35] ( 3, 1.50) byref -> x25 "ThreadStaticBlockBase access"
+; V39 cse0 [V39,T26] ( 2, 4.25) byref -> x22 hoist "CSE #02: moderate"
+; V40 cse1 [V40,T25] ( 3, 6 ) byref -> x0 "CSE #03: moderate"
+; V41 rat0 [V41,T34] ( 3, 1 ) byref -> x22 "TLS field access"
+; V42 rat1 [V42,T33] ( 3, 1.50) long -> x0 "TLS access"
+; V43 rat2 [V43,T32] ( 3, 1.50) byref -> x22 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M19029_IG01:
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
- stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ stp x23, x24, [sp, #0x38]
+ stp x25, x26, [sp, #0x48]
+ str x27, [sp, #0x58]
mov fp, sp
mov x19, x0
;; size=32 bbWeight=1 PerfScore 7.00
G_M19029_IG02:
ldr x0, [x19, #0x08]
ldr x0, [x0, #0x08]
ldr w0, [x0, #0x08]
sub w20, w0, #1
mov w21, wzr
cmp w20, #0
- ble G_M19029_IG16
+ ble G_M19029_IG13
;; size=28 bbWeight=1 PerfScore 11.50
G_M19029_IG03:
- movz x22, #0xD1FFAB1E
- movk x22, #0xD1FFAB1E LSL #16
- movk x22, #0xD1FFAB1E LSL #32
- ldr x23, [x22]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- ldr x24, [x0]
mrs x0, tpidr_el0
ldr w1, [x0, #0xD1FFAB1E]
cmp w1, #9
- ble G_M19029_IG18
+ ble G_M19029_IG15
ldr x0, [x0, #0xD1FFAB1E]
- ldr x25, [x0, #0x48]
- cbz x25, G_M19029_IG18
- ;; size=60 bbWeight=0.25 PerfScore 5.38
+ ldr x22, [x0, #0x48]
+ cbz x22, G_M19029_IG15
+ ;; size=28 bbWeight=0.25 PerfScore 3.12
G_M19029_IG04:
- ldp x27, x26, [x19, #0x08]
+ ldp x24, x23, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x28, x0
- ldr x14, [x27, #0x08]
+ mov x25, x0
+ ldr x14, [x24, #0x08]
ldr w15, [x14, #0x08]
cmp w21, w15
- bhs G_M19029_IG21
+ bhs G_M19029_IG18
add x14, x14, #16
ldr x0, [x14, w21, UXTW #3]
ldr x14, [x19, #0x18]
ldr w15, [x14, #0x08]
cmp w21, w15
- bhs G_M19029_IG21
+ bhs G_M19029_IG18
add x14, x14, #16
ldr x1, [x14, w21, UXTW #3]
- str w21, [x28, #0x10]
- add x14, x28, #8
- mov x15, x26
+ str w21, [x25, #0x10]
+ add x14, x25, #8
+ mov x15, x23
bl CORINFO_HELP_ASSIGN_REF
- add x14, x28, #24
+ add x14, x25, #24
mov x15, x0
bl CORINFO_HELP_ASSIGN_REF
- add x14, x28, #32
+ add x14, x25, #32
mov x15, x1
bl CORINFO_HELP_ASSIGN_REF
- ldr x26, [x19, #0x20]
- mov x27, x24
- ldr x1, [x25, #0x10]
- str x1, [fp, #0x18] // [V17 tmp14]
- cbz x26, G_M19029_IG20
+ ldr x23, [x19, #0x20]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x24, [x0]
+ ldr x26, [x22, #0x10]
+ cbz x23, G_M19029_IG17
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
+ bl CORINFO_HELP_NEWSFAST
+ mov x27, x0
+ cbz x26, G_M19029_IG07
+ ;; size=160 bbWeight=4 PerfScore 204.00
+G_M19029_IG05:
+ ldr x1, [x27, #0x28]
+ cbnz x1, G_M19029_IG06
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x1, x0
- str x1, [fp, #0x10] // [V18 tmp15]
- ldr x2, [fp, #0x18] // [V17 tmp14]
- cbz x2, G_M19029_IG09
- ;; size=164 bbWeight=4 PerfScore 206.00
-G_M19029_IG05:
- ldr x2, [fp, #0x18] // [V17 tmp14]
- ldr x3, [x1, #0x28]
- cbz x3, G_M19029_IG07
- ;; size=12 bbWeight=2 PerfScore 12.00
-G_M19029_IG06:
- ldr x1, [fp, #0x10] // [V18 tmp15]
- b G_M19029_IG08
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M19029_IG07:
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- bl CORINFO_HELP_NEWSFAST
- mov x3, x0
- add x14, x3, #60
+ add x14, x1, #60
mov w15, #1
stlr w15, [x14]
- ldr x7, [fp, #0x10] // [V18 tmp15]
- add x14, x7, #40
- mov x15, x3
+ add x14, x27, #40
+ mov x15, x1
bl CORINFO_HELP_ASSIGN_REF
- mov x1, x7
- ldr x2, [fp, #0x18] // [V17 tmp14]
- ;; size=56 bbWeight=2 PerfScore 23.00
-G_M19029_IG08:
- add x14, x3, #48
- mov x15, x2
+ ;; size=52 bbWeight=2 PerfScore 22.00
+G_M19029_IG06:
+ add x14, x1, #48
+ mov x15, x26
bl CORINFO_HELP_ASSIGN_REF
;; size=12 bbWeight=2 PerfScore 4.00
-G_M19029_IG09:
- mov x0, x1
- mov x1, x27
- mov x2, x28
+G_M19029_IG07:
+ mov x0, x27
+ mov x1, x24
+ mov x2, x25
mov x3, xzr
- mov x6, x26
+ mov x6, x23
mov w4, #5
mov w5, #0xD1FFAB1E
movz x7, #0xD1FFAB1E // code for System.Threading.Tasks.Task:TaskConstructorCore(System.Delegate,System.Object,System.Threading.CancellationToken,int,int,System.Threading.Tasks.TaskScheduler):this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
movz x0, #0xD1FFAB1E // code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- mov x26, x0
- cbz x26, G_M19029_IG14
+ mov x23, x0
+ cbz x23, G_M19029_IG11
;; size=76 bbWeight=4 PerfScore 64.00
-G_M19029_IG10:
+G_M19029_IG08:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
- tbz w0, #0, G_M19029_IG19
+ tbz w0, #0, G_M19029_IG16
;; size=20 bbWeight=2 PerfScore 11.00
-G_M19029_IG11:
- ldr x0, [x22, #-0x20]
- cmp x26, x0
- beq G_M19029_IG13
- ldr x27, [fp, #0x10] // [V18 tmp15]
+G_M19029_IG09:
+ movz x0, #0xD1FFAB1E // data for System.Threading.ExecutionContext:Default
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
+ cmp x23, x0
+ beq G_M19029_IG12
ldr x1, [x27, #0x28]
- cbnz x1, G_M19029_IG12
+ cbnz x1, G_M19029_IG10
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x1, x0
add x14, x1, #60
mov w15, #1
stlr w15, [x14]
add x14, x27, #40
mov x15, x1
bl CORINFO_HELP_ASSIGN_REF
- ;; size=68 bbWeight=2 PerfScore 35.00
-G_M19029_IG12:
+ ;; size=72 bbWeight=2 PerfScore 33.00
+G_M19029_IG10:
add x14, x1, #8
- mov x15, x26
+ mov x15, x23
bl CORINFO_HELP_ASSIGN_REF
- b G_M19029_IG15
+ b G_M19029_IG12
;; size=16 bbWeight=2 PerfScore 6.00
-G_M19029_IG13:
- ldr x27, [fp, #0x10] // [V18 tmp15]
- b G_M19029_IG15
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M19029_IG14:
- ldr x27, [fp, #0x10] // [V18 tmp15]
+G_M19029_IG11:
add x0, x27, #52
ldapr w1, [x0]
orr w1, w1, #0xD1FFAB1E
stlr w1, [x0]
- ;; size=20 bbWeight=2 PerfScore 14.00
-G_M19029_IG15:
+ ;; size=16 bbWeight=2 PerfScore 10.00
+G_M19029_IG12:
mov x0, x27
mov w1, wzr
movz x2, #0xD1FFAB1E // code for System.Threading.Tasks.Task:ScheduleAndStart(ubyte):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
add w21, w21, #1
cmp w21, w20
blt G_M19029_IG04
;; size=40 bbWeight=4 PerfScore 34.00
-G_M19029_IG16:
+G_M19029_IG13:
ldp x22, x21, [x19, #0x08]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
ldr x14, [x22, #0x08]
ldr w15, [x14, #0x08]
cmp w20, w15
- bhs G_M19029_IG21
+ bhs G_M19029_IG18
add x14, x14, #16
ldr x1, [x14, w20, UXTW #3]
ldr x14, [x19, #0x18]
ldr w15, [x14, #0x08]
cmp w20, w15
- bhs G_M19029_IG21
+ bhs G_M19029_IG18
add x14, x14, #16
ldr x2, [x14, w20, UXTW #3]
str w20, [x0, #0x10]
add x14, x0, #8
mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
add x14, x0, #24
mov x15, x1
bl CORINFO_HELP_ASSIGN_REF
add x14, x0, #32
mov x15, x2
bl CORINFO_HELP_ASSIGN_REF
ldr x1, [x19, #0x20]
movz x2, #0xD1FFAB1E // code for System.Linq.Parallel.QueryTask:RunSynchronously(System.Threading.Tasks.TaskScheduler):System.Threading.Tasks.Task:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
;; size=132 bbWeight=1 PerfScore 44.00
-G_M19029_IG17:
- ldp x27, x28, [sp, #0x60]
- ldp x25, x26, [sp, #0x50]
- ldp x23, x24, [sp, #0x40]
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
- ldp fp, lr, [sp], #0x70
+G_M19029_IG14:
+ ldr x27, [sp, #0x58]
+ ldp x25, x26, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=28 bbWeight=1 PerfScore 7.00
-G_M19029_IG18:
+ ;; size=28 bbWeight=1 PerfScore 8.00
+G_M19029_IG15:
mov w0, #9
bl CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
- mov x25, x0
+ mov x22, x0
b G_M19029_IG04
;; size=16 bbWeight=0 PerfScore 0.00
-G_M19029_IG19:
+G_M19029_IG16:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
- b G_M19029_IG11
+ b G_M19029_IG09
;; size=20 bbWeight=0 PerfScore 0.00
-G_M19029_IG20:
+G_M19029_IG17:
mov w0, #47
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentNullException(int)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
brk #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M19029_IG21:
+G_M19029_IG18:
bl CORINFO_HELP_RNGCHKFAIL
brk #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 852, prolog size 28, PerfScore 489.88, instruction count 213, allocated bytes for code 852 (MethodHash=5af2b5aa) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[int,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
+; Total bytes of code 784, prolog size 28, PerfScore 461.62, instruction count 196, allocated bytes for code 784 (MethodHash=5af2b5aa) for method System.Linq.Parallel.SpoolingTask+<>c__DisplayClass0_0`2[int,System.Nullable`1[int]]:<SpoolStopAndGo>b__0():this (FullOpts)
; ============================================================ Larger list of diffs: https://gist.github.com/MihuBot/792151bcc26bb6521c2eea9291db02be |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 21 minutes 9 seconds.
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: