Sdílet prostřednictvím


Načítání bez výpadků u Arm64 SVE vyžaduje maskový parametr.

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.

  • Pro stávající použití Sve.ConditionalSelect(mask, Sve.LoadVector*NonFaulting*(addr), zero) nahraďte je Sve.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