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 #730
Comments
Top method regressions28 (4.96 % of base) - System.Collections.Concurrent.ConcurrentStack`1[double]:TryPopCore(int,byref):int:this ; Assembly listing for method System.Collections.Concurrent.ConcurrentStack`1[double]:TryPopCore(int,byref):int: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; 12 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T10] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentStack`1[double]>
; V01 arg1 [V01,T03] ( 5, 35 ) int -> x19 single-def
; V02 arg2 [V02,T15] ( 4, 3 ) byref -> x21 single-def
; V03 loc0 [V03 ] ( 5, 22 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
; V04 loc1 [V04,T06] ( 6, 28.50) ref -> x23 class-hnd exact <System.Collections.Concurrent.ConcurrentStack`1+Node[double]>
; V05 loc2 [V05,T04] ( 4, 32 ) ref -> x1 class-hnd <System.Collections.Concurrent.ConcurrentStack`1+Node[double]>
; V06 loc3 [V06,T09] ( 6, 18 ) int -> x22
; V07 loc4 [V07,T00] ( 5, 52.50) int -> x24
;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T13] ( 5, 5 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V11 tmp2 [V11,T14] ( 5, 5 ) ref -> x19 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V13 tmp4 [V13,T18] ( 2, 2 ) int -> x20 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp6 [V15,T11] ( 2, 16 ) byref -> x0 "Inlining Arg"
; V16 tmp7 [V16,T12] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Collections.Concurrent.ConcurrentStack`1+Node[double]>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V18 tmp9 [V18,T19] ( 2, 2 ) int -> x19 "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp11 [V20,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp15 [V24 ] ( 5, 22 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x0)" P-DEP
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V26 tmp17 [V26,T07] ( 3, 24 ) ref -> x0 "argument with side effect"
; V27 cse0 [V27,T20] ( 3, 1.50) int -> x1 "CSE #05: moderate"
; V28 cse1 [V28,T21] ( 3, 1.50) int -> x1 "CSE #06: moderate"
; V29 cse2 [V29,T17] ( 6, 3 ) ref -> x20 multi-def "CSE #04: moderate"
; V30 cse3 [V30,T02] ( 5, 48 ) ref -> x2 multi-def "CSE #01: aggressive"
; V31 cse4 [V31,T08] ( 3, 20 ) byref -> x0 "CSE #02: aggressive"
; V32 rat0 [V32,T01] ( 4, 49 ) int -> x23 "Trip count IV"
;
; Lcl frame size = 16
G_M776_IG01:
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
stp x23, x24, [sp, #0x40]
mov fp, sp
mov x20, x0
mov w19, w1
mov x21, x2
;; size=32 bbWeight=1 PerfScore 6.00
G_M776_IG02:
str wzr, [fp, #0x18] // [V03 loc0]
mov w22, #1
b G_M776_IG04
- align [0 bytes for IG06]
- align [0 bytes]
- align [0 bytes]
- align [0 bytes]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ align [4 bytes for IG06]
+ align [4 bytes]
+ align [4 bytes]
+ align [4 bytes]
+ ;; size=28 bbWeight=1 PerfScore 2.50
G_M776_IG03:
movz x0, #0xD1FFAB1E // data for System.Random:<Shared>k__BackingField
+ movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
mov w1, #1
mov w2, #8
ldr x3, [x0]
ldr x3, [x3, #0x40]
ldr x3, [x3, #0x30]
blr x3
sxtw w22, w0
- ;; size=40 bbWeight=4 PerfScore 62.00
+ ;; size=44 bbWeight=4 PerfScore 64.00
G_M776_IG04:
add x0, x20, #8
ldapr x23, [x0]
cbz x23, G_M776_IG17
;; size=12 bbWeight=8 PerfScore 36.00
G_M776_IG05:
mov x1, x23
mov w24, #1
b G_M776_IG07
;; size=12 bbWeight=4 PerfScore 8.00
G_M776_IG06:
mov x1, x2
add w24, w24, #1
;; size=8 bbWeight=8 PerfScore 8.00
G_M776_IG07:
cmp w24, w19
bge G_M776_IG09
;; size=8 bbWeight=32 PerfScore 48.00
G_M776_IG08:
ldr x2, [x1, #0x08]
cbnz x2, G_M776_IG06
;; size=8 bbWeight=16 PerfScore 64.00
G_M776_IG09:
ldrsb wzr, [x20]
ldr x2, [x1, #0x08]
mov x1, x2
mov x2, x23
bl System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
cmp x0, x23
beq G_M776_IG14
cmp w22, #0
ble G_M776_IG12
;; size=36 bbWeight=4 PerfScore 44.00
G_M776_IG10:
sxtw w23, w22
;; size=4 bbWeight=1 PerfScore 0.50
G_M776_IG11:
add x0, fp, #24 // [V03 loc0]
movn w1, #0
movz x2, #0xD1FFAB1E // code for System.Threading.SpinWait:SpinOnceCore(int):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
sub w23, w23, #1
cbnz w23, G_M776_IG11
;; size=36 bbWeight=16 PerfScore 128.00
G_M776_IG12:
ldr w0, [fp, #0x18] // [V24 tmp15]
cmp w0, #10
blt G_M776_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbnz w0, #0, G_M776_IG03
b G_M776_IG20
;; size=36 bbWeight=4 PerfScore 40.00
G_M776_IG13:
lsl w22, w22, #1
b G_M776_IG04
;; size=8 bbWeight=4 PerfScore 8.00
G_M776_IG14:
cmp w19, #1
bne G_M776_IG15
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M776_IG15
ldr w19, [fp, #0x18] // [V24 tmp15]
ldr x3, [x20, #0x80]
ldr w2, [x20, #0x98]
mov x0, x20
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M776_IG15
mov x0, x20
mov w2, w19
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=112 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 16.75
G_M776_IG15:
mov x14, x21
mov x15, x23
bl CORINFO_HELP_CHECKED_ASSIGN_REF
mov w0, w24
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M776_IG16:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M776_IG17:
cmp w19, #1
bne G_M776_IG18
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M776_IG18
mov x19, x20
ldr w20, [fp, #0x18] // [V24 tmp15]
ldr x3, [x19, #0x80]
ldr w2, [x19, #0x98]
mov x0, x19
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M776_IG18
mov x0, x19
mov w2, w20
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=116 bbWeight=0.50 PerfScore 16.75
+ ;; size=120 bbWeight=0.50 PerfScore 17.00
G_M776_IG18:
str xzr, [x21]
mov w0, wzr
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M776_IG19:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M776_IG20:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M776_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 564, prolog size 32, PerfScore 495.25, instruction count 145, allocated bytes for code 564 (MethodHash=c878fcf7) for method System.Collections.Concurrent.ConcurrentStack`1[double]:TryPopCore(int,byref):int:this (FullOpts)
+; Total bytes of code 592, prolog size 32, PerfScore 497.75, instruction count 148, allocated bytes for code 592 (MethodHash=c878fcf7) for method System.Collections.Concurrent.ConcurrentStack`1[double]:TryPopCore(int,byref):int:this (FullOpts)
; ============================================================ 28 (4.96 % of base) - System.Collections.Concurrent.ConcurrentStack`1[int]:TryPopCore(int,byref):int:this ; Assembly listing for method System.Collections.Concurrent.ConcurrentStack`1[int]:TryPopCore(int,byref):int: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; 12 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T10] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentStack`1[int]>
; V01 arg1 [V01,T03] ( 5, 35 ) int -> x19 single-def
; V02 arg2 [V02,T15] ( 4, 3 ) byref -> x21 single-def
; V03 loc0 [V03 ] ( 5, 22 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
; V04 loc1 [V04,T06] ( 6, 28.50) ref -> x23 class-hnd exact <System.Collections.Concurrent.ConcurrentStack`1+Node[int]>
; V05 loc2 [V05,T04] ( 4, 32 ) ref -> x1 class-hnd <System.Collections.Concurrent.ConcurrentStack`1+Node[int]>
; V06 loc3 [V06,T09] ( 6, 18 ) int -> x22
; V07 loc4 [V07,T00] ( 5, 52.50) int -> x24
;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T13] ( 5, 5 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V11 tmp2 [V11,T14] ( 5, 5 ) ref -> x19 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V13 tmp4 [V13,T18] ( 2, 2 ) int -> x20 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp6 [V15,T11] ( 2, 16 ) byref -> x0 "Inlining Arg"
; V16 tmp7 [V16,T12] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Collections.Concurrent.ConcurrentStack`1+Node[int]>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V18 tmp9 [V18,T19] ( 2, 2 ) int -> x19 "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp11 [V20,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp15 [V24 ] ( 5, 22 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x0)" P-DEP
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V26 tmp17 [V26,T07] ( 3, 24 ) ref -> x0 "argument with side effect"
; V27 cse0 [V27,T20] ( 3, 1.50) int -> x1 "CSE #05: moderate"
; V28 cse1 [V28,T21] ( 3, 1.50) int -> x1 "CSE #06: moderate"
; V29 cse2 [V29,T17] ( 6, 3 ) ref -> x20 multi-def "CSE #04: moderate"
; V30 cse3 [V30,T02] ( 5, 48 ) ref -> x2 multi-def "CSE #01: aggressive"
; V31 cse4 [V31,T08] ( 3, 20 ) byref -> x0 "CSE #02: aggressive"
; V32 rat0 [V32,T01] ( 4, 49 ) int -> x23 "Trip count IV"
;
; Lcl frame size = 16
G_M47726_IG01:
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
stp x23, x24, [sp, #0x40]
mov fp, sp
mov x20, x0
mov w19, w1
mov x21, x2
;; size=32 bbWeight=1 PerfScore 6.00
G_M47726_IG02:
str wzr, [fp, #0x18] // [V03 loc0]
mov w22, #1
b G_M47726_IG04
- align [0 bytes for IG06]
- align [0 bytes]
- align [0 bytes]
- align [0 bytes]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ align [4 bytes for IG06]
+ align [4 bytes]
+ align [4 bytes]
+ align [4 bytes]
+ ;; size=28 bbWeight=1 PerfScore 2.50
G_M47726_IG03:
movz x0, #0xD1FFAB1E // data for System.Random:<Shared>k__BackingField
+ movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
mov w1, #1
mov w2, #8
ldr x3, [x0]
ldr x3, [x3, #0x40]
ldr x3, [x3, #0x30]
blr x3
sxtw w22, w0
- ;; size=40 bbWeight=4 PerfScore 62.00
+ ;; size=44 bbWeight=4 PerfScore 64.00
G_M47726_IG04:
add x0, x20, #8
ldapr x23, [x0]
cbz x23, G_M47726_IG17
;; size=12 bbWeight=8 PerfScore 36.00
G_M47726_IG05:
mov x1, x23
mov w24, #1
b G_M47726_IG07
;; size=12 bbWeight=4 PerfScore 8.00
G_M47726_IG06:
mov x1, x2
add w24, w24, #1
;; size=8 bbWeight=8 PerfScore 8.00
G_M47726_IG07:
cmp w24, w19
bge G_M47726_IG09
;; size=8 bbWeight=32 PerfScore 48.00
G_M47726_IG08:
ldr x2, [x1, #0x08]
cbnz x2, G_M47726_IG06
;; size=8 bbWeight=16 PerfScore 64.00
G_M47726_IG09:
ldrsb wzr, [x20]
ldr x2, [x1, #0x08]
mov x1, x2
mov x2, x23
bl System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
cmp x0, x23
beq G_M47726_IG14
cmp w22, #0
ble G_M47726_IG12
;; size=36 bbWeight=4 PerfScore 44.00
G_M47726_IG10:
sxtw w23, w22
;; size=4 bbWeight=1 PerfScore 0.50
G_M47726_IG11:
add x0, fp, #24 // [V03 loc0]
movn w1, #0
movz x2, #0xD1FFAB1E // code for System.Threading.SpinWait:SpinOnceCore(int):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
sub w23, w23, #1
cbnz w23, G_M47726_IG11
;; size=36 bbWeight=16 PerfScore 128.00
G_M47726_IG12:
ldr w0, [fp, #0x18] // [V24 tmp15]
cmp w0, #10
blt G_M47726_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbnz w0, #0, G_M47726_IG03
b G_M47726_IG20
;; size=36 bbWeight=4 PerfScore 40.00
G_M47726_IG13:
lsl w22, w22, #1
b G_M47726_IG04
;; size=8 bbWeight=4 PerfScore 8.00
G_M47726_IG14:
cmp w19, #1
bne G_M47726_IG15
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M47726_IG15
ldr w19, [fp, #0x18] // [V24 tmp15]
ldr x3, [x20, #0x80]
ldr w2, [x20, #0x98]
mov x0, x20
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M47726_IG15
mov x0, x20
mov w2, w19
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=112 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 16.75
G_M47726_IG15:
mov x14, x21
mov x15, x23
bl CORINFO_HELP_CHECKED_ASSIGN_REF
mov w0, w24
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M47726_IG16:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M47726_IG17:
cmp w19, #1
bne G_M47726_IG18
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M47726_IG18
mov x19, x20
ldr w20, [fp, #0x18] // [V24 tmp15]
ldr x3, [x19, #0x80]
ldr w2, [x19, #0x98]
mov x0, x19
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M47726_IG18
mov x0, x19
mov w2, w20
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=116 bbWeight=0.50 PerfScore 16.75
+ ;; size=120 bbWeight=0.50 PerfScore 17.00
G_M47726_IG18:
str xzr, [x21]
mov w0, wzr
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M47726_IG19:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M47726_IG20:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M47726_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 564, prolog size 32, PerfScore 495.25, instruction count 145, allocated bytes for code 564 (MethodHash=cb914591) for method System.Collections.Concurrent.ConcurrentStack`1[int]:TryPopCore(int,byref):int:this (FullOpts)
+; Total bytes of code 592, prolog size 32, PerfScore 497.75, instruction count 148, allocated bytes for code 592 (MethodHash=cb914591) for method System.Collections.Concurrent.ConcurrentStack`1[int]:TryPopCore(int,byref):int:this (FullOpts)
; ============================================================ 28 (4.96 % of base) - System.Collections.Concurrent.ConcurrentStack`1[long]:TryPopCore(int,byref):int:this ; Assembly listing for method System.Collections.Concurrent.ConcurrentStack`1[long]:TryPopCore(int,byref):int: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; 12 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T10] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentStack`1[long]>
; V01 arg1 [V01,T03] ( 5, 35 ) int -> x19 single-def
; V02 arg2 [V02,T15] ( 4, 3 ) byref -> x21 single-def
; V03 loc0 [V03 ] ( 5, 22 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
; V04 loc1 [V04,T06] ( 6, 28.50) ref -> x23 class-hnd exact <System.Collections.Concurrent.ConcurrentStack`1+Node[long]>
; V05 loc2 [V05,T04] ( 4, 32 ) ref -> x1 class-hnd <System.Collections.Concurrent.ConcurrentStack`1+Node[long]>
; V06 loc3 [V06,T09] ( 6, 18 ) int -> x22
; V07 loc4 [V07,T00] ( 5, 52.50) int -> x24
;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T13] ( 5, 5 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V11 tmp2 [V11,T14] ( 5, 5 ) ref -> x19 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V13 tmp4 [V13,T18] ( 2, 2 ) int -> x20 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp6 [V15,T11] ( 2, 16 ) byref -> x0 "Inlining Arg"
; V16 tmp7 [V16,T12] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Collections.Concurrent.ConcurrentStack`1+Node[long]>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V18 tmp9 [V18,T19] ( 2, 2 ) int -> x19 "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp11 [V20,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp15 [V24 ] ( 5, 22 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x0)" P-DEP
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V26 tmp17 [V26,T07] ( 3, 24 ) ref -> x0 "argument with side effect"
; V27 cse0 [V27,T20] ( 3, 1.50) int -> x1 "CSE #05: moderate"
; V28 cse1 [V28,T21] ( 3, 1.50) int -> x1 "CSE #06: moderate"
; V29 cse2 [V29,T17] ( 6, 3 ) ref -> x20 multi-def "CSE #04: moderate"
; V30 cse3 [V30,T02] ( 5, 48 ) ref -> x2 multi-def "CSE #01: aggressive"
; V31 cse4 [V31,T08] ( 3, 20 ) byref -> x0 "CSE #02: aggressive"
; V32 rat0 [V32,T01] ( 4, 49 ) int -> x23 "Trip count IV"
;
; Lcl frame size = 16
G_M53559_IG01:
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
stp x23, x24, [sp, #0x40]
mov fp, sp
mov x20, x0
mov w19, w1
mov x21, x2
;; size=32 bbWeight=1 PerfScore 6.00
G_M53559_IG02:
str wzr, [fp, #0x18] // [V03 loc0]
mov w22, #1
b G_M53559_IG04
- align [0 bytes for IG06]
- align [0 bytes]
- align [0 bytes]
- align [0 bytes]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ align [4 bytes for IG06]
+ align [4 bytes]
+ align [4 bytes]
+ align [4 bytes]
+ ;; size=28 bbWeight=1 PerfScore 2.50
G_M53559_IG03:
movz x0, #0xD1FFAB1E // data for System.Random:<Shared>k__BackingField
+ movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
mov w1, #1
mov w2, #8
ldr x3, [x0]
ldr x3, [x3, #0x40]
ldr x3, [x3, #0x30]
blr x3
sxtw w22, w0
- ;; size=40 bbWeight=4 PerfScore 62.00
+ ;; size=44 bbWeight=4 PerfScore 64.00
G_M53559_IG04:
add x0, x20, #8
ldapr x23, [x0]
cbz x23, G_M53559_IG17
;; size=12 bbWeight=8 PerfScore 36.00
G_M53559_IG05:
mov x1, x23
mov w24, #1
b G_M53559_IG07
;; size=12 bbWeight=4 PerfScore 8.00
G_M53559_IG06:
mov x1, x2
add w24, w24, #1
;; size=8 bbWeight=8 PerfScore 8.00
G_M53559_IG07:
cmp w24, w19
bge G_M53559_IG09
;; size=8 bbWeight=32 PerfScore 48.00
G_M53559_IG08:
ldr x2, [x1, #0x08]
cbnz x2, G_M53559_IG06
;; size=8 bbWeight=16 PerfScore 64.00
G_M53559_IG09:
ldrsb wzr, [x20]
ldr x2, [x1, #0x08]
mov x1, x2
mov x2, x23
bl System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
cmp x0, x23
beq G_M53559_IG14
cmp w22, #0
ble G_M53559_IG12
;; size=36 bbWeight=4 PerfScore 44.00
G_M53559_IG10:
sxtw w23, w22
;; size=4 bbWeight=1 PerfScore 0.50
G_M53559_IG11:
add x0, fp, #24 // [V03 loc0]
movn w1, #0
movz x2, #0xD1FFAB1E // code for System.Threading.SpinWait:SpinOnceCore(int):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
sub w23, w23, #1
cbnz w23, G_M53559_IG11
;; size=36 bbWeight=16 PerfScore 128.00
G_M53559_IG12:
ldr w0, [fp, #0x18] // [V24 tmp15]
cmp w0, #10
blt G_M53559_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbnz w0, #0, G_M53559_IG03
b G_M53559_IG20
;; size=36 bbWeight=4 PerfScore 40.00
G_M53559_IG13:
lsl w22, w22, #1
b G_M53559_IG04
;; size=8 bbWeight=4 PerfScore 8.00
G_M53559_IG14:
cmp w19, #1
bne G_M53559_IG15
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M53559_IG15
ldr w19, [fp, #0x18] // [V24 tmp15]
ldr x3, [x20, #0x80]
ldr w2, [x20, #0x98]
mov x0, x20
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M53559_IG15
mov x0, x20
mov w2, w19
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=112 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 16.75
G_M53559_IG15:
mov x14, x21
mov x15, x23
bl CORINFO_HELP_CHECKED_ASSIGN_REF
mov w0, w24
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M53559_IG16:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M53559_IG17:
cmp w19, #1
bne G_M53559_IG18
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M53559_IG18
mov x19, x20
ldr w20, [fp, #0x18] // [V24 tmp15]
ldr x3, [x19, #0x80]
ldr w2, [x19, #0x98]
mov x0, x19
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M53559_IG18
mov x0, x19
mov w2, w20
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=116 bbWeight=0.50 PerfScore 16.75
+ ;; size=120 bbWeight=0.50 PerfScore 17.00
G_M53559_IG18:
str xzr, [x21]
mov w0, wzr
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M53559_IG19:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M53559_IG20:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M53559_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 564, prolog size 32, PerfScore 495.25, instruction count 145, allocated bytes for code 564 (MethodHash=252f2ec8) for method System.Collections.Concurrent.ConcurrentStack`1[long]:TryPopCore(int,byref):int:this (FullOpts)
+; Total bytes of code 592, prolog size 32, PerfScore 497.75, instruction count 148, allocated bytes for code 592 (MethodHash=252f2ec8) for method System.Collections.Concurrent.ConcurrentStack`1[long]:TryPopCore(int,byref):int:this (FullOpts)
; ============================================================ 28 (4.96 % of base) - System.Collections.Concurrent.ConcurrentStack`1[short]:TryPopCore(int,byref):int:this ; Assembly listing for method System.Collections.Concurrent.ConcurrentStack`1[short]:TryPopCore(int,byref):int: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; 12 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T10] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentStack`1[short]>
; V01 arg1 [V01,T03] ( 5, 35 ) int -> x19 single-def
; V02 arg2 [V02,T15] ( 4, 3 ) byref -> x21 single-def
; V03 loc0 [V03 ] ( 5, 22 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
; V04 loc1 [V04,T06] ( 6, 28.50) ref -> x23 class-hnd exact <System.Collections.Concurrent.ConcurrentStack`1+Node[short]>
; V05 loc2 [V05,T04] ( 4, 32 ) ref -> x1 class-hnd <System.Collections.Concurrent.ConcurrentStack`1+Node[short]>
; V06 loc3 [V06,T09] ( 6, 18 ) int -> x22
; V07 loc4 [V07,T00] ( 5, 52.50) int -> x24
;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T13] ( 5, 5 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V11 tmp2 [V11,T14] ( 5, 5 ) ref -> x19 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V13 tmp4 [V13,T18] ( 2, 2 ) int -> x20 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp6 [V15,T11] ( 2, 16 ) byref -> x0 "Inlining Arg"
; V16 tmp7 [V16,T12] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Collections.Concurrent.ConcurrentStack`1+Node[short]>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V18 tmp9 [V18,T19] ( 2, 2 ) int -> x19 "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp11 [V20,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp15 [V24 ] ( 5, 22 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x0)" P-DEP
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V26 tmp17 [V26,T07] ( 3, 24 ) ref -> x0 "argument with side effect"
; V27 cse0 [V27,T20] ( 3, 1.50) int -> x1 "CSE #05: moderate"
; V28 cse1 [V28,T21] ( 3, 1.50) int -> x1 "CSE #06: moderate"
; V29 cse2 [V29,T17] ( 6, 3 ) ref -> x20 multi-def "CSE #04: moderate"
; V30 cse3 [V30,T02] ( 5, 48 ) ref -> x2 multi-def "CSE #01: aggressive"
; V31 cse4 [V31,T08] ( 3, 20 ) byref -> x0 "CSE #02: aggressive"
; V32 rat0 [V32,T01] ( 4, 49 ) int -> x23 "Trip count IV"
;
; Lcl frame size = 16
G_M18927_IG01:
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
stp x23, x24, [sp, #0x40]
mov fp, sp
mov x20, x0
mov w19, w1
mov x21, x2
;; size=32 bbWeight=1 PerfScore 6.00
G_M18927_IG02:
str wzr, [fp, #0x18] // [V03 loc0]
mov w22, #1
b G_M18927_IG04
- align [0 bytes for IG06]
- align [0 bytes]
- align [0 bytes]
- align [0 bytes]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ align [4 bytes for IG06]
+ align [4 bytes]
+ align [4 bytes]
+ align [4 bytes]
+ ;; size=28 bbWeight=1 PerfScore 2.50
G_M18927_IG03:
movz x0, #0xD1FFAB1E // data for System.Random:<Shared>k__BackingField
+ movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
mov w1, #1
mov w2, #8
ldr x3, [x0]
ldr x3, [x3, #0x40]
ldr x3, [x3, #0x30]
blr x3
sxtw w22, w0
- ;; size=40 bbWeight=4 PerfScore 62.00
+ ;; size=44 bbWeight=4 PerfScore 64.00
G_M18927_IG04:
add x0, x20, #8
ldapr x23, [x0]
cbz x23, G_M18927_IG17
;; size=12 bbWeight=8 PerfScore 36.00
G_M18927_IG05:
mov x1, x23
mov w24, #1
b G_M18927_IG07
;; size=12 bbWeight=4 PerfScore 8.00
G_M18927_IG06:
mov x1, x2
add w24, w24, #1
;; size=8 bbWeight=8 PerfScore 8.00
G_M18927_IG07:
cmp w24, w19
bge G_M18927_IG09
;; size=8 bbWeight=32 PerfScore 48.00
G_M18927_IG08:
ldr x2, [x1, #0x08]
cbnz x2, G_M18927_IG06
;; size=8 bbWeight=16 PerfScore 64.00
G_M18927_IG09:
ldrsb wzr, [x20]
ldr x2, [x1, #0x08]
mov x1, x2
mov x2, x23
bl System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
cmp x0, x23
beq G_M18927_IG14
cmp w22, #0
ble G_M18927_IG12
;; size=36 bbWeight=4 PerfScore 44.00
G_M18927_IG10:
sxtw w23, w22
;; size=4 bbWeight=1 PerfScore 0.50
G_M18927_IG11:
add x0, fp, #24 // [V03 loc0]
movn w1, #0
movz x2, #0xD1FFAB1E // code for System.Threading.SpinWait:SpinOnceCore(int):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
sub w23, w23, #1
cbnz w23, G_M18927_IG11
;; size=36 bbWeight=16 PerfScore 128.00
G_M18927_IG12:
ldr w0, [fp, #0x18] // [V24 tmp15]
cmp w0, #10
blt G_M18927_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbnz w0, #0, G_M18927_IG03
b G_M18927_IG20
;; size=36 bbWeight=4 PerfScore 40.00
G_M18927_IG13:
lsl w22, w22, #1
b G_M18927_IG04
;; size=8 bbWeight=4 PerfScore 8.00
G_M18927_IG14:
cmp w19, #1
bne G_M18927_IG15
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M18927_IG15
ldr w19, [fp, #0x18] // [V24 tmp15]
ldr x3, [x20, #0x80]
ldr w2, [x20, #0x98]
mov x0, x20
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M18927_IG15
mov x0, x20
mov w2, w19
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=112 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 16.75
G_M18927_IG15:
mov x14, x21
mov x15, x23
bl CORINFO_HELP_CHECKED_ASSIGN_REF
mov w0, w24
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M18927_IG16:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M18927_IG17:
cmp w19, #1
bne G_M18927_IG18
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M18927_IG18
mov x19, x20
ldr w20, [fp, #0x18] // [V24 tmp15]
ldr x3, [x19, #0x80]
ldr w2, [x19, #0x98]
mov x0, x19
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M18927_IG18
mov x0, x19
mov w2, w20
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=116 bbWeight=0.50 PerfScore 16.75
+ ;; size=120 bbWeight=0.50 PerfScore 17.00
G_M18927_IG18:
str xzr, [x21]
mov w0, wzr
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M18927_IG19:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M18927_IG20:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M18927_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 564, prolog size 32, PerfScore 495.25, instruction count 145, allocated bytes for code 564 (MethodHash=3a4ab610) for method System.Collections.Concurrent.ConcurrentStack`1[short]:TryPopCore(int,byref):int:this (FullOpts)
+; Total bytes of code 592, prolog size 32, PerfScore 497.75, instruction count 148, allocated bytes for code 592 (MethodHash=3a4ab610) for method System.Collections.Concurrent.ConcurrentStack`1[short]:TryPopCore(int,byref):int:this (FullOpts)
; ============================================================ 28 (4.96 % of base) - System.Collections.Concurrent.ConcurrentStack`1[System.Nullable`1[int]]:TryPopCore(int,byref):int:this ; Assembly listing for method System.Collections.Concurrent.ConcurrentStack`1[System.Nullable`1[int]]:TryPopCore(int,byref):int: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; 12 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T10] ( 4, 14 ) ref -> x20 this class-hnd single-def <System.Collections.Concurrent.ConcurrentStack`1[System.Nullable`1[int]]>
; V01 arg1 [V01,T03] ( 5, 35 ) int -> x19 single-def
; V02 arg2 [V02,T15] ( 4, 3 ) byref -> x21 single-def
; V03 loc0 [V03 ] ( 5, 22 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.SpinWait>
; V04 loc1 [V04,T06] ( 6, 28.50) ref -> x23 class-hnd exact <System.Collections.Concurrent.ConcurrentStack`1+Node[System.Nullable`1[int]]>
; V05 loc2 [V05,T04] ( 4, 32 ) ref -> x1 class-hnd <System.Collections.Concurrent.ConcurrentStack`1+Node[System.Nullable`1[int]]>
; V06 loc3 [V06,T09] ( 6, 18 ) int -> x22
; V07 loc4 [V07,T00] ( 5, 52.50) int -> x24
;* V08 loc5 [V08,T16] ( 0, 0 ) int -> zero-ref
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T13] ( 5, 5 ) ref -> x20 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V11 tmp2 [V11,T14] ( 5, 5 ) ref -> x19 class-hnd exact "impAppendStmt" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V13 tmp4 [V13,T18] ( 2, 2 ) int -> x20 "Inlining Arg"
;* V14 tmp5 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp6 [V15,T11] ( 2, 16 ) byref -> x0 "Inlining Arg"
; V16 tmp7 [V16,T12] ( 2, 16 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Collections.Concurrent.ConcurrentStack`1+Node[System.Nullable`1[int]]>
;* V17 tmp8 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Concurrent.CDSCollectionETWBCLProvider>
; V18 tmp9 [V18,T19] ( 2, 2 ) int -> x19 "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V20 tmp11 [V20,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V21 tmp12 [V21 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
;* V22 tmp13 [V22 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V24 tmp15 [V24 ] ( 5, 22 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x0)" P-DEP
;* V25 tmp16 [V25 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
; V26 tmp17 [V26,T07] ( 3, 24 ) ref -> x0 "argument with side effect"
; V27 cse0 [V27,T20] ( 3, 1.50) int -> x1 "CSE #05: moderate"
; V28 cse1 [V28,T21] ( 3, 1.50) int -> x1 "CSE #06: moderate"
; V29 cse2 [V29,T17] ( 6, 3 ) ref -> x20 multi-def "CSE #04: moderate"
; V30 cse3 [V30,T02] ( 5, 48 ) ref -> x2 multi-def "CSE #01: aggressive"
; V31 cse4 [V31,T08] ( 3, 20 ) byref -> x0 "CSE #02: aggressive"
; V32 rat0 [V32,T01] ( 4, 49 ) int -> x23 "Trip count IV"
;
; Lcl frame size = 16
G_M14467_IG01:
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
stp x23, x24, [sp, #0x40]
mov fp, sp
mov x20, x0
mov w19, w1
mov x21, x2
;; size=32 bbWeight=1 PerfScore 6.00
G_M14467_IG02:
str wzr, [fp, #0x18] // [V03 loc0]
mov w22, #1
b G_M14467_IG04
- align [0 bytes for IG06]
- align [0 bytes]
- align [0 bytes]
- align [0 bytes]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ align [4 bytes for IG06]
+ align [4 bytes]
+ align [4 bytes]
+ align [4 bytes]
+ ;; size=28 bbWeight=1 PerfScore 2.50
G_M14467_IG03:
movz x0, #0xD1FFAB1E // data for System.Random:<Shared>k__BackingField
+ movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
mov w1, #1
mov w2, #8
ldr x3, [x0]
ldr x3, [x3, #0x40]
ldr x3, [x3, #0x30]
blr x3
sxtw w22, w0
- ;; size=40 bbWeight=4 PerfScore 62.00
+ ;; size=44 bbWeight=4 PerfScore 64.00
G_M14467_IG04:
add x0, x20, #8
ldapr x23, [x0]
cbz x23, G_M14467_IG17
;; size=12 bbWeight=8 PerfScore 36.00
G_M14467_IG05:
mov x1, x23
mov w24, #1
b G_M14467_IG07
;; size=12 bbWeight=4 PerfScore 8.00
G_M14467_IG06:
mov x1, x2
add w24, w24, #1
;; size=8 bbWeight=8 PerfScore 8.00
G_M14467_IG07:
cmp w24, w19
bge G_M14467_IG09
;; size=8 bbWeight=32 PerfScore 48.00
G_M14467_IG08:
ldr x2, [x1, #0x08]
cbnz x2, G_M14467_IG06
;; size=8 bbWeight=16 PerfScore 64.00
G_M14467_IG09:
ldrsb wzr, [x20]
ldr x2, [x1, #0x08]
mov x1, x2
mov x2, x23
bl System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
cmp x0, x23
beq G_M14467_IG14
cmp w22, #0
ble G_M14467_IG12
;; size=36 bbWeight=4 PerfScore 44.00
G_M14467_IG10:
sxtw w23, w22
;; size=4 bbWeight=1 PerfScore 0.50
G_M14467_IG11:
add x0, fp, #24 // [V03 loc0]
movn w1, #0
movz x2, #0xD1FFAB1E // code for System.Threading.SpinWait:SpinOnceCore(int):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
sub w23, w23, #1
cbnz w23, G_M14467_IG11
;; size=36 bbWeight=16 PerfScore 128.00
G_M14467_IG12:
ldr w0, [fp, #0x18] // [V24 tmp15]
cmp w0, #10
blt G_M14467_IG13
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbnz w0, #0, G_M14467_IG03
b G_M14467_IG20
;; size=36 bbWeight=4 PerfScore 40.00
G_M14467_IG13:
lsl w22, w22, #1
b G_M14467_IG04
;; size=8 bbWeight=4 PerfScore 8.00
G_M14467_IG14:
cmp w19, #1
bne G_M14467_IG15
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M14467_IG15
ldr w19, [fp, #0x18] // [V24 tmp15]
ldr x3, [x20, #0x80]
ldr w2, [x20, #0x98]
mov x0, x20
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M14467_IG15
mov x0, x20
mov w2, w19
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=112 bbWeight=0.50 PerfScore 16.50
+ ;; size=116 bbWeight=0.50 PerfScore 16.75
G_M14467_IG15:
mov x14, x21
mov x15, x23
bl CORINFO_HELP_CHECKED_ASSIGN_REF
mov w0, w24
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M14467_IG16:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M14467_IG17:
cmp w19, #1
bne G_M14467_IG18
movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x20, [x1]
ldrb w1, [x20, #0x9D]
cbz w1, G_M14467_IG18
mov x19, x20
ldr w20, [fp, #0x18] // [V24 tmp15]
ldr x3, [x19, #0x80]
ldr w2, [x19, #0x98]
mov x0, x19
mov w4, #3
movn x5, #0
mov w6, wzr
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:IsEnabledCommon(ubyte,int,long,int,long,ubyte):ubyte:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
cbz w0, G_M14467_IG18
mov x0, x19
mov w2, w20
mov w1, #2
movz x3, #0xD1FFAB1E // code for System.Diagnostics.Tracing.EventSource:WriteEvent(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=116 bbWeight=0.50 PerfScore 16.75
+ ;; size=120 bbWeight=0.50 PerfScore 17.00
G_M14467_IG18:
str xzr, [x21]
mov w0, wzr
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M14467_IG19:
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M14467_IG20:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M14467_IG03
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 564, prolog size 32, PerfScore 495.25, instruction count 145, allocated bytes for code 564 (MethodHash=3ee2c77c) for method System.Collections.Concurrent.ConcurrentStack`1[System.Nullable`1[int]]:TryPopCore(int,byref):int:this (FullOpts)
+; Total bytes of code 592, prolog size 32, PerfScore 497.75, instruction count 148, allocated bytes for code 592 (MethodHash=3ee2c77c) for method System.Collections.Concurrent.ConcurrentStack`1[System.Nullable`1[int]]:TryPopCore(int,byref):int:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/f65261c9b53a5b7c595e4ac0edba4f97 |
Top method improvements-24 (-3.41 % of base) - System.Net.NameResolutionMetrics:.cctor() ; Assembly listing for method System.Net.NameResolutionMetrics:.cctor() (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; 13 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;* V00 loc0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.Diagnostics.Metrics.InstrumentAdvice`1[double]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T00] ( 5, 10 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Metrics.Meter>
-; V03 tmp2 [V03,T05] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Metrics.InstrumentAdvice`1[double]>
-; V04 tmp3 [V04,T02] ( 4, 8 ) ref -> x20 class-hnd single-def "impAppendStmt" <System.Diagnostics.Metrics.Meter>
-; V05 tmp4 [V05,T06] ( 3, 6 ) ref -> x23 class-hnd exact single-def "dup spill" <double[]>
+; V02 tmp1 [V02,T01] ( 5, 10 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Metrics.Meter>
+; V03 tmp2 [V03,T05] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Metrics.InstrumentAdvice`1[double]>
+; V04 tmp3 [V04,T02] ( 4, 8 ) ref -> x21 class-hnd single-def "impAppendStmt" <System.Diagnostics.Metrics.Meter>
+; V05 tmp4 [V05,T06] ( 3, 6 ) ref -> x22 class-hnd exact single-def "dup spill" <double[]>
; V06 tmp5 [V06,T07] ( 3, 6 ) ref -> x1 class-hnd exact single-def "NewObj constructor temp" <<>z__ReadOnlyArray`1[double]>
; V07 tmp6 [V07,T08] ( 3, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument]>
-; V08 tmp7 [V08,T09] ( 3, 6 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument]]>
+; V08 tmp7 [V08,T09] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument]]>
;* V09 tmp8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Diagnostics.Metrics.Histogram`1[double]>
;* V10 tmp9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
-; V11 tmp10 [V11,T01] ( 9, 9 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
+; V11 tmp10 [V11,T00] ( 12, 12 ) ref -> x19 class-hnd exact single-def "Inline stloc first use temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
; V12 tmp11 [V12,T03] ( 4, 8 ) ref -> x6 class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Diagnostics.Metrics.Instrument]>
;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-; V14 tmp13 [V14,T12] ( 2, 4 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <System.String>
-; V15 tmp14 [V15,T13] ( 2, 4 ) ref -> x3 class-hnd exact single-def "impAppendStmt" <System.String>
-; V16 tmp15 [V16,T14] ( 2, 4 ) ref -> x4 class-hnd exact single-def "impAppendStmt" <System.String>
-; V17 tmp16 [V17,T15] ( 2, 4 ) ref -> x5 class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
-; V18 tmp17 [V18,T11] ( 3, 4 ) ref -> x0 single-def "argument with side effect"
-; V19 cse0 [V19,T10] ( 5, 5 ) long -> x21 "CSE #02: aggressive"
-; V20 cse1 [V20,T22] ( 3, 2 ) long -> x21 "CSE #01: aggressive"
-; V21 cse2 [V21,T19] ( 3, 3 ) long -> x19 "CSE #03: aggressive"
-; V22 cse3 [V22,T20] ( 3, 3 ) long -> x22 "CSE #04: aggressive"
-; V23 cse4 [V23,T21] ( 3, 3 ) long -> x22 "CSE #05: aggressive"
-; V24 cse5 [V24,T16] ( 3, 3 ) ref -> x24 "CSE #06: aggressive"
-; V25 cse6 [V25,T17] ( 3, 3 ) ref -> x25 "CSE #07: aggressive"
-; V26 cse7 [V26,T18] ( 3, 3 ) ref -> x26 "CSE #08: aggressive"
-; V27 rat0 [V27,T04] ( 4, 7 ) ref -> x15 "replacement local"
-; V28 rat1 [V28,T23] ( 3, 2 ) long -> x2 "CSE for expectedClsNode"
+; V14 tmp13 [V14,T13] ( 2, 4 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <System.String>
+; V15 tmp14 [V15,T14] ( 2, 4 ) ref -> x3 class-hnd exact single-def "impAppendStmt" <System.String>
+; V16 tmp15 [V16,T15] ( 2, 4 ) ref -> x4 class-hnd exact single-def "impAppendStmt" <System.String>
+; V17 tmp16 [V17,T16] ( 2, 4 ) ref -> x5 class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
+; V18 tmp17 [V18,T12] ( 3, 4 ) ref -> x0 single-def "argument with side effect"
+; V19 cse0 [V19,T10] ( 5, 5 ) long -> x23 "CSE #02: aggressive"
+; V20 cse1 [V20,T17] ( 4, 3 ) long -> x21 "CSE #01: aggressive"
+; V21 cse2 [V21,T11] ( 4, 4 ) long -> x19 "CSE #03: aggressive"
+; V22 rat0 [V22,T04] ( 4, 7 ) ref -> x15 "replacement local"
+; V23 rat1 [V23,T18] ( 3, 2 ) long -> x2 "CSE for expectedClsNode"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M58946_IG01:
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x10]
- stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
- stp x25, x26, [sp, #0x40]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- ;; size=24 bbWeight=1 PerfScore 5.50
+ ;; size=20 bbWeight=1 PerfScore 4.50
G_M58946_IG02:
movz x19, #0xD1FFAB1E
movk x19, #0xD1FFAB1E LSL #16
movk x19, #0xD1FFAB1E LSL #32
- add x0, x19, #0xD1FFAB1E
+ mov x0, x19
bl CORINFO_HELP_NEWSFAST
mov x20, x0
movz x21, #0xD1FFAB1E
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
mov x0, x21
bl CORINFO_HELP_NEWSFAST
mov x22, x0
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbz w0, #0, G_M58946_IG07
;; size=68 bbWeight=1 PerfScore 12.50
G_M58946_IG03:
- movz x21, #0xD1FFAB1E // data for System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument]:s_emptyArray
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- ldr x15, [x21]
+ movz x23, #0xD1FFAB1E // data for System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument]:s_emptyArray
+ movk x23, #0xD1FFAB1E LSL #16
+ movk x23, #0xD1FFAB1E LSL #32
+ ldr x15, [x23]
add x14, x22, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x20, #8
mov x15, x22
bl CORINFO_HELP_ASSIGN_REF
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x21, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
- mov x22, x0
+ mov x21, x0
mov w1, wzr
mov x2, xzr
movz x3, #0xD1FFAB1E // code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
add x14, x20, #16
- mov x15, x22
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
mov x0, x20
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
mov x2, xzr
mov x3, xzr
mov x4, xzr
movz x5, #0xD1FFAB1E // code for System.Diagnostics.Metrics.Meter:Initialize(System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Object):this
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
- sub x14, x21, #16
+ sub x14, x23, #16
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x19
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x19, x0
- ldr x20, [x21, #-0x10]
+ mov x20, x0
+ ldr x21, [x23, #-0x10]
movz x0, #0xD1FFAB1E // code for System.Diagnostics.Metrics.Instrument:ValidateTypeParameter[double]()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
- movz x22, #0xD1FFAB1E
- movk x22, #0xD1FFAB1E LSL #16
- movk x22, #0xD1FFAB1E LSL #32
- mov x0, x22
+ add x0, x19, #0xD1FFAB1E
mov x1, #14
bl CORINFO_HELP_NEWARR_1_VC
- mov x23, x0
+ mov x22, x0
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldp q16, q17, [x0]
- stp q16, q17, [x23, #0x10]
+ stp q16, q17, [x22, #0x10]
ldp q16, q17, [x0, #0x20]
- stp q16, q17, [x23, #0x30]
+ stp q16, q17, [x22, #0x30]
ldp q16, q17, [x0, #0x40]
- stp q16, q17, [x23, #0x50]
+ stp q16, q17, [x22, #0x50]
ldr q16, [x0, #0x60]
- str q16, [x23, #0x70]
- add x0, x22, #0xD1FFAB1E
+ str q16, [x22, #0x70]
+ add x0, x19, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
mov x1, x0
add x14, x1, #8
- mov x15, x23
+ mov x15, x22
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x19
+ mov x0, x20
movz x2, #0xD1FFAB1E // code for System.Diagnostics.Metrics.InstrumentAdvice`1[double]:set_HistogramBucketBoundaries(System.Collections.Generic.IReadOnlyList`1[double]):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ldrsb wzr, [x20]
- movz x22, #0xD1FFAB1E
- movk x22, #0xD1FFAB1E LSL #16
- movk x22, #0xD1FFAB1E LSL #32
- mov x0, x22
+ ldrsb wzr, [x21]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x23, x0
- add x14, x23, #8
+ mov x19, x0
+ add x14, x19, #8
+ mov x15, x21
+ bl CORINFO_HELP_ASSIGN_REF
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ str x14, [x19, #0x10]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ str x14, [x19, #0x18]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ stp x14, xzr, [x19, #0x20]
+ add x14, x19, #48
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- movz x24, #0xD1FFAB1E
- movk x24, #0xD1FFAB1E LSL #16
- movk x24, #0xD1FFAB1E LSL #32
- str x24, [x23, #0x10]
- movz x25, #0xD1FFAB1E
- movk x25, #0xD1FFAB1E LSL #16
- movk x25, #0xD1FFAB1E LSL #32
- str x25, [x23, #0x18]
- movz x26, #0xD1FFAB1E
- movk x26, #0xD1FFAB1E LSL #16
- movk x26, #0xD1FFAB1E LSL #32
- stp x26, xzr, [x23, #0x20]
- add x14, x23, #48
- mov x15, x19
- bl CORINFO_HELP_ASSIGN_REF
- add x0, x22, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x6, x0
- mov x2, x24
- mov x3, x25
- mov x4, x26
- ldr x5, [x23, #0x28]
+ ldp x2, x3, [x19, #0x10]
+ ldp x4, x5, [x19, #0x20]
add x14, x6, #8
- mov x15, x23
+ mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
movz x0, #0xD1FFAB1E // code for System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]:<CreateHistogram>b__0():System.Diagnostics.Metrics.Instrument:this
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
str x0, [x6, #0x18]
- mov x0, x20
+ mov x0, x21
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movz x7, #0xD1FFAB1E // code for System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[double](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
movk x7, #0xD1FFAB1E LSL #16
movk x7, #0xD1FFAB1E LSL #32
ldr x7, [x7]
blr x7
mov x15, x0
cbz x15, G_M58946_IG05
- ;; size=512 bbWeight=1 PerfScore 110.50
+ ;; size=496 bbWeight=1 PerfScore 113.00
G_M58946_IG04:
movz x2, #0xD1FFAB1E
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x14, [x15]
cmp x14, x2
bne G_M58946_IG08
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M58946_IG05:
- sub x14, x21, #8
+ sub x14, x23, #8
bl CORINFO_HELP_ASSIGN_REF
;; size=8 bbWeight=1 PerfScore 1.50
G_M58946_IG06:
- ldp x25, x26, [sp, #0x40]
- ldp x23, x24, [sp, #0x30]
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x50
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x40
ret lr
- ;; size=24 bbWeight=1 PerfScore 6.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M58946_IG07:
mov x0, x21
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M58946_IG03
;; size=12 bbWeight=0 PerfScore 0.00
G_M58946_IG08:
mov x1, x0
mov x0, x2
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_CHKCASTCLASS
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
brk #0
;; size=32 bbWeight=0 PerfScore 0.00
-; Total bytes of code 704, prolog size 24, PerfScore 139.00, instruction count 176, allocated bytes for code 704 (MethodHash=f77619bd) for method System.Net.NameResolutionMetrics:.cctor() (FullOpts)
+; Total bytes of code 680, prolog size 20, PerfScore 140.50, instruction count 170, allocated bytes for code 680 (MethodHash=f77619bd) for method System.Net.NameResolutionMetrics:.cctor() (FullOpts)
; ============================================================ -20 (-2.84 % of base) - System.Threading.Channels.BoundedChannel`1[System.Nullable`1[int]]:.ctor(int,int,ubyte,System.Action`1[System.Nullable`1[int]]):this ; Assembly listing for method System.Threading.Channels.BoundedChannel`1[System.Nullable`1[int]]:.ctor(int,int,ubyte,System.Action`1[System.Nullable`1[int]]):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; 19 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 14, 14 ) ref -> x19 this class-hnd single-def <System.Threading.Channels.BoundedChannel`1[System.Nullable`1[int]]>
-; V01 arg1 [V01,T10] ( 3, 3 ) int -> x22 single-def
-; V02 arg2 [V02,T11] ( 3, 3 ) int -> x23 single-def
-; V03 arg3 [V03,T02] ( 4, 4 ) ubyte -> x20 single-def
-; V04 arg4 [V04,T09] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Action`1[System.Nullable`1[int]]>
+; V01 arg1 [V01,T11] ( 3, 3 ) int -> x22 single-def
+; V02 arg2 [V02,T12] ( 3, 3 ) int -> x23 single-def
+; V03 arg3 [V03,T03] ( 4, 4 ) ubyte -> x20 single-def
+; V04 arg4 [V04,T10] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Action`1[System.Nullable`1[int]]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T03] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Deque`1[System.Nullable`1[int]]>
-; V07 tmp2 [V07,T04] ( 3, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Deque`1[System.Threading.Channels.AsyncOperation`1[System.Nullable`1[int]]]>
-; V08 tmp3 [V08,T05] ( 3, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Deque`1[System.Threading.Channels.VoidAsyncOperationWithData`1[System.Nullable`1[int]]]>
+; V06 tmp1 [V06,T04] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Deque`1[System.Nullable`1[int]]>
+; V07 tmp2 [V07,T05] ( 3, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Deque`1[System.Threading.Channels.AsyncOperation`1[System.Nullable`1[int]]]>
+; V08 tmp3 [V08,T06] ( 3, 6 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Deque`1[System.Threading.Channels.VoidAsyncOperationWithData`1[System.Nullable`1[int]]]>
;* V09 tmp4 [V09 ] ( 0, 0 ) ref -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) ref -> zero-ref single-def
-; V11 tmp6 [V11,T12] ( 4, 4 ) int -> x20
-; V12 tmp7 [V12,T06] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskCompletionSource>
-; V13 tmp8 [V13,T07] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[System.Nullable`1[int]]>
-; V14 tmp9 [V14,T08] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.Nullable`1[int]]>
-; V15 tmp10 [V15,T01] ( 4, 7 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
+; V11 tmp6 [V11,T13] ( 4, 4 ) int -> x20
+; V12 tmp7 [V12,T07] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.TaskCompletionSource>
+; V13 tmp8 [V13,T08] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[System.Nullable`1[int]]>
+; V14 tmp9 [V14,T09] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.Nullable`1[int]]>
+; V15 tmp10 [V15,T02] ( 4, 7 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task>
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
-; V17 tmp12 [V17,T21] ( 3, 1.50) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
-;* V18 tmp13 [V18,T22] ( 0, 0 ) ref -> zero-ref single-def "field V16._source (fldOffset=0x0)" P-INDEP
-; V19 cse0 [V19,T13] ( 4, 4 ) long -> x25 "CSE #01: aggressive"
-; V20 cse1 [V20,T14] ( 4, 4 ) long -> x24 "CSE #02: aggressive"
-; V21 cse2 [V21,T15] ( 4, 4 ) long -> x27 "CSE #03: aggressive"
-; V22 rat0 [V22,T19] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
-; V23 rat1 [V23,T20] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
-; V24 rat2 [V24,T18] ( 3, 2 ) byref -> x1 "TLS field access"
-; V25 rat3 [V25,T17] ( 3, 3 ) long -> x0 "TLS access"
-; V26 rat4 [V26,T16] ( 3, 3 ) byref -> x1 "ThreadStaticBlockBase access"
+; V17 tmp12 [V17,T20] ( 3, 1.50) ref -> x23 class-hnd single-def "Inline stloc first use temp" <System.Threading.Tasks.Task>
+;* V18 tmp13 [V18,T21] ( 0, 0 ) ref -> zero-ref single-def "field V16._source (fldOffset=0x0)" P-INDEP
+; V19 cse0 [V19,T01] ( 7, 7 ) long -> x24 "CSE #01: aggressive"
+; V20 cse1 [V20,T14] ( 4, 4 ) long -> x25 "CSE #02: aggressive"
+; V21 rat0 [V21,T18] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V22 rat1 [V22,T19] ( 2, 2 ) long -> x0 "Spilling to split statement for tree"
+; V23 rat2 [V23,T17] ( 3, 2 ) byref -> x1 "TLS field access"
+; V24 rat3 [V24,T16] ( 3, 3 ) long -> x0 "TLS access"
+; V25 rat4 [V25,T15] ( 3, 3 ) byref -> x1 "ThreadStaticBlockBase access"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M43674_IG01:
- 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]
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
+ stp x25, x26, [sp, #0x40]
mov fp, sp
mov x19, x0
mov w22, w1
mov w23, w2
mov w20, w3
mov x21, x4
- ;; size=48 bbWeight=1 PerfScore 9.00
+ ;; size=44 bbWeight=1 PerfScore 8.00
G_M43674_IG02:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x24, x0
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbz w0, #0, G_M43674_IG10
;; size=40 bbWeight=1 PerfScore 8.50
G_M43674_IG03:
movz x25, #0xD1FFAB1E // data for System.Array+EmptyArray`1[System.Nullable`1[int]]:Value
movk x25, #0xD1FFAB1E LSL #16
movk x25, #0xD1FFAB1E LSL #32
ldr x15, [x25]
add x14, x24, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #40
mov x15, x24
bl CORINFO_HELP_ASSIGN_REF
movz x24, #0xD1FFAB1E
movk x24, #0xD1FFAB1E LSL #16
movk x24, #0xD1FFAB1E LSL #32
mov x0, x24
bl CORINFO_HELP_NEWSFAST
mov x26, x0
- movz x27, #0xD1FFAB1E
- movk x27, #0xD1FFAB1E LSL #16
- movk x27, #0xD1FFAB1E LSL #32
- add x0, x27, #0xD1FFAB1E
+ add x0, x24, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldapr w1, [x1]
tbz w1, #0, G_M43674_IG11
- ;; size=96 bbWeight=1 PerfScore 19.00
+ ;; size=84 bbWeight=1 PerfScore 17.50
G_M43674_IG04:
ldr x15, [x25, #0xD1FFAB1E]
add x14, x26, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #48
mov x15, x26
bl CORINFO_HELP_ASSIGN_REF
add x0, x24, #200
bl CORINFO_HELP_NEWSFAST
mov x26, x0
- add x0, x27, #0xD1FFAB1E
+ add x0, x24, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldapr w1, [x1]
tbz w1, #0, G_M43674_IG12
;; size=60 bbWeight=1 PerfScore 14.50
G_M43674_IG05:
ldr x15, [x25, #0xD1FFAB1E]
add x14, x26, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #56
mov x15, x26
bl CORINFO_HELP_ASSIGN_REF
stp w23, w22, [x19, #0x58]
strb w20, [x19, #0x60]
add x14, x19, #24
mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
mov w0, #64
tst w20, #255
csel w20, w0, wzr, ne
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x21, x0
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x22, x0
movn w0, #68
tst w20, w0
bne G_M43674_IG14
tbz w20, #2, G_M43674_IG08
;; size=112 bbWeight=1 PerfScore 21.00
G_M43674_IG06:
mrs x0, tpidr_el0
ldr w1, [x0, #0xD1FFAB1E]
cmp w1, #9
ble G_M43674_IG13
ldr x0, [x0, #0xD1FFAB1E]
ldr x1, [x0, #0x48]
cbz x1, G_M43674_IG13
;; size=28 bbWeight=0.50 PerfScore 6.25
G_M43674_IG07:
ldr x23, [x1, #0x10]
cbz x23, G_M43674_IG08
mov x0, x22
movz x1, #0xD1FFAB1E // code for System.Threading.Tasks.Task:EnsureContingentPropertiesInitializedUnsafe():System.Threading.Tasks.Task+ContingentProperties:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
add x14, x0, #48
mov x15, x23
bl CORINFO_HELP_ASSIGN_REF
;; size=44 bbWeight=0.50 PerfScore 6.00
G_M43674_IG08:
mov x0, x22
mov x3, xzr
mov w4, w20
mov x1, xzr
mov x2, xzr
mov w5, #0xD1FFAB1E
mov x6, xzr
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
add x14, x21, #8
mov x15, x22
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #32
mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
add x0, x24, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
mov x20, x0
mov x1, x19
movz x2, #0xD1FFAB1E // code for System.Threading.Channels.BoundedChannel`1+BoundedChannelReader[System.Nullable`1[int]]:.ctor(System.Threading.Channels.BoundedChannel`1[System.Nullable`1[int]]):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
add x14, x19, #8
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x27
+ add x0, x24, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
mov x20, x0
mov x1, x19
movz x2, #0xD1FFAB1E // code for System.Threading.Channels.BoundedChannel`1+BoundedChannelWriter[System.Nullable`1[int]]:.ctor(System.Threading.Channels.BoundedChannel`1[System.Nullable`1[int]]):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
add x14, x19, #16
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
;; size=168 bbWeight=1 PerfScore 33.00
G_M43674_IG09:
- 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
+ ldp x25, x26, [sp, #0x40]
+ ldp x23, x24, [sp, #0x30]
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=28 bbWeight=1 PerfScore 8.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M43674_IG10:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M43674_IG03
;; size=20 bbWeight=0 PerfScore 0.00
G_M43674_IG11:
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M43674_IG04
;; size=8 bbWeight=0 PerfScore 0.00
G_M43674_IG12:
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M43674_IG05
;; size=8 bbWeight=0 PerfScore 0.00
G_M43674_IG13:
mov w0, #9
bl CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
mov x1, x0
b G_M43674_IG07
;; size=16 bbWeight=0 PerfScore 0.00
G_M43674_IG14:
mov w0, #45
movz x1, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException(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
-; Total bytes of code 704, prolog size 28, PerfScore 125.25, instruction count 176, allocated bytes for code 704 (MethodHash=91db5565) for method System.Threading.Channels.BoundedChannel`1[System.Nullable`1[int]]:.ctor(int,int,ubyte,System.Action`1[System.Nullable`1[int]]):this (FullOpts)
+; Total bytes of code 684, prolog size 24, PerfScore 120.75, instruction count 171, allocated bytes for code 684 (MethodHash=91db5565) for method System.Threading.Channels.BoundedChannel`1[System.Nullable`1[int]]:.ctor(int,int,ubyte,System.Action`1[System.Nullable`1[int]]):this (FullOpts)
; ============================================================ -8 (-2.70 % of base) - Microsoft.VisualBasic.CompilerServices.IDOUtils:.cctor() ; Assembly listing for method Microsoft.VisualBasic.CompilerServices.IDOUtils:.cctor() (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; 0 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 5, 10 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.CacheSet`1[System.Runtime.CompilerServices.CallSiteBinder]>
+; V01 tmp1 [V01,T00] ( 5, 10 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.CacheSet`1[System.Runtime.CompilerServices.CallSiteBinder]>
; V02 tmp2 [V02,T01] ( 5, 10 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <Microsoft.VisualBasic.CompilerServices.CacheDict`2[int,System.Func`4[System.Runtime.CompilerServices.CallSiteBinder,System.Object,System.Object[],System.Object]]>
; V03 tmp3 [V03,T02] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[System.Runtime.CompilerServices.CallSiteBinder,System.Collections.Generic.LinkedListNode`1[System.Runtime.CompilerServices.CallSiteBinder]]>
-; V04 tmp4 [V04,T04] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.LinkedList`1[System.Runtime.CompilerServices.CallSiteBinder]>
+; V04 tmp4 [V04,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.LinkedList`1[System.Runtime.CompilerServices.CallSiteBinder]>
; V05 tmp5 [V05,T03] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[int,Microsoft.VisualBasic.CompilerServices.CacheDict`2+KeyInfo[int,System.Func`4[System.Runtime.CompilerServices.CallSiteBinder,System.Object,System.Object[],System.Object]]]>
-; V06 tmp6 [V06,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.LinkedList`1[int]>
-; V07 cse0 [V07,T06] ( 3, 3 ) long -> x20 "CSE #01: aggressive"
+; V06 tmp6 [V06,T06] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.LinkedList`1[int]>
+; V07 cse0 [V07,T04] ( 4, 4 ) long -> x19 "CSE #01: aggressive"
; V08 cse1 [V08,T07] ( 3, 3 ) long -> x21 "CSE #02: aggressive"
;
; Lcl frame size = 8
G_M50570_IG01:
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x18]
str x21, [sp, #0x28]
mov fp, sp
;; size=16 bbWeight=1 PerfScore 3.50
G_M50570_IG02:
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ movz x19, #0xD1FFAB1E
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #0xD1FFAB1E LSL #32
+ mov x0, x19
bl CORINFO_HELP_NEWSFAST
- mov x19, x0
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- add x0, x20, #0xD1FFAB1E
+ mov x20, x0
+ add x0, x19, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
mov x21, x0
mov w1, wzr
mov x2, xzr
movz x3, #0xD1FFAB1E // code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- add x14, x19, #8
+ add x14, x20, #8
mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x15, x0
- add x14, x19, #16
+ add x14, x20, #16
bl CORINFO_HELP_ASSIGN_REF
mov w14, #64
- str w14, [x19, #0x18]
+ str w14, [x20, #0x18]
movz x21, #0xD1FFAB1E // data for Microsoft.VisualBasic.CompilerServices.IDOUtils:s_binderCache
movk x21, #0xD1FFAB1E LSL #16
movk x21, #0xD1FFAB1E LSL #32
mov x14, x21
- mov x15, x19
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x20
+ add x0, x19, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
mov x19, x0
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x20, x0
mov w1, wzr
mov x2, xzr
movz x3, #0xD1FFAB1E // code for System.Collections.Generic.Dictionary`2[int,Microsoft.VisualBasic.CompilerServices.CacheDict`2+KeyInfo[int,System.__Canon]]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[int]):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
add x14, x19, #8
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x15, x0
add x14, x19, #16
bl CORINFO_HELP_ASSIGN_REF
mov w14, #16
str w14, [x19, #0x18]
add x14, x21, #8
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
- ;; size=264 bbWeight=1 PerfScore 46.00
+ ;; size=256 bbWeight=1 PerfScore 45.00
G_M50570_IG03:
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 296, prolog size 16, PerfScore 54.50, instruction count 74, allocated bytes for code 296 (MethodHash=236b3a75) for method Microsoft.VisualBasic.CompilerServices.IDOUtils:.cctor() (FullOpts)
+; Total bytes of code 288, prolog size 16, PerfScore 53.50, instruction count 72, allocated bytes for code 288 (MethodHash=236b3a75) for method Microsoft.VisualBasic.CompilerServices.IDOUtils:.cctor() (FullOpts)
; ============================================================ -8 (-3.08 % of base) - System.ComponentModel.Composition.Registration.PartBuilder:.cctor() ; Assembly listing for method System.ComponentModel.Composition.Registration.PartBuilder:.cctor() (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; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
;# V00 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V01 tmp1 [V01,T00] ( 8, 14 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Attribute]>
+; V01 tmp1 [V01,T00] ( 8, 14 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Attribute]>
; V02 tmp2 [V02,T02] ( 3, 4 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.ImportingConstructorAttribute>
; V03 tmp3 [V03,T05] ( 3, 2.50) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Attribute[]>
; V04 tmp4 [V04,T03] ( 4, 3 ) int -> x22 "Inline stloc first use temp"
; V05 cse0 [V05,T04] ( 3, 3 ) ref -> x21 "CSE #02: aggressive"
-; V06 cse1 [V06,T01] ( 4, 4 ) long -> x20 "CSE #03: aggressive"
+; V06 cse1 [V06,T06] ( 3, 2 ) long -> x19 "CSE #01: aggressive"
+; V07 cse2 [V07,T01] ( 4, 4 ) long -> x19 "CSE #03: aggressive"
;
; Lcl frame size = 0
G_M24732_IG01:
stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
mov fp, sp
;; size=16 bbWeight=1 PerfScore 3.50
G_M24732_IG02:
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ movz x19, #0xD1FFAB1E
+ movk x19, #0xD1FFAB1E LSL #16
+ movk x19, #0xD1FFAB1E LSL #32
+ mov x0, x19
bl CORINFO_HELP_NEWSFAST
- mov x19, x0
+ mov x20, x0
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbz w0, #0, G_M24732_IG08
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=44 bbWeight=1 PerfScore 9.00
G_M24732_IG03:
- movz x20, #0xD1FFAB1E // data for System.Collections.Generic.List`1[System.Attribute]:s_emptyArray
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- ldr x21, [x20]
- add x14, x19, #8
+ movz x19, #0xD1FFAB1E // data for System.Collections.Generic.List`1[System.Attribute]:s_emptyArray
+ movk x19, #0xD1FFAB1E LSL #32
+ ldr x21, [x19]
+ add x14, x20, #8
mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x2, x0
- ldp w22, w0, [x19, #0x10]
+ ldp w22, w0, [x20, #0x10]
add w0, w0, #1
- str w0, [x19, #0x14]
+ str w0, [x20, #0x14]
mov x0, x21
ldr w1, [x0, #0x08]
cmp w1, w22
bls G_M24732_IG05
- ;; size=76 bbWeight=1 PerfScore 19.00
+ ;; size=72 bbWeight=1 PerfScore 18.50
G_M24732_IG04:
add w1, w22, #1
- str w1, [x19, #0x10]
+ str w1, [x20, #0x10]
sxtw x1, w22
movz x3, #0xD1FFAB1E // code for CORINFO_HELP_ARRADDR_ST
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
b G_M24732_IG06
;; size=36 bbWeight=0.50 PerfScore 4.25
G_M24732_IG05:
- mov x0, x19
+ mov x0, x20
mov x1, x2
movz x2, #0xD1FFAB1E // code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
;; size=28 bbWeight=0.50 PerfScore 3.25
G_M24732_IG06:
- add x14, x20, #16
- mov x15, x19
+ add x14, x19, #16
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- str x0, [x20, #0x18]
+ str x0, [x19, #0x18]
;; size=28 bbWeight=1 PerfScore 4.50
G_M24732_IG07:
ldp x21, x22, [sp, #0x20]
ldp x19, x20, [sp, #0x10]
ldp fp, lr, [sp], #0x30
ret lr
;; size=16 bbWeight=1 PerfScore 4.00
G_M24732_IG08:
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x19
bl CORINFO_HELP_GET_GCSTATIC_BASE
b G_M24732_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 16, PerfScore 47.00, instruction count 65, allocated bytes for code 260 (MethodHash=574e9f63) for method System.ComponentModel.Composition.Registration.PartBuilder:.cctor() (FullOpts)
+; Total bytes of code 252, prolog size 16, PerfScore 47.00, instruction count 63, allocated bytes for code 252 (MethodHash=574e9f63) for method System.ComponentModel.Composition.Registration.PartBuilder:.cctor() (FullOpts)
; ============================================================ -8 (-6.67 % of base) - System.SR:get_ResourceManager():System.Resources.ResourceManager ; Assembly listing for method System.SR:get_ResourceManager():System.Resources.ResourceManager (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 OutArgs [V00 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V01 tmp1 [V01,T01] ( 2, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Resources.ResourceManager>
; V02 tmp2 [V02,T02] ( 4, 3.50) ref -> x0
; V03 tmp3 [V03,T00] ( 4, 4 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Resources.ResourceManager>
;
; Lcl frame size = 8
G_M50404_IG01:
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
;; size=12 bbWeight=1 PerfScore 2.50
G_M50404_IG02:
movz x0, #0xD1FFAB1E // data for System.SR:s_resourceManager
- movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
cbnz x0, G_M50404_IG04
- ;; size=20 bbWeight=1 PerfScore 5.50
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M50404_IG03:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x19, x0
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for System.Resources.ResourceManager:.ctor(System.Type):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
movz x14, #0xD1FFAB1E // data for System.SR:s_resourceManager
- movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
mov x15, x19
bl CORINFO_HELP_ASSIGN_REF
mov x0, x19
- ;; size=76 bbWeight=0.50 PerfScore 6.75
+ ;; size=72 bbWeight=0.50 PerfScore 6.50
G_M50404_IG04:
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=1 PerfScore 4.00
-; Total bytes of code 120, prolog size 12, PerfScore 18.75, instruction count 30, allocated bytes for code 120 (MethodHash=91843b1b) for method System.SR:get_ResourceManager():System.Resources.ResourceManager (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 18.00, instruction count 28, allocated bytes for code 112 (MethodHash=91843b1b) for method System.SR:get_ResourceManager():System.Resources.ResourceManager (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/5021d0e17e56010aeb395142913c3766 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 15 minutes 42 seconds.
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: