aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* rm instructions now unusedDavid Monniaux2020-12-081-2/+1
|
* Merge github.com:AbsInt/CompCert into kvx-workv3.8_kvx_instructions_fixedDavid Monniaux2020-12-0818-115/+48
|\
| * Error when using -main without -interpXavier Leroy2020-12-061-0/+2
| | | | | | | | | | | | Outside of -interp mode, -main has no (known) effect but could be confused for a linker option that sets the program's entrypoint, say. It's safer to reject the option.
| * PowerPC modeling of registers destroyed by pseudo-instructionsXavier Leroy2020-12-062-4/+6
| | | | | | | | Inlined built-in functions destroy GPR0
| * ARM modeling of registers destroyed by pseudo-instructionsXavier Leroy2020-12-062-4/+6
| | | | | | | | | | Pflid destroys IR14 Inlined built-in functions destroy IR14
| * AArch64 modeling of registers destroyed by pseudo-instructionsXavier Leroy2020-12-062-8/+11
| | | | | | | | | | | | Pfmovimms, Pfmovimmd destroy X16 Pbtbl preserves X17 Inlined built-in functions destroy X16 and X30
| * Remove Pfcfi, Pfcfiu, Pfctiu pseudoinstructionsXavier Leroy2020-12-0612-99/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also remove the Ofloatofint, Ofloatofintu, and Ointuoffloat PowerPC operations. The pseudoinstructions were used to implement these operations, as follows: Pfcfi : Ofloatofint i.e. the conversion signed int32 -> float64 Pfcfiu : Ofloatofintu i.e. the conversion unsigned int32 -> float64 Pfctiu : Ointuoffloat i.e. the conversion float64 -> unsigned int32 These pseudoinstructions were expanded (in Asmexpand.ml) in terms of Pfcfid : signed int64 -> float64 Pfctidz : float64 -> signed int64 and int32/int64 conversions. This commit performs this expansion during instruction selection (SelectOp.vp): floatofint(n) becomes floatoflong(longofint(n)) floatofintu(n) becomes floatoflong(longuofint(n)) intuoffloat(n) becomes cast32unsigned(longoffloat(n)) Then there is no need for the 3 removed operations and the 3 removed pseudoinstructions. More importantly, the correctness of these expansions is now proved as part of instruction selection, using the corresponding results from Floats.v.
* | Fixing test/regression for KVXv3.8_kvxCyril SIX2020-12-076-2/+409
| |
* | Merge branch 'kvx-work' into kvx-work-merge3.8Cyril SIX2020-12-04104-1053/+11993
|\ \ | | | | | | | | | | | | | | | Conflicts: Makefile configure
| * | CommentCyril SIX2020-12-041-0/+1
| | |
| * | Less aggressive tail duplicationCyril SIX2020-12-041-6/+11
| | | | | | | | | | | | | | | In some cases of two imbricated loops, we would tail-duplicate too much, because of the input trace traversing both loop headers.
| * | Clean-up debugCyril SIX2020-12-041-4/+2
| | |
| * | Fixed infinite loop on find_last_node_before_loopCyril SIX2020-12-041-3/+6
| | | | | | | | | | | | Happened when a loop was predicted not to be taken
| * | Slight perf improvementCyril SIX2020-12-022-4/+4
| | |
| * | [expensive] Behavior change when the loop has two final instructionsCyril SIX2020-12-021-9/+57
| | | | | | | | | | | | | | | Right now though the compilation time is too high for glpk, I need to figure out why
| * | Duplicateaux: Generalization of look_aheadCyril SIX2020-12-011-3/+5
| | |
| * | Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepassCyril SIX2020-12-016-11/+161
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: arm/Op.v common/Values.v kvx/Op.v
| | * | store2_soundDavid Monniaux2020-11-251-1/+1
| | | |
| | * | clever_kill_store_soundDavid Monniaux2020-11-251-7/+5
| | | |
| | * | kill_store_soundDavid Monniaux2020-11-251-0/+49
| | | |
| | * | two lemmas admittedDavid Monniaux2020-11-253-9/+115
| | | |
| | * | missing lemmasDavid Monniaux2020-11-251-0/+21
| | | |
| | * | pointer_eq copiedDavid Monniaux2020-11-256-0/+86
| | | |
| * | | Ignore loopback edges on tail-duplicateCyril SIX2020-12-011-0/+2
| | | |
| * | | Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepassDavid Monniaux2020-11-2413-31/+343
| |\| |
| | * | tiny simplification in Tunnelingaux.mlSylvain Boulmé2020-11-241-2/+2
| | | |
| | * | bug #223 fix on PPCDavid Monniaux2020-11-232-3/+73
| | | |
| | * | bug #223 fix for ARMDavid Monniaux2020-11-232-3/+76
| | | |
| | * | bug #223 fix on x86 / x86-64David Monniaux2020-11-232-4/+80
| | | |
| | * | fix wrong version of file on AArch64David Monniaux2020-11-231-1/+4
| | | |
| | * | Merge branch 'kvx-work' of ↵David Monniaux2020-11-232-3/+14
| | |\ \ | | | | | | | | | | | | | | | gricad-gitlab.univ-grenoble-alpes.fr:sixcy/CompCert into kvx-work
| | | * | fix bug #223 on Risc-VDavid Monniaux2020-11-232-3/+14
| | | | |
| | * | | fix bug #223 on AArch64David Monniaux2020-11-231-3/+72
| | |/ /
| | * | correction bug #223 sur KVXDavid Monniaux2020-11-232-12/+22
| | | |
| * | | prepass scheduling proof finished !Sylvain Boulmé2020-11-201-24/+56
| | | | | | | | | | | | | | | | proof of the two remaining lemmas
| * | | merge nouveau tunnelingDavid Monniaux2020-11-191-1/+1
| | | |
| * | | Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepassDavid Monniaux2020-11-198-270/+728
| |\| |
| | * | for 2010-11-18 Kalray releaseDavid Monniaux2020-11-191-1/+1
| | | |
| | * | minor fix in coq2html commentSylvain Boulmé2020-11-161-1/+2
| | | |
| | * | Tunneling: improved elimination of conditionsSylvain Boulmé2020-11-166-259/+673
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the elimination of useless conditions done in the 2nd pass of the tunneling introduced some new "nop" instructions that were not eliminated. This commit solves this issue by anticipating the elimination of conditions in the 1st pass of the tunneling, the 2nd pass being unchanged. In case of cycles in the CFG, the full elimination of useless conditions may require several iterations in the 1st pass. Moreover, in the simulation proof, the measure counting the number of eliminated steps from each node, needs to be adapted according to the modifications on the 1st pass. Hence, this measure results from a quite complex fixpoint computation: proving its properties would be very difficult. This leads us to introduce an oracle, implementing the first pass and producing the expected measure. A certified verifier directly checks that the measure provided by the oracle satisfies the properties expected by the simulation proof. Introducing this oracle/verifier pair has here the following advantage: - the proof is simpler than the original one (e.g. having a certified union-find structure is no more necessary for this pass). - the oracle is very efficient, by using imperative data-structure to compute memoized fixpoints. At runtime, the overhead induced by the verifier computations (and the actual computation of the measure) seems largely compensated by the gains obtained through the imperative oracle.
| | * | Proof of UnionFind.pathlen_unionSylvain Boulmé2020-11-161-10/+53
| | | | | | | | | | | | | | | | helps to understand the difference between union and merge in the interface
| * | | seval_builtin_sval_preservedDavid Monniaux2020-11-171-1/+4
| | | |
| * | | a little lemma on list of builtinsDavid Monniaux2020-11-171-2/+15
| | | |
| * | | there remains two tricky casesDavid Monniaux2020-11-161-3/+14
| | | |
| * | | Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepassDavid Monniaux2020-11-062-27/+32
| |\| |
| * | | Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepassDavid Monniaux2020-11-055-31/+114
| |\ \ \
| * | | | disable debug printing in schedulerDavid Monniaux2020-11-042-7/+9
| | | | |
| * | | | Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepassDavid Monniaux2020-11-041-1/+2
| |\ \ \ \
| * \ \ \ \ Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepassDavid Monniaux2020-11-037-36/+121
| |\ \ \ \ \
| * \ \ \ \ \ Merge remote-tracking branch 'origin/kvx-work' into kvx-test-prepassDavid Monniaux2020-10-315-17/+121
| |\ \ \ \ \ \