Re: [GHC] #5615: ghc produces poor code for `div` with constant powers of 2.

#5615: ghc produces poor code for `div` with constant powers of 2. -------------------------------------+------------------------------------- Reporter: Lennart | Owner: daniel.is.fischer Type: bug | Status: new Priority: normal | Milestone: 7.6.2 Component: Compiler | Version: 7.4.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: x86 Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------- Comment (by thomie): How about implementing Euclidean division? [http://legacy.cs.uu.nl/daan/download/papers/divmodnote.pdf Division and Modulus for Computer Scientists] (6 pages pdf) by [http://research.microsoft.com/en-us/people/daan/ Daan Leijen]. "Boute argues that Euclidean division is superior to the other ones in terms of regularity and useful mathematical properties, allthough floored division, promoted by Knuth, is also a good definition. Despite its widespread use, truncated division is shown to be inferior to the other definitions. An interesting mathematical property that is only satisfied by Euclidean division is the shift-rule. A compiler can use this to optimize divisions by a power of two into an arithmetical shift or a bitwise-and operation." D '''div''',,E,, (2^n^) = D '''asr''' n D '''mod''',,E,, (2^n^) = D '''and''' (2^n - 1^) Note: [https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer /dart-core.num Dart]'s modulo operator (%) uses Euclidean division. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/5615#comment:17 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC