aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLéo Gourdin <leo.gourdin@univ-grenoble-alpes.fr>2021-12-06 18:51:59 +0100
committerLéo Gourdin <leo.gourdin@univ-grenoble-alpes.fr>2021-12-06 18:51:59 +0100
commit6ed58d0f7a800b3ce1ca815b7b348a9cbf7af0eb (patch)
treef214bab02ab0a5297b826ca9759dd5cefd030fbd
parent86fa4cc62f34f8fda7ea324c692101a97b4b8166 (diff)
downloadcompcert-kvx-6ed58d0f7a800b3ce1ca815b7b348a9cbf7af0eb.tar.gz
compcert-kvx-6ed58d0f7a800b3ce1ca815b7b348a9cbf7af0eb.zip
update the README and INSTALL documents
-rw-r--r--INSTALL.md47
-rw-r--r--README.md27
2 files changed, 59 insertions, 15 deletions
diff --git a/INSTALL.md b/INSTALL.md
index f072a211..5e2e800d 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -16,6 +16,7 @@ sh <(curl -sL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.
```
## Post-install
+
Run
```
eval `opam config env`
@@ -26,8 +27,8 @@ Add this to your `.bashrc` or `.bash_profile`
```
Switch to a recent OCaml compiler version
```
-opam switch create 4.09.0
-opam switch 4.09.0
+opam switch create 4.12.0
+opam switch 4.12.0
```
Install dependencies available through opam
```
@@ -37,18 +38,20 @@ opam install coq menhir
Note: it may happen that a newer version of Coq is not supported yet.
You may downgrade to solve the problem:
```
-opam pin add coq 8.11.0 # example of Coq version
+opam pin add coq 8.12.2 # example of Coq version
```
## Compilation
-Pre-compilation configure replace the placeholder with your desired platform
-(for Kalray Coolidge it is `kvx-cos`)
+
+You can choose change the installation directory by modifying the
+`config_simple.sh` file before running the configuration script.
+
+Then, use the configuration script corresponding to your desired platform:
+(for Kalray Coolidge it is `config_kvx.sh`)
```
-./configure -prefix ~/.usr <platform>
+./config_<platform>.sh
```
-`PREFIX` is where CompCert will be installed after `make install`
-
If using Kalray's platform, make sure that the kvx tools are on your path
Compile (adapt -j# to the number of cores and available RAM)
```
@@ -56,8 +59,22 @@ make -j12
make install
```
+## Tests
+
+## Documentation
+
+You can generate the documentation locally with:
+```
+make documentation
+```
+
+Note that you need to install [coq2html](https://github.com/xavierleroy/coq2html)
+before doing so.
+
## Utilization
-`ccomp` binaries are installed at `$(PREFIX)/bin`
+
+`ccomp` binaries are installed at `$(CCOMP_INSTALL_PREFIX)/bin`
+(variable defined in `config_simple.sh`).
Make sure to add that to your path to ease its use
Now you may use it like a regular compiler
```
@@ -66,9 +83,21 @@ ccomp -O3 test.c -o test.bin
```
## Changing platform
+
If you decide to change the platform, for instance from kvx-cos to kvx-mbr, you
should change the `compcert.ini` file with the respective tools and then run
```
make install
```
+## Cleaning
+
+To clean only object files while keeping the platform configuration:
+```
+make clean
+```
+
+To clean everything (to then reconfigure for another platform):
+```
+make distclean
+```
diff --git a/README.md b/README.md
index 88e37055..4912eb3d 100644
--- a/README.md
+++ b/README.md
@@ -17,12 +17,22 @@ refer to the [Web site](https://compcert.org/) and especially
the [user's manual](https://compcert.org/man/).
## Verimag-Kalray version
+
This is a special version with additions from Verimag and Kalray :
-* A backend for the KVX processor: see [`README_Kalray.md`](README_Kalray.md) for details.
-* Scheduling passes for ARMv8 (aarch64) and RISC-V.
-* Some general-purpose optimization phases (e.g. profiling).
- * see [`PROFILING.md`](PROFILING.md) for details on the profiling system
+* A backend for the Coolidge VLIW KVX processor.
+* Postpass scheduling passes for KVX, ARMv8 (aarch64) and RISC-V along with a
+ preprocessing peephole optimizer.
+* Improved subexpression elimination: two passes CSE2 and CSE3. Both go through
+ loops and feature a small alias analysis.
+* A generic prepass scheduling optimizer with a multi-purpose preprocessing
+ front-end: rewritings, register renaming, if-lifting and some generic code
+ transformations such as loop-rotation, loop-unrolling, or tail-duplication.
+* A profiling system: see [`PROFILING.md`](PROFILING.md) for details.
+* Static branch prediction.
+* And some experimental features that are work in progress.
+
+_Please refer to the resources listed below for more information._
The people responsible for this version are
@@ -36,17 +46,22 @@ with contributions of:
* Justus Fasse (M2R UGA, now at KU Leuven).
* Pierre Goutagny and Nicolas Nardino (L3 ENS-Lyon).
+## Installing
+
+Please follow the instructions in `INSTALL.md`
+
## Papers, docs, etc on this CompCert version
-* [a 5-minutes video](http://www-verimag.imag.fr/~boulme/videos/poster-oopsla20.mp4) by C. Six, presenting the postpass scheduling and the KVX backend
+* [The documentation of the KVX backend Coq sources](https://certicompil.gricad-pages.univ-grenoble-alpes.fr/compcert-kvx).
+* [A 5-minutes video](http://www-verimag.imag.fr/~boulme/videos/poster-oopsla20.mp4) by C. Six, presenting the postpass scheduling and the KVX backend
(also on [YouTube if you need subtitles](https://www.youtube.com/watch?v=RAzMDS9OVSw)).
-* [the documentation of the KVX backend Coq sources](https://certicompil.gricad-pages.univ-grenoble-alpes.fr/compcert-kvx).
* [Certified and Efficient Instruction Scheduling](https://hal.archives-ouvertes.fr/hal-02185883), an OOPSLA'20 paper, by Six, Boulmé and Monniaux.
* [Formally Verified Superblock Scheduling](https://hal.archives-ouvertes.fr/hal-03200774), a CPP'22 paper, by Six, Gourdin, Boulmé, Monniaux, Fasse and Nardino.
* [Optimized and formally-verified compilation for a VLIW processor](https://hal.archives-ouvertes.fr/tel-03326923), Phd Thesis of Cyril Six in 2021.
* [Formally Verified Defensive Programming (efficient Coq-verified computations from untrusted ML oracles) -- Chapters 1 to 3](https://hal.archives-ouvertes.fr/tel-03356701), Habilitation Thesis of Sylvain Boulmé in 2021.
* [Code Transformations to Increase Prepass Scheduling Opportunities in CompCert](https://www-verimag.imag.fr/~boulme/CPP_2022/FASSE-Justus-MSc-Thesis_2021.pdf), MSc Thesis of Justus Fasse in 2021.
* [Register-Pressure-Aware Prepass-Scheduling for CompCert](https://www-verimag.imag.fr/~boulme/CPP_2022/NARDINO-Nicolas-BSc-Thesis_2021.pdf), BSc Thesis of Nicolas Nardino in 2021.
+* [Formally verified postpass scheduling with peephole optimization for AArch64](https://www.lirmm.fr/afadl2021/papers/afadl2021_paper_9.pdf), a short AFADL'21 paper, by Gourdin.
## License
CompCert is not free software. This non-commercial release can only