-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Closed
Labels
area-System.Runtime.Intrinsicsarm-sveWork related to arm64 SVE/SVE2 supportWork related to arm64 SVE/SVE2 support
Description
The following Prefetch APIs were implemented:
public static unsafe void GatherPrefetch8Bit(Vector<T> mask, Vector<T2> addresses, [ConstantExpected] SvePrefetchType prefetchType);
public static unsafe void GatherPrefetch8Bit(Vector<T> mask, void* address, Vector<T2> offsets, [ConstantExpected] SvePrefetchType prefetchType);
public static unsafe void GatherPrefetch16Bit(Vector<T> mask, Vector<T2> addresses, [ConstantExpected] SvePrefetchType prefetchType);
public static unsafe void GatherPrefetch16Bit(Vector<T> mask, void* address, Vector<T2> indices, [ConstantExpected] SvePrefetchType prefetchType);
public static unsafe void GatherPrefetch32Bit(Vector<T> mask, Vector<T2> addresses, [ConstantExpected] SvePrefetchType prefetchType);
public static unsafe void GatherPrefetch32Bit(Vector<T> mask, void* address, Vector<T2> indices, [ConstantExpected] SvePrefetchType prefetchType);
public static unsafe void GatherPrefetch64Bit(Vector<T> mask, Vector<T2> addresses, [ConstantExpected] SvePrefetchType prefetchType);
public static unsafe void GatherPrefetch64Bit(Vector<T> mask, void* address, Vector<T2> indices, [ConstantExpected] SvePrefetchType prefetchType);
public static unsafe void Prefetch8Bit(Vector<T> mask, void* address, SvePrefetchType op); // PRFB
public static unsafe void Prefetch16Bit(Vector<T> mask, void* address, SvePrefetchType op); // PRFH
public static unsafe void Prefetch32Bit(Vector<T> mask, void* address, SvePrefetchType op); // PRFW
public static unsafe void Prefetch64Bit(Vector<T> mask, void* address, SvePrefetchType op); // PRFD
However, the last four were implemented as:
public static unsafe void PrefetchBytes(Vector<T> mask, void* address, SvePrefetchType op); // PRFB
public static unsafe void PrefetchInt16(Vector<T> mask, void* address, SvePrefetchType op); // PRFH
public static unsafe void PrefetchInt32(Vector<T> mask, void* address, SvePrefetchType op); // PRFW
public static unsafe void PrefetchInt64(Vector<T> mask, void* address, SvePrefetchType op); // PRFD
Original API reviews: #97831 and #94007
Either the Prefetch*()
APIs or the need renaming.GatherPrefetch*()
APIs
Metadata
Metadata
Assignees
Labels
area-System.Runtime.Intrinsicsarm-sveWork related to arm64 SVE/SVE2 supportWork related to arm64 SVE/SVE2 support
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
dotnet-policy-service commentedon Apr 22, 2025
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics
See info in area-owners.md if you want to be subscribed.
[-]Arm64 SVE: FEAT_SVE: Prefetch APIs are inconsistent[/-][+][API Proposal]: Arm64 SVE: FEAT_SVE: Prefetch APIs are inconsistent[/+]tannergooding commentedon May 8, 2025
From what I recall from API review, the
#bit
names were intentional so we didn't needbyte*
andsbyte*
variants.The new names aren't really consistent either, as you have
Bytes
vsInt16
rather thanInt16s
(which doesn't flow well).I'd say we should fix this back to match the originally approved APIs, unless someone has a better suggestion for the names to use.
[-][API Proposal]: Arm64 SVE: FEAT_SVE: Prefetch APIs are inconsistent[/-][+]Arm64 SVE: Fix Prefetch APIs names[/+][-]Arm64 SVE: Fix Prefetch APIs names[/-][+]Arm64 SVE: Fix Prefetch APIs names to use Bit[/+]a74nh commentedon May 9, 2025
Switched the title and description so that it's no longer an API suggestion change
[-]Arm64 SVE: Fix Prefetch APIs names to use Bit[/-][+]Arm64 SVE: Rename Prefetch APIs names to use Bit[/+]arm64: Rename SVE Prefetch APIs names to use Bit
arm64: Rename SVE Prefetch APIs names to use Bit (#115609)
kunalspathak commentedon May 29, 2025
We still need to fix other APIs.
kunalspathak commentedon May 29, 2025
Never mind, I got confused with
GatherPrefetch*
APIs as well.