* Avoid unnecessary operand loads for add/subtract operations where both
sources are identical.
* Improved code generation for rotate through carry with immediate shift
count and/or immediate zero source.
-cpu/uml.cpp: Fixed potential assertion failure when a degenerate rotate
through carry is converted to a move.
-dynax/ddenlovr.cpp: Fixed DIP switch labels and added locations for
Mahjong Dai Touyouken and Return of Sel Jan 2.
-docs: Documented DRC UML rotate through carry instructions.
* cpu/drcbex64.cpp: Slightly optimised flag calculation for some
variants of the multiply instructions.
* docs: Documented the DRC UML integer multiplication and division
instructions.
* cpu/drcbearm64.cpp: Added NEON vector register assignments to the
header comment.
* cpu/uml.cpp: Added simplification rules for FFRINT and FFRFLT.
* cup/drcumlsh.h: Use "src" rather than "src1" if there's only one
source operand.
* cpu/drcbearm64.cpp: Added a fixme comment.
* Also replaced mathematical symbols for Boolean algebra with less
desirable C operators as they were upsetting pdflatex.
-cpu/uml.cpp: Got rid of a redundant assignment.
misc/crystal.cpp: Added lamp outputs used by Office Yeoin Cheonha and
Urachacha Mudaeri, and fixed button order/names for Urachacha Mudaeri.
cpu/uml.cpp: Added a couple of simplification rules. ADDC's inputs are
commutative, and TEST with an immediate zero operand effectively ignores
the other operand.
namco/namcos23.cpp: Treat spinny things as a dial rather than half a
mouse.
cpu/arm7: Removed the recompiler that had never been completed.
cpu/drcumlsh.h: Removed helpers for generating the unimplemented JMPH
instrcution. Trying to use it would cause a compile error.
docs: Documented the most common DRC UML integer arithmetic and logical
instructions.
Also made order of parsing view element more logical (makes interation
with parameter elements less confusing).
Some layouts have been updated, others still need work.
Should be added soon:
- mute
- speaker/microphone resampling
To be added a little later:
- compression
- reverb
Needs to be added by someone else:
- coreaudio
- direct
- portaudio
- xaudio2
- js
* 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.
* cpu/drcbearm64.cpp Interpret index operand for load and store
instructions as a signed 32-bit value for consistency with x86-64.
Moved code to interpret load and scale the index for integer
load/store to a helper function to make it easier to update if it
needs changes or fixes.
* cpu/drcbearm64.cpp: Use and/orr to set carry flag directly rahter than
using an intermediate register when both operands of a CARRY
instruction are immediates.
* cpu/drcbearm64.cpp: Fixed incorrect operand type assertion for FREAD.
* cpu/drcbearm64.cpp: Use less verbose asmjit helper functions for shift
operations and addressing modes.
* cpu/drcbex64.cpp: Interpret index operand for floating point
load/store as a signed 32-bit value for consistency with integer
load/store.
* cpu/drcbex64.cpp: Guard against any possibility of load and store
instructions altering the flags.
* cpu/drcbex64.cpp: Reduced copy/paste in floating point load/store
instructions.
* cpu/drcbex64.cpp: Cleaned up some casts between integer types with
differing size and signedness.
* docs: Added reference for UML flow control, data movement and emulated
memory access instructions.
* cpu/uml.cpp: Truncate immediates to size for a few more instructions.
* cpu/uml.cpp: Added SPACE_OPCODES since it's a well-known address space
now.
* cpu/uml.cpp: Removed SCALE_DEFAULT. It's unimplemented by back-ends
and unused by front-ends.
* cpu/uml.h, cpu/drcumlsh.h: Less confusing names for parameters to read
and write instruction generators.
* cpu/drcbex86.cpp: Templated 64-bit multiplication helpers on the
zero/sign flag source, cleaned up casting pointers to integers.