Hardwarové vnitřní kontroly IsSupported se můžou u vnořených typů lišit.
Kontrola <Isa>.X64.IsSupported
, kde <Isa>
odkazuje na třídy v oboru názvů System.Runtime.Intrinsics.X86, může nyní vytvořit jiný výsledek než předchozí verze rozhraní .NET.
Spropitné
ISA je zkratka pro architekturu sady instrukcí.
Zavedená verze
5.0
Změnit popis
V předchozích verzích rozhraní .NET některé hardwarové typy System.Runtime.Intrinsics.X86, jako například System.Runtime.Intrinsics.X86.Aes, nezobrazovaly vnořenou třídu X64
. Pro tyto typy je volání <Isa>.X64.IsSupported
převedeno na vlastnost IsSupported
ve vnořené třídě X64
rodičovské třídy <Isa>
. To znamená, že i kdyby <Isa>.IsSupported
vrátilo false
, vlastnost by mohla vracet true
.
V .NET 5 a novějších verzích zpřístupňují všechny typy System.Runtime.Intrinsics.X86 vnořenou třídu X64
, která odpovídajícím způsobem hlásí podporu. Tím se zajistí, že obecná hierarchie zůstane správná, a že pokud je <Isa>.X64.IsSupported
true
, pak lze předpokládat, že <Isa>.IsSupported
je také true
.
Důvod změny
Bylo zamýšleno, že pokud je <Isa>.X64.IsSupported
true
, má to také znamenat, že <Isa>.IsSupported
je true
. Vzhledem k tomu, jak funguje řešení členů v jazyce C#, ale třídy, které neměly vnořenou třídu X64
, odhalily situaci, kdy tomu tak nebylo vždy, a vedly k chybám v uživatelském kódu.
Doporučená akce
V případě potřeby upravte kód, který kontroluje IsSupported
, aby zkontroloval příslušné standardy ISA.
Ovlivněná rozhraní API
- 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