[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/10] microblaze: Improve src
From: |
edgar . iglesias |
Subject: |
[Qemu-devel] [PATCH 05/10] microblaze: Improve src |
Date: |
Thu, 24 Oct 2013 23:08:52 +0200 |
From: "Edgar E. Iglesias" <address@hidden>
Microblaze carry is mirrored in MSR[31], pick it directly from
there. Also, no need to mask cpu_R[dc->ra] when calling
write_carry.
15% improvement in linux-user src loops.
Signed-off-by: Edgar E. Iglesias <address@hidden>
---
target-microblaze/translate.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c
index 93aafac..232015a 100644
--- a/target-microblaze/translate.c
+++ b/target-microblaze/translate.c
@@ -750,7 +750,7 @@ static void dec_barrel(DisasContext *dc)
static void dec_bit(DisasContext *dc)
{
- TCGv t0, t1;
+ TCGv t0;
unsigned int op;
int mem_index = cpu_mmu_index(dc->env);
@@ -761,19 +761,12 @@ static void dec_bit(DisasContext *dc)
t0 = tcg_temp_new();
LOG_DIS("src r%d r%d\n", dc->rd, dc->ra);
- tcg_gen_andi_tl(t0, cpu_R[dc->ra], 1);
+ tcg_gen_andi_tl(t0, cpu_SR[SR_MSR], MSR_CC);
+ write_carry(dc, cpu_R[dc->ra]);
if (dc->rd) {
- t1 = tcg_temp_new();
- read_carry(dc, t1);
- tcg_gen_shli_tl(t1, t1, 31);
-
tcg_gen_shri_tl(cpu_R[dc->rd], cpu_R[dc->ra], 1);
- tcg_gen_or_tl(cpu_R[dc->rd], cpu_R[dc->rd], t1);
- tcg_temp_free(t1);
+ tcg_gen_or_tl(cpu_R[dc->rd], cpu_R[dc->rd], t0);
}
-
- /* Update carry. */
- write_carry(dc, t0);
tcg_temp_free(t0);
break;
--
1.7.10.4
- [Qemu-devel] [PATCH 00/10] MicroBlaze queue, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 01/10] microblaze: Clarify expected input of write_carry, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 02/10] microblaze: Make write_carryi input a boolean, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 03/10] microblaze: Simplify andn by using tcg_gen_andc, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 04/10] microblaze: Improve srl, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 05/10] microblaze: Improve src,
edgar . iglesias <=
- [Qemu-devel] [PATCH 06/10] microblaze: Move the saving of the reservation addr into gen_load, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 07/10] microblaze: Turn res_addr into a tcg global, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 08/10] microblaze: At swx, check that the reserved word is unmodified, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 09/10] hw/microblaze: Indentation cleanups, edgar . iglesias, 2013/10/24
- [Qemu-devel] [PATCH 10/10] hw/microblaze: Add support for loading initrd images, edgar . iglesias, 2013/10/24