
#9251: ghc does not expose branchless max/min operations as primops -------------------------------------+------------------------------------- Reporter: carter | Owner: Type: task | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.8.2 Resolution: | Keywords: newcomer Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime | Unknown/Multiple performance bug | Test Case: Blocked By: | Blocking: Related Tickets: #9246 | Differential Revisions: -------------------------------------+------------------------------------- Comment (by osa1): I'm trying to understand this ticket; do we need to compile these functions: {{{ minDbl :: Double -> Double -> Double minDbl !d1 !d2 = if d1 < d2 then d1 else d2 minDbl' :: Double -> Double -> Double minDbl' !d1 !d2 = if d2 < d1 then d2 else d1 }}} to branchless code(using `movsd` with right argument ordering, and similarly `movss` for `Float`), or are we only interested in branchless `Ord.min`, `Ord.max` etc.? E.g. something like this: {{{ mindbl'' :: Double -> Double -> double mindbl'' (D# d1) (D# d2) = ... use new primop here ... }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9251#comment:12 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler