On Mon, Nov 25, 2002 at 05:40:36PM +0100, Leopold Toetsch wrote:
> Nicholas Clark wrote:

> > I'm surprised that you did your regression tests longhand, rather than having
> > a data table in perl of input and expected output, and auto-generating parrot
> > code.
> 
> 
> Writing a few explicit tests is faster ;-)

Good answer.
When I have tuits (little white things made of ice, commonly found in hell)
I'll re-write your tests as autogenerated from a table of pathological cases.

> > Is there any speed advantage in truncating by casting via a C type
> > [eg a = (int)(short) b]
> > rather than  and on a bitmask
> > [eg a = b & 0xFFFF]
> > ?
> 
> 
> gcc uses MOVSX (movs{b,w}l), move byte/word with sign extend to 32 bit. 
> This is listed to take 3 cycles which "and mem" needs too. Inkluding 
> sign extension would be slower then.

and gcc's optimiser is not clever enough to spot bit & cases that are not
equivalent to this? :-(

> > We're going to have to do that latter to make it work on Crays anyway, so is
> > a conditional compile to chose between the two worth it?
> 
> 
> My Cray is currently out of order ;-) What is special with it?

sizeof(short) == 8

[sizeof (int) == 8 for that matter, and the elements of a sockaddr_in
structure are bitfields, so you can't take the address of them.]

Nicholas Clark

Reply via email to