From 53e2d34905c9e5d03f47ea9a5f9f978b5c4925f6 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Fri, 30 Mar 2018 18:06:02 -0300 Subject: [PATCH] Enable all ld/st (single structure) instructions --- ChocolArm64/AOpCodeTable.cs | 8 ++++---- ChocolArm64/Decoder/AOpCodeSimdMemMs.cs | 4 ++-- ChocolArm64/Decoder/AOpCodeSimdMemSs.cs | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ChocolArm64/AOpCodeTable.cs b/ChocolArm64/AOpCodeTable.cs index 0d3fa296..4bcf6c1d 100644 --- a/ChocolArm64/AOpCodeTable.cs +++ b/ChocolArm64/AOpCodeTable.cs @@ -229,8 +229,8 @@ namespace ChocolArm64 Set("01101110000xxxxx0xxxx1xxxxxxxxxx", AInstEmit.Ins_V, typeof(AOpCodeSimdIns)); Set("0x00110001000000xxxxxxxxxxxxxxxx", AInstEmit.Ld__Vms, typeof(AOpCodeSimdMemMs)); Set("0x001100110xxxxxxxxxxxxxxxxxxxxx", AInstEmit.Ld__Vms, typeof(AOpCodeSimdMemMs)); - Set("0x00110101000000xx0xxxxxxxxxxxxx", AInstEmit.Ld__Vss, typeof(AOpCodeSimdMemSs)); - Set("0x001101110xxxxxxx0xxxxxxxxxxxxx", AInstEmit.Ld__Vss, typeof(AOpCodeSimdMemSs)); + Set("0x00110101x00000xxxxxxxxxxxxxxxx", AInstEmit.Ld__Vss, typeof(AOpCodeSimdMemSs)); + Set("0x00110111xxxxxxxxxxxxxxxxxxxxxx", AInstEmit.Ld__Vss, typeof(AOpCodeSimdMemSs)); Set("xx10110xx1xxxxxxxxxxxxxxxxxxxxxx", AInstEmit.Ldp, typeof(AOpCodeSimdMemPair)); Set("xx111100x10xxxxxxxxx00xxxxxxxxxx", AInstEmit.Ldr, typeof(AOpCodeSimdMemImm)); Set("xx111100x10xxxxxxxxx01xxxxxxxxxx", AInstEmit.Ldr, typeof(AOpCodeSimdMemImm)); @@ -275,8 +275,8 @@ namespace ChocolArm64 Set("0x0011110>>>>xxx000101xxxxxxxxxx", AInstEmit.Ssra_V, typeof(AOpCodeSimdShImm)); Set("0x00110000000000xxxxxxxxxxxxxxxx", AInstEmit.St__Vms, typeof(AOpCodeSimdMemMs)); Set("0x001100100xxxxxxxxxxxxxxxxxxxxx", AInstEmit.St__Vms, typeof(AOpCodeSimdMemMs)); - Set("0x00110100000000xx0xxxxxxxxxxxxx", AInstEmit.St__Vss, typeof(AOpCodeSimdMemSs)); - Set("0x001101100xxxxxxx0xxxxxxxxxxxxx", AInstEmit.St__Vss, typeof(AOpCodeSimdMemSs)); + Set("0x00110100x00000xxxxxxxxxxxxxxxx", AInstEmit.St__Vss, typeof(AOpCodeSimdMemSs)); + Set("0x00110110xxxxxxxxxxxxxxxxxxxxxx", AInstEmit.St__Vss, typeof(AOpCodeSimdMemSs)); Set("xx10110xx0xxxxxxxxxxxxxxxxxxxxxx", AInstEmit.Stp, typeof(AOpCodeSimdMemPair)); Set("xx111100x00xxxxxxxxx00xxxxxxxxxx", AInstEmit.Str, typeof(AOpCodeSimdMemImm)); Set("xx111100x00xxxxxxxxx01xxxxxxxxxx", AInstEmit.Str, typeof(AOpCodeSimdMemImm)); diff --git a/ChocolArm64/Decoder/AOpCodeSimdMemMs.cs b/ChocolArm64/Decoder/AOpCodeSimdMemMs.cs index 9ea979ba..a54e2360 100644 --- a/ChocolArm64/Decoder/AOpCodeSimdMemMs.cs +++ b/ChocolArm64/Decoder/AOpCodeSimdMemMs.cs @@ -25,8 +25,8 @@ namespace ChocolArm64.Decoder default: Inst = AInst.Undefined; return; } - Size = (OpCode >> 10) & 0x3; - WBack = ((OpCode >> 23) & 0x1) != 0; + Size = (OpCode >> 10) & 3; + WBack = ((OpCode >> 23) & 1) != 0; bool Q = ((OpCode >> 30) & 1) != 0; diff --git a/ChocolArm64/Decoder/AOpCodeSimdMemSs.cs b/ChocolArm64/Decoder/AOpCodeSimdMemSs.cs index 6938c77d..c8794ff5 100644 --- a/ChocolArm64/Decoder/AOpCodeSimdMemSs.cs +++ b/ChocolArm64/Decoder/AOpCodeSimdMemSs.cs @@ -18,7 +18,7 @@ namespace ChocolArm64.Decoder int Scale = (OpCode >> 14) & 3; int L = (OpCode >> 22) & 1; int Q = (OpCode >> 30) & 1; - + SElems |= (OpCode >> 21) & 1; SElems++; @@ -88,7 +88,7 @@ namespace ChocolArm64.Decoder Extend64 = false; - WBack = ((OpCode >> 23) & 0x1) != 0; + WBack = ((OpCode >> 23) & 1) != 0; RegisterSize = Q != 0 ? ARegisterSize.SIMD128