Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Comprobar <Isa>.X64.IsSupported, donde <Isa> hace referencia a las clases del espacio de nombres System.Runtime.Intrinsics.X86, ahora puede producir un resultado diferente a las versiones anteriores de .NET.
Sugerencia
ISA significa Arquitectura del conjunto de instrucciones.
Versión introducida
5.0
Descripción del cambio
En versiones anteriores de .NET, algunos de los tipos intrínsecos de hardware System.Runtime.Intrinsics.X86, por ejemplo, System.Runtime.Intrinsics.X86.Aes, no expusieron una clase X64 anidada. Para estos tipos, la llamada a <Isa>.X64.IsSupported se resolvía en una propiedad IsSupported en una clase X64 anidada de una clase principal <Isa>. Esto significaba que la propiedad podía devolver true incluso cuando <Isa>.IsSupported devuelve false.
En .NET 5 y versiones posteriores, todos los tipos System.Runtime.Intrinsics.X86 exponen una clase X64 anidada que notifica correctamente la compatibilidad. Esto garantiza que la jerarquía general siga siendo correcta y que, si <Isa>.X64.IsSupported es true, también se puede suponer que <Isa>.IsSupported sea true.
Motivo del cambio
Se pretendía que, si <Isa>.X64.IsSupported es true, se da por hecho que <Isa>.IsSupported también es true. Sin embargo, debido a cómo funciona la resolución de miembros en C#, las clases que no tenían una clase X64 anidada exponían una situación en la que este no siempre era el caso y se generaban errores en el código de usuario.
Acción recomendada
Si es necesario, ajuste el código que comprueba IsSupported para buscar el ISA adecuado.
APIs afectadas
- 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