| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2020-04-10 | Allow empty Sail source files | Thomas Bauereiss | |
| ... instead of dying with "Syntax error". | |||
| 2020-04-10 | Add Lem builtins for operations on reals | Thomas Bauereiss | |
| ... that match the names in lib/real.sail. Also fix the lem mapping for abs_int_atom and a Lem syntax error with nested record updates. | |||
| 2020-04-10 | Make bounds check for vector subrange assignments stricter | Thomas Bauereiss | |
| Check that indices are within bounds, not just in the right (increasing/decreasing) order. | |||
| 2020-04-10 | Implement hex_str for Lem | Thomas Bauereiss | |
| 2020-04-10 | Be more careful when flow-typing loops | Thomas Bauereiss | |
| Asserting constraints from the loop condition in the body is fine for while-loops, but doesn't make sense for until-loops. | |||
| 2020-04-01 | Report SMT solver stderr on unexpected return code | Brian Campbell | |
| 2020-03-29 | Implement set_slice_int in the interpreter | Alasdair | |
| 2020-03-25 | Fix a typo in write_mem for the interpreter | Alasdair | |
| 2020-03-19 | Improve a particularly unhelpful type error | Alasdair | |
| From: No type variable 'ex14# to: Type error: [../and_let_bool.sail]:6:19-50 6 | and_bool(let y : bool = x in not_bool(y), x) | ^-----------------------------^ | The type variable 'ex14# would leak into an outer scope. | | Try adding a type annotation to this expression. | This error was caused by: | [../and_let_bool.sail]:6:23-24 | 6 | and_bool(let y : bool = x in not_bool(y), x) | | ^ | | Type variable 'ex14# was introduced here | | |||
| 2020-03-18 | Expose details of failed lexp bounds checks | Thomas Bauereiss | |
| Allows ASL-to-Sail translation to automatically patch lexp bounds check errors. | |||
| 2020-03-13 | SMT fixes for some corner cases of vector updates | Thomas Bauereiss | |
| 2020-03-02 | Fix jenkins | Alasdair Armstrong | |
| 2020-03-02 | Add arith_shiftr to SMT and interpreter | Thomas Bauereiss | |
| 2020-02-25 | Implement count_leading_zeros for interpreter | Thomas Bauereiss | |
| 2020-02-24 | Avoid generating assertions multiple times during typechecking | Thomas Bauereiss | |
| 2020-02-21 | Make sure we test that struct literals have a complete set of fields. Fixes #60 | Alasdair Armstrong | |
| 2020-02-21 | Distinguish type identifiers in topological sorting | Thomas Bauereiss | |
| Fixes #61 | |||
| 2020-02-21 | Fix bug in last patch to topological sorting (e5ee087f) | Thomas Bauereiss | |
| 2020-02-21 | SMT: Implement a few more primops | Thomas Bauereiss | |
| 2020-02-21 | Nl_flow: Consider early returns | Thomas Bauereiss | |
| Tells the typechecker that, for example, in a block after if (i < 0) then { return (); } else { ... } the constraint not(i < 0) holds. This is a useful pattern when type-checking code generated from ASL. | |||
| 2020-02-21 | Move topological sorting code to graph.ml | Thomas Bauereiss | |
| 2020-02-20 | More list C codegen fixes for issue #59 | Alasdair Armstrong | |
| 2020-02-20 | Fix missing code generation builtins for lists. Fixes #59 | Alasdair Armstrong | |
| Also uncovered a few other issues w.r.t lists | |||
| 2020-02-06 | Make sure tdiv_int and tmod_int are recognised by sail -i | Alasdair Armstrong | |
| 2020-01-31 | Fix soundness bug found by Mark | Alasdair | |
| When returning a type from a letbinding we need to be careful that the type it returns does not refer to any type variable that only exists for the lifetime of the letbinding (because it was bound by it). Normally this fails because any type variable bound in the inner letbinding won't exist in the outer scope, but if it is shadowed this can cause an issue. | |||
| 2020-01-30 | Make sure external pprint is listed as a dependency for sail when used as an ↵ | Alasdair Armstrong | |
| OCaml library | |||
| 2020-01-28 | Use external PPrint | Thomas Bauereiss | |
| 2020-01-28 | Fix a bug with lexp->exp conversion for register references | Alasdair | |
| 2020-01-22 | Preserve effect annotation when realising mappings | Thomas Bauereiss | |
| 2020-01-21 | Reduce the amount of unnecessary parentheses in Coq output | Brian Campbell | |
| 2020-01-21 | Use hex/bin literals in Coq backend | Brian Campbell | |
| Also be more careful to avoid pattern bindings with identifiers to avoid parsing clashes, eg `let 'bytes := ...` which is confused with the notation for binary literals. | |||
| 2020-01-17 | Merge scattered mapping fixes | James Clarke | |
| 2020-01-17 | Merge branch 'coq-bool-props' into sail2 | Brian Campbell | |
| 2020-01-17 | Keep track of source locations for all IR branches | Alasdair | |
| Useful for tracking down non-determinism | |||
| 2020-01-16 | Allow effects on mappings | Alasdair Armstrong | |
| 2020-01-16 | Cleanup type-checking rule for LEXP_field | Alasdair Armstrong | |
| Was being overly conservative with nested structs and used an incorrect location for the error message | |||
| 2020-01-16 | Keep track of (non-bit) vectors known to be fixed size in Jib | Alasdair Armstrong | |
| This is useful because an arbitrary vector of a fixed size N can be represented symbolically as a vector of N symbolic values, whereas an arbitrary vector of arbitrary size cannot be easily represented. | |||
| 2020-01-14 | Basic support to track uncaught exceptions in Sail->C | Alasdair | |
| 2020-01-10 | Don't do any C specific name mangling for the cons operator in jib_compile | Alasdair Armstrong | |
| Instead handle it specially in c_backend, leaving the type information in the IR available for other consumers | |||
| 2020-01-04 | Coq: change record field update notation to avoid duplicating terms | Brian Campbell | |
| (using match rather than let-and-projections because the latter would be reduced by tactics like unfold) | |||
| 2020-01-03 | Add Sail pretty-printing of bitfields | Thomas Bauereiss | |
| 2019-12-18 | Make sure we generate literals of precisely the right length for symbolic ↵ | Alasdair Armstrong | |
| execution | |||
| 2019-12-13 | move ott pp to different Makefile rule | Peter Sewell | |
| 2019-12-13 | experiment in ott-generated pp | Peter Sewell | |
| 2019-12-12 | Fix a little bit of inconsistency in the command line arguments | Alasdair Armstrong | |
| 2019-12-10 | Introduce new bitfield syntax for ASL translation | Alasdair Armstrong | |
| Now we less desugared ASL we'd like to translate some notions more idiomatically, such as bitfields with names. However the current bitfield implementation in Sail is really ugly (entirely my fault) This commit introduces a new flag -new_bitfields which changes the behavior of bitfields as follows bitfield B : bits(32) = { Field: 7..0 } Is now treated as a struct with a single field called `bits` register R : B function main() -> unit = { R[Field] = 0xFF; assert(R[Field] == 0xFF) } then desugars as R.bits[7..0] = 0xFF and assert(R.bits[7..0] == 0xFF) which is much simpler, matches ASL and is probably how it should have worked all along | |||
| 2019-12-06 | Don't introduce uneccesary control flow when compiling | Alasdair Armstrong | |
| 2019-12-03 | Prover backends: Expand Int type synonyms in type definitions | Thomas Bauereiss | |
| ... not just in type abbreviations. Fixes an error in the RV32 build of CHERI-RISC-V. | |||
| 2019-12-01 | Coq: remove last use and definition of doc_nc_prop | Brian Campbell | |
| (plus test, as it wasn't covered before) | |||
| 2019-11-29 | Merge branch 'word-numerals' into sail2 | Thomas Bauereiss | |
