On 4/3/19 5:28 AM, Aleksandar Markovic wrote:
>> + tcg_gen_andi_i64(t1, msa_wr_d[wt * 2], mask);
>> + tcg_gen_deposit_i64(msa_wr_d[wd * 2], t1, msa_wr_d[ws * 2], 32, 32);
>> +
>> + tcg_gen_andi_i64(t1, msa_wr_d[wt * 2 + 1], mask);
>> + tcg_gen_deposit_i64(msa_wr_d[wd * 2 + 1], t1, msa_wr_d[ws * 2 + 1], 32,
>> 32);
>> +
>> + tcg_temp_free_i64(t1);
>> +}
>> +
>
> This can be further optimized this way: (doublecheck the accuracy, writing
> from
> home)
>
> gen_ilvev_w(CPUMIPSState *env, uint32_t wd,
> uint32_t ws, uint32_t wt)
> {
> tcg_gen_shli_i64(msa_wr_d[wd * 2], msa_wr_d[ws * 2], 32);
> tcg_gen_deposit_i64(msa_wr_d[wd * 2], t1, msa_wr_d[wt * 2], 0, 32);
>
No, the shift can be performed by the deposit.
See my other reply in this thread.
r~