[Haskell-cafe] GHC optimisations

Simon Peyton-Jones simonpj at microsoft.com
Wed Aug 22 11:57:18 EDT 2007


| Something I've pondered is adding a more-expressive form of RULES which
| works using general pattern matching:

Yes, but it would need the rule-matcher in the Simplifier to be more sophisticated.  Have a look in specialise/Rules.lhs.

No need to be so ambitious; just moving towards what you can do in PrelRules would be an improvement

Simon

|
| {-# XRULES
|  "*#-to-shift" (*#)
|   (CoreLit (CoreInt num)) obj
|       | num .&. (num - 1) == 0  ->
|           CoreApp (CoreVar "GHC.Prim.iShiftL#")
|                   [obj, CoreLit (CoreInt (lg2 num))]
|   obj (CoreLit (CoreInt num))
|       | num .&. (num - 1) == 0  ->
|           CoreApp (CoreVar "GHC.Prim.iShiftL#")
|                   [obj, CoreLit (CoreInt (lg2 num))]
| #-}
|
| This would require reusing the TH infrastructure, and (depending on how
| much we can abstract) might leak too many details of Core to be
| useful; on the other hand it would allow some very interesting domain
| optimizations to be done.
|
| Views might be nice here.
|
| Opinions on whether something like this is a good idea?
|
| Stefan


More information about the Haskell-Cafe mailing list