qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]