summaryrefslogtreecommitdiff
path: root/test/wasm_backend/unaligned.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-02-19 15:52:35 -0800
committerAlon Zakai <alonzakai@gmail.com>2016-02-19 15:52:35 -0800
commit5a1adcc357995089766ed333a55ff93204fe75ae (patch)
tree0d0ef285ee6366ac2f3a44dc261ce50b96a28f51 /test/wasm_backend/unaligned.cpp
parent5ec0fdb423075356756c3f791a938b23f0495084 (diff)
downloadbinaryen-5a1adcc357995089766ed333a55ff93204fe75ae.tar.gz
binaryen-5a1adcc357995089766ed333a55ff93204fe75ae.tar.bz2
binaryen-5a1adcc357995089766ed333a55ff93204fe75ae.zip
add unaligned access wasm_backend testcase
Diffstat (limited to 'test/wasm_backend/unaligned.cpp')
-rw-r--r--test/wasm_backend/unaligned.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/test/wasm_backend/unaligned.cpp b/test/wasm_backend/unaligned.cpp
new file mode 100644
index 000000000..75f8b419b
--- /dev/null
+++ b/test/wasm_backend/unaligned.cpp
@@ -0,0 +1,70 @@
+#include <stdint.h>
+#include <emscripten.h>
+
+void print(int v) {
+ int *x = (int*)8;
+ *x = v;
+ EM_ASM({
+ Module.print("print: " + HEAP32[8>>2]);
+ });
+}
+
+char buffer[8];
+
+int main() {
+ {
+ volatile int16_t* x;
+ x = (int16_t*)&buffer[0];
+ *x = 0x1234;
+ print(*x);
+ x = (int16_t*)&buffer[1];
+ *x = 0x2345;
+ print(*x);
+ }
+ {
+ volatile int32_t* x;
+ x = (int32_t*)&buffer[0];
+ *x = 0x12345678;
+ print(*x);
+ x = (int32_t*)&buffer[1];
+ *x = 0x23456789;
+ print(*x);
+ x = (int32_t*)&buffer[2];
+ *x = 0x3456789a;
+ print(*x);
+ x = (int32_t*)&buffer[3];
+ *x = 0x456789ab;
+ print(*x);
+ }
+ {
+ volatile float* x;
+ x = (float*)&buffer[0];
+ *x = -0x12345678;
+ print(*x);
+ x = (float*)&buffer[1];
+ *x = -0x12345678;
+ print(*x);
+ x = (float*)&buffer[2];
+ *x = -0x12345678;
+ print(*x);
+ x = (float*)&buffer[3];
+ *x = -0x12345678;
+ print(*x);
+ }
+ {
+ volatile double* x;
+ x = (double*)&buffer[0];
+ *x = -1;
+ print(*x);
+ x = (double*)&buffer[1];
+ *x = -2;
+ print(*x);
+ x = (double*)&buffer[2];
+ *x = -3;
+ print(*x);
+ x = (double*)&buffer[3];
+ *x = -4;
+ print(*x);
+ }
+}
+