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?

    M ./compiler/nativeGen/MachCodeGen.hs -1 +3
    M ./compiler/nativeGen/MachInstrs.hs -2 +2
    M ./compiler/nativeGen/PprMach.hs -6 +6
    M ./compiler/nativeGen/RegAllocInfo.hs -4 +4

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, but it looks it still has rounding semantics for other platforms: the x86 NCG uses fistpl, which rounds by default, and when going via C we use a cast, which also rounds.

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

Cheers,
        Simon

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

Reply via email to