diff options
author | Alon Zakai <alonzakai@gmail.com> | 2015-11-01 19:13:24 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2015-11-01 19:13:24 -0800 |
commit | c8cbfbeb8d1cc108bbb0f1a7f145a50c06059c0e (patch) | |
tree | 92423d6d4a10fe5e3bba371ac8b053fbbf698225 | |
parent | c0a332693eceec4171c4e2fef30924e4f22771fc (diff) | |
download | binaryen-c8cbfbeb8d1cc108bbb0f1a7f145a50c06059c0e.tar.gz binaryen-c8cbfbeb8d1cc108bbb0f1a7f145a50c06059c0e.tar.bz2 binaryen-c8cbfbeb8d1cc108bbb0f1a7f145a50c06059c0e.zip |
add mem test
-rw-r--r-- | test/mem.cpp | 29 | ||||
-rw-r--r-- | test/mem.emcc | 1 | ||||
-rw-r--r-- | test/mem.post.js | 51 | ||||
-rw-r--r-- | test/mem.txt | 192 |
4 files changed, 273 insertions, 0 deletions
diff --git a/test/mem.cpp b/test/mem.cpp new file mode 100644 index 000000000..a48d2e3d2 --- /dev/null +++ b/test/mem.cpp @@ -0,0 +1,29 @@ +#include <stdint.h> +#include <emscripten.h> + +extern "C" { + +int EMSCRIPTEN_KEEPALIVE loadi8(size_t addr) { return ((int8_t*)addr)[0]; } +int EMSCRIPTEN_KEEPALIVE loadi16(size_t addr) { return ((int16_t*)addr)[0]; } +int EMSCRIPTEN_KEEPALIVE loadi32(size_t addr) { return ((int32_t*)addr)[0]; } + +int EMSCRIPTEN_KEEPALIVE loadu8(size_t addr) { return ((uint8_t*)addr)[0]; } +int EMSCRIPTEN_KEEPALIVE loadu16(size_t addr) { return ((uint16_t*)addr)[0]; } +int EMSCRIPTEN_KEEPALIVE loadu32(size_t addr) { return ((uint32_t*)addr)[0]; } + +double EMSCRIPTEN_KEEPALIVE loadf32(size_t addr) { return ((float*)addr)[0]; } +double EMSCRIPTEN_KEEPALIVE loadf64(size_t addr) { return ((double*)addr)[0]; } + +void EMSCRIPTEN_KEEPALIVE storei8(size_t addr, int8_t v) { ((int8_t*)addr)[0] = v; } +void EMSCRIPTEN_KEEPALIVE storei16(size_t addr, int16_t v) { ((int16_t*)addr)[0] = v; } +void EMSCRIPTEN_KEEPALIVE storei32(size_t addr, int32_t v) { ((int32_t*)addr)[0] = v; } + +void EMSCRIPTEN_KEEPALIVE storeu8(size_t addr, uint8_t v) { ((uint8_t*)addr)[0] = v; } +void EMSCRIPTEN_KEEPALIVE storeu16(size_t addr, uint16_t v) { ((uint16_t*)addr)[0] = v; } +void EMSCRIPTEN_KEEPALIVE storeu32(size_t addr, uint32_t v) { ((uint32_t*)addr)[0] = v; } + +void EMSCRIPTEN_KEEPALIVE storef32(size_t addr, float v) { ((float*)addr)[0] = v; } +void EMSCRIPTEN_KEEPALIVE storef64(size_t addr, double v) { ((double*)addr)[0] = v; } + +} + diff --git a/test/mem.emcc b/test/mem.emcc new file mode 100644 index 000000000..40c421eee --- /dev/null +++ b/test/mem.emcc @@ -0,0 +1 @@ +["-s", "ASSERTIONS=0"] diff --git a/test/mem.post.js b/test/mem.post.js new file mode 100644 index 000000000..00eda262c --- /dev/null +++ b/test/mem.post.js @@ -0,0 +1,51 @@ + +function test(name) { + Module.print(name); + function doTest(x) { + // write to 0, as 0-8 is normally unused anyhow + Module['_store' + name](0, x); + Module.print(' ' + [x] + ' ==> ' + Module['_load' + name](0)); + } + doTest(0); + doTest(1); + doTest(-1); + doTest(0.5); + doTest(-0.5); + doTest(1.4); + doTest(-1.4); + doTest(1.6); + doTest(-1.6); + doTest(5.1); + doTest(5.3); + doTest(5.7); + doTest(5.9); + doTest(1 << 10); + doTest(1 << 20); + doTest(-1 | 0); + doTest((-1 | 0) + 1); + doTest((-1 | 0) - 1); + doTest(-1 >>> 0); + doTest((-1 >>> 0) + 1); + doTest((-1 >>> 0) - 1); + + Module.print(' pre ==> ' + Module['_load' + name](0)); + HEAPU8[0] = 10; + HEAPU8[1] = 20; + HEAPU8[2] = 30; + HEAPU8[3] = 40; + HEAPU8[4] = 50; + HEAPU8[5] = 99; + HEAPU8[6] = 125; + HEAPU8[7] = 250; + Module.print(' post ==> ' + Module['_load' + name](0)); +} + +test('i8'); +test('i16'); +test('i32'); +test('u8'); +test('u16'); +test('u32'); +test('f32'); +test('f64'); + diff --git a/test/mem.txt b/test/mem.txt new file mode 100644 index 000000000..ae087e142 --- /dev/null +++ b/test/mem.txt @@ -0,0 +1,192 @@ +i8 + 0 ==> 0 + 1 ==> 1 + -1 ==> -1 + 0.5 ==> 0 + -0.5 ==> 0 + 1.4 ==> 1 + -1.4 ==> -1 + 1.6 ==> 1 + -1.6 ==> -1 + 5.1 ==> 5 + 5.3 ==> 5 + 5.7 ==> 5 + 5.9 ==> 5 + 1024 ==> 0 + 1048576 ==> 0 + -1 ==> -1 + 0 ==> 0 + -2 ==> -2 + 4294967295 ==> -1 + 4294967296 ==> 0 + 4294967294 ==> -2 + pre ==> -2 + post ==> 10 +i16 + 0 ==> 0 + 1 ==> 1 + -1 ==> -1 + 0.5 ==> 0 + -0.5 ==> 0 + 1.4 ==> 1 + -1.4 ==> -1 + 1.6 ==> 1 + -1.6 ==> -1 + 5.1 ==> 5 + 5.3 ==> 5 + 5.7 ==> 5 + 5.9 ==> 5 + 1024 ==> 1024 + 1048576 ==> 0 + -1 ==> -1 + 0 ==> 0 + -2 ==> -2 + 4294967295 ==> -1 + 4294967296 ==> 0 + 4294967294 ==> -2 + pre ==> -2 + post ==> 5130 +i32 + 0 ==> 0 + 1 ==> 1 + -1 ==> -1 + 0.5 ==> 0 + -0.5 ==> 0 + 1.4 ==> 1 + -1.4 ==> -1 + 1.6 ==> 1 + -1.6 ==> -1 + 5.1 ==> 5 + 5.3 ==> 5 + 5.7 ==> 5 + 5.9 ==> 5 + 1024 ==> 1024 + 1048576 ==> 1048576 + -1 ==> -1 + 0 ==> 0 + -2 ==> -2 + 4294967295 ==> -1 + 4294967296 ==> 0 + 4294967294 ==> -2 + pre ==> -2 + post ==> 673059850 +u8 + 0 ==> 0 + 1 ==> 1 + -1 ==> 255 + 0.5 ==> 0 + -0.5 ==> 0 + 1.4 ==> 1 + -1.4 ==> 255 + 1.6 ==> 1 + -1.6 ==> 255 + 5.1 ==> 5 + 5.3 ==> 5 + 5.7 ==> 5 + 5.9 ==> 5 + 1024 ==> 0 + 1048576 ==> 0 + -1 ==> 255 + 0 ==> 0 + -2 ==> 254 + 4294967295 ==> 255 + 4294967296 ==> 0 + 4294967294 ==> 254 + pre ==> 254 + post ==> 10 +u16 + 0 ==> 0 + 1 ==> 1 + -1 ==> 65535 + 0.5 ==> 0 + -0.5 ==> 0 + 1.4 ==> 1 + -1.4 ==> 65535 + 1.6 ==> 1 + -1.6 ==> 65535 + 5.1 ==> 5 + 5.3 ==> 5 + 5.7 ==> 5 + 5.9 ==> 5 + 1024 ==> 1024 + 1048576 ==> 0 + -1 ==> 65535 + 0 ==> 0 + -2 ==> 65534 + 4294967295 ==> 65535 + 4294967296 ==> 0 + 4294967294 ==> 65534 + pre ==> 65534 + post ==> 5130 +u32 + 0 ==> 0 + 1 ==> 1 + -1 ==> -1 + 0.5 ==> 0 + -0.5 ==> 0 + 1.4 ==> 1 + -1.4 ==> -1 + 1.6 ==> 1 + -1.6 ==> -1 + 5.1 ==> 5 + 5.3 ==> 5 + 5.7 ==> 5 + 5.9 ==> 5 + 1024 ==> 1024 + 1048576 ==> 1048576 + -1 ==> -1 + 0 ==> 0 + -2 ==> -2 + 4294967295 ==> -1 + 4294967296 ==> 0 + 4294967294 ==> -2 + pre ==> -2 + post ==> 673059850 +f32 + 0 ==> 0 + 1 ==> 1 + -1 ==> -1 + 0.5 ==> 0.5 + -0.5 ==> -0.5 + 1.4 ==> 1.399999976158142 + -1.4 ==> -1.399999976158142 + 1.6 ==> 1.600000023841858 + -1.6 ==> -1.600000023841858 + 5.1 ==> 5.099999904632568 + 5.3 ==> 5.300000190734863 + 5.7 ==> 5.699999809265137 + 5.9 ==> 5.900000095367432 + 1024 ==> 1024 + 1048576 ==> 1048576 + -1 ==> -1 + 0 ==> 0 + -2 ==> -2 + 4294967295 ==> 4294967296 + 4294967296 ==> 4294967296 + 4294967294 ==> 4294967296 + pre ==> 4294967296 + post ==> 8.775107173558151e-15 +f64 + 0 ==> 0 + 1 ==> 1 + -1 ==> -1 + 0.5 ==> 0.5 + -0.5 ==> -0.5 + 1.4 ==> 1.4 + -1.4 ==> -1.4 + 1.6 ==> 1.6 + -1.6 ==> -1.6 + 5.1 ==> 5.1 + 5.3 ==> 5.3 + 5.7 ==> 5.7 + 5.9 ==> 5.9 + 1024 ==> 1024 + 1048576 ==> 1048576 + -1 ==> -1 + 0 ==> 0 + -2 ==> -2 + 4294967295 ==> 4294967295 + 4294967296 ==> 4294967296 + 4294967294 ==> 4294967294 + pre ==> 4294967294 + post ==> -1.066886858533604e+282 |