Christiaan Baaij [Sat, 20 Mar 2010 15:42:05 +0000 (16:42 +0100)]
Fix zipWith template to work with partially applied functions, add support for boolean negation, and update error message of classopresolution transformation
Restructure the top level inlining transformation.
It now checks to see if the original (non-normalized) body is already
simple and only resorts to normalizing if the original body isn't simple
already. This should speed things up a bit, also because inlining the
normalized body probably needs some extra cleanups.
Don't resolve class operations that are builtin functions.
We already have a fixed VHDL translation for these, and usually the
actual implementation is not translateable (for example, the derived Eq
instances translate dataconstructors to Int#'s and use GHC.Prim.==# to
compare them).
Let classoperationresolution handle partially inlined dictionaries.
Previously, if a dictionary argument was not yet an application of a
dataconstructor (e.g., completely inlined) but an application of a
polymorphic top level binder (e.g., $fsomething), then it would complain
about mismatching types.
Christiaan Baaij [Wed, 11 Nov 2009 14:52:33 +0000 (15:52 +0100)]
Merge branch 'cλash' of http://git.stderr.nl/matthijs/projects/master-project
* 'cλash' of http://git.stderr.nl/matthijs/projects/master-project:
Actually make the scrutinee binder removal not crash.
Add scrutinee binder removal transformation.
Merge branch 'cλash' of http://git.stderr.nl/matthijs/projects/master-project
* 'cλash' of http://git.stderr.nl/matthijs/projects/master-project:
Add a trailing newline to HighOrdAlu.
Add comments to the inlinetoplevel transformation.
Update comments for inlinenonrep.
Fix typo.
Fix typo.
Merge branch 'master' of git://github.com/christiaanb/clash into cλash
* 'master' of git://github.com/christiaanb/clash:
TFP has updated/remade. Change hardwaretypes accordingly
Connect resetn port to states.
Fix the resetn signal in the testbench, it is now correctly '0' for 3 ns, and after that '1'
Christiaan Baaij [Thu, 20 Aug 2009 12:22:09 +0000 (14:22 +0200)]
Connect resetn port to states.
Atleast initial state can now easily be added manual.
Be sure to update to the latest 'vhdl' package as the
old one incorrectly pretty printed the "elsif" keyword
Christiaan Baaij [Thu, 20 Aug 2009 07:15:43 +0000 (09:15 +0200)]
Merge branch 'cλash' of http://git.stderr.nl/matthijs/projects/master-project
* 'cλash' of http://git.stderr.nl/matthijs/projects/master-project:
Add a not in isUserDefined.
Let vhld_ty handle free tyvars gracefully.
Add ty_has_free_tyvars predicate.
Split substitute into substitute and substitute_clone.
Rewrite substitute to clone the substitution range.
Don't error on type abstraction when cloning binders.
When inlining top level functions, guarantee uniqueness.
Make all binders unique before normalizing.
Add genUniques function to regenerate all uniques.
Add mapAccumLM helper function.
Don't try to inline non-normalizeable top level functions.
Add andM and orM utility functions.
Add isNormalizeable predicate.
Make isRepr work on TypedThings instead of CoreExpr.
Also inline functions named "fromInteger".
Don't extra non-representable values in simplres.
Use isUserDefined for (not) inlining top level functions.
Add isUserDefined predicate.
Inline all top level functions that look simple.
Merge branch 'master' of git://github.com/christiaanb/clash into cλash
* 'master' of git://github.com/christiaanb/clash:
Work around some bugs in the current clash to make reducer compile correctly
Just name the testbench: testbench; don't add the unique
No longer allow slashes in extended names, they are now stripped
Used unsigned instead of natural as representation of RangedWord
Add resetn ports
Previously, free type vars could result in ugly errors from eval_tfp_int
and friends. Now, a type with free type vars is correctly marked as
non-representable.
Rewrite substitute to clone the substitution range.
This makes substitute no longer use CoreSubst for id substitutions, just
for type substitutions (which we don't have to clone before replacing
them). By cloning the substitution range before every substitution, we
keep the binders in it globally unique.
Don't error on type abstraction when cloning binders.
Since we might encounter type abstractions before normalizations, the old
behaviour broke on polymorphic functions (Though type arguments would have
been propagated, there would still be type abstractions directly applied
to the propagated types).
Note that this not actually clones the type variables, it just leaves them
untouched. Since we should never introduce new type variables, this should
_probably_ work out...