[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Qemu-ppc] [PATCH 14/15] target-ppc: Use tcg_gen_extrac
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [Qemu-ppc] [PATCH 14/15] target-ppc: Use tcg_gen_extract_* |
Date: |
Wed, 26 Oct 2016 13:59:47 +1100 |
User-agent: |
Mutt/1.7.1 (2016-10-04) |
On Sat, Oct 15, 2016 at 08:37:49PM -0700, Richard Henderson wrote:
> Use the new primitives for RDWINM and RLDICL.
>
> Cc: address@hidden
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> target-ppc/translate.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> index bfc1301..724d95c 100644
> --- a/target-ppc/translate.c
> +++ b/target-ppc/translate.c
> @@ -1977,9 +1977,8 @@ static void gen_rlwinm(DisasContext *ctx)
> if (mb == 0 && me == (31 - sh)) {
> tcg_gen_shli_tl(t_ra, t_rs, sh);
> tcg_gen_ext32u_tl(t_ra, t_ra);
> - } else if (sh != 0 && me == 31 && sh == (32 - mb)) {
> - tcg_gen_ext32u_tl(t_ra, t_rs);
> - tcg_gen_shri_tl(t_ra, t_ra, mb);
> + } else if (me == 31 && (me - mb + 1) + sh <= 32) {
I'm having trouble figuring out what the second part of this condition
is supposed to be checking for, and it seems like it's too
restrictive.
For example, everything except the LSB of a word would be:
rlwnim rT,rA,31,1,31
which would fail the test, but it should be fine to implement that
with an extract op.
> + tcg_gen_extract_tl(t_ra, t_rs, sh, me - mb + 1);
> } else {
> target_ulong mask;
> #if defined(TARGET_PPC64)
> @@ -2094,8 +2093,8 @@ static void gen_rldinm(DisasContext *ctx, int mb, int
> me, int sh)
>
> if (sh != 0 && mb == 0 && me == (63 - sh)) {
> tcg_gen_shli_tl(t_ra, t_rs, sh);
> - } else if (sh != 0 && me == 63 && sh == (64 - mb)) {
> - tcg_gen_shri_tl(t_ra, t_rs, mb);
> + } else if (me == 63 && (me - mb + 1) + sh <= 64) {
> + tcg_gen_extract_tl(t_ra, t_rs, sh, me - mb + 1);
> } else {
> tcg_gen_rotli_tl(t_ra, t_rs, sh);
> tcg_gen_andi_tl(t_ra, t_ra, MASK(mb, me));
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature
- [Qemu-devel] [PATCH 08/15] tcg/ppc: Implement field extraction opcodes, (continued)
- [Qemu-devel] [PATCH 08/15] tcg/ppc: Implement field extraction opcodes, Richard Henderson, 2016/10/15
- [Qemu-devel] [PATCH 09/15] tcg/s390: Implement field extraction opcodes, Richard Henderson, 2016/10/15
- [Qemu-devel] [PATCH 10/15] target-alpha: Use deposit and extract ops, Richard Henderson, 2016/10/15
- [Qemu-devel] [PATCH 11/15] target-arm: Use tcg_gen_*extract, Richard Henderson, 2016/10/15
- [Qemu-devel] [PATCH 12/15] target-i386: Use tcg_gen_extract_tl, Richard Henderson, 2016/10/15
- [Qemu-devel] [PATCH 13/15] target-mips: Use tcg_gen_extract_*, Richard Henderson, 2016/10/15
- [Qemu-devel] [PATCH 14/15] target-ppc: Use tcg_gen_extract_*, Richard Henderson, 2016/10/15
- [Qemu-devel] [PATCH 15/15] target-s390: Use tcg_gen_extract_i64, Richard Henderson, 2016/10/15
- Re: [Qemu-devel] [PATCH 00/15] tcg field extract primitives, no-reply, 2016/10/16