On 10/04/2013 06:26 AM, Tom Musta wrote: > + case 0: { > + tcg_gen_mov_i64(b, cpu_vsrh(xB(ctx->opcode))); > + tcg_gen_andi_i64(b, b, 0xFFFFFFFF00000000ul); > + tcg_gen_shri_i64(b, b, 32); > + break; ... > + case 2: { > + tcg_gen_mov_i64(b, cpu_vsrl(xB(ctx->opcode))); > + tcg_gen_andi_i64(b, b, 0xFFFFFFFF00000000ul); > + tcg_gen_shri_i64(b, b, 32); > + break;
No need for the and. Perhaps better as TCGv_i64 vsr = (uim & 2 ? cpu_vrsl(xb) : cpu_vrsh(xb)); if (uim & 1) { tcg_gen_ext32u_i64(b, vsr); } else { tcg_gen_shri_i32(b, vsr, 32); } > + tcg_gen_shli_i64(b2, b, 32); > + tcg_gen_or_i64(b, b, b2); deposit. r~