[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 09/10] tcg-aarch64: Simplify tcg_out_ldst_9 encoding
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PULL 09/10] tcg-aarch64: Simplify tcg_out_ldst_9 encoding |
Date: |
Sat, 8 Mar 2014 21:30:42 -0800 |
At first glance the code appears to be using 1's compliment encoding,
a-la AArch32. Except that the constant is "off", creating a complicated
split field 2's compliment encoding.
Much clearer to just use a normal mask and shift.
Reviewed-by: Claudio Fontana <address@hidden>
Signed-off-by: Richard Henderson <address@hidden>
---
tcg/aarch64/tcg-target.c | 14 ++------------
1 file changed, 2 insertions(+), 12 deletions(-)
diff --git a/tcg/aarch64/tcg-target.c b/tcg/aarch64/tcg-target.c
index 58a5ff3..d75d685 100644
--- a/tcg/aarch64/tcg-target.c
+++ b/tcg/aarch64/tcg-target.c
@@ -305,18 +305,8 @@ static inline void tcg_out_ldst_9(TCGContext *s,
TCGReg rd, TCGReg rn, tcg_target_long offset)
{
/* use LDUR with BASE register with 9bit signed unscaled offset */
- unsigned int mod, off;
-
- if (offset < 0) {
- off = (256 + offset);
- mod = 0x1;
- } else {
- off = offset;
- mod = 0x0;
- }
-
- mod |= op_type;
- tcg_out32(s, op_data << 24 | mod << 20 | off << 12 | rn << 5 | rd);
+ tcg_out32(s, op_data << 24 | op_type << 20
+ | (offset & 0x1ff) << 12 | rn << 5 | rd);
}
/* tcg_out_ldst_12 expects a scaled unsigned immediate offset */
--
1.8.5.3
- [Qemu-devel] [PULL 00/10] tcg/aarch64 cleanups, part 1, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 01/10] tcg-aarch64: Enable builtin disassembler, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 02/10] tcg-aarch64: Remove redundant CPU_TLB_ENTRY_BITS check, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 03/10] tcg-aarch64: Change all ext variables to TCGType, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 04/10] tcg-aarch64: Set ext based on TCG_OPF_64BIT, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 05/10] tcg-aarch64: Don't handle mov/movi in tcg_out_op, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 06/10] tcg-aarch64: Hoist common argument loads in tcg_out_op, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 07/10] tcg-aarch64: Remove the shift_imm parameter from tcg_out_cmp, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 08/10] tcg-aarch64: Use intptr_t apropriately, Richard Henderson, 2014/03/09
- [Qemu-devel] [PULL 09/10] tcg-aarch64: Simplify tcg_out_ldst_9 encoding,
Richard Henderson <=
- [Qemu-devel] [PULL 10/10] tcg-aarch64: Remove nop from qemu_st slow path, Richard Henderson, 2014/03/09
- Re: [Qemu-devel] [PULL 00/10] tcg/aarch64 cleanups, part 1, Peter Maydell, 2014/03/10