Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide whitespace changes
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Text styles
Change appearance
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
Untitled Diff
Created
5 years ago
Diff never expires
Clear
Export
Share
Explain
64 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
196 lines
Copy
31 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
179 lines
Copy
; 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]
Copy
Copied
Copy
Copied
mov x1, #16
add x1, x4,
#16
add x1, x4,
x1
str q16, [x0, x1]
str q16, [x0, x1]
Copy
Copied
Copy
Copied
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
Copy
Copied
Copy
Copied
;; 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
Copy
Copied
Copy
Copied
movn x1, #15
sub
x1, x2,
#16
add
x1, x2,
x1
str q16, [x0, x1]
str q16, [x0, x1]
Copy
Copied
Copy
Copied
;; 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]
Copy
Copied
Copy
Copied
mov x6, #4
add x6, x5,
#4
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
Copy
Copied
Copy
Copied
mov x6, #8
add x6, x5,
#8
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
Copy
Copied
Copy
Copied
mov x6, #12
add x6, x5,
#12
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
Copy
Copied
Copy
Copied
mov x6, #16
add x6, x5,
#16
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
Copy
Copied
Copy
Copied
mov x6, #20
add x6, x5,
#20
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
Copy
Copied
Copy
Copied
mov x6, #24
add x6, x5,
#24
add x6, x5,
x6
str w2, [x0, x6]
str w2, [x0, x6]
Copy
Copied
Copy
Copied
mov x6, #28
add x5, x5,
#28
add x5, x5,
x6
str w2, [x0, x5]
str w2, [x0, x5]
Copy
Copied
Copy
Copied
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
Copy
Copied
Copy
Copied
;; 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]
Copy
Copied
Copy
Copied
mov x5, #4
add x5, x4,
#4
add x5, x4,
x5
str w2, [x0, x5]
str w2, [x0, x5]
Copy
Copied
Copy
Copied
mov x5, #8
add x5, x4,
#8
add x5, x4,
x5
str w2, [x0, x5]
str w2, [x0, x5]
Copy
Copied
Copy
Copied
mov x5, #12
add x4, x4,
#12
add x4, x4,
x5
str w2, [x0, x4]
str w2, [x0, x4]
Copy
Copied
Copy
Copied
mov x4, #4
add x3, x3,
#
4
add x3, x3,
x
4
;; 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]
Copy
Copied
Copy
Copied
mov x5, #4
add x4, x4,
#4
add x4, x4,
x5
str w2, [x0, x4]
str w2, [x0, x4]
Copy
Copied
Copy
Copied
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
Copy
Copied
Copy
Copied
; 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
Copy
Copied
Copy
Copied
Function Length :
83
(0x000
53
) Actual length =
332
(0x0001
4c
)
Function Length :
66
(0x000
42
) Actual length =
264
(0x0001
08
)
---- 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
Saved diffs
Original text
Open file
; Assembly listing for method System.SpanHelpers:Fill(byref,long,int) ; Emitting BLENDED_CODE for generic ARM64 CPU - Unix ; ReadyToRun compilation ; optimized code ; fp based frame ; fully interruptible ; No matching PGO data ; 0 inlinees with PGO data; 43 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 18, 38 ) byref -> x0 single-def ; V01 arg1 [V01,T07] ( 10, 6.50) long -> x1 single-def ; V02 arg2 [V02,T01] ( 18, 38 ) int -> x2 single-def ; V03 loc0 [V03,T04] ( 12, 20 ) long -> x3 ; 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 ; V06 loc3 [V06,T06] ( 5, 9.50) byref -> x0 single-def ; V07 loc4 [V07,T11] ( 4, 2 ) long -> x2 ; V08 loc5 [V08,T08] ( 2, 4.50) long -> x3 ; V09 loc6 [V09,T03] ( 7, 21 ) long -> x4 ;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ; V11 loc8 [V11,T09] ( 2, 4.50) long -> x4 ;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace" ; V13 tmp1 [V13,T05] ( 2, 16 ) long -> x3 "dup spill" ;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp" ;* V15 tmp3 [V15 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ; V16 tmp4 [V16,T16] ( 2, 2 ) simd16 -> d16 HFA(simd16) "NewObj constructor temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ;* 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" ;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp9 [V21 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> 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" ;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp14 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) long -> 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" ;* V30 tmp18 [V30 ] ( 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" ;* V33 tmp21 [V33 ] ( 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" ;* V36 tmp24 [V36 ] ( 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" ;* V39 tmp27 [V39 ] ( 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" ; V42 cse1 [V42,T10] ( 5, 2.50) long -> x4 "CSE - moderate" ; V43 cse2 [V43,T12] ( 3, 1.50) long -> x4 "CSE - moderate" ; ; Lcl frame size = 0 G_M55887_IG01: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp,#-16]! mov fp, sp ;; bbWeight=1 PerfScore 1.50 G_M55887_IG02: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] cmp x1, #4 blo G_M55887_IG08 ;; bbWeight=1 PerfScore 1.50 G_M55887_IG03: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz dup v16.4s, w2 lsl x2, x1, #2 and x3, x2, #-32 mov x4, xzr cmp x1, #8 blo G_M55887_IG05 ;; bbWeight=0.50 PerfScore 2.75 G_M55887_IG04: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz str q16, [x0, x4] mov x1, #16 add x1, x4, x1 str q16, [x0, x1] mov x1, #32 add x4, x4, x1 cmp x4, x3 blo G_M55887_IG04 ;; bbWeight=4 PerfScore 22.00 G_M55887_IG05: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w2, #4, G_M55887_IG06 str q16, [x0, x4] ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG06: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref movn x1, #15 add x1, x2, x1 str q16, [x0, x1] ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG07: ; , epilog, nogc, extend ldp fp, lr, [sp],#16 ret lr ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG08: ; gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz mov x3, xzr cmp x1, #8 blo G_M55887_IG10 and x4, x1, #-8 ;; bbWeight=0.50 PerfScore 1.25 G_M55887_IG09: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz lsl x5, x3, #2 str w2, [x0, x5] mov x6, #4 add x6, x5, x6 str w2, [x0, x6] mov x6, #8 add x6, x5, x6 str w2, [x0, x6] mov x6, #12 add x6, x5, x6 str w2, [x0, x6] mov x6, #16 add x6, x5, x6 str w2, [x0, x6] mov x6, #20 add x6, x5, x6 str w2, [x0, x6] mov x6, #24 add x6, x5, x6 str w2, [x0, x6] mov x6, #28 add x5, x5, x6 str w2, [x0, x5] mov x5, #8 add x3, x3, x5 cmp x3, x4 blo G_M55887_IG09 ;; bbWeight=4 PerfScore 74.00 G_M55887_IG10: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #2, G_M55887_IG11 lsl x4, x3, #2 str w2, [x0, x4] mov x5, #4 add x5, x4, x5 str w2, [x0, x5] mov x5, #8 add x5, x4, x5 str w2, [x0, x5] mov x5, #12 add x4, x4, x5 str w2, [x0, x4] mov x4, #4 add x3, x3, x4 ;; bbWeight=0.50 PerfScore 5.00 G_M55887_IG11: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #1, G_M55887_IG12 lsl x4, x3, #2 str w2, [x0, x4] mov x5, #4 add x4, x4, x5 str w2, [x0, x4] mov x4, #2 add x3, x3, x4 ;; bbWeight=0.50 PerfScore 3.00 G_M55887_IG12: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #0, G_M55887_IG13 lsl x1, x3, #2 str w2, [x0, x1] ;; bbWeight=0.50 PerfScore 1.50 G_M55887_IG13: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp],#16 ret lr ;; 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) ; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1 Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0 Function Length : 83 (0x00053) Actual length = 332 (0x00014c) ---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01) ---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01) ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]! E4 end E4 end
Changed text
Open file
; Assembly listing for method System.SpanHelpers:Fill(byref,long,int) ; Emitting BLENDED_CODE for generic ARM64 CPU - Unix ; ReadyToRun compilation ; optimized code ; fp based frame ; fully interruptible ; No matching PGO data ; 0 inlinees with PGO data; 43 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 18, 38 ) byref -> x0 single-def ; V01 arg1 [V01,T07] ( 10, 6.50) long -> x1 single-def ; V02 arg2 [V02,T01] ( 18, 38 ) int -> x2 single-def ; V03 loc0 [V03,T04] ( 12, 20 ) long -> x3 ; 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 ; V06 loc3 [V06,T06] ( 5, 9.50) byref -> x0 single-def ; V07 loc4 [V07,T11] ( 4, 2 ) long -> x2 ; V08 loc5 [V08,T08] ( 2, 4.50) long -> x3 ; V09 loc6 [V09,T03] ( 7, 21 ) long -> x4 ;* V10 loc7 [V10 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ; V11 loc8 [V11,T09] ( 2, 4.50) long -> x4 ;# V12 OutArgs [V12 ] ( 1, 1 ) lclBlk ( 0) [sp+00H] "OutgoingArgSpace" ; V13 tmp1 [V13,T05] ( 2, 16 ) long -> x3 "dup spill" ;* V14 tmp2 [V14 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "NewObj constructor temp" ;* V15 tmp3 [V15 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ; V16 tmp4 [V16,T16] ( 2, 2 ) simd16 -> d16 HFA(simd16) "NewObj constructor temp" ;* V17 tmp5 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ;* 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" ;* V20 tmp8 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V21 tmp9 [V21 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V22 tmp10 [V22 ] ( 0, 0 ) long -> 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" ;* V25 tmp13 [V25 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V26 tmp14 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inlining Arg" ;* V27 tmp15 [V27 ] ( 0, 0 ) long -> 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" ;* V30 tmp18 [V30 ] ( 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" ;* V33 tmp21 [V33 ] ( 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" ;* V36 tmp24 [V36 ] ( 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" ;* V39 tmp27 [V39 ] ( 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" ; V42 cse1 [V42,T10] ( 5, 2.50) long -> x4 "CSE - moderate" ; V43 cse2 [V43,T12] ( 3, 1.50) long -> x4 "CSE - moderate" ; ; Lcl frame size = 0 G_M55887_IG01: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp,#-16]! mov fp, sp ;; bbWeight=1 PerfScore 1.50 G_M55887_IG02: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs +[x0] cmp x1, #4 blo G_M55887_IG08 ;; bbWeight=1 PerfScore 1.50 G_M55887_IG03: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz dup v16.4s, w2 lsl x2, x1, #2 and x3, x2, #-32 mov x4, xzr cmp x1, #8 blo G_M55887_IG05 ;; bbWeight=0.50 PerfScore 2.75 G_M55887_IG04: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz str q16, [x0, x4] add x1, x4, #16 str q16, [x0, x1] add x4, x4, #32 cmp x4, x3 blo G_M55887_IG04 ;; bbWeight=4 PerfScore 18.00 G_M55887_IG05: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w2, #4, G_M55887_IG06 str q16, [x0, x4] ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG06: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref sub x1, x2, #16 str q16, [x0, x1] ;; bbWeight=0.50 PerfScore 0.75 G_M55887_IG07: ; , epilog, nogc, extend ldp fp, lr, [sp],#16 ret lr ;; bbWeight=0.50 PerfScore 1.00 G_M55887_IG08: ; gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz mov x3, xzr cmp x1, #8 blo G_M55887_IG10 and x4, x1, #-8 ;; bbWeight=0.50 PerfScore 1.25 G_M55887_IG09: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz lsl x5, x3, #2 str w2, [x0, x5] add x6, x5, #4 str w2, [x0, x6] add x6, x5, #8 str w2, [x0, x6] add x6, x5, #12 str w2, [x0, x6] add x6, x5, #16 str w2, [x0, x6] add x6, x5, #20 str w2, [x0, x6] add x6, x5, #24 str w2, [x0, x6] add x5, x5, #28 str w2, [x0, x5] add x3, x3, #8 cmp x3, x4 blo G_M55887_IG09 ;; bbWeight=4 PerfScore 58.00 G_M55887_IG10: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #2, G_M55887_IG11 lsl x4, x3, #2 str w2, [x0, x4] add x5, x4, #4 str w2, [x0, x5] add x5, x4, #8 str w2, [x0, x5] add x4, x4, #12 str w2, [x0, x4] add x3, x3, #4 ;; bbWeight=0.50 PerfScore 4.00 G_M55887_IG11: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #1, G_M55887_IG12 lsl x4, x3, #2 str w2, [x0, x4] add x4, x4, #4 str w2, [x0, x4] add x3, x3, #2 ;; bbWeight=0.50 PerfScore 2.50 G_M55887_IG12: ; gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz tbz w1, #0, G_M55887_IG13 lsl x1, x3, #2 str w2, [x0, x1] ;; bbWeight=0.50 PerfScore 1.50 G_M55887_IG13: ; gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ; byrRegs -[x0] ldp fp, lr, [sp],#16 ret lr ;; bbWeight=0.50 PerfScore 1.00 ; 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: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1 Epilog Count : 2 E bit : 0 X bit : 0 Vers : 0 Function Length : 66 (0x00042) Actual length = 264 (0x000108) ---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01) ---- Scope 1 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) Epilog Start Index : 1 (0x01) ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]! E4 end E4 end
Find difference