On 2/14/21 9:58 AM, Philippe Mathieu-Daudé wrote:
> + /* Lower halve */
> + gen_load_gpr(ax, a->rs);
> + gen_load_gpr(bx, a->rt);
> + if (a->rd != a->rt) {
> + tcg_gen_mov_i64(cpu_gpr[a->rd], bx);
> + }
> + tcg_gen_deposit_i64(cpu_gpr[a->rd], cpu_gpr[a->rd], ax, 16, 16);
> + tcg_gen_shri_i64(ax, ax, 32);
> + tcg_gen_deposit_i64(cpu_gpr[a->rd], cpu_gpr[a->rd], ax, 48, 16);
mask = tcg_constant_i64(0x0000ffff0000ffffull);
tcg_gen_shli_i64(x, a, 8);
tcg_gen_and_i64(x, x, mask);
tcg_gen_and_i64(y, b, mask);
tcg_gen_or_i64(d, x, y);
and then you can use trans_parallel_logic.
r~