Diff
checker
Testo
Testo
Immagini
Documenti
Excel
Cartelle
Legal
Enterprise
Applicazione per desktop
Prezzi
Accedi
Scarica Diffchecker Desktop
Confronta il testo
Trova la differenza tra due file di testo
Strumenti
Cronologia
Editor live
Comprimi invariate
Senza a capo
Layout
Diviso
Unificato
Livello di dettaglio
Intelligente
Parola
Carattere
Evidenziazione sintassi
Scegli sintassi
Ignora
Trasforma testo
Vai alla prima modifica
Modifica input
Diffchecker Desktop
Il modo più sicuro per usare Diffchecker. Ottieni l'app Diffchecker Desktop: i tuoi diff non lasciano mai il tuo computer!
Ottieni Desktop
GatherVector
Creato
2 anni fa
Il diff non scade mai
Eliminare
Esporta
Condividere
Spiegare
57 rimozioni
Linee
Totale
Rimosso
Caratteri
Totale
Rimosso
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
189 linee
Copia tutti
65 aggiunte
Linee
Totale
Aggiunto
Caratteri
Totale
Aggiunto
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
194 linee
Copia tutti
; Assembly listing for method JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long:RunBasicScenario_FalseMask():this (Tier0-MinOpts)
; Assembly listing for method JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long:RunBasicScenario_FalseMask():this (Tier0-MinOpts)
; Emitting BLENDED_CODE for generic ARM64 - Windows
; Emitting BLENDED_CODE for generic ARM64 - Windows
; Tier-0 switched MinOpts code
; Tier-0 switched MinOpts code
; fp based frame
; fp based frame
; partially interruptible
; partially interruptible
; method switched to min-opts
; method switched to min-opts
; Final local variable assignments
; Final local variable assignments
;
;
Copia
Copiato
Copia
Copiato
; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x
5
8] do-not-enreg[] this class-hnd <JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long>
; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x
6
8] do-not-enreg[] this class-hnd <JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long>
; V01 loc0 [V01 ] ( 1, 1 ) simd16 -> [fp+0x
4
0] HFA(simd16) do-not-enreg[S] must-init <System.Numerics.Vector`1[ulong]>
; V01 loc0 [V01 ] ( 1, 1 ) simd16 -> [fp+0x
5
0] HFA(simd16) do-not-enreg[S] must-init <System.Numerics.Vector`1[ulong]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
Copia
Copiato
Copia
Copiato
; V03 tmp1 [V03 ] ( 1, 1 ) long -> [fp+0x
3
8] do-not-enreg[] "non-inline candidate call"
; V03 tmp1 [V03 ] ( 1, 1 ) long -> [fp+0x
4
8] do-not-enreg[] "non-inline candidate call"
; V04 tmp2 [V04 ] ( 1, 1 ) long -> [fp+0x
3
0] do-not-enreg[] "non-inline candidate call"
; V04 tmp2 [V04 ] ( 1, 1 ) long -> [fp+0x
4
0] do-not-enreg[] "non-inline candidate call"
; V05 tmp3 [V05 ] ( 1, 1 ) long -> [fp+0x
2
8] do-not-enreg[] "non-inline candidate call"
; V05 tmp3 [V05 ] ( 1, 1 ) long -> [fp+0x
3
8] do-not-enreg[] "non-inline candidate call"
; V06 tmp4 [V06 ] ( 1, 1 ) long -> [fp+0x
2
0] do-not-enreg[] "non-inline candidate call"
; V06 tmp4 [V06 ] ( 1, 1 ) long -> [fp+0x
3
0] do-not-enreg[] "non-inline candidate call"
; V07 tmp5 [V07 ] ( 1, 1 ) long -> [fp+0x
1
8] do-not-enreg[] "argument with side effect"
; V07 tmp5 [V07 ] ( 1, 1 ) long -> [fp+0x
2
8] do-not-enreg[] "argument with side effect"
; TEMP_01 long -> [fp+0x1
0
]
; TEMP_02 mask -> [fp+0x20]
; TEMP_01 long -> [fp+0x1
8
]
;
;
Copia
Copiato
Copia
Copiato
; Lcl frame size =
80
; Lcl frame size =
96
G_M38347_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
G_M38347_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
Copia
Copiato
Copia
Copiato
stp fp, lr, [sp, #-0x
6
0]!
stp fp, lr, [sp, #-0x
7
0]!
mov fp, sp
mov fp, sp
Copia
Copiato
Copia
Copiato
str xzr, [fp, #0x
4
0] // [V01 loc0]
str xzr, [fp, #0x
5
0] // [V01 loc0]
str xzr, [fp, #0x
4
8] // [V01 loc0+0x08]
str xzr, [fp, #0x
5
8] // [V01 loc0+0x08]
str x0, [fp, #0x
5
8] // [V00 this]
str x0, [fp, #0x
6
8] // [V00 this]
;; size=20 bbWeight=1 PerfScore 4.50
;; size=20 bbWeight=1 PerfScore 4.50
G_M38347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M38347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
movk x0, #0xD1FFAB1E LSL #32
movz x1, #0xD1FFAB1E // code for <unknown method>
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr x1, [x1]
blr x1
blr x1
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
; gcrRegs +[x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
ldrsb wzr, [x0]
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
add x0, x0, #88
add x0, x0, #88
; gcrRegs -[x0]
; gcrRegs -[x0]
; byrRegs +[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr x1, [x1]
blr x1
blr x1
; byrRegs -[x0]
; byrRegs -[x0]
Copia
Copiato
Copia
Copiato
str x0, [fp, #0x
3
8] // [V03 tmp1]
str x0, [fp, #0x
4
8] // [V03 tmp1]
pfalse p0.b
pfalse p0.b
mov z16.d, p0/z, #1
mov z16.d, p0/z, #1
ptrue p0.d
ptrue p0.d
cmpne p0.d, p0/z, z16.d, #0
cmpne p0.d, p0/z, z16.d, #0
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
3
8] // [V03 tmp1]
add xip1, fp, #32
str x0, [fp, #0x1
0
] // [TEMP_01]
str p0, [xip1]
ldr x1, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
4
8] // [V03 tmp1]
str x0, [fp, #0x1
8
] // [TEMP_01]
ldr x1, [fp, #0x
6
8] // [V00 this]
; gcrRegs +[x1]
; gcrRegs +[x1]
ldrsb wzr, [x1]
ldrsb wzr, [x1]
Copia
Copiato
Copia
Copiato
ldr x1, [fp, #0x
5
8] // [V00 this]
ldr x1, [fp, #0x
6
8] // [V00 this]
add x0, x1, #88
add x0, x1, #88
; byrRegs +[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movz x1, #0xD1FFAB1E // code for <unknown method>
; gcrRegs -[x1]
; gcrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr x1, [x1]
blr x1
blr x1
; byrRegs -[x0]
; byrRegs -[x0]
ldr q16, [x0]
ldr q16, [x0]
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x1
0
] // [TEMP_01]
add xip1, fp, #32
ldr p0, [xip1]
ldr x0, [fp, #0x1
8
] // [TEMP_01]
ld1sb { z16.d }, p0/z, [x0, z16.d]
ld1sb { z16.d }, p0/z, [x0, z16.d]
Copia
Copiato
Copia
Copiato
str q16, [fp, #0x
4
0] // [V01 loc0]
str q16, [fp, #0x
5
0] // [V01 loc0]
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
; gcrRegs +[x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
ldrsb wzr, [x0]
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
add x0, x0, #88
add x0, x0, #88
; gcrRegs -[x0]
; gcrRegs -[x0]
; byrRegs +[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr x1, [x1]
blr x1
blr x1
; byrRegs -[x0]
; byrRegs -[x0]
Copia
Copiato
Copia
Copiato
ldr q16, [fp, #0x
4
0] // [V01 loc0]
ldr q16, [fp, #0x
5
0] // [V01 loc0]
str q16, [x0]
str q16, [x0]
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
; gcrRegs +[x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
ldrsb wzr, [x0]
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
add x0, x0, #88
add x0, x0, #88
; gcrRegs -[x0]
; gcrRegs -[x0]
; byrRegs +[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr x1, [x1]
blr x1
blr x1
; byrRegs -[x0]
; byrRegs -[x0]
Copia
Copiato
Copia
Copiato
str x0, [fp, #0x
3
0] // [V04 tmp2]
str x0, [fp, #0x
4
0] // [V04 tmp2]
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
; gcrRegs +[x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
ldrsb wzr, [x0]
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
add x0, x0, #88
add x0, x0, #88
; gcrRegs -[x0]
; gcrRegs -[x0]
; byrRegs +[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr x1, [x1]
blr x1
blr x1
; byrRegs -[x0]
; byrRegs -[x0]
Copia
Copiato
Copia
Copiato
str x0, [fp, #0x
2
8] // [V05 tmp3]
str x0, [fp, #0x
3
8] // [V05 tmp3]
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
; gcrRegs +[x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
ldrsb wzr, [x0]
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
add x0, x0, #88
add x0, x0, #88
; gcrRegs -[x0]
; gcrRegs -[x0]
; byrRegs +[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr x1, [x1]
blr x1
blr x1
; byrRegs -[x0]
; byrRegs -[x0]
Copia
Copiato
Copia
Copiato
str x0, [fp, #0x
2
0] // [V06 tmp4]
str x0, [fp, #0x
3
0] // [V06 tmp4]
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
; gcrRegs +[x0]
; gcrRegs +[x0]
ldrsb wzr, [x0]
ldrsb wzr, [x0]
Copia
Copiato
Copia
Copiato
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
add x0, x0, #88
add x0, x0, #88
; gcrRegs -[x0]
; gcrRegs -[x0]
; byrRegs +[x0]
; byrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
ldr x1, [x1]
blr x1
blr x1
; byrRegs -[x0]
; byrRegs -[x0]
Copia
Copiato
Copia
Copiato
str x0, [fp, #0x
1
8] // [V07 tmp5]
str x0, [fp, #0x
2
8] // [V07 tmp5]
ldr x4, [fp, #0x
1
8] // [V07 tmp5]
ldr x4, [fp, #0x
2
8] // [V07 tmp5]
ldr x1, [fp, #0x
3
0] // [V04 tmp2]
ldr x1, [fp, #0x
4
0] // [V04 tmp2]
ldr x2, [fp, #0x
2
8] // [V05 tmp3]
ldr x2, [fp, #0x
3
8] // [V05 tmp3]
ldr x3, [fp, #0x
2
0] // [V06 tmp4]
ldr x3, [fp, #0x
3
0] // [V06 tmp4]
ldr x0, [fp, #0x
5
8] // [V00 this]
ldr x0, [fp, #0x
6
8] // [V00 this]
; gcrRegs +[x0]
; gcrRegs +[x0]
movz x5, #0xD1FFAB1E
movz x5, #0xD1FFAB1E
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
movk x5, #0xD1FFAB1E LSL #32
movz x6, #0xD1FFAB1E // code for <unknown method>
movz x6, #0xD1FFAB1E // code for <unknown method>
movk x6, #0xD1FFAB1E LSL #16
movk x6, #0xD1FFAB1E LSL #16
movk x6, #0xD1FFAB1E LSL #32
movk x6, #0xD1FFAB1E LSL #32
ldr x6, [x6]
ldr x6, [x6]
blr x6
blr x6
; gcrRegs -[x0]
; gcrRegs -[x0]
Copia
Copiato
Copia
Copiato
;; size=4
04
bbWeight=1 PerfScore
149
.00
;; size=4
20
bbWeight=1 PerfScore
157
.00
G_M38347_IG03: ; bbWeight=1, epilog, nogc, extend
G_M38347_IG03: ; bbWeight=1, epilog, nogc, extend
Copia
Copiato
Copia
Copiato
ldp fp, lr, [sp], #0x
6
0
ldp fp, lr, [sp], #0x
7
0
ret lr
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
;; size=8 bbWeight=1 PerfScore 2.00
Copia
Copiato
Copia
Copiato
; Total bytes of code
432
, prolog size 16, PerfScore
155
.50, instruction count
108
, allocated bytes for code
432
(MethodHash=2fef6a34) for method JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long:RunBasicScenario_FalseMask():this (Tier0-MinOpts)
; Total bytes of code
448
, prolog size 16, PerfScore
163
.50, instruction count
112
, allocated bytes for code
448
(MethodHash=2fef6a34) for method JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long:RunBasicScenario_FalseMask():this (Tier0-MinOpts)
; ============================================================
; ============================================================
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 : 1
Epilog Count : 1
E bit : 0
E bit : 0
X bit : 0
X bit : 0
Vers : 0
Vers : 0
Copia
Copiato
Copia
Copiato
Function Length :
108
(0x000
6c
) Actual length =
432
(0x0001
b
0)
Function Length :
112
(0x000
70
) Actual length =
448
(0x0001
c
0)
---- 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)
---- 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 ----
Copia
Copiato
Copia
Copiato
8B
save_fplr_x #
11
(0x0
B
); stp fp, lr, [sp, #-
96
]!
8D
save_fplr_x #
13
(0x0
D
); stp fp, lr, [sp, #-
112
]!
E4 end
E4 end
E4 end
E4 end
Diff salvati
Testo originale
Apri file
; Assembly listing for method JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long:RunBasicScenario_FalseMask():this (Tier0-MinOpts) ; Emitting BLENDED_CODE for generic ARM64 - Windows ; Tier-0 switched MinOpts code ; fp based frame ; partially interruptible ; method switched to min-opts ; Final local variable assignments ; ; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long> ; V01 loc0 [V01 ] ( 1, 1 ) simd16 -> [fp+0x40] HFA(simd16) do-not-enreg[S] must-init <System.Numerics.Vector`1[ulong]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03 ] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[] "non-inline candidate call" ; V04 tmp2 [V04 ] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[] "non-inline candidate call" ; V05 tmp3 [V05 ] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[] "non-inline candidate call" ; V06 tmp4 [V06 ] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[] "non-inline candidate call" ; V07 tmp5 [V07 ] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[] "argument with side effect" ; TEMP_01 long -> [fp+0x10] ; ; Lcl frame size = 80 G_M38347_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]! mov fp, sp str xzr, [fp, #0x40] // [V01 loc0] str xzr, [fp, #0x48] // [V01 loc0+0x08] str x0, [fp, #0x58] // [V00 this] ;; size=20 bbWeight=1 PerfScore 4.50 G_M38347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ldr x0, [fp, #0x58] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x58] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x38] // [V03 tmp1] pfalse p0.b mov z16.d, p0/z, #1 ptrue p0.d cmpne p0.d, p0/z, z16.d, #0 ldr x0, [fp, #0x38] // [V03 tmp1] str x0, [fp, #0x10] // [TEMP_01] ldr x1, [fp, #0x58] // [V00 this] ; gcrRegs +[x1] ldrsb wzr, [x1] ldr x1, [fp, #0x58] // [V00 this] add x0, x1, #88 ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> ; gcrRegs -[x1] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] ldr q16, [x0] ldr x0, [fp, #0x10] // [TEMP_01] ld1sb { z16.d }, p0/z, [x0, z16.d] str q16, [fp, #0x40] // [V01 loc0] ldr x0, [fp, #0x58] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x58] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] ldr q16, [fp, #0x40] // [V01 loc0] str q16, [x0] ldr x0, [fp, #0x58] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x58] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x30] // [V04 tmp2] ldr x0, [fp, #0x58] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x58] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x28] // [V05 tmp3] ldr x0, [fp, #0x58] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x58] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x20] // [V06 tmp4] ldr x0, [fp, #0x58] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x58] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x18] // [V07 tmp5] ldr x4, [fp, #0x18] // [V07 tmp5] ldr x1, [fp, #0x30] // [V04 tmp2] ldr x2, [fp, #0x28] // [V05 tmp3] ldr x3, [fp, #0x20] // [V06 tmp4] ldr x0, [fp, #0x58] // [V00 this] ; gcrRegs +[x0] movz x5, #0xD1FFAB1E movk x5, #0xD1FFAB1E LSL #16 movk x5, #0xD1FFAB1E LSL #32 movz x6, #0xD1FFAB1E // code for <unknown method> movk x6, #0xD1FFAB1E LSL #16 movk x6, #0xD1FFAB1E LSL #32 ldr x6, [x6] blr x6 ; gcrRegs -[x0] ;; size=404 bbWeight=1 PerfScore 149.00 G_M38347_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 ; Total bytes of code 432, prolog size 16, PerfScore 155.50, instruction count 108, allocated bytes for code 432 (MethodHash=2fef6a34) for method JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long:RunBasicScenario_FalseMask():this (Tier0-MinOpts) ; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1 Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0 Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0) ---- 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) ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]! E4 end E4 end
Testo modificato
Apri file
; Assembly listing for method JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long:RunBasicScenario_FalseMask():this (Tier0-MinOpts) ; Emitting BLENDED_CODE for generic ARM64 - Windows ; Tier-0 switched MinOpts code ; fp based frame ; partially interruptible ; method switched to min-opts ; Final local variable assignments ; ; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long> ; V01 loc0 [V01 ] ( 1, 1 ) simd16 -> [fp+0x50] HFA(simd16) do-not-enreg[S] must-init <System.Numerics.Vector`1[ulong]> ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03 ] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[] "non-inline candidate call" ; V04 tmp2 [V04 ] ( 1, 1 ) long -> [fp+0x40] do-not-enreg[] "non-inline candidate call" ; V05 tmp3 [V05 ] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[] "non-inline candidate call" ; V06 tmp4 [V06 ] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[] "non-inline candidate call" ; V07 tmp5 [V07 ] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[] "argument with side effect" ; TEMP_02 mask -> [fp+0x20] ; TEMP_01 long -> [fp+0x18] ; ; Lcl frame size = 96 G_M38347_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x70]! mov fp, sp str xzr, [fp, #0x50] // [V01 loc0] str xzr, [fp, #0x58] // [V01 loc0+0x08] str x0, [fp, #0x68] // [V00 this] ;; size=20 bbWeight=1 PerfScore 4.50 G_M38347_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ldr x0, [fp, #0x68] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x68] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x48] // [V03 tmp1] pfalse p0.b mov z16.d, p0/z, #1 ptrue p0.d cmpne p0.d, p0/z, z16.d, #0 add xip1, fp, #32 str p0, [xip1] ldr x0, [fp, #0x48] // [V03 tmp1] str x0, [fp, #0x18] // [TEMP_01] ldr x1, [fp, #0x68] // [V00 this] ; gcrRegs +[x1] ldrsb wzr, [x1] ldr x1, [fp, #0x68] // [V00 this] add x0, x1, #88 ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> ; gcrRegs -[x1] movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] ldr q16, [x0] add xip1, fp, #32 ldr p0, [xip1] ldr x0, [fp, #0x18] // [TEMP_01] ld1sb { z16.d }, p0/z, [x0, z16.d] str q16, [fp, #0x50] // [V01 loc0] ldr x0, [fp, #0x68] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x68] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] ldr q16, [fp, #0x50] // [V01 loc0] str q16, [x0] ldr x0, [fp, #0x68] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x68] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x40] // [V04 tmp2] ldr x0, [fp, #0x68] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x68] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x38] // [V05 tmp3] ldr x0, [fp, #0x68] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x68] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x30] // [V06 tmp4] ldr x0, [fp, #0x68] // [V00 this] ; gcrRegs +[x0] ldrsb wzr, [x0] ldr x0, [fp, #0x68] // [V00 this] add x0, x0, #88 ; gcrRegs -[x0] ; byrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1 ; byrRegs -[x0] str x0, [fp, #0x28] // [V07 tmp5] ldr x4, [fp, #0x28] // [V07 tmp5] ldr x1, [fp, #0x40] // [V04 tmp2] ldr x2, [fp, #0x38] // [V05 tmp3] ldr x3, [fp, #0x30] // [V06 tmp4] ldr x0, [fp, #0x68] // [V00 this] ; gcrRegs +[x0] movz x5, #0xD1FFAB1E movk x5, #0xD1FFAB1E LSL #16 movk x5, #0xD1FFAB1E LSL #32 movz x6, #0xD1FFAB1E // code for <unknown method> movk x6, #0xD1FFAB1E LSL #16 movk x6, #0xD1FFAB1E LSL #32 ldr x6, [x6] blr x6 ; gcrRegs -[x0] ;; size=420 bbWeight=1 PerfScore 157.00 G_M38347_IG03: ; bbWeight=1, epilog, nogc, extend ldp fp, lr, [sp], #0x70 ret lr ;; size=8 bbWeight=1 PerfScore 2.00 ; Total bytes of code 448, prolog size 16, PerfScore 163.50, instruction count 112, allocated bytes for code 448 (MethodHash=2fef6a34) for method JIT.HardwareIntrinsics.Arm._Sve.SveGatherVectorIndices__Sve_GatherVectorSByteSignExtend_Indices_ulong_long:RunBasicScenario_FalseMask():this (Tier0-MinOpts) ; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data) Code Words : 1 Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0 Function Length : 112 (0x00070) Actual length = 448 (0x0001c0) ---- 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) ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]! E4 end E4 end
Trovare la differenza