Les vérifications IsSupported intrinsèques du matériel peuvent différer pour les types imbriqués
La vérification de <Isa>.X64.IsSupported
, où <Isa>
fait référence aux classes de l’espace de noms System.Runtime.Intrinsics.X86, peut maintenant produire un résultat différent des versions précédentes de .NET.
Conseil
ISA est l’acronyme d’architecture standard du secteur.
Version introduite
5,0
Description de la modification
Dans les versions précédentes de .NET, certains des types intrinsèques matériels System.Runtime.Intrinsics.X86, par exemple System.Runtime.Intrinsics.X86.Aes, n’exposaient pas de classe imbriquée X64
. Pour ces types, l’appel de <Isa>.X64.IsSupported
était résolu en propriété IsSupported
sur une classe X64
imbriquée d’une classe parente de <Isa>
. Cela signifiait que la propriété pouvait retourner true
même lorsque <Isa>.IsSupported
retourne false
.
Dans .NET 5 et versions ultérieures, tous les types System.Runtime.Intrinsics.X86 exposent une classe X64
imbriquée qui prend en charge correctement les rapports. Cela garantit que la hiérarchie générale reste correcte et que si <Isa>.X64.IsSupported
est true
, <Isa>.IsSupported
peut également être true
.
Raison du changement
Il était prévu que si <Isa>.X64.IsSupported
est true
, <Isa>.IsSupported
est également implicitement true
. Toutefois, en raison du fonctionnement de la résolution des membres en C#, les classes qui n’avaient pas de classe imbriquée X64
exposaient une situation où cela n’était pas toujours le cas et entraînait des bogues dans le code utilisateur.
Action recommandée
Si nécessaire, ajustez le code qui contrôle IsSupported
pour vérifier l’ISA approprié.
API affectées
- 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