PPC: e500: Merge 32 and 64 bit SPE emulation
commit13b6a455655068e6f86576c43ef070995dccaa40
authorAlexander Graf <agraf@suse.de>
Wed, 4 Jun 2014 20:58:50 +0000 (4 22:58 +0200)
committerAlexander Graf <agraf@suse.de>
Mon, 16 Jun 2014 11:24:41 +0000 (16 13:24 +0200)
treec242a7f425a1af19431fa9dadd3ab6dc23b0e2eb
parentf7d69146549d717ef6cb5a68a3a4452391416f22
PPC: e500: Merge 32 and 64 bit SPE emulation

Today we have a lot of conditional code in the SPE emulation depending on
whether we have 64bit GPRs or not.

Unfortunately the assumption that we can just recycle the 64bit GPR
implementation is wrong. Normal SPE implementations maintain the upper 32 bits
on all non-SPE instructions which then only modify the low 32 bits. However
all instructions we model that adhere to the normal SF based switching don't
care whether they operate on 32 or 64 bit registers and just always use the full
64 bits.

So let's remove that dubious SPE optimization and revert everything to the same
code path the 32bit target code was taking. That way we get rid of differences
between the two implementations, but will get a slight performance hit when
emulating SPE instructions.

This fixes SPE emulation with qemu-system-ppc64 for me.

Signed-off-by: Alexander Graf <agraf@suse.de>
target-ppc/cpu.h
target-ppc/translate.c