summaryrefslogtreecommitdiff
path: root/src/lem_interp
AgeCommit message (Collapse)Author
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)
2014-03-11More work on interpreter and Power modelGabriel Kerneis
2014-03-11Confusion between first index and vector lengthGabriel Kerneis
2014-03-11Increase support for register "field" accesses; there is now a bug in how ↵Kathy Gray
run_interp handles SubReg register forms.
2014-03-07Treat registers as values when not being actively read or written to, so ↵Kathy Gray
that we can have a vector of registers for example. Also, register types can be explicitly referenced.
2014-03-04More polymorphism for additionGabriel Kerneis
2014-03-03Fixing assorted bugs. Adding ability to put a type on the identifier being ↵Kathy Gray
assigned to in assignments.
2014-03-01Fix printing bug on vector slicing that caused only one element to ever be ↵Kathy Gray
sliced
2014-02-28Fix endiannessGabriel Kerneis
In fact, increasing order is big-endian, not little-endian. This is good news for us, because it means we do not need any switch for the POWER spec.
2014-02-28Fetch-decode POWER interpreterGabriel Kerneis
Many limitations and bugs currently, but loads binary and decodes opcodes correctly (using endianness hacks). Disabled in the default test suite (but still compiled), run "make test_power" to try it.
2014-02-28Load ELF sections to virtual memory addressesGabriel Kerneis
Roughly 110KB/s (~5 seconds to load "hello" test).
2014-02-27Fix error to constructor pattern matchingKathy Gray