[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/14] ppc: introduce helpers for mfocrf/mtocrf
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 06/14] ppc: introduce helpers for mfocrf/mtocrf |
Date: |
Thu, 18 Sep 2014 14:01:01 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.0 |
On 09/15/2014 08:03 AM, Paolo Bonzini wrote:
> @@ -4173,24 +4173,7 @@ static void gen_mfcr(DisasContext *ctx)
> cpu_gpr[rD(ctx->opcode)], crn * 4);
> }
> } else {
> - TCGv_i32 t0 = tcg_temp_new_i32();
> - tcg_gen_mov_i32(t0, cpu_crf[0]);
> - tcg_gen_shli_i32(t0, t0, 4);
> - tcg_gen_or_i32(t0, t0, cpu_crf[1]);
> - tcg_gen_shli_i32(t0, t0, 4);
> - tcg_gen_or_i32(t0, t0, cpu_crf[2]);
> - tcg_gen_shli_i32(t0, t0, 4);
> - tcg_gen_or_i32(t0, t0, cpu_crf[3]);
> - tcg_gen_shli_i32(t0, t0, 4);
> - tcg_gen_or_i32(t0, t0, cpu_crf[4]);
> - tcg_gen_shli_i32(t0, t0, 4);
> - tcg_gen_or_i32(t0, t0, cpu_crf[5]);
> - tcg_gen_shli_i32(t0, t0, 4);
> - tcg_gen_or_i32(t0, t0, cpu_crf[6]);
> - tcg_gen_shli_i32(t0, t0, 4);
> - tcg_gen_or_i32(t0, t0, cpu_crf[7]);
> - tcg_gen_extu_i32_tl(cpu_gpr[rD(ctx->opcode)], t0);
> - tcg_temp_free_i32(t0);
> + gen_helper_mfocrf(cpu_gpr[rD(ctx->opcode)], cpu_env);
I don't like this helper name, because it isn't mfocrf. We handled the "one"
case above. This is the old-style "mfcr", i.e. move from all cr.
> @@ -4285,15 +4268,9 @@ static void gen_mtcrf(DisasContext *ctx)
> tcg_temp_free_i32(temp);
> }
> } else {
> - TCGv_i32 temp = tcg_temp_new_i32();
> - tcg_gen_trunc_tl_i32(temp, cpu_gpr[rS(ctx->opcode)]);
> - for (crn = 0 ; crn < 8 ; crn++) {
> - if (crm & (1 << crn)) {
> - tcg_gen_shri_i32(cpu_crf[7 - crn], temp, crn * 4);
> - tcg_gen_andi_i32(cpu_crf[7 - crn], cpu_crf[7 - crn],
> 0xf);
> - }
> - }
> - tcg_temp_free_i32(temp);
> + TCGv_i32 t0 = tcg_const_i32(crm);
> + gen_helper_mtocrf(cpu_env, cpu_gpr[rS(ctx->opcode)], t0);
> + tcg_temp_free_i32(t0);
Similarly.
r~
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, (continued)
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, Richard Henderson, 2014/09/16
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, Paolo Bonzini, 2014/09/17
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, Paolo Bonzini, 2014/09/17
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, Richard Henderson, 2014/09/17
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, Paolo Bonzini, 2014/09/17
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, Richard Henderson, 2014/09/17
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, Peter Maydell, 2014/09/16
- Re: [Qemu-devel] [PATCH 03/14] target-ppc: use separate indices for various translation modes, Richard Henderson, 2014/09/16
[Qemu-devel] [PATCH 06/14] ppc: introduce helpers for mfocrf/mtocrf, Paolo Bonzini, 2014/09/15
[Qemu-devel] [PATCH 07/14] ppc: reorganize gen_compute_fprf, Paolo Bonzini, 2014/09/15
[Qemu-devel] [PATCH 08/14] ppc: introduce gen_op_mfcr/gen_op_mtcr, Paolo Bonzini, 2014/09/15
[Qemu-devel] [PATCH 09/14] ppc: introduce ppc_get_crf and ppc_set_crf, Paolo Bonzini, 2014/09/15
[Qemu-devel] [PATCH 10/14] ppc: use movcond for isel, Paolo Bonzini, 2014/09/15