Commit graph

632 commits

Author SHA1 Message Date
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
Cédric Pasteur
de3a61557b Improvements on Schedule_Interf
Only take into account optimized types.
Reuse code from Interference to compute uses.
2011-05-25 09:12:16 +02:00
Cédric Pasteur
840f6672df Fixed linear typing of const tuples 2011-05-25 09:12:16 +02:00
Cédric Pasteur
b7ba8e7913 Remove useless case
As targeting is only done for linear variables, 
this case is already dealt with by 
coalesce_linear_vars
2011-05-25 09:12:15 +02:00
Cédric Pasteur
d1a68c5df3 Missing file 2011-05-25 09:12:15 +02:00
Cédric Pasteur
75b4fa9ddc Fixed bug in the interference of fold 2011-05-25 09:12:15 +02:00
Cédric Pasteur
1ea4290f9e Added scheduler that tries to minimize interferences 2011-05-25 09:12:15 +02:00
Cédric Pasteur
a2c2a3a619 Fixed typing of if then else
First try as T * at r * T -> at r and then as
T * T * at r
2011-05-25 09:12:15 +02:00
Cédric Pasteur
c70861b874 Small fixes 2011-05-25 09:12:15 +02:00
Cédric Pasteur
90648f61ff Fixed linear typing of automata
Each state must be typed in the global environment
and then the accumulator must be joined.
2011-05-25 09:12:15 +02:00
Cédric Pasteur
ebf8b354bd Fixed conflict in parsing with split 2011-05-25 09:12:15 +02:00
Cédric Pasteur
2b2cba8e2d Added split operator 2011-05-25 09:12:14 +02:00
Cédric Pasteur
9686e2db01 Oops, forgot to recurse on the pattern of Acall 2011-05-25 09:12:14 +02:00
Cédric Pasteur
db8c87ff07 Fix generation of bounds check expression 2011-05-25 09:12:14 +02:00
Cédric Pasteur
28b9eaa203 Fixed problems with types 2011-05-25 09:12:14 +02:00
Cédric Pasteur
c3d47f4d4b Fixed error in computation of targeting 2011-05-25 09:12:14 +02:00
Cédric Pasteur
6f32564ad5 Added a sepecial case to deal with iterators 2011-05-25 09:12:14 +02:00
Cédric Pasteur
41d2a1e3cb Added check for unicity of init 2011-05-25 09:12:14 +02:00
Cédric Pasteur
6332ac7a10 Added init construct
It is part of a pattern, eg:
  (init<<r>> x, y, init<<r2>>) = f()
2011-05-25 09:12:13 +02:00
Cédric Pasteur
d5218ff91c Causality check for linear types 2011-05-25 09:12:13 +02:00
Cédric Pasteur
0728f3dae7 More work on code generation 2011-05-25 09:12:13 +02:00
Cédric Pasteur
822e87605b One step closer to code generation with memalloc 2011-05-25 09:12:13 +02:00
Cédric Pasteur
3f29e8623d Interaction between linear typing and memalloc 2011-05-25 09:12:13 +02:00
Cédric Pasteur
cf34234ed5 Fixed linear typing of iterators 2011-05-25 09:12:13 +02:00
Cédric Pasteur
ec18040cf4 Linear typing 2011-05-25 09:12:13 +02:00
Cédric Pasteur
6c9d9e90d1 Linearity annotations in the AST 2011-05-25 09:12:13 +02:00
Cédric Pasteur
0b9dc1fc01 Correct fix 2011-05-25 09:12:12 +02:00
Cédric Pasteur
7d2b1e5865 Fixed bug in disjoint clock 2011-05-25 09:12:12 +02:00
Cédric Pasteur
285abc48bf Fixed some bugs 2011-05-25 09:12:12 +02:00
Cédric Pasteur
dec8cb69c8 Fixed bug in computation of live vars 2011-05-25 09:12:12 +02:00
Cédric Pasteur
68e1fe1ee8 Always check if a var should be optimized 2011-05-25 09:12:12 +02:00
Cédric Pasteur
66386ddca2 Fixed some bugs 2011-05-25 09:12:12 +02:00
Cédric Pasteur
c994e58e06 Fixed bug in listing colors 2011-05-25 09:12:11 +02:00
Cédric Pasteur
032fe693ef Deadcode removal pass 2011-05-25 09:12:11 +02:00
Cédric Pasteur
448c163181 Dsatur coloring algorithm
It is not completely generic, as we need to know 
the difference between affinity and interference
edges.
2011-05-25 09:12:11 +02:00
Cédric Pasteur
3f9918b570 Added memory alloc application pass 2011-05-25 09:12:11 +02:00
Cédric Pasteur
a7015a9bf4 Fix for interference
Works on a simple program
2011-05-25 09:12:11 +02:00
Cédric Pasteur
9a7f9254d2 Added memalloc pass to the compiler 2011-05-25 09:12:11 +02:00
Cédric Pasteur
1059329c0e Interference compiles 2011-05-25 09:12:11 +02:00
Cédric Pasteur
197e24b73e Rename Graph to Sgraph
The Graph module name is already used  
in OCamlGraph
2011-05-25 09:12:10 +02:00
Cédric Pasteur
7787428f34 Compile fixes 2011-05-25 09:12:10 +02:00
Cédric Pasteur
3ee0e5e7b4 First version of interference.ml 2011-05-25 09:12:10 +02:00
Cédric Pasteur
e9316bbf1b Interference graph ported to OCamlGraph 2011-05-25 09:12:10 +02:00
Léonard Gérard
d7553b9db0 Fix static_scoping with locally defined types. 2011-05-24 18:33:05 +02:00
Cédric Pasteur
96054a67b6 Correct order for indices in array declaration
In C, the order in the declaration of variables
is the same as for access
2011-05-24 11:16:27 +02:00
Léonard Gérard
aea82e79b0 col<100 2011-05-21 15:38:09 +02:00
Cédric Pasteur
72892a9d82 Fixed missing case in Obc_mapfold 2011-05-16 17:30:48 +02:00
Adrien Guatto
36d93a411d Fix generated C code calling between(). 2011-05-12 16:32:52 +02:00