Commit 38d14952014790c8c7f5c098f8048be594a4385d
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); | ... | ... |