OpCodeSimdRegElem.cs 852 B

12345678910111213141516171819202122232425262728293031
  1. namespace ARMeilleure.Decoders
  2. {
  3. class OpCodeSimdRegElem : OpCodeSimdReg
  4. {
  5. public int Index { get; }
  6. public new static OpCode Create(InstDescriptor inst, ulong address, int opCode) => new OpCodeSimdRegElem(inst, address, opCode);
  7. public OpCodeSimdRegElem(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode)
  8. {
  9. switch (Size)
  10. {
  11. case 1:
  12. Index = (opCode >> 20) & 3 |
  13. (opCode >> 9) & 4;
  14. Rm &= 0xf;
  15. break;
  16. case 2:
  17. Index = (opCode >> 21) & 1 |
  18. (opCode >> 10) & 2;
  19. break;
  20. default: Instruction = InstDescriptor.Undefined; break;
  21. }
  22. }
  23. }
  24. }