Use isTrue# around primitive comparisons in integer-gmp
authorReid Barton <rwbarton@gmail.com>
Sun, 26 Jul 2015 03:00:52 +0000 (23:00 -0400)
committerReid Barton <rwbarton@gmail.com>
Sun, 26 Jul 2015 03:00:52 +0000 (23:00 -0400)
commit7e70c063ad88052ca5f2586eb07e5d1571956acd
tree5b6bbf1b74e44e2f4f8a46bcc4c20fae9e83c528
parent070f76ac36983c33919628092e992bef1055869e
Use isTrue# around primitive comparisons in integer-gmp

Summary:
The form
  case na# ==# nb# of
    0# -> ...
    _  -> ...
sometimes generates convoluted assembly, see #10676.
timesInt2Integer was the most spectacular offender, especially as
it is a rather cheap function overall (no calls to gmp).

I checked a few instances and some of the old generated assembly
was fine already, but I changed them all for consistency. The new
form is also more consistent with use of these primops in general.

Test Plan: validate

Reviewers: hvr, bgamari, goldfire, austin

Reviewed By: hvr

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1094
libraries/integer-gmp/src/GHC/Integer/Type.hs