[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 03/12] target-arm: add support for neon vld1.64
From: |
Juha.Riihimaki |
Subject: |
Re: [Qemu-devel] [PATCH 03/12] target-arm: add support for neon vld1.64 instruction |
Date: |
Thu, 22 Oct 2009 11:11:08 +0200 |
On Oct 22, 2009, at 11:39, ext Laurent Desnogues wrote:
> On Wed, Oct 21, 2009 at 12:17 PM, <address@hidden> wrote:
>> Add support for neon vld1.64 instruction.
>>
>> From: Riku Voipio <address@hidden>
>> Signed-off-by: Juha Riihimäki <address@hidden>
>> ---
>> diff --git a/target-arm/translate.c b/target-arm/translate.c
>> index 3ea9d51..d027572 100644
>> --- a/target-arm/translate.c
>> +++ b/target-arm/translate.c
>> @@ -795,6 +795,12 @@ static inline TCGv gen_ld32(TCGv addr, int
>> index)
>> tcg_gen_qemu_ld32u(tmp, addr, index);
>> return tmp;
>> }
>> +static inline TCGv_i64 gen_ld64(TCGv addr, int index)
>> +{
>> + TCGv_i64 tmp = tcg_temp_new_i64();
>> + tcg_gen_qemu_ld64(tmp, addr, index);
>> + return tmp;
>> +}
>> static inline void gen_st8(TCGv val, TCGv addr, int index)
>> {
>> tcg_gen_qemu_st8(val, addr, index);
>> @@ -810,6 +816,11 @@ static inline void gen_st32(TCGv val, TCGv addr,
>> int index)
>> tcg_gen_qemu_st32(val, addr, index);
>> dead_tmp(val);
>> }
>> +static inline void gen_st64(TCGv_i64 val, TCGv addr, int index)
>> +{
>> + tcg_gen_qemu_st64(val, addr, index);
>> + tcg_temp_free_i64(val);
>> +}
>>
>> static inline void gen_set_pc_im(uint32_t val)
>> {
>> @@ -3690,6 +3701,7 @@ static int disas_neon_ls_insn(CPUState * env,
>> DisasContext *s, uint32_t insn)
>> TCGv addr;
>> TCGv tmp;
>> TCGv tmp2;
>> + TCGv_i64 tmp64;
>>
>> if (!vfp_enabled(env))
>> return 1;
>> @@ -3702,7 +3714,7 @@ static int disas_neon_ls_insn(CPUState * env,
>> DisasContext *s, uint32_t insn)
>> /* Load store all elements. */
>> op = (insn >> 8) & 0xf;
>> size = (insn >> 6) & 3;
>> - if (op > 10 || size == 3)
>> + if (op > 10)
>
> This is wrong: a size of 3 is limited to vld1.64 and vst1.64 which
> you don't enforce here.
>
> Apart from that, the rest looks OK.
Thanks, and you're right of course. I'll add a check that will return
1 if size equals 3 and interleave or spacing is not 1.
Cheers,
Juha