From 6ed58d0f7a800b3ce1ca815b7b348a9cbf7af0eb Mon Sep 17 00:00:00 2001 From: Léo Gourdin Date: Mon, 6 Dec 2021 18:51:59 +0100 Subject: update the README and INSTALL documents --- INSTALL.md | 47 ++++++++++++++++++++++++++++++++++++++--------- README.md | 27 +++++++++++++++++++++------ 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 +./config_.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 -- cgit