[GHC] #14971: Use appropriatly sized comparison instruction for small values.

GHC ghc-devs at haskell.org
Mon Mar 26 08:37:01 UTC 2018


#14971: Use appropriatly sized comparison instruction for small values.
-------------------------------------+-------------------------------------
        Reporter:  AndreasK          |                Owner:  (none)
            Type:  task              |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:
  (CodeGen)                          |
      Resolution:                    |             Keywords:  CodeGen
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by AndreasK):

 Replying to [comment:1 simonpj]:
 > Sounds good!  1.5% is a lot. How did you get that figure?

 Indeed it's more than I would have expected.

 But these are micro benchmarks so it's hard to predict how much of that
 will remain when running regular programs. Given that cache behaviour and
 cpu bottlecks would be different there.

 I've compiled two criterion benchmarks and changed the assembly by Hand.
 One example was:
 {{{
 module Main (main) where

 import Criterion.Main

 mapInt :: Int -> Int
 mapInt 1 = 111
 mapInt 2 = 211
 mapInt 3 = 311

 {-# NOINLINE sumAndLookup #-}
 sumAndLookup :: [Int] -> Int
 sumAndLookup = sum . map mapInt

 main = do
   let value = map (\x -> 1 + x `mod` 3) [1..30]
   print (sumAndLookup value)
   defaultMain [
     bgroup "opSize"
         [ bench "caseOfThree"  $ whnf sumAndLookup value]
     ]
 }}}

 > Do you have a patch :-)?

 Not yet. I submitted a project proposal for Summer of Code which includes
 writing a patch for this.

 But if that should not work out I still expect to get around to it
 eventually.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14971#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list