[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] TCG: 64-bit temporaries on 32-bit target?
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] TCG: 64-bit temporaries on 32-bit target? |
Date: |
Wed, 3 Sep 2008 07:01:36 +0200 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
On Wed, Sep 03, 2008 at 02:00:38AM +0200, Andreas Färber wrote:
> Hello,
>
> On PowerPC there appear to be some "SPE" instructions that operate on
> 64-bit registers while the rest of the target is 32-bit. In dyngen code,
> they can easily use T0_64 then.
>
> In TCG however, cpu_T[0] is tl==i32 for ppc, only for ppc64 would
> cpu_T[0] work due to tl==i64. At the same time I was told I can't use
> tcg_gen_movi_i32 for tl cpu_T[n], so it seems we can't just
> unconditionally use i64 for cpu_T[0..2] either?
That solution would be a performance regression anyway.
> This issue prevents dyngen op_load_gpr_{T0,T1} from being removed
> because ppc64 gen_op_load_gpr64_{T0,T1} reuses them.
>
The same solution than dyngen should work, that is defining cpu_T64[0]
and cpu_T64[1], either as i64 on the 32-bit target, or are an alias
(#define) of cpu_T[0] and cpu_T[1] on the 64-bit target.
Then you can use _i64 TCG instructions.
Always defining cpu_T64[0] and cpu_T64_[1] as i64 and independantly than
cpu_T[0] and cpu_T[1] should also work, as anyway those variables
should disappear when optimising the TCG code.
--
.''`. Aurelien Jarno | GPG: 1024D/F1BCDB73
: :' : Debian developer | Electrical Engineer
`. `' address@hidden | address@hidden
`- people.debian.org/~aurel32 | www.aurel32.net