Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Alle Arm64 SVE-api's voor niet-standaardbelasting zijn bijgewerkt om een mask parameter op de eerste positie op te nemen. Deze wijziging is van invloed op alle methoden waarbij LoadVector*NonFaulting voorkomt in hun naam in de klasse System.Runtime.Intrinsics.Arm.Sve.
Geïntroduceerde versie
.NET 10
Vorig gedrag
Voorheen namen niet-faulting load-API's alleen een adresparameter en laadden een volledige vector.
Vector<short> result = Sve.LoadVectorByteNonFaultingZeroExtendToInt16(address);
Als u een niet-uitvallende lading wilt uitvoeren met gemaskeerde elementen, dient u het volgende te gebruiken ConditionalSelect:
Vector<short> maskedResult = Sve.ConditionalSelect(
mask,
Sve.LoadVectorByteNonFaultingZeroExtendToInt16(address),
zero);
Nieuw gedrag
Vanaf .NET 10 vereisen API's die geen fouten veroorzaken een maskerparameter als het eerste argument.
Voor een niet-foutieve laadsessie van alle elementen, maakt u een geldig mask aan en geeft dit door: Sve.LoadVector*NonFaulting*(Sve.CreateTrueMask*(), addr);
Type van brekende verandering
Deze wijziging kan van invloed zijn op binaire compatibiliteit en broncompatibiliteit.
Reden voor wijziging
Deze wijziging was nodig omdat een niet-foutbelasting het eerste foutregister (FFR) bijwerkt, afhankelijk van welke vector lanes worden geladen. De standaardconversie van ConditionalSelect(mask, LoadVectorNonFaulting(addr), zero) naar een gemaskeerde belasting kan niet worden gebruikt omdat deze de status van het FFR-register niet goed verwerkt. Daarom is de enige geldige manier om een gemaskeerde niet-foutbelastende laadbewerking te implementeren door deze beschikbaar te maken als een specifieke API.
Aanbevolen actie
- Voor bestaande toepassingen van
Sve.ConditionalSelect(mask, Sve.LoadVector*NonFaulting*(addr), zero), vervang ze doorSve.LoadVector*NonFaulting*(mask, addr). - Werk andere toepassingen van niet-standaardbelastingen bij om een echt masker op te nemen:
Sve.LoadVector*NonFaulting*(Sve.CreateTrueMask*(), addr).
Betreffende API's
- 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*)