yeah, like, currently the XOR for setting registers to zero trick / code optimization (first implemented in ghc backend by reid barton) is done as part of the pretty printer on X86/AMD_64 targets
this and a lot of other easy win peephole optimizations that are platform /target dependent happen in the pretty printer atm I thnk On Thu, Oct 28, 2021 at 5:38 PM Ben Gamari <b...@smart-cactus.org> wrote: > Norman Ramsey <n...@cs.tufts.edu> writes: > > > On x86, GHC can translate 8-bit and 16-bit operations directly > > into the 8-bit and 16-bit machine instructions that the hardware > > supports. But there are other platforms on which the smallest > > unit of arithmetic may be 32 or even 64 bits. Is there a central > > module in GHC that can take care of rewriting 8-bit and 16-bit operations > > into 32-bit or 64-bit operations? Or is each back end on its own > > for this? > > > > (One of my students did some nice work on implementing this > transformation > > with a minimal set of sign-extension and zero-extension operations: > > https://www.cs.tufts.edu/~nr/pubs/widen.pdf.) > > > As Carter indicated, this is currently done on a per-backend basis. This > could indeed probably be consolidated, although we would want to make > sure that in so doing we do not leave easy money on the table: It seems > plausible to me that the backend may be able to generate better code > than a naive lowering to wide arithmetic might otherwise generate. > > Cheers, > > - Ben > _______________________________________________ > ghc-devs mailing list > ghc-devs@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs >
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs