[GHC] #13569: Optimise code-gen for field-updates of large products

GHC ghc-devs at haskell.org
Tue Apr 18 12:09:45 UTC 2017


#13569: Optimise code-gen for field-updates of large products
-------------------------------------+-------------------------------------
        Reporter:  hvr               |                Owner:  (none)
            Type:  task              |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.0.1
  (CodeGen)                          |
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  Other             |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by bgamari):

 It's best not to view `memcpy` as a "normal" function. C compilers are
 generally quite eager to inline and unroll small `memcpy`s and will choose
 from among multiple implementation depending upon the known alignment and
 size of the copy. Moreover, they also generally have optimization passes
 which look for code that functionally resembles `memcpy` and replaces it
 with the builtin.

 My understanding is that the advantage of `memcpy` is generally felt when
 you have blocks of multiples of the wordsize as this allows you to
 leverage the target's SIMD instructions, using its full memory bandwidth.
 Consequently, the best case here would be that you memcpy the whole heap
 object and then do whatever updates are necessary.

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


More information about the ghc-tickets mailing list