OpCodeFArithImm32.cs 996 B

1234567891011121314151617181920212223242526272829303132
  1. using Ryujinx.Graphics.Shader.Instructions;
  2. using System;
  3. namespace Ryujinx.Graphics.Shader.Decoders
  4. {
  5. class OpCodeFArithImm32 : OpCodeAlu, IOpCodeFArith, IOpCodeImmF
  6. {
  7. public RoundingMode RoundingMode => RoundingMode.ToNearest;
  8. public FPMultiplyScale Scale => FPMultiplyScale.None;
  9. public bool FlushToZero { get; }
  10. public bool AbsoluteA { get; }
  11. public float Immediate { get; }
  12. public new static OpCode Create(InstEmitter emitter, ulong address, long opCode) => new OpCodeFArithImm32(emitter, address, opCode);
  13. public OpCodeFArithImm32(InstEmitter emitter, ulong address, long opCode) : base(emitter, address, opCode)
  14. {
  15. int imm = opCode.Extract(20, 32);
  16. Immediate = BitConverter.Int32BitsToSingle(imm);
  17. SetCondCode = opCode.Extract(52);
  18. AbsoluteA = opCode.Extract(54);
  19. FlushToZero = opCode.Extract(55);
  20. Saturate = false;
  21. }
  22. }
  23. }