[PATCH 0/2] Fixup TCG for SH-4 fmov instructions
Randy Schifflin <[email protected]> Wed, 29 Jul 2026 13:55:06 -0700
| Newsgroups | org.nongnu.qemu-trivial,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <20260729-sh4-fix-fmov-instructions-b4-v1-0-65cc9679025a@gmail.com> |
SH-4 manual for reference: https://0x04.net/~mwk/doc/sh/e602156_sh4.pdf There is an issue with the current TCG code generation for `fmov` instructions. When the operands are double-register to memory (or vice versa), the generated code treats it as an f64 load/store. However, as specified in the manual, this operation is only supported when the PR flag is 0 (single-precision) and the SZ flag is 1 (pair transfer size). The correct semantics then are to read/write a pair of f32 values, rather than a single f64 value. This is semantically different in little-endian mode, as the word-ordering gets reversed writing two f32s versus one f64. This PR adds TCG tests for all permutations of `fmov` operands, and fixes the issues above by ensuring the PR and SZ flags are correct and properly handling an f32 pair instead of a single f64. Signed-off-by: Randy Schifflin <[email protected]> --- Randy Schifflin (2): target/sh4: add tcg tests for fmov instructions target/sh4: fixup tcg generation for sh4 `fmov` instructions. target/sh4/translate.c | 82 ++++--- tests/tcg/sh4/Makefile.target | 3 + tests/tcg/sh4/test-fpu-fmov.c | 518 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 568 insertions(+), 35 deletions(-) --- base-commit: e1705a25aff35635c360bbaba4c2731d019a422a change-id: 20260729-sh4-fix-fmov-instructions-b4-7610a3a19906 Best regards, -- Randy Schifflin <[email protected]>