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] JIT: Use faster mod for uint16 values #948
Comments
Top method regressions36 (3.90 % of base) - Microsoft.VisualBasic.CompilerServices.VB6RandomFile:OpenFile():this ; Assembly listing for method Microsoft.VisualBasic.CompilerServices.VB6RandomFile:OpenFile():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; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 30, 24 ) ref -> [fp+0x18] this class-hnd EH-live single-def <Microsoft.VisualBasic.CompilerServices.VB6RandomFile>
-; V01 loc0 [V01,T08] ( 6, 4 ) int -> [fp+0x24] do-not-enreg[M] EH-live
+; V00 this [V00,T00] ( 30, 24 ) ref -> [fp+0x10] this class-hnd EH-live single-def <Microsoft.VisualBasic.CompilerServices.VB6RandomFile>
+; V01 loc0 [V01,T08] ( 6, 4 ) int -> [fp+0x1C] do-not-enreg[M] EH-live
; V02 loc1 [V02,T06] ( 5, 5 ) ref -> x19 class-hnd single-def <System.IO.FileStream>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.StackOverflowException>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.OutOfMemoryException>
;* V05 loc4 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.StackOverflowException>
;* V06 loc5 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.OutOfMemoryException>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T01] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.IO.StreamWriter>
; V09 tmp2 [V09,T02] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.IO.BinaryWriter>
-; V10 tmp3 [V10,T03] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.IO.BinaryReader>
+; V10 tmp3 [V10,T03] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.IO.BinaryReader>
; V11 tmp4 [V11,T04] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <System.IO.StreamReader>
;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Exception>
;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <System.Exception>
-; V14 tmp7 [V14,T11] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.OutOfMemoryException>
-; V15 tmp8 [V15,T12] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.StackOverflowException>
-; V16 tmp9 [V16,T13] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.OutOfMemoryException>
-; V17 tmp10 [V17,T14] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.StackOverflowException>
+; V14 tmp7 [V14,T12] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.OutOfMemoryException>
+; V15 tmp8 [V15,T13] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.StackOverflowException>
+; V16 tmp9 [V16,T14] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.OutOfMemoryException>
+; V17 tmp10 [V17,T15] ( 2, 0 ) ref -> x0 class-hnd single-def "impSpillSpecialSideEff" <System.StackOverflowException>
;* V18 tmp11 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Encoding>
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Encoding>
;* V20 tmp13 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Encoding>
;* V21 tmp14 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.Encoding>
; V22 tmp15 [V22,T05] ( 3, 6 ) ref -> x2 single-def "argument with side effect"
; V23 cse0 [V23,T09] ( 3, 3 ) int -> x1 "CSE #02: aggressive"
; V24 cse1 [V24,T10] ( 3, 3 ) int -> x1 "CSE #04: aggressive"
; V25 cse2 [V25,T07] ( 5, 5 ) int -> x2 multi-def "CSE #01: aggressive"
-; V26 rat0 [V26 ] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V26 cse3 [V26,T11] ( 3, 3 ) long -> x20 "CSE #05: aggressive"
+; V27 rat0 [V27 ] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 32
+; Lcl frame size = 24
G_M12809_IG01:
stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
+ stp x19, x20, [sp, #0x28]
+ str x21, [sp, #0x38]
mov fp, sp
add x1, sp, #64
- str x1, [fp, #0x28] // [V26 rat0]
- str x0, [fp, #0x18] // [V00 this]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ str x1, [fp, #0x20] // [V27 rat0]
+ str x0, [fp, #0x10] // [V00 this]
+ ;; size=28 bbWeight=1 PerfScore 6.00
G_M12809_IG02:
ldr x0, [x0, #0x08]
movz x1, #0xD1FFAB1E // code for System.IO.File:Exists(System.String):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
cbnz w0, G_M12809_IG03
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
ldr w2, [x0, #0x60]
mov w1, #2
mov w3, #4
cmp w2, #1
csel w2, w1, w3, ne
- str w2, [fp, #0x24] // [V01 loc0]
+ str w2, [fp, #0x1C] // [V01 loc0]
b G_M12809_IG04
;; size=60 bbWeight=1 PerfScore 18.50
G_M12809_IG03:
mov w2, #3
- str w2, [fp, #0x24] // [V01 loc0]
+ str w2, [fp, #0x1C] // [V01 loc0]
;; size=8 bbWeight=1 PerfScore 1.50
G_M12809_IG04:
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
ldr w2, [x0, #0x60]
cmn w2, #1
beq G_M12809_IG05
- ldr w1, [fp, #0x24] // [V01 loc0]
+ ldr w1, [fp, #0x1C] // [V01 loc0]
movz x3, #0xD1FFAB1E // code for Microsoft.VisualBasic.CompilerServices.VB6RandomFile:OpenFileHelper(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
b G_M12809_IG07
;; size=44 bbWeight=1 PerfScore 15.00
G_M12809_IG05:
mov w2, #3
str w2, [x0, #0x60]
;; size=8 bbWeight=1 PerfScore 1.50
G_M12809_IG06:
ldr w2, [x0, #0x60]
- ldr w1, [fp, #0x24] // [V01 loc0]
+ ldr w1, [fp, #0x1C] // [V01 loc0]
movz x3, #0xD1FFAB1E // code for Microsoft.VisualBasic.CompilerServices.VB6RandomFile:OpenFileHelper(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
;; size=28 bbWeight=1 PerfScore 10.50
G_M12809_IG07:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldapr w0, [x0]
tbz w0, #0, G_M12809_IG13
;; size=20 bbWeight=1 PerfScore 5.50
G_M12809_IG08:
movz x14, #0xD1FFAB1E // data for System.Text.Encoding:s_defaultEncoding
movk x14, #0xD1FFAB1E LSL #16
movk x14, #0xD1FFAB1E LSL #32
ldr x15, [x14]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
add x14, x0, #56
bl CORINFO_HELP_ASSIGN_REF
ldr x19, [x0, #0x10]
ldr w1, [x0, #0x60]
cmp w1, #2
beq G_M12809_IG09
cmp w1, #3
bne G_M12809_IG10
;; size=52 bbWeight=1 PerfScore 17.00
G_M12809_IG09:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x20, x0
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
ldr x2, [x0, #0x38]
mov x0, x20
mov x1, x19
mov w3, #0xD1FFAB1E
mov w4, wzr
movz x5, #0xD1FFAB1E // code for System.IO.StreamWriter:.ctor(System.IO.Stream,System.Text.Encoding,int,ubyte):this
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
add x14, x0, #24
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
ldr x2, [x0, #0x18]
mov x0, x2
mov w1, #1
ldr x2, [x2]
ldr x2, [x2, #0x80]
ldr x2, [x2, #0x28]
blr x2
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x20, x0
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
ldr x2, [x0, #0x38]
mov x0, x20
mov x1, x19
mov w3, wzr
movz x4, #0xD1FFAB1E // code for System.IO.BinaryWriter:.ctor(System.IO.Stream,System.Text.Encoding,ubyte):this
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
add x14, x0, #40
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
;; size=184 bbWeight=1 PerfScore 52.50
G_M12809_IG10:
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
ldr w1, [x0, #0x60]
cmp w1, #1
beq G_M12809_IG11
cmp w1, #3
bne G_M12809_IG12
;; size=24 bbWeight=1 PerfScore 8.00
G_M12809_IG11:
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ movz x20, #0xD1FFAB1E
+ movk x20, #0xD1FFAB1E LSL #16
+ movk x20, #0xD1FFAB1E LSL #32
+ add x0, x20, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
- mov x20, x0
- ldr x0, [fp, #0x18] // [V00 this]
+ mov x21, x0
+ ldr x0, [fp, #0x10] // [V00 this]
ldr x2, [x0, #0x38]
- mov x0, x20
+ mov x0, x21
mov x1, x19
mov w3, wzr
movz x4, #0xD1FFAB1E // code for System.IO.BinaryReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte):this
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
add x14, x0, #48
- mov x15, x20
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
ldr x1, [x0]
ldr x1, [x1, #0x50]
ldr x1, [x1, #0x28]
blr x1
cmp w0, #32
bne G_M12809_IG12
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ mov x0, x20
bl CORINFO_HELP_NEWSFAST
mov x20, x0
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
ldr x2, [x0, #0x38]
mov x0, x20
mov x1, x19
mov w3, wzr
mov w4, #128
mov w5, wzr
movz x6, #0xD1FFAB1E // code for System.IO.StreamReader:.ctor(System.IO.Stream,System.Text.Encoding,ubyte,int,ubyte):this
movk x6, #0xD1FFAB1E LSL #16
movk x6, #0xD1FFAB1E LSL #32
ldr x6, [x6]
blr x6
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
add x14, x0, #32
mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- ;; size=184 bbWeight=1 PerfScore 50.50
+ ;; size=180 bbWeight=1 PerfScore 50.00
G_M12809_IG12:
- ldp x19, x20, [sp, #0x30]
+ ldr x21, [sp, #0x38]
+ ldp x19, x20, [sp, #0x28]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=12 bbWeight=1 PerfScore 3.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
G_M12809_IG13:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for CORINFO_HELP_GET_GCSTATIC_BASE
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
b G_M12809_IG08
;; size=36 bbWeight=0 PerfScore 0.00
G_M12809_IG14:
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
add x3, fp, #64
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M12809_IG15:
bl CORINFO_HELP_THROW
brk #0
;; size=8 bbWeight=0 PerfScore 0.00
G_M12809_IG16:
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
add x3, fp, #64
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M12809_IG17:
bl CORINFO_HELP_THROW
brk #0
;; size=8 bbWeight=0 PerfScore 0.00
G_M12809_IG18:
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
add x3, fp, #64
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M12809_IG19:
bl CORINFO_HELP_THROW
brk #0
;; size=8 bbWeight=0 PerfScore 0.00
G_M12809_IG20:
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
add x3, fp, #64
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M12809_IG21:
bl CORINFO_HELP_THROW
brk #0
;; size=8 bbWeight=0 PerfScore 0.00
G_M12809_IG22:
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
add x3, fp, #64
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M12809_IG23:
mov w2, #1
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
str w2, [x0, #0x60]
ldr w2, [x0, #0x60]
- ldr w1, [fp, #0x24] // [V01 loc0]
+ ldr w1, [fp, #0x1C] // [V01 loc0]
movz x3, #0xD1FFAB1E // code for Microsoft.VisualBasic.CompilerServices.VB6RandomFile:OpenFileHelper(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
adr x0, [G_M12809_IG28]
;; size=44 bbWeight=0 PerfScore 0.00
G_M12809_IG24:
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
G_M12809_IG25:
stp fp, lr, [sp, #-0x30]!
- stp x19, x20, [sp, #0x20]
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
add x3, fp, #64
- str x3, [sp, #0x18]
- ;; size=16 bbWeight=0 PerfScore 0.00
+ str x3, [sp, #0x10]
+ ;; size=20 bbWeight=0 PerfScore 0.00
G_M12809_IG26:
mov w2, #2
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [fp, #0x10] // [V00 this]
str w2, [x0, #0x60]
;; size=12 bbWeight=0 PerfScore 0.00
G_M12809_IG27:
ldr w2, [x0, #0x60]
- ldr w1, [fp, #0x24] // [V01 loc0]
+ ldr w1, [fp, #0x1C] // [V01 loc0]
movz x3, #0xD1FFAB1E // code for Microsoft.VisualBasic.CompilerServices.VB6RandomFile:OpenFileHelper(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
;; size=28 bbWeight=0 PerfScore 0.00
G_M12809_IG28:
adr x0, [G_M12809_IG07]
;; size=4 bbWeight=0 PerfScore 0.00
G_M12809_IG29:
- ldp x19, x20, [sp, #0x20]
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 924, prolog size 24, PerfScore 188.50, instruction count 231, allocated bytes for code 924 (MethodHash=6330cdf6) for method Microsoft.VisualBasic.CompilerServices.VB6RandomFile:OpenFile():this (FullOpts)
+; Total bytes of code 960, prolog size 28, PerfScore 191.00, instruction count 240, allocated bytes for code 960 (MethodHash=6330cdf6) for method Microsoft.VisualBasic.CompilerServices.VB6RandomFile:OpenFile():this (FullOpts)
; ============================================================ 32 (2.12 % of base) - Markdig.Extensions.MediaLinks.HostProviderBuilder:Yandex(System.Uri):System.String ; Assembly listing for method Markdig.Extensions.MediaLinks.HostProviderBuilder:Yandex(System.Uri):System.String (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; 11 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T03] ( 5, 5 ) ref -> x19 class-hnd single-def <System.Uri>
+; V00 arg0 [V00,T02] ( 5, 5 ) ref -> x19 class-hnd single-def <System.Uri>
;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
; V05 loc4 [V05 ] ( 22, 11 ) struct (40) [fp+0x38] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T00] ( 5, 10 ) ref -> x19 class-hnd exact single-def "dup spill" <System.String[]>
; V08 tmp2 [V08,T33] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.InvalidOperationException>
-; V09 tmp3 [V09,T08] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V09 tmp3 [V09,T07] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
; V10 tmp4 [V10 ] ( 2, 4 ) ushort -> [fp+0x34] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V12 tmp6 [V12,T04] ( 4, 7 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V12 tmp6 [V12,T03] ( 4, 7 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V13 tmp7 [V13 ] ( 2, 1 ) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V14 tmp8 [V14,T16] ( 6, 2.50) ref -> x22 class-hnd "Inline return value spill temp" <System.String>
; V15 tmp9 [V15,T12] ( 4, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.String]>
-; V16 tmp10 [V16,T05] ( 4, 7 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V16 tmp10 [V16,T04] ( 4, 7 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V17 tmp11 [V17 ] ( 2, 1 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V18 tmp12 [V18,T18] ( 4, 2 ) ref -> x23 class-hnd "Inline return value spill temp" <System.String>
; V19 tmp13 [V19,T13] ( 4, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.String]>
-; V20 tmp14 [V20,T06] ( 4, 7 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V20 tmp14 [V20,T05] ( 4, 7 ) ref -> x21 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V21 tmp15 [V21 ] ( 2, 1 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
; V22 tmp16 [V22,T17] ( 6, 2 ) ref -> x24 class-hnd "Inline return value spill temp" <System.String>
; V23 tmp17 [V23,T14] ( 4, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.String]>
-; V24 tmp18 [V24,T07] ( 4, 7 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+; V24 tmp18 [V24,T06] ( 4, 7 ) ref -> x19 class-hnd single-def "Inlining Arg" <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V25 tmp19 [V25 ] ( 2, 1 ) ubyte -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V26 tmp20 [V26,T19] ( 4, 2 ) ref -> x21 class-hnd "Inline return value spill temp" <System.String>
+; V26 tmp20 [V26,T19] ( 4, 2 ) ref -> x20 class-hnd "Inline return value spill temp" <System.String>
; V27 tmp21 [V27,T15] ( 4, 3 ) ref -> x0 class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.String]>
;* V28 tmp22 [V28 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V29 tmp23 [V29 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V30 tmp24 [V30 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
;* V31 tmp25 [V31 ] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V32 tmp26 [V32 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V33 tmp27 [V33,T09] ( 4, 4 ) int -> x0 "Inlining Arg"
;* V34 tmp28 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V35 tmp29 [V35,T02] ( 7, 7 ) byref -> x19 single-def "Inlining Arg"
+; V35 tmp29 [V35,T01] ( 7, 7 ) byref -> x19 single-def "Inlining Arg"
; V36 tmp30 [V36,T22] ( 2, 2 ) int -> x0 "Inlining Arg"
;* V37 tmp31 [V37,T30] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V38 tmp32 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V39 tmp33 [V39 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V40 tmp34 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V41 tmp35 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V42 tmp36 [V42,T10] ( 4, 4 ) int -> x0 "Inlining Arg"
;* V43 tmp37 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V44 tmp38 [V44,T20] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
; V45 tmp39 [V45,T23] ( 2, 2 ) int -> x0 "Inlining Arg"
;* V46 tmp40 [V46,T31] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V47 tmp41 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V48 tmp42 [V48 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V49 tmp43 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V50 tmp44 [V50 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V51 tmp45 [V51,T11] ( 4, 4 ) int -> x0 "Inlining Arg"
;* V52 tmp46 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V53 tmp47 [V53,T21] ( 2, 2 ) byref -> x19 single-def "Inlining Arg"
; V54 tmp48 [V54,T24] ( 2, 2 ) int -> x0 "Inlining Arg"
;* V55 tmp49 [V55,T32] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V56 tmp50 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V57 tmp51 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V58 tmp52 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V59 tmp53 [V59,T28] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP
;* V60 tmp54 [V60,T29] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V61 tmp55 [V61 ] ( 0, 0 ) byref -> zero-ref "field V32._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp56 [V62 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
;* V63 tmp57 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "field V34._reference (fldOffset=0x0)" P-INDEP
;* V64 tmp58 [V64 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V65 tmp59 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "field V38._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp60 [V66 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
;* V67 tmp61 [V67 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp62 [V68 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V69 tmp63 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp64 [V70 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V71 tmp65 [V71 ] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp66 [V72 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V73 tmp67 [V73 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp68 [V74 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP
;* V75 tmp69 [V75 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp70 [V76 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
;* V77 tmp71 [V77 ] ( 0, 0 ) byref -> zero-ref single-def "field V56._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp72 [V78 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
; V79 tmp73 [V79,T34] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V80 cse0 [V80,T01] ( 9, 7 ) long -> x20 "CSE #01: aggressive"
-; V81 cse1 [V81,T25] ( 3, 1.50) int -> x1 "CSE #02: moderate"
-; V82 cse2 [V82,T26] ( 3, 1.50) int -> x1 "CSE #04: moderate"
-; V83 cse3 [V83,T27] ( 3, 1.50) int -> x1 "CSE #06: moderate"
+; V80 cse0 [V80,T08] ( 5, 5 ) long -> x20 "CSE #01: aggressive"
+; V81 cse1 [V81,T25] ( 3, 1.50) int -> x1 "CSE #03: moderate"
+; V82 cse2 [V82,T26] ( 3, 1.50) int -> x1 "CSE #05: moderate"
+; V83 cse3 [V83,T27] ( 3, 1.50) int -> x1 "CSE #07: moderate"
;
; Lcl frame size = 80
G_M45571_IG01:
stp fp, lr, [sp, #-0x90]!
stp x19, x20, [sp, #0x60]
stp x21, x22, [sp, #0x70]
stp x23, x24, [sp, #0x80]
mov fp, sp
add x9, fp, #56
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
mov x19, x0
;; size=40 bbWeight=1 PerfScore 8.00
G_M45571_IG02:
ldrsb wzr, [x19]
mov x0, x19
movz x1, #0xD1FFAB1E // code for System.Uri:get_DisablePathAndQueryCanonicalization():ubyte:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
cbnz w0, G_M45571_IG32
mov x0, x19
mov w1, #16
mov w2, #2
movz x3, #0xD1FFAB1E // code for System.Uri:InternalGetComponents(int,int):System.String:this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
mov w1, #47
strh w1, [fp, #0x34] // [V10 tmp4]
ldrsb wzr, [x0]
add x1, fp, #52 // [V10 tmp4]
mov w2, #1
movn w3, #0xD1FFAB1E LSL #16
mov w4, wzr
movz x5, #0xD1FFAB1E // code for System.String:SplitInternal(System.ReadOnlySpan`1[ushort],int,int):System.String[]:this
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
mov x19, x0
mov x1, x19
movz x20, #0xD1FFAB1E
movk x20, #0xD1FFAB1E LSL #16
movk x20, #0xD1FFAB1E LSL #32
- add x0, x20, #0xD1FFAB1E
+ mov x0, x20
mov w2, wzr
movz x3, #0xD1FFAB1E // code for System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
mov x21, x0
cbz x21, G_M45571_IG31
mov x1, x21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFCLASS
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
cbz x0, G_M45571_IG04
;; size=208 bbWeight=1 PerfScore 48.00
G_M45571_IG03:
add x1, fp, #40 // [V13 tmp7]
ldr x2, [x0]
ldr x2, [x2, #0x48]
ldr x2, [x2, #0x10]
blr x2
mov x22, x0
b G_M45571_IG05
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M45571_IG04:
add x2, fp, #40 // [V13 tmp7]
mov x1, x21
- mov x0, x20
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x3, #0xD1FFAB1E // code for System.Linq.Enumerable:TryGetFirstNonIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
mov x22, x0
- ;; size=36 bbWeight=0.50 PerfScore 3.75
+ ;; size=44 bbWeight=0.50 PerfScore 4.25
G_M45571_IG05:
mov x1, x19
- add x0, x20, #0xD1FFAB1E
+ mov x0, x20
mov w2, #1
movz x3, #0xD1FFAB1E // code for System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
mov x21, x0
cbz x21, G_M45571_IG31
mov x1, x21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFCLASS
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
cbz x0, G_M45571_IG07
;; size=80 bbWeight=1 PerfScore 17.00
G_M45571_IG06:
add x1, fp, #32 // [V17 tmp11]
ldr x2, [x0]
ldr x2, [x2, #0x48]
ldr x2, [x2, #0x10]
blr x2
mov x23, x0
b G_M45571_IG08
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M45571_IG07:
add x2, fp, #32 // [V17 tmp11]
mov x1, x21
- mov x0, x20
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x3, #0xD1FFAB1E // code for System.Linq.Enumerable:TryGetFirstNonIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
mov x23, x0
- ;; size=36 bbWeight=0.50 PerfScore 3.75
+ ;; size=44 bbWeight=0.50 PerfScore 4.25
G_M45571_IG08:
mov x1, x19
- add x0, x20, #0xD1FFAB1E
+ mov x0, x20
mov w2, #2
movz x3, #0xD1FFAB1E // code for System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
mov x21, x0
cbz x21, G_M45571_IG31
mov x1, x21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFCLASS
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
cbz x0, G_M45571_IG10
;; size=80 bbWeight=1 PerfScore 17.00
G_M45571_IG09:
add x1, fp, #24 // [V21 tmp15]
ldr x2, [x0]
ldr x2, [x2, #0x48]
ldr x2, [x2, #0x10]
blr x2
mov x24, x0
b G_M45571_IG11
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M45571_IG10:
add x2, fp, #24 // [V21 tmp15]
mov x1, x21
- mov x0, x20
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x3, #0xD1FFAB1E // code for System.Linq.Enumerable:TryGetFirstNonIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
mov x24, x0
- ;; size=36 bbWeight=0.50 PerfScore 3.75
+ ;; size=44 bbWeight=0.50 PerfScore 4.25
G_M45571_IG11:
mov x1, x19
- add x0, x20, #0xD1FFAB1E
+ mov x0, x20
mov w2, #3
movz x3, #0xD1FFAB1E // code for System.Linq.Enumerable:Skip[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):System.Collections.Generic.IEnumerable`1[System.__Canon]
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
mov x19, x0
cbz x19, G_M45571_IG31
mov x1, x19
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for CORINFO_HELP_ISINSTANCEOFCLASS
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
cbz x0, G_M45571_IG13
;; size=80 bbWeight=1 PerfScore 17.00
G_M45571_IG12:
add x1, fp, #16 // [V25 tmp19]
ldr x2, [x0]
ldr x2, [x2, #0x48]
ldr x2, [x2, #0x10]
blr x2
- mov x21, x0
+ mov x20, x0
b G_M45571_IG14
;; size=28 bbWeight=0.50 PerfScore 6.00
G_M45571_IG13:
add x2, fp, #16 // [V25 tmp19]
mov x1, x19
- mov x0, x20
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
movz x3, #0xD1FFAB1E // code for System.Linq.Enumerable:TryGetFirstNonIterator[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- mov x21, x0
- ;; size=36 bbWeight=0.50 PerfScore 3.75
+ mov x20, x0
+ ;; size=44 bbWeight=0.50 PerfScore 4.25
G_M45571_IG14:
cbz x22, G_M45571_IG29
;; size=4 bbWeight=1 PerfScore 1.00
G_M45571_IG15:
ldr w0, [x22, #0x08]
cmp w0, #5
bne G_M45571_IG29
;; size=12 bbWeight=0.25 PerfScore 1.12
G_M45571_IG16:
ldr x0, [x22, #0x0C]
movz x1, #97
movk x1, #108 LSL #16
movk x1, #98 LSL #32
movk x1, #117 LSL #48
eor x0, x0, x1
ldrh w1, [x22, #0x14]
mov w2, #109
eor w1, w1, w2
mov w1, w1
orr x0, x0, x1
cbnz x0, G_M45571_IG29
;; size=48 bbWeight=0.12 PerfScore 1.44
G_M45571_IG17:
cbz x23, G_M45571_IG29
cbz x24, G_M45571_IG29
;; size=8 bbWeight=0.50 PerfScore 1.00
G_M45571_IG18:
ldr w0, [x24, #0x08]
cmp w0, #5
bne G_M45571_IG29
;; size=12 bbWeight=0.25 PerfScore 1.12
G_M45571_IG19:
ldr x0, [x24, #0x0C]
movz x1, #116
movk x1, #114 LSL #16
movk x1, #97 LSL #32
movk x1, #99 LSL #48
eor x0, x0, x1
ldrh w1, [x24, #0x14]
mov w2, #107
eor w1, w1, w2
mov w1, w1
orr x0, x0, x1
cbnz x0, G_M45571_IG29
;; size=48 bbWeight=0.12 PerfScore 1.44
G_M45571_IG20:
- cbz x21, G_M45571_IG29
+ cbz x20, G_M45571_IG29
add x0, fp, #56 // [V05 loc4]
mov w1, #40
mov w2, #2
movz x3, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
ldr w0, [fp, #0x48] // [V05 loc4+0x10]
ldr w1, [fp, #0x58] // [V05 loc4+0x20]
cmp w0, w1
bhi G_M45571_IG28
ldr x2, [fp, #0x50] // [V05 loc4+0x18]
ubfiz x3, x0, #1, #32
add x19, x2, x3
sub w0, w1, w0
cmp w0, #38
bhs G_M45571_IG21
add x0, fp, #56 // [V05 loc4]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
b G_M45571_IG22
;; size=116 bbWeight=0.50 PerfScore 13.75
G_M45571_IG21:
ldr q16, [@RWD00]
ldr q17, [@RWD16]
stp q16, q17, [x19]
ldr q16, [@RWD32]
ldr q17, [@RWD48]
stp q16, q17, [x19, #0x20]
movz x0, #116
movk x0, #114 LSL #16
movk x0, #97 LSL #32
movk x0, #99 LSL #48
str x0, [x19, #0x40]
movz w0, #107
movk w0, #47 LSL #16
str w0, [x19, #0x48]
ldr w0, [fp, #0x48] // [V05 loc4+0x10]
add w0, w0, #38
str w0, [fp, #0x48] // [V05 loc4+0x10]
;; size=68 bbWeight=0.50 PerfScore 9.25
G_M45571_IG22:
add x0, fp, #56 // [V05 loc4]
- mov x1, x21
+ mov x1, x20
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
ldr w0, [fp, #0x48] // [V05 loc4+0x10]
ldr w1, [fp, #0x58] // [V05 loc4+0x20]
cmp w0, w1
bhi G_M45571_IG28
ldr x2, [fp, #0x50] // [V05 loc4+0x18]
ubfiz x3, x0, #1, #32
add x19, x2, x3
sub w0, w1, w0
cbnz w0, G_M45571_IG23
add x0, fp, #56 // [V05 loc4]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
b G_M45571_IG24
;; size=104 bbWeight=0.50 PerfScore 12.75
G_M45571_IG23:
mov w0, #47
strh w0, [x19]
ldr w0, [fp, #0x48] // [V05 loc4+0x10]
add w0, w0, #1
str w0, [fp, #0x48] // [V05 loc4+0x10]
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M45571_IG24:
add x0, fp, #56 // [V05 loc4]
mov x1, x23
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
ldr w0, [fp, #0x48] // [V05 loc4+0x10]
ldr w1, [fp, #0x58] // [V05 loc4+0x20]
cmp w0, w1
bhi G_M45571_IG28
ldr x2, [fp, #0x50] // [V05 loc4+0x18]
ubfiz x3, x0, #1, #32
add x19, x2, x3
sub w0, w1, w0
cbnz w0, G_M45571_IG25
add x0, fp, #56 // [V05 loc4]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
b G_M45571_IG26
;; size=104 bbWeight=0.50 PerfScore 12.75
G_M45571_IG25:
mov w0, #47
strh w0, [x19]
ldr w0, [fp, #0x48] // [V05 loc4+0x10]
add w0, w0, #1
str w0, [fp, #0x48] // [V05 loc4+0x10]
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M45571_IG26:
add x0, fp, #56 // [V05 loc4]
movz x1, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:ToStringAndClear():System.String:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
;; size=24 bbWeight=0.50 PerfScore 3.00
G_M45571_IG27:
ldp x23, x24, [sp, #0x80]
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x90
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M45571_IG28:
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
brk #0
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M45571_IG29:
mov x0, xzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M45571_IG30:
ldp x23, x24, [sp, #0x80]
ldp x21, x22, [sp, #0x70]
ldp x19, x20, [sp, #0x60]
ldp fp, lr, [sp], #0x90
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
G_M45571_IG31:
mov w0, #17
movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
brk #0
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M45571_IG32:
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x19, x0
movz x0, #0xD1FFAB1E // code for System.SR:get_net_uri_GetComponentsCalledWhenCanonicalizationDisabled():System.String
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
mov x1, x0
mov x0, x19
movz x2, #0xD1FFAB1E // code for System.InvalidOperationException:.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
RWD00 dq 0070007400740068h, 002F002F003A0073h
RWD16 dq 006900730075006Dh, 00610079002E0063h
RWD32 dq 007800650064006Eh, 002F00750072002Eh
RWD48 dq 0061007200660069h, 0023002F0065006Dh
-; Total bytes of code 1508, prolog size 36, PerfScore 221.62, instruction count 377, allocated bytes for code 1508 (MethodHash=75554dfc) for method Markdig.Extensions.MediaLinks.HostProviderBuilder:Yandex(System.Uri):System.String (FullOpts)
+; Total bytes of code 1540, prolog size 36, PerfScore 223.62, instruction count 385, allocated bytes for code 1540 (MethodHash=75554dfc) for method Markdig.Extensions.MediaLinks.HostProviderBuilder:Yandex(System.Uri):System.String (FullOpts)
; ============================================================ 12 (4.41 % of base) - Markdig.Helpers.CustomArrayPool`1[System.Numerics.Vector`1[float]]:.ctor(int,int,int,int):this ; Assembly listing for method Markdig.Helpers.CustomArrayPool`1[System.Numerics.Vector`1[float]]:.ctor(int,int,int,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; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <Markdig.Helpers.CustomArrayPool`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T06] ( 3, 3 ) int -> x20 single-def
-; V02 arg2 [V02,T07] ( 3, 3 ) int -> x21 single-def
-; V03 arg3 [V03,T08] ( 3, 3 ) int -> x22 single-def
-; V04 arg4 [V04,T09] ( 3, 3 ) int -> x23 single-def
+; V00 this [V00,T00] ( 6, 6 ) ref -> x19 this class-hnd single-def <Markdig.Helpers.CustomArrayPool`1[System.Numerics.Vector`1[float]]>
+; V01 arg1 [V01,T07] ( 3, 3 ) int -> x20 single-def
+; V02 arg2 [V02,T08] ( 3, 3 ) int -> x21 single-def
+; V03 arg3 [V03,T09] ( 3, 3 ) int -> x22 single-def
+; V04 arg4 [V04,T10] ( 3, 3 ) int -> x23 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[System.Numerics.Vector`1[float]]>
-; V07 tmp2 [V07,T03] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[System.Numerics.Vector`1[float]]>
-; V08 tmp3 [V08,T04] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[System.Numerics.Vector`1[float]]>
-; V09 tmp4 [V09,T05] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[System.Numerics.Vector`1[float]]>
-; V10 tmp5 [V10,T10] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <System.Numerics.Vector`1[float][][]>
-; V11 tmp6 [V11,T11] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <System.Numerics.Vector`1[float][][]>
-; V12 tmp7 [V12,T12] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <System.Numerics.Vector`1[float][][]>
-; V13 tmp8 [V13,T13] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <System.Numerics.Vector`1[float][][]>
-; V14 cse0 [V14,T00] ( 9, 9 ) long -> x24 "CSE #01: aggressive"
+; V06 tmp1 [V06,T01] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[System.Numerics.Vector`1[float]]>
+; V07 tmp2 [V07,T02] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[System.Numerics.Vector`1[float]]>
+; V08 tmp3 [V08,T03] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[System.Numerics.Vector`1[float]]>
+; V09 tmp4 [V09,T04] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[System.Numerics.Vector`1[float]]>
+; V10 tmp5 [V10,T11] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <System.Numerics.Vector`1[float][][]>
+; V11 tmp6 [V11,T12] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <System.Numerics.Vector`1[float][][]>
+; V12 tmp7 [V12,T13] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <System.Numerics.Vector`1[float][][]>
+; V13 tmp8 [V13,T14] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <System.Numerics.Vector`1[float][][]>
+; V14 cse0 [V14,T05] ( 5, 5 ) long -> x24 "CSE #01: aggressive"
+; V15 cse1 [V15,T06] ( 5, 5 ) long -> x20 "CSE #02: aggressive"
;
; Lcl frame size = 8
G_M2333_IG01:
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
stp x23, x24, [sp, #0x38]
str x25, [sp, #0x48]
mov fp, sp
mov x19, x0
mov w20, w1
mov w21, w2
mov w22, w3
mov w23, w4
;; size=44 bbWeight=1 PerfScore 8.00
G_M2333_IG02:
movz x24, #0xD1FFAB1E
movk x24, #0xD1FFAB1E LSL #16
movk x24, #0xD1FFAB1E LSL #32
mov x0, x24
bl CORINFO_HELP_NEWSFAST
mov x25, x0
sxtw x1, w20
- add x0, x24, #0xD1FFAB1E
+ movz x20, #0xD1FFAB1E
+ movk x20, #0xD1FFAB1E LSL #16
+ movk x20, #0xD1FFAB1E LSL #32
+ mov x0, x20
bl CORINFO_HELP_NEWARR_1_OBJ
mov x15, x0
add x14, x25, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #8
mov x15, x25
bl CORINFO_HELP_ASSIGN_REF
mov x0, x24
bl CORINFO_HELP_NEWSFAST
- mov x20, x0
+ mov x25, x0
sxtw x1, w21
- add x0, x24, #0xD1FFAB1E
+ mov x0, x20
bl CORINFO_HELP_NEWARR_1_OBJ
mov x15, x0
- add x14, x20, #8
+ add x14, x25, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #16
- mov x15, x20
+ mov x15, x25
bl CORINFO_HELP_ASSIGN_REF
mov x0, x24
bl CORINFO_HELP_NEWSFAST
- mov x20, x0
+ mov x21, x0
sxtw x1, w22
- add x0, x24, #0xD1FFAB1E
+ mov x0, x20
bl CORINFO_HELP_NEWARR_1_OBJ
mov x15, x0
- add x14, x20, #8
+ add x14, x21, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #24
- mov x15, x20
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
mov x0, x24
bl CORINFO_HELP_NEWSFAST
- mov x20, x0
+ mov x21, x0
sxtw x1, w23
- add x0, x24, #0xD1FFAB1E
+ mov x0, x20
bl CORINFO_HELP_NEWARR_1_OBJ
mov x15, x0
- add x14, x20, #8
+ add x14, x21, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #32
- mov x15, x20
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
- ;; size=204 bbWeight=1 PerfScore 33.50
+ ;; size=216 bbWeight=1 PerfScore 35.00
G_M2333_IG03:
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 272, prolog size 24, PerfScore 48.50, instruction count 68, allocated bytes for code 272 (MethodHash=0acef6e2) for method Markdig.Helpers.CustomArrayPool`1[System.Numerics.Vector`1[float]]:.ctor(int,int,int,int):this (FullOpts)
+; Total bytes of code 284, prolog size 24, PerfScore 50.00, instruction count 71, allocated bytes for code 284 (MethodHash=0acef6e2) for method Markdig.Helpers.CustomArrayPool`1[System.Numerics.Vector`1[float]]:.ctor(int,int,int,int):this (FullOpts)
; ============================================================ Larger list of diffs: https://gist.github.com/MihuBot/493541bed3a4ca3ef743235dc413ed11 |
Top method improvements-32 (-3.19 % of base) - Interop+ErrorInfo:ToString():System.String:this ; Assembly listing for method Interop+ErrorInfo:ToString():System.String: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; 16 single block inlinees; 22 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 11, 8 ) byref -> [fp+0x18] this single-def
-; V01 loc0 [V01 ] ( 38, 30 ) struct (40) [fp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
+; V00 this [V00,T00] ( 11, 8 ) byref -> [fp+0x10] this single-def
+; V01 loc0 [V01 ] ( 37, 29.50) struct (40) [fp+0x18] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Buffers.SharedArrayPool`1[ushort]>
; V04 tmp2 [V04,T01] ( 5, 8 ) ref -> x0 class-hnd single-def "dup spill" <ushort[]>
;* V05 tmp3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V07 tmp5 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V09 tmp7 [V09,T02] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V11 tmp9 [V11,T09] ( 3, 4 ) byref -> x21 single-def "Inlining Arg"
+; V11 tmp9 [V11,T09] ( 3, 4 ) byref -> x20 single-def "Inlining Arg"
; V12 tmp10 [V12,T11] ( 2, 4 ) int -> x0 "Inlining Arg"
;* V13 tmp11 [V13,T32] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V14 tmp12 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V15 tmp13 [V15 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V16 tmp14 [V16 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V17 tmp15 [V17,T24] ( 3, 2 ) int -> registers "Inline return value spill temp"
+; V17 tmp15 [V17,T23] ( 3, 2 ) int -> registers "Inline return value spill temp"
; V18 tmp16 [V18,T14] ( 3, 3 ) int -> x19 "dup spill"
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V20 tmp18 [V20 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V21 tmp19 [V21,T03] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V22 tmp20 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V23 tmp21 [V23,T19] ( 2, 3 ) byref -> x21 single-def "Inlining Arg"
+; V23 tmp21 [V23,T19] ( 2, 3 ) byref -> x20 single-def "Inlining Arg"
; V24 tmp22 [V24,T12] ( 2, 4 ) int -> x0 "Inlining Arg"
;* V25 tmp23 [V25,T33] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V26 tmp24 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp26 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp27 [V29 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V30 tmp28 [V30,T04] ( 4, 8 ) int -> x0 "Inlining Arg"
;* V31 tmp29 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V32 tmp30 [V32,T07] ( 4, 5 ) byref -> x21 single-def "Inlining Arg"
+; V32 tmp30 [V32,T07] ( 4, 5 ) byref -> x20 single-def "Inlining Arg"
; V33 tmp31 [V33,T13] ( 2, 4 ) int -> x0 "Inlining Arg"
;* V34 tmp32 [V34,T34] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V35 tmp33 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V36 tmp34 [V36 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V37 tmp35 [V37 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V38 tmp36 [V38,T25] ( 3, 2 ) int -> x19 "Inline return value spill temp"
+; V38 tmp36 [V38,T24] ( 3, 2 ) int -> x19 "Inline return value spill temp"
; V39 tmp37 [V39,T15] ( 3, 3 ) int -> x19 "dup spill"
;* V40 tmp38 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V41 tmp39 [V41,T05] ( 5, 6 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.String>
;* V42 tmp40 [V42 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V43 tmp41 [V43,T08] ( 4, 4 ) int -> x0 "Inlining Arg"
;* V44 tmp42 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V45 tmp43 [V45,T27] ( 2, 2 ) byref -> registers single-def "Inlining Arg"
-; V46 tmp44 [V46,T30] ( 2, 2 ) int -> x0 "Inlining Arg"
+; V45 tmp43 [V45,T26] ( 2, 2 ) byref -> x3 single-def "Inlining Arg"
+; V46 tmp44 [V46,T29] ( 2, 2 ) int -> x0 "Inlining Arg"
;* V47 tmp45 [V47,T35] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V48 tmp46 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V49 tmp47 [V49 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V50 tmp48 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V51 tmp49 [V51 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V52 tmp50 [V52 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
; V53 tmp51 [V53,T10] ( 2, 4 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.String>
;* V54 tmp52 [V54 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
; V55 tmp53 [V55,T06] ( 3, 6 ) int -> x1 "Inlining Arg"
;* V56 tmp54 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V57 tmp55 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V58 tmp56 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V59 tmp57 [V59 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V60 tmp58 [V60 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V61 tmp59 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V62 tmp60 [V62,T20] ( 3, 2.50) ref -> x1 class-hnd single-def "Inline stloc first use temp" <ushort[]>
-; V63 tmp61 [V63,T23] ( 3, 2 ) byref -> x1 "field V07._reference (fldOffset=0x0)" P-INDEP
-; V64 tmp62 [V64,T26] ( 3, 2 ) int -> x0 "field V07._length (fldOffset=0x8)" P-INDEP
+; V63 tmp61 [V63,T22] ( 3, 2 ) byref -> x1 "field V07._reference (fldOffset=0x0)" P-INDEP
+; V64 tmp62 [V64,T25] ( 3, 2 ) int -> x0 "field V07._length (fldOffset=0x8)" P-INDEP
;* V65 tmp63 [V65 ] ( 0, 0 ) byref -> zero-ref "field V08._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp64 [V66 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V67 tmp65 [V67 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V68 tmp66 [V68 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V69 tmp67 [V69 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp68 [V70 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V71 tmp69 [V71 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp70 [V72 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP
;* V73 tmp71 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp72 [V74 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V75 tmp73 [V75 ] ( 0, 0 ) byref -> zero-ref single-def "field V26._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp74 [V76 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP
;* V77 tmp75 [V77 ] ( 0, 0 ) byref -> zero-ref "field V29._reference (fldOffset=0x0)" P-INDEP
;* V78 tmp76 [V78 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP
;* V79 tmp77 [V79 ] ( 0, 0 ) byref -> zero-ref single-def "field V31._reference (fldOffset=0x0)" P-INDEP
;* V80 tmp78 [V80 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
;* V81 tmp79 [V81 ] ( 0, 0 ) byref -> zero-ref single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp80 [V82 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V83 tmp81 [V83 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V84 tmp82 [V84 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
;* V85 tmp83 [V85 ] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
;* V86 tmp84 [V86 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
;* V87 tmp85 [V87 ] ( 0, 0 ) byref -> zero-ref single-def "field V48._reference (fldOffset=0x0)" P-INDEP
;* V88 tmp86 [V88 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
;* V89 tmp87 [V89 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp88 [V90 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
;* V91 tmp89 [V91 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp90 [V92 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
-; V93 tmp91 [V93,T28] ( 2, 2 ) byref -> x0 single-def "field V56._reference (fldOffset=0x0)" P-INDEP
+; V93 tmp91 [V93,T27] ( 2, 2 ) byref -> x0 single-def "field V56._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp92 [V94 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
;* V95 tmp93 [V95 ] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp94 [V96 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-; V97 tmp95 [V97,T29] ( 2, 2 ) byref -> x0 single-def "field V59._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp96 [V98,T31] ( 2, 2 ) int -> x1 "field V59._length (fldOffset=0x8)" P-INDEP
-; V99 cse0 [V99,T21] ( 3, 2.50) ref -> [fp+0x10] spill-single-def "CSE #12: moderate"
-; V100 cse1 [V100,T22] ( 4, 2 ) int -> x19 "CSE #10: moderate"
-; V101 cse2 [V101,T16] ( 3, 3 ) int -> x1 "CSE #01: moderate"
-; V102 cse3 [V102,T17] ( 3, 3 ) int -> x1 "CSE #04: moderate"
-; V103 cse4 [V103,T18] ( 3, 3 ) int -> x1 "CSE #06: moderate"
+; V97 tmp95 [V97,T28] ( 2, 2 ) byref -> x0 single-def "field V59._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp96 [V98,T30] ( 2, 2 ) int -> x1 "field V59._length (fldOffset=0x8)" P-INDEP
+; V99 cse0 [V99,T21] ( 4, 2 ) int -> x19 "CSE #10: moderate"
+; V100 cse1 [V100,T16] ( 3, 3 ) int -> x1 "CSE #01: moderate"
+; V101 cse2 [V101,T17] ( 3, 3 ) int -> x1 "CSE #04: moderate"
+; V102 cse3 [V102,T18] ( 3, 3 ) int -> x1 "CSE #06: moderate"
+; V103 cse4 [V103,T31] ( 3, 1.50) int -> x2 "CSE #09: moderate"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M34609_IG01:
- stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x48]
- str x21, [sp, #0x58]
+ stp fp, lr, [sp, #-0x50]!
+ stp x19, x20, [sp, #0x40]
mov fp, sp
- add x9, fp, #32
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
str xzr, [x9, #0x20]
mov x19, x0
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.00
G_M34609_IG02:
movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
- ldr x20, [x0]
- str x20, [fp, #0x10] // [V99 cse0]
- mov x0, x20
+ ldr x0, [x0]
mov w1, #0xD1FFAB1E
movz x2, #0xD1FFAB1E // code for System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- str x0, [fp, #0x28] // [V01 loc0+0x08]
+ str x0, [fp, #0x20] // [V01 loc0+0x08]
cbz x0, G_M34609_IG04
- ;; size=56 bbWeight=1 PerfScore 14.00
+ ;; size=44 bbWeight=1 PerfScore 12.00
G_M34609_IG03:
- ldr x20, [fp, #0x10] // [V99 cse0]
add x1, x0, #16
ldr w0, [x0, #0x08]
b G_M34609_IG05
- ;; size=16 bbWeight=0.50 PerfScore 3.25
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
G_M34609_IG04:
- ldr x20, [fp, #0x10] // [V99 cse0]
mov x1, xzr
mov w0, wzr
- ;; size=12 bbWeight=0.50 PerfScore 1.50
+ ;; size=8 bbWeight=0.50 PerfScore 0.50
G_M34609_IG05:
- str x1, [fp, #0x38] // [V01 loc0+0x18]
- str w0, [fp, #0x40] // [V01 loc0+0x20]
- str wzr, [fp, #0x30] // [V01 loc0+0x10]
- strb wzr, [fp, #0x34] // [V01 loc0+0x14]
- ldr w0, [fp, #0x30] // [V01 loc0+0x10]
- ldr w1, [fp, #0x40] // [V01 loc0+0x20]
+ str x1, [fp, #0x30] // [V01 loc0+0x18]
+ str w0, [fp, #0x38] // [V01 loc0+0x20]
+ str wzr, [fp, #0x28] // [V01 loc0+0x10]
+ strb wzr, [fp, #0x2C] // [V01 loc0+0x14]
+ ldr w0, [fp, #0x28] // [V01 loc0+0x10]
+ ldr w1, [fp, #0x38] // [V01 loc0+0x20]
cmp w0, w1
bhi G_M34609_IG30
- ldr x2, [fp, #0x38] // [V01 loc0+0x18]
+ ldr x2, [fp, #0x30] // [V01 loc0+0x18]
ubfiz x3, x0, #1, #32
- add x21, x2, x3
+ add x20, x2, x3
sub w0, w1, w0
cmp w0, #10
bhs G_M34609_IG07
;; size=56 bbWeight=1 PerfScore 15.00
G_M34609_IG06:
- add x0, fp, #32 // [V01 loc0]
+ add x0, fp, #24 // [V01 loc0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
b G_M34609_IG08
;; size=40 bbWeight=0.50 PerfScore 4.25
G_M34609_IG07:
ldr q16, [@RWD00]
- str q16, [x21]
+ str q16, [x20]
movz w0, #58
movk w0, #32 LSL #16
- str w0, [x21, #0x10]
- ldr w0, [fp, #0x30] // [V01 loc0+0x10]
+ str w0, [x20, #0x10]
+ ldr w0, [fp, #0x28] // [V01 loc0+0x10]
add w0, w0, #10
- str w0, [fp, #0x30] // [V01 loc0+0x10]
+ str w0, [fp, #0x28] // [V01 loc0+0x10]
;; size=32 bbWeight=0.50 PerfScore 4.25
G_M34609_IG08:
ldr w0, [x19, #0x04]
cmn w0, #1
bne G_M34609_IG11
;; size=12 bbWeight=1 PerfScore 4.50
G_M34609_IG09:
- str x19, [fp, #0x18] // [V00 this]
+ str x19, [fp, #0x10] // [V00 this]
ldr w0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
;; size=20 bbWeight=0.50 PerfScore 2.75
G_M34609_IG10:
blr x1
sxtw w19, w0
- ldr x20, [fp, #0x18] // [V00 this]
+ ldr x20, [fp, #0x10] // [V00 this]
str w19, [x20, #0x04]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
cbnz w0, G_M34609_IG31
- mov w21, w19
+ mov w1, w19
mov x19, x20
- ldr x20, [fp, #0x10] // [V99 cse0]
+ mov w20, w1
b G_M34609_IG12
- ;; size=52 bbWeight=0.50 PerfScore 7.00
+ ;; size=52 bbWeight=0.50 PerfScore 6.25
G_M34609_IG11:
ldr w0, [x19, #0x04]
- sxtw w21, w0
+ sxtw w20, w0
;; size=8 bbWeight=0.50 PerfScore 1.75
G_M34609_IG12:
- add x0, fp, #32 // [V01 loc0]
- mov w1, w21
+ add x0, fp, #24 // [V01 loc0]
+ mov w1, w20
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ldr w0, [fp, #0x30] // [V01 loc0+0x10]
- ldr w1, [fp, #0x40] // [V01 loc0+0x20]
+ ldr w0, [fp, #0x28] // [V01 loc0+0x10]
+ ldr w1, [fp, #0x38] // [V01 loc0+0x20]
cmp w0, w1
bhi G_M34609_IG30
- ldr x2, [fp, #0x38] // [V01 loc0+0x18]
+ ldr x2, [fp, #0x30] // [V01 loc0+0x18]
ubfiz x3, x0, #1, #32
- add x21, x2, x3
+ add x20, x2, x3
sub w0, w1, w0
cmp w0, #8
bhs G_M34609_IG14
;; size=68 bbWeight=1 PerfScore 17.50
G_M34609_IG13:
- add x0, fp, #32 // [V01 loc0]
+ add x0, fp, #24 // [V01 loc0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
b G_M34609_IG15
;; size=40 bbWeight=0.50 PerfScore 4.25
G_M34609_IG14:
ldr q16, [@RWD16]
- str q16, [x21]
- ldr w1, [fp, #0x30] // [V01 loc0+0x10]
+ str q16, [x20]
+ ldr w1, [fp, #0x28] // [V01 loc0+0x10]
add w1, w1, #8
- str w1, [fp, #0x30] // [V01 loc0+0x10]
+ str w1, [fp, #0x28] // [V01 loc0+0x10]
;; size=20 bbWeight=0.50 PerfScore 3.25
G_M34609_IG15:
ldr w1, [x19]
- add x0, fp, #32 // [V01 loc0]
+ add x0, fp, #24 // [V01 loc0]
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ldr w0, [fp, #0x30] // [V01 loc0+0x10]
- ldr w1, [fp, #0x40] // [V01 loc0+0x20]
+ ldr w0, [fp, #0x28] // [V01 loc0+0x10]
+ ldr w1, [fp, #0x38] // [V01 loc0+0x20]
cmp w0, w1
bhi G_M34609_IG30
- ldr x2, [fp, #0x38] // [V01 loc0+0x18]
+ ldr x2, [fp, #0x30] // [V01 loc0+0x18]
ubfiz x3, x0, #1, #32
- add x21, x2, x3
+ add x20, x2, x3
sub w0, w1, w0
cmp w0, #18
bhs G_M34609_IG17
;; size=68 bbWeight=1 PerfScore 20.00
G_M34609_IG16:
- add x0, fp, #32 // [V01 loc0]
+ add x0, fp, #24 // [V01 loc0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowThenCopyString(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
b G_M34609_IG18
;; size=40 bbWeight=0.50 PerfScore 4.25
G_M34609_IG17:
ldr q16, [@RWD32]
ldr q17, [@RWD48]
- stp q16, q17, [x21]
+ stp q16, q17, [x20]
movz w0, #58
movk w0, #32 LSL #16
- str w0, [x21, #0x20]
- ldr w0, [fp, #0x30] // [V01 loc0+0x10]
+ str w0, [x20, #0x20]
+ ldr w0, [fp, #0x28] // [V01 loc0+0x10]
add w0, w0, #18
- str w0, [fp, #0x30] // [V01 loc0+0x10]
+ str w0, [fp, #0x28] // [V01 loc0+0x10]
;; size=36 bbWeight=0.50 PerfScore 5.25
G_M34609_IG18:
ldr w0, [x19, #0x04]
cmn w0, #1
bne G_M34609_IG21
;; size=12 bbWeight=1 PerfScore 4.50
G_M34609_IG19:
- str x19, [fp, #0x18] // [V00 this]
+ str x19, [fp, #0x10] // [V00 this]
ldr w0, [x19]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
;; size=20 bbWeight=0.50 PerfScore 2.75
G_M34609_IG20:
blr x1
sxtw w19, w0
- ldr x20, [fp, #0x18] // [V00 this]
+ ldr x20, [fp, #0x10] // [V00 this]
str w19, [x20, #0x04]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr w0, [x0]
- cbnz w0, G_M34609_IG32
- ldr x20, [fp, #0x10] // [V99 cse0]
- b G_M34609_IG22
- ;; size=44 bbWeight=0.50 PerfScore 6.50
+ cbz w0, G_M34609_IG22
+ b G_M34609_IG32
+ ;; size=40 bbWeight=0.50 PerfScore 5.50
G_M34609_IG21:
ldr w19, [x19, #0x04]
;; size=4 bbWeight=0.50 PerfScore 1.50
G_M34609_IG22:
mov w0, w19
movz x1, #0xD1FFAB1E // code for Interop+Sys:StrError(int):System.String
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
mov x1, x0
- ldrb w0, [fp, #0x34] // [V01 loc0+0x14]
+ ldrb w0, [fp, #0x2C] // [V01 loc0+0x14]
cbnz w0, G_M34609_IG24
;; size=36 bbWeight=1 PerfScore 9.50
G_M34609_IG23:
cbz x1, G_M34609_IG24
- ldr w0, [fp, #0x30] // [V01 loc0+0x10]
- ldr w2, [fp, #0x40] // [V01 loc0+0x20]
+ ldr w0, [fp, #0x28] // [V01 loc0+0x10]
+ ldr w2, [fp, #0x38] // [V01 loc0+0x20]
cmp w0, w2
bhi G_M34609_IG30
- ldr x2, [fp, #0x38] // [V01 loc0+0x18]
- ubfiz x3, x0, #1, #32
- add x2, x2, x3
- ldr w3, [fp, #0x40] // [V01 loc0+0x20]
- sub w0, w3, w0
+ ldr x3, [fp, #0x30] // [V01 loc0+0x18]
+ ubfiz x4, x0, #1, #32
+ add x3, x3, x4
+ sub w0, w2, w0
ldr w19, [x1, #0x08]
cmp w19, w0
bls G_M34609_IG25
- ;; size=52 bbWeight=0.50 PerfScore 8.50
+ ;; size=48 bbWeight=0.50 PerfScore 7.50
G_M34609_IG24:
- add x0, fp, #32 // [V01 loc0]
+ add x0, fp, #24 // [V01 loc0]
movz x2, #0xD1FFAB1E // code for System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormattedSlow(System.String):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
b G_M34609_IG26
;; size=28 bbWeight=0.50 PerfScore 3.50
G_M34609_IG25:
- mov x0, x2
ubfiz x2, x19, #1, #32
add x1, x1, #12
+ mov x0, x3
movz x3, #0xD1FFAB1E // code for System.SpanHelpers:Memmove(byref,byref,ulong)
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ldr w0, [fp, #0x30] // [V01 loc0+0x10]
+ ldr w0, [fp, #0x28] // [V01 loc0+0x10]
add w0, w0, w19
- str w0, [fp, #0x30] // [V01 loc0+0x10]
+ str w0, [fp, #0x28] // [V01 loc0+0x10]
;; size=44 bbWeight=0.50 PerfScore 5.50
G_M34609_IG26:
- ldr w1, [fp, #0x30] // [V01 loc0+0x10]
- ldr w0, [fp, #0x40] // [V01 loc0+0x20]
+ ldr w1, [fp, #0x28] // [V01 loc0+0x10]
+ ldr w0, [fp, #0x38] // [V01 loc0+0x20]
cmp w1, w0
bhi G_M34609_IG30
- ldr x0, [fp, #0x38] // [V01 loc0+0x18]
+ ldr x0, [fp, #0x30] // [V01 loc0+0x18]
bl System.String:.ctor(System.ReadOnlySpan`1[ushort]):this
mov x19, x0
- ldr x1, [fp, #0x28] // [V01 loc0+0x08]
- stp xzr, xzr, [fp, #0x20]
- stp xzr, xzr, [fp, #0x30]
- str xzr, [fp, #0x40]
+ ldr x1, [fp, #0x20] // [V01 loc0+0x08]
+ stp xzr, xzr, [fp, #0x18]
+ stp xzr, xzr, [fp, #0x28]
+ str xzr, [fp, #0x38]
cbz x1, G_M34609_IG28
;; size=48 bbWeight=1 PerfScore 15.00
G_M34609_IG27:
- mov x0, x20
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #32
+ ldr x0, [x0]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ ;; size=36 bbWeight=0.50 PerfScore 5.00
G_M34609_IG28:
mov x0, x19
;; size=4 bbWeight=1 PerfScore 0.50
G_M34609_IG29:
- ldr x21, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
- ldp fp, lr, [sp], #0x60
+ ldp x19, x20, [sp, #0x40]
+ ldp fp, lr, [sp], #0x50
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=12 bbWeight=1 PerfScore 3.00
G_M34609_IG30:
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
ldr x0, [x0]
blr x0
brk #0
;; size=24 bbWeight=0.50 PerfScore 3.25
G_M34609_IG31:
bl CORINFO_HELP_POLL_GC
- mov w21, w19
+ mov w0, w19
mov x19, x20
- ldr x20, [fp, #0x10] // [V99 cse0]
+ mov w20, w0
b G_M34609_IG12
;; size=20 bbWeight=0 PerfScore 0.00
G_M34609_IG32:
bl CORINFO_HELP_POLL_GC
- ldr x20, [fp, #0x10] // [V99 cse0]
b G_M34609_IG22
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
RWD00 dq 0045007700610052h, 006F006E00720072h
RWD16 dq 0072007200450020h, 0020003A0072006Fh
RWD32 dq 0074006500470020h, 006F007200720045h
RWD48 dq 00730065004D0072h, 0065006700610073h
-; Total bytes of code 1004, prolog size 32, PerfScore 189.00, instruction count 251, allocated bytes for code 1004 (MethodHash=b7c078ce) for method Interop+ErrorInfo:ToString():System.String:this (FullOpts)
+; Total bytes of code 972, prolog size 28, PerfScore 181.00, instruction count 243, allocated bytes for code 972 (MethodHash=b7c078ce) for method Interop+ErrorInfo:ToString():System.String:this (FullOpts)
; ============================================================ -20 (-2.78 % 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>
+; V02 tmp1 [V02,T01] ( 5, 10 ) ref -> x19 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 "NewArr temp" <double[]>
+; V05 tmp4 [V05,T06] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewArr temp" <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]]>
+; V07 tmp6 [V07,T08] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument]>
+; V08 tmp7 [V08,T09] ( 3, 6 ) ref -> x20 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 -> x21 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"
+; V19 cse0 [V19,T10] ( 5, 5 ) long -> x22 "CSE #02: aggressive"
+; V20 cse1 [V20,T16] ( 4, 3 ) long -> x20 "CSE #01: aggressive"
+; V21 rat0 [V21,T04] ( 4, 7 ) ref -> x15 "replacement local"
+; V22 rat1 [V22,T17] ( 3, 2 ) long -> x2 "CSE for expectedClsNode"
;
; Lcl frame size = 0
G_M58946_IG01:
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x30]!
stp x19, x20, [sp, #0x10]
stp x21, x22, [sp, #0x20]
- stp x23, x24, [sp, #0x30]
- stp x25, x26, [sp, #0x40]
mov fp, sp
- ;; size=24 bbWeight=1 PerfScore 5.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M58946_IG02:
- movz x19, #0xD1FFAB1E
- movk x19, #0xD1FFAB1E LSL #16
- movk x19, #0xD1FFAB1E LSL #32
- add x0, x19, #0xD1FFAB1E
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
- mov x20, x0
- movz x21, #0xD1FFAB1E
- movk x21, #0xD1FFAB1E LSL #16
- movk x21, #0xD1FFAB1E LSL #32
- mov x0, x21
+ mov x19, x0
+ movz x20, #0xD1FFAB1E
+ movk x20, #0xD1FFAB1E LSL #16
+ movk x20, #0xD1FFAB1E LSL #32
+ mov x0, x20
bl CORINFO_HELP_NEWSFAST
- mov x22, x0
+ mov x21, 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
+ ;; size=64 bbWeight=1 PerfScore 12.00
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]
- add x14, x22, #8
+ movz x22, #0xD1FFAB1E // data for System.Collections.Generic.List`1[System.Diagnostics.Metrics.Instrument]:s_emptyArray
+ movk x22, #0xD1FFAB1E LSL #16
+ movk x22, #0xD1FFAB1E LSL #32
+ ldr x15, [x22]
+ add x14, x21, #8
bl CORINFO_HELP_ASSIGN_REF
- add x14, x20, #8
- mov x15, x22
+ add x14, x19, #8
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
+ add x0, x20, #0xD1FFAB1E
bl CORINFO_HELP_NEWSFAST
- mov x22, x0
+ mov x20, 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
+ add x14, x19, #16
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- mov x0, x20
+ mov x0, x19
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
- mov x15, x20
+ sub x14, x22, #16
+ mov x15, x19
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]
+ ldr x20, [x22, #-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
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
mov x1, #14
bl CORINFO_HELP_NEWARR_1_VC
- mov x23, x0
+ mov x21, 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, [x21, #0x10]
ldp q16, q17, [x0, #0x20]
- stp q16, q17, [x23, #0x30]
+ stp q16, q17, [x21, #0x30]
ldp q16, q17, [x0, #0x40]
- stp q16, q17, [x23, #0x50]
+ stp q16, q17, [x21, #0x50]
ldr q16, [x0, #0x60]
- str q16, [x23, #0x70]
- add x0, x22, #0xD1FFAB1E
+ str q16, [x21, #0x70]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
mov x1, x0
add x14, x1, #8
- mov x15, x23
+ mov x15, x21
bl CORINFO_HELP_ASSIGN_REF
mov x0, x19
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
+ 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 x21, x0
+ add x14, x21, #8
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
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ str x14, [x21, #0x10]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ str x14, [x21, #0x18]
+ movz x14, #0xD1FFAB1E
+ movk x14, #0xD1FFAB1E LSL #16
+ movk x14, #0xD1FFAB1E LSL #32
+ stp x14, xzr, [x21, #0x20]
+ add x14, x21, #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, [x21, #0x10]
+ ldp x4, x5, [x21, #0x20]
add x14, x6, #8
- mov x15, x23
+ mov x15, x21
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
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=512 bbWeight=1 PerfScore 115.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, x22, #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
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=24 bbWeight=1 PerfScore 6.00
+ ;; size=16 bbWeight=1 PerfScore 4.00
G_M58946_IG07:
- mov x0, x21
+ mov x0, x20
movz x1, #0xD1FFAB1E // code for CORINFO_HELP_GET_GCSTATIC_BASE
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
b G_M58946_IG03
;; size=28 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 720, prolog size 24, PerfScore 139.00, instruction count 180, allocated bytes for code 720 (MethodHash=f77619bd) for method System.Net.NameResolutionMetrics:.cctor() (FullOpts)
+; Total bytes of code 700, prolog size 16, PerfScore 139.00, instruction count 175, allocated bytes for code 700 (MethodHash=f77619bd) for method System.Net.NameResolutionMetrics:.cctor() (FullOpts)
; ============================================================ -12 (-4.23 % of base) - Markdig.Helpers.CustomArrayPool`1[short]:.ctor(int,int,int,int):this ; Assembly listing for method Markdig.Helpers.CustomArrayPool`1[short]:.ctor(int,int,int,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; 9 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 6, 6 ) ref -> x19 this class-hnd single-def <Markdig.Helpers.CustomArrayPool`1[short]>
-; V01 arg1 [V01,T07] ( 3, 3 ) int -> x20 single-def
-; V02 arg2 [V02,T08] ( 3, 3 ) int -> x21 single-def
-; V03 arg3 [V03,T09] ( 3, 3 ) int -> x22 single-def
-; V04 arg4 [V04,T10] ( 3, 3 ) int -> x23 single-def
+; V00 this [V00,T01] ( 6, 6 ) ref -> x19 this class-hnd single-def <Markdig.Helpers.CustomArrayPool`1[short]>
+; V01 arg1 [V01,T06] ( 3, 3 ) int -> x20 single-def
+; V02 arg2 [V02,T07] ( 3, 3 ) int -> x21 single-def
+; V03 arg3 [V03,T08] ( 3, 3 ) int -> x22 single-def
+; V04 arg4 [V04,T09] ( 3, 3 ) int -> x23 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T01] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[short]>
-; V07 tmp2 [V07,T02] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[short]>
-; V08 tmp3 [V08,T03] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[short]>
-; V09 tmp4 [V09,T04] ( 3, 6 ) ref -> x21 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[short]>
-; V10 tmp5 [V10,T11] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <short[][]>
-; V11 tmp6 [V11,T12] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <short[][]>
-; V12 tmp7 [V12,T13] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <short[][]>
-; V13 tmp8 [V13,T14] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <short[][]>
-; V14 cse0 [V14,T05] ( 5, 5 ) long -> x24 "CSE #01: aggressive"
-; V15 cse1 [V15,T06] ( 5, 5 ) long -> x20 "CSE #02: aggressive"
+; V06 tmp1 [V06,T02] ( 3, 6 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[short]>
+; V07 tmp2 [V07,T03] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[short]>
+; V08 tmp3 [V08,T04] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[short]>
+; V09 tmp4 [V09,T05] ( 3, 6 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <Markdig.Helpers.CustomArrayPool`1+Bucket[short]>
+; V10 tmp5 [V10,T10] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <short[][]>
+; V11 tmp6 [V11,T11] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <short[][]>
+; V12 tmp7 [V12,T12] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <short[][]>
+; V13 tmp8 [V13,T13] ( 2, 4 ) ref -> x15 class-hnd exact single-def "NewArr temp" <short[][]>
+; V14 cse0 [V14,T00] ( 9, 9 ) long -> x24 "CSE #01: aggressive"
;
; Lcl frame size = 8
G_M29292_IG01:
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
stp x23, x24, [sp, #0x38]
str x25, [sp, #0x48]
mov fp, sp
mov x19, x0
mov w20, w1
mov w21, w2
mov w22, w3
mov w23, w4
;; size=44 bbWeight=1 PerfScore 8.00
G_M29292_IG02:
movz x24, #0xD1FFAB1E
movk x24, #0xD1FFAB1E LSL #16
movk x24, #0xD1FFAB1E LSL #32
mov x0, x24
bl CORINFO_HELP_NEWSFAST
mov x25, x0
sxtw x1, w20
- movz x20, #0xD1FFAB1E
- movk x20, #0xD1FFAB1E LSL #16
- movk x20, #0xD1FFAB1E LSL #32
- mov x0, x20
+ add x0, x24, #0xD1FFAB1E
bl CORINFO_HELP_NEWARR_1_OBJ
mov x15, x0
add x14, x25, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #8
mov x15, x25
bl CORINFO_HELP_ASSIGN_REF
mov x0, x24
bl CORINFO_HELP_NEWSFAST
- mov x25, x0
+ mov x20, x0
sxtw x1, w21
- mov x0, x20
+ add x0, x24, #0xD1FFAB1E
bl CORINFO_HELP_NEWARR_1_OBJ
mov x15, x0
- add x14, x25, #8
+ add x14, x20, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #16
- mov x15, x25
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
mov x0, x24
bl CORINFO_HELP_NEWSFAST
- mov x21, x0
+ mov x20, x0
sxtw x1, w22
- mov x0, x20
+ add x0, x24, #0xD1FFAB1E
bl CORINFO_HELP_NEWARR_1_OBJ
mov x15, x0
- add x14, x21, #8
+ add x14, x20, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #24
- mov x15, x21
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
mov x0, x24
bl CORINFO_HELP_NEWSFAST
- mov x21, x0
+ mov x20, x0
sxtw x1, w23
- mov x0, x20
+ add x0, x24, #0xD1FFAB1E
bl CORINFO_HELP_NEWARR_1_OBJ
mov x15, x0
- add x14, x21, #8
+ add x14, x20, #8
bl CORINFO_HELP_ASSIGN_REF
add x14, x19, #32
- mov x15, x21
+ mov x15, x20
bl CORINFO_HELP_ASSIGN_REF
- ;; size=216 bbWeight=1 PerfScore 35.00
+ ;; size=204 bbWeight=1 PerfScore 33.50
G_M29292_IG03:
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=1 PerfScore 7.00
-; Total bytes of code 284, prolog size 24, PerfScore 50.00, instruction count 71, allocated bytes for code 284 (MethodHash=20718d93) for method Markdig.Helpers.CustomArrayPool`1[short]:.ctor(int,int,int,int):this (FullOpts)
+; Total bytes of code 272, prolog size 24, PerfScore 48.50, instruction count 68, allocated bytes for code 272 (MethodHash=20718d93) for method Markdig.Helpers.CustomArrayPool`1[short]:.ctor(int,int,int,int):this (FullOpts)
; ============================================================ Larger list of diffs: https://gist.github.com/MihuBot/c062625fc1d2982dc1b8baea12343a6e |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 14 minutes 31 seconds (remote runner delay: 1 minute 19 seconds).
dotnet/runtime#111535
Using arguments:
-arm
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: