aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/Instruction/AInstEmitSimdCrypto.cs
diff options
context:
space:
mode:
authorLDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com>2018-08-20 06:20:26 +0200
committergdkchan <gab.dark.100@gmail.com>2018-08-20 01:20:26 -0300
commitd021d5dfa9d884160625c273c7f54ffbbeb08802 (patch)
treecae5e3988767476b46d20228366080a09ea56d10 /ChocolArm64/Instruction/AInstEmitSimdCrypto.cs
parent726de8c46ab10f1b0684fe14bca1ca96ba6d2832 (diff)
Add AESD, AESE, AESIMC, AESMC instructions; add 4 simple Tests (closed box). (#365)
* Create CpuTestSimdCrypto.cs * Update AOpCodeTable.cs * Create AInstEmitSimdCrypto.cs * Update ASoftFallback.cs * Create ACryptoHelper.cs
Diffstat (limited to 'ChocolArm64/Instruction/AInstEmitSimdCrypto.cs')
-rw-r--r--ChocolArm64/Instruction/AInstEmitSimdCrypto.cs54
1 files changed, 54 insertions, 0 deletions
diff --git a/ChocolArm64/Instruction/AInstEmitSimdCrypto.cs b/ChocolArm64/Instruction/AInstEmitSimdCrypto.cs
new file mode 100644
index 00000000..b2680a58
--- /dev/null
+++ b/ChocolArm64/Instruction/AInstEmitSimdCrypto.cs
@@ -0,0 +1,54 @@
+using ChocolArm64.Decoder;
+using ChocolArm64.Translation;
+
+namespace ChocolArm64.Instruction
+{
+ static partial class AInstEmit
+ {
+ public static void Aesd_V(AILEmitterCtx Context)
+ {
+ AOpCodeSimd Op = (AOpCodeSimd)Context.CurrOp;
+
+ Context.EmitLdvec(Op.Rd);
+ Context.EmitLdvec(Op.Rn);
+
+ ASoftFallback.EmitCall(Context, nameof(ASoftFallback.Decrypt));
+
+ Context.EmitStvec(Op.Rd);
+ }
+
+ public static void Aese_V(AILEmitterCtx Context)
+ {
+ AOpCodeSimd Op = (AOpCodeSimd)Context.CurrOp;
+
+ Context.EmitLdvec(Op.Rd);
+ Context.EmitLdvec(Op.Rn);
+
+ ASoftFallback.EmitCall(Context, nameof(ASoftFallback.Encrypt));
+
+ Context.EmitStvec(Op.Rd);
+ }
+
+ public static void Aesimc_V(AILEmitterCtx Context)
+ {
+ AOpCodeSimd Op = (AOpCodeSimd)Context.CurrOp;
+
+ Context.EmitLdvec(Op.Rn);
+
+ ASoftFallback.EmitCall(Context, nameof(ASoftFallback.InverseMixColumns));
+
+ Context.EmitStvec(Op.Rd);
+ }
+
+ public static void Aesmc_V(AILEmitterCtx Context)
+ {
+ AOpCodeSimd Op = (AOpCodeSimd)Context.CurrOp;
+
+ Context.EmitLdvec(Op.Rn);
+
+ ASoftFallback.EmitCall(Context, nameof(ASoftFallback.MixColumns));
+
+ Context.EmitStvec(Op.Rd);
+ }
+ }
+}