All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] TCG and branches
@ 2016-07-30 23:53 Benjamin Herrenschmidt
  2016-07-31 18:25 ` [Qemu-devel] [Qemu-ppc] " Nikunj A Dadhania
  2016-08-06  2:43 ` [Qemu-devel] " Richard Henderson
  0 siblings, 2 replies; 4+ messages in thread
From: Benjamin Herrenschmidt @ 2016-07-30 23:53 UTC (permalink / raw)
  To: Richard Henderson; +Cc: qemu-devel, qemu-ppc

Hi Richard !

So in my discovery of TCG, one thing I noticed is the horrendous amount
of code generated for branches, especially conditional ones.

I have a patch at least to remove a bunch of dead gunk on target-ppc
for non-conditional ones (we still generated the "else" of the
condition even when never branching to it).

However, I wonder if there are ways to do better.

The first obvious thing that comes to mind is to avoid stopping the
TB on a non-taken conditional branch. The reason that can't be done
today, from my limited understanding of things, is because we only
support index 0 and 1 today for gen_goto_tb().

Now I haven't completely figured out how TB linkage works under the
hood but do you know of any fundamental reason why we have that limit ?

Could we, for example, have a limit of, for example, 8 and only break
the TB after a branch if we have less than 2 left ?

Or are there deeper reasons why we really can't link more than 2 ?

With the current implementation, a non-taken branch results in three
branches: One to "skip over" the condition-true case, one to the new TB
and one in the header of that new TB to check for exits. We could
reduce to one in most cases.

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-08-06  2:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-30 23:53 [Qemu-devel] TCG and branches Benjamin Herrenschmidt
2016-07-31 18:25 ` [Qemu-devel] [Qemu-ppc] " Nikunj A Dadhania
2016-07-31 18:31   ` Nikunj A Dadhania
2016-08-06  2:43 ` [Qemu-devel] " Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.