[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 0/6] tcg/mips: Minimal R6 support
From: |
James Hogan |
Subject: |
[Qemu-devel] [PATCH v2 0/6] tcg/mips: Minimal R6 support |
Date: |
Thu, 1 Oct 2015 11:58:44 +0100 |
This patchset adds minimal MIPS r6 host support to TCG.
The first two patches are things I've noticed along the way, and are
independent of the other patches.
Patches 3-6 add R6 awareness to the most important operations, such that
instructions removed in R6 don't get emitted. This seems to be enough to
get a MIPS Linux guest booting on a MIPSr6 host (such as QEMU or I6400).
There are no doubt other improvements that could be made to better
utilise new R6 instruction encodings, but that can wait until a later
patchset.
The R6 changes are basically:
- Patch 4: Don't use the MIPSr5 JR encoding (r6 uses JALR with rd=zero).
- Patch 5: Don't use LO/HI registers, instead using the new
multiply/divide encodings, which map nicely to TCG ops anyway.
- Patch 6: Don't use MOVN/MOVZ instructions. Instead use
SELEQZ/SELNEZ.
Changes in v2:
- Patch 4: Turn #define into enum (Richard).
- Patch 5: Use a common OPC_MUL definition. use_mips32_instructions will
always be 1 for MIPS r6 builds (Richard)
- Combine with patch 6 & 7 from v1, and drop functional changes to
movcond implementation pre-r6. We now provide different constraints
for movcond depending on presence of r6. (thanks Richard for
feedback).
- Add Richard's Reviewed-by to patches 1, 3, 4.
James Hogan (6):
tcg-opc.h: Simplify debug_insn_start def
disas/mips: Add R6 jr/jr.hb to disassembler
tcg/mips: Add use_mips32r6_instructions definition
tcg/mips: Support r6 JR encoding
tcg/mips: Support r6 multiply/divide encodings
tcg/mips: Support r6 SEL{NE,EQ}Z instead of MOVN/MOVZ
disas/mips.c | 2 ++
tcg/mips/tcg-target.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++-----
tcg/mips/tcg-target.h | 11 +++++--
tcg/tcg-opc.h | 12 +++----
4 files changed, 94 insertions(+), 18 deletions(-)
Cc: Aurelien Jarno <address@hidden>
Cc: Richard Henderson <address@hidden>
Cc: Leon Alrae <address@hidden>
--
2.4.9
- [Qemu-devel] [PATCH v2 0/6] tcg/mips: Minimal R6 support,
James Hogan <=
- [Qemu-devel] [PATCH v2 3/6] tcg/mips: Add use_mips32r6_instructions definition, James Hogan, 2015/10/08
- [Qemu-devel] [PATCH v2 6/6] tcg/mips: Support r6 SEL{NE, EQ}Z instead of MOVN/MOVZ, James Hogan, 2015/10/08
- [Qemu-devel] [PATCH v2 2/6] disas/mips: Add R6 jr/jr.hb to disassembler, James Hogan, 2015/10/08
- [Qemu-devel] [PATCH v2 4/6] tcg/mips: Support r6 JR encoding, James Hogan, 2015/10/08
- [Qemu-devel] [PATCH v2 1/6] tcg-opc.h: Simplify debug_insn_start def, James Hogan, 2015/10/08