Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

lustrec / src / machine_code.ml @ f9f06e7d

History | View | Annotate | Download (13.2 KB)

# Date Author Comment
59803095 11/16/2018 11:30 PM Pierre-Loïc Garoche

Merge branch 'unstable' into lustrec-seal

c35de73b 11/15/2018 03:18 AM Pierre-Loïc Garoche

Pretty serious update:
- a bug in regressio ntest Simulink/integrator_ext_IC_matrix_test revealed the following (serious issue):
when building the list of instruction (in the machine code) the access to variable were hardcoded to LocalVar or StateVAr depending whether the variables was part of the identified memories....

eb9a8c3c 11/04/2018 07:00 AM Pierre-Loïc Garoche

Moved find_eq from Machine_code to Corelang and sort_eqs from Machine_code to Scheduling

95fb046e 10/24/2018 01:33 PM Pierre-Loïc Garoche

Scheduling of node equations is now attached to machine type

2863281f 03/30/2018 11:14 PM Pierre-Loïc Garoche

Further restructuring:
- arrow.ml* to define basic builder for arrow (node, name, ...)
- machine_code_common similar to corelang but for machine_code (printers, some builders, ...)
- machine_code restricted to the translatation from normalized nodes to machines

089f94be 03/30/2018 10:43 PM Pierre-Loïc Garoche

MLI for normalization and machine_code.
Structs defining machines are now in machine_code_types

8446bf03 03/30/2018 05:54 PM Pierre-Loïc Garoche

- Makefile: solved dependency problem when compiling include lusi
- Renamed type declarations as lustre_types and machine_code_types

66359a5e 01/31/2018 07:27 AM Pierre-Loïc Garoche

[general] large modification: added machine types, a second typing phase dealing with machine types (eg uint8)
typing was transformed as a functor and parametrized by basic types (int/real/bool)
it can also be applied multiple times on the same program

333e3a25 12/18/2017 09:57 AM Pierre-Loïc Garoche

[general] Refactor get_node_eqs to produce (eqs, auts) with automatons

264a4844 07/20/2017 10:20 PM Pierre-Loïc Garoche

First working version of algebraic loop resolution. Disabled by default.

13507742 07/12/2017 09:06 PM Pierre-Loïc Garoche

Refactored some code: optimization of machine

2475c9e8 07/10/2017 11:43 PM Pierre-Loïc Garoche

Refactored EMF backend. Handle now the call to existing math and conv libraries

017eec6a 07/10/2017 06:04 PM Pierre-Loïc Garoche

Renamed ISet of Machine_code to VSet: was sets of variable and was conflicting with ISet from Utils which carries strings.

145379a9 06/30/2017 06:58 PM Pierre-Loïc Garoche

Improved EMF backend. Working on the whole fmcad suite

380a8d33 06/23/2017 11:11 PM Pierre-Loïc Garoche

Solved bug in machine code generation for asserts that contain memories

1b683c9a 06/23/2017 08:10 PM Pierre-Loïc Garoche

Cleaned horrible ocaml practice (optional parameters and mli issues)

1bff14ac 06/23/2017 06:13 PM Pierre-Loïc Garoche

- Added a field lustre_eq to machine instruction in order to record the originating lustre equation
- EMF backend now impose the optimization level to be set to 0 in order to avoid equation elimination that would render traceability difficult
- Options.ml has been split into Options.ml / Options_management.ml. Options.ml only contains references and no functions

3ca27bc7 06/23/2017 04:07 AM Pierre-Loïc Garoche

- Addtional encapsulation of machine_code instr in a struct to enable future extension of type with more metadata.
- Improved EMF backend with META information

f7caf067 06/22/2017 04:18 AM Pierre-Loïc Garoche

EMF backend now relies on machine code representation.
Impact:
- EMF backend has an extra machines argument
- specific option to avoid merge of ite constructs
- set_backend function to improve backend selection

Most code was extracted from seahorn_backend through c0f8

990210f3 05/16/2017 04:57 PM Pierre-Loïc Garoche

Improved include folders behaviors:
- allow multiple -I dir, will be used in order (first one declared
is first used)

- when declaring a global library #open <foo>, foo is first checked
in local folders, than in global one (install path). This
does not apply to local libraries opened with #open "foo".

7354c96c 05/16/2017 10:56 AM Pierre-Loïc Garoche

[bug solved] issues with asserts (invalid eqs scheduling)

63f10e14 04/28/2017 10:11 PM Pierre-Loïc Garoche

Removing silly warning message

85da3a4b 04/26/2017 11:23 PM Pierre-Loïc Garoche

Merge branch 'unstable' into merging_plugins
Non regression results were similar to master branch

0d065e73 04/25/2017 09:43 AM Pierre-Loïc Garoche

Solved a bug in the compilation of asserts. Now different behavior depending on the backend:
functional: keep it as is
non func: introduce a fresh local var v and replace assert(e) by v=e; assert (v);

dcafc99b 01/11/2017 12:28 AM Pierre-Loïc Garoche

Merge branch 'github_master' into integ_github_jan10
Intregrate all modifs by Teme et al

fc476249 12/28/2016 01:00 AM Teme Kahsai

adding -I options to lustrec

3b2bd83d 12/08/2016 05:37 PM Teme Kahsai

updating to onera version 30f766a:2016-12-04

45f0f48d 08/09/2016 09:31 PM Xavier Thirioux

...

04a63d25 08/06/2016 10:29 AM Xavier Thirioux

full merge of salsa/mpfr and master

a1daa793 02/23/2016 10:47 PM Teme Kahsai

Updated to onera_git commit version 9421e24

ca88e660 01/08/2016 05:37 PM Pierre-Loïc Garoche

Resolved conflict when merging salsa with horn_encoding. The current branch is the most updated.

f0bff3e5 01/08/2016 01:41 PM Pierre-Loïc Garoche

Merge branch 'salsa' into merge_salsa_horn_2
Postponed conflicts to be solved
Conflicts:
src/_tags
src/backends/Horn/horn_backend.ml
src/machine_code.ml
src/main_lustre_compiler.ml
src/myocamlbuild.ml.in
src/optimize_machine.ml

cf9cc6f9 01/07/2016 04:43 PM Pierre-Loïc Garoche

Introduced the opposite of Reset call: NoReset. This simplify the general compilation process and makes the code more symmetric, hence simpler and clearer code.

5df5dd85 12/16/2015 03:18 PM Pierre-Loïc Garoche

Merge branch 'master' into horn_enum_types

Conflicts:
src/backends/Horn/horn_backend.ml

53206908 11/26/2015 04:45 PM Xavier Thirioux

major branche merging salsa/mpfr with trunk

55537f48 11/07/2015 11:48 PM Xavier Thirioux

bug corrected: in some cases, local const vars were assigned twice

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@483 041b043f-8d7c-46b2-b46e-ef0dd855326e

da07e470 11/07/2015 11:48 PM Xavier Thirioux

bug corrected: in some cases, local const vars were assigned twice

7c95dcab 10/08/2015 07:11 PM Pierre-Loïc Garoche

Two fresh branches :)
to manage enum and arrays in the horn backend.

e2068500 05/05/2015 01:54 AM Teme Kahsai

first commit

c287ba28 05/04/2015 08:13 AM Xavier Thirioux

corrected a small bug when -horn option was active

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@450 041b043f-8d7c-46b2-b46e-ef0dd855326e

b3b0dd56 05/04/2015 08:13 AM Xavier Thirioux

corrected a small bug when -horn option was active

ec433d69 04/08/2015 10:03 PM Xavier Thirioux

Major revision due to severe limitations and bugs of inlining capabilities:
- destination dir should now work properly
- lusic files now have a version number, to avoid nasty segfaults
when loading lusic files created by an older compiler version
- inlining should now work with generic nodes and generic array library...

01d48bb0 04/08/2015 10:03 PM Xavier Thirioux

Major revision due to severe limitations and bugs of inlining capabilities:
- destination dir should now work properly
- lusic files now have a version number, to avoid nasty segfaults
when loading lusic files created by an older compiler version
- inlining should now work with generic nodes and generic array library...

e9b71779 03/16/2015 08:31 PM Teme Kahsai

modifed / to div in horn backend

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@420 041b043f-8d7c-46b2-b46e-ef0dd855326e

58272238 03/16/2015 08:31 PM Teme Kahsai

modifed / to div in horn backend

f2b1c245 02/16/2015 11:52 PM Pierre-Loïc Garoche

Solved bug found by Teme about asserts.

Previously assert expression containing -> would lead to unnormalized ite. Now each expression within the assert is normalized and may bind new node equations.
This could be later optimized but is working now.

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@406 041b043f-8d7c-46b2-b46e-ef0dd855326e

e42fb618 02/16/2015 11:52 PM Pierre-Loïc Garoche

Solved bug found by Teme about asserts.

Previously assert expression containing -> would lead to unnormalized ite. Now each expression within the assert is normalized and may bind new node equations.
This could be later optimized but is working now.

1e48ef45 12/01/2014 11:32 PM Pierre-Loïc Garoche

- Dealt with compiling lusic from distant lusi files.
- Header now do not allow the generation of function previously declared as C prototype

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@375 041b043f-8d7c-46b2-b46e-ef0dd855326e

5ae8db15 12/01/2014 11:32 PM Pierre-Loïc Garoche

- Dealt with compiling lusic from distant lusi files.
- Header now do not allow the generation of function previously declared as C prototype

b4d9710b 09/18/2014 05:25 PM Xavier Thirioux

- corrected bug in node reset clock
- cleaner (but heavier !) code generation scheme for automata

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@337 041b043f-8d7c-46b2-b46e-ef0dd855326e

d5fe9ac9 09/18/2014 05:25 PM Xavier Thirioux

- corrected bug in node reset clock
- cleaner (but heavier !) code generation scheme for automata

54d032f5 09/14/2014 08:08 PM Xavier Thirioux

- Added major feature: Lustre V6 automata !!!
- one automata example added
- changed the reset condition in node calls (now a simple bool expr)
- bug corrected in clock calculus
- bug corrected in traceability info
- added field in variables to test whether they are original...

6a1a01d2 09/14/2014 08:08 PM Xavier Thirioux

- Added major feature: Lustre V6 automata !!!
- one automata example added
- changed the reset condition in node calls (now a simple bool expr)
- bug corrected in clock calculus
- bug corrected in traceability info
- added field in variables to test whether they are original...

b08ffca7 09/09/2014 06:03 PM Xavier Thirioux

- work in progress for automata...

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@333 041b043f-8d7c-46b2-b46e-ef0dd855326e

1eda3e78 09/09/2014 06:03 PM Xavier Thirioux

- work in progress for automata...

70df2f87 09/03/2014 04:02 PM Xavier Thirioux

- corrected bugs with the inlining mode

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@329 041b043f-8d7c-46b2-b46e-ef0dd855326e

cfdb4fe9 09/03/2014 04:02 PM Xavier Thirioux

- corrected bugs with the inlining mode

ef34b4ae 09/02/2014 02:43 PM Xavier Thirioux

This is a major revision:
- added interface files (.lusi) in the language, that can be compiled on their own, giving an object file (.lusic) and a header file (.h)
- modular code generation, from Lustre to C level included.
- nice amount of code refactoring...

70e1006b 09/02/2014 02:43 PM Xavier Thirioux

This is a major revision:
- added interface files (.lusi) in the language, that can be compiled on their own, giving an object file (.lusic) and a header file (.h)
- modular code generation, from Lustre to C level included.
- nice amount of code refactoring

45c13277 07/10/2014 12:49 PM Xavier Thirioux

- added missing constraint check when sub-clocking
tuple expressions
- added an algorithm that reuses dead or clock-disjoint
variables instead of declaring/using new ones.
- NOT carefully tested. Use option -O 3 if you want
to give it a try...

01f1a1f4 07/10/2014 12:49 PM Xavier Thirioux

- added missing constraint check when sub-clocking
tuple expressions
- added an algorithm that reuses dead or clock-disjoint
variables instead of declaring/using new ones.
- NOT carefully tested. Use option -O 3 if you want
to give it a try...

a2d97a3e 07/09/2014 09:57 AM Pierre-Loïc Garoche

Updated the licence info and header for each file.
Moved backends in separate folders

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@313 041b043f-8d7c-46b2-b46e-ef0dd855326e

b38ffff3 07/09/2014 09:57 AM Pierre-Loïc Garoche

Updated the licence info and header for each file.
Moved backends in separate folders

a38c681e 07/08/2014 04:53 PM Xavier Thirioux

- many bugs/limitations in lifting operators to tuples have been worked out:
- typing/clock calculus/normalization now work properly
- still, a bug in annot generation (this one is for Ploc !!)
in file normalization, line 396
- bug corrected in subtyping...

2cf39a8e 07/08/2014 04:53 PM Xavier Thirioux

- many bugs/limitations in lifting operators to tuples have been worked out:
- typing/clock calculus/normalization now work properly
- still, a bug in annot generation (this one is for Ploc !!)
in file normalization, line 396
- bug corrected in subtyping...

44bea83a 07/04/2014 04:57 PM Xavier Thirioux

work in progress (code optimization again)

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@306 041b043f-8d7c-46b2-b46e-ef0dd855326e

7cd31331 07/04/2014 04:57 PM Xavier Thirioux

work in progress (code optimization again)

af5af1e8 07/03/2014 10:46 PM Pierre-Loïc Garoche

Merged horn_traces branch

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@303 041b043f-8d7c-46b2-b46e-ef0dd855326e

36454535 07/03/2014 10:46 PM Pierre-Loïc Garoche

Merged horn_traces branch

bb2ca5f4 07/03/2014 10:40 PM Xavier Thirioux

added some infrastructure to ease optimization (reusing vars)

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@302 041b043f-8d7c-46b2-b46e-ef0dd855326e

1837ce98 07/03/2014 10:40 PM Xavier Thirioux

added some infrastructure to ease optimization (reusing vars)

01c7d5e1 07/02/2014 05:29 PM Pierre-Loïc Garoche

Prepared first stage of code reorg:
1. moved type def in lustrespec.ml
2. moved constructor and basic functions in corelang
3. Modified eexpr with prenext quantifiers

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/branches/specification_reorg_corelang_parser@297 041b043f-8d7c-46b2-b46e-ef0dd855326e

0038002e 07/02/2014 05:29 PM Pierre-Loïc Garoche

Prepared first stage of code reorg:
1. moved type def in lustrespec.ml
2. moved constructor and basic functions in corelang
3. Modified eexpr with prenext quantifiers

3bfed7f9 06/26/2014 04:48 PM Xavier Thirioux

added warnings for useless variables (at verbose level 1)
- exact definition of 'useless' may be further refined
- display could certainly be improved

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@290 041b043f-8d7c-46b2-b46e-ef0dd855326e

9aaee7f9 06/26/2014 04:48 PM Xavier Thirioux

added warnings for useless variables (at verbose level 1)
- exact definition of 'useless' may be further refined
- display could certainly be improved

88486aaf 06/24/2014 03:16 PM Pierre-Loïc Garoche

Extracted scheduling from machine code computation

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@270 041b043f-8d7c-46b2-b46e-ef0dd855326e

db1c5c00 06/24/2014 03:16 PM Pierre-Loïc Garoche

Extracted scheduling from machine code computation

6d89b953 06/24/2014 01:54 PM Pierre-Loïc Garoche

Create a Step call only for functions that are not in basic lib

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@269 041b043f-8d7c-46b2-b46e-ef0dd855326e

1ad092fb 06/24/2014 01:54 PM Pierre-Loïc Garoche

Create a Step call only for functions that are not in basic lib

25b4311f 06/23/2014 09:56 AM Xavier Thirioux

- bug correction (regression from previous versions !) introduced
in C code generated from relational operators.

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@268 041b043f-8d7c-46b2-b46e-ef0dd855326e

fa0db9d5 06/23/2014 09:56 AM Xavier Thirioux

- bug correction (regression from previous versions !) introduced
in C code generated from relational operators.

6afa892a 06/20/2014 04:59 PM Xavier Thirioux

- refactorization of typing code (simpler subtyping rules)
- simplification of clock calculus (may be still buggy, work in progress)
no impact on unclocked programs.

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@267 041b043f-8d7c-46b2-b46e-ef0dd855326e

6b4d172f 06/20/2014 04:59 PM Xavier Thirioux

- refactorization of typing code (simpler subtyping rules)
- simplification of clock calculus (may be still buggy, work in progress)
no impact on unclocked programs.

4e07ac7f 05/20/2014 02:12 PM Xavier Thirioux

typo corrected in code generation for array memories (bad parentheses)

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@255 041b043f-8d7c-46b2-b46e-ef0dd855326e

1174cdd9 05/20/2014 02:12 PM Xavier Thirioux

typo corrected in code generation for array memories (bad parentheses)

d4807c3d 03/24/2014 09:05 AM Xavier Thirioux

- corrected causality bug (cf. previous commit)

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@227 041b043f-8d7c-46b2-b46e-ef0dd855326e

84d9893e 03/24/2014 09:05 AM Xavier Thirioux

- corrected causality bug (cf. previous commit)

7afcba5a 03/20/2014 03:41 PM Xavier Thirioux

liveness analysis improved. BUG found in causality wrt clocks...

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@224 041b043f-8d7c-46b2-b46e-ef0dd855326e

e8c0f452 03/20/2014 03:41 PM Xavier Thirioux

liveness analysis improved. BUG found in causality wrt clocks...

695d6f2f 03/19/2014 06:08 PM Xavier Thirioux

- reimplemented computation of dead variables
- added computation of a reuse policy (depending on types)
- not yet used though, would have to change code generation
in order to be useful...

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@216 041b043f-8d7c-46b2-b46e-ef0dd855326e

d4101ea0 03/19/2014 06:08 PM Xavier Thirioux

- reimplemented computation of dead variables
- added computation of a reuse policy (depending on types)
- not yet used though, would have to change code generation
in order to be useful...

8ea13d96 03/18/2014 06:05 PM Xavier Thirioux

added liveness analysis for reusing dead variables. Not yet used.

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@215 041b043f-8d7c-46b2-b46e-ef0dd855326e

6cf31814 03/18/2014 06:05 PM Xavier Thirioux

added liveness analysis for reusing dead variables. Not yet used.

e135421f 03/17/2014 12:17 AM Xavier Thirioux

Added declaration/definition of stateless/stateful nodes.
The 'function' keyword is for stateless nodes only,
the 'node' keyword is any kind of node.
Improves compilation and paves the way for more optimizations.

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@202 041b043f-8d7c-46b2-b46e-ef0dd855326e

5538b7ac 03/17/2014 12:17 AM Xavier Thirioux

Added declaration/definition of stateless/stateful nodes.
The 'function' keyword is for stateless nodes only,
the 'node' keyword is any kind of node.
Improves compilation and paves the way for more optimizations.

52cfee34 03/14/2014 05:45 PM Xavier Thirioux

- work in progress for stateless/stateful status computation
(to turn conditionals into merges, which yield more efficient C code)

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@198 041b043f-8d7c-46b2-b46e-ef0dd855326e

d3e4c22f 03/14/2014 05:45 PM Xavier Thirioux

- work in progress for stateless/stateful status computation
(to turn conditionals into merges, which yield more efficient C code)

89b9e25c 03/13/2014 05:30 PM Xavier Thirioux

corrected bugs in clock generalization that produced pessimistic C code (not wrong though); corrected bug with node importation policy wrt (re)declaration, (re)definition...

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@194 041b043f-8d7c-46b2-b46e-ef0dd855326e

2ea1e4a6 03/13/2014 05:30 PM Xavier Thirioux

corrected bugs in clock generalization that produced pessimistic C code (not wrong though); corrected bug with node importation policy wrt (re)declaration, (re)definition...

0777a7be 02/28/2014 03:28 PM Pierre-Loïc Garoche

Merge back horn backend branch in trunk

git-svn-id: https://cavale.enseeiht.fr/svn/lustrec/lustre_compiler/trunk@169 041b043f-8d7c-46b2-b46e-ef0dd855326e