[prev in list] [next in list] [prev in thread] [next in thread]
List: qemu-ppc
Subject: Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/14] target/ppc: remove getVSR()/putVSR() from mem_helper.c
From: Richard Henderson <richard.henderson () linaro ! org>
Date: 2019-04-30 16:29:48
Message-ID: 55204805-9275-2bc4-2c38-51dc87aa836d () linaro ! org
[Download RAW message or body]
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~
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic