Untitled Diff

Created Diff never expires
63 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
196 lines
29 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
179 lines
; Assembly listing for method System.SpanHelpers:Fill(byref,long,int)
; Assembly listing for method System.SpanHelpers:Fill(byref,long,int)
; Emitting BLENDED_CODE for generic ARM64 CPU - Unix
; Emitting BLENDED_CODE for generic ARM64 CPU - Unix
; ReadyToRun compilation
; ReadyToRun compilation
; optimized code
; optimized code
; fp based frame
; fp based frame
; fully interruptible
; fully interruptible
; No matching PGO data
; No matching PGO data
; 0 inlinees with PGO data; 43 single block inlinees; 1 inlinees without PGO data
; 0 inlinees with PGO data; 43 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
; Final local variable assignments
;
;
; V00 arg0 [V00,T00] ( 18, 38 ) byref -> x0 single-def
; V00 arg0 [V00,T00] ( 18, 38 ) byref -> x0 single-def
; V01 arg1 [V01,T07] ( 10, 6.50) long -> x1 single-def
; V01 arg1 [V01,T07] ( 10, 6.50) long -> x1 single-def
; V02 arg2 [V02,T01] ( 18, 38 ) int -> x2 single-def
; V02 arg2 [V02,T01] ( 18, 38 ) int -> x2 single-def
; V03 loc0 [V03,T04] ( 12, 20 ) long -> x3
; V03 loc0 [V03,T04] ( 12, 20 ) long -> x3
; V04 loc1 [V04,T13] ( 2, 1 ) int -> x2 ld-addr-op
; V04 loc1 [V04,T13] ( 2, 1 ) int -> x2 ld-addr-op
; V05 loc2 [V05,T15] ( 5, 9.50) simd16 -> d16 HFA(simd16) ld-addr-op
; V05 loc2 [V05,T15] ( 5, 9.50) simd16 -> d16 HFA(simd16) ld-addr-op
; V06 loc3 [V06,T06] ( 5, 9.50) byref -> x0 single-def
; V06 loc3 [V06,T06] ( 5, 9.50) byref -> x0 single-def
; V07 loc4 [V07,T11] ( 4, 2 ) long -> x2
; V07 loc4 [V07,T11] ( 4, 2 ) long -> x2
; V08 loc5 [V08,T08] ( 2, 4.50) long -> x3
; V08 loc5 [V08,T08] ( 2, 4.50) long -> x3
; V09 loc6 [V09,T03] ( 7, 21 ) long -> x4
; V09 loc6 [V09,T03] ( 7, 21 ) long -> x4
;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
; V11 loc8 [V11,T09] ( 2, 4.50) long -> x4
; V11 loc8 [V11,T09] ( 2, 4.50) long -> x4
;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace"
; V13 tmp1 [V13,T05] ( 2, 16 ) long -> x3 "dup spill"
; V13 tmp1 [V13,T05] ( 2, 16 ) long -> x3 "dup spill"
;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp"
;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp"
;* V15 tmp3 [V15 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
;* V15 tmp3 [V15 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
; V16 tmp4 [V16,T16] ( 2, 2 ) simd16 -> d16 HFA(simd16) "NewObj constructor temp"
; V16 tmp4 [V16,T16] ( 2, 2 ) simd16 -> d16 HFA(simd16) "NewObj constructor temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
;* V17 tmp5 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16)
;* V18 tmp6 [V18 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp"
;* V18 tmp6 [V18 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp"
;* V19 tmp7 [V19,T14] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
;* V19 tmp7 [V19,T14] ( 0, 0 ) bool -> zero-ref "Inline return value spill temp"
;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V21 tmp9 [V21 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V22 tmp10 [V22 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V24 tmp12 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V26 tmp14 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V26 tmp14 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V27 tmp15 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp16 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp16 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp17 [V29 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V29 tmp17 [V29 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg"
;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V30 tmp18 [V30 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V31 tmp19 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V31 tmp19 [V31 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V32 tmp20 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V32 tmp20 [V32 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V33 tmp21 [V33 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp22 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V34 tmp22 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V35 tmp23 [V35 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V36 tmp24 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V36 tmp24 [V36 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V37 tmp25 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V37 tmp25 [V37 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V38 tmp26 [V38 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V39 tmp27 [V39 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
; V41 cse0 [V41,T02] ( 9, 36 ) long -> x5 "CSE - aggressive"
; V41 cse0 [V41,T02] ( 9, 36 ) long -> x5 "CSE - aggressive"
; V42 cse1 [V42,T10] ( 5, 2.50) long -> x4 "CSE - moderate"
; V42 cse1 [V42,T10] ( 5, 2.50) long -> x4 "CSE - moderate"
; V43 cse2 [V43,T12] ( 3, 1.50) long -> x4 "CSE - moderate"
; V43 cse2 [V43,T12] ( 3, 1.50) long -> x4 "CSE - moderate"
;
;
; Lcl frame size = 0
; Lcl frame size = 0


G_M55887_IG01: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
G_M55887_IG01: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp,#-16]!
stp fp, lr, [sp,#-16]!
mov fp, sp
mov fp, sp
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M55887_IG02: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG02: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
; byrRegs +[x0]
cmp x1, #4
cmp x1, #4
blo G_M55887_IG08
blo G_M55887_IG08
;; bbWeight=1 PerfScore 1.50
;; bbWeight=1 PerfScore 1.50
G_M55887_IG03: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG03: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
dup v16.4s, w2
dup v16.4s, w2
lsl x2, x1, #2
lsl x2, x1, #2
and x3, x2, #-32
and x3, x2, #-32
mov x4, xzr
mov x4, xzr
cmp x1, #8
cmp x1, #8
blo G_M55887_IG05
blo G_M55887_IG05
;; bbWeight=0.50 PerfScore 2.75
;; bbWeight=0.50 PerfScore 2.75
G_M55887_IG04: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG04: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
str q16, [x0, x4]
str q16, [x0, x4]
mov x1, #16
add x1, x4, #16
add x1, x4, x1
str q16, [x0, x1]
str q16, [x0, x1]
mov x1, #32
add x4, x4, #32
add x4, x4, x1
cmp x4, x3
cmp x4, x3
blo G_M55887_IG04
blo G_M55887_IG04
;; bbWeight=4 PerfScore 22.00
;; bbWeight=4 PerfScore 18.00
G_M55887_IG05: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG05: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
tbz w2, #4, G_M55887_IG06
tbz w2, #4, G_M55887_IG06
str q16, [x0, x4]
str q16, [x0, x4]
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M55887_IG06: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
G_M55887_IG06: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
movn x1, #15
sub x1, x2, #16
add x1, x2, x1
str q16, [x0, x1]
str q16, [x0, x1]
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 0.75
G_M55887_IG07: ; , epilog, nogc, extend
G_M55887_IG07: ; , epilog, nogc, extend
ldp fp, lr, [sp],#16
ldp fp, lr, [sp],#16
ret lr
ret lr
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00
G_M55887_IG08: ; gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
G_M55887_IG08: ; gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
mov x3, xzr
mov x3, xzr
cmp x1, #8
cmp x1, #8
blo G_M55887_IG10
blo G_M55887_IG10
and x4, x1, #-8
and x4, x1, #-8
;; bbWeight=0.50 PerfScore 1.25
;; bbWeight=0.50 PerfScore 1.25
G_M55887_IG09: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG09: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
lsl x5, x3, #2
lsl x5, x3, #2
str w2, [x0, x5]
str w2, [x0, x5]
mov x6, #4
add x6, x5, #4
add x6, x5, x6
str w2, [x0, x6]
str w2, [x0, x6]
mov x6, #8
add x6, x5, #8
add x6, x5, x6
str w2, [x0, x6]
str w2, [x0, x6]
mov x6, #12
add x6, x5, #12
add x6, x5, x6
str w2, [x0, x6]
str w2, [x0, x6]
mov x6, #16
add x6, x5, #16
add x6, x5, x6
str w2, [x0, x6]
str w2, [x0, x6]
mov x6, #20
add x6, x5, #20
add x6, x5, x6
str w2, [x0, x6]
str w2, [x0, x6]
mov x6, #24
add x6, x5, #24
add x6, x5, x6
str w2, [x0, x6]
str w2, [x0, x6]
mov x6, #28
add x5, x5, #28
add x5, x5, x6
str w2, [x0, x5]
str w2, [x0, x5]
mov x5, #8
add x3, x3, #8
add x3, x3, x5
cmp x3, x4
cmp x3, x4
blo G_M55887_IG09
blo G_M55887_IG09
;; bbWeight=4 PerfScore 74.00
;; bbWeight=4 PerfScore 58.00
G_M55887_IG10: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG10: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
tbz w1, #2, G_M55887_IG11
tbz w1, #2, G_M55887_IG11
lsl x4, x3, #2
lsl x4, x3, #2
str w2, [x0, x4]
str w2, [x0, x4]
mov x5, #4
add x5, x4, #4
add x5, x4, x5
str w2, [x0, x5]
str w2, [x0, x5]
mov x5, #8
add x5, x4, #8
add x5, x4, x5
str w2, [x0, x5]
str w2, [x0, x5]
mov x5, #12
add x4, x4, #12
add x4, x4, x5
str w2, [x0, x4]
str w2, [x0, x4]
mov x4, #4
add x3, x3, #4
add x3, x3, x4
;; bbWeight=0.50 PerfScore 4.00
;; bbWeight=0.50 PerfScore 5.00
G_M55887_IG11: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG11: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
tbz w1, #1, G_M55887_IG12
tbz w1, #1, G_M55887_IG12
lsl x4, x3, #2
lsl x4, x3, #2
str w2, [x0, x4]
str w2, [x0, x4]
mov x5, #4
add x4, x4, #4
add x4, x4, x5
str w2, [x0, x4]
str w2, [x0, x4]
mov x4, #2
add x3, x3, #2
add x3, x3, x4
;; bbWeight=0.50 PerfScore 2.50
;; bbWeight=0.50 PerfScore 3.00
G_M55887_IG12: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
G_M55887_IG12: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
tbz w1, #0, G_M55887_IG13
tbz w1, #0, G_M55887_IG13
lsl x1, x3, #2
lsl x1, x3, #2
str w2, [x0, x1]
str w2, [x0, x1]
;; bbWeight=0.50 PerfScore 1.50
;; bbWeight=0.50 PerfScore 1.50
G_M55887_IG13: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
G_M55887_IG13: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0]
; byrRegs -[x0]
ldp fp, lr, [sp],#16
ldp fp, lr, [sp],#16
ret lr
ret lr
;; bbWeight=0.50 PerfScore 1.00
;; bbWeight=0.50 PerfScore 1.00


; Total bytes of code 332, prolog size 8, PerfScore 149.70, instruction count 83, allocated bytes for code 332 (MethodHash=f08325b0) for method System.SpanHelpers:Fill(byref,long,int)
; Total bytes of code 264, prolog size 8, PerfScore 121.15, instruction count 66, allocated bytes for code 264 (MethodHash=f08325b0) for method System.SpanHelpers:Fill(byref,long,int)
; ============================================================
; ============================================================


Unwind Info:
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
Code Words : 1
Epilog Count : 2
Epilog Count : 2
E bit : 0
E bit : 0
X bit : 0
X bit : 0
Vers : 0
Vers : 0
Function Length : 83 (0x00053) Actual length = 332 (0x00014c)
Function Length : 66 (0x00042) Actual length = 264 (0x000108)
---- Epilog scopes ----
---- Epilog scopes ----
---- Scope 0
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
Epilog Start Index : 1 (0x01)
---- Scope 1
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
Epilog Start Index : 1 (0x01)
---- Unwind codes ----
---- Unwind codes ----
E1 set_fp; mov fp, sp
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
---- Epilog start at index 1 ----
81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
E4 end
E4 end