Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Všechna rozhraní API pro nefaultující načtení Arm64 SVE byla aktualizována tak, aby zahrnovala mask parametr na první pozici. Tato změna má vliv na všechny metody s LoadVector*NonFaulting jejich názvem ve System.Runtime.Intrinsics.Arm.Sve třídě.
Verze byla představena
.NET 10
Předchozí chování
Dříve rozhraní API načítání bez chyb používala pouze parametr adresy a načetla celý vektor.
Vector<short> result = Sve.LoadVectorByteNonFaultingZeroExtendToInt16(address);
Pokud chcete provést bezchybné zatížení s prvky, které jsou skryté, museli jste použít ConditionalSelect.
Vector<short> maskedResult = Sve.ConditionalSelect(
mask,
Sve.LoadVectorByteNonFaultingZeroExtendToInt16(address),
zero);
Nové chování
Od .NET verze 10 vyžadují API pro načítání bez vyvolání chyby jako první argument parametr masky.
Pokud chcete provést bezchybné načtení pro všechny prvky, vytvořte a předejte pravdivou masku: Sve.LoadVector*NonFaulting*(Sve.CreateTrueMask*(), addr);
Typ zásadní změny
Tato změna může mít vliv na kompatibilitu binárních souborů a kompatibilitu zdroje.
Důvod změny
Tato změna byla nezbytná, protože nefaultující zatížení aktualizuje první registr selhání (FFR) v závislosti na tom, které vektorové pruhy jsou načteny. Standardní převod ConditionalSelect(mask, LoadVectorNonFaulting(addr), zero) na maskované zatížení se nedá použít, protože nezvládá správně stav registru FFR. Jediný platný způsob implementace maskovaného nefaultujícího zatížení je jeho zveřejněním jako vyhrazeného rozhraní API.
Doporučená akce
- Pro stávající použití
Sve.ConditionalSelect(mask, Sve.LoadVector*NonFaulting*(addr), zero)nahraďte jeSve.LoadVector*NonFaulting*(mask, addr). - Aktualizujte další použití neschváliných načtení tak, aby obsahovala skutečnou masku:
Sve.LoadVector*NonFaulting*(Sve.CreateTrueMask*(), addr).
Ovlivněná rozhraní API
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorNonFaulting
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorByteNonFaultingZeroExtendToInt16(Byte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorByteNonFaultingZeroExtendToInt32(Byte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorByteNonFaultingZeroExtendToInt64(Byte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorByteNonFaultingZeroExtendToUInt16(Byte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorByteNonFaultingZeroExtendToUInt32(Byte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorByteNonFaultingZeroExtendToUInt64(Byte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorInt16NonFaultingSignExtendToInt32(Int16*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorInt16NonFaultingSignExtendToInt64(Int16*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorInt16NonFaultingSignExtendToUInt32(Int16*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorInt16NonFaultingSignExtendToUInt64(Int16*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorInt32NonFaultingSignExtendToInt64(Int32*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorInt32NonFaultingSignExtendToUInt64(Int32*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorSByteNonFaultingSignExtendToInt16(SByte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorSByteNonFaultingSignExtendToInt32(SByte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorSByteNonFaultingSignExtendToInt64(SByte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorSByteNonFaultingSignExtendToUInt16(SByte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorSByteNonFaultingSignExtendToUInt32(SByte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorSByteNonFaultingSignExtendToUInt64(SByte*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorUInt16NonFaultingZeroExtendToInt32(UInt16*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorUInt16NonFaultingZeroExtendToInt64(UInt16*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorUInt16NonFaultingZeroExtendToUInt32(UInt16*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorUInt16NonFaultingZeroExtendToUInt64(UInt16*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorUInt32NonFaultingZeroExtendToInt64(UInt32*)
- System.Runtime.Intrinsics.Arm.Sve.LoadVectorUInt32NonFaultingZeroExtendToUInt64(UInt32*)