On 08/11/2014 09:23 AM, Tom Musta wrote:
> Also fix the special case of MB=31 and ME=0 to copy the entire contents
> of the source GPR.
Err, that's not what you did.
> if (likely(sh == 0 && mb == 0 && me == 31)) {
> +#if defined(TARGET_PPC64)
> + tcg_gen_mov_i64(cpu_gpr[rA(ctx->opcode)], cpu_gpr[rS(ctx->opcode)]);
> +#else
> tcg_gen_ext32u_tl(cpu_gpr[rA(ctx->opcode)],
> cpu_gpr[rS(ctx->opcode)]);
> +#endif
This is the reverse condition. Which, true enough, should not be implemented
with ext32u for PPC64. But a MOV isn't right either, it is
deposit(ra, rs, 0, 32)
Which does point out that we should probably implement anything MB <= ME and SH
== 31 - ME with the deposit opcode.
r~