diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/c/assign_rename_bug.expect | 28 | ||||
| -rw-r--r-- | test/c/assign_rename_bug.sail | 35 | ||||
| -rw-r--r-- | test/c/read_write_ram.expect | 1 | ||||
| -rw-r--r-- | test/c/read_write_ram.sail | 29 | ||||
| -rwxr-xr-x | test/c/run_tests.sh | 2 | ||||
| -rwxr-xr-x | test/ocaml/run_tests.sh | 2 |
6 files changed, 95 insertions, 2 deletions
diff --git a/test/c/assign_rename_bug.expect b/test/c/assign_rename_bug.expect new file mode 100644 index 00000000..ef2503c0 --- /dev/null +++ b/test/c/assign_rename_bug.expect @@ -0,0 +1,28 @@ +0xFFF0000000001 +0xFFF0000000001 +0xFFEFFFFFFFFFF +0xFFEFFFFFFFFFF +0xFFF0000000002 +0xFFF0000000002 +0xFFEFFFFFFFFFE +0xFFEFFFFFFFFFE +0xFFF0000000003 +0xFFF0000000003 +0xFFEFFFFFFFFFD +0xFFEFFFFFFFFFD +0xFFF0000000004 +0xFFF0000000004 +0xFFEFFFFFFFFFC +0xFFEFFFFFFFFFC +0xFFF0000000005 +0xFFF0000000005 +0xFFEFFFFFFFFFB +0xFFEFFFFFFFFFB +0xFFF0000000006 +0xFFF0000000006 +0xFFEFFFFFFFFFA +0xFFEFFFFFFFFFA +0xFFF0000000007 +0xFFF0000000007 +0xFFEFFFFFFFFF9 +0xFFEFFFFFFFFF9 diff --git a/test/c/assign_rename_bug.sail b/test/c/assign_rename_bug.sail new file mode 100644 index 00000000..8b74df2a --- /dev/null +++ b/test/c/assign_rename_bug.sail @@ -0,0 +1,35 @@ +default Order dec + +$include <flow.sail> +$include <arith.sail> +$include <vector_dec.sail> + +$include <exception_basic.sail> + +val sub_vec_int = { + ocaml: "sub_vec_int", + lem: "sub_vec_int", + c: "sub_bits_int" +} : forall 'n. (bits('n), int) -> bits('n) + +overload operator - = {sub_vec_int} + +val print_bits52: (string, bits(52)) -> unit + +function print_bits52(str, x) = print_bits(str, x) + +val main : unit -> unit effect {undef} + +function main() = { + let addr : bits(52) = 0xF_FF00_0000_0000; + i : int = undefined; + size : int = 7; + ret : unit = (); + foreach (i from 1 to size by 1 in inc) { + ret = print_bits("", addr + i); + ret = print_bits52("", addr + i); + ret = print_bits("", addr - i); + ret = print_bits52("", addr - i); + }; + return ret +} diff --git a/test/c/read_write_ram.expect b/test/c/read_write_ram.expect new file mode 100644 index 00000000..9766475a --- /dev/null +++ b/test/c/read_write_ram.expect @@ -0,0 +1 @@ +ok diff --git a/test/c/read_write_ram.sail b/test/c/read_write_ram.sail new file mode 100644 index 00000000..751d15b5 --- /dev/null +++ b/test/c/read_write_ram.sail @@ -0,0 +1,29 @@ +default Order dec + +$include <flow.sail> +$include <arith.sail> +$include <vector_dec.sail> +$include <string.sail> +$include <exception_basic.sail> + +val write_ram = "write_ram" : forall 'n 'm. + (atom('m), atom('n), bits('m), bits('m), bits(8 * 'n)) -> unit effect {wmem} + +val read_ram = "read_ram" : forall 'n 'm. + (atom('m), atom('n), bits('m), bits('m)) -> bits(8 * 'n) effect {rmem} + +val main : unit -> unit effect {escape, wmem, rmem} + +function main() = { + write_ram(64, 4, 64^0x0, 64^0x8000_0000, 0x01020304); + let data = read_ram(64, 4, 64^0x0, 64^0x8000_0000); + assert(data == 0x01020304); + let data = read_ram(64, 3, 64^0x0, 64^0x8000_0001); + assert(data == 0x010203); + let data = read_ram(64, 3, 64^0x0, 64^0x8000_0000); + assert(data == 0x020304); + write_ram(64, 4, 64^0x0, 64^0x7fff_ffff, 0xA1B2C3D4); + let data = read_ram(64, 3, 64^0x0, 64^0x8000_0000); + assert(data == 0xA1B2C3); + print_endline("ok"); +}
\ No newline at end of file diff --git a/test/c/run_tests.sh b/test/c/run_tests.sh index 0990938d..37787605 100755 --- a/test/c/run_tests.sh +++ b/test/c/run_tests.sh @@ -54,7 +54,7 @@ function run_c_tests { if $SAILDIR/sail -no_warn -c $SAIL_OPTS $file 1> ${file%.sail}.c 2> /dev/null; then green "compiling $(basename $file) ($SAIL_OPTS)" "ok"; - if gcc $CC_OPTS ${file%.sail}.c -lgmp -I $SAILDIR/lib; + if gcc $CC_OPTS ${file%.sail}.c $SAILDIR/lib/*.c -lgmp -lz -I $SAILDIR/lib; then green "compiling $(basename ${file%.sail}.c) ($CC_OPTS)" "ok"; $DIR/a.out 1> ${file%.sail}.result 2> /dev/null; diff --git a/test/ocaml/run_tests.sh b/test/ocaml/run_tests.sh index d9ae07ba..39e34805 100755 --- a/test/ocaml/run_tests.sh +++ b/test/ocaml/run_tests.sh @@ -72,7 +72,7 @@ cd $DIR for i in `ls -d */`; do cd $DIR/$i; - if $SAILDIR/sail -no_warn -o out -ocaml_trace ../prelude.sail `ls *.sail` 1> /dev/null; + if $SAILDIR/sail -no_warn -o out -ocaml -trace ../prelude.sail `ls *.sail` 1> /dev/null; then ./out > result 2> /dev/null; if diff expect result; |
