Commit graph

936 commits

Author SHA1 Message Date
Adrien Guatto
a7e3f4a973 Added test for clocking in automata 2012-01-25 18:13:43 +01:00
Adrien Guatto
53de6cd915 Bug fix in extvalue inlining 2012-01-25 16:11:22 +01:00
Adrien Guatto
bca8664d2f Tomato: do not forget eq_base_ck when reconstructing 2012-01-25 13:19:09 +01:00
Adrien Guatto
998b3b0b89 Generate C89 2012-01-25 12:42:14 +01:00
Cédric Pasteur
2f993a602c Fixed base clock in code generation
Put the base clock inside the equation where it 
belongs.
2012-01-25 09:34:58 +01:00
Cédric Pasteur
db5f55b221 Fixed when of stateful exp with memalloc
As the expression inside the when will be called 
on a faster rhythm, we have to make sure not to
share it with a variable on the slow clock.
We do this by creating a new equation for the 
stateful exp.
2012-01-25 09:33:08 +01:00
Cédric Pasteur
3f80f844c7 Schedule with clocks first
First optimize clocks and then look at life ranges
2012-01-24 15:33:54 +01:00
Cédric Pasteur
06e997e0c8 Fix for -mall
Do not share memories and outputs if they are not
arrays, as it might make the register allocation
by the C compiler less efficient.
2012-01-24 10:29:05 +01:00
Cédric Pasteur
b1bd6dbd57 Compare clock repr
Not sure this is necessary but it doesn't hurt to 
check twice.
2012-01-23 16:03:01 +01:00
Cédric Pasteur
2b59ec754a Fix for memories with no uses
Add a fake use to make sure they interfere with
other memories and outputs
2012-01-23 16:02:34 +01:00
Adrien Guatto
cad8a0149f Option to perform type inference on all types 2012-01-23 13:36:24 +01:00
Léonard Gérard
0aad3ac466 eclipse stuff 2011-12-15 20:02:38 +01:00
Léonard Gérard
c75236b688 miscs 2011-12-12 12:06:46 +01:00
Léonard Gérard
da3147151d Better check signature error message 2011-12-12 11:30:18 +01:00
Léonard Gérard
f0cbbccc2a unsafe in minils node 2011-12-12 11:27:18 +01:00
Léonard Gérard
b86555e013 global env misc 2011-12-12 11:08:47 +01:00
Léonard Gérard
24c394d2cb pretty print clocks with links. 2011-12-12 11:01:46 +01:00
Léonard Gérard
ba5f336a6f Fix antidependance calculation 2011-12-12 11:01:22 +01:00
Cédric Pasteur
80fbe6be5f Fixed linear typing of printf 2011-12-12 10:36:24 +01:00
Cédric Pasteur
54cde301f6 C code generation for printf 2011-12-12 10:36:24 +01:00
Cédric Pasteur
2fc0435393 Added simple printf
Typing and clocking done
2011-12-12 10:36:24 +01:00
Adrien Guatto
0f71dbe145 Bitwise or. 2011-12-06 17:46:35 +01:00
Adrien Guatto
8d772e20e2 Bitwise and. 2011-12-06 15:44:21 +01:00
Adrien Guatto
1ec15b9409 Bitwise operators on integers. 2011-12-06 15:44:21 +01:00
Adrien Guatto
8c6926c5bd TOMATO was confused about having several empty patterns in the equations
of a node.

He should be better now.
2011-12-06 15:44:21 +01:00
Léonard Gérard
fe1f02402b Test to watch sampling of returned stateful exps. 2011-12-06 15:44:20 +01:00
Cédric Pasteur
f76667e042 Second part of the fix 2011-12-06 15:44:20 +01:00
Léonard Gérard
2b9d3828b1 debut de la correction du when.
test :

node f(c :bool) returns (out :int)
let
  out = (0 fby 1) when c
tel


et

node f(x :int) returns (out : int)
let
  out = 0 fby x
tel

node g(c :bool) returns (out :int)
let
  out = f(0) when c
tel
2011-12-06 15:44:20 +01:00
Adrien Guatto
5097c62449 C backend: put memory of the main node in a global variable. 2011-12-05 10:18:50 +01:00
Cédric Pasteur
add09fe465 Fixed complexity of control optimization 2011-11-29 13:34:50 +01:00
Léonard Gérard
45fbd18fe8 Fix automaton initialization. 2011-11-28 15:12:27 +01:00
Léonard Gérard
d5f72c278c mls2obc bug fix
y = (if then else) when c
ou bien
y = f() when c
ne compilait pas.
2011-11-28 15:12:22 +01:00
Léonard Gérard
5be7a6acc2 java main void return handling 2011-11-25 18:56:15 +01:00
Léonard Gérard
05750352f8 pat_ty ne semble pas fiable. Voir t19.ept 2011-11-25 18:55:12 +01:00
Cédric Pasteur
3369f6dffc Don't forget to optimise control recursively 2011-11-24 16:10:14 +01:00
Adrien Guatto
1b73f3444e Clock before dumping .epci 2011-11-24 11:41:11 +01:00
Léonard Gérard
57f7da94c2 Deal with const ref in Java. 2011-11-21 11:42:26 +01:00
Cédric Pasteur
641b76133d Don't inline all const 2011-11-21 10:55:53 +01:00
Léonard Gérard
646cfab82b Enforce style : no tab, no trailing whitespace. 2011-11-21 03:26:27 +01:00
Léonard Gérard
a08da94edc Scheduling bonus for array updates. 2011-11-21 03:26:26 +01:00
Léonard Gérard
fdab1ac55c Strict-SSA option to switch array encoding. 2011-11-21 03:26:26 +01:00
Léonard Gérard
b49c37f7bf Add ways to declare unsafe functions + unsafe fix 2011-11-21 03:26:26 +01:00
Léonard Gérard
1962cd2df4 Typing bug fix 2011-11-21 03:26:26 +01:00
Léonard Gérard
adc47c536a Improve Java printing and main.
genToString is a fully generic to string function
dealing with arrays, primitive arrays, etc.
2011-11-21 03:26:25 +01:00
Léonard Gérard
25ce5edbd0 debugger_script_gen 2011-11-21 03:26:25 +01:00
Léonard Gérard
442f38b196 stronger heptc and clean_heptc
It may be symlinked.
Moreover, when heptc is called with java as first param, it will set the
right target and call javac right after
2011-11-21 03:26:13 +01:00
Léonard Gérard
7b281317f4 fix scalarize 2011-11-20 22:37:00 +01:00
Léonard Gérard
9d8a0be512 Improve scalarize 2011-11-18 12:33:37 +01:00
Léonard Gérard
ca711274c0 Remove infusion from the default optima options. 2011-11-18 12:33:37 +01:00
Léonard Gérard
8ebb75f8bf New debugger script with a partial generator. 2011-11-18 12:33:37 +01:00
Léonard Gérard
efa6b5cf70 Correct scalarize and java load_conf 2011-11-18 12:32:37 +01:00
Léonard Gérard
be28156de9 Add a simplify pass to Obc 2011-11-18 12:32:37 +01:00
Léonard Gérard
9274ef24aa Java support type alias. 2011-11-18 12:32:37 +01:00
Léonard Gérard
35a9a24467 Correct obc_mapfold 2011-11-18 12:32:37 +01:00
Léonard Gérard
2a6dab836a Add alias to obc vd. 2011-11-18 12:32:37 +01:00
Léonard Gérard
fa956a00ad Remarques pour Control 2011-11-18 12:32:37 +01:00
Léonard Gérard
5a263b0cbd Fix signature printing. 2011-11-18 12:32:37 +01:00
Léonard Gérard
4e3c58bb40 Allow symbolic static_exp eval. 2011-11-18 12:32:36 +01:00
Léonard Gérard
bdd85f5f81 mapfold over var_ident. 2011-11-18 12:32:36 +01:00
Léonard Gérard
d5858d6dd2 Optimize static evaluation
It greatly reduce the amount of constraints kept.
Indeed, all the constraints : x = x, x /y = x/y, etc
were kept when x and y were local params.
2011-11-18 12:32:36 +01:00
Cédric Pasteur
cf1e79efc8 Type signature of all nodes 2011-11-18 10:03:54 +01:00
Cédric Pasteur
1a28ed96e8 Improvement for normalize memories
Only create necessary copies (for outputs
and recursive registers).
2011-11-16 16:07:36 +01:00
Cédric Pasteur
8644982593 Fixed some bugs in the configure
Check that ocamlc and ocamlfind point to the
same stdlib dir.
2011-11-14 10:52:28 +01:00
Adrien Guatto
1a9dc17618 Fixed clocking annotations.
1. Transmit annotations to extvaluese in Hept2mls.

2. Handle a pre-existing w_ck when clocking extvalues.
2011-11-10 15:36:54 +01:00
Léonard Gérard
0222d11b2d Do not introduce useless variable in [reset every] 2011-11-03 00:46:13 +01:00
Léonard Gérard
dfc0077859 permits to use = instead of returns 2011-11-03 00:46:04 +01:00
Léonard Gérard
abdf93c8c2 inlining corrected 2011-11-03 00:45:43 +01:00
Léonard Gérard
3e64635f95 optimize the control at the end to maximize profit
Indeed, some examples showed that memory allocation could trigger a profit-full deadcode removal for the control. See Downscaler.down avec -flatten.
2011-11-03 00:43:36 +01:00
Léonard Gérard
17598a3206 Correct inlining, which was aliasing clocks. 2011-11-03 00:41:29 +01:00
Léonard Gérard
76109b553a Add -O option to enable optims. 2011-11-02 17:23:23 +01:00
Léonard Gérard
919eaa72e1 Fix floating point printing. 2011-11-02 16:08:51 +01:00
Léonard Gérard
50487f9296 Fix java main to deal with unit return type. 2011-11-02 16:07:19 +01:00
Léonard Gérard
04263a126b Correct small bug in java initialized arrays. 2011-11-02 16:04:47 +01:00
Léonard Gérard
33021aaa90 Print stateful in heptagon.
Conflicts:

	compiler/heptagon/hept_printer.ml
2011-11-02 13:15:33 +01:00
Cédric Pasteur
6ba0e7b2b3 Don't remove local variables in causality
A dependency between two variables can be caused 
by a local variable
2011-10-26 16:14:02 +02:00
Léonard Gérard
ffe2b23a82 new sheduler by default 2011-10-23 17:42:26 +02:00
Cédric Pasteur
f4aafa10d6 Added a build system for Heptagon
./configure 
make
make install
2011-10-20 18:06:41 +02:00
Léonard Gérard
81ad14ab7b changed interf_schedule to use clocks correctly 2011-10-20 16:52:50 +02:00
Cédric Pasteur
21433f6416 Only do one copy for two recursive registers 2011-10-20 09:16:51 +02:00
Cédric Pasteur
72cac326a8 Fixed normalization of fby
We should normalize not only outputs but also 
other fbys to generate correct code. The test shows
a program that was compiled incorrectly.
2011-10-19 16:31:40 +02:00
Cédric Pasteur
a31715ecde Proper fix for causality
This time it should work in all cases
2011-10-18 09:51:35 +02:00
Cédric Pasteur
85be1252b0 Another try to fix causality of linear ifs 2011-10-17 18:10:38 +02:00
Adrien Guatto
1ec97d187b Adapted minimization to reinit. 2011-10-17 15:43:55 +02:00
Cédric Pasteur
04b8853a1d Added a new reinit operator
It has type:
reinit: t at r * t -> t at r

It can be used to put a constant value in a 
location.
2011-10-17 15:28:04 +02:00
Cédric Pasteur
4f9a91eebd Fixed dependency issue with linear splits 2011-10-17 15:25:52 +02:00
Cédric Pasteur
e2d4d33d97 Fixed linear typing with args that are tuples 2011-10-17 11:52:36 +02:00
Cédric Pasteur
c2ab607195 Fix for causality when using linear types 2011-10-17 11:47:45 +02:00
Cédric Pasteur
6fefd551b1 Fixed typing of iterators in some cases
If a variable is already used linearly before,
do not reuse it linearly
2011-10-17 11:46:47 +02:00
Cédric Pasteur
0f403e3694 Fix for wrong number of expected args 2011-10-17 10:17:18 +02:00
Léonard Gérard
ef4478e37e removed some stupid warnings. 2011-10-14 13:33:34 +02:00
Adrien Guatto
ee2f5ca443 Tomato: simplification + update signature via modules.
test/good/linear_init.ept now compiles.
2011-10-10 17:01:08 +02:00
Cédric Pasteur
1aac6f7be4 Fixed bug in unicity check in linear typing
Test case included
2011-10-07 11:59:13 +02:00
Adrien Guatto
3269a04052 Do not inline linear extended values. 2011-10-06 16:18:48 +02:00
Adrien Guatto
30089e7d0f Fixed extvalue inlining w.r.t. linear copy 2011-10-05 17:44:01 +02:00
Cédric Pasteur
175c8e34ff Fixed control fusion 2011-10-05 10:49:51 +02:00
Adrien Guatto
d0ed09c3e5 Ext-value inlining pass. 2011-10-04 15:14:02 +02:00
Cédric Pasteur
902cbaf7a1 Fixed error with memalloc and const value with when 2011-10-04 14:34:44 +02:00
Adrien Guatto
2fb27770b8 Fixed iterator minimization bug. 2011-10-03 10:54:50 +02:00
Cédric Pasteur
80f24b747c Updated comments 2011-09-26 10:19:48 +02:00
Cédric Pasteur
36c1c7252e Fixed memalloc application with fields 2011-09-15 16:55:17 +02:00
Cédric Pasteur
1231afdbb1 Fixed inlining
Inlining is now recursive.
2011-09-15 13:28:41 +02:00
Cédric Pasteur
26ad2739dd Inlined version of mission control 2011-09-15 11:23:16 +02:00
Cédric Pasteur
da3660c08c Tweaked the printer to generate correct code
There is still a big problem with priority
of operators
2011-09-15 11:10:39 +02:00
Cédric Pasteur
339feaa747 Ignore unknown nodes (instead of crashing) 2011-09-14 15:55:29 +02:00
Cédric Pasteur
1c43a8b1ac Fixed code generation for constant arrays 2011-09-14 09:08:28 +02:00
Cédric Pasteur
3a9dc1c34d Small fixes in Inline
Also inline function calls, not only nodes.
2011-09-12 18:11:00 +02:00
Cédric Pasteur
1d6b68cef6 Fix syntax for ocaml < 3.12 2011-09-09 17:03:54 +02:00
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
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