[Haskell-cafe] Optimizations and constant unboxed values
Max Bolingbroke
batterseapower at hotmail.com
Fri May 28 03:15:53 EDT 2010
Hi,
On 28 May 2010 01:22, Pierre-Etienne Meunier
<pierreetienne.meunier at gmail.com> wrote:
> Then, examining the core (with of course -O3 on)
FYI, -O3 is the same as -O2.
> revealed things like :
>
> (GHC.Prim.*##
> (GHC.Prim.-## 1.0 (GHC.Prim.**## 2.0 -53.0))
> (GHC.Prim.**## 2.0 1024.0))
>
> or
>
> case GHC.Prim.<## x_aB9 (GHC.Prim.**## 2.0 -1021.0) of _ {...
GHC does constant-fold many operations on floats/doubles at the Core
level (see PrelRules.lhs) but there is no RULE for **. Perhaps there
should be.
> Then I wondered if this was really the last stage of GHC's optimizations,
I eyeballed the C-- code generator and it looks like that doesn't
constant-fold ** either.
> Any clue about how to do it ?
I think that rewriting your code is the only thing you can do. Please
also submit a bug to the tracker and I'm sure that the right RULEs
will get added soon.
Cheers,
Max
More information about the Haskell-Cafe
mailing list