Pemeriksaan IsSupported intrinsik perangkat keras mungkin berbeda untuk jenis berlapis
Memeriksa <Isa>.X64.IsSupported
, di mana <Isa>
mengacu pada kelas di System.Runtime.Intrinsics.X86 namespace layanan, sekarang dapat menghasilkan hasil yang berbeda dengan versi .NET sebelumnya.
Tip
ISA adalah singkatan dari arsitektur standar industri.
Versi yang diperkenalkan
5.0
Deskripsi perubahan
Dalam versi .NET sebelumnya, beberapa jenis System.Runtime.Intrinsics.X86 perangkat keras-intrinsik, misalnya, System.Runtime.Intrinsics.X86.Aes, tidak mengekspos kelas berlapis X64
. Untuk jenis ini, panggilan <Isa>.X64.IsSupported
diselesaikan ke IsSupported
properti pada kelas berlapis X64
dari kelas <Isa>
induk . Ini berarti bahwa properti dapat kembali true
bahkan ketika <Isa>.IsSupported
mengembalikan false
.
Di .NET 5 dan versi yang lebih baru, semua jenis System.Runtime.Intrinsics.X86 mengekspos kelas berlapis X64
yang melaporkan dukungan dengan tepat. Ini memastikan bahwa hierarki umum tetap benar, dan bahwa jika <Isa>.X64.IsSupported
adalah , maka <Isa>.IsSupported
juga dapat diasumsikan sebagai true
true
.
Alasan untuk berubah
Itu dimaksudkan bahwa jika <Isa>.X64.IsSupported
adalah true
, <Isa>.IsSupported
juga tersirat menjadi true
. Namun, karena cara kerja resolusi anggota di C#, kelas yang tidak memiliki kelas berlapis X64
mengekspos situasi di mana ini tidak selalu terjadi dan menyebabkan bug dalam kode pengguna.
Tindakan yang direkomendasikan
Jika perlu, sesuaikan kode yang memeriksa IsSupported
untuk memeriksa ISA yang sesuai.
API yang Terpengaruh
- 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