target/ppc/translate.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-)
Cc: qemu-ppc@nongnu.org
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
target/ppc/translate.c | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/target/ppc/translate.c b/target/ppc/translate.c
index c0cd64d..9aa66f5 100644
--- a/target/ppc/translate.c
+++ b/target/ppc/translate.c
@@ -3419,7 +3419,7 @@ static inline bool use_goto_tb(DisasContext *ctx, target_ulong dest)
}
/*** Branch ***/
-static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
+static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
{
if (NARROW_MODE(ctx)) {
dest = (uint32_t) dest;
@@ -3441,7 +3441,7 @@ static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest)
gen_debug_exception(ctx);
}
}
- tcg_gen_exit_tb(0);
+ tcg_gen_lookup_and_goto_ptr(cpu_nip);
}
}
@@ -3479,7 +3479,7 @@ static void gen_b(DisasContext *ctx)
#define BCOND_CTR 2
#define BCOND_TAR 3
-static inline void gen_bcond(DisasContext *ctx, int type)
+static void gen_bcond(DisasContext *ctx, int type)
{
uint32_t bo = BO(ctx->opcode);
TCGLabel *l1;
@@ -3543,26 +3543,19 @@ static inline void gen_bcond(DisasContext *ctx, int type)
} else {
gen_goto_tb(ctx, 0, li);
}
- if ((bo & 0x14) != 0x14) {
- gen_set_label(l1);
- gen_goto_tb(ctx, 1, ctx->nip);
- }
} else {
if (NARROW_MODE(ctx)) {
tcg_gen_andi_tl(cpu_nip, target, (uint32_t)~3);
} else {
tcg_gen_andi_tl(cpu_nip, target, ~3);
}
- tcg_gen_exit_tb(0);
- if ((bo & 0x14) != 0x14) {
- gen_set_label(l1);
- gen_update_nip(ctx, ctx->nip);
- tcg_gen_exit_tb(0);
- }
- }
- if (type == BCOND_LR || type == BCOND_CTR || type == BCOND_TAR) {
+ tcg_gen_lookup_and_goto_ptr(cpu_nip);
tcg_temp_free(target);
}
+ if ((bo & 0x14) != 0x14) {
+ gen_set_label(l1);
+ gen_goto_tb(ctx, 1, ctx->nip);
+ }
}
static void gen_bc(DisasContext *ctx)
--
2.9.4
On Fri, Jun 30, 2017 at 11:37:36 -0700, Richard Henderson wrote: > Cc: qemu-ppc@nongnu.org > Signed-off-by: Richard Henderson <rth@twiddle.net> > --- > target/ppc/translate.c | 23 ++++++++--------------- > 1 file changed, 8 insertions(+), 15 deletions(-) Tested-by: Emilio G. Cota <cota@braap.org> Just measured the speedup for linux-user: SPECint06 (test set), ppc64le-linux-user. Host: IBM POWER8 @ 3.42 GHz 1.6 +-+------+---------+--------+--------+--------+---------+--------+--------+---------+--------+--------+--------+---------+------+-+ | | | | | after | 1.5 +-+.................................................................................|...........................................+-+ | | | | ****** | 1.4 +-+.....+++.....................................................+++..............*..|.*.....+++.................................+-+ | | +++ | * | * | | | | | | * | * ***** | 1.3 +-+......|....................................|..................|...............*..|.*....*.|.*................................+-+ | | +++ ****** ***** * +++* * | * ****** | | ****** | * | * * | * * * *+++* *+++ * | 1.2 +-+....*.|..*...............|...............*.|..*.....+++.....*.|.*.............*....*....*...*.............*....*.............+-+ | * | * | * | * | *+++* * * * * * * ****** | | * | * ***** *+++ * ****** * * * * * * * * * +++* | 1.1 +-+....*+++.*.............*.|.*.............*....*...*.+++*....*...*.............*....*....*...*.....+++.....*....*...*....*....+-+ | * * * | * * * * * * * * * * * | * * * * | | * * * | * * * * * * * ****** * * * * | * * * * | 1 +-+....*....*.....+++.....*+++*.....+++.....*....*...*....*....*...*....*....*...*....*....*...*....*****....*....*...*....*....+-+ | * * | * * | * * * * * * * * * * * * * | * * * * * | | * * | * * ***** * * * * * * * * * * * * * | * * * * * | 0.9 +-+....*....*...******....*...*....*.|.*....*....*...*....*....*...*....*....*...*....*....*...*....*.|.*....*....*...*....*....+-+ | * * * | * * * * | * * * * * * * * * * * * * *+++* * * * * | | * * * +++* * * *+++* * * * * * * * * * * * * * * * * * * | 0.8 +-+----******---******----*****----*****----******---******----*****----******---******----*****----*****----******---******----+-+ 400.perlbench 401.bzip2 403.gcc 429.mcf445.gobmk 456.hmmer458.462.libquantu464.h264r471.omnetpp473.a483.xalancbmk gmean png: http://imgur.com/a/twj6V Thanks, Emilio PS. If you have spec06, you can very easily generate these plots. See https://github.com/cota/runspec-simple/commit/14211b927
On 30.06.2017 20:37, Richard Henderson wrote: > Cc: qemu-ppc@nongnu.org > Signed-off-by: Richard Henderson <rth@twiddle.net> > --- > target/ppc/translate.c | 23 ++++++++--------------- > 1 file changed, 8 insertions(+), 15 deletions(-) > > diff --git a/target/ppc/translate.c b/target/ppc/translate.c > index c0cd64d..9aa66f5 100644 > --- a/target/ppc/translate.c > +++ b/target/ppc/translate.c > @@ -3419,7 +3419,7 @@ static inline bool use_goto_tb(DisasContext *ctx, target_ulong dest) > } > > /*** Branch ***/ > -static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest) > +static void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest) > { > if (NARROW_MODE(ctx)) { > dest = (uint32_t) dest; > @@ -3441,7 +3441,7 @@ static inline void gen_goto_tb(DisasContext *ctx, int n, target_ulong dest) > gen_debug_exception(ctx); > } > } > - tcg_gen_exit_tb(0); > + tcg_gen_lookup_and_goto_ptr(cpu_nip); > } > } > > @@ -3479,7 +3479,7 @@ static void gen_b(DisasContext *ctx) > #define BCOND_CTR 2 > #define BCOND_TAR 3 > > -static inline void gen_bcond(DisasContext *ctx, int type) > +static void gen_bcond(DisasContext *ctx, int type) > { > uint32_t bo = BO(ctx->opcode); > TCGLabel *l1; > @@ -3543,26 +3543,19 @@ static inline void gen_bcond(DisasContext *ctx, int type) > } else { > gen_goto_tb(ctx, 0, li); > } > - if ((bo & 0x14) != 0x14) { > - gen_set_label(l1); > - gen_goto_tb(ctx, 1, ctx->nip); > - } > } else { > if (NARROW_MODE(ctx)) { > tcg_gen_andi_tl(cpu_nip, target, (uint32_t)~3); > } else { > tcg_gen_andi_tl(cpu_nip, target, ~3); > } > - tcg_gen_exit_tb(0); > - if ((bo & 0x14) != 0x14) { > - gen_set_label(l1); > - gen_update_nip(ctx, ctx->nip); > - tcg_gen_exit_tb(0); > - } > - } > - if (type == BCOND_LR || type == BCOND_CTR || type == BCOND_TAR) { > + tcg_gen_lookup_and_goto_ptr(cpu_nip); > tcg_temp_free(target); > } > + if ((bo & 0x14) != 0x14) { > + gen_set_label(l1); > + gen_goto_tb(ctx, 1, ctx->nip); > + } > } > > static void gen_bc(DisasContext *ctx) > Using this patch increases the speed of the SLOF firmware boot quite a bit! The following simple test finishes at least 4 seconds faster when I've got this patch applied: time ppc64-softmmu/qemu-system-ppc64 -nographic -vga none \ -prom-env 'boot-command=power-off' I also can still run my big endian and my little endian pseries guest images successfully, so feel free to add my: Tested-by: Thomas Huth <thuth@redhat.com>
On 30.06.2017 20:37, Richard Henderson wrote: > Cc: qemu-ppc@nongnu.org > Signed-off-by: Richard Henderson <rth@twiddle.net> > --- > target/ppc/translate.c | 23 ++++++++--------------- > 1 file changed, 8 insertions(+), 15 deletions(-) *ping* Richard, David, any chance that we can still get this in for 2.11? I think this would be quite a nice performance improvement for PPC TCG... Thomas
>> Signed-off-by: Richard Henderson <rth@twiddle.net> >> --- >> target/ppc/translate.c | 23 ++++++++--------------- >> 1 file changed, 8 insertions(+), 15 deletions(-) > > *ping* > > Richard, David, any chance that we can still get this in for 2.11? I > think this would be quite a nice performance improvement for PPC TCG... This still miss a Reviewed-by tag ;)
On Thu, Oct 26, 2017 at 02:22:57PM +0200, Thomas Huth wrote: > On 30.06.2017 20:37, Richard Henderson wrote: > > Cc: qemu-ppc@nongnu.org > > Signed-off-by: Richard Henderson <rth@twiddle.net> > > --- > > target/ppc/translate.c | 23 ++++++++--------------- > > 1 file changed, 8 insertions(+), 15 deletions(-) > > *ping* > > Richard, David, any chance that we can still get this in for 2.11? I > think this would be quite a nice performance improvement for PPC TCG... Uh.. sorry, I don't even remember this patch. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
On Thu, Oct 26, 2017 at 11:12:00PM +0200, David Gibson wrote: > On Thu, Oct 26, 2017 at 02:22:57PM +0200, Thomas Huth wrote: > > On 30.06.2017 20:37, Richard Henderson wrote: > > > Cc: qemu-ppc@nongnu.org > > > Signed-off-by: Richard Henderson <rth@twiddle.net> > > > --- > > > target/ppc/translate.c | 23 ++++++++--------------- > > > 1 file changed, 8 insertions(+), 15 deletions(-) > > > > *ping* > > > > Richard, David, any chance that we can still get this in for 2.11? I > > think this would be quite a nice performance improvement for PPC TCG... > > Uh.. sorry, I don't even remember this patch. Managed to dig it out of my archives. Looks like the problem was it was just sent to the lists, not CCed to me. I'm not generally able to keep up with the lists, and I must have missed it on my periodic scans through the list. I've applied it now. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
On Fri, Oct 27, 2017 at 03:44:22PM +0200, David Gibson wrote: > On Thu, Oct 26, 2017 at 11:12:00PM +0200, David Gibson wrote: > > On Thu, Oct 26, 2017 at 02:22:57PM +0200, Thomas Huth wrote: > > > On 30.06.2017 20:37, Richard Henderson wrote: > > > > Cc: qemu-ppc@nongnu.org > > > > Signed-off-by: Richard Henderson <rth@twiddle.net> > > > > --- > > > > target/ppc/translate.c | 23 ++++++++--------------- > > > > 1 file changed, 8 insertions(+), 15 deletions(-) > > > > > > *ping* > > > > > > Richard, David, any chance that we can still get this in for 2.11? I > > > think this would be quite a nice performance improvement for PPC TCG... > > > > Uh.. sorry, I don't even remember this patch. > > Managed to dig it out of my archives. Looks like the problem was it > was just sent to the lists, not CCed to me. I'm not generally able to > keep up with the lists, and I must have missed it on my periodic scans > through the list. I've applied it now. .. and now I've unapplied it, because it doesn't compile. Richard, can you resend a current version? -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
© 2016 - 2024 Red Hat, Inc.