OpCodeSimdRegElemF.cs 921 B

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