summaryrefslogtreecommitdiff
path: root/test/wasm_backend/unaligned_only.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-04-27 15:15:25 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-04-27 15:15:25 -0700
commit4a85f62e8a83117a081e9691d8830b6a7a876d1d (patch)
treea591bf3314a2d65b776d18c3c40308d84e1855dc /test/wasm_backend/unaligned_only.cpp
parent3b2b18dc06da3895f0b54a0660ab561f2b305c92 (diff)
parent63271d39f8a1100a703adc50861e02caefc2a9d5 (diff)
downloadbinaryen-4a85f62e8a83117a081e9691d8830b6a7a876d1d.tar.gz
binaryen-4a85f62e8a83117a081e9691d8830b6a7a876d1d.tar.bz2
binaryen-4a85f62e8a83117a081e9691d8830b6a7a876d1d.zip
Merge pull request #406 from WebAssembly/i64.load32_u
Fix zero-extension in i64.load32_u.
Diffstat (limited to 'test/wasm_backend/unaligned_only.cpp')
-rw-r--r--test/wasm_backend/unaligned_only.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/test/wasm_backend/unaligned_only.cpp b/test/wasm_backend/unaligned_only.cpp
new file mode 100644
index 000000000..75f8b419b
--- /dev/null
+++ b/test/wasm_backend/unaligned_only.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);
+ }
+}
+