diff options
| author | 2025-04-12 13:22:51 +1000 | |
|---|---|---|
| committer | 2025-04-12 13:25:58 +1000 | |
| commit | de4064155569540b15c1f56bd99c2ceae54fa44f (patch) | |
| tree | 1acf2bc767923b8a923924c91099f69be0c9a11f /docs | |
| parent | 2f93065a39cdc17e3b8d64e1cb7c7a543e704d2e (diff) | |
More recompiler fixes:
* cpu/drcbec.cpp: Interpret index operand for load/store instructions as
a signed value for consistency with other back-ends.
* cpu/drcbec.cpp: Honour alignment rules when packing immediate values.
* cpu/drcbex64.cpp: Don't special-case SEXT with an immediate source -
the simplifier takes care of this.
* cpu/drcbex86.cpp: Be explicit about preserving flags in load/store
instructions.
* docs: Added a couple more UML data movement instructions.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/source/techspecs/uml_instructions.rst | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/docs/source/techspecs/uml_instructions.rst b/docs/source/techspecs/uml_instructions.rst index 771ff64974d..5d379dd1c60 100644 --- a/docs/source/techspecs/uml_instructions.rst +++ b/docs/source/techspecs/uml_instructions.rst @@ -751,6 +751,88 @@ Simplification rules * Converted to :ref:`NOP <umlinst-nop>` if the ``src`` and ``dst`` operands refer to the same memory location or register. +.. _umlinst-fcopyi: + +FCOPYI +~~~~~~ + +Reinterpret an integer value as a floating point value. The binary +value will be preserved even if it is not a valid representation of a +floating point number. + ++---------------------+-----------------------------------+ +| Disassembly | Usage | ++=====================+===================================+ +| .. code-block:: | .. code-block:: C++ | +| | | +| fscopyi dst,src | UML_FSCOPYI(block, dst, src); | +| fdcopyi dst,src | UML_FDCOPYI(block, dst, src); | ++---------------------+-----------------------------------+ + +Operands +^^^^^^^^ + +dst (32-bit or 64-bit – memory, floating point register) + The destination where the value will be copied to. +src (32-bit or 64-bit – memory, integer register) + The source value to copy. + +Flags +^^^^^ + ++---------------+------------+ +| carry (C) | Unchanged. | ++---------------+------------+ +| overflow (V) | Unchanged. | ++---------------+------------+ +| zero (Z) | Unchanged. | ++---------------+------------+ +| sign (S) | Unchanged. | ++---------------+------------+ +| unordered (U) | Unchanged. | ++---------------+------------+ + +.. _umlinst-icopyf: + +ICOPYF +~~~~~~ + +Reinterpret a floating point value as an integer value. The binary +value will be preserved even if it is not a valid representation of a +floating point number. + ++---------------------+-----------------------------------+ +| Disassembly | Usage | ++=====================+===================================+ +| .. code-block:: | .. code-block:: C++ | +| | | +| icopyfs dst,src | UML_ICOPYFS(block, dst, src); | +| icopyfd dst,src | UML_ICOPYFD(block, dst, src); | ++---------------------+-----------------------------------+ + +Operands +^^^^^^^^ + +dst (32-bit or 64-bit – memory, integer register) + The destination where the value will be copied to. +src (32-bit or 64-bit – memory, floating point register) + The source value to copy. + +Flags +^^^^^ + ++---------------+------------+ +| carry (C) | Unchanged. | ++---------------+------------+ +| overflow (V) | Unchanged. | ++---------------+------------+ +| zero (Z) | Unchanged. | ++---------------+------------+ +| sign (S) | Unchanged. | ++---------------+------------+ +| unordered (U) | Unchanged. | ++---------------+------------+ + .. _umlinst-load: LOAD |
