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~