qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 28/60] AArch64: Add movi instruction emulation


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH 28/60] AArch64: Add movi instruction emulation
Date: Fri, 27 Sep 2013 12:38:08 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130805 Thunderbird/17.0.8

On 09/26/2013 05:48 PM, Alexander Graf wrote:
> +    if (is_k) {
> +        tcg_imm = tcg_const_i64(imm);
> +        tcg_gen_deposit_i64(cpu_reg(reg), cpu_reg(reg), tcg_imm, pos, 16);
> +        tcg_temp_free_i64(tcg_imm);
> +    } else {
> +        tcg_gen_movi_i64(cpu_reg(reg), imm << pos);
> +    }
> +
> +    if (is_n) {
> +        tcg_gen_not_i64(cpu_reg(reg), cpu_reg(reg));
> +    }
> +
> +    if (is_32bit) {
> +        tcg_gen_ext32u_i64(cpu_reg(reg), cpu_reg(reg));
> +    }

You've a constant input.  This should be done in one tcg op:

  if (is_k) {
     ...
  } else {
    imm <<= pos;
    if (is_n) {
        imm = ~imm;
    }
    if (is_32bit) {
        imm &= 0xffffffffu;
    }
    tcg_gen_movi_i64(cpu_reg(reg), imm);
  }


r~



reply via email to

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