qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [5281] Use the new concat_i32_i64 op for std and stda


From: Paul Brook
Subject: Re: [Qemu-devel] [5281] Use the new concat_i32_i64 op for std and stda
Date: Sun, 21 Sep 2008 17:36:25 +0100
User-agent: KMail/1.9.9

> > It's more efficient to not use concat_i32_i64 on 64-bit targets.
> >  See patch below. I'll let you decide if you want to apply or ignore it.
>
> Good point. How about adding instead a concat_i64_i64 starting from this
> piece: 

I'd call it concat32_i64 (c.f. extu_i32_i64 v.s. ext32u_i64).

> >  +    tcg_gen_shli_i64(dest, high, 32);
> >  +    tcg_gen_ext32u_i64(low, low);
> >  +    tcg_gen_or_i64(dest, dest, low);
>
> and also add defines for concat_tl_i64? That would be both clean and
> efficient.

Sounds reasonable. The cheat for tl->i64 on 32-bit hosts is ok if it's 
confined to tcg-opc.h.

> I think ldd on i386 would benefit from a reverse operation (64 to two
> 32/64 bit words).

64 to 32 should be much easier for TCG to optimize automatically. It's just a 
a series of copies, and can often be implemented without requiring any extra 
temporaries.  The 32 to 64 case is a trickier because you generally need 
additional temporaries for type correctness and have to propagate all the 
zeros through the 64-bit logical or.

Paul




reply via email to

[Prev in Thread] Current Thread [Next in Thread]