[API Proposal]: SVE AES: change arg names and types #131204
Copy link
Copy link
Closed
Labels
api-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarch-arm64area-System.Runtime.Intrinsicsarm-sveWork related to arm64 SVE/SVE2 supportWork related to arm64 SVE/SVE2 support
Milestone
Description
Activity
- addeduntriagedNew issue has not been triaged by the area ownerNew issue has not been triaged by the area owner
on Jul 22, 2026 dotnet-policy-service commented
on Jul 22, 2026 ContributorMore actionsTagging subscribers to this area: @dotnet/area-system-runtime-intrinsics
See info in area-owners.md if you want to be subscribed.- addedapi-ready-for-reviewAPI is ready for review, it is NOT ready for implementationAPI is ready for review, it is NOT ready for implementationarm-sveWork related to arm64 SVE/SVE2 supportWork related to arm64 SVE/SVE2 supportand removeduntriagedNew issue has not been triaged by the area ownerNew issue has not been triaged by the area owner
on Jul 22, 2026 Looks good as proposed.
namespace System.Runtime.Intrinsics.Arm; public abstract class SveAes : AdvSimd /// Feature: FEAT_SVE_AES { public static Vector<byte> InverseMixColumns(Vector<byte> value); // AESIMC public static Vector<byte> MixColumns(Vector<byte> value); // AESMC public static Vector<byte> Decrypt(Vector<byte> value, Vector<byte> roundKey); // AESD public static Vector<byte> Encrypt(Vector<byte> value, Vector<byte> roundKey); // AESE public static Vector<ushort> PolynomialMultiplyWideningEven(Vector<byte> left, Vector<byte> right); // PMULLB public static Vector<ulong> PolynomialMultiplyWideningEven(Vector<uint> left, Vector<uint> right); // PMULLB public static Vector<ushort> PolynomialMultiplyWideningOdd(Vector<byte> left, Vector<byte> right); // PMULLT public static Vector<ulong> PolynomialMultiplyWideningOdd(Vector<uint> left, Vector<uint> right); // PMULLT }
- addedapi-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedand removedapi-ready-for-reviewAPI is ready for review, it is NOT ready for implementationAPI is ready for review, it is NOT ready for implementation
on Aug 11, 2026 @a74nh this is already implemented and so was just signing-off on the consistency improvements and can be closed, right?
@a74nh this is already implemented and so was just signing-off on the consistency improvements and can be closed, right?
I should have removed the ready-to-review tag last week.
From the reviews on #130859, the following needs to change:
- The
PolynomialMultiplyWidenings are technically part ofFEAT_SVE_PMULL128so need moving to aSvePmull128. Vector<ulong>is correct forPolynomialMultiplyWidening- the byte/uint versions are the SVE2 variations.
I'd recommend we discuss in #130859
- The
- locked and limited conversation to collaborators
on Oct 9, 2026
Metadata
Metadata
Assignees
Labels
api-approvedAPI was approved in API review, it can be implementedAPI was approved in API review, it can be implementedarch-arm64area-System.Runtime.Intrinsicsarm-sveWork related to arm64 SVE/SVE2 supportWork related to arm64 SVE/SVE2 support
The following was approved for SVE AES in #94423
There are three issues with these APIs
1:
The APIs do no need to be marked
unsafe2:
The names of the Decrypt/Encrypt arguments should be changed to match the existing Advsimd AES APIs:
3:
The argument types for the Polynomial functions are wrong. The forms of the instructions are:
Therefore the APIs should be:
These changes have been made in the implementation in #130859
The final suggested API is: