[GHC] #5598: Function quotRem is inefficient

GHC cvs-ghc at haskell.org
Fri Feb 10 13:08:15 CET 2012


#5598: Function quotRem is inefficient
----------------------------------------------+-----------------------------
    Reporter:  boris                          |       Owner:  igloo                  
        Type:  task                           |      Status:  new                    
    Priority:  normal                         |   Milestone:  7.6.1                  
   Component:  Compiler                       |     Version:  7.0.3                  
    Keywords:  division, performance, primop  |          Os:  Unknown/Multiple       
Architecture:  x86                            |     Failure:  Runtime performance bug
  Difficulty:  Unknown                        |    Testcase:                         
   Blockedby:                                 |    Blocking:                         
     Related:                                 |  
----------------------------------------------+-----------------------------

Comment(by simonpj):

 Thanks for looking at this.  And thank you for checking about the design.
 I have some concerns:

  * I'm against having a `MachOp` that returns two results. As you point
 out we’d then need a `CmmType` for a multiple value, and that has knock-on
 consequences that are far reaching and hard to forsee.

  * Likewise I’d really like to avoid adding `CmmAssign2`.

  * Instead, I suggest we use `CmmNode.CmmUnsafeForeignCall`.  That is
 already set up to be a “fat machine instruction”, and already has multiple
 results.  I see no difficulty with this path; it just means adding a
 `CallishMachOp`.

 I'm not sure exactly what the equivalent in the old codegen path is, but
 it'd be ok for the new story to work well only in the new path.

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



More information about the Glasgow-haskell-bugs mailing list