aboutsummaryrefslogtreecommitdiff
path: root/src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-06-10 21:51:35 -0300
committerGitHub <noreply@github.com>2023-06-11 00:51:35 +0000
commit193ca3c9a28b63613407c2923f5903e1dd33fdce (patch)
treec0ce3f32dc145bb98312afdf7538995538fa0d5c /src/ARMeilleure/Instructions/InstEmitSimdCrypto.cs
parenteb0bb36bbfc3a4f5f2ac1c8721e192239f899a1d (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.cs24
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();