I controlli IsSupported delle intrinseche hardware possono differire per i tipi nidificati
Il controllo di <Isa>.X64.IsSupported
, dove <Isa>
fa riferimento alle classi nello spazio dei nomi System.Runtime.Intrinsics.X86, ora può produrre un risultato diverso rispetto alle versioni precedenti di .NET.
Suggerimento
ISA è l'acronimo di architettura standard del settore.
Versione introdotta
5.0
Descrizione delle modifiche
Nelle versioni precedenti di .NET, alcuni dei tipi di intrinseche hardware System.Runtime.Intrinsics.X86, ad esempio System.Runtime.Intrinsics.X86.Aes, non esponevano una classe annidata X64
. Per questi tipi, la chiamata a <Isa>.X64.IsSupported
viene risolta in una proprietà IsSupported
in una classe annidata X64
di una classe padre <Isa>
. Ciò significa che la proprietà può restituire true
anche quando <Isa>.IsSupported
restituisce false
.
In .NET 5 e versioni successive, tutti i tipi System.Runtime.Intrinsics.X86 espongono una classe annidata X64
che segnala in modo appropriato il supporto. In questo modo si garantisce che la gerarchia generale rimanga corretta e che se <Isa>.X64.IsSupported
è true
, allora è possibile presumere che <Isa>.IsSupported
sia true
.
Motivo della modifica
Era previsto che se <Isa>.X64.IsSupported
è true
, è anche implicito che <Isa>.IsSupported
sia true
. Tuttavia, a causa del funzionamento della risoluzione dei membri in C#, le classi che non avevano una classe nidificata X64
esponevano una situazione in cui non era sempre così e questo ha causato bug nel codice utente.
Azione consigliata
Se necessario, modifica il codice che controlla IsSupported
per verificare la presenza dell'ISA appropriato.
API interessate
- System.Runtime.Intrinsics.X86.Aes.X64.IsSupported
- System.Runtime.Intrinsics.X86.Avx.X64.IsSupported
- System.Runtime.Intrinsics.X86.Avx2.X64.IsSupported
- System.Runtime.Intrinsics.X86.Fma.X64.IsSupported
- System.Runtime.Intrinsics.X86.Pclmulqdq.X64.IsSupported
- System.Runtime.Intrinsics.X86.Sse3.X64.IsSupported
- System.Runtime.Intrinsics.X86.Ssse3.X64.IsSupported