diff options
Diffstat (limited to 'ARMeilleure/Decoders/OpCodeSimdMemSs.cs')
| -rw-r--r-- | ARMeilleure/Decoders/OpCodeSimdMemSs.cs | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/ARMeilleure/Decoders/OpCodeSimdMemSs.cs b/ARMeilleure/Decoders/OpCodeSimdMemSs.cs deleted file mode 100644 index 44abdd38..00000000 --- a/ARMeilleure/Decoders/OpCodeSimdMemSs.cs +++ /dev/null @@ -1,97 +0,0 @@ -namespace ARMeilleure.Decoders -{ - class OpCodeSimdMemSs : OpCodeMemReg, IOpCodeSimd - { - public int SElems { get; } - public int Index { get; } - public bool Replicate { get; } - public bool WBack { get; } - - public new static OpCode Create(InstDescriptor inst, ulong address, int opCode) => new OpCodeSimdMemSs(inst, address, opCode); - - public OpCodeSimdMemSs(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode) - { - int size = (opCode >> 10) & 3; - int s = (opCode >> 12) & 1; - int sElems = (opCode >> 12) & 2; - int scale = (opCode >> 14) & 3; - int l = (opCode >> 22) & 1; - int q = (opCode >> 30) & 1; - - sElems |= (opCode >> 21) & 1; - - sElems++; - - int index = (q << 3) | (s << 2) | size; - - switch (scale) - { - case 1: - { - if ((size & 1) != 0) - { - Instruction = InstDescriptor.Undefined; - - return; - } - - index >>= 1; - - break; - } - - case 2: - { - if ((size & 2) != 0 || - ((size & 1) != 0 && s != 0)) - { - Instruction = InstDescriptor.Undefined; - - return; - } - - if ((size & 1) != 0) - { - index >>= 3; - - scale = 3; - } - else - { - index >>= 2; - } - - break; - } - - case 3: - { - if (l == 0 || s != 0) - { - Instruction = InstDescriptor.Undefined; - - return; - } - - scale = size; - - Replicate = true; - - break; - } - } - - Index = index; - SElems = sElems; - Size = scale; - - Extend64 = false; - - WBack = ((opCode >> 23) & 1) != 0; - - RegisterSize = q != 0 - ? RegisterSize.Simd128 - : RegisterSize.Simd64; - } - } -}
\ No newline at end of file |
