Cédric Pasteur
4d912e9349
Added more options for memalloc
...
There is now three options for memory allocation:
- -only-linear activates only the linear
annotations (with typing and code generation)
- -only-memalloc does only memory allocation
- -memalloc does both
When linear typing is not activated, linearity
annotations are ignored (the signature in the .epi
does not contain the annotations)
2011-09-09 16:05:44 +02:00
Cédric Pasteur
eb18342c33
Do not forget to also traverse local linear vars
2011-09-09 16:00:21 +02:00
Cédric Pasteur
b0bb7ad39f
Fixed problem with application of memalloc
2011-09-09 15:53:15 +02:00
Cédric Pasteur
c550b09805
Fixed code generated for alias types to arrays
2011-09-09 13:54:29 +02:00
Cédric Pasteur
9427117fe1
Fixed linear typing of accumulators
2011-09-09 11:29:24 +02:00
Cédric Pasteur
eb0a19926c
Erase all linearities if memalloc is not activated
2011-09-09 10:11:44 +02:00
Cédric Pasteur
08437bf448
Fixed linear typing of nested calls
2011-09-08 14:27:24 +02:00
Cédric Pasteur
7bf5f3f323
Fixed typing of iterator
2011-09-08 14:10:55 +02:00
Cédric Pasteur
09afb3aca4
Fixed invalid types in static expressions
2011-09-08 13:05:17 +02:00
Cédric Pasteur
70787757aa
Fixed normalization of fby
...
The incorrect behaviour was introduced in commit
6b86b86e9d
.
We should have:
o = v fby e
becomes
mem_o = v fby e;
o = mem_o
The old way would break with:
v = true fby false fby v
that would generate unschedulable code.
2011-09-08 11:45:43 +02:00
Cédric Pasteur
2105d7ad18
Fix for linear types and automata
2011-09-08 10:45:19 +02:00
Cédric Pasteur
81947eca40
Made linearity field not optional
...
This helped solve a few bugs with linear types,
for instance when using automata.
The intermediate code is not well-typed (wrt to
linear types only), after the encoding of automata.
2011-09-07 17:51:31 +02:00
Cédric Pasteur
29a6721121
Fix for dep when using linear types and automata
2011-09-07 17:27:58 +02:00
Cédric Pasteur
9d1702587a
Fix interaction between tomato and memalloc
...
Take linearity into account when comparing exps
2011-09-07 14:15:33 +02:00
Cédric Pasteur
caa43f163f
Added dependency from a read to a linear read
...
This got lost along the way when porting memalloc
to the new branch
2011-09-07 14:14:59 +02:00
Cédric Pasteur
53043b403c
Small fixes in the C backend
2011-09-07 13:24:33 +02:00
Cédric Pasteur
7119ca1050
Made the argument non optional
2011-09-07 11:34:11 +02:00
Cédric Pasteur
7ac567cc35
Update the signature instead of recreating it
...
This avoids losing additional info in the
signature (such as linearity)
2011-09-07 11:32:16 +02:00
Cédric Pasteur
732a956855
Adapt to the (not so) new extvalues
2011-09-06 15:56:07 +02:00
Cédric Pasteur
eec957cc6a
Use underscores for generated variables
2011-09-06 14:42:34 +02:00
Cédric Pasteur
2147402a20
Const should be declared static
...
Otherwise the C compiler complains about multiple
definitions of the same symbol
2011-09-06 14:31:14 +02:00
Cédric Pasteur
4cd506f3db
Added c ast for constant
...
Also print only short names for struct fields
2011-09-06 14:20:57 +02:00
Cédric Pasteur
e7e81f2637
Added some missing operators
2011-09-06 14:19:45 +02:00
Cédric Pasteur
33bc0adff1
Type should be unaliased when expecting an array
2011-09-06 13:39:44 +02:00
Cédric Pasteur
8cc879be7a
Generate code from interface (.epi) files
...
It includes the definition of types, constants
and prototypes defined in the interface.
2011-09-06 11:55:06 +02:00
Cédric Pasteur
5843869adb
Load module before trying to unalias
2011-09-05 16:00:57 +02:00
Cédric Pasteur
78fe2d2fce
Open modules _before_ static scoping
2011-09-05 15:33:31 +02:00
Cédric Pasteur
379f509dfc
Added typing of signatures
...
This fixes a bug where mapfold would insert
untyped constants in the code.
2011-09-05 15:33:31 +02:00
Gwenaël Delaval
c57b71b6aa
Merge branch 'bzr' into decade
...
- Added Boolean module (enum types to boolean vectors)
- Added Hept_clocking analysis, called before Boolean
- Added z3z target from minils (sigali format)
- Bug corrections in Normalize, Normalize_mem
Conflicts:
compiler/heptagon/analysis/typing.ml
compiler/heptagon/heptagon.ml
compiler/heptagon/parsing/hept_parser.mly
compiler/heptagon/parsing/hept_parsetree.ml
compiler/heptagon/parsing/hept_scoping.ml
compiler/main/hept2mls.ml
compiler/main/heptc.ml
compiler/main/mls2seq.ml
compiler/minils/minils.ml
compiler/minils/transformations/normalize_mem.ml
test/check
2011-08-04 13:37:33 +02:00
Gwenal Delaval
2c4be9d42c
Correct scoping and typing with contracts
2011-07-27 16:13:45 +02:00
Gwenal Delaval
c77386d517
Active Boolean pass and Sigali backend
2011-07-27 11:21:34 +02:00
Cédric Pasteur
134ab83b05
Fix the Makefile
...
It simply calls ocamlbuild. We still need a way
to configure and install necessary files.
2011-07-27 09:12:09 +02:00
Cédric Pasteur
da8956e247
Revert changes
...
Bring back cvarlist_of_ovarlist with a more
explicit name to show its specificity
2011-07-22 10:52:31 +02:00
Brice Gelineau
9fb42a5feb
Removed unused functions in C generation
2011-07-21 18:01:32 +02:00
Cédric Pasteur
de71831b2c
Idents and params should not have the same name
...
Raise an error if an ident has the same name as
a static parameter
2011-07-21 14:16:35 +02:00
Cédric Pasteur
a52e80bcad
Fixed some TODOs
2011-07-21 11:54:52 +02:00
Cédric Pasteur
69a5ad8df8
Fixed code generation of n-dim static arrays
...
Also added some tests.
2011-07-21 11:19:07 +02:00
Cédric Pasteur
d20932e13c
Better error message for argument errors
...
Print a message to show the problem is with the
arguments and not the expression itself, by
catching the exception earlier.
2011-07-21 10:50:51 +02:00
Cédric Pasteur
e11bf08dae
Better error message for array type errors
...
If an array of the wrong size is given, give an
error with the full types instead of the bare
constraint.
2011-07-21 10:26:34 +02:00
Cédric Pasteur
0a372672e0
Fixed bug with type alias
...
We should always unalias a type if we're expecting
an array type.
2011-07-21 09:13:49 +02:00
Cédric Pasteur
7d95b95ed7
Merge branch 'memalloc' into decade
...
Conflicts:
compiler/global/signature.ml
compiler/heptagon/analysis/typing.ml
compiler/heptagon/hept_printer.ml
compiler/heptagon/hept_utils.ml
compiler/heptagon/heptagon.ml
compiler/heptagon/parsing/hept_parser.mly
compiler/heptagon/parsing/hept_parsetree.ml
compiler/heptagon/parsing/hept_scoping.ml
compiler/heptagon/transformations/switch.ml
compiler/main/hept2mls.ml
compiler/minils/minils.ml
compiler/minils/mls_printer.ml
compiler/obc/c/cgen.ml
compiler/obc/control.ml
compiler/utilities/misc.mli
2011-07-21 08:50:45 +02:00
Léonard Gérard
250ccb8e23
Fix iterators obc pattern types
2011-07-08 17:22:58 +02:00
Léonard Gérard
57155b45e2
remove the ; _ } from ocaml 3.12 ...
2011-07-08 15:31:17 +02:00
Adrien Guatto
1e95cc4098
patch tomato wrong merge.
2011-07-08 15:27:17 +02:00
Léonard Gérard
13955147ca
patch java wrong merge.
2011-07-08 15:25:00 +02:00
Adrien Guatto
40e64b305d
Tomato: disable debug messages by default
2011-07-08 11:56:38 +02:00
Adrien Guatto
7d9e31a83b
Tomato checking in check.sh
2011-07-08 11:56:38 +02:00
Adrien Guatto
d1c2789574
Tomato: properly handle n-ary functions.
2011-07-08 11:56:38 +02:00
Adrien Guatto
8f0ef3a256
Properly use clocking information in corner cases.
2011-07-08 11:56:38 +02:00
Adrien Guatto
2283fcdfaa
Properly handle fused outputs.
2011-07-08 11:56:38 +02:00
Adrien Guatto
3657018861
Tomato: finer equivalence classes for Eapp and
...
Eiterator when a reset variable is present.
2011-07-08 11:56:38 +02:00
Adrien Guatto
3c5bb4e8b7
Tomato working with clocks and when.
2011-07-08 11:56:37 +02:00
Adrien Guatto
891174d73c
All-new and fresh tomato!
...
Not working ATM:
* tuples
* when
2011-07-08 11:56:37 +02:00
Léonard Gérard
0518ecafe6
Merge branch 'multidimensional' into decade
...
Conflicts:
compiler/obc/c/cgen.ml
compiler/obc/java/java_main.ml
2011-07-08 11:36:46 +02:00
Léonard Gérard
ab3823874c
Feature: Java main will give bin args as static params to the main.
...
consider having a main node like this one:
node main<<i : int; b : bool>> () returns...
Then if to call the generated program, you'll need ot give an int and a bool.
Furthermore, if you give an additional arg, it'll be used as the wanted
iteration number.
Conflicts:
compiler/obc/java/java_main.ml
2011-07-08 11:26:05 +02:00
Léonard Gérard
4ac4347dc8
Add an error (in java main) when the specified main node is incorrect.
...
Conflicts:
compiler/obc/java/java_main.ml
2011-07-08 11:18:39 +02:00
Léonard Gérard
1c428e7fe1
Forgot to remove the comments around static scoping for interfaces.
2011-07-08 11:18:39 +02:00
Brice Gelineau
10115684d9
bugfix for reset calls in C
2011-07-08 10:51:10 +02:00
Léonard Gérard
f40dc66e57
Patch typing.ml from brice email 27/06/11.
2011-07-07 16:21:48 +02:00
Brice Gelineau
b6aecf9869
Bugfix for reset calls in C
2011-07-07 16:18:25 +02:00
Brice Gelineau
42c2936040
Bugfix for the clocking analysis of iterators
2011-07-06 15:56:56 +02:00
Adrien Guatto
cedcabfbc4
Fix memory normalization: the correct clock was
...
missing.
2011-07-06 11:50:02 +02:00
Cédric Pasteur
34b65c1234
Do not generate for loops
...
These loops are already present in the Obc code.
2011-07-05 18:08:21 +02:00
Cédric Pasteur
bb6b9868b0
Use the variable type to add or not an indirection
2011-07-05 17:46:43 +02:00
Léonard Gérard
5837f3906f
Multidimensional iterators in java.
2011-06-28 17:50:42 +02:00
Léonard Gérard
f2ca353cac
Pour que ca marche sur clocked_inputs (cela vient de memalloc)
2011-06-28 17:50:42 +02:00
Léonard Gérard
c5fbcbe765
removing white spaces
2011-06-28 17:50:42 +02:00
Brice Gelineau
c70d34ec06
Preliminary version of multidimensional iterators.
2011-06-28 17:50:42 +02:00
Léonard Gérard
83b0182874
Merge branch 'clocked_inputs' into decade
...
Conflicts:
compiler/heptagon/analysis/typing.ml
compiler/heptagon/parsing/hept_scoping.ml
compiler/heptagon/parsing/hept_static_scoping.ml
compiler/main/mls2obc.ml
compiler/obc/c/cmain.ml
2011-06-28 14:46:43 +02:00
Cédric Pasteur
e754493364
Fixed stateful bit for iterated nodes
2011-06-23 10:51:25 +02:00
Léonard Gérard
108981c0eb
Static constraints in the source. Equal removed
...
( = ) in pervasives is a stub, it will be typed in a polymorphic way.
This is necessary to have a simple way to transform exp into a static_exp
even when there is the = operator.
2011-06-09 14:53:40 +02:00
Léonard Gérard
c3382e4284
Small present bugfix.
2011-06-09 14:40:31 +02:00
Léonard Gérard
b60e8ab4bb
Better automata variable names.
2011-06-09 14:40:31 +02:00
Léonard Gérard
46ed39b7b3
Remove some warnings.
2011-06-09 14:40:31 +02:00
Cédric Pasteur
f45e30d207
Yet another special case for iterators
2011-06-07 10:49:36 +02:00
Adrien Guatto
4794045208
Reworked Obc AST: from right patterns to extvalues.
...
I introduced a notion of extended values in Obc expressions,
replacing the Epattern constructor. Patterns may now only
occur at their rightful place, on the left of an assignment.
This change allows to index global constant arrays.
2011-05-30 16:25:00 +02:00
Brice Gelineau
938e8897b2
n-ary Sarray_power Earray_fill
2011-05-26 18:43:30 +02:00
Léonard Gérard
fe74030f78
Fix clocking of iterators.
2011-05-26 16:08:59 +02:00
Léonard Gérard
b73e6502a6
resets are now without constraint.
2011-05-26 15:56:59 +02:00
Léonard Gérard
d7d7552be4
Fix printing and parsing of clocks
2011-05-26 15:56:59 +02:00
Léonard Gérard
fd00f099f5
correct reset and level clock
2011-05-26 15:56:59 +02:00
Léonard Gérard
2a2b363bf7
Real asynchronous resets.
2011-05-26 15:56:59 +02:00
Léonard Gérard
fbfa6eda1a
Add Ewhen to the minils ast, And clocking of iterators.
...
Ewhen is now the only case of possible recursion for minils exps.
This add was motivated by equations like :
(y,z) = f(x) when c
This equation to be correctly normalized in minils before needed :
y',z' = f(x)
y = y' when c
z = z' when c
But this new variables where needless since the final translation of when c
is the identity.
2011-05-26 15:56:59 +02:00
Léonard Gérard
87dc76f113
Code formating fixes (typos, tabs, spaces at endofline,...)
2011-05-26 15:56:59 +02:00
Léonard Gérard
efcb2b01bb
Fix global_printer to follow Format conventions.
2011-05-26 15:56:59 +02:00
Léonard Gérard
b786cbe4ec
Fix partial application syntax : <(x)> instead of (<x>).
2011-05-26 15:56:59 +02:00
Léonard Gérard
de49540a76
clean signature printing.
2011-05-26 15:56:59 +02:00
Léonard Gérard
74cc367a0e
correct base_clock and signature.
2011-05-26 15:56:59 +02:00
Léonard Gérard
4c2a5121e4
remove useless ml folder.
2011-05-26 15:56:59 +02:00
Léonard Gérard
9a17648516
good clocks in signatures
2011-05-26 15:56:59 +02:00
Léonard Gérard
40fcb4d73e
improve syntax
2011-05-26 15:56:58 +02:00
Leonard Gerard
88497a2da3
parsing clocks.
2011-05-26 15:56:58 +02:00
Leonard Gerard
a8215c8083
compile ! nearly all tests passed.
2011-05-26 15:56:58 +02:00
Leonard Gerard
22354aca0a
a_clock in signatures
2011-05-26 15:56:58 +02:00
Adrien Guatto
fdbe6445a7
User-friendly error message for top-level redefinitions.
2011-05-25 13:26:39 +02:00
Cédric Pasteur
f0f67dacf4
Raise an error when using linear type without memalloc
2011-05-25 09:12:16 +02:00
Cédric Pasteur
a48981f72c
Fix memalloc_apply
2011-05-25 09:12:16 +02:00
Cédric Pasteur
192572ea67
This should fix some bugs in causality
...
This should all be rewritten anyway
2011-05-25 09:12:16 +02:00
Cédric Pasteur
90be09f259
Give correct linearity to generate vars
2011-05-25 09:12:16 +02:00
Cédric Pasteur
d39e883e08
Filter outputs removed by memalloc
2011-05-25 09:12:16 +02:00