All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Henderson <rth@twiddle.net>
To: Jia Liu <proljc@gmail.com>
Cc: qemu-devel@nongnu.org, aurelien@aurel32.net
Subject: Re: [Qemu-devel] [PATCH V4 08/11] Add MIPS DSP Bit/Manipulation instructions Support
Date: Fri, 30 Mar 2012 07:05:19 -0400	[thread overview]
Message-ID: <4F75936F.8030302@twiddle.net> (raw)
In-Reply-To: <1333077432-22228-9-git-send-email-proljc@gmail.com>

On 03/29/2012 11:17 PM, Jia Liu wrote:
> +    int32_t temp;
> +    uint32_t rd;
> +    int i, last;
> +
> +    temp = rt & MIPSDSP_LO;
> +    rd = 0;
> +    for (i = 0; i < 16; i++) {
> +        last = temp % 2;
> +        temp = temp >> 1;

temp should not be signed, as that % doesn't do what you wanted.


> +                    imm3 = tcg_const_i32(imm);
> +                    imm2 = tcg_const_i32(imm);
> +                    imm1 = tcg_const_i32(imm);
> +                    imm0 = tcg_const_i32(imm);
> +                    tcg_gen_shli_i32(imm3, imm3, 24);
> +                    tcg_gen_shli_i32(imm2, imm2, 16);
> +                    tcg_gen_shli_i32(imm1, imm1, 8);
> +                    tcg_gen_or_i32(cpu_gpr[rd], imm3, imm2);
> +                    tcg_gen_or_i32(cpu_gpr[rd], cpu_gpr[rd], imm1);
> +                    tcg_gen_or_i32(cpu_gpr[rd], cpu_gpr[rd], imm0);
> +                    tcg_temp_free(imm3);
> +                    tcg_temp_free(imm2);
> +                    tcg_temp_free(imm1);
> +                    tcg_temp_free(imm0);

Err, this is an *immediate*.

  imm = (ctx->opcode >> 16) & 0xFF;
  tcg_gen_movi(cpu_gpr[rd], imm * 0x01010101);


> +                    rt3 = tcg_const_i32(0);
> +                    rt2 = tcg_const_i32(0);
> +                    rt1 = tcg_const_i32(0);
> +                    rt0 = tcg_const_i32(0);
> +
> +                    tcg_gen_andi_i32(rt3, cpu_gpr[rt], 0xFF);
> +                    tcg_gen_andi_i32(rt2, cpu_gpr[rt], 0xFF);
> +                    tcg_gen_andi_i32(rt1, cpu_gpr[rt], 0xFF);
> +                    tcg_gen_andi_i32(rt0, cpu_gpr[rt], 0xFF);
> +
> +                    tcg_gen_shli_i32(rt3, rt3, 24);
> +                    tcg_gen_shli_i32(rt2, rt2, 16);
> +                    tcg_gen_shli_i32(rt1, rt1, 8);
> +
> +                    tcg_gen_or_i32(cpu_gpr[rd], rt3, rt2);
> +                    tcg_gen_or_i32(cpu_gpr[rd], cpu_gpr[rd], rt1);
> +                    tcg_gen_or_i32(cpu_gpr[rd], cpu_gpr[rd], rt0);

I hadn't been asking for you to inline replv, only repl.
But if you want to do this, at least only compute t=rt&0xff once.
That said, I suspect the * 0x01010101 trick is fairly efficient on
most hosts these days.


> +                    TCGv temp_rt = tcg_const_i32(rt);
> +                    gen_helper_insv(cpu_gpr[rt], cpu_env,
> +                                    cpu_gpr[rs], cpu_gpr[rt]);
> +                    tcg_temp_free(temp_rt);

temp_rt is unused.



r~

  reply	other threads:[~2012-03-30 11:05 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-30  3:17 [Qemu-devel] [PATCH V4 00/11] Qemu MIPS ASE DSP Support Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 01/11] Add MIPS DSP internal functions Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 02/11] Use correct acc value to index cpu_HI/cpu_LO rather than using a fix number Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 03/11] Add MIPS DSP Branch instruction Support Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 04/11] Add MIPS DSP Load instructions Support Jia Liu
2012-03-30 10:33   ` Richard Henderson
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 05/11] Add MIPS DSP Arithmetic " Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 06/11] Add MIPS DSP GPR-Based Shift " Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 07/11] Add MIPS DSP Multiply " Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 08/11] Add MIPS DSP Bit/Manipulation " Jia Liu
2012-03-30 11:05   ` Richard Henderson [this message]
2012-03-30 12:19     ` Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 09/11] Add MIPS DSP Compare-Pick " Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 10/11] Add MIPS DSP Accumulator and DSPControl Access " Jia Liu
2012-03-30  3:17 ` [Qemu-devel] [PATCH V4 11/11] Add MIPS DSP Testcases Jia Liu
2012-03-30 11:42 ` [Qemu-devel] [PATCH V4 00/11] Qemu MIPS ASE DSP Support Richard Henderson
2012-03-30 12:18   ` Jia Liu
2012-03-30 12:56   ` Richard Henderson
2012-04-04 14:52     ` Jia Liu

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=4F75936F.8030302@twiddle.net \
    --to=rth@twiddle.net \
    --cc=aurelien@aurel32.net \
    --cc=proljc@gmail.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.