As verificações de IsSupported para tipos intrínsecos de hardware podem ser diferentes em tipos aninhados
A verificação de <Isa>.X64.IsSupported
, em que <Isa>
se refere às classes no namespace System.Runtime.Intrinsics.X86, agora pode produzir um resultado diferente para as versões anteriores do .NET.
Dica
ISA significa arquitetura padrão do setor.
Versão introduzida
5,0
Descrição das alterações
Nas versões anteriores do .NET, alguns dos tipos intrínsecos de hardware System.Runtime.Intrinsics.X86, por exemplo, System.Runtime.Intrinsics.X86.Aes, não expunham uma classe aninhada X64
. Para esses tipos, a chamada de <Isa>.X64.IsSupported
era resolvida para uma propriedade IsSupported
em uma classe aninhada X64
de uma classe pai <Isa>
. Isso significava que a propriedade poderia retornar true
mesmo quando <Isa>.IsSupported
retornasse false
.
No .NET 5 e nas versões posteriores, todos os tipos System.Runtime.Intrinsics.X86 expõem uma classe aninhada X64
que relata o suporte corretamente. Isso garante que a hierarquia geral continue correta e que, se <Isa>.X64.IsSupported
for true
, <Isa>.IsSupported
também poderá ser considerado true
.
Motivo da alteração
A intenção era que, se <Isa>.X64.IsSupported
fosse true
, <Isa>.IsSupported
também fosse true
implicitamente. No entanto, devido à forma como a resolução de membros funciona em C#, as classes que não tinham uma classe aninhada X64
expunham uma situação em que isso nem sempre ocorria e causava bugs no código do usuário.
Ação recomendada
Se necessário, ajuste o código que verifica IsSupported
para verificar o ISA apropriado.
APIs afetadas
- 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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de