Просмотр исходного кода

Enable all ld/st (single structure) instructions

gdkchan 8 лет назад
Родитель
Сommit
53e2d34905

+ 4 - 4
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));

+ 2 - 2
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;
 

+ 2 - 2
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