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~

Reply via email to