diff options
author | Sylvain Henry <sylvain@haskus.fr> | 2021-10-20 11:39:16 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-11-06 07:53:42 -0400 |
commit | 20956e5784fe43781d156dd7ab02f0bff4ab41fb (patch) | |
tree | de4776b5223cc3e6c983bd4eec28cbef4f973a8f /testsuite/tests/codeGen/should_run/cgrun076.hs | |
parent | 646c3e21dd30a2eaae46aafb8678d29f8e06054d (diff) | |
download | haskell-20956e5784fe43781d156dd7ab02f0bff4ab41fb.tar.gz |
Remove target dependent CPP for Word64/Int64 (#11470)
Primops types were dependent on the target word-size at *compiler*
compilation time. It's an issue for multi-target as GHC may not have the
correct primops types for the target.
This patch fixes some primops types: if they take or return fixed 64-bit
values they now always use `Int64#/Word64#`, even on 64-bit
architectures (where they used `Int#/Word#` before). Users of these
primops may now need to convert from Int64#/Word64# to Int#/Word# (a
no-op at runtime).
This is a stripped down version of !3658 which goes the all way of
changing the underlying primitive types of Word64/Int64. This is left
for future work.
T12545 allocations increase ~4% on some CI platforms and decrease ~3% on
AArch64.
Metric Increase:
T12545
Metric Decrease:
T12545
Diffstat (limited to 'testsuite/tests/codeGen/should_run/cgrun076.hs')
-rw-r--r-- | testsuite/tests/codeGen/should_run/cgrun076.hs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/testsuite/tests/codeGen/should_run/cgrun076.hs b/testsuite/tests/codeGen/should_run/cgrun076.hs index 4779b5beb8..ce26e375d0 100644 --- a/testsuite/tests/codeGen/should_run/cgrun076.hs +++ b/testsuite/tests/codeGen/should_run/cgrun076.hs @@ -36,7 +36,11 @@ instance Pext Word32 where pext (W32# src#) (W32# mask#) = W32# (wordToWord32# (pext32# (word32ToWord# src#) (word32ToWord# mask#))) instance Pext Word64 where +#if WORD_SIZE_IN_BITS < 64 pext (W64# src#) (W64# mask#) = W64# (pext64# src# mask#) +#else + pext (W64# src#) (W64# mask#) = W64# (word64ToWord# (pext64# (wordToWord64# src#) (wordToWord64# mask#))) +#endif class SlowPext a where slowPext :: a -> a -> a |