Commit 38d14952014790c8c7f5c098f8048be594a4385d

Authored by aurel32
1 parent 60b19691

target-ppc: simplify evsplati and evsplatfi

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5803 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 4 additions and 16 deletions
target-ppc/translate.c
... ... @@ -6569,16 +6569,10 @@ static always_inline void gen_evmergelohi (DisasContext *ctx)
6569 6569 }
6570 6570 static always_inline void gen_evsplati (DisasContext *ctx)
6571 6571 {
6572   - int32_t imm = (int32_t)(rA(ctx->opcode) << 11) >> 27;
  6572 + uint64_t imm = ((int32_t)(rA(ctx->opcode) << 11)) >> 27;
6573 6573  
6574 6574 #if defined(TARGET_PPC64)
6575   - TCGv t0 = tcg_temp_new();
6576   - TCGv t1 = tcg_temp_new();
6577   - tcg_gen_movi_tl(t0, imm);
6578   - tcg_gen_shri_tl(t1, t0, 32);
6579   - tcg_gen_or_tl(cpu_gpr[rD(ctx->opcode)], t0, t1);
6580   - tcg_temp_free(t0);
6581   - tcg_temp_free(t1);
  6575 + tcg_gen_movi_tl(cpu_gpr[rD(ctx->opcode)], (imm << 32) | imm);
6582 6576 #else
6583 6577 tcg_gen_movi_i32(cpu_gpr[rD(ctx->opcode)], imm);
6584 6578 tcg_gen_movi_i32(cpu_gprh[rD(ctx->opcode)], imm);
... ... @@ -6586,16 +6580,10 @@ static always_inline void gen_evsplati (DisasContext *ctx)
6586 6580 }
6587 6581 static always_inline void gen_evsplatfi (DisasContext *ctx)
6588 6582 {
6589   - uint32_t imm = rA(ctx->opcode) << 11;
  6583 + uint64_t imm = rA(ctx->opcode) << 11;
6590 6584  
6591 6585 #if defined(TARGET_PPC64)
6592   - TCGv t0 = tcg_temp_new();
6593   - TCGv t1 = tcg_temp_new();
6594   - tcg_gen_movi_tl(t0, imm);
6595   - tcg_gen_shri_tl(t1, t0, 32);
6596   - tcg_gen_or_tl(cpu_gpr[rD(ctx->opcode)], t0, t1);
6597   - tcg_temp_free(t0);
6598   - tcg_temp_free(t1);
  6586 + tcg_gen_movi_tl(cpu_gpr[rD(ctx->opcode)], (imm << 32) | imm);
6599 6587 #else
6600 6588 tcg_gen_movi_i32(cpu_gpr[rD(ctx->opcode)], imm);
6601 6589 tcg_gen_movi_i32(cpu_gprh[rD(ctx->opcode)], imm);
... ...