-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Description
FEAT_SVE_SM4 provides SVE variants of the SM4 instructions provided in FEAT_SM4. See #98696
namespace System.Runtime.Intrinsics.Arm
/// VectorT Summary
public abstract class SveSm4 : AdvSimd /// Feature: FEAT_SVE_SM4
{
public static unsafe Vector<uint> Sm4Encode(Vector<uint> left, Vector<uint> right); // SM4E
public static unsafe Vector<uint> Sm4KeyUpdate(Vector<uint> left, Vector<uint> right); // SM4EKEY
/// total method signatures: 2
}The SM4E instruction reads 16 bytes of input data from each 128-bit segment of the first source vector, together with four iterations of 32-bit round keys from the corresponding 128-bit segments of the second source vector. Each block of data is encrypted by four rounds in accordance with the SM4 standard, and destructively placed in the corresponding segments of the first source vector. This instruction is unpredicated.
The SM4EKEY instruction reads four rounds of 32-bit input key values from each 128-bit segment of the first source vector, along with four rounds of 32-bit constants from the corresponding 128-bit segment of the second source vector. The four rounds of output key values are derived in accordance with the SM4 standard, and placed in the corresponding segments of the destination vector. This instruction is unpredicated.
/// Full API
public abstract class SveSm4 : AdvSimd /// Feature: FEAT_SVE_SM4
{
/// Sm4EncryptionAndDecryption : SM4 encryption and decryption
/// svuint32_t svsm4e[_u32](svuint32_t op1, svuint32_t op2) : "SM4E Ztied1.S, Ztied1.S, Zop2.S"
public static unsafe Vector<uint> Sm4EncryptionAndDecryption(Vector<uint> left, Vector<uint> right);
/// Sm4KeyUpdates : SM4 key updates
/// svuint32_t svsm4ekey[_u32](svuint32_t op1, svuint32_t op2) : "SM4EKEY Zresult.S, Zop1.S, Zop2.S"
public static unsafe Vector<uint> Sm4KeyUpdates(Vector<uint> left, Vector<uint> right);
/// total method signatures: 2
/// total method names: 2
}
/// Total ACLE covered across API: 2