aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/Decoder/AOpCodeSimdRegElem.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ChocolArm64/Decoder/AOpCodeSimdRegElem.cs')
-rw-r--r--ChocolArm64/Decoder/AOpCodeSimdRegElem.cs26
1 files changed, 19 insertions, 7 deletions
diff --git a/ChocolArm64/Decoder/AOpCodeSimdRegElem.cs b/ChocolArm64/Decoder/AOpCodeSimdRegElem.cs
index d878b12e..127debd1 100644
--- a/ChocolArm64/Decoder/AOpCodeSimdRegElem.cs
+++ b/ChocolArm64/Decoder/AOpCodeSimdRegElem.cs
@@ -8,15 +8,27 @@ namespace ChocolArm64.Decoder
public AOpCodeSimdRegElem(AInst Inst, long Position, int OpCode) : base(Inst, Position, OpCode)
{
- if ((Size & 1) != 0)
+ switch (Size)
{
- Index = (OpCode >> 11) & 1;
- }
- else
- {
- Index = (OpCode >> 21) & 1 |
- (OpCode >> 10) & 2;
+ case 1:
+ Index = (OpCode >> 21) & 1 |
+ (OpCode >> 10) & 2 |
+ (OpCode >> 18) & 4;
+
+ Rm &= 0xf;
+
+ break;
+
+ case 2:
+ Index = (OpCode >> 21) & 1 |
+ (OpCode >> 10) & 2;
+
+ break;
+
+ default: Emitter = AInstEmit.Und; return;
}
+
+
}
}
} \ No newline at end of file