diff options
| author | LDj3SNuD <35856442+LDj3SNuD@users.noreply.github.com> | 2019-12-07 13:45:32 +0100 |
|---|---|---|
| committer | Ac_K <Acoustik666@gmail.com> | 2019-12-07 13:45:32 +0100 |
| commit | 8c85bdf2edf5ebd7965fbbd08106f2e8d877d73e (patch) | |
| tree | 1f112a5d4a6dc0b4c8882b8151623e006172bb6c /ARMeilleure/Decoders/OpCodeSimdFmov.cs | |
| parent | d562ba37a0bc603e9719bb36dc9e7e9bf4406687 (diff) | |
Implemented fast paths for: (#841)
* cpu-misc_opt
* B = ~b
* ;
Diffstat (limited to 'ARMeilleure/Decoders/OpCodeSimdFmov.cs')
| -rw-r--r-- | ARMeilleure/Decoders/OpCodeSimdFmov.cs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/ARMeilleure/Decoders/OpCodeSimdFmov.cs b/ARMeilleure/Decoders/OpCodeSimdFmov.cs index 61a3f077..f0da0396 100644 --- a/ARMeilleure/Decoders/OpCodeSimdFmov.cs +++ b/ARMeilleure/Decoders/OpCodeSimdFmov.cs @@ -8,16 +8,8 @@ namespace ARMeilleure.Decoders public OpCodeSimdFmov(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode) { - int imm5 = (opCode >> 5) & 0x1f; int type = (opCode >> 22) & 0x3; - if (imm5 != 0b00000 || type > 1) - { - Instruction = InstDescriptor.Undefined; - - return; - } - Size = type; long imm; @@ -25,7 +17,14 @@ namespace ARMeilleure.Decoders Rd = (opCode >> 0) & 0x1f; imm = (opCode >> 13) & 0xff; - Immediate = DecoderHelper.DecodeImm8Float(imm, type); + if (type == 0) + { + Immediate = (long)DecoderHelper.Imm8ToFP32Table[(int)imm]; + } + else /* if (type == 1) */ + { + Immediate = (long)DecoderHelper.Imm8ToFP64Table[(int)imm]; + } } } }
\ No newline at end of file |
