[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] target-mips: Fix Loongson pandn instruction.
From: |
Yongbok Kim |
Subject: |
Re: [Qemu-devel] [PATCH] target-mips: Fix Loongson pandn instruction. |
Date: |
Thu, 13 Oct 2016 17:16:08 +0100 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 |
On 13/10/2016 03:17, Heiher wrote:
> From: Heiher <address@hidden>
>
> pandn FD, FS, FT
> Operation: FD = ((NOT FS) AND FT)
>
> Signed-off-by: Heiher <address@hidden>
> Signed-off-by: Fuxin Zhang <address@hidden>
> ---
> target-mips/translate.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/target-mips/translate.c b/target-mips/translate.c
> index 55c2ca0..ed67180 100644
> --- a/target-mips/translate.c
> +++ b/target-mips/translate.c
> @@ -3880,6 +3880,8 @@ static void gen_loongson_multimedia(DisasContext *ctx,
> int rd, int rs, int rt)
> case OPC_##UP: gen_helper_##LO(t0, t0); break
> #define LMI_DIRECT(UP, LO, OP) \
> case OPC_##UP: tcg_gen_##OP##_i64(t0, t0, t1); break
> +#define LMI_DIRECT_SWAP(UP, LO, OP) \
> + case OPC_##UP: tcg_gen_##OP##_i64(t0, t1, t0); break
It is used only once. No need to make it as a macro.
>
> switch (opc) {
> LMI_HELPER(PADDSH, paddsh);
> @@ -3945,8 +3947,8 @@ static void gen_loongson_multimedia(DisasContext *ctx,
> int rd, int rs, int rt)
> LMI_DIRECT(XOR_CP2, xor, xor);
> LMI_DIRECT(NOR_CP2, nor, nor);
> LMI_DIRECT(AND_CP2, and, and);
> - LMI_DIRECT(PANDN, pandn, andc);
> LMI_DIRECT(OR, or, or);
> + LMI_DIRECT_SWAP(PANDN, pandn, andc);
case OPC_PANDN: tcg_gen_andc_i64(t0, t1, t0); break;
Would it be sufficient?
>
> case OPC_PINSRH_0:
> tcg_gen_deposit_i64(t0, t0, t1, 0, 16);
>
Thanks for the fix.
Regards,
Yongbok