From: Paolo Bonzini <pbonzini@redhat.com>
To: Aurelien Jarno <aurelien@aurel32.net>, qemu-devel@nongnu.org
Cc: "Hervé Poussineau" <hpoussin@reactos.org>,
"Leon Alrae" <leon.alrae@imgtec.com>
Subject: Re: [Qemu-devel] [PATCH 2/2] target-mips: simplify LWL/LDL mask generation
Date: Tue, 14 Jul 2015 18:17:55 +0200 [thread overview]
Message-ID: <55A53633.1050106@redhat.com> (raw)
In-Reply-To: <1436888717-8122-3-git-send-email-aurelien@aurel32.net>
On 14/07/2015 17:45, Aurelien Jarno wrote:
> The LWL/LDL instructions mask the GPR with a mask depending on the
> address alignement. It is currently computed by doing:
>
> mask = 0x7fffffffffffffffull >> (t1 ^ 63)
>
> It's simpler to generate it by doing:
>
> mask = (1 << t1) - 1
Using ~(-1 << t1) may let you use an ANDN instruction, and is also the
same number of instructions on x86.
Paolo
> It uses the same number of TCG instructions, but it avoids a 32/64-bit
> constant loading which can take a few instructions on RISC hosts.
>
> Cc: Leon Alrae <leon.alrae@imgtec.com>
> Tested-by: Hervé Poussineau <hpoussin@reactos.org>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
> ---
> target-mips/translate.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/target-mips/translate.c b/target-mips/translate.c
> index 0ac3bd8..9891209 100644
> --- a/target-mips/translate.c
> +++ b/target-mips/translate.c
> @@ -2153,9 +2153,9 @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
> tcg_gen_andi_tl(t0, t0, ~7);
> tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEQ);
> tcg_gen_shl_tl(t0, t0, t1);
> - tcg_gen_xori_tl(t1, t1, 63);
> - t2 = tcg_const_tl(0x7fffffffffffffffull);
> - tcg_gen_shr_tl(t2, t2, t1);
> + t2 = tcg_const_tl(1);
> + tcg_gen_shl_tl(t2, t2, t1);
> + tcg_gen_subi_tl(t2, t2, 1);
> gen_load_gpr(t1, rt);
> tcg_gen_and_tl(t1, t1, t2);
> tcg_temp_free(t2);
> @@ -2246,9 +2246,9 @@ static void gen_ld(DisasContext *ctx, uint32_t opc,
> tcg_gen_andi_tl(t0, t0, ~3);
> tcg_gen_qemu_ld_tl(t0, t0, ctx->mem_idx, MO_TEUL);
> tcg_gen_shl_tl(t0, t0, t1);
> - tcg_gen_xori_tl(t1, t1, 31);
> - t2 = tcg_const_tl(0x7fffffffull);
> - tcg_gen_shr_tl(t2, t2, t1);
> + t2 = tcg_const_tl(1);
> + tcg_gen_shl_tl(t2, t2, t1);
> + tcg_gen_subi_tl(t2, t2, 1);
> gen_load_gpr(t1, rt);
> tcg_gen_and_tl(t1, t1, t2);
> tcg_temp_free(t2);
>
next prev parent reply other threads:[~2015-07-14 16:18 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-14 15:45 [Qemu-devel] [PATCH 0/2] target-mips: fix Windows NT support Aurelien Jarno
2015-07-14 15:45 ` [Qemu-devel] [PATCH for-2.4 1/2] target-mips: fix page fault address for LWL/LWR/LDL/LDR Aurelien Jarno
2015-07-15 16:30 ` Leon Alrae
2015-07-14 15:45 ` [Qemu-devel] [PATCH 2/2] target-mips: simplify LWL/LDL mask generation Aurelien Jarno
2015-07-14 16:17 ` Paolo Bonzini [this message]
2015-07-14 16:45 ` Aurelien Jarno
2015-07-14 17:11 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55A53633.1050106@redhat.com \
--to=pbonzini@redhat.com \
--cc=aurelien@aurel32.net \
--cc=hpoussin@reactos.org \
--cc=leon.alrae@imgtec.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.