diff options
author | gdkchan <gab.dark.100@gmail.com> | 2023-06-10 21:51:35 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-11 00:51:35 +0000 |
commit | 193ca3c9a28b63613407c2923f5903e1dd33fdce (patch) | |
tree | c0ce3f32dc145bb98312afdf7538995538fa0d5c /src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs | |
parent | eb0bb36bbfc3a4f5f2ac1c8721e192239f899a1d (diff) |
Implement fast path for AES crypto instructions on Arm64 (#5281)1.1.883
* Implement fast path for AES crypto instructions on Arm64
* PPTC version bump
* Use AES HW feature check
Diffstat (limited to 'src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs')
-rw-r--r-- | src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs b/src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs index db24e029..6226e35a 100644 --- a/src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs +++ b/src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs @@ -17,7 +17,11 @@ namespace ARMeilleure.Instructions Operand res; - if (Optimizations.UseAesni) + if (Optimizations.UseArm64Aes) + { + res = context.AddIntrinsic(Intrinsic.Arm64AesdV, d, n); + } + else if (Optimizations.UseAesni) { res = context.AddIntrinsic(Intrinsic.X86Aesdeclast, context.AddIntrinsic(Intrinsic.X86Xorpd, d, n), context.VectorZero()); } @@ -38,7 +42,11 @@ namespace ARMeilleure.Instructions Operand res; - if (Optimizations.UseAesni) + if (Optimizations.UseArm64Aes) + { + res = context.AddIntrinsic(Intrinsic.Arm64AeseV, d, n); + } + else if (Optimizations.UseAesni) { res = context.AddIntrinsic(Intrinsic.X86Aesenclast, context.AddIntrinsic(Intrinsic.X86Xorpd, d, n), context.VectorZero()); } @@ -58,7 +66,11 @@ namespace ARMeilleure.Instructions Operand res; - if (Optimizations.UseAesni) + if (Optimizations.UseArm64Aes) + { + res = context.AddIntrinsic(Intrinsic.Arm64AesimcV, n); + } + else if (Optimizations.UseAesni) { res = context.AddIntrinsic(Intrinsic.X86Aesimc, n); } @@ -78,7 +90,11 @@ namespace ARMeilleure.Instructions Operand res; - if (Optimizations.UseAesni) + if (Optimizations.UseArm64Aes) + { + res = context.AddIntrinsic(Intrinsic.Arm64AesmcV, n); + } + else if (Optimizations.UseAesni) { Operand roundKey = context.VectorZero(); |