On Mon, May 07, 2007 at 08:58:33AM +0100, Simon Marlow wrote:
> Ian Lynagh wrote:
> >Thu May  3 15:38:33 PDT 2007  Ian Lynagh <[EMAIL PROTECTED]>
> >  * Fix truncate on amd64 NCG; fixes arith005.
> >  cvts[sd]2siq? ->
> >  cvtts[sd]2siq?
> 
> Something still looks odd here.  We have a RULE in GHC/Float.hs mapping 
> truncate on Float->Int to the float2Int# primop (similarly for Double), 
> which means that either float2Int# should have truncating semantics, or the 
> RULE is wrong.  Looks like you fixed the primop to have truncating 
> semantics for the x86_64 NCG,

Right.

> but it looks it still has rounding semantics 
> for other platforms: the x86 NCG uses fistpl, which rounds by default, and 

I didn't check that one, as stateful instructions make it a pain to be
sure what it's going to do. I think I did check that sparc was also
truncating, though.

> when going via C we use a cast, which also rounds.

It looks like it truncates to me...

> Who is right?  I'd have thought the primop should round by default, but 
> then the RULE is wrong.

Perhaps we should have one or both of truncateFloat2Int and
roundFloat2Int instead?


Thanks
Ian

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to