[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 02/14] target/ppc: remove getVSR()/putVSR() from
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 02/14] target/ppc: remove getVSR()/putVSR() from mem_helper.c |
Date: |
Tue, 30 Apr 2019 09:29:48 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 4/28/19 7:38 AM, Mark Cave-Ayland wrote:
> #define VSX_LXVL(name, lj) \
> void helper_##name(CPUPPCState *env, target_ulong addr, \
> - target_ulong xt_num, target_ulong rb) \
> + target_ulong xt, target_ulong rb) \
> { \
> + ppc_vsr_t *r = &env->vsr[xt]; \
> + int nb = GET_NB(env->gpr[rb]); \
> int i; \
> - ppc_vsr_t xt; \
> - uint64_t nb = GET_NB(rb); \
> \
> - xt.s128 = int128_zero(); \
> + r->s128 = int128_zero(); \
> if (nb) { \
> nb = (nb >= 16) ? 16 : nb; \
> if (msr_le && !lj) { \
> for (i = 16; i > 16 - nb; i--) { \
> - xt.VsrB(i - 1) = cpu_ldub_data_ra(env, addr, GETPC()); \
> + r->VsrB(i - 1) = cpu_ldub_data_ra(env, addr, GETPC()); \
> addr = addr_add(env, addr, 1); \
> } \
> } else { \
> for (i = 0; i < nb; i++) { \
> - xt.VsrB(i) = cpu_ldub_data_ra(env, addr, GETPC()); \
> + r->VsrB(i) = cpu_ldub_data_ra(env, addr, GETPC()); \
> addr = addr_add(env, addr, 1); \
> } \
> } \
> } \
> - putVSR(xt_num, &xt, env); \
> }
Similarly, this modifies env->vsr[xt] before all exceptions are recognized.
> @@ -304,12 +304,14 @@ static void gen_##name(DisasContext *ctx)
> \
> } \
> } \
> EA = tcg_temp_new(); \
> - xt = tcg_const_tl(xT(ctx->opcode)); \
> gen_set_access_type(ctx, ACCESS_INT); \
> gen_addr_register(ctx, EA); \
> - gen_helper_##name(cpu_env, EA, xt, cpu_gpr[rB(ctx->opcode)]); \
> + xt = tcg_const_tl(xT(ctx->opcode)); \
> + rb = tcg_const_tl(rB(ctx->opcode)); \
> + gen_helper_##name(cpu_env, EA, xt, rb); \
> tcg_temp_free(EA); \
> tcg_temp_free(xt); \
> + tcg_temp_free(rb); \
> }
Why are you adjusting the function to pass the rB register number rather than
the contents of rB? That seems the wrong way around...
r~
- [Qemu-devel] [PATCH 00/14] target/ppc: remove getVSR()/putVSR() and further tidy-up, Mark Cave-Ayland, 2019/04/28
- [Qemu-devel] [PATCH 02/14] target/ppc: remove getVSR()/putVSR() from mem_helper.c, Mark Cave-Ayland, 2019/04/28
- Re: [Qemu-devel] [PATCH 02/14] target/ppc: remove getVSR()/putVSR() from mem_helper.c,
Richard Henderson <=
- [Qemu-devel] [PATCH 03/14] target/ppc: remove getVSR()/putVSR() from int_helper.c, Mark Cave-Ayland, 2019/04/28
- [Qemu-devel] [PATCH 06/14] target/ppc: introduce GEN_VSX_HELPER_X2_AB macro to fpu_helper.c, Mark Cave-Ayland, 2019/04/28
- [Qemu-devel] [PATCH 07/14] target/ppc: introduce GEN_VSX_HELPER_X1 macro to fpu_helper.c, Mark Cave-Ayland, 2019/04/28
- [Qemu-devel] [PATCH 08/14] target/ppc: introduce GEN_VSX_HELPER_R3 macro to fpu_helper.c, Mark Cave-Ayland, 2019/04/28
- [Qemu-devel] [PATCH 09/14] target/ppc: introduce GEN_VSX_HELPER_R2 macro to fpu_helper.c, Mark Cave-Ayland, 2019/04/28