summaryrefslogtreecommitdiff
path: root/src/lem_interp
AgeCommit message (Collapse)Author
2014-06-07Improve help messageGabriel Kerneis
2014-06-07Print mem and envGabriel Kerneis
2014-06-07Stack printingGabriel Kerneis
2014-06-07Print holes as [x]Gabriel Kerneis
2014-06-07Fix E_vector_append in interp pretty-printerGabriel Kerneis
2014-06-06Compact debug output and first draft of interactive loopGabriel Kerneis
2014-06-06Improve work-aroundGabriel Kerneis
Default to 64 bit for vec + range
2014-06-06Add a pretty-printer for Interp_astGabriel Kerneis
Copy-pasted with a few tweaks from Pretty_printer. Should really make a functor instead, but not sure how to deal with E_internal_cast yet. Note that Interp_ast and Ast are *not* generated from the same ott file (resp. l2.ott and l2_type.ott), but they are close enough that the code almost "just works".
2014-06-05Enable single-stepping for test/power.sailGabriel Kerneis
2014-06-05Refactor to_vec and add work-around to avoid truncationGabriel Kerneis
2014-06-04Fixup type coercions and overloadingKathy Gray
Reduce the number of implicit coercions we're doing, expanding overloading and fixing up types of functions. Warning: test_power does not run as not all overloaded funcitons are implemented Warning: vector concatenation does not pretty print to sail source yet
2014-05-29Check constraints in power.sail; this required using big_int instead of int ↵Kathy Gray
to support 2**64. Note: now nat (short hand for range<0,infinity>) should only be used if you really mean a nat instead of a bounded number (i.e. range<0,2**32>)
2014-05-28correct mismatched parens didn't mean to commit...Kathy Gray
2014-05-28Support stepped interpreting, and use normalisation instead of eval_nexp in ↵Kathy Gray
constraints
2014-05-22A (hopefully) sufficient interface and implementation between memory and the ↵Kathy Gray
interpreter
2014-05-21correct accidental capitalization of Interp in file nameKathy Gray
2014-05-21More interface support; interp_inter_imp now compilingKathy Gray
2014-05-20Fix interp compiling bugKathy Gray
2014-05-20yet more interfaceKathy Gray
2014-05-20More interfaceKathy Gray
2014-05-14More interface update for connecting externally (interp_interface provides ↵Kathy Gray
functions for connecting the interpreter to a memory model) Also adding default values to index vectors for supporting sparse vectors/maps
2014-05-12More interface supportKathy Gray
2014-05-08more interface changesKathy Gray
2014-05-06Begin tie to ppcmem style actions/outcomesKathy Gray
Change type of + on vectors to (bit vector,bit vector) -> bit vector
2014-05-01Make an overloading type decision (all + operations return ranges, never ↵Kathy Gray
vectors) and make the test suite pass again
2014-04-30More support for overloading functions; primarily focusing on +Kathy Gray
WARNING: vector test breaks due to not having implemented the full range of different + functions In general, we need to decide whether vector + vector, vector + range and range + vector should all return ranges, vectors or a mixture
2014-04-25rename interpreter's local memory type to reflect that it's all local memoryKathy Gray
2014-04-21Remove unsoundness of pattern match in interpreterKathy Gray
2014-04-15Use type information in vector concatenation pattern matching in interpreter.Kathy Gray
Does not properly bind variables (i.e. in the pattern 0b01:(bit[3]) a: 0b0001 subsequent uses of a will not be bound in the interpreter, though they are in the type checker), so until bug is fixed, treat all such identifiers as _
2014-04-08Reduce redundant information in ASTKathy Gray
2014-04-04Cosmetic improvements (statistics, --quiet)Gabriel Kerneis
2014-04-04Improve Power executionGabriel Kerneis
- Move FDE loop to the OCaml side of the Power model (avoid leaking memory due to lack of TCO in interpreter) - Display cycle count - Check the value of CIA at the end of each cycle and stop if it is equal to the initial value of LR, returning the value in GPR3.
2014-04-03Implement some arithmetic operationsGabriel Kerneis
2014-04-03Re-index vector slicesGabriel Kerneis
- increasing vector slices are re-indexed from 0 - decreasing vector slices are re-indexed towards 0 I don't know how the type system handles this currently, but it is essential for the correctness of execution.
2014-04-03Implement bitwise library operationsGabriel Kerneis
2014-04-03Typeclass Eq for valuesGabriel Kerneis
Again, this is necessary to compare big_int
2014-04-02Solve more constraints; fix up test suite bugs uncovered by solving more ↵Kathy Gray
constraints. Clean up Lem output a little for readability while debugging.
2014-04-02eq and neq return bit, not boolGabriel Kerneis
2014-04-02Fix EXTS and signedness of to_numGabriel Kerneis
2014-04-01Allow negative "nat" internallyGabriel Kerneis
to_num and to_vec probably still need to be fixed
2014-03-31Extend constraint checking, and add casts for base of a vector shifts (i.e. ↵Kathy Gray
from 0 to 32 etc, doesn't change order yet.).
2014-03-20Remove work-around from interpreter, move it to power.sailGabriel Kerneis
Two bugs are worked-around here: - missing cast to nat when a vector is wrapped in exts (exts is a no-op currently anyway, so we are discarding it) - missing cast (due to limited type-inference) in one if branch: type given explicitly.
2014-03-20Workaround missing casts for external callsGabriel Kerneis
This patch should be reverted when the interpreter is fixed. The first instruction of main.bin is now executed. The second one fails, seemingly because of a similar missing cast issue (external function add receives register GPR1 as value).
2014-03-19Fix endiannessGabriel Kerneis
This will never end…
2014-03-19Fix bug when reading register through a castKathy Gray
2014-03-17Revert broken vector handlingGabriel Kerneis
2014-03-14Support regbits read and writeGabriel Kerneis
No support for non-contiguous writes.
2014-03-14Pretty-print subreg correctlyGabriel Kerneis
2014-03-12Remove automagic register initializationGabriel Kerneis
2014-03-12Correctly type checking and interpreting accesses of register "fields". ↵Kathy Gray
Register-reading action isn't reading the subreg correctly still (seems to be making up a value though). Corrects but to vectors.sail and power.sail use of plus. (A new bug in power.sail is exposed using a binary operator with one value)