Change return type for Int64# and Word64# comparisons?

Hi all, With the recent change of comparison primops to return Int# instead of Bool, the 64 bit operations were also changed, to return Int64# or Word64#: https://github.com/jstolarek/packages-ghc-prim/commit/07920f03d76dbaec64e382... It seems a bit wasteful to me to return a value bigger than a machine word for just a boolean. Changing the type to Int# would make the same optimizations possible as for the native-sized primops (though for me personally Bool would be even better since they map to JavaScript bools in GHCJS). thoughts? luite

for me personally Bool would be even better To get a Bool you can use wrappers defined in the same module, e.g.:
geInt64# :: Int64# -> Int64# -> Bool
geInt64# a b = tagToEnum# (int64ToInt# (geInt64## a b))
Looking at the implementation of this wrapper I think Luite has a point - to get a Bool it has to be caste to a machine supported Int#. So I think that it would make sense to have these primops retunr Int# instead of Int64#, but I'd like to hear what others have to say.
Janek
----- Oryginalna wiadomość -----
Od: "Luite Stegeman"

Please use native size. Eg Int# and/or Word# Booleans should always always be a size that fits in native registers. (If there's good reasons to the contrary, I'd love to hear them) Thanks Luite for noticing this! On Thursday, August 15, 2013, Jan Stolarek wrote:
for me personally Bool would be even better To get a Bool you can use wrappers defined in the same module, e.g.:
geInt64# :: Int64# -> Int64# -> Bool geInt64# a b = tagToEnum# (int64ToInt# (geInt64## a b))
Looking at the implementation of this wrapper I think Luite has a point - to get a Bool it has to be caste to a machine supported Int#. So I think that it would make sense to have these primops retunr Int# instead of Int64#, but I'd like to hear what others have to say.
Janek
----- Oryginalna wiadomość ----- Od: "Luite Stegeman"
javascript:;> Do: "ghc-devs" javascript:;> Wysłane: czwartek, 15 sierpień 2013 16:36:59 Temat: Change return type for Int64# and Word64# comparisons? Hi all,
With the recent change of comparison primops to return Int# instead of Bool, the 64 bit operations were also changed, to return Int64# or Word64#:
https://github.com/jstolarek/packages-ghc-prim/commit/07920f03d76dbaec64e382...
It seems a bit wasteful to me to return a value bigger than a machine word for just a boolean. Changing the type to Int# would make the same optimizations possible as for the native-sized primops (though since they map to JavaScript bools in GHCJS).
thoughts?
luite
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org javascript:; http://www.haskell.org/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org javascript:; http://www.haskell.org/mailman/listinfo/ghc-devs

Yes I agree: native Int#! Simon From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Carter Schonwald Sent: 15 August 2013 17:43 To: Jan Stolarek Cc: ghc-devs Subject: Re: Change return type for Int64# and Word64# comparisons? Please use native size. Eg Int# and/or Word# Booleans should always always be a size that fits in native registers. (If there's good reasons to the contrary, I'd love to hear them) Thanks Luite for noticing this! On Thursday, August 15, 2013, Jan Stolarek wrote:
for me personally Bool would be even better To get a Bool you can use wrappers defined in the same module, e.g.:
geInt64# :: Int64# -> Int64# -> Bool
geInt64# a b = tagToEnum# (int64ToInt# (geInt64## a b))
Looking at the implementation of this wrapper I think Luite has a point - to get a Bool it has to be caste to a machine supported Int#. So I think that it would make sense to have these primops retunr Int# instead of Int64#, but I'd like to hear what others have to say.
Janek
----- Oryginalna wiadomość -----
Od: "Luite Stegeman"

OK, will fix that ASAP. Janek Dnia czwartek, 15 sierpnia 2013, Simon Peyton-Jones napisał:
Yes I agree: native Int#!
Simon
From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of Carter Schonwald Sent: 15 August 2013 17:43 To: Jan Stolarek Cc: ghc-devs Subject: Re: Change return type for Int64# and Word64# comparisons?
Please use native size. Eg Int# and/or Word#
Booleans should always always be a size that fits in native registers. (If there's good reasons to the contrary, I'd love to hear them)
Thanks Luite for noticing this!
On Thursday, August 15, 2013, Jan Stolarek wrote:
for me personally Bool would be even better
To get a Bool you can use wrappers defined in the same module, e.g.:
geInt64# :: Int64# -> Int64# -> Bool geInt64# a b = tagToEnum# (int64ToInt# (geInt64## a b))
Looking at the implementation of this wrapper I think Luite has a point - to get a Bool it has to be caste to a machine supported Int#. So I think that it would make sense to have these primops retunr Int# instead of Int64#, but I'd like to hear what others have to say.
Janek
----- Oryginalna wiadomość ----- Od: "Luite Stegeman"
javascript:;> Do: "ghc-devs" javascript:;> Wysłane: czwartek, 15 sierpień 2013 16:36:59 Temat: Change return type for Int64# and Word64# comparisons? Hi all,
With the recent change of comparison primops to return Int# instead of Bool, the 64 bit operations were also changed, to return Int64# or Word64#:
https://github.com/jstolarek/packages-ghc-prim/commit/07920f03d76dbaec64e38 29404d332af22d744fe
It seems a bit wasteful to me to return a value bigger than a machine word for just a boolean. Changing the type to Int# would make the same optimizations possible as for the native-sized primops (though since they map to JavaScript bools in GHCJS).
thoughts?
luite
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.orgjavascript:; http://www.haskell.org/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.orgjavascript:; http://www.haskell.org/mailman/listinfo/ghc-devs
participants (4)
-
Carter Schonwald
-
Jan Stolarek
-
Luite Stegeman
-
Simon Peyton-Jones