Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merge branch 'kvx-work' of ↵ | David Monniaux | 2021-09-01 | 3 | -5/+107 |
|\ | | | | | | | gricad-gitlab.univ-grenoble-alpes.fr:sixcy/CompCert into kvx-work | ||||
| * | cleanup | Léo Gourdin | 2021-09-01 | 1 | -9/+0 |
| | | |||||
| * | Merge remote-tracking branch 'origin/kvx-work' into kvx-work | Léo Gourdin | 2021-09-01 | 5 | -89/+24 |
| |\ | |||||
| * \ | [MERGE] BTL into kvx-work (replacing RTLpath) | Léo Gourdin | 2021-09-01 | 3 | -5/+116 |
| |\ \ | |||||
| | * \ | Merge branch 'kvx-work' into BTL | Léo Gourdin | 2021-06-10 | 38 | -738/+774 |
| | |\ \ | |||||
| | * | | | [disabled checker] BTL Scheduling and Renumbering OK! | Léo Gourdin | 2021-05-27 | 1 | -0/+1 |
| | | | | | |||||
| | * | | | Moving common tools, adding liveness input/output information to BTL ↵ | Léo Gourdin | 2021-05-24 | 3 | -2/+39 |
| | | | | | | | | | | | | | | | | | | | | generation oracle | ||||
| | * | | | Changing to an opaq record in BTL info, this is a broken commit | Léo Gourdin | 2021-05-20 | 1 | -0/+52 |
| | | | | | |||||
| | * | | | Grouping common RTL functions, printer improvement | Léo Gourdin | 2021-05-19 | 2 | -5/+2 |
| | | | | | |||||
* | | | | | Merge remote-tracking branch 'origin/parameterized-cse3' into kvx-work | David Monniaux | 2021-09-01 | 4 | -61/+79 |
|\ \ \ \ \ | |_|_|_|/ |/| | | | | |||||
| * | | | | more parameterization | David Monniaux | 2021-07-16 | 1 | -2/+0 |
| | | | | | |||||
| * | | | | make operations cse3 parametric | David Monniaux | 2021-07-16 | 2 | -6/+10 |
| | | | | | |||||
| * | | | | make trivial ops parametric | David Monniaux | 2021-07-16 | 2 | -6/+7 |
| | | | | | |||||
| * | | | | make conditions a parameter in CSE3 | David Monniaux | 2021-07-16 | 2 | -3/+12 |
| | | | | | |||||
| * | | | | rename parameterized versions | David Monniaux | 2021-07-16 | 2 | -38/+38 |
| | | | | | |||||
| * | | | | make CSE3 condition parametric | David Monniaux | 2021-07-16 | 2 | -29/+42 |
| | | | | | |||||
| * | | | | rm condition parametrization in CSE3analysis | David Monniaux | 2021-07-16 | 2 | -13/+6 |
| | | | | | |||||
* | | | | | RTLTunneling: fix comments and authors information | Sylvain Boulmé | 2021-08-24 | 5 | -89/+24 |
| |/ / / |/| | | | |||||
* | | | | remove default_notrap_load_value | Sylvain Boulmé | 2021-07-24 | 1 | -1/+1 |
| | | | | |||||
* | | | | Merge branch 'kvx-work' into rtl-tunneling | Sylvain Boulmé | 2021-07-24 | 13 | -25/+18 |
|\| | | | |||||
| * | | | Replacing default notrap load value by Vundef everywherecsix-PhD | Cyril SIX | 2021-06-18 | 13 | -25/+18 |
| | |/ | |/| | |||||
* | | | Change "Tunneling" to "LTLTunneling" everywhere | Pierre Goutagny | 2021-06-17 | 5 | -5/+5 |
| | | | | | | | | | | | | To respect the symmetry between RTL- and LTL-Tunneling | ||||
* | | | Use Tunnelinglibs in Tunnelingaux | Pierre Goutagny | 2021-06-17 | 1 | -256/+81 |
| | | | |||||
* | | | Simplify tunneling factorisation | Pierre Goutagny | 2021-06-17 | 2 | -168/+173 |
| | | | | | | | | | | | | | | | The recursive module definitions required unnecessarily long expicit signatures for little added legibility. | ||||
* | | | Use Tunnelinglibs in RTLTunnelingaux | Pierre Goutagny | 2021-06-16 | 2 | -265/+123 |
| | | | |||||
* | | | Add Tunneling factorisation module | Pierre Goutagny | 2021-06-16 | 1 | -0/+237 |
| | | | |||||
* | | | Add RTL Tunneling as a pass | Pierre Goutagny | 2021-06-14 | 2 | -0/+6 |
| | | | |||||
* | | | Add the RTLTunneling oracle | Pierre Goutagny | 2021-06-14 | 1 | -0/+284 |
| | | | |||||
* | | | Complete RTLTunnelingproof | Pierre Goutagny | 2021-06-11 | 1 | -16/+66 |
| | | | | | | | | | | | | There is still some refactoring to do, though | ||||
* | | | Complete `tunnel_step_correct` proof up to Ijumptable | Pierre Goutagny | 2021-06-10 | 1 | -9/+227 |
| | | | | | | | | | | | | Excluding Icond | ||||
* | | | Starts proof for `tunnel_step_correct` | Pierre Goutagny | 2021-06-09 | 1 | -15/+120 |
| | | | |||||
* | | | Monday's work on RTLTunnelingproof | Pierre Goutagny | 2021-06-07 | 1 | -31/+153 |
| | | | |||||
* | | | Add RTLTunnelingproof.v | Pierre Goutagny | 2021-06-04 | 1 | -0/+170 |
| | | | |||||
* | | | Fix check_instr Icond target conditions | Pierre Goutagny | 2021-06-04 | 1 | -2/+2 |
| | | | |||||
* | | | Write RTLTunneling.v | Pierre Goutagny | 2021-06-03 | 1 | -0/+125 |
| | | | |||||
* | | | Add RTLTunneling.v | Pierre Goutagny | 2021-06-03 | 1 | -0/+0 |
|/ / | |||||
* | | Merge remote-tracking branch 'verimag/manuscript' into kvx-work | Cyril SIX | 2021-06-01 | 1 | -13/+11 |
|\ \ | |||||
| * | | Do not rotate if the CB was already at the end. | Cyril SIX | 2021-04-28 | 1 | -1/+5 |
| | | | |||||
| * | | Heuristic counter update | Cyril SIX | 2021-04-28 | 1 | -12/+6 |
| |/ | |||||
* | | Merge remote-tracking branch 'origin/kvx-work' into merge_master_8.13.1 | Cyril SIX | 2021-06-01 | 4 | -545/+286 |
|\| | |||||
| * | Merge remote-tracking branch 'origin/manuscript' into kvx-worksubmission_OOPSLA2021_AARCH64_KVX | Cyril SIX | 2021-04-13 | 3 | -511/+129 |
| |\ | |||||
| | * | Cleaning | Cyril SIX | 2021-04-02 | 1 | -2/+1 |
| | | | |||||
| | * | More efficient | Cyril SIX | 2021-04-02 | 1 | -8/+12 |
| | | | |||||
| | * | Outermost loop detection works | Cyril SIX | 2021-04-02 | 1 | -9/+10 |
| | | | |||||
| | * | Getting all loop bodies | Cyril SIX | 2021-04-02 | 1 | -2/+36 |
| | | | |||||
| | * | get_loop_headers simplification (using the new get_loop_backedges) | Cyril SIX | 2021-04-02 | 1 | -39/+7 |
| | | | |||||
| | * | Simple backedge detection (modified code from get_loop_headers) | Cyril SIX | 2021-04-02 | 2 | -0/+43 |
| | | | |||||
| | * | Big simplification of get_loop_info | Cyril SIX | 2021-03-31 | 1 | -111/+16 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Another remnant of trying to devise a complicated algorithm for a problem that was, in fact, very simple: I just had to check whether the branch was within the loop body. I tested it functionally on the benchmarks: only heapsort is changed, in slightly worst (4-5%), because the old get_loop_info had done a buggy guess that proved to be lucky for that particular case. The other benchmarks are unchanged: the predictions stay the exact same. The get_loop_info could potentially be improved by having a natural loop detection that extends to outer loops (not just inner loops), though I expect the performance improvements would be very small. | ||||
| | * | Simplification of the Linearize heuristic (same result functionally) | Cyril SIX | 2021-03-30 | 1 | -216/+6 |
| | | | |||||
| | * | Simplifications on Linearize - details below | Cyril SIX | 2021-03-29 | 1 | -205/+79 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While I was developing the new trace linearize, I started off with implementing a big algorithm reasoning on dependencies etc.., but I realized later that it was giving a too different performance (sometimes better, sometimes worst) than the original CompCert. So I stripped it off gradually until its performance (on regular code with just branch prediction) was on par with the base Linearize of CompCert. I was aiming here for something that is either equal, or better, in terms of performance. My (then and current) theory is that I have stripped it out so much that now it's just like the algorithm of CompCert, but with a modification for Lcond instructions (see the new linearize_aux_cb). However, I never tested that theory: the code worked, so I left it as is, without any simplification. But now that I need to get a clear version for my manuscript, I'm digging into it. It turns out my theory is not really exact. A difference is that instead of taking the minpc across the chain, I take the pc of the very first block of the chain I create. This was (I think) out of laziness in the middle of two iterations, except that I forgot about it. I tested my new theory by deleting all the stuff about dependencies calculation (commited), and also computing a minpc just like original compcert (not commited): I get the same exact Mach code than linearize_aux_cb. So right now, the only difference between linearize_aux_cb and linearize_aux_trace is that slightly different minpc computation. I think transitionning to linearize_aux_cb will be 1) much clearer than this Frankenstein monster of linearize_aux_trace that I made, and 2) might be better performing too. I don't have access to Kalray machines today so i'm leaving this on hold for now, but tomorrow I will test performance wise to see if there is a regression. If there isn't, I will commit this (and it will be the version narrated by my manuscript). If there is a regression, it would mean selecting the pc of the first node (in opposition to the minpc) is more performant, so i'd backtrack the change to linearize_aux_cb anyway and there should then be 0 difference in the generated code. |