summaryrefslogtreecommitdiff
path: root/src/gen_lib/sail_values.ml
AgeCommit message (Collapse)Author
2017-07-06substitute all uses of mod_big_int and div_big_int for Z.rem and Z.div which ↵Robert Norton
have correct rounding behaviour. Missed these when changing quot and mod functions.
2017-07-06implement abs function correctly for ocaml shallow embedding.Robert Norton
2017-07-06fix dodgy get_min/max_representable functions. Looks like an attempt at ↵Robert Norton
optimisation went wrong.
2017-06-30add more tests for sail library. Can't compile entire file due to sail ↵Robert Norton
performance bug or infinite loop. Add some missing shallow embedding funcitons.
2017-06-22add a 'print' built-in function handy for writing sail tests.Robert Norton
2017-05-24it turns out that Zarith has a divide function which does truncation towards ↵Robert Norton
zero but it is not exposed via Bit_int_Z. Use it instead of rolling our own. Also ocaml / and mod already do the right thing.
2017-05-08add some missing things in sail_values and make big_int version the default ↵Robert Norton
for set_vector_subrange_bit.
2017-04-27add command line argument for setting undef values to all zero or all one. ↵Robert Norton
Some tests intentionally produce undefined values (e.g. divide by zero) and this might be required for them to work.
2017-04-25optimise to_vec_int because it is used by MEMr to convert each byte to vector.Robert Norton
2017-04-25replace memory representation with map of 1MB pages rather than map of ↵Robert Norton
bytes. This makes loading binaries much quicker but doesn't seem to make a big difference to execution speed.
2017-04-25remove unused function.Robert Norton
2017-04-21define some big_int literals in sail_values.ml to avoid lots of calls to ↵Robert Norton
bit_int_of_int. Likely very little performance benefit but slightly more readable.
2017-04-21implement to_vec_big using zarith extract for some speedup.Robert Norton
2017-04-21suppress register field tracing if not enabled (missed in previous commit)Robert Norton
2017-04-20more library optimisation. Implement int_of_bit_array using shift, avoiding ↵Robert Norton
need to use power.
2017-04-20implement vector subrange using Array.sub for approx 10% speedup.Robert Norton
2017-04-20attempt to optimise performance if not tracing writes.Robert Norton
2017-04-20add missing min and max functions, overriding built-in ocaml ones. Also ↵Robert Norton
neq_range.
2017-04-20add name to register representation and print it on write.Robert Norton
2017-04-18fix definition of mask -- Vregister and VvectorR were swapped.Robert Norton
2017-04-18Implement return using an exception caught in the function body. Polymorphic ↵Robert Norton
exceptions are not permitted so a local mutable variable, ret, is used in ocaml to store the return value. This avoids having to define a new exception type for each function. Ocaml infers the type of the option when it is assigned at the return site.
2017-04-07fix error in generated ocaml where writing single bit of register was not ↵Robert Norton
taking account of register direction.
2017-04-07implement quot and mod with truncation towards zero which is not the ocaml ↵Robert Norton
way but standard for C and most hw.
2017-04-07simplify xor using ocaml <> operator which also has the advantage of being ↵Robert Norton
more correct
2017-04-06minor changes in sail_values.ml to aid debuggingRobert Norton
2017-04-06fix incorrect use of == in eqRobert Norton
2017-04-06implement exts and extz as manipulations on bit vectors rather than ↵Robert Norton
converting to integers, allowing them to work on vectors containing undef.
2017-04-06Implement exit by raising Sail_exit exceptionRobert Norton
2017-03-30Make length function return big_intRobert Norton
2017-03-28temporary fix for problem duplicate (lack of direction) -- assume decreasing ↵Robert Norton
for mips compatibility.
2017-03-28Fix erroneous bitwise xor.Robert Norton
2017-03-27fix bitshift operators. I think these should be independent of vector order...Robert Norton
2017-03-27Fix broken to_vec of negative values. Old code was a bit confused. Probably ↵Robert Norton
possible to rewrite using arithmetic on big_int which might be faster.
2017-03-24Checkpoint work-in-progress mips sequential interpreter using ocaml shallow ↵Robert Norton
embedding.
2017-03-24changes to ocaml pp to allow mips->ocaml to compileRobert Norton
2016-01-28Support exit and assert better in sequential interpreter and general ↵Kathy Gray
interpreter interface
2015-11-03Support int and bigint library functionsKathy Gray
2015-10-29Ocaml generation now just needing big int/little int issues resolved ↵Kathy Gray
(probably) at least for Power.
2015-10-23More of sail correctly generating ocaml; including using polymorphic ↵Kathy Gray
variants when there are more than 246 constructors
2015-10-20Fixing bugs in pretty printer to ocamlKathy Gray
2015-10-07start changing representation of registers for ocamlKathy Gray
2015-10-06better printing for register writing, whole register (maybe not "right" yet)Kathy Gray
more library
2015-10-05More library functionsKathy Gray
Tweak to rewriter to actually rewrite function patterns
2015-09-29Boiler plate to generate an ml file from a sail spec. Now debugging the ↵Kathy Gray
output of such