diff options
| author | 2026-10-14 16:43:37 +0330 | |
|---|---|---|
| committer | 2026-10-14 16:43:37 +0330 | |
| commit | 98e2c7610e3e4dcaf4f1644f26f9979d1ffc929d (patch) | |
| tree | 09e03dc2a3414e8803be5a9eacab331ed752bfc8 /tests/test.sh | |
| parent | merge work/xref: zc0 gaps a-f (diff) | |
| parent | x86-64 jit: header comment and todo for inlined enhancements (diff) | |
merge work/jit2: x86-64 jit inline enhancements
Diffstat (limited to 'tests/test.sh')
| -rwxr-xr-x | tests/test.sh | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/test.sh b/tests/test.sh index 7a80c3c..cdce083 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -227,6 +227,8 @@ ABC" "$l o3 lifts byte loads and stores" chk "$($vm < tests/programs/boundsrules.zc 2>&1 | head -3)" $'5\n7\nzy: index 5 out of range (length 4)' "$l unbounded as prefix, block and statement, o3 implies it; checked code reports" chk "$($vm < tests/programs/bounds_fixed.zc 2>&1 | head -3)" $'55\n29\nzy: index 6 out of range (length 6)' "$l a fixed array with a variable index is checked against its length" chk "$($vm < tests/programs/bounds_heap.zc 2>&1 | head -4)" $'3\n0\nx\nzy: index 11 out of range (length 11)' "$l a pointer to a heap block is checked against its payload" + chk "$($vm < tests/programs/enh_ops.zc | md5sum)" "$(md5sum < tests/programs/enh_ops.expected)" "$l enhancement micro-ops on edge values, with variables and with literals" + chk "$($vm < tests/programs/bounds_proof.zc)" $'0\n1\n1' "$l a loop test against a constant drops the fixed-array check; a variable bound keeps it" chk "$($vm < tests/programs/zc0unbounded.zc)" "42" "$l unbounded in the unit, a prefix and a statement" local r; r=$(bash tests/runerr.sh "$vm" tests/errors | tail -1) chk "$r" "rejected: $(ls tests/errors/*.zc | wc -l | tr -d ' ') passed, 0 failed" "$l analyzer rejects every bad program" @@ -500,6 +502,15 @@ s_jit() { chk "$(cd $T && qemu-aarch64 -L /usr/aarch64-linux-gnu $T/zyjd < $R/tests/programs/structret.zc)" "3 4 3.500000 4.000000 24 8 1.000000 3.500000" "jit structs returned from a c function (aapcs64 results)" fi else echo "skip jit (no aarch64 toolchain or qemu)"; fi + # the x86-64 jit against the interpreter, every program (about a minute; not in the quick path) + if [ "$(uname -s)-$(uname -m)" = Linux-x86_64 ] && [ $QUICK = 0 ]; then + $CC -pthread -O2 -w -fwrapv -DJTYPE=int -DZYINTERP src/core/core.c src/core/io_linux.c $GI -o $T/zyi || exit 1 + $CC -pthread -O2 -w -fwrapv -DJTYPE=int src/core/core.c src/core/io_linux.c $GI -o $T/zyx || exit 1 + bash tests/drivers/jit_x64_test.sh $T/zyi $T/zyx > $T/jit_x64.out 2>&1; r=$? + grep '^DIFF' $T/jit_x64.out + chk $r 0 "x86-64 jit agrees with the interpreter: $(tail -n 1 $T/jit_x64.out)" + chk "$(ZYNOENH=1 $T/zyx < tests/programs/enh_ops.zc | md5sum)" "$(md5sum < tests/programs/enh_ops.expected)" "x86-64 jit with enhancements called through xrun (ZYNOENH=1)" + fi } s_llvm() { |
