[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipula
From: |
Jia Liu |
Subject: |
Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions |
Date: |
Mon, 29 Oct 2012 20:36:29 +0800 |
Hi Petar,
On Sun, Oct 28, 2012 at 6:58 AM, Jovanovic, Petar <address@hidden> wrote:
> + case OPC_REPL_PH:
> + check_dsp(ctx);
> + {
> + imm = (ctx->opcode >> 16) & 0x03FF;
> + tcg_gen_movi_tl(cpu_gpr[ret], \
> + (target_long)((int32_t)imm << 16 | \
> + (uint32_t)(uint16_t)imm));
> + }
>
> 10-bit integer in REPL.PH is signed, so this code will not work for negative
> values.
> You need to sign-extend it, e.g. something like this:
>
> + imm = (ctx->opcode >> 16) & 0x03FF;
> + if (imm & (1 << 9)) {
> + /* imm is negative, sign-extend it to 16 bits. */
> + imm |= 0xFC00;
> + }
> + tcg_gen_movi_tl(cpu_gpr[ret], \
> + (target_long)((int32_t)imm << 16 | \
> + (uint32_t)(uint16_t)imm));
>
> As far as I can see, the test cases for REPL.PH in
> tests/tcg/mips/mips32-dsp/repl_ph.c cover only positive values.
> Make sure you include test cases for negative values as well.
>
> Petar
New code:
case OPC_REPL_PH:
check_dsp(ctx);
{
imm = (ctx->opcode >> 16) & 0x03FF;
imm = (int16_t)(imm << 6) >> 6;
tcg_gen_movi_tl(cpu_gpr[ret], \
(target_long)(int32_t)((int32_t)imm << 16 | \
(uint32_t)(uint16_t)imm));
}
break;
And the new test:
#include<stdio.h>
#include<assert.h>
int main()
{
int rd, result;
result = 0x01BF01BF;
__asm
("repl.ph %0, 0x1BF\n\t"
: "=r"(rd)
);
assert(rd == result);
result = 0xFFFFFFFF;
__asm
("repl.ph %0, -1\n\t"
: "=r"(rd)
);
assert(rd == result);
return 0;
}
is it OK?
And the other tests have be fixed.
Regards,
Jia.
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Jovanovic, Petar, 2012/10/27
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions,
Jia Liu <=
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Jovanovic, Petar, 2012/10/29
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Jia Liu, 2012/10/30
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Peter Maydell, 2012/10/30
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Richard Henderson, 2012/10/31
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Jia Liu, 2012/10/31
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Aurelien Jarno, 2012/10/31
- Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Jia Liu, 2012/10/31
Re: [Qemu-devel] [PATCH v12 09/14] target-mips: Add ASE DSP bit/manipulation instructions, Peter Maydell, 2012/10/30