Commit e9203484cba1f15b81e38d0b1be78806d8d66174
1 parent
6958549d
target-mips: optimize some gpr accesses
Optimize gpr accesses when it is known at translation time that gpr != 0. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6307 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
6 additions
and
12 deletions
target-mips/translate.c
| ... | ... | @@ -988,9 +988,8 @@ static void gen_ldst (DisasContext *ctx, uint32_t opc, int rt, |
| 988 | 988 | } else if (offset == 0) { |
| 989 | 989 | gen_load_gpr(t0, base); |
| 990 | 990 | } else { |
| 991 | - gen_load_gpr(t0, base); | |
| 992 | - tcg_gen_movi_tl(t1, offset); | |
| 993 | - gen_op_addr_add(ctx, t0, t1); | |
| 991 | + tcg_gen_movi_tl(t0, offset); | |
| 992 | + gen_op_addr_add(ctx, t0, cpu_gpr[base]); | |
| 994 | 993 | } |
| 995 | 994 | /* Don't do NOP if destination is zero: we must perform the actual |
| 996 | 995 | memory access. */ |
| ... | ... | @@ -1151,12 +1150,8 @@ static void gen_flt_ldst (DisasContext *ctx, uint32_t opc, int ft, |
| 1151 | 1150 | } else if (offset == 0) { |
| 1152 | 1151 | gen_load_gpr(t0, base); |
| 1153 | 1152 | } else { |
| 1154 | - TCGv t1 = tcg_temp_local_new(); | |
| 1155 | - | |
| 1156 | - gen_load_gpr(t0, base); | |
| 1157 | - tcg_gen_movi_tl(t1, offset); | |
| 1158 | - gen_op_addr_add(ctx, t0, t1); | |
| 1159 | - tcg_temp_free(t1); | |
| 1153 | + tcg_gen_movi_tl(t0, offset); | |
| 1154 | + gen_op_addr_add(ctx, t0, cpu_gpr[base]); | |
| 1160 | 1155 | } |
| 1161 | 1156 | /* Don't do NOP if destination is zero: we must perform the actual |
| 1162 | 1157 | memory access. */ |
| ... | ... | @@ -7259,9 +7254,8 @@ static void gen_flt3_ldst (DisasContext *ctx, uint32_t opc, |
| 7259 | 7254 | } else if (index == 0) { |
| 7260 | 7255 | gen_load_gpr(t0, base); |
| 7261 | 7256 | } else { |
| 7262 | - gen_load_gpr(t0, base); | |
| 7263 | - gen_load_gpr(t1, index); | |
| 7264 | - gen_op_addr_add(ctx, t0, t1); | |
| 7257 | + gen_load_gpr(t0, index); | |
| 7258 | + gen_op_addr_add(ctx, t0, cpu_gpr[base]); | |
| 7265 | 7259 | } |
| 7266 | 7260 | /* Don't do NOP if destination is zero: we must perform the actual |
| 7267 | 7261 | memory access. */ | ... | ... |